欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于遠(yuǎn)程桌面協(xié)議的硬件加速的制作方法

文檔序號(hào):6595643閱讀:499來源:國知局
專利名稱:用于遠(yuǎn)程桌面協(xié)議的硬件加速的制作方法
用于遠(yuǎn)程桌面協(xié)議的硬件加速 背景由于諸如七層ISO模型或Windows 操作系統(tǒng)使用的分層模型等分層體系結(jié)構(gòu), 計(jì)算系統(tǒng)中的網(wǎng)絡(luò)應(yīng)用程序會(huì)需要大量的主機(jī)處理器資源。在各層之間傳遞的數(shù)據(jù)包所執(zhí)行的功能可以是軟件密集型的,而且會(huì)需要大量的處理器和存儲(chǔ)器資源。另外,許多計(jì)算機(jī)硬件外設(shè),如網(wǎng)絡(luò)接口卡(NICs),其性能、效率以及總處理能力也在持續(xù)增長。此類計(jì)算機(jī)系統(tǒng)外設(shè)通常配備有專用的處理器和存儲(chǔ)器,而且通常能夠執(zhí)行否則得由計(jì)算機(jī)系統(tǒng)處理器在軟件中執(zhí)行的高級(jí)和復(fù)雜的計(jì)算任務(wù)。例如,許多NIC能夠在適當(dāng)?shù)木W(wǎng)絡(luò)層中獨(dú)立執(zhí)行否則得由CPU在軟件中執(zhí)行的任務(wù),如校驗(yàn)和計(jì)算/驗(yàn)證;數(shù)據(jù)加密/解密;消息摘要計(jì)算;TCP或UDP分割;接收側(cè)包分類;防御拒絕服務(wù)攻擊的包過濾;以及其他任務(wù)。由此,將該CPU密集型任務(wù)卸載至外圍硬件設(shè)備是有益處的。這將減少處理器的使用和主機(jī)計(jì)算機(jī)中存儲(chǔ)器帶寬的使用,因而有利于提高整個(gè)系統(tǒng)的效率、速度和總處理能力。遠(yuǎn)程計(jì)算系統(tǒng)可以使用戶能夠接入遠(yuǎn)程計(jì)算系統(tǒng)提供的資源。遠(yuǎn)程計(jì)算系統(tǒng)的服務(wù)器可以執(zhí)行程序并向客戶機(jī)發(fā)出表示用戶接口的信號(hào),所述客戶機(jī)可通過在符合諸如 TCP/IP協(xié)議的通信協(xié)議的網(wǎng)絡(luò)上發(fā)出信號(hào)來連接??梢韵蛎恳贿B接的客戶機(jī)提供一會(huì)話, 艮口,包括一組資源的執(zhí)行環(huán)境。每一客戶機(jī)可向服務(wù)器發(fā)送表示用戶輸入的信號(hào),服務(wù)器會(huì)將用戶輸入應(yīng)用于適當(dāng)?shù)臅?huì)話中。所述客戶機(jī)可以使用諸如遠(yuǎn)程桌面協(xié)議(RDP)的協(xié)議來連接服務(wù)器資源。諸如RDP等協(xié)議通常處理圖形、諸如USB的設(shè)備通信、打印機(jī)鍵盤和鼠標(biāo), 此外還有服務(wù)器和客戶機(jī)之間的應(yīng)用程序的虛擬通道。在典型的服務(wù)器配置中,終端服務(wù)器主機(jī)有數(shù)以百計(jì)的客戶機(jī)會(huì)話。諸如RDP的協(xié)議支持不同的遠(yuǎn)程客戶機(jī)機(jī)器性能。通常,來自服務(wù)器的圖形數(shù)據(jù)需要編碼、加密為圖元形式或在服務(wù)器上渲染,而且所得到的位圖需要壓縮/加密并跨網(wǎng)絡(luò)傳輸。編碼、渲染和加密操作在性質(zhì)上是高度計(jì)算性的,并需要很高的CPU使用率。因而使用上述技術(shù)將該CPU密集型任務(wù)卸載至外圍硬件設(shè)備將是有益的。概述本發(fā)明涉及用于將之前在處理器軟件層執(zhí)行的遠(yuǎn)程終端接入功能和任務(wù)卸載至耦合至計(jì)算機(jī)系統(tǒng)的適當(dāng)?shù)耐鈬布南到y(tǒng)和方法。在一實(shí)施例中,可將任務(wù)卸載至網(wǎng)絡(luò)接口卡(OTC)外圍設(shè)備,該外圍設(shè)備可執(zhí)行否則由計(jì)算機(jī)CPU在軟件中執(zhí)行的任務(wù)中的部分或全部。在一實(shí)施例中,操作系統(tǒng)(OS)可以“查詢”與計(jì)算機(jī)系統(tǒng)連接的外圍硬件(例如 NIC)的設(shè)備驅(qū)動(dòng)程序。不同的設(shè)備驅(qū)動(dòng)程序可以通過標(biāo)識(shí)它們各自的外圍硬件的處理能力來響應(yīng),此處將該處理能力稱為“任務(wù)卸載能力”。在一實(shí)施例中,一旦標(biāo)識(shí)每一特定外圍設(shè)備的任務(wù)卸載能力,OS然后可使所選外圍設(shè)備能夠執(zhí)行某些任務(wù)。OS之后可請(qǐng)求外圍設(shè)備在動(dòng)態(tài)的按需的基礎(chǔ)上執(zhí)行之前啟用的任務(wù)。在各個(gè)實(shí)施例中,當(dāng)RDP協(xié)議處理過程中需要渲染和壓縮功能時(shí),這些任務(wù)可以包括渲染和/或壓縮。因而網(wǎng)絡(luò)接口卡的硬件能力可以通過使用諸如TCP/IP等于協(xié)議數(shù)據(jù)流內(nèi)聯(lián)的其他已卸載的網(wǎng)絡(luò)卸載任務(wù)之上的RDP級(jí)處理的卸載路徑來利用。
除前述的之外,在構(gòu)成本發(fā)明的一部分的權(quán)利要求書、附圖,以及文本中描述了其他方面。本領(lǐng)域技術(shù)人員將理解,本發(fā)明的一個(gè)或多個(gè)方面可包括但不限于用于實(shí)現(xiàn)本發(fā)明的本文所述方面的電路和/或編程;該電路和/或編程實(shí)質(zhì)上可以是配置成實(shí)現(xiàn)本文所述方面的硬件、軟件和/或固件的任何組合,這取決于系統(tǒng)設(shè)計(jì)者的設(shè)計(jì)選擇。以上是概述,并且因此必然包含細(xì)節(jié)的簡化、一般化及省略。本領(lǐng)域技術(shù)人員將明白,本概述只是說明性的并且決不旨在是限制性的。附圖簡述

圖1描繪其中可實(shí)現(xiàn)本發(fā)明的各方面的示例計(jì)算機(jī)系統(tǒng)。圖Ia示出了具有包括多個(gè)虛擬處理器以及對(duì)應(yīng)的客操作系統(tǒng)的多個(gè)虛擬機(jī)的虛擬機(jī)環(huán)境;虛擬機(jī)由可包括調(diào)度器和其他組件的虛擬化層來維護(hù),其中虛擬化層虛擬化多個(gè)虛擬機(jī)的硬件;圖2-4描繪了用于實(shí)施本發(fā)明的各方面的操作環(huán)境。圖5示出了此處所公開的網(wǎng)絡(luò)棧的功能層和旁路路徑。圖6示出了此處所公開的NDIS路徑和旁路路徑的功能層。圖7示出了例示此處所公開的卸載機(jī)制的梯形圖。圖8是示出主計(jì)算機(jī)和外圍設(shè)備之間的同步的框圖。圖9示出了存在于分層網(wǎng)絡(luò)體系結(jié)構(gòu)中的某些功能組件。圖10示出了描述根據(jù)本發(fā)明的通過程序組件的數(shù)據(jù)包流的功能框圖。圖11示出了數(shù)據(jù)包和包擴(kuò)展的實(shí)施例。圖12示出了描述遠(yuǎn)程終端服務(wù)處理的示例體系結(jié)構(gòu)。圖13是示出遠(yuǎn)程終端服務(wù)處理的各方面的功能框圖。圖14描繪了用于實(shí)施本公開的各方面的示例性操作過程。圖15描繪了用于實(shí)施本公開的各方面的示例性操作過程。圖16描繪了用于實(shí)施本公開的各方面的示例性操作過程。圖17示出了承載參考上面的圖1-16所討論的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。詳細(xì)描述概括的計(jì)算環(huán)境在以下描述和附圖中闡明了某些具體細(xì)節(jié),以提供對(duì)本發(fā)明的各個(gè)實(shí)施例的全面理解。通常與計(jì)算和軟件技術(shù)相關(guān)聯(lián)的某些公知細(xì)節(jié)將不在以下公開中描述,以避免不必要地使當(dāng)前公開的主題的各實(shí)施例晦澀難懂。此外,相關(guān)領(lǐng)域的普通技術(shù)人員可以理解,他們可以無需以下描述的細(xì)節(jié)中的一個(gè)或多個(gè)而實(shí)現(xiàn)當(dāng)前公開的主題的其它實(shí)施例。最后, 盡管在下面的公開中參考步驟和序列描述了各種方法,但是,如此的描述用于提供當(dāng)前公開的主題的各實(shí)施例的清楚的實(shí)現(xiàn),且步驟和步驟的序列不應(yīng)該理解為實(shí)施本發(fā)明所必需的。應(yīng)該理解,此處所描述的各種技術(shù)可以結(jié)合硬件或軟件或,在適當(dāng)?shù)那闆r下,結(jié)合兩者的組合來實(shí)現(xiàn)。因此,本發(fā)明的方法和裝置或其某些方面或部分,可以采用包含在諸如軟盤、CD-ROM、硬盤驅(qū)動(dòng)器或任何其它機(jī)器可讀存儲(chǔ)介質(zhì)等有形介質(zhì)中的程序代碼(即,指令)的形式,其中,當(dāng)程序代碼被上載至諸如計(jì)算機(jī)等機(jī)器并由其運(yùn)行時(shí),該機(jī)器成為用于實(shí)現(xiàn)所公開的主題的裝置。在程序代碼在可編程計(jì)算機(jī)上執(zhí)行的情況下,計(jì)算設(shè)備一般包括處理器、可由處理器讀取的存儲(chǔ)介質(zhì)(包括易失性和非易失性存儲(chǔ)器和/或存儲(chǔ)元件)、 至少一個(gè)輸入設(shè)備,以及至少一個(gè)輸出設(shè)備。一個(gè)或多個(gè)程序可以例如,通過使用API、可重用控件等來實(shí)現(xiàn)或利用結(jié)合當(dāng)前公開的主題描述的過程。這樣的程序優(yōu)選地以高級(jí)別過程或面向?qū)ο缶幊陶Z言來實(shí)現(xiàn),以與計(jì)算機(jī)系統(tǒng)進(jìn)行通信。然而,若有需要,程序也可以以以匯編或機(jī)器語言來實(shí)現(xiàn)。在任一情況下,語言都可以是編譯的或解釋的語言,并與硬件實(shí)現(xiàn)相結(jié)合。遠(yuǎn)程桌面系統(tǒng)是維護(hù)可由客戶計(jì)算機(jī)系統(tǒng)遠(yuǎn)程地執(zhí)行的應(yīng)用的計(jì)算機(jī)系統(tǒng)。輸入是在客戶計(jì)算機(jī)系統(tǒng)處被輸入的,并通過網(wǎng)絡(luò)(例如,使用基于國際電信聯(lián)盟(ITU)T. 120 協(xié)議家族等協(xié)議,如遠(yuǎn)程桌面協(xié)議(RDP))傳送到終端服務(wù)器上的應(yīng)用。該應(yīng)用如同該輸入是在終端服務(wù)器處送入的那樣來處理該輸入。該應(yīng)用響應(yīng)于所接收到的輸入生成輸出,并且該輸出通過網(wǎng)絡(luò)傳送到客戶計(jì)算機(jī)系統(tǒng)。客戶計(jì)算機(jī)系統(tǒng)呈現(xiàn)輸出數(shù)據(jù)。由此,在客戶計(jì)算機(jī)系統(tǒng)處接收輸入并呈現(xiàn)輸出,而處理實(shí)際上是在終端服務(wù)器處發(fā)生的。會(huì)話可包括諸如桌面之類的外殼和用戶界面、跟蹤該桌面內(nèi)的鼠標(biāo)移動(dòng)的子系統(tǒng)、將圖標(biāo)上的鼠標(biāo)點(diǎn)擊轉(zhuǎn)換成實(shí)現(xiàn)程序?qū)嵗拿畹淖酉到y(tǒng)等等。在另一示例實(shí)施例中,會(huì)話可包括應(yīng)用。在該示例中,當(dāng)呈現(xiàn)應(yīng)用時(shí),桌面環(huán)境仍可被生成并對(duì)用戶隱藏。應(yīng)當(dāng)理解,前述討論是示例性的,且當(dāng)前公開的主題可以在各種客戶機(jī)/服務(wù)器環(huán)境中實(shí)現(xiàn)且不限于特定終端服務(wù)產(chǎn)品。即使不是全部,也是在大多數(shù)遠(yuǎn)程桌面環(huán)境中,輸入數(shù)據(jù)(在客戶計(jì)算機(jī)系統(tǒng)處送入的)通常包括表示對(duì)應(yīng)用的命令的鼠標(biāo)和鍵盤數(shù)據(jù),且輸出數(shù)據(jù)(由終端服務(wù)器處的應(yīng)用生成)通常包括用于在視頻輸出設(shè)備上顯示的視頻數(shù)據(jù)。許多遠(yuǎn)程桌面環(huán)境也包括擴(kuò)展到傳輸其他類型的數(shù)據(jù)的功能。可使用通信信道來通過允許插件經(jīng)由RDP連接傳輸數(shù)據(jù)來擴(kuò)展RDP協(xié)議。存在許多這樣的擴(kuò)展。諸如打印機(jī)重定向、剪貼板重定向、端口重定向等特征使用通信信道技術(shù)。 由此,除了輸入和輸出數(shù)據(jù)之外,可以有許多需要來傳輸數(shù)據(jù)的通信信道。因此,可能有傳輸輸出數(shù)據(jù)的偶然請(qǐng)求和傳輸其他數(shù)據(jù)的一個(gè)或多個(gè)信道請(qǐng)求爭用可用的網(wǎng)絡(luò)帶寬。圖2示出了啟用終端服務(wù)的實(shí)現(xiàn)200。TS客戶機(jī)202和TS 204使用RDP來進(jìn)行通信。TS客戶機(jī)202運(yùn)行TS客戶機(jī)進(jìn)程206,該TS客戶機(jī)進(jìn)程206向已經(jīng)在TS上派生的 TS會(huì)話210發(fā)送諸如例如鍵盤數(shù)據(jù)和鼠標(biāo)點(diǎn)擊數(shù)據(jù)之類的RDP輸入設(shè)備數(shù)據(jù)208,并且接收諸如用戶界面圖形數(shù)據(jù)之類的RDP顯示數(shù)據(jù)212。一般而言,TS客戶機(jī)進(jìn)程206是瘦客戶機(jī)進(jìn)程并且大多數(shù)處理在TS 204上提供。圖3示出了通過防火墻302啟用終端服務(wù)的實(shí)現(xiàn)300。遠(yuǎn)程TS客戶機(jī)304通過網(wǎng)絡(luò)308連接到終端服務(wù)網(wǎng)關(guān)(TSG) 306。TS客戶機(jī)上的超文本傳輸協(xié)議(HTTP)傳輸進(jìn)程 310以及TSG 306上的HTTP進(jìn)程312方便通過防火墻302來進(jìn)行通信。HTTP傳輸進(jìn)程310 將諸如遠(yuǎn)程過程調(diào)用(RPC)數(shù)據(jù)或RDP數(shù)據(jù)之類的數(shù)據(jù)包裝在TSG 306的HTTPS首部中。 TSG 306可經(jīng)由套接字輸出(socket out)進(jìn)程316通過套接字連接318連接到TS 314。一旦TS客戶機(jī)304得到認(rèn)證并且建立連接,則可以在TS客戶機(jī)304和TS 314之間來回傳遞 RDP 數(shù)據(jù) 320。圖4示出了實(shí)現(xiàn)400的一般化示例,其中利用現(xiàn)有遠(yuǎn)程過程調(diào)用/超文本傳輸協(xié)議(RPC/HTTP)代理,由此經(jīng)由防火墻402通過RPC/HTTP連接提供諸如RDP之類的終端服務(wù)協(xié)議。該實(shí)現(xiàn)的體系結(jié)構(gòu)示出通過將RDP協(xié)議包裝在RPC調(diào)用中,能夠有利地利用現(xiàn)有基于RPC的代理。具體而言,TS客戶機(jī)406上的RPC傳輸插件404將提供TS客戶機(jī)406和終端服務(wù)器408之間的通信的RDP流包裝在RPC協(xié)議中。這方便利用基于RPC的代理,由此允許進(jìn)行防火墻導(dǎo)航。可以在TS上以用戶模式運(yùn)行的基于RPC的代理410可將接收到的數(shù)據(jù)轉(zhuǎn)發(fā)給可以在TS上以內(nèi)核模式運(yùn)行的套接字監(jiān)聽器412。如上所討論的,客戶機(jī)可使用諸如遠(yuǎn)程桌面協(xié)議(RDP)等遠(yuǎn)程協(xié)議來連接到使用終端服務(wù)的資源。當(dāng)遠(yuǎn)程桌面客戶機(jī)經(jīng)由終端服務(wù)器網(wǎng)關(guān)連接到終端服務(wù)器時(shí),該網(wǎng)關(guān)可打開與終端服務(wù)器的套接字連接,并將客戶機(jī)通信重定向到RDP端口或?qū)S糜谶h(yuǎn)程訪問服務(wù)的端口。網(wǎng)關(guān)還可使用通過HTTPS傳送的終端服務(wù)器網(wǎng)關(guān)協(xié)議來執(zhí)行與客戶機(jī)的特定的網(wǎng)關(guān)專用交換。諸如管理程序等虛擬機(jī)監(jiān)控程序是創(chuàng)建虛擬機(jī)的程序,每一個(gè)虛擬機(jī)帶有可由底層物理硬件資源支持的虛擬化硬件資源。圖Ia示出了虛擬機(jī)環(huán)境100,帶有多個(gè)虛擬機(jī) 120、121,這些虛擬機(jī)包括多個(gè)虛擬處理器110、112、114、116,以及對(duì)應(yīng)的客操作系統(tǒng)130, 132。虛擬機(jī)120、121由虛擬化層140來維護(hù),該虛擬化層140可以包括調(diào)度器142及其他組件(未示出),其中虛擬化層140為多個(gè)虛擬機(jī)120、121虛擬化硬件150。多個(gè)虛擬處理器110、112、114、116可以是底層硬件物理處理器160、162的虛擬對(duì)應(yīng)物。用于實(shí)現(xiàn)上文所提及的分區(qū)的所有這些方案只是示例性實(shí)現(xiàn),且此處沒有任何東西應(yīng)該解釋為將本公開限制為任何特定虛擬化方面。使用卸載的硬件加速本發(fā)明的實(shí)施例一般涉及提供減少處理單元21的處理開銷以及存儲(chǔ)器使用的能力。這主要通過將特定的計(jì)算任務(wù)卸載至與計(jì)算機(jī)系統(tǒng)20相連的適當(dāng)?shù)耐鈬布O(shè)備來完成的,該卸載例如可以通過在處理單元/CPU 21上執(zhí)行的操作系統(tǒng)、應(yīng)用程序和/或其他程序模塊來完成。許多外圍設(shè)備逐漸配備有專用的處理器和存儲(chǔ)器,并且完全能夠執(zhí)行許多同樣的在典型情況下僅由CPU 21完成的任務(wù)。此類設(shè)備的例子可以包括,例如,網(wǎng)絡(luò)接口卡(圖1中的53);盤片驅(qū)動(dòng)器接口卡(例如,圖1中的32,33,34);小型計(jì)算機(jī)系統(tǒng)接口 (SCSI)設(shè)備;智能串行接口卡;或者和相關(guān)與應(yīng)用的外圍設(shè)備,例如用于數(shù)據(jù)加密/解密的設(shè)備。盡管此處討論的大致的發(fā)明概念可以用于將計(jì)算任務(wù)卸載至任何上述外圍硬件設(shè)備,但所披露的主題將參考當(dāng)前優(yōu)選的實(shí)施例的例子來描述,其中計(jì)算任務(wù)被卸載至網(wǎng)絡(luò)通信設(shè)備,例如圖1中所示的NIC 53。更具體地,所描述實(shí)施例被論作實(shí)現(xiàn)于在聯(lián)網(wǎng)環(huán)境和微軟公司提供的Windows操作系統(tǒng)體系結(jié)構(gòu)中。但應(yīng)當(dāng)意識(shí)到的是,雖然具體參考的是 Windows概念和技術(shù),但本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到許多操作系統(tǒng)和連網(wǎng)體系結(jié)構(gòu),如果不是大多數(shù)的話,與當(dāng)前披露中的環(huán)境都具有類似之處。圖5示出了構(gòu)成連網(wǎng)模型的組件與本發(fā)明的組件之間的相互關(guān)系。在正常的操作中,網(wǎng)絡(luò)消息由應(yīng)用程序500通過網(wǎng)絡(luò)棧502發(fā)送至外圍設(shè)備504,其中該消息被發(fā)送至其他設(shè)備和應(yīng)用程序并且是從其他設(shè)備和應(yīng)用程序接收到的。網(wǎng)絡(luò)棧502包括一個(gè)或多個(gè)中間軟件層506,中間軟件層506對(duì)數(shù)據(jù)進(jìn)行特定的操作,例如對(duì)數(shù)據(jù)打包,可靠數(shù)據(jù)傳輸,數(shù)據(jù)加密以及消息摘要計(jì)算。
交換機(jī)508用于將為中間軟件層506執(zhí)行的網(wǎng)絡(luò)棧操作從處理單元150中卸載。 盡管交換機(jī)508是單獨(dú)示出的,應(yīng)當(dāng)注意的是交換機(jī)508可以集成在網(wǎng)絡(luò)棧502的最上面的中間層中。數(shù)據(jù)經(jīng)由外圍設(shè)備504的煙囪(chimney) 510發(fā)送至外圍設(shè)備504以執(zhí)行網(wǎng)絡(luò)棧操作。在該層次關(guān)系下,中間軟件層不必獨(dú)占地駐留在主機(jī)或外圍設(shè)備中,而且允許任何中間層都可以完全卸載,或保持在主機(jī)中,或是二者的組合(例如,卸載一個(gè)或多個(gè)特定的連接)。此外,煙囪可以層疊在煙囪上(例如,IPSEC煙囪可以層疊在TCP煙囪之上)。連接可以是可靠和非可靠數(shù)據(jù)傳輸及單播或多播數(shù)據(jù)傳輸?shù)娜我饨M合。如果中間層保持在主機(jī)中,則主機(jī)將對(duì)高速緩存在外圍設(shè)備504中的變量(將在下面進(jìn)行描述)進(jìn)行更新。例如,可以將傳輸控制塊(TCB)的連接狀態(tài)項(xiàng)卸載至傳輸層,同時(shí)將網(wǎng)絡(luò)層的路由高速緩存項(xiàng)(RCE)卸載至外圍設(shè)備504。交換機(jī)508在通過卸載的TCB的煙囪510發(fā)送通信時(shí),繼續(xù)通過共享同RCE的網(wǎng)絡(luò)棧502為不同的TCB發(fā)送通信。 交換機(jī)508通過向中間層506發(fā)送卸載請(qǐng)求來啟動(dòng)卸載。該卸載請(qǐng)求包括資源信息,該資源信息幫助外圍設(shè)備504確定其是否能夠成功地卸載連接。每一中間層506或者拒絕該卸載請(qǐng)求,或者在卸載請(qǐng)求中添加資源信息并將卸載請(qǐng)求發(fā)送至網(wǎng)絡(luò)棧502中相鄰的軟件層。外圍設(shè)備504在接收到該卸載請(qǐng)求時(shí),計(jì)算器是否有可用的資源以卸載連接。如果卸載是不可能實(shí)現(xiàn)的,則外圍設(shè)備504拒絕該卸載請(qǐng)求。否則,外圍設(shè)備504接受該卸載請(qǐng)求并為該連接分配資源。外圍設(shè)備504通過向中間軟件層506發(fā)送具有參數(shù)鏈表的完成消息來完成該卸載請(qǐng)求。該參數(shù)鏈表向中間軟件層506和交換機(jī)508提供信息,以允許中間軟件層506和交換機(jī)508與外圍設(shè)備通信。每一中間軟件層506從該參數(shù)鏈表中移除該層的信息。當(dāng)一中間層506接收到卸載操作的完成消息時(shí),該中間層506將其狀態(tài)傳遞至外圍設(shè)備504。每一狀態(tài)可以有三種類型的變量;CONST、CACHED,和DELEGATED。狀態(tài)可以有全部三種類型的變量,或者也可以有三種類型的變量的子集。CONST變量為在卸載的連接的整個(gè)生命周期中都不發(fā)生改變的常量。在該連接被上載時(shí),它們并不會(huì)被讀回至該層中。該主機(jī)處理單元21維持對(duì)CACHED變量的所有權(quán),并確保主機(jī)處理單元21中CACHED變量的任何改變都會(huì)在外圍設(shè)備504中進(jìn)行更新。改變CACHED狀態(tài)的控制消息由網(wǎng)絡(luò)棧502處理。因此,當(dāng)連接被上載時(shí),主機(jī)將對(duì)CACHED變量進(jìn)行寫入但不需要讀回。主機(jī)處理單元 21將DELEGATED變量的所有權(quán)轉(zhuǎn)移至外圍設(shè)備504。當(dāng)卸載發(fā)生時(shí)DELEGATED變量被寫入一次,當(dāng)卸載終止時(shí)DELEGATED變量被讀回。通過僅傳回DELEGATED變量,將連接傳回至主機(jī)的開銷被最小化。必須共享于(例如,控制于)網(wǎng)絡(luò)棧502和由于多種性能原因正在被卸載的(即,被委派的)外圍設(shè)備504之間的狀態(tài)被清楚地分割在網(wǎng)絡(luò)棧502和煙囪510(例如,TCP卸載中的IP ID)之間,因而網(wǎng)絡(luò)棧502和外圍設(shè)備504各自擁有該狀態(tài)中獨(dú)占的一部分。當(dāng)需要時(shí)(例如用于統(tǒng)計(jì)),主機(jī)處理單元21向外圍設(shè)備504查詢DELEGATED變量。主機(jī)處理單元21也可以查詢CONST或CACHED變量以用于診斷。將狀態(tài)劃分為三類使得網(wǎng)絡(luò)棧502和煙 510能夠清楚地共存。應(yīng)當(dāng)說明的是,可以將該狀態(tài)包括在卸載請(qǐng)求中。該狀態(tài)不包含委派的狀態(tài)變量時(shí),或者包含在初始卸載請(qǐng)求和卸載請(qǐng)求完成時(shí)并沒有改變的委派的狀態(tài)變量時(shí),都可以進(jìn)行上述操作。外圍設(shè)備504或主機(jī)決定卸載的連接何時(shí)將被上載。該上載可以由外圍設(shè)備504 或交換機(jī)508啟動(dòng)。一旦上載啟動(dòng),外圍設(shè)備504完成全部未完成的具有適當(dāng)狀態(tài)的請(qǐng)求,并將最上面的中間層的委派的狀態(tài)移交至交換機(jī)508。交換機(jī)508對(duì)后續(xù)的傳輸請(qǐng)求進(jìn)行排隊(duì),并停止公布接收緩沖器。交換機(jī)508指示最上面的中間層控制該委派的狀態(tài)。最上面的中間層控制該委派的狀態(tài),并向交換機(jī)508發(fā)送一完成消息。在接收到完成消息后,交換機(jī)508確認(rèn)向外圍設(shè)備504的上載,使得外圍設(shè)備504釋放不再使用的資源。需要注意的是,該最上面的中間層將卸載的連接的輸入數(shù)據(jù)包轉(zhuǎn)發(fā)至外圍設(shè)備 504,該外圍設(shè)備504是為處理單元控制委派的狀態(tài)的外圍設(shè)備。數(shù)據(jù)包可以在外圍設(shè)備將委派的狀態(tài)移交至交換機(jī)508的時(shí)刻與最上面的中間層控制該委派的狀態(tài)的時(shí)刻之間到達(dá)。在將委派的變量移交至交換機(jī)508之后,外圍設(shè)備504就不能再處理輸入數(shù)據(jù)包。當(dāng)外圍設(shè)備504接收到輸入數(shù)據(jù)時(shí)向該最上面的中間層發(fā)送一錯(cuò)誤消息,指示上載操作在進(jìn)行中。該錯(cuò)誤消息通知該最上面的中間層停止轉(zhuǎn)發(fā)輸入數(shù)據(jù),并對(duì)后續(xù)的數(shù)據(jù)進(jìn)行緩沖,直至該最上面的中間層接收到委派的狀態(tài)。或者,以外圍設(shè)備504上額外的緩沖存儲(chǔ)器為代價(jià),輸入數(shù)據(jù)可以轉(zhuǎn)發(fā)至外圍設(shè)備504以供進(jìn)行緩沖。中間軟件層506可以將多個(gè)連接卸載至外圍設(shè)備504。中間軟件層506維持一上層狀態(tài)對(duì)象(即在該中間軟件層506之上的層的狀態(tài)對(duì)象)數(shù)量的引用計(jì)數(shù)器,該上層狀態(tài)對(duì)象引用用于卸載的中間軟件層的狀態(tài)對(duì)象。此處所使用的狀態(tài)對(duì)象為特定層的狀態(tài)變量的集合,此處分類為CONST、CACHED,或DELEGATED。如果一中間層的卸載狀態(tài)對(duì)象并沒有上層指向它的引用,則中間層506向外圍設(shè)備504發(fā)送消息,以上載該中間層的狀態(tài)對(duì)象并向中間層506發(fā)送委派的狀態(tài)變量。外圍設(shè)備504刪除中間層506的狀態(tài)對(duì)象,中間層506 向交換機(jī)508發(fā)送完成消息。圖9示出了構(gòu)成Windows上下文中的網(wǎng)絡(luò)模型的部分組件的簡化圖。出于說明的目的,對(duì)應(yīng)于多種Windows組件的OSI層也被示出。在底層中,對(duì)應(yīng)于OSI模型中的物理層, 駐留有實(shí)際的NIC (有時(shí)也稱作網(wǎng)卡,或網(wǎng)絡(luò)適配器)900-904。NIC為硬件設(shè)備,根據(jù)特定的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)提供與物理介質(zhì)(網(wǎng)絡(luò)電纜)間的物理連接以及信號(hào)的傳輸,該信號(hào)攜帶有全部更高的層所產(chǎn)生的數(shù)據(jù)。如上所述,很多NIC配備有專用的處理器和存儲(chǔ)器,并能夠執(zhí)行額外的復(fù)雜計(jì)算任務(wù)一包括否則得由主機(jī)處理器處理的任務(wù)。NIC物理上可以由設(shè)置在計(jì)算機(jī)插槽中的印刷電路板卡來實(shí)現(xiàn),如設(shè)置于遵守PCMCIA的插槽中的PCMCIA型卡,如設(shè)置于主板上計(jì)算機(jī)底架中的專用芯片,或其他適當(dāng)?shù)男问?。每?NIC經(jīng)由一對(duì)應(yīng)的網(wǎng)絡(luò)驅(qū)動(dòng)程序916-920與Windows網(wǎng)絡(luò)模型邏輯上互聯(lián), 圖中用雙向線908-912示意性的表示。網(wǎng)絡(luò)驅(qū)動(dòng)程序駐留在網(wǎng)絡(luò)模型的MAC子層中,經(jīng)由對(duì)應(yīng)的NIC將Windows與物理網(wǎng)絡(luò)通道相連。每一驅(qū)動(dòng)程序,通常由對(duì)應(yīng)的NIC的供應(yīng)商提供的軟件組件來實(shí)現(xiàn),負(fù)責(zé)通過它對(duì)應(yīng)的網(wǎng)絡(luò)連接發(fā)送和接收包并代表操作系統(tǒng)管理NIC。 每一驅(qū)動(dòng)程序在對(duì)應(yīng)的NIC上還開啟1/0并從中接收中斷,并向上調(diào)用協(xié)議驅(qū)動(dòng)程序以通知它們向外的數(shù)據(jù)傳輸?shù)耐瓿伞M瑯拥?,設(shè)備驅(qū)動(dòng)程序也負(fù)責(zé)對(duì)應(yīng)的NIC中額外的處理能力的調(diào)用、控制和/或監(jiān)控。在某些環(huán)境中該驅(qū)動(dòng)程序組件被編寫為實(shí)現(xiàn)單獨(dú)的特定網(wǎng)絡(luò)協(xié)議,例如TCP/IP 或XNS。當(dāng)前公開的主題可以應(yīng)用于這樣的環(huán)境中。但是為了具體地說明,本發(fā)明連同 Windows網(wǎng)絡(luò)體系結(jié)構(gòu)一起進(jìn)行描述,該網(wǎng)絡(luò)體系結(jié)構(gòu)中提供了稱作網(wǎng)絡(luò)驅(qū)動(dòng)程序接口規(guī)范(NDIS)的接口和環(huán)境。該NDIS接口在圖9中以擬6功能性地示出。NDIS對(duì)每一網(wǎng)絡(luò)驅(qū)動(dòng)程序916-920屏蔽不同的傳輸協(xié)議(其例子以928-934示出)的細(xì)節(jié),反之亦然。更具體地,NDIS描述了一個(gè)或多個(gè)NIC驅(qū)動(dòng)程序(916-920)通過它與一個(gè)或多個(gè)底層NIC (900-904)、 一個(gè)或多個(gè)上層的傳輸協(xié)議驅(qū)動(dòng)程序、或傳輸(圖9中以928-934表示),以及操作系統(tǒng)之間進(jìn)行通信的接口。本質(zhì)上,NDIS為NIC驅(qū)動(dòng)程序開發(fā)定義了一完全抽象的環(huán)境。因而,對(duì)于NIC驅(qū)動(dòng)程序需要執(zhí)行的每一外部功能,從注冊(cè)和截取NIC硬件中斷到與傳輸協(xié)議驅(qū)動(dòng)程序通信到經(jīng)由寄存器操作和I/O端口與下層的NIC通信,都可以依靠NDISAPI來執(zhí)行該功能。為了提供該級(jí)別的抽象以及由此帶來的可移植性,NDIS使用一導(dǎo)出庫,稱為NDIS接口庫包裝器(未示出)。NIC驅(qū)動(dòng)程序和協(xié)議驅(qū)動(dòng)程序,NIC驅(qū)動(dòng)程序和操作系統(tǒng),以及NIC驅(qū)動(dòng)程序和NIC之間的全部相互作用都通過調(diào)用包裝器函數(shù)來執(zhí)行。因而,網(wǎng)絡(luò)供應(yīng)商提供NDIS接口作為網(wǎng)絡(luò)驅(qū)動(dòng)程序的最上層,而不是為Windows NT編寫一具體傳輸?shù)尿?qū)動(dòng)程序。此做法允許任何協(xié)議驅(qū)動(dòng)程序通過調(diào)用該接口將網(wǎng)絡(luò)請(qǐng)求重定向至網(wǎng)卡。因而,用戶可以使用一塊網(wǎng)卡和一單獨(dú)的網(wǎng)絡(luò)驅(qū)動(dòng)程序來通過TCP/IP網(wǎng)絡(luò)和DLC (或NWLINK,或DECnet,VINES, NetBEUI等)網(wǎng)絡(luò)進(jìn)行通信。在網(wǎng)絡(luò)和數(shù)據(jù)鏈路層上的是傳輸、協(xié)議和相關(guān)的驅(qū)動(dòng)程序,在圖9中以928-934示例性的示出。在Windows中,傳輸協(xié)議驅(qū)動(dòng)程序是實(shí)現(xiàn)傳輸驅(qū)動(dòng)程序接口(TDI)或可能在其上邊的其他具體應(yīng)用接口的軟件組件,以向網(wǎng)絡(luò)用戶提供服務(wù)。在Windows中,該TDI為在會(huì)話層通信的網(wǎng)絡(luò)組件提供一公共接口,如功能塊938示出的重定向器和服務(wù)器功能。如公知的,傳輸協(xié)議用作網(wǎng)絡(luò)的數(shù)據(jù)組織者,實(shí)質(zhì)上定義了數(shù)據(jù)如何向下一接收層呈現(xiàn)以及相應(yīng)的數(shù)據(jù)打包過程。它們分配包(在Windows上下文中有時(shí)也稱為NDIS包),把數(shù)據(jù)從發(fā)送應(yīng)用程序復(fù)制到包中,并通過調(diào)用NDIS將包發(fā)送至更低層的設(shè)備驅(qū)動(dòng)程序,因而數(shù)據(jù)可以經(jīng)由對(duì)應(yīng)的NIC發(fā)送至網(wǎng)絡(luò)上。應(yīng)當(dāng)意識(shí)到的是,額外的功能或任務(wù)也可以當(dāng)該數(shù)據(jù)包通過不同網(wǎng)絡(luò)層時(shí)在數(shù)據(jù)包上執(zhí)行,通常在網(wǎng)絡(luò)模型的第3層和第4層。根據(jù)本發(fā)明,上述額外的功能或任務(wù)可以改為由NIC硬件執(zhí)行。例如,一個(gè)傳統(tǒng)的由傳輸協(xié)議驅(qū)動(dòng)程序執(zhí)行的任務(wù)可以是計(jì)算校驗(yàn)和值然后將其附加至包中。這有助于數(shù)據(jù)在遍歷網(wǎng)絡(luò)鏈接時(shí)保證其完整性。一般地,該操作要求與網(wǎng)絡(luò)包的發(fā)送方對(duì)應(yīng)的傳輸協(xié)議添加一數(shù)字,該數(shù)字是通過把組成包的數(shù)據(jù)元素相加計(jì)算后所得的。然后包的接收方將添加的校驗(yàn)和數(shù)字與該數(shù)據(jù)對(duì)比,從而確定數(shù)據(jù)在傳輸中沒有改變。上述校驗(yàn)和計(jì)算和對(duì)比可以改為卸載至NIC硬件。最好可以由NIC硬件執(zhí)行的另一相關(guān)的任務(wù)為數(shù)據(jù)包的消息摘要計(jì)算。和校驗(yàn)和類似的,消息摘要用于保證包中數(shù)據(jù)的完整性。另外,消息摘要可以用于確認(rèn)發(fā)送消息的一方為其所聲稱的,以此來保證數(shù)據(jù)的真實(shí)性。消息摘要的計(jì)算是非常CPU密集型的,而且是使用軟件實(shí)現(xiàn)的話開銷較大的功能。另一可取的功能為包中數(shù)據(jù)的加密。加密指的是包中消息的加密轉(zhuǎn)換過程,因而未經(jīng)授權(quán)的包的讀者預(yù)先不知道密鑰的話實(shí)際上不可能看到消息的內(nèi)容。當(dāng)然,加密算法也往往是CPU和存儲(chǔ)器密集型的,如果采用軟件實(shí)現(xiàn)的話開銷非常之大。此類加密的例子包括安全套接字層協(xié)議(SSL)加密和互聯(lián)網(wǎng)安全協(xié)議加密即“IPSec”。如公知的,SSL和 IPSec加密協(xié)議都是非常CPU和存儲(chǔ)器密集型的。另一可以在數(shù)據(jù)包上執(zhí)行的任務(wù)為TCP或UDP分割。如公知的,TCP和UDP協(xié)議將大的數(shù)據(jù)包分割成各段,這些段按照底層網(wǎng)絡(luò)允許的最大的數(shù)據(jù)尺寸分割。例如,以太網(wǎng)允許網(wǎng)絡(luò)上最大的包為1514字節(jié)。因而,如果TCP或UDP必須發(fā)送64K字節(jié),則必須將數(shù)據(jù)分解為1514字節(jié)的段。 此外,在從網(wǎng)絡(luò)接收數(shù)據(jù)包時(shí),經(jīng)常在數(shù)據(jù)包上執(zhí)行包分類。包分類包括用于服務(wù)質(zhì)量(QoS)的數(shù)據(jù)包鑒別。換言之,每一數(shù)據(jù)包包含定義服務(wù)模式的字段,該服務(wù)模式應(yīng)當(dāng)在數(shù)據(jù)包上執(zhí)行以保證最優(yōu)性能。例如,包括視頻和音頻的數(shù)據(jù)包可能需要執(zhí)行特定的功能從而在視頻和音頻呈現(xiàn)時(shí)保證高保真度。根據(jù)本發(fā)明,可以將為了鑒別服務(wù)模式的數(shù)據(jù)包分類卸載至NIC硬件。包過濾也可以由NIC硬件而不是CPU來執(zhí)行。具體地,可以對(duì)數(shù)據(jù)包進(jìn)行評(píng)估以確定它們是否具有作為拒絕服務(wù)攻擊的一部分的特征。經(jīng)常地,服務(wù)器軟件是在請(qǐng)求服務(wù)的客戶機(jī)為非惡意的假定下創(chuàng)建的。但是,受過充分訓(xùn)練的但是惡意的客戶機(jī)用戶可能會(huì)向服務(wù)器發(fā)出請(qǐng)求,該請(qǐng)求設(shè)計(jì)為阻止服務(wù)器為其他用戶服務(wù)。拒絕服務(wù)攻擊過濾指的是評(píng)估數(shù)據(jù)包以確定其是否具有拒絕服務(wù)攻擊的特征的能力。拒絕服務(wù)攻擊的一個(gè)例子是“SYN洪泛攻擊”,其中,由于一個(gè)或其他原因,在握手序列中,客戶機(jī)不向服務(wù)器的同步-確認(rèn)(SYN-ACK)響應(yīng)發(fā)出任何最終應(yīng)答。這導(dǎo)致服務(wù)器持續(xù)發(fā)出信號(hào)直至服務(wù)器最后超時(shí)。拒絕服務(wù)攻擊的另一類型稱為碎片或“淚珠”攻擊。互聯(lián)網(wǎng)協(xié)議要求對(duì)包進(jìn)行分害I],如果該包在下一路由器處理器時(shí)太大的話。后續(xù)的分割后的包確定一相對(duì)于第一包的開始的偏移,使得整個(gè)包在接收端能夠被重新組裝。在碎片攻擊中,用戶在后續(xù)的片段中放入一偽造的偏移值,經(jīng)常導(dǎo)致接收端功能障礙。該NIC硬件可以配置為通過評(píng)估數(shù)據(jù)包來確定它們是否具有特定種類的拒絕服務(wù)攻擊的特征,以過濾此類拒絕服務(wù)攻擊。此類功能以及其他功能通常由計(jì)算機(jī)CPU 20在駐留在各個(gè)網(wǎng)絡(luò)層中的軟件組件中執(zhí)行,因而會(huì)使用大量計(jì)算機(jī)資源,導(dǎo)致計(jì)算機(jī)系統(tǒng)性能的整體下降。因此,對(duì)此類或其他類似的任務(wù)進(jìn)行卸載,從而可以在對(duì)應(yīng)的NIC硬件執(zhí)行它們,能夠顯著提高計(jì)算機(jī)系統(tǒng)的整體速度和效率。參考圖6,所示出的實(shí)施例中,外圍設(shè)備504為NIC 56,交換機(jī)508為傳輸層接口交換機(jī)(TLI) 606,網(wǎng)絡(luò)棧502包括傳輸層600,網(wǎng)絡(luò)層602和成幀層604。網(wǎng)絡(luò)層602也被認(rèn)為是路徑層,該成幀層604也被認(rèn)為是鄰接層。網(wǎng)絡(luò)消息在操作過程中由應(yīng)用程序500通過網(wǎng)絡(luò)棧502發(fā)送至NIC 56。應(yīng)用程序 500發(fā)出的數(shù)據(jù)穿過TLI交換機(jī)606,該TLI交換機(jī)606控制數(shù)據(jù)下行到基于主機(jī)的網(wǎng)絡(luò)棧 502或煙囪608。要注意的是該TLI交換機(jī)606可以合并至網(wǎng)絡(luò)棧502的頂層中。網(wǎng)絡(luò)棧 502的軟件層從應(yīng)用程序500接收數(shù)據(jù),將其打包成包形式,并經(jīng)由NDIS微型驅(qū)動(dòng)程序610 發(fā)送至外圍設(shè)備硬件614。數(shù)據(jù)包在棧502傳輸時(shí),網(wǎng)絡(luò)棧502需要執(zhí)行的其他任務(wù)包括數(shù)據(jù)加密,可靠的數(shù)據(jù)傳輸,以及消息摘要計(jì)算(例如,數(shù)據(jù)包的校驗(yàn)和或CRC)。這些任務(wù)中的很多都由處理單元21執(zhí)行,而且是處理器密集型的。TLI交換機(jī)606通過把連接的數(shù)據(jù)經(jīng)由煙囪608(和煙囪驅(qū)動(dòng)程序612)發(fā)送至NIC 56,將棧操作的執(zhí)行從處理單元21上卸載。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)明白的是,NDIS微型驅(qū)動(dòng)程序610和煙囪驅(qū)動(dòng)程序612為微軟RTM操作系統(tǒng)中的NDIS API。為了清楚的解釋,基于傳輸控制協(xié)議(TCP)的協(xié)議棧將用于解釋所公開的主題。但是,應(yīng)當(dāng)體會(huì)到的是,本領(lǐng)域技術(shù)人員可以明白,在當(dāng)前公開的教導(dǎo)下,可以使用多種類型的外圍設(shè)備,被卸載的可以是其他網(wǎng)絡(luò)棧。例如,被卸載的可以是基于流控制傳輸協(xié)議(SCTP)或用戶數(shù)據(jù)報(bào)協(xié)議(UDP) 的協(xié)議棧。此外,本發(fā)明也可以用于卸載高級(jí)功能協(xié)議,例如因特網(wǎng)小型計(jì)算機(jī)系統(tǒng)接口 (iSCSI),網(wǎng)絡(luò)文件系統(tǒng)(NFS),或公共接口文件系統(tǒng)(CIFS)。卸載操作發(fā)生的原因有很多。下文示例性而并非限制性地提供了多種原因中的一些。系統(tǒng)管理員可以選擇一特定的服務(wù)來卸載??梢詫⒁惶囟ǖ倪B接卸載,如果該連接上的通信(按照字節(jié)或包的數(shù)量來計(jì))正在消耗大量的資源。多種類型的服務(wù)都可以被卸載。 例如,被卸載的可以是諸如IPSEC的安全協(xié)議??梢园凑詹呗詠眚?qū)動(dòng)卸載操作。例如,一管理員的策略可以是首先卸載來自一組織范圍內(nèi)的連接。正在使用的系統(tǒng)資源(例如,cpu的使用,數(shù)據(jù)高速緩存的使用,頁表高速緩存的使用,存儲(chǔ)器帶寬)可以引起主機(jī)處理器卸載連接。圖7示出了卸載TCP連接所執(zhí)行的步驟。使用的是三步法。一般地,該三步法為分配卸載TCP連接所需的資源,向?qū)?00,502,504和506中的每一層提供句柄,以及將層500, 502,504和506中每一層的狀態(tài)卸載至NIC 53。在卸載轉(zhuǎn)換過程中,TLI交換機(jī)506對(duì)應(yīng)用程序200發(fā)出的全部消息進(jìn)行緩沖?;蛘?,傳輸層500對(duì)該數(shù)據(jù)進(jìn)行緩沖。當(dāng)該卸載操作完成時(shí),被緩沖的數(shù)據(jù)傳輸至NIC53,所使用的機(jī)制與卸載操作的數(shù)據(jù)傳輸相同。在卸載轉(zhuǎn)換過程中當(dāng)接收到輸入包時(shí),NIC 53繼續(xù)通過層500,502,504,506向上搬移數(shù)據(jù),直到傳輸層委派的狀態(tài)移交至NIC 53。TLI交換機(jī)506通過向傳輸層500發(fā)送卸載請(qǐng)求(線條700)來發(fā)起卸載操作。該卸載請(qǐng)求包括指向下一層的本地狀態(tài)的指針(例如,對(duì)傳輸層500為一 TCB指針,對(duì)網(wǎng)絡(luò)層 502為RCE指針,對(duì)成幀層504為ARP表指針,或?qū)DIS微型驅(qū)動(dòng)程序510為NDIS微型端口指針),卸載類型(例如,對(duì)TLI交換機(jī)506為TCP,對(duì)網(wǎng)絡(luò)層502為IPv6),以及幫助NIC 53確定其是否能夠成功卸載該TCP連接的資源信息。TLI交換機(jī)506還可以向NIC 53提供分派表。傳輸層500或者拒絕該卸載請(qǐng)求,或者向網(wǎng)絡(luò)層502發(fā)送一卸載請(qǐng)求并將TCP 資源信息添加至TLI交換機(jī)資源信息(線條702)。網(wǎng)絡(luò)層502接收該卸載請(qǐng)求,或者拒絕卸載該連接,或者向成幀層504發(fā)送一卸載請(qǐng)求并將網(wǎng)絡(luò)資源需求添加至該TCP資源信息以及TLI交換機(jī)資源信息(線條704)。網(wǎng)絡(luò)層502還可以向NIC53提供分派表。成幀層504或者拒絕卸載該連接,或者向NIC53發(fā)送一卸載請(qǐng)求并將成幀資源需求添加至網(wǎng)絡(luò)資源需求,TCP資源信息和TLI交換機(jī)資源信息 (線條506)。NIC 53接收該卸載請(qǐng)求,并計(jì)算是否有可用的資源來卸載該TCP連接。如果NIC確定該卸載操作是不可能的,則拒絕該卸載請(qǐng)求。如果NIC確定該卸載操作是可能的,則接受該卸載請(qǐng)求并為該連接分配資源(例如,TCB,路由高速緩存項(xiàng)(RCE),地址解析協(xié)議(ARP) 表項(xiàng)(ATE))。NIC 53創(chuàng)建參數(shù)鏈表和分派表以向?qū)?00、502、504和506移交,并通過向成幀層504發(fā)送一完成消息來完成該卸載請(qǐng)求(線條408),該完成消息包括參數(shù)鏈表。該參數(shù)包括層500、502、504和506中每一層的卸載句柄和分派表。此處所使用的句柄指的是允許軟件層與外圍設(shè)備通信的機(jī)制。示例性而并非限制性地,卸載句柄可以是一基于指針的句柄,一用作數(shù)組查找的整數(shù)值,散列表(例如,散列函數(shù)),軟件層(或網(wǎng)絡(luò)棧)與外圍設(shè)備之間的通信通道,或軟件層向下傳遞的、外圍設(shè)備用于查找狀態(tài)對(duì)象的一組參數(shù)。
分派表用于直接向NIC 53發(fā)送數(shù) 據(jù),或從NIC 53直接接收數(shù)據(jù)。分派表也可以用于提供診斷。例如,可以添加一軟件層以對(duì)系統(tǒng)進(jìn)行監(jiān)控并注入錯(cuò)誤來保證系統(tǒng)正確地運(yùn)行。此外,分派表可以由軟件層來修補(bǔ),如果需要的話能增加額外的功能。例如,可以增加一軟件層來提供過濾驅(qū)動(dòng)程序的功能。修補(bǔ)過程通常通過以下方式實(shí)現(xiàn)抓取指向插入所增加的函數(shù)處的原始函數(shù)的指針并將其重定向(例如指向)至增加的函數(shù)。在補(bǔ)丁被插入后,增加的函數(shù)執(zhí)行其功能并且在原始函數(shù)被調(diào)用時(shí)對(duì)該原始函數(shù)進(jìn)行調(diào)用。成幀層504將給成幀層的卸載句柄和分派表存儲(chǔ)在它的ARP表項(xiàng)中,從而在目的 MAC地址改變或封裝類型改變時(shí)能簡單地更新。成幀層504然后更新與ATE相關(guān)的NIC 53 狀態(tài)(線條710)。成幀層504從該鏈表移除它的狀態(tài),并將該鏈表中剩余的信息轉(zhuǎn)發(fā)至網(wǎng)絡(luò)層502 (線條712)。網(wǎng)絡(luò)層502存儲(chǔ)網(wǎng)絡(luò)層502的卸載句柄和分派表。網(wǎng)絡(luò)層502還把它的狀態(tài)發(fā)送至NIC53 (線條714)。網(wǎng)絡(luò)層502從該鏈表中移除網(wǎng)絡(luò)層信息,并向傳輸層500發(fā)送一完成消息(線條716),該完成消息包括該參數(shù)鏈表和分派表。網(wǎng)絡(luò)層502可以將為被卸載的狀態(tài)接收的IP片段轉(zhuǎn)發(fā)至NIC53進(jìn)行處理,或者可以在網(wǎng)絡(luò)層中處理該IP片段并將其轉(zhuǎn)發(fā)至傳輸層500。在其他的實(shí)施例中,層的狀態(tài)對(duì)象與該卸載請(qǐng)求一起發(fā)送。例如,該成幀層狀態(tài)對(duì)象和網(wǎng)絡(luò)層狀態(tài)對(duì)象與該卸載請(qǐng)求一起發(fā)送,而且只有該高速緩存的狀態(tài)在卸載請(qǐng)求和完成事件之間發(fā)生了改變,該狀態(tài)才會(huì)被更新。如果該委派的狀態(tài)不是當(dāng)前的或者在卸載請(qǐng)求及其完成之間無法改變,則全部層狀態(tài)對(duì)象僅能和卸載對(duì)象一起發(fā)送。但是,分類為 CONST的狀態(tài)變量可以和該卸載請(qǐng)求一起發(fā)送,即使該委派的狀態(tài)是當(dāng)前的而且在該卸載請(qǐng)求及其完成之間可能發(fā)生改變。傳輸層500存儲(chǔ)給傳輸層的卸載句柄,并把它的狀態(tài)發(fā)送至NIC 53(線條718)。 如果有未完成的發(fā)送或接收緩沖待解決,則傳輸層500將該緩沖返回至TLI交換機(jī)506。一旦該傳輸層開始將緩沖交回至TLI交換機(jī)506,TLI交換機(jī)506就會(huì)停止向傳輸層500發(fā)送緩沖并對(duì)其進(jìn)行排隊(duì),等待傳輸層500向TLI交換機(jī)204發(fā)送包括該參數(shù)鏈表和分派表的完成消息。傳輸層500返回全部緩沖,然后發(fā)送完成消息(線條720)。一旦TLI交換機(jī)506 接收到該完成消息,TLI交換機(jī)506將該發(fā)送和接收緩沖轉(zhuǎn)移至OTC 53 (線條722)。TLI交換機(jī)506使用分派表來公布全部未完成的和之后的接收緩沖,并發(fā)送至NIC 53來處理。在完成該卸載請(qǐng)求花費(fèi)的時(shí)間過程中,每一層500、502、504或者拒絕新的對(duì)卸載的狀態(tài)對(duì)象 (也即和一層相關(guān)的狀態(tài)對(duì)象)的卸載請(qǐng)求,或者對(duì)它們進(jìn)行排隊(duì),直到卸載操作完成。如果該傳輸狀態(tài)未被卸載至NIC 53,傳輸層500仍然能夠處理輸入的TCB數(shù)據(jù)并將該數(shù)據(jù)移交至TLI交換機(jī)506。如果TCB數(shù)據(jù)在一卸載操作中途到達(dá),傳輸層500或者對(duì)該數(shù)據(jù)進(jìn)行保持,或者對(duì)該數(shù)據(jù)進(jìn)行處理并移交至TLI交換機(jī)506。在傳輸層500將其狀態(tài)發(fā)送至NIC 53 (線條718)的時(shí)刻和TLI交換機(jī)將緩沖轉(zhuǎn)移至NIC 53 (線條722)的時(shí)刻之間,通過網(wǎng)絡(luò)棧202進(jìn)入的輸入TCB數(shù)據(jù)被發(fā)送至NIC 53。對(duì)隨后的卸載請(qǐng)求,網(wǎng)絡(luò)層502和成幀層504將從NIC 53接收到的之前的卸載操作的卸載句柄傳遞至NIC 53。這通知了 NIC 53給網(wǎng)絡(luò)層502和成幀層504的資源已經(jīng)分配,從而保存了 NIC資源并加速了卸載操作。如前所述,層500、502、504將它們的狀態(tài)傳遞至NIC 53。每一狀態(tài)具有三種類型的變量CONST,CACHED和DELEGATED。CONST變量是在卸載的連接的生命周期中從不會(huì)發(fā)生改變的常量。當(dāng)連接終止時(shí)它們并不會(huì)被讀回。主機(jī)處理單元21保有CACHED變量的所有權(quán),并確保在主機(jī)處理單元21中對(duì)CACHED變量的任何改變都在NIC 53中進(jìn)行更新。所以,主機(jī)會(huì)寫入但從不會(huì)讀回CACHED變量(除非系統(tǒng)診斷請(qǐng)求它這么做)。主機(jī)處理單元 21將DELEGATED變量的所有權(quán)轉(zhuǎn)移至NIC 53。DELEGATED變量在卸載操作發(fā)生時(shí)被寫入一次,在該卸載操作終止時(shí)被讀回。通過將DELEGATED變量傳回,將連接傳遞回主機(jī)的開銷被最小化。主機(jī)處理單元21在需要時(shí)向NIC 53查詢DELEGATED變量。

傳輸層500的CONST變量包括目的地端口,源端口,表示移動(dòng)IP的標(biāo)記,SEND禾口 RECV窗口比例因數(shù),以及網(wǎng)絡(luò)層502的NIC句柄,其中移動(dòng)IP是“轉(zhuǎn)交”(care-of)地址會(huì)發(fā)生改變的情形。傳輸層500的CACHED變量為TCP變量和IP變量。TCP變量包括有效MSS, 由OTC 53指示的接收中需復(fù)制的字節(jié)數(shù),關(guān)閉Nagling的標(biāo)記,表示需要保持活動(dòng)的標(biāo)記, 以及保持活動(dòng)設(shè)置(也即,間隔,探針數(shù)量,以及增量)。IP變量包括TOS和TTL。DELEGATED 變量包括當(dāng)前的TCP狀態(tài),下一 RECV(也即,RCV. NEXT)的序號(hào),接收窗口尺寸(RCV. WND), 第一未確認(rèn)數(shù)據(jù)(SND.UNA)的序號(hào),下一 SEND(SND. NEXT)的序號(hào),曾發(fā)送的最大序號(hào) (SND. MAX),最大發(fā)送窗口(MAX_WIN),當(dāng)前阻塞窗口(CWIN),慢啟動(dòng)閾值(SSTHRESH),平滑 RTT(8*A),增量(8*D),當(dāng)前轉(zhuǎn)發(fā)數(shù),下一轉(zhuǎn)發(fā)的剩余時(shí)間,以及待回應(yīng)的時(shí)間戳。網(wǎng)絡(luò)層502的CONST變量包括目的IP地址(IPv4或IPv6)和源目的IP地址(IPv4 或IPv6)。網(wǎng)絡(luò)層502的CACHED變量包括給成幀層504的NIC句柄。網(wǎng)絡(luò)層502的DELEGATED 變量包括IP包標(biāo)識(shí)開始值。成幀層504的CACHED變量包括ARP地址和表示首部(例如,LLC/SNAP[Logical Link Control/Sub-Network Access Protocol]或 DIX[Digital, Intel, Xerox])格式的標(biāo)記。由于網(wǎng)絡(luò)層狀態(tài)可以在多個(gè)連接之間共享,成幀層狀態(tài)可以在多個(gè)路徑(例如, IP別名)間共享,因而該傳輸層狀態(tài)包括網(wǎng)絡(luò)層的句柄,該網(wǎng)絡(luò)層狀態(tài)包括成幀狀態(tài)的句柄。維持該層次關(guān)系是有若干原因的。因?yàn)镮P ID的命名空間必須在全部卸載的連接中以每一路徑為基礎(chǔ)進(jìn)行管理,因此一連接需要一網(wǎng)絡(luò)層的NIC句柄。因?yàn)槁酚筛驴赡軙?huì)改變下一跳的地址而指向一新的MAC地址,因此一路徑需要一成幀層的NIC句柄。該層次關(guān)系還壓縮了 NIC需要維持的狀態(tài)的數(shù)量。例如,一 IPv4的ARP更新可能會(huì)改變從一 IP地址至一 MAC地址的映射(例如,一接口在服務(wù)器上發(fā)生錯(cuò)誤)。主機(jī)將MAC地址維持作高速緩存的變量,因而它僅需要對(duì)高速緩存的變量進(jìn)行一單獨(dú)的更新,全部連接在新的接口上都發(fā)生錯(cuò)誤。一旦TCP連接被卸載,NIC 53就負(fù)責(zé)為它發(fā)送的分配包標(biāo)識(shí)符(例如,IP ID)。 IP ID或者按每一接口來卸載,或者按每一層狀態(tài)對(duì)象來卸載。NIC 53被分配了 IP ID命名空間的一部分。在一實(shí)施例中,當(dāng)網(wǎng)絡(luò)狀態(tài)被傳遞至NIC 53時(shí),NIC 53被分配了整個(gè)IP ID命名空間的一半,并被給予一 IP包ID開始值來使用。NIC 53使用下面的公式在它發(fā)送的 IP 包上產(chǎn)生 IP ID :Cur. sub. -IPID = [ (Start, sub. -IPID_For_This_Path) + (Counter, For_This_Path)mo_d32k]mod 64K Counter_For_This_Path = Counter_For_This_Path+l。當(dāng)卸載的連接被上載或無效時(shí),NIC 53把它將使用的下一個(gè)IP ID值轉(zhuǎn)交至網(wǎng)絡(luò)層來為發(fā)生的下一卸載操作進(jìn)行存儲(chǔ),主機(jī)處理單元21繼續(xù)使用它被分配的那部分IP ID 命名空間。主機(jī)處理單元21可以使用全部IP ID命名空間,但是每次卸載操作發(fā)生時(shí)計(jì)數(shù)器都得進(jìn)行設(shè)置。NIC 53將數(shù)據(jù)按照接收的順序放入接收緩沖器中,并按照它們公布給卸載連接的順序來填充應(yīng)用緩沖。許多應(yīng)用程序在公布一接收緩沖前等待一接收指示。在一實(shí)施例中, NIC 53具有全局緩沖池,該緩沖池用于一連接的數(shù)據(jù)到達(dá)且沒有應(yīng)用接收緩沖被公布的情形。該全局的緩沖池被用于整個(gè)卸載連接,并可以被用于實(shí)現(xiàn)1)對(duì)亂序TCP傳輸?shù)奶幚恚?2) IP數(shù)據(jù)數(shù)據(jù)報(bào)的碎片整理;3)緩沖復(fù)制算法而非零復(fù)制算法,如果應(yīng)用程序公布的緩沖對(duì)零復(fù)制算法太小的話?;蛘?,如果資源的有效使用不是需要關(guān)心的事,那么也可以使用按連接的緩沖池。但是,如果NIC不支持按連接的緩沖池或缺乏系統(tǒng)資源(例如,在存儲(chǔ)器中沒有足夠的資源來鎖定應(yīng)用緩沖器)。現(xiàn)在參考圖8,一連接一旦被卸載至NIC 53,到NIC 53就由兩條路徑。第一路徑為通過NDIS微型驅(qū)動(dòng)程序510,通過成幀層504,網(wǎng)絡(luò)層502和傳輸層500。第二路徑為通過卸載的連接808,該卸載的連接808被稱為煙@。從主機(jī)計(jì)算機(jī)的角度來看,在通信方面對(duì)于兩條路徑全部都是一樣的。高速緩存的狀態(tài)變量將該兩條路徑與處理單元21同步,如前所示地更新NIC 53中的高速緩存的狀態(tài)變量。高速緩存的變量的更新用箭頭802、804 和806示出。當(dāng)一輸入的數(shù)據(jù)包到達(dá)時(shí),NIC 53確定輸入的數(shù)據(jù)包是經(jīng)過卸載的路徑還是非卸載的路徑(也即,通過NDIS微型驅(qū)動(dòng)程序510和層504、502、500的NDIS路徑)。在一實(shí)施例中,NIC 53通過對(duì)源和目的TCP端口號(hào),源和目的IP地址以及協(xié)議類型運(yùn)行散列函數(shù),來確定通過哪一路徑來發(fā)送該輸入的數(shù)據(jù)包。如果該散列與所卸載的連接的參數(shù)匹配(即, 遍歷散列桶鏈表,該連接的所有元組都精確匹配),就使用煙囪808。如果該散列與散列索引不匹配,就使用通過網(wǎng)絡(luò)棧502的非卸載的路徑。更新高速緩存的狀態(tài)的控制消息由主機(jī)處理。這使得NIC 53不必處理該卸載的連接以外的控制消息,如ICMP、DNS以及RIP消肩、ο如前該,在Windows或類似的分層網(wǎng)絡(luò)模型中數(shù)據(jù)傳輸?shù)幕締挝皇菙?shù)據(jù)包。在 Windows環(huán)境中,該數(shù)據(jù)包被稱作NDIS包。每一包從棧頂(即,ISO棧中的層5)移動(dòng)至最低軟件層(即,ISO棧中的層2)。因而,該包定義了數(shù)據(jù)在發(fā)送和接收中在各層行進(jìn)時(shí),每一等級(jí)中都一樣的一數(shù)據(jù)結(jié)構(gòu)。作為示例,圖10示出了包向下穿過各層到達(dá)OTC時(shí)所遵循的路徑,NIC在900示為一以太網(wǎng)NIC。如上所述,傳輸驅(qū)動(dòng)程序928從一發(fā)送應(yīng)用程序接收數(shù)據(jù),并把它打包成符合底層協(xié)議的包形式,然后經(jīng)由NDIS接口 926將該包轉(zhuǎn)發(fā)至較低等級(jí)的設(shè)備驅(qū)動(dòng)程序916。此外,該傳輸協(xié)議可以在包上執(zhí)行其他功能(例如,校驗(yàn)和計(jì)算等)?;蛘撸渌δ芙M件也可以駐留在網(wǎng)絡(luò)層或數(shù)據(jù)鏈路層中,在該包上執(zhí)行額外的功能, 例如圖10中示出的IP安全功能1044(例如,加密和/或消息摘要計(jì)算)。在一實(shí)施例中,數(shù)據(jù)包1042為將計(jì)算任務(wù)卸載至諸如NIC硬件900的外圍設(shè)備的工具。例如,圖10中應(yīng)用程序數(shù)據(jù)1040從網(wǎng)絡(luò)模型的上層向下傳遞至一適當(dāng)?shù)膫鬏攨f(xié)議驅(qū)動(dòng)程序,比如TCP/IP 928。該驅(qū)動(dòng)程序?qū)⒃摂?shù)據(jù)重新打包為一適當(dāng)?shù)臄?shù)據(jù)包1042。然后, 根據(jù)將要在該特定的數(shù)據(jù)包1042上執(zhí)行的額外的功能,一功能組件被包括進(jìn)來,將一預(yù)定義的稱為包擴(kuò)展的數(shù)據(jù)結(jié)構(gòu)附加至該數(shù)據(jù)包中。該包擴(kuò)展的內(nèi)容指示數(shù)據(jù)包到達(dá)NIC 53 時(shí)哪一或哪些任務(wù)將在數(shù)據(jù)包上執(zhí)行,下文將進(jìn)行更詳細(xì)的討論。當(dāng)數(shù)據(jù)包1042到達(dá)網(wǎng)絡(luò)驅(qū)動(dòng)程序916時(shí),驅(qū)動(dòng)程序916查詢包擴(kuò)展的內(nèi)容從而確定哪一任務(wù)(哪些任務(wù))將由NIC53執(zhí)行。驅(qū)動(dòng)程序916然后控制/操作NIC上的硬件,以使其執(zhí)行通過該包擴(kuò)展的內(nèi)容所請(qǐng)求的功能任務(wù)。例如,在圖10中,數(shù)據(jù)包1042傳遞至一軟件組件1044,可以單獨(dú)來實(shí)現(xiàn)或作為傳輸協(xié)議驅(qū)動(dòng)程序本身的一部分來實(shí)現(xiàn),軟件組件1044將一包擴(kuò)展附加至包1042中。根據(jù)將被卸載的特定任務(wù),數(shù)據(jù)被包括在包擴(kuò)展中。例如,如果將實(shí)現(xiàn)的是一 IP安全功能,那么指示OTC 53應(yīng)當(dāng)依照一指定的密鑰對(duì)數(shù)據(jù)包進(jìn)行加密的數(shù)據(jù)將被包括在其中。當(dāng)然,軟件組件1044可以附加預(yù)定義的數(shù)據(jù)以使多個(gè)功能中的任意一個(gè),例如上文所討論的那些,將在硬件級(jí)上執(zhí)行而不是由駐留在網(wǎng)絡(luò)層中的軟件組件執(zhí)行。設(shè)備驅(qū)動(dòng)程序916將從該包擴(kuò)展中提取信息,然后在NIC 53引用指定的任務(wù)。圖11示出了數(shù)據(jù)包1042的大體結(jié)構(gòu)的一個(gè)實(shí)施例。根據(jù)所使用的確切的網(wǎng)絡(luò)環(huán)境,包1042可以是任何格式的,在Windows環(huán)境中包按照NDIS來格式化,并包括諸如包描述符的信息;意義由協(xié)作設(shè)備驅(qū)動(dòng)程序和協(xié)議驅(qū)動(dòng)程序來定義的標(biāo)記;用于存儲(chǔ)與該包相關(guān)的帶外數(shù)據(jù)(OOB)的區(qū)域;和該包的長度有關(guān)的信息;以及指向和該包的數(shù)據(jù)內(nèi)容有關(guān)的存儲(chǔ)位置的指針。圖11進(jìn)一步示出了額外的數(shù)據(jù)結(jié)構(gòu)字段——包擴(kuò)展1150,額外的數(shù)據(jù)結(jié)構(gòu)字段附加至NDIS數(shù)據(jù)包來識(shí)別任務(wù)卸載操作。如之前討論的,正是該包擴(kuò)展1150定義了一數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)包含了識(shí)別正在被卸載至目的NIC的特定任務(wù)所必需的信息。在一優(yōu)選的實(shí)施例中,對(duì)每一任務(wù)卸載類型(例如,校驗(yàn)和,加密/解密,等等),一預(yù)定義的數(shù)據(jù)字段會(huì)被包括在包擴(kuò)展1150中。該數(shù)據(jù)字段可以簡單地為控制標(biāo)記或標(biāo)記的形式,僅指示被執(zhí)行的特定功能(例如校驗(yàn)和),或者該信息也可以為指向一數(shù)據(jù)結(jié)構(gòu)的指針的形式,該數(shù)據(jù)結(jié)構(gòu)進(jìn)一步定義了一任務(wù)應(yīng)當(dāng)如何完成。NIC 53可以配置為將包擴(kuò)展1150中的任務(wù)卸載控制字段認(rèn)為是僅應(yīng)用于附屬的包。因此,例如,如果一特定的包中包含一表示NIC 53將執(zhí)行校驗(yàn)和運(yùn)算的標(biāo)記,那么NIC 53將僅在附屬的包上執(zhí)行校驗(yàn)和運(yùn)算。但是,如果對(duì)于一給定的包沒有該標(biāo)記,那么NIC 53對(duì)該包不執(zhí)行校驗(yàn)和運(yùn)算。或者,包擴(kuò)展1150中的任務(wù)卸載控制字段可以指明,該NIC 將在該包和網(wǎng)絡(luò)上發(fā)出的后續(xù)的包上執(zhí)行卸載任務(wù),直到NIC 53受到另外的指示。包擴(kuò)展1150也可以指示在接收站的NIC站執(zhí)行什么任務(wù)。例如,包擴(kuò)展可以指示接收站NIC在從網(wǎng)絡(luò)上接收到包時(shí)執(zhí)行某些適當(dāng)?shù)墓δ埽?,解密,校?yàn)和運(yùn)算,包分類, 防御拒絕服務(wù)攻擊的包過濾,包重新組裝,以及任何其他的可以對(duì)NIC配置來執(zhí)行的接收功能。當(dāng)然,發(fā)送站可能并不知道接收站NIC的任務(wù)卸載能力。如果接收站NIC沒有執(zhí)行所請(qǐng)求的功能的能力,那么接收站CPU將代替實(shí)現(xiàn)該功能。因此,發(fā)送站可以對(duì)接收站NIC 對(duì)一特定的包所做的操作具有一定的控制力。此外,發(fā)送站也可以在NIC 53接收包時(shí)使用包擴(kuò)展來控制NIC 53。例如,在網(wǎng)絡(luò)上發(fā)出的一特定的包可以包括包擴(kuò)展,該包擴(kuò)展包括給NIC 53的指示,指示它在接收到包時(shí),將對(duì)該包進(jìn)行解密。在這個(gè)例子中,該指示并不應(yīng)用在將在網(wǎng)絡(luò)上發(fā)出的包上,因?yàn)樵撝噶钍菫榱藢?duì)從網(wǎng)絡(luò)上接收到的包執(zhí)行功能。因此,在這個(gè)例子中,將在網(wǎng)絡(luò)上發(fā)出的包的包擴(kuò)展被用作一種機(jī)制,該機(jī)制用于控制在接收到包時(shí),何種接收功能將被卸載至NIC 53。 發(fā)送站每發(fā)送一個(gè)包時(shí),就有一次機(jī)會(huì)來控制NIC 53的接收功能。再次參考圖11所示的例子,包擴(kuò)展1150包含多個(gè)數(shù)據(jù)字段1151至1153,該多個(gè)數(shù)據(jù)字段1151至1153控制卸載至一 NIC(例如,NIC 53)的發(fā)送功能,包擴(kuò)展1150還包括多個(gè)數(shù)據(jù)字段1巧4至1158,該多個(gè)數(shù)據(jù)字段IlM至1158控制卸載至一 NIC(例如,NIC 53 或一接收站的NIC)的接收功能。例如,包擴(kuò)展1150包括一表示NIC 53執(zhí)行校驗(yàn)和運(yùn)算的數(shù)據(jù)字段115。這向發(fā)送 NIC 53指出,發(fā)送NIC 53本身將在附加的包上執(zhí)行校驗(yàn)和運(yùn)算。包擴(kuò)展1150也可以包括一安全功能數(shù)據(jù)字段1152,來指示NIC 53應(yīng)當(dāng)執(zhí)行安全功能,例如連同包數(shù)據(jù)的SSL或IPSec加密和/或消息摘要計(jì)算執(zhí)行的安全功能。對(duì)于該類型的安全任務(wù),字段1152優(yōu)選地包括一指向包含一數(shù)據(jù)結(jié)構(gòu)(例如,數(shù)據(jù)結(jié)構(gòu)1160)的存儲(chǔ)位置,該數(shù)據(jù)結(jié)構(gòu)依次包含與加密和/或消息摘要功能的執(zhí)行過程相關(guān)的信息。在某些情況下,將指向具有相關(guān)數(shù)據(jù)的存儲(chǔ)位置的指針包括進(jìn)來,有利于在包擴(kuò)展本身內(nèi)存儲(chǔ)實(shí)際的數(shù)據(jù)。參考圖11,校驗(yàn)和數(shù)據(jù)字段IlM指示,對(duì)全部接收到的在發(fā)送站已經(jīng)執(zhí)行校驗(yàn)和計(jì)算的包,NIC 53將執(zhí)行校驗(yàn)和計(jì)算來確保數(shù)據(jù)沒有在到達(dá)NIC 53的途中改變。校驗(yàn)和字段IlM可以無限期地控制所有包的校驗(yàn)和接收功能,或者在一給定的時(shí)期內(nèi)進(jìn)行控制, 除非隨后的校驗(yàn)和字段明確地否定。該包擴(kuò)展也可以包括一安全標(biāo)記1155,指示NIC 53在接收包時(shí)應(yīng)當(dāng)執(zhí)行安全功能,例如連同包數(shù)據(jù)的SSL或IPSec解密和/或消息摘要計(jì)算執(zhí)行的安全功能。對(duì)于該類型的安全任務(wù),字段1155優(yōu)選地包括一指向包含一數(shù)據(jù)結(jié)構(gòu)(例如,數(shù)據(jù)結(jié)構(gòu)1160)的存儲(chǔ)位置,改數(shù)據(jù)結(jié)構(gòu)依次包含與加密和/或消息摘要功能相關(guān)的信息。該包擴(kuò)展也可以包括一組裝數(shù)據(jù)字段1156,該組裝數(shù)據(jù)字段1156指示NIC 53將接收到的包組裝為批量數(shù)據(jù),也可以包括一分類字段1157,該分類字段1157指示NIC 53 對(duì)每一包進(jìn)行如上所述的服務(wù)質(zhì)量的分類,也可以包括一拒絕服務(wù)(D0Q攻擊過濾字段 1158,用于對(duì)輸入的包過濾如上所述的DOS攻擊的特征。包擴(kuò)展1150也可以包括與標(biāo)記 1154-1158類似的用于接收站NIC在被攻擊的包上執(zhí)行的接收功能數(shù)據(jù)字段。在一實(shí)施例中,一特定的設(shè)備驅(qū)動(dòng)程序?qū)Π鼣U(kuò)展1150中包含的信息進(jìn)行查詢,其中,包1142被發(fā)送到該設(shè)備驅(qū)動(dòng)程序。在所示實(shí)施例的Windows環(huán)境下,此類功能優(yōu)選地通過進(jìn)行適當(dāng)?shù)腘DIS函數(shù)調(diào)用來執(zhí)行。例如,可以進(jìn)行一預(yù)定義的NDIS函數(shù)的調(diào)用,該 NDIS函數(shù)給包返回一指向包擴(kuò)展1150的存儲(chǔ)位置的指針。然后設(shè)備驅(qū)動(dòng)程序軟件可以識(shí)別那些任務(wù)將被執(zhí)行,并根據(jù)卸載的任務(wù),以適當(dāng)?shù)姆绞竭\(yùn)行/操作該驅(qū)動(dòng)程序?qū)?yīng)的NIC 硬件。由于多種原因,利用實(shí)際的數(shù)據(jù)包來將計(jì)算任務(wù)從計(jì)算機(jī)處理器卸載至外圍設(shè)備是有益的。例如,傳輸驅(qū)動(dòng)程序可以一包接一包的方式來利用外圍設(shè)備的性能。這使得任務(wù)被動(dòng)態(tài)地下載,而且一外圍設(shè)備的性能可以根據(jù)需要來使用。因此,如果在一特定的時(shí)間點(diǎn)計(jì)算機(jī)系統(tǒng)的處理開銷較小,那最好以傳統(tǒng)的方式在計(jì)算機(jī)處理器上執(zhí)行某些任務(wù)?;蛘?, 如果CPU負(fù)擔(dān)較重地上載了其他計(jì)算任務(wù),那么它可以僅通過在數(shù)據(jù)包附加必要的包擴(kuò)展來將任務(wù)卸載至外圍設(shè)備。另一個(gè)好處是通過一個(gè)單獨(dú)的包來卸載多個(gè)任務(wù)的能力,實(shí)質(zhì)上是將多個(gè)操作一次成批處理。例如,當(dāng)計(jì)算機(jī)處理器執(zhí)行校驗(yàn)和運(yùn)算或加密運(yùn)算時(shí),在該運(yùn)算完成之前必須將整個(gè)數(shù)據(jù)字段裝載至一存儲(chǔ)位置,即包數(shù)據(jù)的校驗(yàn)和或加密計(jì)算完成之前。而且,由于分層網(wǎng)絡(luò)模型一次只能執(zhí)行一項(xiàng)操作,因而需要多次把數(shù)據(jù)復(fù)制到存儲(chǔ)器中。但是,按包進(jìn)行的方法使得多個(gè)任務(wù)可以在一個(gè)包中被卸載。因此,外圍硬件可以根據(jù)硬件能力在一次單獨(dú)的數(shù)據(jù)傳輸中執(zhí)行兩項(xiàng)或更多項(xiàng)操作,因而顯著地增大了計(jì)算機(jī)系統(tǒng)的總處理能力和效率。應(yīng)當(dāng)意識(shí)到的是,盡管上述方案在指定任務(wù)以將其卸載至一特定的NIC的能力方面具有顯著的益處,但信息的按包傳遞也可以通過其他方式來使用。例如,如果一特定的NIC能夠?qū)乃瓦_(dá)控制在預(yù)定的時(shí)間,那么該包擴(kuò)展數(shù)據(jù)結(jié)構(gòu)可以用來傳遞用于確定 NIC硬件應(yīng)當(dāng)怎樣和/或何時(shí)發(fā)送包的信息。在一實(shí)施例中,在一傳輸協(xié)議驅(qū)動(dòng)程序?qū)⒁话鼣U(kuò)展附加值一數(shù)據(jù)包以將一特定的任務(wù)卸載至NIC之前,將線執(zhí)行兩個(gè)額外的功能。在存在多種不同類型的硬件外圍設(shè)備,每一種具有不同的處理能力的范圍內(nèi),當(dāng)前公開的實(shí)施例優(yōu)選地提供了一種方法,通過該方法該傳輸驅(qū)動(dòng)程序能首先查詢連接至計(jì)算機(jī)系統(tǒng)的外圍設(shè)備的任務(wù)卸載能力。一旦上述此能力被確定,傳輸協(xié)議驅(qū)動(dòng)程序然后就能設(shè)置或使能所感興趣的那些任務(wù)。一旦被使能,所指定的任務(wù)隨后就能以上述方式在每一個(gè)包的基礎(chǔ)上運(yùn)用。遠(yuǎn)稈接入?yún)f(xié)議的硬件加諫如上提到的,遠(yuǎn)程接入和終端服務(wù)通常使用諸如遠(yuǎn)程桌面協(xié)議(RDP,Remote Desktop Protocol)的協(xié)議涉及桌面虛擬化。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)意識(shí)到盡管當(dāng)前公開按照RDP協(xié)議來進(jìn)行描述,所公開的原理可以很容易地應(yīng)用于提供遠(yuǎn)程接入服務(wù)的任何系統(tǒng),例如虛擬網(wǎng)絡(luò)計(jì)算(VNC),Citrix XenApp,以及相類似的。諸如RDP的協(xié)議設(shè)計(jì)為通過將圖形顯示信息從遠(yuǎn)程計(jì)算機(jī)傳遞至用戶以及將輸入從用戶傳輸至遠(yuǎn)程計(jì)算機(jī),該輸入可能是在本地加入的,來推動(dòng)用戶和遠(yuǎn)程計(jì)算機(jī)的交互。該協(xié)議還提供一可擴(kuò)展的傳輸機(jī)制,該傳輸機(jī)制允許專用的通信發(fā)生在用戶計(jì)算機(jī)上的組件與運(yùn)行在遠(yuǎn)程計(jì)算機(jī)上的組件之間。該協(xié)議呈現(xiàn)虛擬的桌面,通常處理圖形以及處理諸如USB、打印機(jī)及鍵盤和鼠標(biāo)的設(shè)備通信。一終端服務(wù)器通常主機(jī)有多個(gè)遠(yuǎn)程客戶機(jī)會(huì)話。來自終端服務(wù)器的圖形數(shù)據(jù)需要編碼和加密為圖元形式或者在服務(wù)器上渲染,生成的位圖需要壓縮和加密并發(fā)送至客戶機(jī)。編碼、渲染和加密運(yùn)算實(shí)質(zhì)上是非常高計(jì)算量的,而且通常要求較高的CPU利用率。為了提供好的桌面虛擬化體驗(yàn),對(duì)應(yīng)的圖形保真度應(yīng)當(dāng)很高。除代碼優(yōu)化外,可以通過使用額外的硬件資源來降低渲染和加密相關(guān)的主機(jī)CPU周期和網(wǎng)絡(luò)的占用率,該額外的硬件資源能夠執(zhí)行RDP處理過程中所需要的渲染和/或壓縮任務(wù)。此外,可以通過在數(shù)據(jù)傳輸前將CPU密集型的遠(yuǎn)程桌面操作卸載至一網(wǎng)絡(luò)處理器或其他外圍設(shè)備主機(jī)CPU,來減少主機(jī)CPU的處理操作。如上所述,該任務(wù)卸載操作,也稱為煙@卸載,可以用于卸載TCP/IP 處理操作,例如校驗(yàn)和、大發(fā)送分割(large send segmentation)、對(duì)智能網(wǎng)絡(luò)結(jié)構(gòu)的IPSEC 和TCB狀態(tài)處理。因而,利用上述煙囪卸載原理來處理與使用諸如RDP的協(xié)議來提供遠(yuǎn)程接入服務(wù)相關(guān)的一些或全部任務(wù)是有益的。圖12描述了一用于提供遠(yuǎn)程桌面虛擬化的示范性的體系結(jié)構(gòu)。遠(yuǎn)程桌面進(jìn)程被通常棧入傳輸提供方的頂部,通常為TCP的頂部,利用傳輸層接口(TLI,transport layer interface)來發(fā)送和接收遠(yuǎn)程桌面數(shù)據(jù)包。例如,一個(gè)或多個(gè)應(yīng)用程序1200可以調(diào)用圖形和媒體API,依次產(chǎn)生圖形輸出,該圖形輸出進(jìn)一步由一遠(yuǎn)程接入處理?xiàng)?210來處理。網(wǎng)絡(luò)傳輸驅(qū)動(dòng)程序1220然后可以處理該數(shù)據(jù)包的傳輸過程。圖13提供了遠(yuǎn)程桌面處理功能的一進(jìn)一步示范性的說明。一個(gè)或多個(gè)應(yīng)用程序可以在服務(wù)器上執(zhí)行并產(chǎn)生在客戶機(jī)顯示裝置上顯示的圖形。例如應(yīng)用程序11310和應(yīng)用程序2 1312可以產(chǎn)生由圖形棧1318處理的圖形。圖形棧1318可以包括多個(gè)負(fù)責(zé)呈現(xiàn)圖形對(duì)象并將其傳輸至輸出設(shè)備的圖形組件。該組件的例子包括圖形設(shè)備接口(GDI)1314和 DirectX (DX)1316。該應(yīng)用程序的圖形輸出被遠(yuǎn)程接入?yún)f(xié)議棧1320截獲,并進(jìn)一步被處理為命令指令1322和位圖1324。命令指令,或繪圖指令用于對(duì)產(chǎn)生一圖形圖像或操作一特定的高速緩存所必要的操作進(jìn)行編碼。基本繪圖指令一般用于編碼繪圖操作。每一基本指令可以組織為一組字段,在該字段上應(yīng)用字段壓縮算法。該算法設(shè)計(jì)為避免發(fā)送上一次發(fā)送指令后并沒有發(fā)生改變的字段,并且減小某些字段類型編碼后的字段大小,當(dāng)它們能夠通過更小的數(shù)據(jù)來表示的時(shí)候?;局噶畹睦影ɡL制諸如矩形和線條的圖形對(duì)象,以及顯示文本片段。二級(jí)繪圖指令可以用于管理高速緩存。位圖處理13M進(jìn)一步包括高速緩存13 和壓縮13 。該高速緩存過程可以進(jìn)一步包括一小塊化函數(shù)1330和散列計(jì)算函數(shù)1332。遠(yuǎn)程接入?yún)f(xié)議可以使用高速緩存來存儲(chǔ)繪元,例如位圖、色表和字符。使用高速緩存技術(shù)可以確保在多個(gè)繪圖操作中使用的項(xiàng)目僅從服務(wù)器至客戶機(jī)發(fā)送一次,以此來減小數(shù)據(jù)通信量。位圖處理13M的輸出和命令指令處理1322可以合并為編碼指令1334。遠(yuǎn)程接入?yún)f(xié)議可以使用批量壓縮1336來壓縮數(shù)據(jù)。除了使用數(shù)據(jù)批量壓縮,遠(yuǎn)程接入?yún)f(xié)議也可以使用游程編碼(RLE)規(guī)則的變體來實(shí)現(xiàn)由服務(wù)器發(fā)送至客戶機(jī)的位圖數(shù)據(jù)的壓縮。在這里,數(shù)據(jù)可以由數(shù)據(jù)成幀1338,、數(shù)據(jù)加密1340發(fā)送,并通過網(wǎng)絡(luò)1342傳輸。如上所討論的,例如TCP的功能可以使用上面描述的煙囪卸載技術(shù)來卸載至一外圍設(shè)備。如上所述,與諸如RDP的協(xié)議相關(guān)的圖形圖像的遠(yuǎn)程化(remoting)是通過持續(xù)地由服務(wù)器向客戶機(jī)發(fā)送更新的位片來實(shí)現(xiàn)的,該過程是一計(jì)算密集型的任務(wù)。因此,本發(fā)明將該煙 卸載概念擴(kuò)展至包括前述的遠(yuǎn)程接入處理任務(wù)。在不同的實(shí)施例中,一個(gè)或多個(gè)與遠(yuǎn)程桌面虛擬化相關(guān)的處理任務(wù)可以被卸載至煙 。在某些實(shí)施例中,可以是遠(yuǎn)程接入處理任務(wù)的一個(gè)子集被卸載。例如,在一些實(shí)施例中,一個(gè)或多個(gè)位圖壓縮1328,高速緩存13 以及批量壓縮1336可以被卸載至一外圍設(shè)備,例如NIC,從而使用所公開的卸載原理來處理。在其他實(shí)施例中,大多或全部遠(yuǎn)程接入處理,例如圖13中描述的任務(wù),可以被卸載至一外圍設(shè)備,而主機(jī)處理器僅保留控制和管理功能。圖14和圖15描述了提供對(duì)一終端服務(wù)器或虛擬機(jī)的遠(yuǎn)程接入的一示范性的操作過程,其中使用一傳輸層接口來發(fā)送和接收遠(yuǎn)程接入數(shù)據(jù)單元,該操作過程包括操作 1400,、1402、1404、1406、1408、1410、1412、1414 和 1416。參考圖 14,操作 1400 開始該操作過程,操作1402為確定外圍設(shè)備包括用于實(shí)現(xiàn)一個(gè)或多個(gè)指定的遠(yuǎn)程接入操作任務(wù)的任務(wù)卸載能力。操作1404為發(fā)送一外圍設(shè)備將執(zhí)行該一個(gè)或多個(gè)操作任務(wù)的指示至外圍設(shè)備,包括與隨后的數(shù)據(jù)單元共同使用的上下文信息。操作1406為使得該一個(gè)或多個(gè)遠(yuǎn)程接入操作任務(wù)由外圍設(shè)備執(zhí)行。操作1408示出了,在一實(shí)施例中,遠(yuǎn)程接入是使用遠(yuǎn)程桌面協(xié)議(RDP,RemoteDesktop Protocol)來實(shí)現(xiàn)的。操作1410示出了該操作任務(wù)可以提供部分RDP處理。或者,操作1412示出了該操作任務(wù)提供完整的RDP處理。操作1414示出了一示范性的操作任務(wù)包括RDP位圖壓縮。操作1416示出了一示范性的操作任務(wù)包括RDP批量壓縮。繼續(xù)參考圖15,操作1502示出了該操作任務(wù)包括RDP高速緩存。操作1504示出了該操作任務(wù)根據(jù)計(jì)算機(jī)系統(tǒng)的當(dāng)前需求來選擇性地卸載至外圍設(shè)備。操作1504示出了通過在任務(wù)卸載緩沖器中設(shè)置至少一個(gè)標(biāo)記指示符啟用該任務(wù)卸載能力。在一實(shí)施例中, 每一外圍設(shè)備驅(qū)動(dòng)程序(例如,參見圖9)可以具有和它相關(guān)的一預(yù)定義的任務(wù)卸載緩沖單元,每一任務(wù)卸載緩沖單元包含該設(shè)備驅(qū)動(dòng)程序和它對(duì)應(yīng)的外圍設(shè)備的任務(wù)卸載能力。該任務(wù)卸載緩沖可以識(shí)別外圍設(shè)備和它的設(shè)備驅(qū)動(dòng)程序所支持的特定的任務(wù),也包括與所支持的每一單獨(dú)的任務(wù)相關(guān)的任何信息。在一實(shí)施例中,一設(shè)備驅(qū)動(dòng)程序的任務(wù)卸載緩沖的內(nèi)容可以通過一 NDIS函數(shù)調(diào)用來找回。操作1508示出了在一實(shí)施例中,該外圍設(shè)備為一網(wǎng)絡(luò)接口卡(NIC)。操作1510示出了數(shù)據(jù)包可以傳遞穿過一分層網(wǎng)絡(luò)模型。操作1512示出了數(shù)據(jù)包可以包括網(wǎng)絡(luò)數(shù)據(jù)和包擴(kuò)展數(shù)據(jù)。操作1514示出了該數(shù)據(jù)包指示該外圍設(shè)備將執(zhí)行一批操作任務(wù)。操作1516示出了包擴(kuò)展數(shù)據(jù)包括指示至少一個(gè)操作任務(wù)將由外圍設(shè)備執(zhí)行的至少一個(gè)數(shù)據(jù)字段。圖16描述了一示范性的將遠(yuǎn)程接入處理任務(wù)卸載至一外圍設(shè)備的操作過程,包括操作1600、1602和1604。參考圖16,操作1600開始該操作過程,操作1602為向以外圍設(shè)備發(fā)送一數(shù)據(jù)包,指示該設(shè)備將執(zhí)行以遠(yuǎn)程接入?yún)f(xié)議操作任務(wù)。操作1604為使得上述處理器執(zhí)行該操作任務(wù)。以上提到內(nèi)容的任何方面可以采用方法、系統(tǒng)、計(jì)算機(jī)可讀的媒體、或任何類型的制造產(chǎn)品來實(shí)現(xiàn)。例如,根據(jù)圖17,一計(jì)算機(jī)可讀的媒體能在其上存儲(chǔ)計(jì)算機(jī)可執(zhí)行的用于將遠(yuǎn)程接入處理任務(wù)卸載至一外圍設(shè)備的指令。該媒體可以包括指令的第一子集1710,用于確定外圍設(shè)備包括任務(wù)卸載能力;指令的第二子集1712,用于發(fā)送一指示至外圍設(shè)備, 該指示為外圍設(shè)備將執(zhí)行上述操作任務(wù)之一;以及指令的第三子集1714,用于使得該遠(yuǎn)程接入操作任務(wù)或更多的遠(yuǎn)程接入操作任務(wù)由外圍設(shè)備執(zhí)行。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)意識(shí)到的是,可以使用另外的指令集合來捕捉此處公開的其他不同的內(nèi)容,而且當(dāng)前公開的三個(gè)指令的子集可以根據(jù)當(dāng)前公開做細(xì)節(jié)性地變更。例如,該指令可以進(jìn)一步包括指令1716,用于使用遠(yuǎn)程桌面協(xié)議(RDP)實(shí)現(xiàn)上述遠(yuǎn)程接入。該指令可以進(jìn)一步包括用于高速緩存和批量壓縮的指令1718,用于多路復(fù)用/成幀、加密和命令指令編碼的指令1720,以及用于在分層網(wǎng)絡(luò)模型傳遞數(shù)據(jù)包的指令 1722。如上所述,當(dāng)前公開的主題的各方面可以在經(jīng)編程的計(jì)算機(jī)上執(zhí)行。圖1以及下面的討論旨在提供其中可以實(shí)現(xiàn)那些方面的合適的計(jì)算環(huán)境的簡要說明。本領(lǐng)域技術(shù)人員可領(lǐng)會(huì),圖1的計(jì)算機(jī)系統(tǒng)在一些實(shí)施例中可實(shí)現(xiàn)圖2-4的服務(wù)器和客戶機(jī)。在這些示例實(shí)施例中,服務(wù)器和客戶機(jī)可包括圖1中所描述的某些或全部組件,且在某些實(shí)施例中,服務(wù)器和客戶機(jī)可以各自包括被配置成實(shí)例化本發(fā)明的特定方面的電路。在本公開中通篇使用的術(shù)語“電路”可包括專門硬件組件。在相同實(shí)施例或其他實(shí)施例中,電路可包括被配置成通過固件或開關(guān)執(zhí)行功能的微處理器。在相同或其他示例實(shí)施例中,電路可包括一個(gè)或多個(gè)通用處理單元和/或多核處理單元等等,當(dāng)體現(xiàn)可操作以執(zhí)行功能的邏輯的軟件指令被加載到存儲(chǔ)器,例如,RAM和/或虛擬存儲(chǔ)器中時(shí),這些處理單元可以被配置。在其中電路包括硬件和軟件的組合的示例實(shí)施例中,實(shí)施者可以編寫體現(xiàn)邏輯的源代碼,且源代碼可以被編譯為可以由通用處理單元處理的機(jī)器可讀代碼。圖1描繪了以本發(fā)明的各方面來配置的計(jì)算系統(tǒng)的示例。計(jì)算系統(tǒng)可包括計(jì)算機(jī) 20等等,其中包括處理單元21、系統(tǒng)存儲(chǔ)器22,以及將包括系統(tǒng)存儲(chǔ)器在內(nèi)的各種系統(tǒng)組件耦合到處理單元21的系統(tǒng)總線23。系統(tǒng)總線23可以是幾種類型的總線結(jié)構(gòu)中的任何一種,包括存儲(chǔ)器總線或存儲(chǔ)控制器、外圍總線、以及使用各種總線體系結(jié)構(gòu)中的任一種的局部總線。系統(tǒng)存儲(chǔ)器包括只讀存儲(chǔ)器(ROM) M和隨機(jī)存取存儲(chǔ)器(RAM) 25?;据斎? 輸出系統(tǒng)沈(BIOS)被存儲(chǔ)在ROM M中,該基本輸入/輸出系統(tǒng)沈包含了諸如在啟動(dòng)期間幫助在計(jì)算機(jī)20內(nèi)的元件之間傳輸信息的基本例程。計(jì)算機(jī)20還可以包括用于讀寫硬盤 (未示出)的硬盤驅(qū)動(dòng)器27、用于讀寫可移動(dòng)磁盤四的磁盤驅(qū)動(dòng)器28,以及用于讀寫諸如 CD ROM或其他光學(xué)介質(zhì)之類的可移動(dòng)光盤31的光盤驅(qū)動(dòng)器30。在一些示例實(shí)施例中,實(shí)施本發(fā)明的各方面的計(jì)算機(jī)可執(zhí)行指令可存儲(chǔ)在ROM 24、硬盤(未示出)、RAM 25、可移動(dòng)磁盤四、光盤31和/或處理單元21的高速緩存中。硬盤驅(qū)動(dòng)器27、磁盤驅(qū)動(dòng)器28,以及光驅(qū)動(dòng)器30分別通過硬盤驅(qū)動(dòng)器接口 32、磁盤驅(qū)動(dòng)器接口 33,以及光驅(qū)動(dòng)器接口 34連接到系統(tǒng)總線23。驅(qū)動(dòng)器以及它們相關(guān)聯(lián)的計(jì)算機(jī)可讀介質(zhì)為計(jì)算機(jī)20提供了對(duì)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊,及其他數(shù)據(jù)的非易失性存儲(chǔ)。雖然此處所描述的環(huán)境使用了硬盤、 可移動(dòng)磁盤29、以及可移動(dòng)光盤31,但是,那些本領(lǐng)域普通技術(shù)人員應(yīng)該理解,在操作環(huán)境中也可以使用諸如盒式磁帶、閃存卡、數(shù)字視頻盤、伯努利磁帶盒、隨機(jī)存取存儲(chǔ)器(RAM)、 只讀存儲(chǔ)器(ROM)等等之類的可以存儲(chǔ)可由計(jì)算機(jī)進(jìn)行訪問的數(shù)據(jù)的其他類型的計(jì)算機(jī)可讀介質(zhì)??梢杂腥舾蓚€(gè)程序模塊存儲(chǔ)在硬盤、磁盤四、光盤31、R0M 24,和/或RAM25上,包括操作系統(tǒng)35、一個(gè)或多個(gè)應(yīng)用程序36、其他程序模塊37、以及程序數(shù)據(jù)38。用戶可以通過諸如鍵盤40和定點(diǎn)設(shè)備42之類的輸入設(shè)備向計(jì)算機(jī)20中輸入命令和信息。其他輸入設(shè)備(未示出)可以包括麥克風(fēng)、游戲桿、游戲手柄、圓盤式衛(wèi)星天線、掃描儀等等。這些及其他輸入設(shè)備常常通過耦合到系統(tǒng)總線的串行端口接口 46連接到處理單元21,但是,也可以通過其他接口,如并行端口、游戲端口、通用串行總線(USB)端口、來進(jìn)行連接。顯示器47 或其他類型的顯示設(shè)備也可以通過諸如視頻適配器48之類的接口連接到系統(tǒng)總線23。除了顯示器47之外,計(jì)算機(jī)通常還包括其他外圍輸出設(shè)備(未示出),如揚(yáng)聲器和打印機(jī)。圖 1的系統(tǒng)也包括主機(jī)適配器55、小型計(jì)算機(jī)系統(tǒng)接口(SCSI)總線56,以及連接到SCSI總線 56的外部存儲(chǔ)裝置62。計(jì)算機(jī)20可以使用到諸如遠(yuǎn)程計(jì)算機(jī)49之類的一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī)的邏輯連接在聯(lián)網(wǎng)環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)49可以是另一計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對(duì)等設(shè)備或其他常見的網(wǎng)絡(luò)節(jié)點(diǎn)、虛擬機(jī),并通常包括上文相對(duì)于計(jì)算機(jī)20所描述的許多或全部元件,但是在圖1中只示出了存儲(chǔ)器存儲(chǔ)設(shè)備50。圖1中所描繪的邏輯連接可包括局域網(wǎng) (LAN)51和廣域網(wǎng)(WAN)52。這樣的聯(lián)網(wǎng)環(huán)境在辦公室、企業(yè)范圍的計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)部網(wǎng)和因特網(wǎng)中是普遍現(xiàn)象。當(dāng)用于LAN網(wǎng)絡(luò)環(huán)境中時(shí),計(jì)算機(jī)20可通過網(wǎng)絡(luò)接口或適配器53連接到LAN 51。當(dāng)用于WAN網(wǎng)絡(luò)環(huán)境中時(shí),計(jì)算機(jī)20通常包括調(diào)制解調(diào)器M,或用于通過廣域網(wǎng)52(如通過因特網(wǎng))建立通信的其他裝置。調(diào)制解調(diào)器M(可以是內(nèi)置的或外置的)可通過串行端口接口 46連接到系統(tǒng)總線23。在聯(lián)網(wǎng)環(huán)境中,相對(duì)于計(jì)算機(jī)20所描述的程序模塊或其部分可被存儲(chǔ)在遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中??梢岳斫?,所示出的網(wǎng)絡(luò)連接只是示例,也可以使用用于在計(jì)算機(jī)之間建立通信鏈路的其他裝置。此外,盡管可以預(yù)想當(dāng)前公開的主題的很多實(shí)施例特別適合于計(jì)算機(jī)系統(tǒng),但是,本文中沒有任何表述旨在將本公開限制于這樣的實(shí)施例。前述的詳細(xì)描述通過示例和/或操作圖闡述了系統(tǒng)和/或進(jìn)程的各實(shí)施例。在這樣的框圖和/或示例包含一個(gè)或多個(gè)功能和/或操作的范圍內(nèi),本領(lǐng)域技術(shù)人員將理解,這樣的框圖,或示例內(nèi)的每一功能和/或操作可以分別地和/或共同地通過范圍廣泛的硬件、 軟件、固件或幾乎其任何組合來實(shí)現(xiàn)。雖然已示出和描述了本文中描述的主題內(nèi)容的特定方面,但是本領(lǐng)域技術(shù)人員將明白,基于本文中的教導(dǎo),可作出改變和修改并且因此所附權(quán)利要求的范圍旨在涵蓋落在本文中描述的主題內(nèi)容的真實(shí)精神和范圍內(nèi)的所有此類改變和修改。
權(quán)利要求
1.一種計(jì)算系統(tǒng)中的用于將遠(yuǎn)程接入處理任務(wù)卸載至外圍設(shè)備(504)的方法,所述計(jì)算系統(tǒng)用于提供對(duì)終端服務(wù)器(204)或虛擬機(jī)(121)的遠(yuǎn)程接入,其中傳輸層(500)接口用于發(fā)送和接收遠(yuǎn)程接入數(shù)據(jù)單元,所述方法包括確定(140 所述外圍設(shè)備(504)包括用于實(shí)現(xiàn)一個(gè)或多個(gè)指定的遠(yuǎn)程接入操作任務(wù)的任務(wù)卸載能力;向所述外圍設(shè)備(504)發(fā)送(1404)所述外圍設(shè)備將執(zhí)行所述一個(gè)或多個(gè)操作任務(wù)的指示,包括將與后續(xù)數(shù)據(jù)單元一起使用的上下文信息;以及使得(1406)所述一個(gè)或多個(gè)遠(yuǎn)程接入操作任務(wù)由所述外圍設(shè)備(504)執(zhí)行。
2.如權(quán)利要求1所述的方法,其特征在于,所述一個(gè)或多個(gè)操作任務(wù)提供部分遠(yuǎn)程接入處理。
3.如權(quán)利要求1所述的方法,其特征在于,所述一個(gè)或多個(gè)操作任務(wù)提供完整的遠(yuǎn)程接入處理。
4.如權(quán)利要求1所述的方法,其特征在于,所述一個(gè)或多個(gè)操作任務(wù)包括位圖壓縮。
5.如權(quán)利要求1所述的方法,其特征在于,所述一個(gè)或多個(gè)操作任務(wù)包括批量壓縮。
6.如權(quán)利要求1所述的方法,其特征在于,所述一個(gè)或多個(gè)操作任務(wù)包括高速緩存。
7.如權(quán)利要求1所述的方法,其特征在于,所述操作任務(wù)根據(jù)所述計(jì)算機(jī)系統(tǒng),網(wǎng)絡(luò)連接類型和遠(yuǎn)程客戶機(jī)中的至少一個(gè)的當(dāng)前需求來被選擇性地卸載至所述外圍設(shè)備。
8.如權(quán)利要求1所述的方法,其特征在于,還包括通過在關(guān)聯(lián)于所述外圍設(shè)備的任務(wù)卸載緩沖器中設(shè)置至少一個(gè)標(biāo)記指示符啟用任務(wù)卸載能力的動(dòng)作。
9.如權(quán)利要求1所述的方法,其特征在于,所述外圍設(shè)備是網(wǎng)絡(luò)接口卡。
10.如權(quán)利要求1所述的方法,其特征在于,數(shù)據(jù)包跨分層網(wǎng)絡(luò)模型傳輸,并且其中所述數(shù)據(jù)包包括網(wǎng)絡(luò)數(shù)據(jù)和包擴(kuò)展數(shù)據(jù)。
11.如權(quán)利要求10所述的方法,其特征在于,所述數(shù)據(jù)包指示所述外圍設(shè)備將執(zhí)行一批操作任務(wù),并且其中所述包擴(kuò)展數(shù)據(jù)包括指示至少一個(gè)操作任務(wù)將由所述外圍設(shè)備執(zhí)行的至少一個(gè)數(shù)據(jù)字段。
12.一種適用于將遠(yuǎn)程接入處理任務(wù)卸載至外圍設(shè)備的系統(tǒng)(100),包括至少一個(gè)處理器(160);以及通信地耦合至所述至少一個(gè)處理器(160)的至少一個(gè)存儲(chǔ)器,所述存儲(chǔ)器中存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令,所述指令用于向外圍設(shè)備(504)發(fā)送指示所述設(shè)備將執(zhí)行遠(yuǎn)程接入?yún)f(xié)議操作任務(wù)的數(shù)據(jù)包,所述遠(yuǎn)程接入?yún)f(xié)議操作任務(wù)包括位圖壓縮、批量壓縮或高速緩存中的一個(gè);以及當(dāng)確定所述外圍設(shè)備(504)不包括用于實(shí)現(xiàn)所述遠(yuǎn)程接入?yún)f(xié)議操作任務(wù)的任務(wù)卸載能力時(shí),使得所述操作任務(wù)由所述處理器(160)執(zhí)行。
13.一種其上存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)(1700),所述指令用于將遠(yuǎn)程接入處理任務(wù)卸載至外圍設(shè)備,包括確定(1710)所述外圍設(shè)備包括用于實(shí)現(xiàn)一個(gè)或多個(gè)指定的遠(yuǎn)程接入位圖處理任務(wù)的任務(wù)卸載能力;向所述外圍設(shè)備發(fā)送(171 所述外圍設(shè)備將執(zhí)行所述操作任務(wù)中的一個(gè)的指示,包括將與后續(xù)數(shù)據(jù)單元一起使用的上下文信息;以及使得(1714)所述一個(gè)或多個(gè)遠(yuǎn)程接入操作任務(wù)由所述外圍設(shè)備執(zhí)行。
14.如權(quán)利要求13所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,所述位圖處理包括高速緩存和批量壓縮。
15.如權(quán)利要求13所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,所述任務(wù)卸載能力還包括多路復(fù)用/成幀、加密,和命令指令編碼中的一個(gè)。
全文摘要
一種用于將遠(yuǎn)程終端服務(wù)處理任務(wù)卸載至一外圍設(shè)備的方法,所述遠(yuǎn)程終端服務(wù)處理軟任務(wù)否則將在計(jì)算機(jī)系統(tǒng)的處理器和存儲(chǔ)器中執(zhí)行。在一個(gè)實(shí)施例中,分層網(wǎng)絡(luò)模型中利用所公開的方法,其中通常在網(wǎng)絡(luò)應(yīng)用程序中執(zhí)行的計(jì)算任務(wù)改為卸載至諸如網(wǎng)絡(luò)接口卡(NIC)之類的外圍設(shè)備。
文檔編號(hào)G06F13/14GK102227718SQ200980147966
公開日2011年10月26日 申請(qǐng)日期2009年10月30日 優(yōu)先權(quán)日2008年11月26日
發(fā)明者N·斯里尼瓦桑, N·阿布多, R·W·舒米德爾 申請(qǐng)人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
密云县| 周至县| 新兴县| 正宁县| 莱芜市| 边坝县| 铜梁县| 通江县| 尤溪县| 清镇市| 北辰区| 阿拉善左旗| 西华县| 贵定县| 甘孜| 通渭县| 平乐县| 新昌县| 屏东县| 胶南市| 沈丘县| 鄂温| 承德市| 海宁市| 阜宁县| 云霄县| 泉州市| 庆元县| 襄垣县| 洛南县| 京山县| 涿州市| 平远县| 客服| 沂水县| 嘉祥县| 陆河县| 盘山县| 南开区| 连南| 遵义县|