專利名稱:解析分組頭標的制作方法
背景本發(fā)明涉及解析分組頭標。
參考
圖1,服務(wù)器12通過在依據(jù)網(wǎng)絡(luò)協(xié)議的網(wǎng)絡(luò)18上傳輸信息分組8或信息幀而與客戶機10通信。例如,網(wǎng)絡(luò)協(xié)議可以是傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議(TCP/IP),因此,客戶機10和服務(wù)器12能夠分別實現(xiàn)例如象TCP/IP棧17和19這樣的協(xié)議棧。對于客戶機10(舉例),TCP/IP棧17概念性地將客戶機的軟件和硬件協(xié)議功能劃分成5個分級的層16(按分級的順序列出)應(yīng)用層16a(最高層)、傳輸層16b、網(wǎng)絡(luò)層16c、數(shù)據(jù)鏈路層16d和物理層16e(最低層)。
更具體而言,物理層16e典型包括通過產(chǎn)生和接收指示組成分組8的比特的信號(在網(wǎng)線9上)來建立與網(wǎng)絡(luò)18的物理通信的硬件(如網(wǎng)絡(luò)控制器)。物理層16e識別比特而不識別分組,因為數(shù)據(jù)鏈路層16d完成了后一功能。按照這種方式,數(shù)據(jù)鏈路層16d就傳輸目的而言通常既是軟件層也是硬件層,它能使客戶機10把要傳輸?shù)臄?shù)據(jù)打包成分組8。再例如,為了接收分組8,數(shù)據(jù)鏈路層16d可以使客戶機10通過測定入分組8是否基本符合預(yù)定格式,以及分組數(shù)據(jù)是否遵循循環(huán)冗余校驗(CRC)碼或分組的其他糾錯碼來確定入分組8的完整性。數(shù)據(jù)鏈路層16d還能實現(xiàn)地址過濾。
網(wǎng)絡(luò)層16c典型為軟件層,其負責分組8在網(wǎng)絡(luò)18上的路由。按照這種方式,網(wǎng)絡(luò)層16c典型地使客戶機10來分配和解碼互聯(lián)網(wǎng)協(xié)議(IP)地址,該地址標識了耦合于網(wǎng)絡(luò)18的實體,如客戶機10和服務(wù)器12。傳輸層16b典型為軟件層,其負責象兩端點間可靠的數(shù)據(jù)傳輸這種工作,并能使用分組8的序列化、差錯控制和一般流量控制來實現(xiàn)它。傳輸層16b可以使客戶機10實現(xiàn)例如象TCP協(xié)議或用戶數(shù)據(jù)報協(xié)議(UDP)這類特定的協(xié)議。應(yīng)用層16a典型包含在執(zhí)行時引起客戶機10產(chǎn)生和接收分組8數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用。
參考圖2,典型分組8可包含一個IP頭標20,其指示了例如象分組8的源和目的IP地址這類信息。分組8可包含一個安全頭標23,其指示分組8的安全協(xié)議(如IPSec協(xié)議)及其屬性,分組8還可包含一個具體針對所用傳輸協(xié)議的傳輸協(xié)議頭標22(如TCP或UDP協(xié)議頭標)。例如,TCP協(xié)議頭標可指出一個TCP目的端口和一個TCP源端口,它們唯一標識用于引起客戶機10和服務(wù)器12傳輸并接收分組8的應(yīng)用。分組8還可包含一個數(shù)據(jù)部分24,其內(nèi)容由源應(yīng)用提供;還可包含一個用于加密目的的尾部26。
參考圖3,例如,TCP協(xié)議頭標22a可包含一個指示TCP源端口地址的字段30和一個指示TCP目的端口地址的字段32。TCP協(xié)議頭標22a的另一個字段34可指示一個用于將收到的相關(guān)流的分組連接在一起的序號。具有相同IP地址、傳輸層端口地址和安全屬性的分組8都是同一個流的組成部分,而序號(下文所述的)則指出了某一個分組8在流中的次序。
按照這種方式,即使流的數(shù)據(jù)字節(jié)被分成流的不同分組8,該數(shù)據(jù)字節(jié)也能按順序被進行編號。為了實現(xiàn)這一點,TCP協(xié)議頭標22a的字段34可指示一個用以標識下一分組8的第一個字節(jié)號的序號。因此,如果某個分組8中最后一個數(shù)據(jù)字節(jié)具有的字節(jié)號為“1000”,那么此分組8的序號就是“1001”,由此指出流的下一個分組8的第一個字節(jié)。
TCP協(xié)議頭標22a可包含一個指示頭標22a長度的字段38、一個指示頭標22a中字節(jié)校驗和的字段44和一個指示控制與狀態(tài)標志的字段40。例如,字段40可指出分組8是某個流的第一個還是最后一個分組8。再例如,字段40能夠指出某個分組8是否攜帶了用于“握手”目的的確認信息。按照這種方式,確認分組典型地不(但可以)包含數(shù)據(jù),并且流的接收端在其收到來自發(fā)送端的預(yù)定數(shù)目分組(例如2)之后發(fā)送一個確認分組。按照這種方式,發(fā)送端對確認分組的接收表示預(yù)定數(shù)目的分組被成功發(fā)送。TCP協(xié)議頭標22a還可包含一個用以指示發(fā)送端在收到確認分組前所發(fā)送的最大字節(jié)數(shù)(被稱為“窗口”)的字段43,該確認分組至少指出其中某些字節(jié)是被成功接收的。還可能存在其他字段,如校驗和字段44和緊急指針字段42。緊急指針字段42指出從放置緊急數(shù)據(jù)的當前序號開始的偏移量。
例如,當客戶機10的處理器執(zhí)行有關(guān)傳輸層16b和網(wǎng)絡(luò)層16c的軟件時,該軟件典型引起客戶機10對協(xié)議頭標22所指示的信息進行解析以便于分組8的額外處理。不過,軟件的執(zhí)行可能會引入阻礙分組8在客戶機10和服務(wù)器12之間通信的時延。
因此不斷存在解決上述一個或多個問題的需要。
簡述在本發(fā)明的一種實施方案中,一種供計算機系統(tǒng)使用的方法包括接收含有頭標的分組。頭標指示至少一種與協(xié)議棧的層相關(guān)的特性。利用網(wǎng)絡(luò)控制器解析分組以提取該特性,并將此句柄(handle)從網(wǎng)絡(luò)控制器開始進行傳遞以指示該特性。
在另一種實施方案中,采用了一種供計算機系統(tǒng)使用的設(shè)備,該計算機系統(tǒng)能執(zhí)行協(xié)議棧軟件以提取至少一個分組特性。該設(shè)備包括一個接口和一個電路。接口適于接收分組,且分組包含一個指明特性的頭標。電路適于解析頭標以提取分組特性而不必使計算機執(zhí)行軟件,并基于提取特性處理分組。
仍根據(jù)另一種實施方案,計算機系統(tǒng)包括一個處理器和一個外圍設(shè)備。處理器適于執(zhí)行網(wǎng)絡(luò)堆棧的軟件以提取分組的至少一個特性。分組含有指明此特性的頭標。外圍設(shè)備適于接收分組并對頭標加以解析以提取特性。外圍設(shè)備還適于基于提取特性至少局部地處理分組。
圖2是圖1所示網(wǎng)絡(luò)上所傳輸?shù)姆纸M的示意圖。
圖3是關(guān)于圖2分組協(xié)議頭標的舉例說明。
圖4是依據(jù)本發(fā)明一種實施方案的計算機系統(tǒng)的示意圖。
圖5是圖4網(wǎng)絡(luò)控制器的示意圖。
圖6是對存儲于圖5網(wǎng)絡(luò)控制器存儲器中的流多元組的舉例說明。
圖7是依據(jù)本發(fā)明一種實施方案來說明分組數(shù)據(jù)傳送的示意圖。
圖8是依據(jù)現(xiàn)有技術(shù)來說明分組數(shù)據(jù)在網(wǎng)絡(luò)堆棧的層之間傳送的示意圖。
圖9是說明通過圖5網(wǎng)絡(luò)控制器的接收解析器來解析分組數(shù)據(jù)的流程圖。
圖10和12是依據(jù)本發(fā)明的一種實施方案來說明圖5網(wǎng)絡(luò)控制器的零復(fù)制解析器操作的流程圖。
圖11是說明依據(jù)本發(fā)明一種實施方案的圖5網(wǎng)絡(luò)控制器操作的狀態(tài)圖。
詳細描述參考圖4,按照本發(fā)明的一種計算機系統(tǒng)的實施方案50包含一個網(wǎng)絡(luò)控制器52(如局域網(wǎng)(LAN)控制器),其通過至少一條網(wǎng)線53與其他網(wǎng)絡(luò)計算機系統(tǒng)傳送信息分組。與傳統(tǒng)網(wǎng)絡(luò)控制器不同的是,網(wǎng)絡(luò)控制器52適合執(zhí)行那些由處理器54(如中央處理單元(CPU))典型實現(xiàn)的功能,該處理器執(zhí)行網(wǎng)絡(luò)協(xié)議棧(如TCP/IP棧)中的一個或多個軟件層(如網(wǎng)絡(luò)層和傳輸層)。例如,這些功能可包括解析入分組頭標以獲取通過軟件層的執(zhí)行而被典型提取的(分組的)特性。
這些特性可依次標識一個將接收分組數(shù)據(jù)的應(yīng)用。在這一語境下,術(shù)語“應(yīng)用”通常指的是其中一個協(xié)議層(例如層1、2、3或4)上的某個用戶。由于此標識是通過網(wǎng)絡(luò)控制器52完成的,所以網(wǎng)絡(luò)控制器52(而不是堆棧的軟件層)能直接控制分組數(shù)據(jù)向有關(guān)該應(yīng)用的某個緩沖器(在系統(tǒng)存儲器56中)的傳輸。這樣安排的結(jié)果是,網(wǎng)絡(luò)控制器52和系統(tǒng)存儲器56之間的數(shù)據(jù)傳輸可花費更少的時間并更有效地利用存儲器空間,如下文進一步所述。
參考圖5,網(wǎng)絡(luò)控制器52可包含例如象接收路徑92這種硬件來執(zhí)行處理從網(wǎng)絡(luò)接收的分組的功能。例如,接收路徑92可包含一個接收解析器98,其用來解析每個分組的頭標以提取該分組的特性,例如把某個流與該分組聯(lián)系起來的特性。由于接收路徑92可接收來自許多不同流的入分組,因此接收路徑92可以包含一個存儲器100,其存儲著被稱為流多元組140的條目。每個流多元組140唯一地標識一個將被網(wǎng)絡(luò)控制器52解析的流。如下文進一步所述,可通過處理器執(zhí)行驅(qū)動程序57來改變流多元組140所標識的流。
接收解析器98可按以下方式使用這個存儲的流多元組140。首先,接收解析器98可與存儲器100交互來對來自入分組的解析信息和流多元組140進行比較,以確定此進入流是否為流多元組140所標識的其中一個流,即接收解析器98確定是否出現(xiàn)“流多元組命中”。如果出現(xiàn)流多元組命中,接收解析器98便可以解析有關(guān)這個流的分組,并且(控制器52的)其他電路也可以基于這個被檢測的流處理分組,如下文進一步所述。
還參考圖6,每個流多元組140可含有標識某個流特性的字段。例如,在某些實施方案中,至少其中一個流多元組140能夠和例如傳輸控制協(xié)議(TCP)、用戶數(shù)據(jù)報協(xié)議(UDP)或?qū)崟r傳輸協(xié)議相關(guān)聯(lián)。流多元組140可包含一個指出互聯(lián)網(wǎng)協(xié)議(IP)目的地址(即用來接收分組的計算機系統(tǒng)地址)的字段142;一個指出IP源地址(即用來發(fā)送分組的計算機系統(tǒng)地址)的字段144;一個指出TCP目的端口(即引起分組產(chǎn)生的應(yīng)用地址)的字段146;一個指出TCP源端口(即接收分組的應(yīng)用地址)的字段148;一個指出分組的安全/認證屬性的字段150;以及一個安全參數(shù)索引(SPI)字段152,其可被計算機系統(tǒng)50用來標識一個安全的流。其他流多元組140可相關(guān)于其他網(wǎng)絡(luò)協(xié)議,例如象用戶數(shù)據(jù)報協(xié)議(UDP)。
在某些實施方案中,接收解析器98可使用流多元組140的一個子集來標識某個流。例如,在某些實施方案中,接收解析器98可以用字段142、150和152來標識流多元組命中。如下文進一步所述,字段142、144、146和148可被用來標識特殊類型的流,如零復(fù)制流。
以上對特殊網(wǎng)絡(luò)協(xié)議的參考僅是作為示例,并非想限制本發(fā)明的范圍。額外的流多元組140可被存儲在存儲器100中,而現(xiàn)有的流多元組140可通過處理器54執(zhí)行驅(qū)動程序57而被從存儲器100中刪除。在某些實施方案中,存儲器100還可存儲信息字段141。每個字段141可相關(guān)于某個流多元組140,并能指出例如(為網(wǎng)絡(luò)協(xié)議棧)對流進行標識的處理器和指向系統(tǒng)存儲器56中某個緩沖器的指針,如下文進一步所述。
如果接收解析器98識別相關(guān)于入分組的流(通過流多元組140),則接收路徑92可進一步處理該分組。在某些實施方案中,接收解析器98能夠(向網(wǎng)絡(luò)控制器52的其它電路,以及最終向網(wǎng)絡(luò)協(xié)議棧)指示對相關(guān)于某個分組的流的識別及其他所檢測的關(guān)于該分組的屬性。
如果接收解析器98未識別流,則接收路徑92通過外部元件互聯(lián)(PCI)接口130將入分組傳給計算機系統(tǒng)50的網(wǎng)絡(luò)協(xié)議棧(如TCP/IP棧)的軟件層進行處理。PCI規(guī)范可從The PCI Speical InterestGroup,Portland,Oregon 97214(PCI專業(yè)組,波特蘭,俄勒岡97214)獲得。可使用其他總線接口代替PCI接口130來將網(wǎng)絡(luò)控制器52接口到PCI總線以外的其他總線上。在某些實施方案中,計算機系統(tǒng)50可執(zhí)行一種提供至少部分協(xié)議棧的某些層(如網(wǎng)絡(luò)和傳輸層)的操作系統(tǒng)。
在某些實施方案中,即使接收解析器98識別流,在接收路徑92進一步處理入分組52之前還需要額外信息。例如,認證/加密引擎102可以基于由入分組的IP安全頭標所指示的信息對該分組的數(shù)據(jù)部分進行認證和/或解密。按照這種方式,如果IP安全頭標指出入分組的數(shù)據(jù)部分已被加密,那么引擎102可能需要密鑰來對數(shù)據(jù)部分進行解密。
為了向引擎102提供密鑰,網(wǎng)絡(luò)控制器52可包含一個密鑰存儲器104,其存儲著例如可能由不同相關(guān)的流索引的不同密鑰。額外密鑰可通過處理器執(zhí)行驅(qū)動程序57而被存儲在密鑰存儲器104中,現(xiàn)有密鑰可通過處理器執(zhí)行驅(qū)動程序57而被從密鑰存儲器104中刪除。按照這種方式,如果引擎102確定某一解密密鑰沒有存儲在密鑰存儲器104中,則該引擎102可以為該密鑰向驅(qū)動程序57(見圖4)提交一個請求(通過PCI接口130)。按照這種方式,當處理器54執(zhí)行驅(qū)動程序57時就能引起處理器54提供密鑰以響應(yīng)請求,并與PCI接口130交互以將此密鑰存入密鑰存儲器104中。在某些實施方案中,如果密鑰無法獲得(即密鑰無法通過驅(qū)動程序57獲得或者沒有存在密鑰存儲器104中),則引擎102不對分組的數(shù)據(jù)部分進行解密。作為替換,PCI接口130將加密的數(shù)據(jù)存在系統(tǒng)存儲器56的預(yù)定位置上(見圖4),以便協(xié)議棧中的一層或多層軟件能被執(zhí)行用來解密入分組的數(shù)據(jù)部分。
解析完以后,網(wǎng)絡(luò)控制器52對分組的處理可包括旁路執(zhí)行與網(wǎng)絡(luò)協(xié)議棧相關(guān)的一個或多個軟件層。例如,接收路徑92可包含一個零復(fù)制解析器110,其通過PCI接口130能夠?qū)⒂嘘P(guān)分組的數(shù)據(jù)復(fù)制到與應(yīng)用層相關(guān)的存儲緩沖器304中(見圖7)。按照這種方式,一個應(yīng)用可以有一個或多個用于接收分組數(shù)據(jù)的相關(guān)緩沖器。操作系統(tǒng)在虛擬地址空間中產(chǎn)生和維護緩沖器304,并且操作系統(tǒng)為每個緩沖器304保留了多個4千字節(jié)(KB)的物理頁面。操作系統(tǒng)還將每個緩沖器304與某個應(yīng)用聯(lián)系起來,以便該應(yīng)用能夠使用存在緩沖器304中的數(shù)據(jù)。
如下文所述,為實現(xiàn)分組數(shù)據(jù)從網(wǎng)絡(luò)控制器52向緩沖器304的直接傳輸,操作系統(tǒng)使得處理器54(向網(wǎng)絡(luò)控制器52)提供一個指向其中某一緩沖器304的指針。被指示的緩沖器304可以是應(yīng)用為其專用而分配的緩沖器,或者是由操作系統(tǒng)傳給網(wǎng)絡(luò)控制器52用來和其中一個預(yù)定的、將被提供零復(fù)制服務(wù)的流聯(lián)系起來的緩沖器。在后一種情況下,操作系統(tǒng)隨后將緩沖器重新映射成應(yīng)用的虛擬地址空間。零復(fù)制解析器110利用這種流句柄將幀與零復(fù)制緩沖器聯(lián)系起來,并將數(shù)據(jù)直接復(fù)制到那個緩沖器中。上述關(guān)于將數(shù)據(jù)傳至緩沖器304的安排可與利用中間緩沖器(相關(guān)于數(shù)據(jù)鏈路和/或傳輸層的)來從網(wǎng)絡(luò)控制器向應(yīng)用層緩沖器傳送分組數(shù)據(jù)的傳統(tǒng)安排相對照,正如下文所述的。
參考圖8,例如,典型網(wǎng)絡(luò)控制器300不直接將分組數(shù)據(jù)傳至緩沖器304,因為典型網(wǎng)絡(luò)控制器300不對入分組進行解析以獲取標識流或目的應(yīng)用的信息。作為替換,典型網(wǎng)絡(luò)控制器300將分組的數(shù)據(jù)部分傳給與數(shù)據(jù)鏈路層相關(guān)的分組緩沖器302。與緩沖器304相比,每個緩沖器302可具有近似(例如)1518字節(jié)的大小范圍,也就是近似某個分組數(shù)據(jù)的大小范圍。接下來,傳輸層的執(zhí)行(由處理器54進行)將數(shù)據(jù)與適當?shù)膽?yīng)用聯(lián)系起來,并使數(shù)據(jù)從緩沖器302被傳到緩沖器304。
回過來參考圖7,與上述傳統(tǒng)安排相比,網(wǎng)絡(luò)控制器52可使用零復(fù)制解析器110來旁路緩沖器302,并將分組的數(shù)據(jù)部分直接復(fù)制到適當?shù)木彌_器304中。要實現(xiàn)這一點,零復(fù)制解析器110(見圖5)可以接收來自上述從頭標提取TCP目的端口信息的接收解析器98的、一個關(guān)于(例如)TCP目的端口的指示。TCP(或其他層4協(xié)議,如RTP)目的端口唯一地標識了將要接收數(shù)據(jù)的應(yīng)用,并因此為分組數(shù)據(jù)標識了適當?shù)木彌_器304。除了向緩沖器304傳送數(shù)據(jù)部分以外,零復(fù)制解析器110能夠處理網(wǎng)絡(luò)控制器52和協(xié)議棧之間的控制問題,并能處理入分組丟失的情況,如下所述。
零復(fù)制解析器可以使用流語境存儲器112來存儲流語境字段113,該字段指出了某個將在其中執(zhí)行零復(fù)制的流。每個語境字段113可以和一個信息字段115(也存儲在流語境存儲器112中)聯(lián)系起來,該字段指示了例如有關(guān)由流語境字段113指出的各種流的句柄以及其他信息,例如象地址信息。
參考圖5,除上述組件以外,接收路徑92還可包含一個或多個先入先出(FIFO)存儲器106來臨時存儲通過接收路徑92的入分組。校驗和引擎108(屬于接收路徑92)可耦合于FIFO存儲器106和PCI接口130之間以驗證含在分組中的校驗和。
可通過PCI接口130將接收路徑92接口到PCI總線72上。PCI接口130可包含一個模擬的直接存儲器存取(DMA)引擎131,其目的是用來將分組的數(shù)據(jù)部分直接傳至緩沖器304或302(當未使用零復(fù)制時)。按照這種方式,零復(fù)制解析器110可用由DMA引擎131模擬的預(yù)定數(shù)目(例如16)的DMA通道之一將數(shù)據(jù)傳到適當?shù)木彌_器304中。在某些實施方案中,每個通道都可能相關(guān)于某個特定的緩沖器304。然而在某些實施方案中,當協(xié)議棧(而不是零復(fù)制解析器110)被用于傳送分組的數(shù)據(jù)部分時,DMA引擎131可使用較小數(shù)目的通道(例如1)來進行這些傳輸。
在某些實施方案中,接收路徑92可包含額外電路,如串行到并行轉(zhuǎn)換電路96,當從網(wǎng)線53收到分組時,其可以接收來自網(wǎng)絡(luò)接口90的串行比特流。按照這種方式,轉(zhuǎn)換電路96將比特組成字節(jié)并將這些字節(jié)提供給接收解析器98。網(wǎng)絡(luò)接口90可被耦合用來產(chǎn)生并接收去往/來自網(wǎng)線53的信號。
除了接收路徑92以外,網(wǎng)絡(luò)控制器52可包含其他的例如象傳輸路徑94這樣的硬件電路來向網(wǎng)絡(luò)發(fā)送外出分組。在傳輸路徑94中,網(wǎng)絡(luò)控制器52可包含一個傳輸解析器114,其被耦合到PCI接口130上用來接收來自計算機系統(tǒng)50的出分組數(shù)據(jù)并形成分組上的頭標。為了實現(xiàn)這一點,在某些實施方案中,傳輸解析器114在頭標存儲器116中存儲著預(yù)定流的頭標。由于某個流的頭標可能指示相當多數(shù)量的相同信息(如端口和IP地址),因此傳輸解析器114可為每個出分組略加修改所存儲的頭標,并將修改后的頭標組裝到出分組中。例如,傳輸解析器114可以從頭標存儲器116中取回屬于某個流的頭標,然后對頭標進行解析以便將(例如)序號和確認號這樣的信息添加到出分組的頭標中。校驗和引擎120可以為出分組的IP和網(wǎng)絡(luò)頭標計算校驗和并將此校驗和加到分組中。
傳輸路徑94還可包含一個認證與加密引擎126,其可以對出分組的數(shù)據(jù)進行加密和/或認證。按照這種方式,通過相關(guān)于某個流的密鑰可以對該流的所有分組進行加密和/或認證,不同流的密鑰可存儲在密鑰存儲器124中。在某些實施方案中,新的密鑰添加到密鑰存儲器124中,而現(xiàn)有密鑰則可借助于控制分組字段,利用通過傳輸路徑94傳送的信息被修改或刪除。傳輸路徑94還可包含一個或多個FIFO存儲器122用以同步通過傳輸路徑94的分組流。為了對出分組數(shù)據(jù)進行串行傳輸,可以將并行到串行轉(zhuǎn)換電路128耦合到FIFO存儲器122上以取回準備要傳輸?shù)姆纸M。一旦被串行化,電路128便可將數(shù)據(jù)傳給網(wǎng)絡(luò)接口90以便經(jīng)網(wǎng)線53進行傳輸。
在某些實施方案中,接收解析器98和零復(fù)制解析器110例如可包含一個或多個狀態(tài)機、計數(shù)器和定時器來為每個入分組執(zhí)行下列功能。在下文中,假設(shè)所描述的某個流是一個零復(fù)制流。不過在某些實施方案中,該流可以是也可以不是零復(fù)制流。參考圖9,接收解析器98能夠解析(方塊200)每個入分組的頭標。根據(jù)所解析的信息,接收解析器98能夠確定此分組是否需要認證或解密,如菱形塊201中所示。
如果需要認證或加密,那么接收解析器98可利用關(guān)于頭標的解析信息來確定(菱形塊216)是否出現(xiàn)了流多元組命中。如果沒有發(fā)生,接收解析器98將控制傳給完成分組結(jié)尾校驗的零復(fù)制解析器110,如方塊202中所述。否則,接收解析器98確定密鑰存儲器104中的相關(guān)密鑰是否可用,如菱形塊220所述。如果該密鑰可用,則接收解析器98在向可執(zhí)行分組零復(fù)制(如方塊202中所示)的零復(fù)制解析器110傳遞控制之前便可開始進行如方塊218中所示的分組認證和/或解密。如果密鑰不可用,則接收解析器98可將控制傳給零復(fù)制解析器110以執(zhí)行零復(fù)制操作,如方塊202中所示。
執(zhí)行完零復(fù)制操作(方塊202)以后,零復(fù)制解析器110可執(zhí)行分組結(jié)尾校驗,如方塊204所示。在這些校驗中,接收解析器98可執(zhí)行與數(shù)據(jù)鏈路層典型相關(guān)的校驗。例如,接收解析器98能夠保證分組指示正確的以太網(wǎng)MAC地址、無循環(huán)冗余校驗(CRC)錯誤發(fā)生、無接收狀態(tài)錯誤(如沖突、超速、最小/最大幀長錯誤)發(fā)生,并且?guī)L大于最小字節(jié)數(shù)(如64)。接收解析器98可執(zhí)行與網(wǎng)絡(luò)層典型相關(guān)的校驗。例如,接收解析器98能夠校驗IP分組頭標的大小、計算IP頭標的校驗和、確定所計算的IP頭標的校驗和是否與IP頭標所指示的校驗和一致、確保分組指示正確的IP目的地址并確定此IP是否指明了所識別的網(wǎng)絡(luò)協(xié)議(如TCP或UDP協(xié)議)。接收解析器98還可執(zhí)行與通過處理器執(zhí)行軟件所實現(xiàn)的有關(guān)傳輸層的功能典型相關(guān)的校驗。例如,接收解析器98能夠確定協(xié)議頭標的大小是否在預(yù)先規(guī)定的范圍之內(nèi),能夠計算協(xié)議頭標的校驗和,并且能夠決定是否設(shè)置被稱為ACK、URG、PSH、RST、FIN的標記和/或SYN標記。如果設(shè)置了PSH標記,則接收解析器98可將此事件指示給驅(qū)動程序。如果設(shè)置了RST、FIN或SYN標記,則接收解析器98可以將控制交給傳輸層。如果是發(fā)出ACK標記,則接收解析器98可與驅(qū)動程序57或傳輸路徑94交互來傳輸確認分組,如下文進一步所述。
完成校驗以后,零復(fù)制解析器110便能夠確定(菱形塊205)數(shù)據(jù)鏈路層是否發(fā)生了可導致分組不能用的錯誤。如果是這種情況,則零復(fù)制解析器110可以收回(方塊205)驅(qū)動程序為分組分配的存儲器,收回(方塊207)為分組的零復(fù)制分配的存儲器,并重新設(shè)置(方塊209)與該分組有關(guān)的DMA通道(由DMA引擎131模擬的)。否則,零復(fù)制解析器110將為該協(xié)議棧來編輯一個錯誤統(tǒng)計堆棧。
參考圖10,零復(fù)制解析器110可執(zhí)行下列功能來執(zhí)行零復(fù)制操作。首先,零復(fù)制解析器110可以確定存儲數(shù)據(jù)的存儲器地址,如下文進一步所述。然后,零復(fù)制解析器110可以確定(菱形決258)分組是否丟失,若是,則零復(fù)制解析器110為丟失的分組保留(菱形塊260)存儲器空間。隨后,零復(fù)制解析器110執(zhí)行(方塊262)零復(fù)制操作將分組復(fù)制到存儲器56中。
其次,零復(fù)制解析器110可更新對該流的接收分組計數(shù)(方塊264)。然后零復(fù)制解析器110根據(jù)流中被接收的分組數(shù)決定是否到了向分組發(fā)送端回傳確認分組的時間(菱形塊266)。按照這種方式,如果該計數(shù)超過了預(yù)定的數(shù)目,則接收解析器98可以(依賴于某種實施方案)通知(方塊268)驅(qū)動程序57(見圖4)或通知(方塊270)傳輸解析器114需要傳輸一個確認分組。因此,在后一種情況中,由于不需要來自應(yīng)用層中數(shù)據(jù)部分的數(shù)據(jù),所以傳輸解析器114適于產(chǎn)生確認分組。接收解析器98從方塊268或270遷移至菱形塊200(見圖9)以檢驗另一個接收的分組。在確認分組被傳輸之后,接收解析器98可以將對于該流的已接收分組計數(shù)清零。
圖11說明了接收路徑92的按每個流的狀態(tài)圖,該圖說明以同步方式進行的從堆棧到網(wǎng)絡(luò)控制器52的控制傳遞。在網(wǎng)絡(luò)協(xié)議棧相關(guān)的軟件掌控對分組進行的解析和處理時,接收路徑92處于空閑狀態(tài)。不過,在某些實施方案中,盡管傳輸層能夠通過處理器54執(zhí)行對分組進行最初處理,但隨后處理的控制可被傳遞給網(wǎng)絡(luò)控制器52。按照這種方式,通過驅(qū)動程序57的執(zhí)行,處理器54可與PCI接口130交互用以將接收路徑92置于監(jiān)視狀態(tài)。
在監(jiān)視狀態(tài)下,接收解析器98檢驗與預(yù)定流相關(guān)的入分組的完整性(如流多元組140所示)并如上所述,指示檢驗結(jié)果。對于每個需要監(jiān)視的預(yù)定流,存儲器100可以存儲一個有關(guān)這個流的信息字段141。例如,信息141能夠指出向該網(wǎng)絡(luò)堆棧指示某流的句柄、TCP序列號(例如)和到適當?shù)木W(wǎng)絡(luò)層緩沖器302的指針(當未使用零復(fù)制時)。如果接收解析器98需要到另一緩沖器302的指針,那么接收解析器98可通知驅(qū)動程序57(處于獲取下一個緩沖器1狀態(tài)),該驅(qū)動程序進而提供到下一個緩沖器302的指針,作為響應(yīng),接收解析器98可以更新相關(guān)字段141。獲取下一個緩沖器1狀態(tài)與緩沖器304有關(guān),且被用于當使用零復(fù)制時的情況。這種狀態(tài)機和這種特殊的狀態(tài)遷移在某些實施方案中不能使用。堆棧還可以告訴網(wǎng)絡(luò)控制器52從序號X或大于X和從相應(yīng)于該X的存儲器地址Y開始進行零復(fù)制,從而取消了此同步過程。
如果零復(fù)制解析器98(通過使用流語境指示113)檢測到來自某個流的分組將要進行零復(fù)制,網(wǎng)絡(luò)控制器52則遷移到零復(fù)制狀態(tài)。在零復(fù)制狀態(tài)下,零復(fù)制解析器98利用與每個零復(fù)制流相關(guān)的信息字段115來標識信息,例如傳給網(wǎng)絡(luò)堆棧的句柄(用于標識流)和到適當?shù)膽?yīng)用緩沖器304的指針。如果需要到另一緩沖器304的指針,那么零復(fù)制解析器98從驅(qū)動程序57那里請求另一個指針。作為響應(yīng),驅(qū)動程序57(處于獲取下一個緩沖器2狀態(tài))將指針的表示傳給網(wǎng)絡(luò)控制器52以便為零復(fù)制解析器110所用。在其他實施方案中,應(yīng)用或堆棧的職責是為零復(fù)制流提供足夠的緩沖器。在某些實施方案中,倘若網(wǎng)絡(luò)控制器52用盡緩沖器,那么網(wǎng)絡(luò)控制器52使用基于軟件的接收程序。零復(fù)制解析器110作為響應(yīng)可以更新信息字段115。
在某些實施方案中,驅(qū)動程序57能夠引起處理器54退出監(jiān)視狀態(tài)或零復(fù)制狀態(tài)而返回到空閑狀態(tài)。驅(qū)動程序57能夠引起處理器54與PCI接口131交互以向/從存儲器112中添加/刪除某個流語境指示113,還能使處理器54向/從流存儲器100中添加/刪除某個流多元組140。
參考圖12,在執(zhí)行零復(fù)制操作過程中,零復(fù)制解析器可執(zhí)行下列功能將分組數(shù)據(jù)直接傳送給緩沖器304。首先,零復(fù)制解析器110能夠確定是否需要在零復(fù)制解析器110和與網(wǎng)絡(luò)協(xié)議棧的層(如數(shù)據(jù)鏈路層和傳輸層)相關(guān)的軟件執(zhí)行之間同步傳輸控制。在這種語境中,術(shù)語“同步”通常是指為了確定其中一個實體(堆?;蛄銖?fù)制解析器110)從另一個實體取回控制并開始將數(shù)據(jù)傳至緩沖器304處的一個遷移點而在堆棧和零復(fù)制解析器110之間進行的通信。不進行同步就不能檢測到丟失的分組。因此,當控制從堆棧傳到解析器110時(反之亦然),可能需要發(fā)生同步,如方塊254所述。
因此,一種可能需要同步的情況是在零復(fù)制解析器110最初接管直接將數(shù)據(jù)部分傳至緩沖器304功能的時候。按照這種方式,如果零復(fù)制解析器110確定(菱形塊250)當前分組是零復(fù)制解析器110處理的第一個分組,則解析器110對分組存儲進行同步,如方塊254所述。否則,零復(fù)制解析器110將確定(菱形塊252)是否有錯誤發(fā)生,如下所述。例如,為了確定遷移發(fā)生的時間,零復(fù)制解析器110可不斷監(jiān)視由驅(qū)動程序57有選擇地設(shè)置的比特的狀態(tài)。另一種需要同步的情況是在零復(fù)制解析器110將分組數(shù)據(jù)復(fù)制到緩沖器304時有錯誤發(fā)生的時候。例如,由于這個錯誤,堆??稍诹銖?fù)制解析器110收回控制前臨時恢復(fù)對傳輸?shù)目刂?。因此,如果零?fù)制解析器110確定(菱形塊252)有錯誤發(fā)生,則零復(fù)制解析器110可遷移到方塊254。
同步可以以多種方式發(fā)生。例如,零復(fù)制解析器110可將預(yù)定的代碼插入到某個分組狀態(tài)信息內(nèi),用以向堆棧指明由零復(fù)制解析器110處理后續(xù)分組的傳輸。堆??梢酝瓿赏瑯拥牟僮?。
某個流的入分組有時可被無順序地接收。這可能會產(chǎn)生問題,因為零復(fù)制解析器110能夠?qū)碜皂樞蚍纸M的數(shù)據(jù)一個接一個地存入某個緩沖器304中。例如,分組號“267”可能在分組號“266”之前被接收,如果分組號“267”的數(shù)據(jù)在分組號“265”的數(shù)據(jù)之后被立即存儲,這就可能會引起問題。為了避免這種情況發(fā)生,在某些實施方案中,零復(fù)制解析器110可以在某個緩沖器304中為丟失的分組數(shù)據(jù)保留一塊區(qū)域308(見圖7),如方塊260所示(見圖11)。為了確定丟失分組的大小(由此確定要保留的存儲器空間的量),零復(fù)制解析器110可以使用由序列中相鄰分組所指明的序號。按照這種方式,該序號指出下一個連續(xù)分組的字節(jié)號。因此,對于上述實例,分組號“265”和“267”所指示的確認號可被用來確定區(qū)域308的邊界。
零復(fù)制解析器110隨后與PCI接口130交互來建立適當?shù)腄MA通道,以執(zhí)行分組數(shù)據(jù)到適當緩沖器304的零復(fù)制(步驟262)。零復(fù)制解析器110通過接收解析器98提供的目的端口來確定適當?shù)木彌_器304。
回過來參考圖4,除網(wǎng)絡(luò)控制器52以外,計算機系統(tǒng)50可包含一個耦合于主機總線58的處理器54。在這個語境中,術(shù)語“處理器”例如通??梢员硎疽粋€或多個中央處理單元(CPU)、微控制器或微處理器(如X86微處理器、奔騰微處理器或高級RISC控制器(ARM))。此外,短語“計算機系統(tǒng)”可以表示任何類型的基于處理器的系統(tǒng),例如該系統(tǒng)可包括臺式計算機、膝上型計算機、儀表或機頂盒。因此,本發(fā)明并不受限于所描述的計算機系統(tǒng)50,而是計算機系統(tǒng)50只是本發(fā)明眾多實施方案中其中一種主機總線58可通過橋或存儲集線器60耦合到加速圖形端口(AGP)總線62上。在Accelerated Graphics Port InterfaceSpecification,Revision 1.0,published in July 31,1996,by IntelCorporation of Santa Clara,California(加速圖形端口接口規(guī)范,版本1.0,1996年7月31日出版,英特爾公司,Santa Clara,加利福尼亞)中對AGP作了詳細描述。例如,AGP總線62可被耦合到控制指示器65的視頻控制器64上。存儲集線器60還可將AGP總線62和主機總線58耦合到存儲總線61上。存儲總線61又可被耦合到系統(tǒng)存儲器56上,該系統(tǒng)存儲器例如可存儲緩沖器304和驅(qū)動程序57的一個副本。
存儲集線器60還可被耦合到(通過集線器鏈路66)另一個橋,或者說是輸入/輸出(I/O)集線器68上,該集線器68耦合于I/O擴展總線70和PCI總線72。I/O集線器68還可耦合到如CD-ROM驅(qū)動器82和硬盤驅(qū)動器84。例如,I/O擴展總線70可耦合到I/O控制器74上,該控制器控制著軟盤驅(qū)動器76的操作并接收來自鍵盤78和鼠標80的輸入數(shù)據(jù)。
其他實施方案也在下列權(quán)利要求的范圍之內(nèi)。例如,除網(wǎng)絡(luò)控制器以外的外圍設(shè)備也能實現(xiàn)上述技術(shù)。還可以使用其他的網(wǎng)絡(luò)協(xié)議和其他協(xié)議棧。
盡管本發(fā)明只相對有限數(shù)量的實施方案公開,但本領(lǐng)域中那些得益于本公開內(nèi)容的技術(shù)人員將會理解還存在大量的改進方案和由此而改變的方案。希望附加的權(quán)利要求能覆蓋在本發(fā)明的精神與范圍之內(nèi)的所有改進和變化。
權(quán)利要求
1.一種供計算機系統(tǒng)使用的方法,包括接收含有頭標的分組,該頭標表明了與協(xié)議棧的層相關(guān)的至少一種特性;使用網(wǎng)絡(luò)控制器解析分組以提取上述至少一個特性;以及傳遞來自網(wǎng)絡(luò)控制器的一個句柄以指示上述至少一個特性。
2.權(quán)利要求1的方法,其中傳遞過程包括向協(xié)議棧的另一個層傳遞該句柄。
3.權(quán)利要求1的方法,其中所述的至少一個特性包括相關(guān)于某個應(yīng)用程序的端口號。
4.權(quán)利要求1的方法,其中該層包括數(shù)據(jù)鏈路層。
5.權(quán)利要求1的方法,其中所述的至少一個特性包括分組類型。
6.權(quán)利要求1的方法,其中該句柄將分組和流聯(lián)系起來。
7.權(quán)利要求1的方法,進一步包括根據(jù)上述至少一個特性有選擇地傳輸確認分組。
8.權(quán)利要求1的方法,進一步包括根據(jù)上述至少一個特性把與分組有關(guān)的數(shù)據(jù)存入應(yīng)用執(zhí)行所使用的存儲器區(qū)域中。
9.權(quán)利要求1的方法,其中該層包括傳輸層。
10.權(quán)利要求1的方法,其中接收動作包括接收來自網(wǎng)絡(luò)的分組。
11.權(quán)利要求1的方法,進一步包括判定對于該分組某個安全密鑰是否可用;以及根據(jù)此判定處理分組。
12.權(quán)利要求11的方法,其中處理動作包括解密分組數(shù)據(jù)。
13.權(quán)利要求11的方法,其中處理動作包括加密分組數(shù)據(jù)。
14.權(quán)利要求11的方法,進一步包括使用上述至少一個特性來檢驗該分組的完整性。
15.一種供計算機系統(tǒng)使用的設(shè)備,該計算機系統(tǒng)能執(zhí)行協(xié)議棧軟件以提取分組的至少一個特性,該設(shè)備包括一個適于接收分組的接口,該分組含有一個指示上述至少一個特性的頭標;以及一個電路,其適于解析頭標以提取該分組的上述至少一個特性而不引起計算機系統(tǒng)執(zhí)行軟件,以及根據(jù)提取的特性處理分組。
16.權(quán)利要求15的設(shè)備,其中所述的至少一個特性包括相關(guān)于某個應(yīng)用程序的端口號。
17.權(quán)利要求15的設(shè)備,其中所述的至少一個特性包括相關(guān)于該分組的安全屬性。
18.權(quán)利要求15的設(shè)備,其中所述的至少一個特性包括分組類型。
19.權(quán)利要求15的設(shè)備,其中電路還進一步適于使用上述至少一個特性來將分組和流聯(lián)系起來。
20.權(quán)利要求15的設(shè)備,其中電路還進一步適于判定對于該分組某個安全密鑰是否可用;以及進一步根據(jù)此判定處理分組。
全文摘要
接收含有頭標的分組(140)。頭標指示至少一個與協(xié)議棧的層相關(guān)的特性。利用網(wǎng)絡(luò)控制器(52)解析分組以提取該特性,并由網(wǎng)絡(luò)控制器(52)將一個句柄傳給該協(xié)議棧以指示特性。計算機系統(tǒng)(50)能夠執(zhí)行協(xié)議棧軟件來提取分組特性,且設(shè)備(50)可包含接口(90)和電路(98)。接口(90)能適于接收分組,電路(98)能適于解析頭標來提取特性而不必引起計算機(50)執(zhí)行軟件,并基于提取特性處理分組。
文檔編號H04L12/56GK1377548SQ00813564
公開日2002年10月30日 申請日期2000年6月16日 優(yōu)先權(quán)日1999年7月30日
發(fā)明者U·埃祖爾 申請人:英特爾公司