專利名稱:用于高速傳輸網(wǎng)際網(wǎng)絡(luò)協(xié)議安全(ipsec)處理之兩個(gè)并行引擎的制作方法
技術(shù)領(lǐng)域:
本發(fā)明大體上系關(guān)于計(jì)算機(jī)裝置之領(lǐng)域,而尤系關(guān)于接口連接主裝置或系統(tǒng)與網(wǎng)絡(luò)之方法和系統(tǒng)。
背景技術(shù):
譬如個(gè)人計(jì)算機(jī)之主計(jì)算系統(tǒng),在通訊網(wǎng)路上時(shí)常操作為節(jié)點(diǎn),而各節(jié)點(diǎn)能夠從網(wǎng)絡(luò)上接收數(shù)據(jù)和發(fā)送數(shù)據(jù)至網(wǎng)絡(luò)。數(shù)據(jù)經(jīng)由網(wǎng)絡(luò)以群組(group)或分段(segment)之方式傳送,其中數(shù)據(jù)之結(jié)構(gòu)和分段系由網(wǎng)絡(luò)操作系統(tǒng)協(xié)議所支配,并存在有許多不同之協(xié)議。事實(shí)上,對(duì)應(yīng)于不同協(xié)議之?dāng)?shù)據(jù)分段能夠共同存在于相同之通訊網(wǎng)路。為了使節(jié)點(diǎn)接收和發(fā)送信息封包,節(jié)點(diǎn)裝備了負(fù)責(zé)傳送信息于通訊網(wǎng)路和主系統(tǒng)之間之周邊網(wǎng)絡(luò)接口裝置。為了傳輸,于主系統(tǒng)中的處理器單元依照網(wǎng)絡(luò)操作系統(tǒng)協(xié)議而構(gòu)成數(shù)據(jù)或信息封包,并將該等數(shù)據(jù)或信息封包傳送至網(wǎng)絡(luò)周邊裝置。于接收時(shí),處理器單元擷取并譯碼由該網(wǎng)絡(luò)周邊裝置所接收之封包。處理器單元反應(yīng)于從關(guān)聯(lián)于網(wǎng)絡(luò)周邊裝置之中斷服務(wù)例程(interrupt service routine)來之指令,而執(zhí)行許多其發(fā)送和接收功能。當(dāng)接收之封包需要作處理時(shí),可由該網(wǎng)絡(luò)接口設(shè)備發(fā)出中斷指令至該主系統(tǒng)。習(xí)用上在封包中之所有的字節(jié)或于封包中之一些固定數(shù)目之字節(jié)由網(wǎng)絡(luò)周邊裝置所接收后,會(huì)發(fā)出中斷指令。
網(wǎng)絡(luò)一般操作為一系列或堆棧之各層,而各層提供服務(wù)于正上方之層??赡苡性S多不同網(wǎng)絡(luò)層之架構(gòu),而對(duì)于不同之網(wǎng)絡(luò),層數(shù)、各層之功能和內(nèi)容可能不同。國(guó)際標(biāo)準(zhǔn)組織(ISO)已發(fā)展出一種開放系統(tǒng)互連(OSI)模式,定義7層協(xié)議堆棧,包括應(yīng)用層(例如,第7層)、表達(dá)層、對(duì)話層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層、以及實(shí)體層(例如,第1層),其中在通訊站中,由應(yīng)用層開始將控制從一層傳遞至下一層,進(jìn)行至底部層,經(jīng)過頻道至次一個(gè)通訊站,并備份(back up)此階層(hierarchy)。主系統(tǒng)之用戶通常與執(zhí)行于最上層(例如,應(yīng)用層)之軟件程序互動(dòng),并且該等訊號(hào)由最下層(例如,實(shí)體層)送至網(wǎng)絡(luò)另一邊。
TCP/IP堆棧為一種受歡迎的網(wǎng)絡(luò)架構(gòu),其中應(yīng)用層為檔案?jìng)鬏攨f(xié)議(FTP)、超文件傳輸協(xié)議(hyper text transfer protocol;HTTP)、或安全殼(secure shell;SSH)其中之一。于該等網(wǎng)絡(luò)中,典型之傳輸層協(xié)議為傳輸控制協(xié)議(TCP)或用戶數(shù)據(jù)報(bào)協(xié)議(user datagram protocol;UDP),而網(wǎng)絡(luò)層使用譬如網(wǎng)際網(wǎng)絡(luò)協(xié)議(IP)、地址解析協(xié)議(addressresolution protocol;ARP)、反轉(zhuǎn)地址解析協(xié)議(RARP)、或網(wǎng)際網(wǎng)絡(luò)控制訊息協(xié)議(internet control message protocol;ICMP)之各協(xié)議。數(shù)據(jù)鏈路層通常分成二個(gè)次層,包括媒體存取控制(MAC)次層,用來控制于網(wǎng)絡(luò)中之計(jì)算機(jī)如何獲得數(shù)據(jù)之存取并允許發(fā)送該數(shù)據(jù);以及邏輯鏈接控制(LLC)次層,用來控制訊框同步(frame synchronization)、數(shù)據(jù)流控制、和錯(cuò)誤檢核。實(shí)體層傳送如電脈沖、光訊號(hào)、和/或射頻訊號(hào)之比特流之?dāng)?shù)據(jù)經(jīng)過網(wǎng)絡(luò)于實(shí)體(例如電和機(jī)械)級(jí)。實(shí)體層執(zhí)行以太網(wǎng)、RS232、異步傳輸模式(ATM)、或其它具有實(shí)體層組件之協(xié)議,其中以太網(wǎng)為由IEEE 802.3所界定之受歡迎的局域網(wǎng)絡(luò)(LAN)。
于網(wǎng)絡(luò)協(xié)議堆棧中之一層或多層時(shí)常提供用于誤差偵測(cè)之工具,包括核對(duì)和(checksumming),其中傳送的訊息包括典型依照訊息中設(shè)定位(set bit)之?dāng)?shù)目來計(jì)算而得出以數(shù)字表示的核對(duì)和之值。接收網(wǎng)絡(luò)節(jié)點(diǎn)藉由使用與發(fā)送器相同之算法來計(jì)算核對(duì)和并將所得結(jié)果與接收訊息中之核對(duì)和數(shù)據(jù)相比較而驗(yàn)證核對(duì)和之值。若為不相同之值,則接收器能夠假定于傳輸過網(wǎng)絡(luò)期間已發(fā)生錯(cuò)誤。于一個(gè)例子中,TCP和IP層(例如,分別為第4層和第3層)典型使用核對(duì)和于網(wǎng)絡(luò)應(yīng)用中之錯(cuò)誤偵測(cè)。
于網(wǎng)絡(luò)協(xié)議堆棧中亦可將數(shù)據(jù)劃分或分段于一層或多層。例如,TCP協(xié)議提供將從應(yīng)用層所接收之?dāng)?shù)據(jù)劃分成該等分段,其中標(biāo)頭(header)附加至各分段。分段標(biāo)頭包含發(fā)送器(sender)和接收埠(recipient ports)、分段排序信息、以及核對(duì)和。例如,使用分段,其中下層(lower layer)限制數(shù)據(jù)訊息要小于從上層(upper layer)來的訊息大小。于一個(gè)實(shí)施例中,TCP訊框可以是64千字節(jié)(kbytes)大小,反之以太網(wǎng)絡(luò)(Ethernet)于實(shí)體層僅可允許更小之訊框。于此情況,TCP層可將大的TCP訊框分段成較小之分段訊框,以適應(yīng)以太網(wǎng)絡(luò)之大小限制。
一個(gè)或多個(gè)網(wǎng)絡(luò)協(xié)議層可使用譬如加密(encryption)和鑒別(authentication)之安全機(jī)制,以防止未授權(quán)之系統(tǒng)或使用者讀取數(shù)據(jù),和/或確定數(shù)據(jù)是從所期望之來源來。例如,已采用于IP層(例如,OSI模式之第3層)之IP安全(IPsec)標(biāo)準(zhǔn)以促進(jìn)數(shù)據(jù)之安全交換,該IPsec已廣泛使用來執(zhí)行虛擬私人網(wǎng)絡(luò)(VPN)。IPsec支持二個(gè)操作模式,包括傳輸模式(transport mode)和信道模式(tunnel mode)。于傳輸模式,發(fā)送器加密IP訊息之?dāng)?shù)據(jù)酬載部分,而不加密IP標(biāo)頭,反之于信道模式,加密標(biāo)頭和酬載。于接收器系統(tǒng),于IP層解密訊息,其中發(fā)送器和接收器系統(tǒng)經(jīng)由安全關(guān)聯(lián)(security association;SA)而共享公開密碼鑰匙(public key)。密碼鑰匙之共享一般經(jīng)由網(wǎng)際網(wǎng)絡(luò)安全關(guān)聯(lián)和密碼鑰匙管理協(xié)議(ISAKMP)而完成,該ISAKMP允許接收器獲得公開密碼鑰匙,并使用數(shù)字認(rèn)證(digital certificate)確認(rèn)發(fā)送器。
于傳統(tǒng)網(wǎng)絡(luò),上和中層之任務(wù)執(zhí)行于主系統(tǒng)軟件。當(dāng)于主計(jì)算機(jī)中之應(yīng)用軟件程序需要轉(zhuǎn)移數(shù)據(jù)至網(wǎng)絡(luò)上之另一裝置時(shí),該應(yīng)用傳送如封包之?dāng)?shù)據(jù)至主操作系統(tǒng)(OS)之TCP層軟件。該TCP層軟件創(chuàng)造包括數(shù)據(jù)包和TCP標(biāo)頭之TCP訊框,并亦實(shí)施任何所需之TCP分段和產(chǎn)生核對(duì)和。然后主IP層軟件創(chuàng)造IP標(biāo)頭和標(biāo)尾(trailer)、以及以太網(wǎng)(MAC)標(biāo)頭,并執(zhí)行任何選擇之IPsec安全處理。所得到的IP訊框然后提供至網(wǎng)絡(luò)接口以傳送至網(wǎng)絡(luò)。于接收器主機(jī),接收之訊框然后藉由于接收器主CPU中之IP軟件解密和/或鑒別,并驗(yàn)證該IP核對(duì)和。接收器TCP層軟件然后驗(yàn)證該TCP核對(duì)和,并再組合分段之TCP訊框成為用于上層軟件應(yīng)用目的地之訊息。然而,此種習(xí)知之系統(tǒng)要求主軟件執(zhí)行許多(若非所有)之第3層和第4層(例如,IP和TCP/DUP)功能,包括分段、核對(duì)和、和安全處理。這些功能是典型計(jì)算密集的、需要相當(dāng)數(shù)量之主處理耗用時(shí)間(overhead)。因此,需要在連上網(wǎng)絡(luò)之主系統(tǒng)中減少處理負(fù)載以改進(jìn)網(wǎng)絡(luò)系統(tǒng)和方法。
發(fā)明內(nèi)容
下列表示本發(fā)明之簡(jiǎn)化概述,以便提供本發(fā)明之一些態(tài)樣之基本了解。此概述并不擴(kuò)張本發(fā)明之總和觀點(diǎn)。此概述既非要證明本發(fā)明之密碼鑰匙或關(guān)鍵組件,亦非要描述本發(fā)明之范圍。更確切地說,此概述之主要目的是要以簡(jiǎn)化之形式表示本發(fā)明之一些概念,作為將陳述于后之本發(fā)明之更詳細(xì)說明之序文。本發(fā)明系關(guān)于接口連接主系統(tǒng)與網(wǎng)絡(luò)之系統(tǒng)和方法。
本發(fā)明之一個(gè)態(tài)樣系關(guān)于用來接口連接主系統(tǒng)與網(wǎng)絡(luò)的網(wǎng)絡(luò)接口系統(tǒng)。此網(wǎng)絡(luò)接口系統(tǒng)包括總線接口系統(tǒng)、媒體存取控制系統(tǒng)、和安全系統(tǒng)。此安全系統(tǒng)系操作選擇地加密和鑒別輸出數(shù)據(jù)。依照本發(fā)明,安全系統(tǒng)包括二個(gè)處理器,用來加密和鑒別輸出數(shù)據(jù)。輸出數(shù)據(jù)包系以交替方式送至一個(gè)處理器,或至另一個(gè)處理器。
本發(fā)明消除了當(dāng)從主處理器卸除(offloading)安全處理時(shí)可能發(fā)生之瓶頸。于習(xí)知的安全處理,加密后接著鑒別。此意味著雖然在接收側(cè)能夠同時(shí)實(shí)施加密和鑒別,但是在發(fā)送側(cè)卻不能夠同時(shí)實(shí)施加密和鑒別。在發(fā)送側(cè)設(shè)有多個(gè)并行的處理器以防止傳輸較接收為慢。
本發(fā)明之另一個(gè)態(tài)樣系關(guān)于包含調(diào)適以執(zhí)行IPsec處理之安全系統(tǒng)之單一集成電路。此安全系統(tǒng)包括至少兩個(gè)發(fā)送IPsec處理器。
欲完成上述和相關(guān)之目的,下列之說明和所附圖式詳細(xì)提出本發(fā)明之某些顯示態(tài)樣和實(shí)施情形。此等顯示態(tài)樣和實(shí)施情形表示使用了本發(fā)明之原理,但稍許變化之方法。從下列本發(fā)明之詳細(xì)說明,當(dāng)考慮結(jié)合圖式,則本發(fā)明之其它目的、優(yōu)點(diǎn)和新穎特征將變得很清楚。
圖1A顯示依照本發(fā)明之一個(gè)或多個(gè)態(tài)樣例示網(wǎng)絡(luò)接口系統(tǒng)之示意圖;圖1B顯示發(fā)送安全處理器范例之示意圖;圖1C顯示依照本發(fā)明之另一個(gè)態(tài)樣例示發(fā)送IPsec輸入數(shù)據(jù)流控制器之操作之流程圖;圖1D顯示依照本發(fā)明之又另一個(gè)態(tài)樣例示發(fā)送IPsec輸出數(shù)據(jù)流控制器之操作之流程圖;圖2顯示實(shí)施本發(fā)明之各種態(tài)樣之另一個(gè)范例網(wǎng)絡(luò)接口系統(tǒng)之示意圖;
圖3顯示實(shí)施圖2的網(wǎng)絡(luò)接口系統(tǒng)范例單晶網(wǎng)絡(luò)控制器之示意圖;圖4顯示使用圖3之范例網(wǎng)絡(luò)控制器與網(wǎng)絡(luò)接口連接之主系統(tǒng)之示意圖;圖5A顯示于圖2之主系統(tǒng)中于具有指針指至描述符環(huán)及接收狀態(tài)環(huán)之主系統(tǒng)存儲(chǔ)中控制狀態(tài)區(qū)塊之示意圖;圖5B顯示于圖2之主系統(tǒng)之主存儲(chǔ)器中控制器狀態(tài)區(qū)塊之示意圖;圖5C顯示于圖2的網(wǎng)絡(luò)接口系統(tǒng)中描述符管理單元緩存器之示意圖;圖5D顯示于圖2的網(wǎng)絡(luò)接口系統(tǒng)之描述符管理單元中于主系統(tǒng)存儲(chǔ)和指針緩存器中之范例發(fā)送描述符環(huán)之示意圖;圖5E顯示于圖2的網(wǎng)絡(luò)接口系統(tǒng)中范例發(fā)送描述符之示意圖;圖5F顯示于圖5E之發(fā)送描述符中發(fā)送旗標(biāo)字節(jié)之示意圖;圖5G顯示于圖2的網(wǎng)絡(luò)接口系統(tǒng)中范例接收描述符之示意圖;圖5H顯示于圖2的網(wǎng)絡(luò)接口系統(tǒng)之描述符管理單元中于主系統(tǒng)存儲(chǔ)中之范例接收描述符環(huán)和接收狀態(tài)環(huán),以及指針緩存器之示意圖;圖5I顯示于圖2的網(wǎng)絡(luò)接口系統(tǒng)中于主系統(tǒng)存儲(chǔ)中之范例接收狀態(tài)環(huán)和于描述符管理單元中之指針緩存器之示意圖;圖5J顯示于主系統(tǒng)存儲(chǔ)中范例接收狀態(tài)環(huán)登錄之示意圖;圖6A及圖6B分別顯示從TCP經(jīng)由傳輸模式ESP處理用于IPv4和IPv6之輸出數(shù)據(jù)之示意圖;圖6C及圖6D分別顯示從TCP經(jīng)由信道模式ESP處理用于IPv4和IPv6之輸出數(shù)據(jù)之示意圖;圖6E顯示范例ESP標(biāo)頭、ESP標(biāo)尾、鑒別數(shù)據(jù)、和保護(hù)數(shù)據(jù)之示意圖;圖7A及圖7B分別顯示用于IPv4和IPv6之范例TCP訊框格式示意圖;圖8A及圖8B分別顯示于圖2的網(wǎng)絡(luò)接口系統(tǒng)中,藉由輸出ESP和AH處理修正訊框欄之表;圖8C及圖8D分別顯示于圖3的網(wǎng)絡(luò)接口系統(tǒng)中用于IPv4和IPv6之虛擬標(biāo)頭核對(duì)和計(jì)算之示意圖;
圖9顯示于圖3的網(wǎng)絡(luò)接口系統(tǒng)中輸出數(shù)據(jù)之安全處理之示意圖;圖10顯示于圖3的網(wǎng)絡(luò)接口系統(tǒng)中輸入網(wǎng)絡(luò)數(shù)據(jù)之安全處理之示意圖;圖11A顯示于圖3的網(wǎng)絡(luò)接口系統(tǒng)中范例安全關(guān)聯(lián)表寫入存取之示意圖;圖11B顯示于圖3的網(wǎng)絡(luò)接口系統(tǒng)中范例SA地址緩存器格式之示意圖;圖11C顯示于圖3的網(wǎng)絡(luò)接口系統(tǒng)中范例SPI表登錄格式之示意圖;圖11D顯示于圖3的網(wǎng)絡(luò)接口系統(tǒng)中范例SA存儲(chǔ)登錄格式之示意圖;圖12顯示于圖3的網(wǎng)絡(luò)接口系統(tǒng)中用于輸出發(fā)送訊框之第4層之核對(duì)和更詳細(xì)計(jì)算之示意圖;以及圖13A及圖13B提供依照本發(fā)明之另一態(tài)樣于圖3的網(wǎng)絡(luò)接口系統(tǒng)中第4層之核對(duì)和之流程圖。
具體實(shí)施例方式
現(xiàn)將參照?qǐng)D式而說明本發(fā)明之一個(gè)或多個(gè)實(shí)施例,其中各圖中相同之號(hào)碼系用來參照相同的組件。
圖1A顯示接口連接主系統(tǒng)6與網(wǎng)絡(luò)8之范例網(wǎng)絡(luò)接口系統(tǒng)2,其中網(wǎng)絡(luò)接口系統(tǒng)2可操作以提供從主系統(tǒng)6來之輸出數(shù)據(jù)至網(wǎng)絡(luò)8,以及提供從網(wǎng)絡(luò)8來之輸入數(shù)據(jù)至主系統(tǒng)6。網(wǎng)絡(luò)接口系統(tǒng)2包括能夠操作而與主系統(tǒng)6耦接(譬如經(jīng)由于主系統(tǒng)中之總線)之總線接口系統(tǒng)4,其中調(diào)適該總線接口系統(tǒng)4以在網(wǎng)絡(luò)接口系統(tǒng)2與主系統(tǒng)6之間傳輸數(shù)據(jù)。于網(wǎng)絡(luò)接口系統(tǒng)2中之媒體存取控制(MAC)系統(tǒng)10可操作而譬如經(jīng)由兼容之收發(fā)器(圖中未顯示)之媒體獨(dú)立接口(例如,MII、GMII、等等)而與網(wǎng)絡(luò)8耦接,其中MAC系統(tǒng)10可操作而在網(wǎng)絡(luò)接口系統(tǒng)2與網(wǎng)絡(luò)8之間傳輸數(shù)據(jù)??墒褂萌魏沃娐坊蚺渲弥M件,或可配置以傳輸數(shù)據(jù)至網(wǎng)絡(luò)接口系統(tǒng)2和從網(wǎng)絡(luò)接口系統(tǒng)2傳輸數(shù)據(jù),而構(gòu)成總線接口系統(tǒng)4和MAC系統(tǒng)10。詳言之,系統(tǒng)4和10可包括任何硬件組合,譬如邏輯裝置、模擬電路、電連接器、等等,該等組件可藉由于該接口系統(tǒng)2中之軟件和/或韌體而程序化或可配置。
網(wǎng)絡(luò)接口2復(fù)包括與總線接口系統(tǒng)4和MAC系統(tǒng)10耦接的存儲(chǔ)系統(tǒng)12,以及與存儲(chǔ)系統(tǒng)12耦接的安全系統(tǒng)14。存儲(chǔ)系統(tǒng)12儲(chǔ)存?zhèn)鬏斢诰W(wǎng)絡(luò)8與主系統(tǒng)6之間的輸入和輸出數(shù)據(jù)。存儲(chǔ)系統(tǒng)12包括第一和第二存儲(chǔ),存儲(chǔ)A 16和存儲(chǔ)B 18。該第一存儲(chǔ)16與總線接口系統(tǒng)4及安全系統(tǒng)14耦接,用來于安全處理之前儲(chǔ)存輸出數(shù)據(jù),并于安全處理之后儲(chǔ)存輸入數(shù)據(jù)。第二存儲(chǔ)18與MAC系統(tǒng)10及安全系統(tǒng)14耦接,用來于安全處理之前儲(chǔ)存輸入數(shù)據(jù),并于安全處理之后儲(chǔ)存輸出數(shù)據(jù)。存儲(chǔ)系統(tǒng)12與其第一和第二存儲(chǔ)16和18可以是任何形式之存儲(chǔ)電路,揮發(fā)性或非揮發(fā)性,包括但不限于配置為具有適當(dāng)控制電路之先入先出(FIFO)存儲(chǔ)之隨機(jī)存取存儲(chǔ)(RAM)電路。雖然分別顯示為第一和第二存儲(chǔ)16和18,但是存儲(chǔ)系統(tǒng)12可以是分別劃分成第一和第二存儲(chǔ)區(qū)域16和18之分離之存儲(chǔ)或單元存儲(chǔ)系統(tǒng)。再者,存儲(chǔ)16和18其中之一或二者可包括用來處理輸入和輸出數(shù)據(jù)之分離之存儲(chǔ)電路,或可選擇使用劃分(例如,以靜態(tài)或動(dòng)態(tài)方式)成儲(chǔ)存輸入和輸出數(shù)據(jù)及控制信息之單一存儲(chǔ)電路。
配置或可配置安全系統(tǒng)14,以選擇性地執(zhí)行安全處理于網(wǎng)絡(luò)接口系統(tǒng)2中之輸入和/或輸出數(shù)據(jù)。可以使用任何適當(dāng)之電子裝置,譬如模擬和邏輯電路,來構(gòu)成安全系統(tǒng)14,配置或可配置以執(zhí)行安全處理用于接口系統(tǒng)2中之輸入和/或輸出數(shù)據(jù)。于一個(gè)執(zhí)行中,安全系統(tǒng)14為IPsec系統(tǒng),調(diào)適而選擇地提供輸入和輸出數(shù)據(jù)之鑒別、加密、和解密功能,如下文中將進(jìn)一步說明和描述。然而,在本發(fā)明范圍內(nèi)可構(gòu)思其它形式之安全系統(tǒng)和其它型式之安全處理。
于網(wǎng)絡(luò)接口系統(tǒng)2中之系統(tǒng)4、10、12、和14可以經(jīng)由軟件和/或韌體而選擇地配置或程序化。舉例而言,網(wǎng)絡(luò)接口系統(tǒng)2之系統(tǒng)4、10、12、和14之其中一個(gè)、一些、或全部可藉由在主系統(tǒng)6中之軟件和/或經(jīng)由譬如于系統(tǒng)2中之編碼EEPROM或外部EEPROM之韌體、或于系統(tǒng)2外部之其它存儲(chǔ)裝置藉由EEPROM接口而予配置。
各種之系統(tǒng)4、10、12、和14可以依照從主系統(tǒng)6所獲得之控制或其它的型式之信息而選擇地操作,其中此種信息可與一個(gè)或多個(gè)處理和/或傳輸于主系統(tǒng)6和網(wǎng)絡(luò)8之間之?dāng)?shù)據(jù)部分相關(guān)聯(lián)。舉例而言,網(wǎng)絡(luò)接口系統(tǒng)2可從相關(guān)于將傳送到網(wǎng)絡(luò)8之輸出數(shù)據(jù)訊框之主系統(tǒng)6獲得控制信息。再者,系統(tǒng)4、10、12、和14可以提供控制、狀態(tài)、或其它型式之信息至該主系統(tǒng)6。
安全系統(tǒng)14包括接收IPsec處理器22、發(fā)送IPsec輸入數(shù)據(jù)流控制器28、二個(gè)具有對(duì)應(yīng)于輸入緩沖器26和27以及輸出緩沖器24和25之發(fā)送IPsec處理器20和21、以及發(fā)送IPsec輸出數(shù)據(jù)流控制器30。輸入數(shù)據(jù)流控制器28從存儲(chǔ)16讀取數(shù)據(jù),并交替地發(fā)送數(shù)據(jù)包至輸入緩沖器26和27。發(fā)送IPsec處理器20和21本質(zhì)上并行操作,從其對(duì)應(yīng)之輸入緩沖器26和27讀取數(shù)據(jù),執(zhí)行數(shù)據(jù)之安全處理,并將該處理之?dāng)?shù)據(jù)寫入其對(duì)應(yīng)之輸出緩沖器24和25。輸出數(shù)據(jù)流控制器30交替地從輸出緩沖器24和25讀取處理之?dāng)?shù)據(jù),并使用與從存儲(chǔ)16讀取封包相同之次序,將處理之?dāng)?shù)據(jù)寫入到存儲(chǔ)18。
因?yàn)楫?dāng)數(shù)據(jù)藉由習(xí)用之執(zhí)行于加密數(shù)據(jù)之鑒別而予以加密時(shí),二個(gè)發(fā)送IPsec處理器與范例網(wǎng)絡(luò)接口系統(tǒng)2中之一個(gè)接收IPsec處理器相匹配。于接收時(shí),此情況致能并行實(shí)施解密和鑒別。然而,于傳輸時(shí),于鑒別能夠開始之前,加密之?dāng)?shù)據(jù)必須可用。習(xí)知之鑒別和加密算法,譬如以下所示之例子,系為遞歸(resursive)。由于他們的遞歸性質(zhì),而除了對(duì)于每一字節(jié)處理時(shí)間外,尚具有關(guān)聯(lián)用于各數(shù)據(jù)包之各鑒別和加密之耗用時(shí)間。甚至當(dāng)鑒別和加密操作為管線連接(pipelined)時(shí),對(duì)于加密和鑒別之耗用時(shí)間附加到發(fā)送側(cè)。這些耗用時(shí)間顯著地增加處理時(shí)間,尤其是對(duì)于小的數(shù)據(jù)包。本發(fā)明透過使用二個(gè)或多個(gè)發(fā)送IPsec處理器并行操作,而減少于發(fā)送側(cè)之IPsec處理時(shí)間,因此創(chuàng)造于接收側(cè)之較佳之匹配處理速度。
圖1B顯示范例發(fā)送IPsec處理器50之示意圖。范例發(fā)送IPsec處理器50包括發(fā)送安全處理控制模塊54、ESP鑒別引擎56、AH鑒別引擎58、和ESP加密引擎60。發(fā)送安全處理控制模塊54從輸入緩沖器52經(jīng)由ESP鑒別引擎56、AH鑒別引擎58、和ESP加密引擎60之其中無任何一個(gè)、其中一個(gè)、或其中多個(gè),而選擇地引導(dǎo)數(shù)據(jù)包。當(dāng)需要加密和鑒別時(shí),ESP加密引擎之輸出路由(routed)至一個(gè)或多個(gè)鑒別引擎。范例IPsec處理器50能夠于封包同時(shí)執(zhí)行ESP和AH鑒別,并當(dāng)實(shí)施時(shí),二者執(zhí)行并行操作。一旦完成處理,處理之?dāng)?shù)據(jù)放在輸出緩沖器62中。
引擎包括各有其功能之專用硬件。此外,引擎包括串行之多級(jí),各級(jí)以相同的速率處理數(shù)據(jù)。供應(yīng)至引擎之序列數(shù)據(jù)經(jīng)由從引擎之開始至其結(jié)束之串行級(jí)而傳送數(shù)據(jù),因此于某些義意上能夠認(rèn)為是管線。串行之各級(jí)有可能其所有皆于相同之時(shí)間操作于分離之?dāng)?shù)據(jù)塊。管線較之于使用中央處理者提供了更快速之?dāng)?shù)據(jù)處理。
圖1A之輸入緩沖器26和27以及輸出緩沖器24和25能夠是任何適當(dāng)?shù)拇笮『团渲?。例如,緩沖器能夠形成從大約32字節(jié)至大約1024字節(jié),而最好是有256個(gè)字節(jié)。該等緩沖器能夠是二個(gè)分離之存儲(chǔ),或是單一個(gè)劃分之存儲(chǔ)。較理想之情況是,緩沖器足夠的大,由此當(dāng)網(wǎng)絡(luò)接口系統(tǒng)12發(fā)送一系列之短數(shù)據(jù)包時(shí)(對(duì)于該等數(shù)據(jù)包于IPsec處理之耗用時(shí)間是很顯著的),該發(fā)送IPsec處理器20和21保持繼續(xù)操作。
輸入數(shù)據(jù)流控制器28讀取從存儲(chǔ)16來用于傳輸之?dāng)?shù)據(jù)包,并以交替方式引導(dǎo)該等封包于二個(gè)IPsec處理器20和21之輸入緩沖器26和27之間。圖1C顯示用于輸入數(shù)據(jù)流控制器28之范例作業(yè)程序70之流程圖。數(shù)據(jù)流控制器28切換于輸入緩沖器26和27之間,由此于任何給定之時(shí)間僅有一個(gè)為“現(xiàn)用的(current)”緩沖器。于步驟71開始,數(shù)據(jù)流控制器28檢核于存儲(chǔ)16中將傳輸之?dāng)?shù)據(jù)。若無數(shù)據(jù)存在,則控制器28于步驟72中等候,然后再檢核?;蛘咔闆r是,當(dāng)數(shù)據(jù)正等待傳輸時(shí),另一個(gè)處理器或電路能夠發(fā)訊號(hào)給該控制器28。
當(dāng)發(fā)送大的數(shù)據(jù)包時(shí),可能對(duì)于輸入緩沖器變得存滿。因此,于步驟75中控制器28讀取從存儲(chǔ)16來之?dāng)?shù)據(jù)塊,并于步驟76中將數(shù)據(jù)寫至現(xiàn)用之緩沖器中之前,先于步驟73中檢核于現(xiàn)用緩沖器中之空間。若輸入緩沖器存滿了,則于步驟73中再檢核所留空間之前,控制器28先于步驟74中等候。于步驟76中將數(shù)據(jù)寫入現(xiàn)用緩沖器之后,于步驟77中控制器28檢核是否已經(jīng)到達(dá)封包之末端。若已經(jīng)到達(dá)了封包之末端,則于步驟78中切換現(xiàn)用緩沖器,且控制器28進(jìn)行至步驟71,于該步驟71控制器28尋找次一個(gè)數(shù)據(jù)包。倘若尚未到達(dá)封包之末端,則控制器返回至步驟73,并準(zhǔn)備從存儲(chǔ)16中讀取另一個(gè)數(shù)據(jù)塊。范例作業(yè)程序70于切換至另一個(gè)緩沖器之前,造成了將整個(gè)封包送至現(xiàn)用緩沖器。
輸出數(shù)據(jù)流控制器30讀取從輸出緩沖器24和25來之處理數(shù)據(jù),并將處理之?dāng)?shù)據(jù)寫入到存儲(chǔ)18中。圖1D顯示用于輸出數(shù)據(jù)流控制器30之范例作業(yè)程序80之流程圖。數(shù)據(jù)流控制器30在輸出緩沖器24和25之間切換,由此于任何給定的時(shí)間僅一個(gè)是“現(xiàn)用的”緩沖器。
輸出數(shù)據(jù)流控制器30可較發(fā)送IPsec處理器24和25操作快速,因此,輸出數(shù)據(jù)流控制器30藉由于步驟81中檢核在現(xiàn)用輸出緩沖器中之?dāng)?shù)據(jù)而開始。若有數(shù)據(jù),則于步驟83中控制器30從現(xiàn)用輸出緩沖器中讀取數(shù)據(jù)塊,并于步驟84將數(shù)據(jù)寫入存儲(chǔ)18中。然后于步驟85中控制器30檢核是否已經(jīng)到達(dá)封包之末端。若已經(jīng)到達(dá)封包之末端,則于步驟86中控制器30切換現(xiàn)用之輸出緩沖器,并于步驟81準(zhǔn)備讀取更多的數(shù)據(jù)。若尚未到達(dá)封包之末端,則于步驟81中控制器30繼續(xù)從現(xiàn)用之輸出緩沖器讀取數(shù)據(jù)。作業(yè)程序80造成從另一個(gè)輸出緩沖器讀取次一個(gè)封包之前,整個(gè)封包將要從一個(gè)輸出緩沖器讀取并寫至存儲(chǔ)18。
因此本發(fā)明促進(jìn)網(wǎng)絡(luò)8與主系統(tǒng)6之間的輸入和輸出數(shù)據(jù)透過安全處理之卸除而迅速地傳輸和處理。而且,設(shè)有二個(gè)發(fā)送IPsec處理器以加速IPsec處理。依照本發(fā)明之范例網(wǎng)絡(luò)控制器之結(jié)構(gòu)/功能和操作概述,將結(jié)合圖2至圖4而說明于后,以便促使能完全了解本發(fā)明。依照本發(fā)明之一個(gè)范例態(tài)樣,上述特征有利地促進(jìn)具有安全處理的網(wǎng)絡(luò)接口于千兆位(gigabit)導(dǎo)線速度之操作。
圖2顯示依照本發(fā)明之一個(gè)或多個(gè)態(tài)樣的網(wǎng)絡(luò)接口周邊或網(wǎng)絡(luò)控制器102,而圖3和圖4顯示網(wǎng)絡(luò)控制器102之范例單芯片之實(shí)施情形102a。范例單芯片網(wǎng)絡(luò)控制器102a包括所有于此說明書中說明之相關(guān)于網(wǎng)絡(luò)接口系統(tǒng)102之功能和組件。可使用任何適當(dāng)之模擬和/或數(shù)字電路而執(zhí)行于此說明之各種區(qū)塊、系統(tǒng)、模塊、引擎、等等,其中描述于說明書中之一個(gè)或多個(gè)區(qū)塊等,可依照本發(fā)明而與其它的電路結(jié)合。
網(wǎng)絡(luò)控制器102包括用來與主PCI或PCI-X總線106連接之64位PCI-X總線接口104,該主PCI或PCI-X總線106于PCI-X模式操作于達(dá)133MHz之時(shí)脈速度,或于標(biāo)準(zhǔn)PCI模式達(dá)66MHz之時(shí)脈速度。網(wǎng)絡(luò)控制器102可操作為總線主控器或受控器。當(dāng)網(wǎng)絡(luò)控制器102例如經(jīng)由EEPROM接口114(圖3)讀取選用之EEPROM時(shí)(圖中未顯示),則該網(wǎng)絡(luò)控制器102可以自動(dòng)地完成許多的初始化。網(wǎng)絡(luò)控制器102能夠經(jīng)由IEEE 802.3兼容媒體獨(dú)立接口(MII)或千兆位媒體獨(dú)立接口(GMII)110而連接至IEEE 802.3或適當(dāng)?shù)木W(wǎng)絡(luò)108,該接口110藉由外部收發(fā)器裝置111而接口連接控制器102與網(wǎng)絡(luò)108。對(duì)于1000Mb/s操作,控制器102支持用于1000BASE-T實(shí)體裝置111之字節(jié)寬IEEE 802.3千兆位媒體獨(dú)立接口(GMII),或用于1000BASE-X裝置111之IEEE 802.3十位接口(TBI)二者其中任一者。網(wǎng)絡(luò)控制器102于10和100Mb/s速率支持半雙工和全雙工操作,以及于1000Mb/s支持全雙工操作。
譬如于主系統(tǒng)180中之主PCI-X總線106上之主處理器112之主裝置,可以經(jīng)由總線106與主橋接器117而與網(wǎng)絡(luò)控制器102接口連接。主處理器112包括一個(gè)或多個(gè)能操作于坐標(biāo)方式(coordinatedfashion)的處理器。亦參照?qǐng)D4,網(wǎng)絡(luò)單芯片網(wǎng)絡(luò)控制器102a可設(shè)于網(wǎng)絡(luò)適配卡或電路板182上,搭配著用來經(jīng)由主橋接器117、主總線106、和收發(fā)器111接口連接主處理器112與網(wǎng)絡(luò)108之實(shí)體收發(fā)器111。PCI-X總線接口104包括用來辨識(shí)網(wǎng)絡(luò)控制器102a與于PCI總線上其它裝置,以及配置該裝置之PCI配置緩存器。一旦完成了初始化,主處理器112具有直接存取至網(wǎng)絡(luò)控制器102之I/O緩存器,用來執(zhí)行調(diào)諧(tuning)、選擇選用項(xiàng)、搜集統(tǒng)計(jì)值、以及開始經(jīng)由主橋接器117和總線106之傳輸。主處理器112以操作方式經(jīng)由存儲(chǔ)/快取控制器113而與主系統(tǒng)存儲(chǔ)128和高速緩存115耦接。一個(gè)或多個(gè)執(zhí)行于主處理器112之應(yīng)用軟件程序184可經(jīng)由第4層(例如,傳輸層)之譬如傳輸控制協(xié)議(TCP)層軟件186、第3層(例如,網(wǎng)絡(luò)層)之譬如網(wǎng)際網(wǎng)絡(luò)協(xié)議(IP)軟件188、以及亦執(zhí)行于主處理器112之軟件網(wǎng)絡(luò)驅(qū)動(dòng)程序190,而提供網(wǎng)絡(luò)服務(wù)。當(dāng)如下文中討論之,網(wǎng)絡(luò)驅(qū)動(dòng)程序軟件190與主存儲(chǔ)器128和網(wǎng)絡(luò)控制器102相互作用,以促進(jìn)應(yīng)用軟件184與網(wǎng)絡(luò)108之間之?dāng)?shù)據(jù)傳輸。
如圖2中所示,范例網(wǎng)絡(luò)控制器102包括第一與第二內(nèi)部隨機(jī)存取存儲(chǔ)“存儲(chǔ)A 116”與“存儲(chǔ)B 118”,組構(gòu)成先入先出(FIFO)存儲(chǔ),用來儲(chǔ)存訊框。存儲(chǔ)控制單元120提供存儲(chǔ)116和118之控制和操作。網(wǎng)絡(luò)控制器102亦包括媒體存取控制(MAC)引擎122,滿足操作為以太網(wǎng)絡(luò)/IEEE 802.3兼容節(jié)點(diǎn)之需求,并提供存儲(chǔ)118和GMII110之間之接口。MAC引擎122可操作于全或半雙工模式。與存儲(chǔ)116和118耦接的網(wǎng)際網(wǎng)絡(luò)協(xié)議安全(IPsec)引擎124提供鑒別和/或加密功能。
PCI-X總線接口104包括直接存儲(chǔ)存取(DMA)控制器126,該DMA控制器126經(jīng)由主總線106自動(dòng)傳輸網(wǎng)絡(luò)控制器102和于主系統(tǒng)存儲(chǔ)128中緩沖器之間之網(wǎng)絡(luò)訊框數(shù)據(jù)。DMA控制器126之操作,系依照稱之為描述符192之?dāng)?shù)據(jù)結(jié)構(gòu),而由描述符管理單元130所引導(dǎo),該描述符192包括指至系統(tǒng)存儲(chǔ)128中一個(gè)或多個(gè)數(shù)據(jù)緩沖器194之指針,以及控制信息。描述符192以稱之為描述符環(huán)之隊(duì)列(queue)方式,而儲(chǔ)存于主系統(tǒng)存儲(chǔ)128中。對(duì)應(yīng)于所例示控制器102中之網(wǎng)絡(luò)通訊量之4個(gè)優(yōu)先通訊,提供4個(gè)發(fā)送描述符環(huán)用來發(fā)送訊框,以及4個(gè)接收描述符環(huán)用來接收訊框。此外,提供了4個(gè)接收狀態(tài)環(huán),一個(gè)用于各優(yōu)先層次(priority level),該優(yōu)先層次促使網(wǎng)絡(luò)控制器102與主系統(tǒng)之間之同步。發(fā)送描述符192控制從系統(tǒng)存儲(chǔ)128至控制器102之訊框數(shù)據(jù)之傳輸,而接收描述符192控制于另一方向之訊框數(shù)據(jù)之傳輸。于范例控制器102中,各發(fā)送描述符192對(duì)應(yīng)于一個(gè)網(wǎng)絡(luò)訊框,反之各接收描述符192對(duì)應(yīng)于一個(gè)或多個(gè)主存儲(chǔ)器緩沖器,從網(wǎng)絡(luò)108所接收之訊框可儲(chǔ)存于該等緩沖器中。
軟件接口分配相連的記憶區(qū)塊用于描述符192、接收器狀態(tài)、和數(shù)據(jù)緩沖器194。該等記憶區(qū)塊于正常網(wǎng)絡(luò)操作期間由軟件(例如,網(wǎng)絡(luò)驅(qū)動(dòng)程序190)和網(wǎng)絡(luò)控制器102之間共享。描述符空間包括指向緩沖器194中網(wǎng)絡(luò)訊框數(shù)據(jù)之指針,接收器狀態(tài)空間包括從控制器102傳送至主處理器112中之軟件之信息,以及用于儲(chǔ)存將發(fā)送之訊框數(shù)據(jù)(例如,輸出數(shù)據(jù))和已接收之訊框數(shù)據(jù)(例如,輸入數(shù)據(jù))之?dāng)?shù)據(jù)緩沖器區(qū)域194。
藉由儲(chǔ)存于控制器102中之硬件緩存器132中之指針、儲(chǔ)存于主系統(tǒng)存儲(chǔ)128中之控制器狀態(tài)區(qū)塊(CSB)196中之指針、和中斷指令,而可維持控制器102和主處理器112之間之同步。CSB 196為主系統(tǒng)存儲(chǔ)128之區(qū)塊,該主系統(tǒng)存儲(chǔ)128包括進(jìn)入描述符中之指針,和狀態(tài)環(huán),和控制器之中斷緩存器之內(nèi)容的復(fù)本。藉由網(wǎng)絡(luò)控制器102而寫入CSB 196,并由主處理器112讀取。每次于主處理器112中之軟件驅(qū)動(dòng)程序190將描述符或一組之描述符192寫入描述符環(huán)中,該軟件驅(qū)動(dòng)程序190亦寫至控制器102中之指針緩存器。若尚未傳輸,則寫至此緩存器使得控制器102開始傳輸處理。一旦控制器已完成處理發(fā)送描述符192,則該控制器將此信息寫入CSB 196。于接收網(wǎng)絡(luò)訊框并將訊框儲(chǔ)存于主系統(tǒng)存儲(chǔ)128之接收緩沖器194中后,控制器102寫至接收狀態(tài)環(huán)并寫至寫入指針,該驅(qū)動(dòng)程序軟件190用該寫入之內(nèi)容來決定哪些接收緩沖器194已經(jīng)存滿。于接收訊框中之錯(cuò)誤經(jīng)由狀態(tài)產(chǎn)生器134報(bào)告至主存儲(chǔ)器128。
IPsec模塊或引擎124提供用來發(fā)送和接收訊框之標(biāo)準(zhǔn)鑒別、加密、和解密功能。對(duì)于鑒別,IPsec模塊124執(zhí)行定義于RFC 2403(由網(wǎng)際網(wǎng)絡(luò)工程任務(wù)推動(dòng)小組提出之規(guī)格組)之HMAC-MD5-96算法,和定義于RFC 2404之HMAC-SHA-1-96算法。對(duì)于加密,模塊執(zhí)行ESPDES-CBC(RFC 2406)、3DES-CBC、以及AES-CBC加密算法。對(duì)于發(fā)送訊框,由儲(chǔ)存于由安全關(guān)聯(lián)(Security Associations;SAs)專用區(qū)域SA存儲(chǔ)140中之SAs所特定時(shí),控制器102應(yīng)用IPsec鑒別和/或加密,該發(fā)送訊框由IPsec系統(tǒng)124經(jīng)由SA存儲(chǔ)接口142而存取。SAs由主處理器112所協(xié)商和設(shè)定。SAs包括各IPsec密碼鑰匙,該等密碼鑰匙由各種鑒別、加密、和解密算法所需求,藉由主處理器112執(zhí)行IPsec密碼鑰匙交換處理。主處理器112協(xié)商SAs與遠(yuǎn)程站,并寫入SA數(shù)據(jù)于SA存儲(chǔ)140中。主處理器112亦維持IPsec安全策略數(shù)據(jù)庫(Security Policy Database;SPD)于主系統(tǒng)存儲(chǔ)128中。
關(guān)聯(lián)于MAC引擎122之接收(RX)剖析器144檢查接收訊框之標(biāo)頭,以決定要作什么樣的處理。若接收剖析器144發(fā)現(xiàn)到IPsec標(biāo)頭,則其使用包含于標(biāo)頭中包含有安全參數(shù)索引(SPI)、IPsec協(xié)議類型、和使用SA查詢邏輯146搜尋SA存儲(chǔ)140之IP目的地地址之信息,并擷取該可應(yīng)用之安全關(guān)聯(lián)信息。將結(jié)果寫至SA指針FIFO存儲(chǔ)148,該SA指針FIFO存儲(chǔ)148經(jīng)由SA存儲(chǔ)接口142耦接至查詢邏輯146。取得對(duì)應(yīng)于SA之密碼鑰匙,并儲(chǔ)存于RX密碼鑰匙FIFO 152中。接收(RX)IPsec處理器150藉由使用密碼鑰匙之可適用之SA而執(zhí)行處理需求。控制器102報(bào)告其已作了哪些安全處理,而使得主處理器112能檢核SPD以驗(yàn)證訊框符合策略。處理之訊框儲(chǔ)存于存儲(chǔ)116中。
關(guān)聯(lián)于IPsec處理器150之接收IPsec剖析器154執(zhí)行封包解密之前不能實(shí)施之剖析。藉由接收(RX)核對(duì)和和填補(bǔ)(pad)檢核系統(tǒng)156而使用一些此信息,填補(bǔ)檢核系統(tǒng)156計(jì)算由已加密之標(biāo)頭所特定之核對(duì)和,并亦檢核可能已加密之填補(bǔ)位以驗(yàn)證他們遵循用于填補(bǔ)位之預(yù)定序列。當(dāng)接收之訊框經(jīng)由FIFO 158傳送至PCI-X總線104時(shí),實(shí)行這些操作。核對(duì)和以及填補(bǔ)檢核結(jié)果報(bào)告至狀態(tài)產(chǎn)生器134。
于發(fā)送路徑,設(shè)有組合RAM 160以接收從系統(tǒng)存儲(chǔ)128來之訊框數(shù)據(jù),并傳送該數(shù)據(jù)至存儲(chǔ)116。發(fā)送訊框之內(nèi)容能散布于主存儲(chǔ)器128中多個(gè)數(shù)據(jù)緩沖器194之間,其中擷取訊框可藉由描述符管理單元130而包含多個(gè)至系統(tǒng)存儲(chǔ)128之請(qǐng)求。這些請(qǐng)求不總是滿足于與他們發(fā)送相同之次序。組合RAM 160確保接收之大塊數(shù)據(jù)系提供至存儲(chǔ)116中適當(dāng)?shù)奈恢?。?duì)于發(fā)送訊框,主處理器112檢核SPD(IPsec SecurityPolicy Database),以判定需要什么安全處理,并用至SA存儲(chǔ)140中適當(dāng)SA之指針之形式傳送此信息至訊框之描述符192中之控制器102。于主系統(tǒng)存儲(chǔ)128中之訊框數(shù)據(jù)提供空間于IPsec標(biāo)頭和標(biāo)尾中,以用于控制器102所產(chǎn)生之鑒別數(shù)據(jù)。同樣的情況,當(dāng)訊框儲(chǔ)存于主系統(tǒng)存儲(chǔ)緩沖器194中時(shí)提供用于填補(bǔ)(使酬載有整數(shù)之區(qū)塊)之空間,但是由控制器102寫入填補(bǔ)位。
當(dāng)數(shù)據(jù)從組合RAM 160送出時(shí),數(shù)據(jù)亦傳送入第一發(fā)送(TX)剖析器162,該剖析器162讀取MAC標(biāo)頭、IP標(biāo)頭(如果存在)、TCP或UDP標(biāo)頭,并決定該數(shù)據(jù)是何種訊框,以及查看于相關(guān)描述符中之控制位。此外,從組合RAM 160來的數(shù)據(jù)提供至發(fā)送核對(duì)和系統(tǒng)164,用來計(jì)算IP標(biāo)頭和/或TCP核對(duì)和,然后該等值將插置于存儲(chǔ)116中適當(dāng)位置。描述符管理單元130發(fā)送請(qǐng)求指令至SA存儲(chǔ)接口142,以取得SA密碼鑰匙,該SA密碼鑰匙然后提供至供應(yīng)一對(duì)TX IPsec處理器174a和174b之密碼鑰匙FIFO 172。訊框分別經(jīng)由TX IPsec FIFO176a和176b而選擇性地提供至一對(duì)用來加密和鑒別之TX IPsec處理器174a和174b之其中之一,其中發(fā)送IPsec剖析器170選擇地從存儲(chǔ)116提供訊框數(shù)據(jù)至選擇之其中一個(gè)處理器174。二個(gè)發(fā)送IPsec處理器174并行提供,因?yàn)橹钡皆谶M(jìn)行加密處理后,方能開始鑒別處理。藉由同時(shí)使用二個(gè)處理器174,速度可與接收側(cè)相比較。
鑒別不包含易變之字段,譬如發(fā)生于IP標(biāo)頭者。因此發(fā)送IPsec剖析器170尋找于訊框數(shù)據(jù)中易變之字段,并識(shí)別于處理器174a和174b中之該等字段。處理器174a和174b之輸出分別經(jīng)由FIFO 178a和178b而提供至第二存儲(chǔ)118。當(dāng)訊框數(shù)據(jù)從存儲(chǔ)118傳送至MAC引擎122以便傳輸至網(wǎng)絡(luò)108時(shí),由鑒別處理所獲得的完整檢核值(Integrity Check Value;ICV)藉由插入單元179插入適當(dāng)?shù)腎Psec標(biāo)頭。
于圖3之單芯片實(shí)施情況中,控制器102a包括網(wǎng)絡(luò)端口管理器182,該網(wǎng)絡(luò)端口管理器182可藉由管理數(shù)據(jù)時(shí)脈(MDC)與管理數(shù)據(jù)I/O(MDIO)訊號(hào)自動(dòng)與外部實(shí)體收發(fā)器協(xié)商。網(wǎng)絡(luò)端口管理器182亦可設(shè)立將與協(xié)商架構(gòu)一致之MAC引擎122。藉由LED控制器171而提供接口連接LED指示器之電路板,該LED控制器171產(chǎn)生LED驅(qū)動(dòng)器訊號(hào)LED0′至LED3′,以指示各種網(wǎng)絡(luò)狀態(tài)信息,譬如工作中鏈路連接、于網(wǎng)絡(luò)上之接收或發(fā)送活動(dòng)、網(wǎng)絡(luò)位率、和網(wǎng)絡(luò)碰撞(collision)。時(shí)脈控制邏輯173接收閑置執(zhí)行(free-running)125MHz輸入時(shí)脈訊號(hào)作為時(shí)序參考,并提供各種之時(shí)脈訊號(hào)用于控制器102a之內(nèi)部邏輯。
當(dāng)裝置是在非工作中(inactive)時(shí),能夠使用與描述符管理單元130和MAC引擎122耦接的電源管理單元175以保存電源。當(dāng)偵測(cè)到請(qǐng)求改變于電源位準(zhǔn)之事件時(shí),譬如經(jīng)由MAC引擎122之鏈路中之改變,電源管理單元175提供訊號(hào)PME′表示發(fā)生了電源管理事件。外部串行EEPROM接口114執(zhí)行標(biāo)準(zhǔn)EEPROM接口,例如,93Cxx EEPROM接口協(xié)議。外部串行EEPROM接口114之引線包括EEPROM芯片選擇(EECS)接腳、EEPROM數(shù)據(jù)輸入和數(shù)據(jù)輸出(分別為EEDI和EEDO)接腳、和EEPROM串行時(shí)脈(EESK)接腳。
于總線接口單元104中,地址和數(shù)據(jù)于總線接口接腳AD〔63:0〕多任務(wù)處理??纱_立重設(shè)輸入RST′以引起網(wǎng)絡(luò)控制器102a執(zhí)行內(nèi)部系統(tǒng)重設(shè)。當(dāng)網(wǎng)絡(luò)控制器是總線主控器指示異動(dòng)(transaction)之開始和持續(xù)時(shí)間時(shí),可藉由網(wǎng)絡(luò)控制器而驅(qū)動(dòng)循環(huán)訊框I/O訊號(hào)FRAME′,以及PCI時(shí)脈輸入PCI_CLK用來于PCI總線上(例如,主總線106)于15至133MHz頻率范圍,驅(qū)動(dòng)系統(tǒng)總線接口。網(wǎng)絡(luò)控制器102a亦支持具有64位尋址系統(tǒng)之雙地址循環(huán)(Dual Address Cycles;DAC),其中低次序地址位于第一時(shí)脈循環(huán)期間出現(xiàn)于AD〔31:0〕總線,而高次序位于第二時(shí)脈循環(huán)期間出現(xiàn)于AD〔63:32〕。當(dāng)作用為總線主控制器之裝置要初始64位數(shù)據(jù)傳輸時(shí),由該裝置確立REQ64′訊號(hào),而該傳輸之目標(biāo)裝置確立64位傳輸鑒別接收(acknowledge)訊號(hào)ACK64′,以表示該目標(biāo)裝置將要用64位傳輸數(shù)據(jù)。同位訊號(hào)PAR64為保護(hù)AD〔63:32〕之偶8字節(jié)同位訊號(hào)??偩€主控制器驅(qū)動(dòng)用于地址和寫入數(shù)據(jù)相位之PAR64,而目標(biāo)裝置驅(qū)動(dòng)用于讀取數(shù)據(jù)相位之PAR64。
網(wǎng)絡(luò)控制器102a確立總線請(qǐng)求訊號(hào)REQ′以表示該網(wǎng)絡(luò)控制器102a希望變成主控制器,以及總線允許輸入訊號(hào)GNT′表示存取至總線已經(jīng)允許至網(wǎng)絡(luò)控制器。初始裝置選擇輸入訊號(hào)IDSEL于配置讀取與寫入異動(dòng)期間使用為用于網(wǎng)絡(luò)控制器之芯片選擇??偩€命令和字節(jié)致能訊號(hào)C/BE〔7:0〕用來傳輸總線命令并指示哪些數(shù)據(jù)線AD〔63:0〕之實(shí)體字節(jié)載送有意義之?dāng)?shù)據(jù)。同位I/O訊號(hào)PAR指示并驗(yàn)證遍及AD〔31:0〕與C/BE〔3:0〕之偶同位。
當(dāng)網(wǎng)絡(luò)控制器偵測(cè)到選擇該網(wǎng)絡(luò)控制器102a為目標(biāo)裝置之異動(dòng)時(shí),該網(wǎng)絡(luò)控制器驅(qū)動(dòng)驅(qū)動(dòng)選擇I/O訊號(hào)DEVEL′。網(wǎng)絡(luò)控制器102a檢核DEVEL′以了解是否目標(biāo)裝置已請(qǐng)求該網(wǎng)絡(luò)控制器所初始之異動(dòng)。TRDY′用來指示異動(dòng)之目標(biāo)裝置完成現(xiàn)用之?dāng)?shù)據(jù)相位之能力,以及IRDY′指示異動(dòng)之初始器完成現(xiàn)用之?dāng)?shù)據(jù)相位之能力。中斷請(qǐng)求輸出訊號(hào)INTA′指示設(shè)定一個(gè)或多個(gè)致能中斷旗標(biāo)位(enabled interrupt flagbits)。當(dāng)網(wǎng)絡(luò)控制器102a偵測(cè)數(shù)據(jù)同位錯(cuò)誤時(shí),該網(wǎng)絡(luò)控制器102a確立同位錯(cuò)誤I/O訊號(hào)PERR′,以及當(dāng)他偵測(cè)到地址同位錯(cuò)誤時(shí),該網(wǎng)絡(luò)控制器102a確立系統(tǒng)錯(cuò)誤輸出訊號(hào)SERR′。此外,控制器102a確立中止I/O訊號(hào)STOP′,以通知總線主控器停止現(xiàn)用之異動(dòng)。
于MAC引擎122中,使用實(shí)體接口重設(shè)訊號(hào)PHY_RST以重設(shè)外部PHY 111(MII、GMII、TBI),使用PHY回路(loop-back)輸出PHY_LPBK以強(qiáng)迫外部PHY裝置111進(jìn)入回路模式以用于系統(tǒng)測(cè)試,以及當(dāng)MAC發(fā)送流量控制訊框時(shí),流量控制輸入訊號(hào)FC進(jìn)行控制。網(wǎng)絡(luò)控制器102a提供可與根據(jù)IEEE Std 802.3之媒體獨(dú)立接口(MII)、千兆位媒體獨(dú)立接口(GMII)、或十位接口(TBI)之任一者兼容之外部PHY接口110。使用接收數(shù)據(jù)輸入訊號(hào)RXD〔7:0〕和輸出訊號(hào)TXD〔7:0〕以分別接收和發(fā)送數(shù)據(jù)交換。當(dāng)網(wǎng)絡(luò)控制器102a操作于GMII或MII模式時(shí),TX_EN/TXD〔8〕使用為發(fā)送致能訊號(hào)。于TBI模式,此訊號(hào)為發(fā)送數(shù)據(jù)總線之第8位。RX_DV/RXD〔8〕為用以表示有效接收數(shù)據(jù)正出現(xiàn)于RX接腳之輸入。于TBI模式,此訊號(hào)為接收數(shù)據(jù)總線之第8位。
當(dāng)網(wǎng)絡(luò)控制器102a操作于GMII或MII模式時(shí),RX_ER/RXD〔9〕為表示外部收發(fā)器裝置已偵測(cè)得于正傳輸于RXD接腳之接收訊框中之編碼錯(cuò)誤之輸入。于TBI模式,此訊號(hào)為接收數(shù)據(jù)總線之第9位。MII發(fā)送時(shí)脈輸入TX_CLK為連續(xù)之時(shí)脈輸入,該時(shí)脈輸入提供用來傳輸離開于MII模式之網(wǎng)絡(luò)控制器102a之TX_EN和TXD〔3:0〕訊號(hào)之時(shí)序參考。GTX_CLK為連續(xù)之125MHz之時(shí)脈輸出,該時(shí)脈輸出提供當(dāng)該裝置操作于GMII或TBI模式時(shí)從網(wǎng)絡(luò)控制器來之TX_EN和TXD訊號(hào)之時(shí)序參考。RX_CLK為時(shí)脈輸入,提供當(dāng)裝置操作于MII或GMII模式時(shí),傳輸訊號(hào)進(jìn)入網(wǎng)絡(luò)控制器之時(shí)序參考。COL為表示于網(wǎng)絡(luò)媒體上已偵測(cè)得碰撞之輸入,而載波感測(cè)輸入訊號(hào)CRS表示已偵測(cè)得由于發(fā)送或接收活動(dòng)其中任一之非閑置之媒體(當(dāng)裝置以全雙工模式操作時(shí)忽略CRS)。于TBI模式,10位碼字組(code group)表示8位數(shù)據(jù)包。一些10位碼字組用來表示命令。偶和奇碼字組之發(fā)生以及稱之為間歇(commas)之特定序列全部用來獲得并維持與PHY 110同步。RBCLK〔0)為用來鎖住從PHY裝置來之奇數(shù)碼字組之62.5MHz時(shí)脈輸入,而RBCLK〔1〕用來鎖住偶數(shù)碼字組。RBCLK〔1〕總是相關(guān)于RBCLK〔0〕180度反相。藉由外部PHY 111而確立COM_DET,以表示于RXD〔9:0〕輸入之碼字組包括有效間歇。
IPsec模塊124包括接口連接于存儲(chǔ)116和118之外部RAM接口。當(dāng)驅(qū)動(dòng)CKE為高時(shí),使用內(nèi)部RAM時(shí)脈以提供同步,否則使用差別(differential)時(shí)脈輸入CK和CK_L。RAM具有命令譯碼器,當(dāng)驅(qū)動(dòng)芯片選擇輸出CS_L為低時(shí),致能該命令譯碼器。于WE_L、RAS_L、和CAS_L接腳之樣式(pattern)定義發(fā)出至RAM之命令。使用庫地址輸出訊號(hào)BA〔1:0〕,以選擇應(yīng)用了命令之存儲(chǔ),以及由RAM地址輸出接腳A〔10:0〕所提供之地址選擇將要存取之RAM字符。RAM數(shù)據(jù)選通(strobe)I/O訊號(hào)DQS提供指示當(dāng)數(shù)據(jù)能夠讀取或?qū)懭胫畷r(shí)序,以及從存儲(chǔ)116或118其中任一寫入或讀取于RAM數(shù)據(jù)I/O接腳DQ〔31:0〕上之?dāng)?shù)據(jù)。
再回到圖2,以下提供網(wǎng)絡(luò)控制器102之接收和發(fā)送操作之運(yùn)作討論。從網(wǎng)絡(luò)媒體108(例如,光纖)接收數(shù)據(jù)訊框開始,訊框輸送到GMII 110(千兆位媒體獨(dú)立接口),例如,并行之串行字節(jié)或字符。GMII110依照接口協(xié)議傳送訊框至MAC 122,而MAC 122提供一些訊框管理功能。舉例而言,MAC 122識(shí)別訊框間之間隙(gap),處理半雙工之問題、碰撞和再試(retries),以及執(zhí)行其它譬如地址匹配和一些核對(duì)和計(jì)算之標(biāo)準(zhǔn)以太網(wǎng)功能。MAC 122亦過濾(filter)訊框,檢核他們的目的地地址,并依于一組所建立之規(guī)則而接受或拒絕訊框。
MAC 122能夠接受和剖析幾個(gè)標(biāo)頭格式,包括例如IPv4和IPv6標(biāo)頭。MAC 122從訊框標(biāo)頭中萃取某一信息。根據(jù)所萃取之信息,MAC122判定哪幾個(gè)優(yōu)先隊(duì)列(priority queue)(圖中未顯示)放置于訊框中。MAC放置一些信息,譬如訊框長(zhǎng)度和優(yōu)先信息,于控制字符中于訊框之前面,以及其它的信息,譬如是否通過核對(duì)和,于狀態(tài)字符中于訊框之后面。訊框傳送通過MAC 122,并儲(chǔ)存于存儲(chǔ)118(例如,32KB RAM)中。于此例子中,整個(gè)訊框儲(chǔ)存于存儲(chǔ)118中。訊框接續(xù)著依照于主存儲(chǔ)器128中之描述符192(圖4)下載至系統(tǒng)存儲(chǔ)128由描述符管理單元130所決定之位置,其中各接收描述符192包括指向系統(tǒng)存儲(chǔ)128中數(shù)據(jù)緩沖器194之指針。發(fā)送描述符包括指針或一系列之指針,如將于下文中作更詳細(xì)之討論。描述符管理單元130使用DMA 126以讀取接收描述符192并擷取指針至緩沖器194。將訊框?qū)懼料到y(tǒng)存儲(chǔ)128后,狀態(tài)產(chǎn)生器134創(chuàng)造狀態(tài)字符并將狀態(tài)字符寫至系統(tǒng)存儲(chǔ)128中之另一個(gè)區(qū)域,該狀態(tài)字符于本例子中為狀態(tài)環(huán)。然后狀態(tài)產(chǎn)生器134中斷處理器112。然后系統(tǒng)軟件(例如,圖4中之網(wǎng)絡(luò)驅(qū)動(dòng)程序)能檢核已經(jīng)在系統(tǒng)存儲(chǔ)128中之狀態(tài)信息。狀態(tài)信息包括,例如,訊框之長(zhǎng)度、作了什么處理、以及是否傳送了各種之核對(duì)和。
于發(fā)送操作中,主處理器112最初命令沿著網(wǎng)絡(luò)108之訊框傳輸,而于主處理器112中操作系統(tǒng)(OS)之TCP層186初始并建立連接至目的地。然后TCP層186創(chuàng)造可以是十分大之TCP訊框,包括數(shù)據(jù)包和TCP標(biāo)頭。IP層188創(chuàng)造IP標(biāo)頭,并亦創(chuàng)造以太網(wǎng)(MAC)標(biāo)頭,其中數(shù)據(jù)包,以及TCP、IP、和MAC標(biāo)頭可以儲(chǔ)存于主存儲(chǔ)器128中不同位置。然后于主處理器112中之網(wǎng)絡(luò)驅(qū)動(dòng)程序190可以組合數(shù)據(jù)包和標(biāo)頭于傳輸訊框中,而且訊框儲(chǔ)存于主存儲(chǔ)器128中之一個(gè)或多個(gè)數(shù)據(jù)緩沖器194中。舉例而言,典型之發(fā)送訊框可以存在于4個(gè)緩沖器194中,第一個(gè)包含以太網(wǎng)或MAC標(biāo)頭,第二個(gè)具有IP標(biāo)頭,第三個(gè)具有TCP標(biāo)頭,以及第四個(gè)緩沖器包含數(shù)據(jù)。網(wǎng)絡(luò)驅(qū)動(dòng)程序190產(chǎn)生包括一系列指向所有數(shù)據(jù)緩沖器194之指針之發(fā)送描述符192。
訊框數(shù)據(jù)從緩沖器194讀取入控制器102中。要執(zhí)行此讀取,描述符管理單元130讀取發(fā)送描述符192并發(fā)出一系列之讀取請(qǐng)求于使用DMA控制器126的主總線106上。然而,請(qǐng)求之?dāng)?shù)據(jù)部分可不按他們所請(qǐng)求之次序到達(dá),其中PCI-X接口104表示DMU 130與數(shù)據(jù)相關(guān)聯(lián)之該請(qǐng)求。使用此信息,組合RAM邏輯160組織并適當(dāng)?shù)嘏判虼藬?shù)據(jù)以重新構(gòu)成此訊框,并且亦可執(zhí)行一些包裝操作(packing operation)而配適(fit)各種數(shù)據(jù)件(data piece)在一起,并去除間隙。于組合RAM 160中經(jīng)組合后,訊框傳送至存儲(chǔ)116中(例如,于例示范例中之32KB RAM)。當(dāng)數(shù)據(jù)從組合RAM 160傳送時(shí),該數(shù)據(jù)亦傳送至發(fā)送剖析器162。發(fā)送剖析器162讀取標(biāo)頭,例如,MAC標(biāo)頭、IP標(biāo)頭(若有一個(gè)的話)、TCP或UDP標(biāo)頭,并且判定是哪一種之訊框,并亦看看關(guān)聯(lián)于發(fā)送描述符192中之控制位。數(shù)據(jù)訊框亦傳送至用來計(jì)算TCP和/或IP層核對(duì)和之發(fā)送核對(duì)和系統(tǒng)164。
發(fā)送描述符192可包括含有指示發(fā)送核對(duì)和系統(tǒng)164是否計(jì)算IP標(biāo)頭核對(duì)和和/或TCP核對(duì)和之位之控制信息。若設(shè)定了該等控制位,以及剖析器162識(shí)別或認(rèn)出該標(biāo)頭,則剖析器162告訴發(fā)送核對(duì)和系統(tǒng)164執(zhí)行核對(duì)和計(jì)算,以及將計(jì)算結(jié)果放在存儲(chǔ)116中訊框中之適當(dāng)位置。于整個(gè)訊框加載于存儲(chǔ)116中后,MAC 122能夠開始發(fā)送訊框,或于發(fā)送至網(wǎng)絡(luò)108之前,能夠于IPsec 124中執(zhí)行輸出安全處理(例如,加密和/或鑒別)。
藉由卸除發(fā)送核對(duì)和功能于本發(fā)明之網(wǎng)絡(luò)控制器102上,主處理器112有益地解除任務(wù)。為了主處理器112執(zhí)行核對(duì)和,必須花費(fèi)重要資源。雖然核對(duì)和之計(jì)算相當(dāng)簡(jiǎn)單,但是包含了整個(gè)訊框之核對(duì)和必須插入于訊框之開始處。于習(xí)知之架構(gòu)中,主計(jì)算機(jī)使一個(gè)“傳遞(pass)”通過訊框以計(jì)算核對(duì)和,然后插入于訊框開始處。然后當(dāng)數(shù)據(jù)加載控制器中時(shí),再一次讀取數(shù)據(jù)。網(wǎng)絡(luò)控制器102復(fù)藉由使用經(jīng)由描述符192和DMA控制器126直接存取于系統(tǒng)存儲(chǔ)128之組合訊框,而減少加載于主處理器112。因此,網(wǎng)絡(luò)控制器102免除主處理器112之?dāng)?shù)次消耗存儲(chǔ)存取操作。
除了由上述識(shí)別之接收和發(fā)送功能外,網(wǎng)絡(luò)控制器102于發(fā)送操作期間亦可程序化以執(zhí)行各種之分段功能。舉例而言,TCP協(xié)議允許TCP訊框有64,000字節(jié)之大小。以太網(wǎng)協(xié)議并不允許如此大之?dāng)?shù)據(jù)傳輸,但是卻限制網(wǎng)絡(luò)訊框大約1500字節(jié)加上一些標(biāo)頭。甚至在允許有16,000字節(jié)網(wǎng)絡(luò)訊框之巨大訊框之例子中,協(xié)議并不支持64KB訊框大小。一般而言,發(fā)送訊框初始存在于系統(tǒng)存儲(chǔ)128之一個(gè)或多個(gè)數(shù)據(jù)緩沖器194中,具有MAC標(biāo)頭、IP標(biāo)頭、和TCP標(biāo)頭,伴隨著上達(dá)64KB之?dāng)?shù)據(jù)。使用描述符管理單元130讀取訊框標(biāo)頭,并取得和發(fā)送適當(dāng)數(shù)量之?dāng)?shù)據(jù)(當(dāng)由以太網(wǎng)或網(wǎng)絡(luò)協(xié)議所允許)。描述符管理單元130追蹤于較大TCP訊框中現(xiàn)用位置,并藉由區(qū)塊發(fā)送數(shù)據(jù)塊,各區(qū)塊具有其自己的標(biāo)頭組。
舉例而言,當(dāng)發(fā)生發(fā)送數(shù)據(jù),主處理器112寫入描述符192并通知控制器102。描述符管理單元130接收全部表列之指針,該等指針識(shí)別數(shù)據(jù)緩沖器194,并判定是否TCP區(qū)段經(jīng)過授權(quán)。然后描述符管理單元130讀取標(biāo)頭緩沖器并判定能夠讀取多少數(shù)據(jù)。標(biāo)頭和適當(dāng)數(shù)量之?dāng)?shù)據(jù)讀入組合RAM 160中,并且組合和發(fā)送訊框。然后控制器102再讀取標(biāo)頭和次一個(gè)區(qū)塊或未發(fā)送數(shù)據(jù)之部分,適當(dāng)?shù)匦拚龢?biāo)頭,并形成次一個(gè)訊框于序列中。然后以各發(fā)送部分于IPsec系統(tǒng)124中經(jīng)過任何選擇之安全處理,重復(fù)此處理直到整個(gè)訊框已發(fā)送完為止。
本發(fā)明之網(wǎng)絡(luò)控制器102亦較佳地于其中并有IPsec處理。對(duì)照于卸除IPsec處理之習(xí)知系統(tǒng),本發(fā)明使用板上(on-board)IPsec處理,該板上IPsec處理可用單芯片裝置102a執(zhí)行(圖3)。于習(xí)知系統(tǒng)中,無論是主處理器執(zhí)行IPsec處理或共同處理器(co-processor),皆使用與網(wǎng)絡(luò)控制器分離。使用主處理器非常慢,以及于任何其中一種情況,訊框至少三次經(jīng)過存儲(chǔ)總線傳送。舉例而言,當(dāng)使用共同處理器時(shí),當(dāng)從存儲(chǔ)讀取訊框并送至共同處理器時(shí),該訊框傳送經(jīng)過總線一次,當(dāng)傳送回系統(tǒng)存儲(chǔ)時(shí),訊框再經(jīng)過總線一次,以及當(dāng)訊框送至網(wǎng)絡(luò)控制器時(shí),其經(jīng)過總線第三次。此處理耗費(fèi)PCI總線上相當(dāng)?shù)念l寬,并不利地沖擊到系統(tǒng)性能。于接收方向?qū)崿F(xiàn)相似的性能喪失。
IPsec處理有二個(gè)主要目標(biāo)第一個(gè)目標(biāo)是加密、或拌碼(scramble)處理該數(shù)據(jù),而使得未經(jīng)授權(quán)之人或系統(tǒng)不能讀取該數(shù)據(jù)。第二個(gè)目標(biāo)是鑒別,以確保封包未訛誤和封包是從所期望之人或系統(tǒng)傳來。以下進(jìn)行板上IPsec處理之簡(jiǎn)短討論。本發(fā)明之網(wǎng)絡(luò)控制器102具有使用SA存儲(chǔ)接口142、SA查詢146、和SA存儲(chǔ)140之安全關(guān)聯(lián)(SAs)之優(yōu)點(diǎn)。以上簡(jiǎn)短的強(qiáng)調(diào),安全關(guān)聯(lián)事項(xiàng)為收集描述特定安全協(xié)議之位,例如,是否IPsec部分124為執(zhí)行加密或鑒別,或是此二者,以及復(fù)描述使用了什么樣的算法。有數(shù)種標(biāo)準(zhǔn)之加密和鑒別算法,如此SA接口142和SA查詢146指示哪一個(gè)用于特定之訊框。于本例子中之SA存儲(chǔ)140為專用存儲(chǔ),儲(chǔ)存加密之密碼鑰匙。依照IPsec協(xié)議而獲得該等SA,由此交換充分的信息與網(wǎng)絡(luò)上之使用者或系統(tǒng),以決定使用哪些算法,并允許二個(gè)部件產(chǎn)生相同之密碼鑰匙。于完成信息交換后,軟件呼叫驅(qū)動(dòng)程序190,該驅(qū)動(dòng)程序190將結(jié)果寫入SA存儲(chǔ)140中。
一旦完成了密碼鑰匙交換,適當(dāng)?shù)奈淮嬖谟赟A存儲(chǔ)140中,該等位指示將使用哪一個(gè)密碼鑰匙,和哪一個(gè)鑒別算法,以及實(shí)際的密碼鑰匙。于發(fā)送模式,關(guān)聯(lián)于給定輸出訊框之描述符192之部分包括進(jìn)入SA存儲(chǔ)140之指針。當(dāng)描述符管理單元130讀取描述符192時(shí),該描述符管理單元130發(fā)送請(qǐng)求訊號(hào)至SA存儲(chǔ)接口142以取得密碼鑰匙,然后該描述符管理單元130發(fā)送密碼鑰匙至密碼鑰匙FIFO 172中,該密碼鑰匙FIFO 172分別供應(yīng)TX IPsec處理模塊174a和174b。當(dāng)加密和鑒別將使用于發(fā)送時(shí),處理會(huì)稍微不同,因?yàn)槿蝿?wù)并非并行完成。鑒別為雜湊(hash)之加密數(shù)據(jù),而結(jié)果,鑒別一直要等到至少一部分之加密已完成為止。因?yàn)榧用芸梢苑磸?fù)經(jīng)過一系列之?dāng)?shù)據(jù)塊,而因此在加密處理之開始和有效獲得第一個(gè)加密數(shù)據(jù)之間可能有延遲。為避免具有此延遲而影響了裝置性能,范例網(wǎng)絡(luò)接口102使用二個(gè)TX IPsec處理引擎174a和174b,其中于所例示例子中,一個(gè)TX IPsec處理引擎處理奇數(shù)號(hào)訊框,另一個(gè)處理偶數(shù)號(hào)訊框。
執(zhí)行IPsec處理之前,TX IPsec剖析器170剖析訊框標(biāo)頭,并尋找其中易變的字段,該等字段為未經(jīng)鑒別之標(biāo)頭內(nèi)之字段,因?yàn)楫?dāng)訊框行經(jīng)網(wǎng)絡(luò)108時(shí),該等字段會(huì)改變。舉例而言,當(dāng)訊框從路由器越過網(wǎng)際網(wǎng)絡(luò)至路由器時(shí),于IP標(biāo)頭內(nèi)之目的地地址改變。發(fā)送IPsec剖析器170識(shí)別易變的字段,并傳送信息至TX IPsec處理器174,該TXIPsec處理器174選擇性地跳過訊框之易變字段部分。處理之訊框送至FIFO 178a和178b,并最終累積于存儲(chǔ)118中。鑒別處理之結(jié)果為完整檢核值(ICV),該值當(dāng)訊框從存儲(chǔ)118傳輸至網(wǎng)絡(luò)媒體108時(shí),由插入?yún)^(qū)塊179插入于適當(dāng)?shù)腎Psec標(biāo)頭。
于接收模式,接收之訊框進(jìn)入MAC 122和RX剖析器144。RX剖析器144剖析進(jìn)入之訊框上達(dá)IPsec標(biāo)頭,并從該訊框萃取信息。對(duì)于RX剖析器144為重要字段者為例如于IPsec標(biāo)頭內(nèi)之目的地IP地址、安全協(xié)議索引(Security Protocol Index;SPI)、和指示是否IPsec標(biāo)頭為鑒別標(biāo)頭(AH)或封裝安全協(xié)議(encapsulation security protocol;ESP)標(biāo)頭之協(xié)議位。一些萃取之信息傳送至SA查詢區(qū)塊146。SA查詢區(qū)塊146識(shí)別適當(dāng)?shù)腟A,并輸送信息至SA存儲(chǔ)接口142,該SA存儲(chǔ)接口142擷取SA并將該SA放置入密碼鑰匙FIFO 152中。
SA查詢區(qū)塊146使用芯片上SPI表(on-chip SA Table)和不在芯片上(off-chip)之SA存儲(chǔ)140。SPI表構(gòu)成4096個(gè)箱(bin),各箱包括4個(gè)登錄(entry)。該等登錄包括32位SPI、雜湊之目的地地址(DA)、表示協(xié)議之位、和表示該登錄是否已使用之位。于SA存儲(chǔ)中之對(duì)應(yīng)登錄包含全DAs和SA(當(dāng)有鑒別和加密時(shí),二個(gè)SAs)。藉由雜湊SPI而判定用于各登錄之箱。欲查詢SA,使用從接收訊框來之雜湊之SPI以判定搜尋哪一個(gè)箱。在箱內(nèi),SA查詢區(qū)塊146搜尋匹配于全SPI之登錄、目的地地址雜湊、和協(xié)議位。于搜尋之后,SA查詢區(qū)塊將登錄寫于SA指針FIFO 148,該SA指針FIFO 148識(shí)別匹配登錄或指示未發(fā)現(xiàn)匹配。就在安全處理之前,執(zhí)行從SA存儲(chǔ)之DA地址檢核。若沒有匹配,則于有問題之訊框不執(zhí)行安全處理?;谟赟A指針FIFO 148中之登錄,取得從外部SA存儲(chǔ)140來之密碼鑰匙,并置放于密碼鑰匙FIFO 152中。RX IPsec處理器150取得來自于FIFO 152之密碼鑰匙、讀取出自于存儲(chǔ)118的對(duì)應(yīng)訊框數(shù)據(jù)、并當(dāng)需要時(shí)開始處理訊框。對(duì)于接收處理,并行處理解密和鑒別(于接收側(cè),并非依序處理解密和鑒別),而因此于此范例中僅使用一個(gè)RX IPsec處理器。
RX IPsec剖析器154剖析跟隨著ESP標(biāo)頭之標(biāo)頭。加密跟隨著ESP標(biāo)頭之任何標(biāo)頭,一直到產(chǎn)生解密為止,方可剖析此標(biāo)頭。在能計(jì)算出TCP/UDP核對(duì)和之前,以及能夠檢核填補(bǔ)位之前,必須完成此剖析。解密數(shù)據(jù)儲(chǔ)存于存儲(chǔ)116中。為了執(zhí)行此TCP/UDP核對(duì)和和填補(bǔ)檢核而不須再一次儲(chǔ)存訊框數(shù)據(jù),這些功能當(dāng)數(shù)據(jù)從存儲(chǔ)116傳輸至主存儲(chǔ)器128時(shí)由核對(duì)和和填補(bǔ)檢核系統(tǒng)156所執(zhí)行。除了上述強(qiáng)調(diào)之板上IPsec處理和TCP分段外,網(wǎng)絡(luò)控制器102于執(zhí)行中斷時(shí)亦提供性能改進(jìn)。當(dāng)要求主處理器從網(wǎng)絡(luò)裝置中讀取緩存器時(shí),讀取潛伏時(shí)間(read latency)很長(zhǎng)。這些潛伏時(shí)間不利地沖擊系統(tǒng)性能。尤其是,當(dāng)主處理器時(shí)脈速度繼續(xù)增加時(shí),時(shí)脈速度與從網(wǎng)絡(luò)控制器經(jīng)由PCI或其它主總線來之取得反應(yīng)時(shí)間之間的不均等(disparity)變得較大。因此,當(dāng)主處理器需要從網(wǎng)絡(luò)裝置讀取時(shí),處理器必須等待較大量之時(shí)脈循環(huán),由此而可能導(dǎo)致?lián)p失。
網(wǎng)絡(luò)接口102藉由用寫入操作代替讀取操作,而避免許多讀取潛伏時(shí)間。寫入操作并不構(gòu)成問題,因?yàn)樗麄兡馨l(fā)生而不涉及處理器112。因此當(dāng)寫入信息送至FIFO時(shí),只要寫入是在小的叢發(fā)(burst),則網(wǎng)絡(luò)控制器102能夠花費(fèi)所需之時(shí)間執(zhí)行寫入,而不會(huì)不良的加載處理器。為了在發(fā)送操作期間避免讀取操作,驅(qū)動(dòng)器于系統(tǒng)存儲(chǔ)128中創(chuàng)造描述符192,然后將指針寫至網(wǎng)絡(luò)控制器102之緩存器132之該描述符。控制器102之DMU 130看到緩存器132之內(nèi)容,并直接從系統(tǒng)存儲(chǔ)128中讀取所需之?dāng)?shù)據(jù),而不進(jìn)一步中斷處理器112。對(duì)于接收操作,驅(qū)動(dòng)程序軟件190識(shí)別于系統(tǒng)存儲(chǔ)128中之空緩沖器194,并將對(duì)應(yīng)之登錄寫至緩存器132中。描述符管理單元130寫至發(fā)送描述符環(huán)中之指針,以指示已處理了哪些發(fā)送描述符192,以及寫至于狀態(tài)環(huán)中之指針,以指示已使用了哪些接收緩沖器194。
不像習(xí)知之架構(gòu),需要主處理器讀取于網(wǎng)絡(luò)控制器中之中斷緩存器,本發(fā)明產(chǎn)生并使用位于系統(tǒng)存儲(chǔ)128之預(yù)定區(qū)域(例如,依于初始化而決定之位置)之控制狀態(tài)區(qū)塊(CSB)196。網(wǎng)絡(luò)控制器102將任何系統(tǒng)所需之緩存器值寫至CSB 196。詳言之,已完全處理訊框后,產(chǎn)生中斷之前,網(wǎng)絡(luò)控制器102將中斷緩存器之復(fù)本寫至CSB 196。然后,控制器102確立中斷;因此當(dāng)主處理器112看到緩存器132中之中斷時(shí),接收之?dāng)?shù)據(jù)于接收數(shù)據(jù)緩沖器194中已經(jīng)可以使用。
下文中將結(jié)合圖式而提供范例網(wǎng)絡(luò)接口控制器102之各種操作和結(jié)構(gòu)之詳細(xì)說明。詳言之,下文中更詳細(xì)顯示和描述了描述符管理特征、發(fā)送數(shù)據(jù)訊框分段和核對(duì)和、以及安全處理之詳細(xì)說明,以促使了解本發(fā)明之范例控制器102之內(nèi)容。
描述符管理茲參照?qǐng)D2、圖4、和圖5A至圖5J,以下將顯示和說明描述符192之詳細(xì)說明和范例控制器102之操作。圖5A顯示主存儲(chǔ)器128,包括控制器狀態(tài)區(qū)塊(CSB)196、訊框數(shù)據(jù)緩沖器194、用來發(fā)送和接收描述符192之整數(shù)“n”描述符環(huán)(descriptor ring)DR1…DR n、以及整數(shù)“m”接收狀態(tài)環(huán)199,RSR1…RSR m。發(fā)送及接收描述符192儲(chǔ)存于此處稱之為描述符環(huán)DR之隊(duì)列中,以及CSB 196包括指至描述符環(huán)DR之描述符環(huán)指針DR_PNTR1…DR_PNTRn。于范例控制器102中,對(duì)應(yīng)于4個(gè)優(yōu)先網(wǎng)絡(luò)通訊量,設(shè)有4個(gè)發(fā)送描述符環(huán),用來發(fā)送訊框,和設(shè)有4個(gè)接收描述符環(huán)用來接收訊框。于此執(zhí)行中之各描述符環(huán)DR視為連續(xù)之環(huán)結(jié)構(gòu),其中考慮于環(huán)中之第一存儲(chǔ)位置正來自其最后存儲(chǔ)位置之后。圖5B顯示范例CSB 196之指針和其它的內(nèi)容,而圖5C顯示于控制器102中之各種指針和長(zhǎng)度緩存器132。圖5D顯示范例發(fā)送描述符環(huán)之進(jìn)一步詳細(xì)說明。圖5H和圖5I分別顯示相關(guān)于范例接收描述符和接收狀態(tài)環(huán)之詳細(xì)說明。圖5E和圖5F顯示范例發(fā)送描述符,圖5G顯示范例接收描述符,以及圖5J顯示范例接收狀態(tài)環(huán)登錄。
如圖5A中所示,描述符192單獨(dú)包括指至系統(tǒng)存儲(chǔ)128中一個(gè)或多個(gè)數(shù)據(jù)緩沖器194之指針,以及如圖5E至圖5G中所示之控制信息。藉由儲(chǔ)存于控制器緩存器132中之指針、儲(chǔ)存于系統(tǒng)存儲(chǔ)128中CSB196中之指針、和中斷訊號(hào),而提供控制器102和軟件驅(qū)動(dòng)程序190之間的同步。于操作中,于控制器102中之描述符管理單元130經(jīng)由總線接口104之DMA控制器126而讀取描述符192,以便判定將要發(fā)送之輸出訊框之存儲(chǔ)位置(例如,于數(shù)據(jù)緩沖器194中),和儲(chǔ)存接收自網(wǎng)絡(luò)108之輸入訊框之位置。藉由網(wǎng)絡(luò)控制器102寫入CSB 196和藉由于主處理器112中之驅(qū)動(dòng)程序190而讀取,以及藉由驅(qū)動(dòng)程序190而寫入描述符管理緩存器132和藉由于控制器102中之描述符管理單元130而讀取。范例描述符系統(tǒng)一般促進(jìn)關(guān)于軟件驅(qū)動(dòng)程序190和控制器102之間發(fā)送和接收操作之信息交換。
茲參照?qǐng)D5B,范例CSB 196包括進(jìn)入描述符和狀態(tài)環(huán)中之指針,以及控制器之中斷緩存器之內(nèi)容復(fù)本。發(fā)送指針TX_RD_PTR0至TX_RD_PTR3為分別對(duì)應(yīng)于發(fā)送優(yōu)先權(quán)3至0之描述符讀取指針,該等指針正指向由控制器102從對(duì)應(yīng)之優(yōu)先發(fā)送描述符環(huán)所讀取之最后64位四字符(quad word;QWORD)。接收狀態(tài)指針STAT_WR_PTR0至STAT_WR_PTR3為分別對(duì)應(yīng)于發(fā)送優(yōu)先權(quán)3至0之描述符寫入指針,該等指針正指向由控制器102寫至對(duì)應(yīng)之優(yōu)先接收狀態(tài)環(huán)之最后QWORD。CSB 196亦包括中斷0緩存器復(fù)本INT0_COPY,該INT0_COPY為控制器102中中斷0緩存器之內(nèi)容復(fù)本。
圖5C顯示相關(guān)于控制器102中描述符管理單元130之緩存器132。發(fā)送描述符基底指針TX_RING[3:0]_BASE包括對(duì)應(yīng)于優(yōu)先權(quán)之發(fā)送描述符環(huán)之開始之存儲(chǔ)地址,以及提供發(fā)送描述符環(huán)之長(zhǎng)度于TX_RING[3:0]_LEN緩存器中。儲(chǔ)存發(fā)送描述符寫入指針于緩存器TX_WR_PTR[3:0]中,其中該驅(qū)動(dòng)程序軟件190更新這些緩存器正指向由驅(qū)動(dòng)器寫至對(duì)應(yīng)于發(fā)送描述符環(huán)之最后QWORD。接收描述符基底指針RX_RING[3:0]_BASE包括對(duì)應(yīng)于優(yōu)先權(quán)之接收描述符環(huán)之開始之存儲(chǔ)地址(例如,于主存儲(chǔ)器128中),以及提供這些接收描述符環(huán)之長(zhǎng)度于RX_RING[3:0]_LEN緩存器中。藉由驅(qū)動(dòng)程序190正指向由驅(qū)動(dòng)器寫至對(duì)應(yīng)接收描述符環(huán)之最后QWORD,而更新接收描述符寫入指針RX_WR_PTR[3:0]。接收狀態(tài)環(huán)基底指針緩存器STAT_RING[3:0]_BASE表示接收狀態(tài)環(huán)之存儲(chǔ)地址,而STAT_RING[3:0]_BASE表示于存儲(chǔ)128中對(duì)應(yīng)接收狀態(tài)環(huán)199之長(zhǎng)度。RX_BUF_LEN表示接收數(shù)據(jù)緩沖器194之QWORDS之?dāng)?shù)目,此處所有之接收數(shù)據(jù)緩沖器194有相同之長(zhǎng)度,而CSB_ADDR表示于主存儲(chǔ)器128中CSB 196之地址。
欲進(jìn)一步說明于數(shù)據(jù)傳輸中描述符管理操作,圖5D顯示主存儲(chǔ)器128和描述符管理單元130,包括于主存儲(chǔ)器128中之范例發(fā)送描述符環(huán)和于控制器102之描述符管理單元130中之對(duì)應(yīng)描述符緩存器132。此外,圖5E和圖5F分別顯示范例發(fā)送描述符192a和控制旗標(biāo)。于圖5E之發(fā)送描述符192a中,BUF1_ADR[39:0]包括與描述符192a關(guān)聯(lián)之第一數(shù)據(jù)緩沖器194之主存儲(chǔ)器128中之地址。描述符192a亦包括發(fā)送旗標(biāo)(圖5E和圖5F之TFLAGS1)193,該發(fā)送旗標(biāo)193包括MORE_CTRL位以指示包含與虛擬局域網(wǎng)絡(luò)(VLAN)操作和TCP分段操作相關(guān)之信息之第二64位控制字符。當(dāng)選擇IPsec安全和第4層處理時(shí),ADD_FCS/IVLEN1位和IVLEN0位用來控制于不存在IPsec處理時(shí)之FCS產(chǎn)生,或表示封裝安全協(xié)議(ESP)初始化向量(initialization vector;IV)之長(zhǎng)度。使用IPCK位以表示控制器102是否產(chǎn)生用于發(fā)送訊框之第3層(IP層)核對(duì)和,以及L4CK旗標(biāo)位表示控制器102是否產(chǎn)生第4層(例如,TCP、UDP等)核對(duì)和。若與描述符192a相關(guān)聯(lián)之?dāng)?shù)據(jù)緩沖器194之?dāng)?shù)目少于8個(gè),則以3個(gè)緩沖器計(jì)數(shù)字元BUF_CNT來表示。若與描述符192a相關(guān)聯(lián)之?dāng)?shù)據(jù)緩沖器194之?dāng)?shù)目多于8個(gè),則緩沖器計(jì)數(shù)提供于描述符192a之BUF_CNT[7:0]字段。
于描述符192a中之BYTECOUNT1[15:0]欄表示第一數(shù)據(jù)緩沖器194有多少字節(jié)之長(zhǎng)度。PAD_LEN欄包括從與訊框相關(guān)之ESP標(biāo)尾來之填補(bǔ)長(zhǎng)度值,而若設(shè)定了MORE_CTRL位,則NXT_HDR欄提供從ESP標(biāo)尾來之次一個(gè)標(biāo)頭信息(用于IPv4之協(xié)議數(shù)據(jù))。接著于NXT_HDR欄,ESP_AUTH位195表示訊框于ESP標(biāo)尾中是否包括鑒別數(shù)據(jù)域,以及安全關(guān)聯(lián)(SA)指針欄SA_PTR[14:0]指向?qū)?yīng)于訊框之外部SA存儲(chǔ)140(圖2)中之登錄。二位VLAN旗標(biāo)控制命令欄TCC[1:0]197包括引起控制器102相加、修正、或刪除VLAN旗標(biāo),或發(fā)送未改變之訊框之命令,最大分段大小欄MSS[13:0]指定最大分段大小,該最大分段大小使控制器102之TCP分段硬件將產(chǎn)生與描述符192a相關(guān)聯(lián)之訊框。若TCC欄之內(nèi)容為10或11,則控制器102將發(fā)送旗標(biāo)控制信息欄TCI[15:0]之內(nèi)容作為輸出訊框之第15和16字節(jié)。此處訊框數(shù)據(jù)占據(jù)多于一個(gè)數(shù)據(jù)緩沖器194,使用一個(gè)或多個(gè)額外的緩沖器地址欄BUF_ADR[39:0]以表示該訊框數(shù)據(jù)之地址,并使用相關(guān)之BYTECOUNT[15:0]欄以表示于額外訊框緩沖器194中字節(jié)之?dāng)?shù)目。
當(dāng)網(wǎng)絡(luò)軟件驅(qū)動(dòng)程序190寫描述符192于描述符環(huán)時(shí),其亦寫至于描述符管理單元緩存器132中之描述符寫入指針緩存器132,以通知控制器102可有效使用新的描述符192。驅(qū)動(dòng)器寫至給定描述符管理單元緩存器132之值為指至剛寫完剛剛通過該描述符192之主存儲(chǔ)器128中64位之字符(QWORD)之指針,其中該指針為以QWORDs來測(cè)量從描述符環(huán)開始之位移值(offset)。控制器102不從此位移值或從任何超過此位移值之值讀取。當(dāng)已經(jīng)寫入發(fā)送描述符寫入指針緩存器(例如,譬如圖5D中之TX_WR_PTR1之DMU緩存器132),而若尚未進(jìn)行傳輸,則控制器102開始傳輸處理。當(dāng)傳輸處理開始,則繼續(xù)傳輸直到無未處理之發(fā)送描述符192維持于發(fā)送描述符環(huán)為止。當(dāng)控制器102完成給予之傳輸描述符192,則控制器102將描述符讀取指針(例如,于圖5D中之指針TX_RD_PTR1)寫至CSB 196。
于此點(diǎn),描述符讀取指針TX_RD_PTR1指向下個(gè)控制器102將讀取之描述符192之開始。描述符192之值為剛剛超過已讀取之最后描述符之末端之QWORD之QWORDs中之位移值。此指針TX_RD_PTR1因此表示能夠再使用部分描述符空間之驅(qū)動(dòng)程序190。驅(qū)動(dòng)程序190不寫至讀取指針指至描述符空間之位置,或不寫至該位置與描述符寫入指針TX_RD_PTR1所指向位置之前之1QWORD之間之任何事物。當(dāng)描述符讀取指針TX_RD_PTR1相等于對(duì)應(yīng)之描述符寫入指針TX_WR_PTR1,則描述符環(huán)為空環(huán)(ring empty)。欲于空環(huán)與滿環(huán)(ringfull)狀況之間作區(qū)別,驅(qū)動(dòng)程序190須確保于環(huán)中總有至少一個(gè)未使用之QWORD。于此方式,當(dāng)寫入指針TX_WR_PTR1為一個(gè)小于讀取指針TX_RD_PTR1模數(shù)(modulo)環(huán)大小時(shí),發(fā)送描述符環(huán)為滿環(huán)。
再參照?qǐng)D5G,顯示范例接收描述符192b,包括指向主系統(tǒng)存儲(chǔ)128中接收緩沖器194區(qū)塊之指針BUF_ADR[39:0],以及計(jì)數(shù)欄BUF_MULT[7:0],表示于區(qū)塊中緩沖器194之?dāng)?shù)目,其中于所示例子中所有之接收緩沖器194為相同之長(zhǎng)度而僅有一個(gè)緩沖器用于各接收訊框。若該接收訊框太大而不適合于緩沖器104中,則將該訊框作截除,以及TRUNC位設(shè)于對(duì)應(yīng)接收狀態(tài)環(huán)登錄199。圖5H顯示范例接收描述符環(huán),包括整數(shù)n接收描述符192b,用來儲(chǔ)存指向于主存儲(chǔ)器128中之n接收數(shù)據(jù)緩沖器194之地址。于控制器102之描述符管理單元130中之緩存器132包括對(duì)應(yīng)于接收描述符環(huán)之環(huán)基底和長(zhǎng)度緩存器(RX_RING_BASE和RX_RING_LEN),以及接收寫入指針緩存器(RX_WR_PTR1)包括于所例示描述符環(huán)中之次一個(gè)未使用之接收描述符192b之地址,以及接收緩沖器長(zhǎng)度緩存器(RX_BUF_LEN)包括所有緩沖器194之長(zhǎng)度。描述符管理單元130亦具有相關(guān)于接收狀態(tài)環(huán)之位置之緩存器132(STAT_RING1_BASE和STAT_RING1_LEN),該接收狀態(tài)環(huán)在一個(gè)或多個(gè)緩沖器194內(nèi)具有對(duì)應(yīng)于接收數(shù)據(jù)之登錄199。于主存儲(chǔ)器128中之控制狀態(tài)區(qū)塊196亦包括緩存器STAT_WR_PTR1,該緩存器STAT_WR_PTR1之內(nèi)容提供地址于次一個(gè)未使用狀態(tài)環(huán)位置之接收狀態(tài)環(huán),其中若STAT_WR_PTR1等于RX_WR_PTR1,則該接收狀態(tài)環(huán)考慮為空環(huán)。
圖5I和圖5J分別顯示范例接收狀態(tài)環(huán)199和登錄之進(jìn)一步詳細(xì)說明。圖5J之范例接收狀態(tài)環(huán)登錄包括從接收訊框復(fù)制之VLAN標(biāo)記(tag)控制信息TCI[15:0],和訊息計(jì)數(shù)欄MCNT[15:0]表示復(fù)制于接收數(shù)據(jù)緩沖器194中之接收字節(jié)數(shù)目。三個(gè)位IPSEC_STAT[2:0]欄表示從IPsec安全系統(tǒng)124來之編碼狀態(tài),而TUNNEL_FOUND位表示于接收數(shù)據(jù)訊框中發(fā)現(xiàn)了第二IP標(biāo)頭。AH_ERR位表示鑒別標(biāo)頭(AH)失敗,ESPAH_ERR位表示ESP鑒別失敗,以及PAD_ERR位表示于接收訊框中ESP填補(bǔ)錯(cuò)誤。CRC位表示FCS或調(diào)正錯(cuò)誤(alignment error)以及TRUNC位表示接收訊框要長(zhǎng)于RX_BUF_LEN緩存器132之值(上述圖5C),并已經(jīng)過截除。VLAN標(biāo)記型式欄TT[1:0]表示是否接收訊框?yàn)槲从铇?biāo)記、標(biāo)記了優(yōu)先權(quán)、或標(biāo)記了VLAN,而RX_MATCH[2:0]欄表示接收地址匹配型式。IP_CK_ERR位表示IPv4標(biāo)頭核對(duì)和錯(cuò)誤,而IP標(biāo)頭偵測(cè)欄IP_HEADER[1:0]表示是否偵測(cè)到IP標(biāo)頭,若是如此,則是甚么型式之IP標(biāo)頭(例如,IPv4或IPv6)。L4_CK_ERR位表示于接收訊框中之第4層(例如,TCP或UDP)核對(duì)和錯(cuò)誤,而若偵測(cè)得任何標(biāo)頭的話,第4層標(biāo)頭偵測(cè)欄L4_HEADER表示所偵測(cè)得第4層標(biāo)頭之型式。此外,接收調(diào)正長(zhǎng)度欄RCV_ALIGN_LEN[5:0]于用于調(diào)正之MAC標(biāo)頭開始之前,提供插入之填補(bǔ)長(zhǎng)度。
如圖5H和圖5I中所示,于接收操作中,控制器102將“接收狀態(tài)環(huán)寫入指針STAT_WR_PTR[3:0]”(圖5B)寫至CSB 196中。網(wǎng)絡(luò)驅(qū)動(dòng)程序軟件190使用此等寫入指針,以判定于主存儲(chǔ)器128中之哪些接收緩沖器194已經(jīng)存滿。使用接收狀態(tài)環(huán)199來傳輸關(guān)于接收訊框之狀態(tài)信息,譬如所接收字節(jié)之?dāng)?shù)目和錯(cuò)誤信息,其中范例系統(tǒng)提供四個(gè)接收狀態(tài)環(huán)199,每一個(gè)各有優(yōu)先權(quán)。當(dāng)控制器102從網(wǎng)絡(luò)108接收輸入訊框時(shí),控制器102使用從適當(dāng)接收描述符環(huán)來之次一個(gè)接收描述符192,以判定于主存儲(chǔ)器128中何處儲(chǔ)存訊框。一旦所接收之訊框已復(fù)制于系統(tǒng)存儲(chǔ)128中,則控制器102將接收器狀態(tài)信息寫至對(duì)應(yīng)之接收狀態(tài)環(huán)199中。藉由于CSB 196中之接收狀態(tài)寫入指針(STAT_WR_PTR[3:0])而提供控制器102與驅(qū)動(dòng)程序軟件190之間之同步。此等指針STAT_WR_PTR[3:0]為以QWORDs從對(duì)應(yīng)環(huán)之開始處之位移值。
當(dāng)控制器102完成從網(wǎng)絡(luò)108中接收訊框,則控制器102將該狀態(tài)信息寫至于適當(dāng)接收狀態(tài)環(huán)199中次一個(gè)可使用之位置,并更新對(duì)應(yīng)之接收狀態(tài)寫入指針STAT_WR_PTR??刂破?02寫至此位置之值為指至環(huán)中狀態(tài)登錄之指針,該控制器102將寫至次一個(gè)位置。軟件驅(qū)動(dòng)程序190不讀取此登錄,或任何通過此登錄之登錄。范例控制器102沒有指向于各環(huán)中第一個(gè)未處理之接收狀態(tài)登錄之緩存器。確切地說,此信息從接收描述符指針RX_WR_PTR間接導(dǎo)得。因此,當(dāng)軟件驅(qū)動(dòng)程序190寫至于控制器102中其中一個(gè)RX_WR_PTR緩存器132時(shí)(圖5C),驅(qū)動(dòng)程序190確保于接收狀態(tài)環(huán)199中對(duì)應(yīng)于此緩沖器104可使用足夠的空間用于登錄。
傳輸數(shù)據(jù)訊框茲參照?qǐng)D2至圖4和圖6A至圖6E,控制器102使用上述之發(fā)送描述符192從主存儲(chǔ)器128中之?dāng)?shù)據(jù)緩沖器194發(fā)送訊框200。當(dāng)執(zhí)行于主處理器112中之應(yīng)用軟件程序184需要發(fā)送數(shù)據(jù)或信息封包至網(wǎng)絡(luò)108上之另一個(gè)計(jì)算機(jī)或裝置時(shí),提供封包至操作系統(tǒng)第3和4層軟件(例如,圖4中之TCP層軟件186和IP軟件188)。此等軟件層構(gòu)成各種標(biāo)頭和標(biāo)尾以形成發(fā)送訊框200。然后網(wǎng)絡(luò)接口驅(qū)動(dòng)程序軟件190組合包括一個(gè)或多個(gè)標(biāo)頭和數(shù)據(jù)包之訊框200,成為主存儲(chǔ)器數(shù)據(jù)緩沖器194,并因此更新于控制器102中之描述符和描述符管理單元緩存器132。于數(shù)據(jù)緩沖器194中之組合訊框包括第3層和第4層標(biāo)頭和對(duì)應(yīng)之核對(duì)和(例如,IP和TCP標(biāo)頭和核對(duì)和),以及MAC標(biāo)頭,如圖7A和圖7B中所示者。圖6A和圖6C分別以示意方式顯示使用第4層TCP和第3層網(wǎng)際網(wǎng)絡(luò)協(xié)議第4版(IPv4)形成發(fā)送訊框200a和200c用于傳輸和信道模式,而圖6B和圖6D分別以示意方式顯示使用IPv6形成發(fā)送訊框200b和200d用于傳輸和信道模式。然而,本發(fā)明并不限于TCP/IP實(shí)施方式,其中亦可以使用其它的協(xié)議。例如,亦可使用用戶數(shù)據(jù)報(bào)協(xié)議(UDP)第4層軟件來使用范例控制器102以傳輸和接收數(shù)據(jù)。
圖6A至圖6D,從應(yīng)用軟件184來之原始數(shù)據(jù)包提供至TCP層186作為TCP數(shù)據(jù)202。TCP層186儲(chǔ)存TCP數(shù)據(jù)202于主存儲(chǔ)器128中,并創(chuàng)造TCP標(biāo)頭204。顯示TCP范例TCP標(biāo)頭并于下文中參照?qǐng)D7A和圖7B而予說明。提供TCP數(shù)據(jù)202和TCP標(biāo)頭(例如,或指向那里之指針)至第3層軟件(例如,于此例子中之IP層188)。IP層188創(chuàng)造IP標(biāo)頭206(例如,于圖6A和圖6C中之IPv4標(biāo)頭206a,或于圖6B和圖6D中之IPv6標(biāo)頭206b)。對(duì)于IPv6(圖6B和圖6D),IP層188亦可以創(chuàng)造選用之延伸標(biāo)頭208。
此處使用發(fā)送安全處理,包括ESP加密和鑒別,該IP層188亦創(chuàng)造ESP標(biāo)頭210,和ESP標(biāo)尾212,和供IPv4使用之ESP鑒別欄214(圖6A和圖6C)。對(duì)于傳輸模式中之IPv6(圖6B),藉由IP層188而創(chuàng)造逐點(diǎn)躍進(jìn)目的地路由欄(hop-by-hop destination routing field)216和目的地選用欄218。對(duì)于信道模式中之IPv4,IP層188亦創(chuàng)造新的IPv4標(biāo)頭220。在ESP標(biāo)頭210之前,對(duì)于信道模式中之IPv6(圖6D),IP層188復(fù)創(chuàng)造新的IPv6標(biāo)頭222和新的延伸標(biāo)頭244。
對(duì)于圖6A之訊框200a,加密TCP標(biāo)頭204、TCP數(shù)據(jù)202、和ESP標(biāo)尾212,其中主軟件可執(zhí)行加密,或可配置范例網(wǎng)絡(luò)接口控制器210以執(zhí)行加密。執(zhí)行鑒別于整個(gè)ESP標(biāo)頭210、和加密之TCP標(biāo)頭204、TCP數(shù)據(jù)202、和ESP標(biāo)尾212。對(duì)于圖6B中之傳輸模式IPv6訊框200b,加密目的地選用(destination option)218、TCP標(biāo)頭204、TCP數(shù)據(jù)202、和ESP標(biāo)尾212,以及ESP標(biāo)頭210伴隨著加密之TCP標(biāo)頭204、TCP數(shù)據(jù)202、和ESP標(biāo)尾212而鑒別。于圖6C之信道模式IPv4例子,TCP標(biāo)頭204、TCP數(shù)據(jù)202、原來的IPv4標(biāo)頭206a、和ESP標(biāo)尾212被加密,然后可以伴隨著ESP標(biāo)頭210而鑒別。對(duì)于圖6D之IPv6信道模式例子,用經(jīng)鑒別之該等及ESP標(biāo)頭210,而加密TCP標(biāo)頭204、TCP數(shù)據(jù)202、ESP標(biāo)尾212、原來的延伸標(biāo)頭208、和原來的IPv6標(biāo)頭206b。
圖6E顯示創(chuàng)造ESP標(biāo)頭210和標(biāo)尾212后之范例發(fā)送訊框200a,顯示范例ESP標(biāo)頭210之進(jìn)一步詳細(xì)說明。ESP標(biāo)頭210包括安全參數(shù)索引(security parameters index;SPI),該安全參數(shù)索引結(jié)合了IP標(biāo)頭206a之目的地IP地址和ESP安全協(xié)議,而唯一地識(shí)別用于訊框200a之安全關(guān)聯(lián)(SA)。ESP標(biāo)頭210復(fù)包括表示由發(fā)送器和接收器所使用之計(jì)數(shù)值之序號(hào)欄,以識(shí)別個(gè)別之訊框,其中當(dāng)建立了安全關(guān)聯(lián),初始發(fā)送器和接收器計(jì)數(shù)值至0。若加密算法需要加密同步數(shù)據(jù),和TCP數(shù)據(jù)202以及TCP或其它第4層標(biāo)頭204,則訊框200a之酬載數(shù)據(jù)包括初始化向量(IV)226。
當(dāng)需要時(shí)加上填補(bǔ)字節(jié)230,以填滿將用為加密算法之密碼塊(cipher block)字節(jié)之倍數(shù)之明碼(plain text)數(shù)據(jù),和/或分別徑直調(diào)正(right-align)后續(xù)之PAD LENGTH和NEXT HEADER欄232和234于4字節(jié)字符內(nèi)之ESP標(biāo)尾212中,由此確保跟隨著標(biāo)尾之ESP鑒別數(shù)據(jù)214調(diào)正于4字節(jié)邊界。于ESP標(biāo)尾212中,PAD LENGTH欄232表示PAD字節(jié)230之?dāng)?shù)目,而NEXT HEADER欄234識(shí)別于受保護(hù)之酬載數(shù)據(jù)中之?dāng)?shù)據(jù)型式,譬如于IPv6中之延伸標(biāo)頭,或上層協(xié)議識(shí)別符(identifier)(例如,TCP、UDP、等等)。此處,選擇安全處理用于訊框200a,IP層188于前面的ESP標(biāo)頭210(例如,于所例示訊框200a中之IPv4標(biāo)頭206a)后立即修正協(xié)議標(biāo)頭,使于PROTOCOL欄中(例如,用于IPv6之“NEXT HEADER”欄)具有值(例如,“50”),表示后續(xù)之標(biāo)頭210為ESP標(biāo)頭。
圖7A及圖7B分別顯示用于IPv4和IPv6之范例TCP訊框格式200e和200f之示意圖,顯示各種標(biāo)頭之內(nèi)容。于圖7A中,范例訊框200e顯示具有TCP數(shù)據(jù)包202、TCP標(biāo)頭204、IPv4標(biāo)頭206a和MAC標(biāo)頭240,以及用于訊框檢核序列之4字節(jié)FCS欄。于圖7B中,訊框200f同樣包括TCP數(shù)據(jù)包202、TCP標(biāo)頭204、和MAC標(biāo)頭240,以及4字節(jié)FCS欄和IPv6標(biāo)頭206b。于此二種情況,計(jì)算遍及TCP數(shù)據(jù)202和TCP標(biāo)頭204而得到TCP核對(duì)和。于IPv4例子200e,計(jì)算遍及IPv4標(biāo)頭206a(IPv4標(biāo)頭206a之HEADER CHECKSUM欄)而得到IPv4標(biāo)頭核對(duì)和,該IP總長(zhǎng)度橫越IPv4標(biāo)頭206a、TCP標(biāo)頭204、和TCP數(shù)據(jù)202(于IPv4標(biāo)頭206a中之TOTAL LENGTH欄),而IEEE802.3長(zhǎng)度為IP總長(zhǎng)度加上于MAC標(biāo)頭240之選用LLC和SNAP欄中之0至8個(gè)字節(jié)(于MAC標(biāo)頭中之802.3 LENGTH/TYPE欄)。于圖7B之IPv6例子200f,IEEE 802.3長(zhǎng)度為TCP數(shù)據(jù)202加上TCP標(biāo)頭204和任何選用延伸標(biāo)頭(如于圖7B之IPv6標(biāo)頭中之最后欄所示),該值進(jìn)入MAC標(biāo)頭240之LENGTH/TYPE欄,而IP酬載長(zhǎng)度為TCP數(shù)據(jù)202加上TCP標(biāo)頭204和任何選用之延伸標(biāo)頭(IPv6標(biāo)頭206b之PAYLOAD LENGTH欄)。
TCP分段茲參照?qǐng)D8A至圖8D及圖9,控制器102能夠選用執(zhí)行輸出TCP和/或IP層核對(duì)和、TCP分段、和/或IPsec安全處理。此處,一個(gè)或多個(gè)該等功能從主處理器112卸載至控制器102,第3層軟件186可用虛擬值(pseudo value)而提供訊框200中之某些欄(例如,核對(duì)和、長(zhǎng)度、等等)。關(guān)于TCP層分段,控制器102能夠程序化而自動(dòng)從主存儲(chǔ)器128擷取發(fā)送訊框,此處訊框很大,而欲打斷該大訊框成為較小之訊框或訊框分段,該等小訊框或訊框分段滿足使用TCP分段系統(tǒng)260之網(wǎng)絡(luò)108之最大傳輸單元(MTU)需求。分段系統(tǒng)260包括與描述符管理單元130操作耦合之任何電路,配置該描述符管理單元130以實(shí)施如此處所說明之分段任務(wù)。然后控制器102用適當(dāng)?shù)腗AC、IP、和TCP標(biāo)頭發(fā)送該等分段。于所顯示之例子中,于主系統(tǒng)存儲(chǔ)128中之原有TCP訊框200為(可能過大之)IEEE 802.3或具有MAC、IP、和TCP標(biāo)頭之以太網(wǎng)訊框之形式。于范例控制器102中,IP標(biāo)頭206能夠是第4版或第6版其中任何之一,而IP和TCP標(biāo)頭可包括選用欄或延伸標(biāo)頭。網(wǎng)絡(luò)控制器102將使用于自動(dòng)產(chǎn)生之各分段訊框中該等標(biāo)頭之適當(dāng)修正之版本。于范例裝置102中,原有之TCP訊框能儲(chǔ)存于具任何數(shù)目之緩沖器194之主系統(tǒng)存儲(chǔ)128中,其中從訊框開始至TCP標(biāo)頭204之所有標(biāo)頭系儲(chǔ)存于第一緩沖器194中。
亦參照?qǐng)D7A和圖7B,于控制器102中修正IPv4訊框200e(圖7)之訊框欄802.3 LENGTH/TYPE、TOTAL LENGTH、IDENTIFICATION、HEADER CHECKSUM、SEQUENCE NUMBER、PSH、FIN、和TCPCHECKSUM欄,而其它各欄直接從原來的訊框中復(fù)制。于圖7B中,將修正于控制器102中于訊框200f中之LENGTH/TYPE、PAYLOADLENGTH、SEQUENCE NUMBER、PSH、FIN、和TCP CHECHSUM欄,用于各產(chǎn)生之(例如,分段)訊框。欲藉由控制器102致能用于訊框200之自動(dòng)TCP分段,于主處理器112中之驅(qū)動(dòng)程序190設(shè)定對(duì)應(yīng)發(fā)送描述符192之MORE_CTRL欄(圖5F)中之位,并亦包括用于描述符192之最大分段大小(MSS[13:0])欄之有效值。對(duì)于所有對(duì)應(yīng)產(chǎn)生之訊框,除了最后一個(gè)訊框外,長(zhǎng)度將為MSS[13:0]欄之值加上個(gè)別MAC、IP、和TCP標(biāo)頭240、206、和204之長(zhǎng)度,對(duì)于FCS加上四個(gè)字節(jié)。依于原來未分段數(shù)據(jù)之長(zhǎng)度,所產(chǎn)生之最后一個(gè)訊框之長(zhǎng)度可能較短。
圖8A顯示表250,顯示由輸出ESP處理所修正之訊框字段,而圖8B顯示表252,具有由鑒別標(biāo)頭(AH)處理所修正之訊框字段,其中表250和252更表示哪些訊框欄由主處理器軟件所創(chuàng)造,以及哪些訊框欄由控制器102所相加。于送出用于自動(dòng)TCP分段之發(fā)送訊框至控制器102之前,IP層188提供調(diào)整之虛擬標(biāo)頭核對(duì)和于TCP標(biāo)頭204之TCP核對(duì)和欄中。圖8C和圖8D提供表254和256,該表254和256顯示藉由產(chǎn)生發(fā)送訊框200之IP層軟件188所執(zhí)行之分別用于IPv4和IPv6之虛擬標(biāo)頭核對(duì)和。此核對(duì)和之值為說明于用于IPv4訊框之“傳輸控制協(xié)議功能規(guī)格(Transmission Control Protocol FunctionSpecification)”(RFC 793),第3.1節(jié),和用于IPv6訊框之于網(wǎng)際網(wǎng)絡(luò)協(xié)議中“第6版規(guī)格(Version 6 Specification)”(RFC 2460),第8.1節(jié),除了使用0值于計(jì)算之TCP長(zhǎng)度外之標(biāo)準(zhǔn)TCP虛擬標(biāo)頭核對(duì)和??刂破?02相加此適合用于各產(chǎn)生分段之TCP長(zhǎng)度。
對(duì)于IPv4訊框,于圖8C中之虛擬標(biāo)頭254包括32位IP來源地址、32位IP目的地地址、由用0填補(bǔ)于左邊之從IP標(biāo)頭來之8位協(xié)議欄(Protocol Field)所組成之16位字符、和TCP長(zhǎng)度(于此情況考慮為0)。對(duì)于IPv6訊框,于圖8D中之虛擬標(biāo)頭256包括128位IPv6來源地址、128位IPv6目的地地址、16位TCP長(zhǎng)度(考慮為0)、和由用0填補(bǔ)于左邊之8位協(xié)議識(shí)別符所組成之16位字符。若延伸標(biāo)頭存在,對(duì)于TCP具有值6,則8位協(xié)議識(shí)別符為IPv6標(biāo)頭或最后IPv6延伸標(biāo)頭之次一個(gè)標(biāo)頭欄(Next Header Field)之內(nèi)容。若致能TCP或UDP核對(duì)和產(chǎn)生而沒有TCP分段,則于虛擬標(biāo)頭核對(duì)和中所使用之TCP長(zhǎng)度包括TCP標(biāo)頭加上TCP數(shù)據(jù)域。然而,當(dāng)致能了TCP分段,控制器102自動(dòng)調(diào)整虛擬標(biāo)頭核對(duì)和以對(duì)于各產(chǎn)生之訊框包含適當(dāng)?shù)拈L(zhǎng)度。
程序化控制器102以執(zhí)行TCP分段,如下所述之計(jì)算各種修正欄之值。于MAC標(biāo)頭240內(nèi)之LENGTH/TYPE欄,依于是否其值小于600h,而解釋為長(zhǎng)度或以太網(wǎng)型式其中任何一者。若欄之值為600h或更大,則該欄考慮為以太網(wǎng)型式,于該情況對(duì)于所有產(chǎn)生之訊框使用該值于LENGTH/TYPE欄。然而,若值小于600h,則該欄解釋為IEEE802.3長(zhǎng)度欄,于此情況于控制器102中對(duì)于各產(chǎn)生之訊框計(jì)算適當(dāng)?shù)拈L(zhǎng)度值。產(chǎn)生用于長(zhǎng)度欄之值將表示包括LENGTH/TYPE欄之后除了FCS之所有字節(jié)之發(fā)送訊框之LLC數(shù)據(jù)(LLC Data)部分之位組長(zhǎng)度,并且不包括任何相加以延伸訊框至最小訊框大小之填補(bǔ)字節(jié)。于控制器102中之Tx剖析器162剖析發(fā)送訊框200之標(biāo)頭以判定IP版本(IPv4或IPv6)和各種標(biāo)頭之位置。IPv4 TOTAL LENGTH為IPv4數(shù)據(jù)報(bào)之位組長(zhǎng)度,該IPv4數(shù)據(jù)報(bào)包括IPv4標(biāo)頭206a(圖7)、TCP標(biāo)頭204、和TCP數(shù)據(jù)202,不包括MAC標(biāo)頭240或FCS。若IP版本為第4版,則硬件將使用此信息以產(chǎn)生正確的TOTAL LENGTH欄以用于各產(chǎn)生之訊框。對(duì)于IPv6,計(jì)算PAYLOAD LENGTH欄作為第一IPv6標(biāo)頭和FCS之間包括任何IPv6延伸標(biāo)頭之訊框200f之字節(jié)數(shù)。對(duì)于IPv4和IPv6兩者,Tx剖析器162產(chǎn)生對(duì)應(yīng)之TOTAL LENGTH或PAYLOADLENGTH欄值以用于已致能TCP分段之各產(chǎn)生之發(fā)送訊框。
因?yàn)楦鳟a(chǎn)生之TCP分段發(fā)送為分離之IP訊框,則各分段訊框之IPv4標(biāo)頭中之IDENTIFICATION欄是唯一的。于第一個(gè)此種分段訊框中,藉由Tx剖析器162將IDENTIFICATION欄從輸入訊框復(fù)制入構(gòu)成此第一分段訊框之第一存儲(chǔ)116中適當(dāng)?shù)奈恢?。剖析?62藉由將用于前面訊框之值增加1,而產(chǎn)生用于后續(xù)分段訊框之IDENTIFICATION欄。對(duì)于TCP標(biāo)頭204中之SEQUENCE NUMBER欄,TCP協(xié)議軟件186建立二個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)間之邏輯連接,并處理所有經(jīng)由此連接發(fā)送于一個(gè)方向之TCP用戶數(shù)據(jù)作為連續(xù)的字節(jié)流,其中各此種訊框指定序號(hào)(sequence number)。第一TCP封包之TCPSEQUENCE NUMBER欄包括于TCP數(shù)據(jù)域202中之第一字節(jié)之序號(hào)。經(jīng)由此相同邏輯連接發(fā)送之次一個(gè)TCP封包之SEQUENCE NUMBER欄為前面的封包之序號(hào)加上前面的封包之TCP數(shù)據(jù)域202之位組長(zhǎng)度。當(dāng)致能了自動(dòng)TCP分段,控制器102之Tx剖析器162使用從原來訊框來之用于第一分段訊框200之TCP SEQUENCE NUMBER欄,以及藉由將前面的訊框200之TCP數(shù)據(jù)域202之長(zhǎng)度加至前面的分段訊框200之SEQUENCE NUMBER欄之值,而獲得用于后續(xù)訊框200之SEQUENCE NUMBER。
TCP推動(dòng)(PSH)旗標(biāo)為送至接收器之指示,該接收器將立即處理接收之訊框而不必等待存滿接收器之輸入緩沖器,例如,此處輸入緩沖器可有多于一個(gè)接收訊框之空間。當(dāng)請(qǐng)求自動(dòng)TCP分段時(shí),于控制器102中之剖析器162對(duì)于所有產(chǎn)生之訊框200除了最后一個(gè)訊框200外,皆設(shè)定PSH位為0,該最后一個(gè)訊框200當(dāng)由TCP層軟件186所設(shè)定時(shí),設(shè)定成從原來輸入訊框來之PSH位值。TCP完成(FIN)旗標(biāo)為送至接收器之指示,表示發(fā)送器沒有更多要發(fā)送之?dāng)?shù)據(jù)。當(dāng)請(qǐng)求自動(dòng)TCP分段時(shí),剖析器162對(duì)于所有產(chǎn)生之分段訊框200除了最后一個(gè)訊框200外,皆設(shè)定FIN位為0。剖析器162插入從原來輸入訊框(例如,從TCP層軟件186)來之FIN位值,用為最后產(chǎn)生之分段訊框200中之FIN位值。
核對(duì)和的產(chǎn)生和驗(yàn)證可以程序化或配置范例控制器102以產(chǎn)生用于發(fā)送訊框200之第3層(例如,IP)和/或第4層(例如,TCP、UDP、等等)核對(duì)和,并自動(dòng)驗(yàn)證此等用于輸入(例如,接收)訊框200之核對(duì)和。范例控制器102調(diào)適定義于RFC 791(網(wǎng)際網(wǎng)絡(luò)協(xié)議)之IP核對(duì)和、定義于RFC793(傳輸控制協(xié)議)用于IPv4訊框200e之TCP核對(duì)和、定義于RFC768(用戶數(shù)據(jù)報(bào)協(xié)議)用于IPv4訊框之UDP核對(duì)和、以及如提出于RFC 2460(網(wǎng)際網(wǎng)絡(luò)協(xié)議,第6版規(guī)格)用于IPv6訊框200f之TCP和UDP核對(duì)和。關(guān)于IP核對(duì)和,計(jì)算于發(fā)送核對(duì)和系統(tǒng)164中用于IPv4標(biāo)頭206a中之HEADER CHECKSUM欄之值,作為處理為一系列16位字符之IP標(biāo)頭206a中之所有數(shù)據(jù)之1之補(bǔ)碼(one’scomplement)和之16位1的補(bǔ)碼。因?yàn)門OTAL LENGTH和IDENTIFICATION欄對(duì)于各產(chǎn)生之分段訊框200e為不相同,因此發(fā)送核對(duì)和系統(tǒng)164計(jì)算用于由控制器102產(chǎn)生之各分段訊框之HEADERCHECKSUM欄值。
發(fā)送核對(duì)和系統(tǒng)164亦可計(jì)算用于輸出訊框200之TCP層核對(duì)和。計(jì)算用于TCP標(biāo)頭204中TCP CHECKSUM欄之值,作為TCP標(biāo)頭204、TCP數(shù)據(jù)202、和包含從IP標(biāo)頭來之信息之虛擬標(biāo)頭之1之補(bǔ)碼和之16位1的補(bǔ)碼。處理標(biāo)頭和數(shù)據(jù)域?yàn)?6位數(shù)字序列。當(dāng)計(jì)算核對(duì)和時(shí),核對(duì)和欄其本身用0來代替。核對(duì)和亦包括概念上前置于TCP標(biāo)頭之96位虛擬標(biāo)頭(圖8C或圖8D)。此虛擬標(biāo)頭包含來源地址、目的地地址、協(xié)議、和TCP長(zhǎng)度。若TCP數(shù)據(jù)域(Data Field)包含奇數(shù)之字節(jié),則為了核對(duì)和計(jì)算,用0來填補(bǔ)于最后字節(jié)之右側(cè)(此填補(bǔ)字節(jié)并不發(fā)送)。為了產(chǎn)生用于分段訊框200之TCP核對(duì)和,發(fā)送核對(duì)和系統(tǒng)164更新TCP SEQUENCE NUMBER欄和TCP標(biāo)頭204之PSH和FIN位,并設(shè)定TCP CHECKSUM欄為從原來輸入訊框200來之TCP CHECKSUM欄之值。此外,發(fā)送核對(duì)和系統(tǒng)164用TCP標(biāo)頭204之位組長(zhǎng)度加上TCP數(shù)據(jù)域202,而初始化內(nèi)部16位核對(duì)和累加器,相加所有由TCP數(shù)據(jù)202所跟隨之編造修正之TCP標(biāo)頭204用于分段至累加器之16位字符之1之補(bǔ)碼和,以及儲(chǔ)存于分段訊框200之TCP CHECKSUM欄中所得到之1之補(bǔ)碼。
于發(fā)送描述符192a(圖5F)中之IPCK和L4CK位控制用于控制器102中發(fā)送訊框200之核對(duì)和之自動(dòng)產(chǎn)生。設(shè)定IPCK位導(dǎo)致將產(chǎn)生和插入于圖7A之IPv4訊框200e中適當(dāng)位置之IP Header Checksum。以同樣方式,依于在輸出訊框200中發(fā)現(xiàn)哪種型式之第4層標(biāo)頭,設(shè)定L4CK導(dǎo)致將產(chǎn)生之TCP CHECKSUM或UDP核對(duì)和其中一種情況。因?yàn)镮Pv6標(biāo)頭206b(圖7B)沒有標(biāo)頭核對(duì)和欄,則對(duì)于IPv6訊框200f忽略描述符中之IPCK位。若對(duì)于輸出訊框200要求TCP或UDP核對(duì)和產(chǎn)生,則第4層軟件186亦放置虛擬標(biāo)頭核對(duì)和于TCP或UDP核對(duì)和中。然后控制器102用計(jì)算過整個(gè)TCP或UDP分段之核對(duì)和取代此值,其中當(dāng)致能TCP分段時(shí),所產(chǎn)生之TCP或UDP核對(duì)和值不同。對(duì)于TCP分段,用0值于虛擬標(biāo)頭核對(duì)和計(jì)算中之TCP TOTALLENDTH。對(duì)于TCP或UDP核對(duì)和產(chǎn)生,TCP TOTAL LENDTH值為TCP標(biāo)頭204之長(zhǎng)度加上TCP數(shù)據(jù)202之長(zhǎng)度,如參照上述于RFC中說明。
亦能藉由主存儲(chǔ)器112而配置或程序化控制器102,以藉由核對(duì)和和填補(bǔ)檢核系統(tǒng)156而驗(yàn)證用于接收訊框之核對(duì)和。當(dāng)要求如此致能或當(dāng)要求安全(例如,IPsec)處理時(shí),控制器102檢查輸入(例如,接收)訊框以識(shí)別IPv4、IPv6、TCP和UDP標(biāo)頭,并將對(duì)應(yīng)之碼寫至接收狀態(tài)環(huán)199(圖5J)登錄之IP_HEADER和L4_HEADER欄,表示該控制器102已辨識(shí)了哪些第3層和/或第4層之標(biāo)頭。當(dāng)裝置辨識(shí)具有核對(duì)和之標(biāo)頭,則接收核對(duì)和和填補(bǔ)檢核系統(tǒng)156計(jì)算適當(dāng)?shù)暮藢?duì)和如于RFC791、RFC793、RFC768、或RFC2460所述,并將所得結(jié)果與于接收訊框中所發(fā)現(xiàn)之核對(duì)和相比較。若核對(duì)和不一致,則裝置設(shè)定IP_CK_ERR和/或L4_CK_ERR位于對(duì)應(yīng)接收狀態(tài)環(huán)登錄199中。
茲參照?qǐng)D12、圖13A、和圖13B,顯示和說明發(fā)送核對(duì)和產(chǎn)生之更詳細(xì)情況。于圖12中,控制器102之一部分系關(guān)于用于輸出數(shù)據(jù)訊框200之TCP核對(duì)和值290之產(chǎn)生而顯示,該輸出數(shù)據(jù)框200具有ESP安全標(biāo)頭210。圖13A和圖13B顯示范例發(fā)送核對(duì)和處理方法300,該方法300可執(zhí)行于網(wǎng)絡(luò)接口控制器102。用于輸出數(shù)據(jù)之TCP核對(duì)和處理開始于圖13A中步驟302,其中第3層標(biāo)頭(例如,IP標(biāo)頭)于步驟303剖析,以判定后續(xù)標(biāo)頭型式,并于步驟304判定安全標(biāo)頭是否存在于輸出數(shù)據(jù)訊框中。如圖12中所示,于組合RAM 160中之范例訊框200包括由ESP安全標(biāo)頭210所跟隨之IP標(biāo)頭206。于此情況,IP標(biāo)頭206于其PROTOCOL(IPv4)或NEXT HEADER(IPv6)欄將具有值50,表示后續(xù)標(biāo)頭210為ESP安全標(biāo)頭。于控制器102中,當(dāng)發(fā)送核對(duì)和剖析器162同時(shí)提供至Tx核對(duì)和系統(tǒng)164和第一存儲(chǔ)216時(shí),該發(fā)送核對(duì)和剖析器162剖析IP標(biāo)頭206,以確定此欄中之值。若IP標(biāo)頭PROTOCOL/NEXT HEADER欄具有值50,則訊框200包括安全標(biāo)頭(步驟304之”是”),以及方法300進(jìn)行至步驟306。否則,于圖13B中方法進(jìn)行至步驟340,如下文之討論。
于步驟306,描述符管理單元130獲得從主驅(qū)動(dòng)程序190(例如,經(jīng)由主存儲(chǔ)器106)來之發(fā)送描述符192a,并于步驟308獲得從描述符來之發(fā)送核對(duì)和信息。為了計(jì)算于訊框200中遍及TCP核對(duì)和范圍之TCP核對(duì)和值290,對(duì)于TCP核對(duì)和范圍(例如,包括TCP標(biāo)頭204和TCP數(shù)據(jù)包202),發(fā)送剖析器162必須分別判定開始和結(jié)束點(diǎn)292和294。此可使用提供于發(fā)送描述符192a之核對(duì)和信息而完成,該描述符192a包括TFLAGS1、PAD_LEN、和NXT_HDR欄(圖5E和圖5F)。于步驟310,檢核TFLAGS1攔之L4CK位。若值為0(于步驟310之”否”),則方法300進(jìn)行至步驟312,如此值表示對(duì)于此訊框200不要求TCP核對(duì)和。舉例而言,主系統(tǒng)180可以負(fù)責(zé)計(jì)算第4層核對(duì)和,于此情況,訊框200被送至控制器102用于傳輸之前,TCP標(biāo)頭214包括適當(dāng)?shù)暮藢?duì)和值。
若L4CK位等于1(步驟310之”是”),則方法300進(jìn)行至步驟313,此處發(fā)送剖析器162藉由剖析而判定跟隨著安全標(biāo)頭之標(biāo)頭的標(biāo)頭型式。然后于步驟314判定,是否跟隨著安全標(biāo)頭之標(biāo)頭為第4層標(biāo)頭(例如,于此例中TCP)。若非為第4層標(biāo)頭(步驟314之”否”),則發(fā)送剖析器162經(jīng)由任何中斷標(biāo)頭(例如,譬如顯示于圖6D中之延伸標(biāo)頭)繼續(xù)剖析,直到找到第4層標(biāo)頭為止。一旦找到了第4層標(biāo)頭,則于步驟316和步驟318判定是否從描述符192a來之第4層標(biāo)頭型式信息為TCP或DUP。于所示例子中,若從描述符192a來之次一個(gè)標(biāo)頭信息既不是TCP,亦非UDP(步驟316和318之”否”),則控制器102假設(shè)存有差異,而方法300進(jìn)行至步驟312(沒有第4層核對(duì)和被計(jì)算)。若從描述符192a來之次一個(gè)標(biāo)頭信息表示UDP或TCP標(biāo)頭跟隨著安全標(biāo)頭(步驟316和步驟318之”是”),則方法300進(jìn)行至步驟320和步驟322,此處依著發(fā)送核對(duì)和信息和剖析之第3層標(biāo)頭信息,而分別開始和結(jié)束第4層核對(duì)和計(jì)算。
詳言之,于步驟320使用從發(fā)送描述符192a來之次一個(gè)標(biāo)頭信息NXT_HDR,以判定用于第4層核對(duì)和計(jì)算之開始點(diǎn),以及于步驟322使用從描述符192a來之填補(bǔ)長(zhǎng)度PAD_LEN和IV長(zhǎng)度信息。剖析器162藉由從剖析之第3層標(biāo)頭(圖7A和圖7B中之IPv4或IPv6)取得IP總長(zhǎng)度或酬載長(zhǎng)度信息,并減去安全標(biāo)頭之長(zhǎng)度(于步驟303剖析)和任何其它插入標(biāo)頭之長(zhǎng)度(于步驟315剖析)之和,以及亦減去ESP標(biāo)尾212和ESP鑒別欄214之長(zhǎng)度,而確定TCP數(shù)據(jù)域202之結(jié)束位置。ESP標(biāo)尾212包括填補(bǔ)字節(jié)230(圖6E),該填補(bǔ)字節(jié)230之長(zhǎng)度已知從發(fā)送描述符192a中之PAD_LEN信息來,而ESP鑒別欄214之長(zhǎng)度已知從發(fā)送描述符192a之TFLAGS1部分193中IVLEN1和IVLEN0位來。計(jì)算之結(jié)果值為TCP標(biāo)頭204和TCP數(shù)據(jù)202之長(zhǎng)度,于322使用該值來結(jié)束TCP核對(duì)和計(jì)算。
發(fā)送剖析器162依照開始和結(jié)束點(diǎn)292和294而控制發(fā)送核對(duì)和系統(tǒng)164開始核對(duì)和計(jì)算,而該發(fā)送核對(duì)和系統(tǒng)164因此產(chǎn)生核對(duì)和值290(例如,于此實(shí)例中TCP核對(duì)和值)。一旦完成了核對(duì)和值計(jì)算,方法300進(jìn)行至步驟324,此處發(fā)送核對(duì)和系統(tǒng)164將核對(duì)和值290插入第一存儲(chǔ)116中適當(dāng)?shù)奈恢?例如,在TCP標(biāo)頭204內(nèi)),完成此動(dòng)作后于步驟326結(jié)束第四層核對(duì)和操作。其后,于步驟328執(zhí)行任何選擇之安全處理(例如,使用IPsec系統(tǒng)124),并且于步驟330將輸出訊框傳輸至網(wǎng)絡(luò)108。若無實(shí)施第4層核對(duì)和,則方法300于步驟330在傳輸訊框之前,對(duì)于任何所需之安全處理直接從步驟312進(jìn)行至步驟328。
亦參考圖13B,若無安全標(biāo)頭存在于輸出數(shù)據(jù)訊框200(步驟304之”否”),則于圖13B中方法300進(jìn)行至步驟340,于此判定是否從傳送描述符192a來之L4CK位等于1。若不等于1(步驟340之”否”),則方法300進(jìn)行至步驟342且對(duì)于訊框200無第4層核對(duì)和計(jì)算進(jìn)行。若L4CK位等于1(步驟340之”是”),則于步驟346和步驟348判定是否第4層標(biāo)頭型式是TCP或UDP。若從IP標(biāo)頭206來之次一個(gè)標(biāo)頭信息既不是TCP亦非UDP(步驟346和步驟348之”否”),則控制器102假定差異存在,而方法300進(jìn)行至步驟342(沒有第4層核對(duì)和值被計(jì)算)。若次一個(gè)標(biāo)頭信息表示TCP或UDP標(biāo)頭跟隨IP標(biāo)頭206,(步驟346或步驟348之”是”),則核對(duì)和值計(jì)算依照剖析之信息而分別于步驟350和步驟352開始和結(jié)束。一旦于步驟352完成第4層核對(duì)和計(jì)算,則核對(duì)和值290插入存儲(chǔ)116中之訊框200中,于步驟356完成發(fā)送核對(duì)和操作,而IPsec系統(tǒng)124傳遞訊框200至第二存儲(chǔ)118(例如,于此情況無安全處理)。然后方法300回到步驟330(圖13A),而訊框200傳輸至網(wǎng)絡(luò)108。
安全處理茲參照?qǐng)D2至圖4、圖9、圖10、和圖11A至圖11D,范例IPsec安全系統(tǒng)124可配置依照RFC 2401以提供用于發(fā)送和接收訊框200之網(wǎng)際網(wǎng)絡(luò)協(xié)議安全(IPsec)鑒別和/或加密/解密服務(wù)。對(duì)于鑒別標(biāo)頭(AH)處理,模塊執(zhí)行定義于RFC 2404之HMAC-MD5-96算法和定義于RFC 2404之HMAC-SHA-1-96。HMAC-MD5-96之實(shí)施提供截除至96位之128位密碼鑰匙、512位數(shù)據(jù)塊大小、和128位訊息鑒別碼(MAC)。HMAC-SHA-1-96算法之實(shí)施提供截除至96位之160位密碼鑰匙、512位數(shù)據(jù)塊大小、和160位訊息鑒別碼(MAC)。對(duì)于封裝安全酬載(ESP)處理,IPsec模塊124亦執(zhí)行HMAC-MD5-96和HMAC-SHA-1-96算法以用于鑒別,和ESP DES-CBC(RCF 2406)、3DES-CBC、和AES-CBC(draft-ietf-ipsec-ciph-aes-chc-01)封裝算法。于IPsec模塊124中之DES-CBC算法提供64位密碼鑰匙(包括8個(gè)同位位)、64位數(shù)據(jù)塊大小、以及具有明確初始化向量(IV)之密碼塊鏈接(cipher block chaining;CBC)。3DES-CBC算法提供192位密碼鑰匙(包括24個(gè)同位位)、64位數(shù)據(jù)塊大小、和具有明確IV之CBC。依于10、12、或14循環(huán)(round)之密碼鑰匙大小,AES-CBC算法提供128-、192-、或256-位密碼鑰匙、128位數(shù)據(jù)塊大小、和具有明確IV之CBC。
范例安全系統(tǒng)124提供用于IPv4和IPv6之以密碼為基礎(chǔ)之IPsec安全服務(wù),包括存取控制、無連接整合(connectionless integrity)、數(shù)據(jù)起源鑒別、防止回放保護(hù)(protection against replay)(部分序列完整之形式)、機(jī)密性(加密)、和限制之通訊流量機(jī)密性。這些服務(wù)提供于第3層(IP層),由此透過使用二個(gè)通訊量安全協(xié)議,鑒別標(biāo)頭(AH)和封裝安全酬載(ESP),以及透過使用加密密碼鑰匙管理程序和協(xié)議,而提供對(duì)于IP和/或上層協(xié)議之保護(hù)。IP鑒別標(biāo)頭(AH)提供無連接整合、數(shù)據(jù)起源鑒別、和選用之防止回放服務(wù)(anti-replay service),以及ESP協(xié)議提供機(jī)密性(加密)、和限制之通訊流量機(jī)密性,以及可提供無連接整合、數(shù)據(jù)起源鑒別、和防止回放服務(wù)。AH和ESP安全特征可單獨(dú)應(yīng)用,或結(jié)合以提供所希望之安全服務(wù)組于IPv4或IPv6中,其中二個(gè)協(xié)議皆支持傳輸模式和信道模式。于傳輸模式,協(xié)議提供用于上層協(xié)議之初步保護(hù),而于信道模式,協(xié)議供應(yīng)于信道IP封包。
對(duì)于輸出訊框200,控制器102依照儲(chǔ)存于SA存儲(chǔ)140中之安全關(guān)聯(lián)(SA)而選擇地提供Ipsec鑒別和/或加密處理。若輸出訊框200要求Ipsec鑒別,則IPsec單元124計(jì)算完整檢核值(ICV),并將ICV插入AH標(biāo)頭或ESP標(biāo)尾212(圖6A至圖6D)。若訊框200要求加密,則單元124用加密版來代替明碼酬載。對(duì)于輸入(例如,接收)訊框,IPsec單元124剖析IPsec標(biāo)頭以判定須作什么處理。若發(fā)現(xiàn)IPsec標(biāo)頭,則IPsec系統(tǒng)124使用從標(biāo)頭來之安全參數(shù)索引(SPI)加上IPsec協(xié)議型式和IP目的地地址以搜尋SA存儲(chǔ)140,以擷取對(duì)應(yīng)于接收之訊框之安全關(guān)聯(lián)。可接收之用于范例控制器102之IPsec標(biāo)頭之結(jié)合包括AH標(biāo)頭、ESP標(biāo)頭、和由ESP標(biāo)頭所跟隨之AH標(biāo)頭。
對(duì)于IPsec密碼鑰匙交換,主處理器112與遠(yuǎn)程站臺(tái)協(xié)商SA,并將SA數(shù)據(jù)寫于SA存儲(chǔ)140中。此外,主處理器112維持Ipsec安全策略數(shù)據(jù)庫(security policy database;SPD)于系統(tǒng)存儲(chǔ)128中。對(duì)于各傳輸訊框200,當(dāng)指針SA_PTR[14:0]指至于SA存儲(chǔ)140中適當(dāng)?shù)腟A,主處理器112檢核SPD以判定需要什么樣之安全處理,并傳遞此信息至發(fā)送描述符192a中之控制器102(圖5E)。對(duì)于輸入接收之訊框200,控制器102報(bào)告在接收狀態(tài)環(huán)登錄199中(圖5J)已作了什么樣之安全處理,以及該主處理器112檢核SPD以驗(yàn)證訊框200遵照協(xié)商策略。SA包括描述將必須執(zhí)行之安全處理之型式和將使用之加密密碼鑰匙之信息。個(gè)別之安全關(guān)聯(lián)描述兩個(gè)網(wǎng)絡(luò)實(shí)體之間之單向連接,其中雙向連接需要二個(gè)用于輸入和輸出通訊量之SA。用于輸入通訊量之SA部分儲(chǔ)存于內(nèi)部SPI表或存儲(chǔ)270(圖10),而部分儲(chǔ)存于外部存儲(chǔ)140。藉由主處理器112而維持此等SA表,該主處理器112藉由首先寫入于存儲(chǔ)128中SA數(shù)據(jù)緩沖器,然后將命令寫至SA地址緩存器,而間接寫至SPI表270和SA存儲(chǔ)140。如此導(dǎo)致控制器102將數(shù)據(jù)復(fù)制至外部SA存儲(chǔ)140和至內(nèi)部SPI表存儲(chǔ)270。
于SPI表登錄中之其中一欄為依照IP目的地地址由主處理器112所計(jì)算之雜湊碼。此外,主處理器112根據(jù)SPI計(jì)算雜湊碼,以判定于何處寫SPI表。若輸入或輸出SA要求鑒別,則主CPU計(jì)算如界定于RFC 2104之HMAC(Keyed-Hashing for Message Authentication)之H(K XOR ipad)和H(K XOR opad)之值,其中主處理器112儲(chǔ)存二個(gè)結(jié)果128或160位值于SA存儲(chǔ)140中。若需要的話,于初始化時(shí)主CPU能夠間接初始化用于IPsec系統(tǒng)124中4個(gè)加密引擎之每一個(gè)中Cipher Block Chaining之Initialization Vector(IV)緩存器。
參照?qǐng)D2和圖9,開始傳輸處理,主處理器112準(zhǔn)備發(fā)送訊框200于主存儲(chǔ)器128中之一個(gè)或多個(gè)數(shù)據(jù)緩沖器194中,寫入發(fā)送描述符192a(例如,圖5E)于其中一個(gè)發(fā)送描述符環(huán)中,并更新對(duì)應(yīng)之發(fā)送描述符寫入指針(TX_WR_PTR[x])。于數(shù)據(jù)緩沖器194中之訊框數(shù)據(jù)包括用于鑒別數(shù)據(jù)214、用于初始化向量(IV)226、和若適當(dāng)?shù)脑?例如,圖6E)用于ESP標(biāo)尾212之IPsec標(biāo)頭中之空間。將藉由于控制器102中IPsec系統(tǒng)124而產(chǎn)生這些欄之內(nèi)容。以同樣方式,若需要填補(bǔ)(例如,調(diào)正或使ESP酬載為整數(shù)倍數(shù)之加密數(shù)據(jù)塊),則該填補(bǔ)包括于主存儲(chǔ)器緩沖器194中,以及用于AH和ESP SEQUENCENUMBER欄之序號(hào)藉由主處理器112而提供于數(shù)據(jù)緩沖器194中。除非亦選用了自動(dòng)TCP分段,否則IPsec系統(tǒng)124不修正這些欄,于此情況IPsec系統(tǒng)124使用從緩沖器194來之序號(hào)用于首先產(chǎn)生之訊框200,然后適當(dāng)?shù)卦黾悠溆喈a(chǎn)生之分段訊框之?dāng)?shù)值。若要求IPsec處理于特定輸出訊框200,則對(duì)應(yīng)之發(fā)送描述符192a包括于SA_PTR欄內(nèi)指向外部SA存儲(chǔ)140中適當(dāng)SA登錄之指針,以及該IPsec系統(tǒng)124使用從SA來之信息,以判定如何處理訊框200。發(fā)送剖析器162檢查訊框200以判定用來鑒別和/或加密之開始和結(jié)束點(diǎn),以及若需要的話,判定插入鑒別數(shù)據(jù)214之位置。
若要求ESP加密,則IPsec系統(tǒng)124使用特定于SA中之算法和密碼鑰匙而加密酬載數(shù)據(jù)。若要求ESP鑒別,則系統(tǒng)124使用特定于SA中鑒別算法和IPAD/OPAD信息,以計(jì)算鑒別數(shù)據(jù)完整檢核值(ICV),并儲(chǔ)存結(jié)果于鑒別數(shù)據(jù)域214中。若要求ESP加密和鑒別,則首先執(zhí)行加密,然后使用加密之酬載數(shù)據(jù)于鑒別計(jì)算中。管線連接加密和鑒別處理,而使得當(dāng)鑒別引擎正處理前面之?dāng)?shù)據(jù)塊時(shí),IPsec處理器174之其中一個(gè)加密引擎內(nèi)正處理一個(gè)數(shù)據(jù)塊。除非亦致能了自動(dòng)TCP分割,否則IPsec系統(tǒng)124不附加填補(bǔ)于酬載數(shù)據(jù)域。主處理器112提供ESP標(biāo)尾212適當(dāng)?shù)奶钛a(bǔ)于系統(tǒng)存儲(chǔ)128中訊框數(shù)據(jù)緩沖器194中,并亦提供適當(dāng)值于ESP標(biāo)頭210中ESP SEQUENCE NUMBER欄(圖6E)。
若ESP處理結(jié)合自動(dòng)TCP分段,則IPsec系統(tǒng)124相加任何所需之填補(bǔ)字節(jié),使加密之?dāng)?shù)據(jù)長(zhǎng)度為特定于選擇之加密算法之?dāng)?shù)據(jù)塊長(zhǎng)度之倍數(shù)。若ESP處理結(jié)合TCP或UDP核對(duì)和產(chǎn)生,則主處理器112提供用于ESP標(biāo)尾212和發(fā)送描述符(Transmit Descriptor)192a(圖5E)之正確的NEXT HEADER和PAD LENGTH值。若ESP處理結(jié)合自動(dòng)TCP分段,則主處理器112提供與對(duì)應(yīng)之訊框數(shù)據(jù)緩沖器194相一致之發(fā)送描述符192a之NEXT HEADER和PAD LENGTH欄之值。于此結(jié)合中,控制器102復(fù)制從發(fā)送描述符192a來之NEXT HEADER欄進(jìn)入各產(chǎn)生訊框200之ESP標(biāo)尾212,并使用描述符192a之PADLENGTH欄以發(fā)現(xiàn)于訊框數(shù)據(jù)緩沖器194中TCP數(shù)據(jù)域202之末端。此外,減少發(fā)送描述符192a之最大分段大小欄MSS[13:0]以補(bǔ)償IPsec標(biāo)頭、ESP填補(bǔ)、和ICV。
于ESP處理結(jié)合TCP分段或結(jié)合TCP或UDP核對(duì)和產(chǎn)生處,軟件驅(qū)動(dòng)程序190因此設(shè)定發(fā)送描述符192a之ESP_AH、IVLEN0、和IVLEN1位。發(fā)送剖析器162使用此信息來定位TCP或UDP標(biāo)頭204,而若不需要TCP或UDP處理,則忽略該等位。對(duì)于要求ESP處理之訊框200,圖8A顯示哪些欄藉由主處理器112而創(chuàng)造并包含于緩沖器194中,以及于安全系統(tǒng)124中由ESP處理硬件所修正之該等字段。
由IPsec系統(tǒng)124所支持之加密算法使用具有明確初始化向量(圖6E,IVs 226)之密碼塊鏈接(CBC)模式。欲允許某數(shù)量之并行處理,IPsec系統(tǒng)124包括二個(gè)TX IPSEC處理器系統(tǒng)174a和174b,該系統(tǒng)174a和174b之每一個(gè)皆包括DES/3DES(數(shù)據(jù)加密標(biāo)準(zhǔn))加密系統(tǒng)和先進(jìn)的加密標(biāo)準(zhǔn)(AES)加密引擎。于TX IPSEC處理器174中之4個(gè)加密引擎之每一個(gè)皆包括IV緩存器,于重設(shè)時(shí)清除該等緩存器為0。當(dāng)致能控制器102時(shí),關(guān)聯(lián)于加密引擎之IV緩存器之內(nèi)容使用為用于由該引擎所加密之第一發(fā)送訊框之初始化向量226。其后使用從一個(gè)訊框200來之最后的加密數(shù)據(jù)塊,作為用于下列訊框200之IV 226。主處理器112能用隨機(jī)數(shù)據(jù)初始化于IPsec系統(tǒng)124中之IV緩存器,例如,藉由于酬載欄中具有隨機(jī)數(shù)據(jù)之發(fā)送訊框200。于一個(gè)例子中,主處理器112能將外部PHY裝置放置入隔離模式以防止這些隨機(jī)數(shù)據(jù)訊框200到達(dá)網(wǎng)絡(luò)108。IPsec系統(tǒng)124插入IV值226于酬載欄之開始。主處理器112于訊框數(shù)據(jù)緩沖器194中提供空間以用于此攔226。IV226之長(zhǎng)度與使用于TX IPSEC處理器174之加密數(shù)據(jù)塊大小相同,例如,64位用于DES和3DES算法,而128位用于AES算法。
選擇鑒別標(biāo)頭(AH)處理,安全系統(tǒng)124使用特定于SA之鑒別算法和鑒別ipad和opad數(shù)據(jù),以計(jì)算鑒別數(shù)據(jù)完整檢核值(ICV),以及該安全系統(tǒng)124儲(chǔ)存結(jié)果于鑒別數(shù)據(jù)域214。為了計(jì)算ICV之目的,發(fā)送IPsec剖析器170偵測(cè)易變之字段(如由AH規(guī)格,RFC 2402所定義者)并確保此等字段之內(nèi)容和鑒別數(shù)據(jù)域214為0。于ICV計(jì)算,IPsec系統(tǒng)124使用從SA來之目的地地址,而不使用從封包之IP標(biāo)頭206來之目的地地址,以確保若存在來源路由選擇或延伸,則于計(jì)算中使用最后目的地之地址。對(duì)于要求AH處理之發(fā)送訊框200,圖8顯示由主處理器112所創(chuàng)造并包括于緩沖器194中之字段,以及在IPsec系統(tǒng)124中由AH處理硬件所修正之該等字段。
茲參照?qǐng)D2和圖10,IPsec系統(tǒng)124提供從網(wǎng)絡(luò)108來之用于輸入(例如,接收)訊框200之安全處理。RX剖析器144檢查輸入訊框200以發(fā)現(xiàn)IPsec標(biāo)頭,并查詢于SA存儲(chǔ)140中對(duì)應(yīng)之SA。RX IPSEC處理器150然后依照SA而實(shí)施所需要之IPsec鑒別和/或解密。若需要解密,則處理器150用存儲(chǔ)116中之明碼代替于訊框200中原來的密碼。描述符管理單元130設(shè)定狀態(tài)位于對(duì)應(yīng)之接收狀態(tài)環(huán)登錄199中(圖5J),以表示作了什么處理和遭遇到的任何錯(cuò)誤。
圖10顯示經(jīng)過IPsec系統(tǒng)124之輸入數(shù)據(jù)之流程圖。當(dāng)從網(wǎng)絡(luò)108接收輸入訊框200時(shí),接收剖析器144檢查從MAC引擎122來之輸入訊框200之標(biāo)頭。剖析器144剖析其分析之結(jié)果于SA查詢邏輯146。此信息亦提供至插入于訊框間形成控制區(qū)塊之存儲(chǔ)118。控制區(qū)塊包括關(guān)于在輸入訊框200中標(biāo)頭之型式和位置之信息。若剖析器144發(fā)現(xiàn)訊框200包括IP封包片段(fragment),則旁通(bypassed)IPsec處理,而訊框200用設(shè)定于IPSEC_STAT1欄中對(duì)應(yīng)于接收狀態(tài)環(huán)登錄199之IP片段(Fragment)位傳送于主存儲(chǔ)器128。對(duì)于IPv4訊框,藉由于IPv4標(biāo)頭中之非0片段位移量(offset)欄或非0多個(gè)片段位,而識(shí)別片段。對(duì)于IPv6封包,藉由存在之片段延伸標(biāo)頭而表示片段。
若剖析器144發(fā)現(xiàn)IPsec標(biāo)頭或可接受之標(biāo)頭之組合,則剖析器144傳送SPI、IP目的地地址、和表示IPsec協(xié)議(AH或ESP)于SA查詢引擎146之位。SA查詢引擎146使用SPI、協(xié)議位、和目的地地址之雜湊以搜尋內(nèi)部SPI存儲(chǔ)270(圖10)。此搜尋之結(jié)果寫至SA指針FIFO 148,包括指至外部SA存儲(chǔ)140中登錄之指針、表示是否要求IPsec處理之位、和表示SA查詢之成功或失敗之二個(gè)位。SA指針FIFO 148包括對(duì)應(yīng)于存儲(chǔ)118中各輸入訊框200之登錄。若SA指針FIFO 148于輸入訊框200從網(wǎng)絡(luò)108到達(dá)的時(shí)候不具有用于新登錄之空間,或若接收之訊框200將引起存儲(chǔ)118之接收部溢位(overflow),則拋棄訊框200,而接收遺失封包之計(jì)數(shù)器(圖中未顯示)增值。
RX KEY FETCH狀態(tài)機(jī)262(圖10)擷取從SA指針FIFO 148來之對(duì)應(yīng)之登錄,并若有任何需求處理的話,判定需要什么處理。若控制位表示需要處理,則狀態(tài)機(jī)262使用指針欄之內(nèi)容,以從外部SA存儲(chǔ)140擷取SA信息。若SA之DA欄不匹配于訊框200中之IP標(biāo)頭之DA欄,則IPsec處理器150引起將寫至接收狀態(tài)環(huán)199之錯(cuò)誤碼,并傳送訊框200至未修正之存儲(chǔ)118。若SA之DA欄匹配IP標(biāo)頭之DA欄,則處理器150解密接收訊框200之酬載部分和/或檢核如由SA所要求之鑒別數(shù)據(jù)。
亦參照?qǐng)D11A至圖11D,下文中將參照使用于范例控制器102中之輸出IPsec處理之安全關(guān)聯(lián)系統(tǒng)。圖11A顯示范例安全關(guān)聯(lián)表寫入存取、圖11B顯示范例SA地址緩存器格式、圖11C顯示于SPI存儲(chǔ)270中之范例SPI表登錄、和圖11D顯示于SA存儲(chǔ)140中之范例SA存儲(chǔ)登錄。SA查詢引擎146使用SPI存儲(chǔ)270和外部SA存儲(chǔ)140,此二者由主處理器112所維持,其中范例SPI存儲(chǔ)270構(gòu)成為4096箱(bin)之集合,各箱具有達(dá)4個(gè)登錄。于SPI存儲(chǔ)270中登錄之地址為14位長(zhǎng),其中12個(gè)高排序(order)位表示箱號(hào)。如圖11C中所示,于SPI存儲(chǔ)270中之各SPI表登錄272包括32位安全參數(shù)索引SPI[31:0]、目的地地址之雜湊DA_HASH[39:32]、協(xié)議位PROTO表示安全協(xié)議(例如,AH或ESP)、以及VALID位表示是否登錄為有效或未使用。
圖11D顯示于SA存儲(chǔ)140中之范例登錄274,其中SA存儲(chǔ)140包括對(duì)應(yīng)于SPI存儲(chǔ)270中之各登錄272中之登錄,于二個(gè)存儲(chǔ)140和270中之登錄274和272有相同之排序。登錄274包括三個(gè)位ESP加密算法欄ESP_ALG,指示是否需要ESP加密,若有如此需要的話,則將使用哪一個(gè)算法(例如,DES;3DES;AES-128,10循環(huán);AES-192,12循環(huán);AES-256,14循環(huán);等等)。電子譯碼簿位(electronic codebookbit;ECB)指示是否ECB模式使用于加密,而二位ESP鑒別欄ESPAH_ALG表示是否要求ESP鑒別,以及若如此的話,則將使用哪個(gè)算法(例如,MD5、SHA-1、等等)。二位AH欄AH_ALG表示是否要求AH處理,而若如此要求的話則將使用哪個(gè)算法(例如,MD5、SHA-1、等等)。協(xié)議位PROTOCOL表示是否第一個(gè)IPsec標(biāo)頭為ESP標(biāo)頭或AH標(biāo)頭,而IPv6位表示是否SA定義為IPv4或IPv6訊框。
BUNDLE位表示二個(gè)SA特定之AH,后面跟著ESP之包裹(bundle),以及32位SPI欄特定關(guān)聯(lián)于第二SA之SPI(例如,ESP)于二個(gè)SA之包裹,對(duì)于并非為包裹部分之SA,可予以忽略。IP目的地地址欄IPDA[127:0]表示SA可應(yīng)用之地址,其中SA僅應(yīng)用于包含此目的地地址之封包。AH_IPAD欄包括藉由應(yīng)用適當(dāng)?shù)蔫b別雜湊函數(shù)(例如,MD5或SHA-1)于AH鑒別密碼鑰匙之互斥或(exclusive OR)和如說明于RFC 2104中之HMAC ipad字符串(string)而獲得之值。若鑒別函數(shù)為MD5,則結(jié)果為16字節(jié),該16字節(jié)儲(chǔ)存于連續(xù)之字節(jié),開始于位移量24。若鑒別函數(shù)為SHA-1,則結(jié)果是20字節(jié),該20字節(jié)占據(jù)整個(gè)AH_IPAD欄。AH_OPAD欄包括應(yīng)用適當(dāng)?shù)蔫b別雜湊函數(shù)(例如,MD5或SHA-1)于AH鑒別密碼鑰匙之互斥或和如說明于RFC2104中之HMAC opad字符串而獲得之值。若鑒別函數(shù)為MD5,則結(jié)果是16字節(jié),該16字節(jié)儲(chǔ)存于連續(xù)之字節(jié),開始于位移量44。若鑒別函數(shù)為SHA-1,則結(jié)果是20字節(jié),該20字節(jié)占據(jù)整個(gè)AH_OPAD欄。SA存儲(chǔ)登錄274亦包括ESP_IPAD欄,該ESP_IPAD欄具有藉由應(yīng)用鑒別雜湊函數(shù)(MD5或SHA-1)于ESP鑒別密碼鑰匙之互斥或和如說明于RFC 2104中之HMAC ipad字符串而獲得之值,以及ESP_OPAD欄包括應(yīng)用鑒別雜湊函數(shù)(MD5或SHA-1)于ESP鑒別密碼鑰匙之互斥或和如說明于RFC 2104中之HMAC opad字符串而獲得之值。加密密碼鑰匙欄ENC_KEY包括用于ESP處理之加密/解密密碼鑰匙。
IPsec系統(tǒng)124分別從SA和SPI存儲(chǔ)140和270讀取,但是并不寫入該等存儲(chǔ)。欲最小化查詢時(shí)間,SPI存儲(chǔ)270構(gòu)成雜湊表,其中藉由SPI之雜湊函數(shù)而判定登錄272之箱號(hào)(bin number)。查詢邏輯146藉由根據(jù)SPI計(jì)算雜湊值和使用該結(jié)果于SPI存儲(chǔ)270中將箱尋址,而使用SPI和IPsec協(xié)議(AH或ESP)來搜尋SPI存儲(chǔ)270。對(duì)于IP目的地地址計(jì)算第二雜湊值,而查詢邏輯146比較SPI、協(xié)議、和目的地地址雜湊與選擇之箱中之登錄,直到該查詢邏輯146發(fā)現(xiàn)匹配或用完箱登錄為止。然后查詢邏輯146將登錄寫入SA指針FIFO 148,包括于SPI存儲(chǔ)270中匹配登錄之地址,和表示是否要求IPsec處理和是否SA查詢成功之內(nèi)部狀態(tài)碼。Rx密碼鑰匙擷取邏輯262從SA存儲(chǔ)140擷取DA,以與IP封包標(biāo)頭內(nèi)之DA比較。若從SA存儲(chǔ)140來之DA不匹配從接收之訊框200來之DA,則訊框200不須經(jīng)過IPsec處理,即經(jīng)由存儲(chǔ)116和總線接口106而傳輸于主存儲(chǔ)器128,而對(duì)應(yīng)之接收狀態(tài)環(huán)登錄199表示沒有IPsec處理被實(shí)施。
亦參照?qǐng)D11A,藉由主處理器112而維持SA存儲(chǔ)140和SPI存儲(chǔ)270。于正常操作期間,主處理器112使用寫入和刪除存取來相加和去除表登錄274、272。范例SA存儲(chǔ)140分成二個(gè)區(qū)域,一個(gè)用于輸入SA而另一個(gè)用于輸出SA,其中各區(qū)域提供空間供16K登錄用。使用SA地址緩存器SA_ADDR 280和144字節(jié)SA緩沖器282而執(zhí)行藉由主處理器112存取SA和SPI存儲(chǔ)140和270。SA緩沖器282保持一個(gè)136字節(jié)SA存儲(chǔ)登錄274,其后接著對(duì)應(yīng)之8字節(jié)SPI表登錄272。對(duì)于輸出SA,未使用緩沖器282之SPI表登錄區(qū)段(section)272。欲寫入SA表登錄,主處理器112創(chuàng)造136或144字節(jié)登錄于主存儲(chǔ)器128中,并將SA存儲(chǔ)140中之目標(biāo)地址寫至SA_ADDR緩存器280??刂破?02使用DMA來復(fù)制SA信息首先至內(nèi)部SA緩沖器282,然后至SA存儲(chǔ)140和SPI存儲(chǔ)270中適當(dāng)?shù)奈恢?。主處理?12將主存儲(chǔ)器128中SA登錄緩沖器284之實(shí)際地址寫至SA_DMA_ADDR緩存器286。若軟件驅(qū)動(dòng)程序190使用相同的緩沖器284于主存儲(chǔ)器128中用來加載所有之SA表登錄,則該軟件驅(qū)動(dòng)程序190僅必須寫至SA_DMA_ADDR緩存器286一次。
輸入安全關(guān)聯(lián)儲(chǔ)存于由雜湊算法所決定的位置。對(duì)于輸出(發(fā)送)訊框200,驅(qū)動(dòng)程序軟件190包括指至發(fā)送描述符192a中(例如,于圖5E中SA_PTR欄)之適當(dāng)SA之指針。此使得驅(qū)動(dòng)程序軟件190無須對(duì)于控制器102搜尋SA存儲(chǔ)140用于輸出SA,并且發(fā)送SA能夠以任何次序儲(chǔ)存。因?yàn)槭褂糜诿枋龇?92a之SA_PTR欄中之值0以表示無需IPsec處理,因此無輸出SA儲(chǔ)存于位移量0。
亦參照?qǐng)D11B,SA地址緩存器280包括將要存取之SA表登錄274之地址加上6個(gè)SA存取命令位。這些命令位包括SA讀取、寫入、刪除、和清除位(SA_RD、SA_WR、SA_DEL、和SA_CLEAR)、SA方向位SA_DIR、和命令活動(dòng)位SA_ACTIVE。當(dāng)內(nèi)部狀態(tài)機(jī)262正從SA緩沖器282復(fù)制數(shù)據(jù)或復(fù)制數(shù)據(jù)至該SA緩沖器282時(shí),只讀SA_ACTIVE位為1,在此時(shí)間期間主處理器112禁止存取SA緩沖器282。藉由SA_DIR位控制外部SA存儲(chǔ)140的輸入和輸出區(qū)域間之選擇,此動(dòng)作為高排序地址位。此位對(duì)于輸入SA設(shè)定為1,或?qū)τ谳敵鯯A設(shè)定為0。若此位設(shè)定為1,則數(shù)據(jù)傳輸至內(nèi)部SPI存儲(chǔ)270或從該存儲(chǔ)傳輸,以及傳輸至外部SA存儲(chǔ)140或從該存儲(chǔ)傳輸。輸出SA表存取僅影響外部SA存儲(chǔ)140。當(dāng)主處理器112設(shè)定SA_RD于SA地址緩存器280時(shí),狀態(tài)機(jī)從外部SA存儲(chǔ)140復(fù)制數(shù)據(jù)至SA緩沖器282。若方向位SA_DIR為1,則從內(nèi)部SPI存儲(chǔ)270來之對(duì)應(yīng)登錄272亦復(fù)制至SA緩沖器282。SA地址緩存器280之SA地址欄SA_ADR[13:0]指向?qū)⒁獜?fù)制之登錄272和/或274。
當(dāng)主處理器112設(shè)定SA_WR位于SA_ADDR緩存器280時(shí),所得結(jié)果動(dòng)作依于SA_DIR位之值。若此位為1(例如,表示輸入SA),則狀態(tài)機(jī)器首先從主存儲(chǔ)器128中之緩沖器284復(fù)制數(shù)據(jù)進(jìn)入內(nèi)部SA緩沖器282,然后從SA緩沖器282進(jìn)入外部SA存儲(chǔ)140,并亦進(jìn)入對(duì)應(yīng)之內(nèi)部SPI存儲(chǔ)270。若SA_DIR位為0(例如,表示發(fā)送SA),當(dāng)存取命令為“寫入”時(shí),僅SA緩沖器282之SA欄復(fù)制至由SA地址緩存器280所選擇之SA存儲(chǔ)140登錄,而不復(fù)制SPI欄。對(duì)于包裹處理,BUNDLE位設(shè)定于對(duì)應(yīng)于訊框200中之第一個(gè)IPsec標(biāo)頭之SA中,表示期望訊框200包括其后跟隨著ESP標(biāo)頭之AH標(biāo)頭。于外部SA存儲(chǔ)140中之對(duì)應(yīng)登錄包括用于此二個(gè)標(biāo)頭之信息,包含有第二IPsec標(biāo)頭所期望之SPI。
對(duì)于接收AH處理,于SA存儲(chǔ)登錄274中之AH_ALG欄之值不為0,表示對(duì)于接收訊框200需要AH處理。Rx剖析器144掃描訊框IP標(biāo)頭(例如,若存在的話以及IPv6延伸標(biāo)頭),以決定易變欄之位置,如于RFC 2402中所提出者。剖析器144將一列之此等易變字段置插入存儲(chǔ)118中之控制區(qū)塊。若致能了AH處理,為了計(jì)算所期望之ICV(復(fù)制于主存儲(chǔ)器128之訊框數(shù)據(jù)未改變)之目的,則IPsec處理器150用0取代AH標(biāo)頭之易變欄和ICV欄。IP標(biāo)頭之目的地地址欄考慮為易變但是是可以預(yù)測(cè)的,因?yàn)槿羰褂昧藖碓绰酚?,則媒介路由器可改變此欄。然而,因?yàn)閬碓垂?jié)點(diǎn)使用用于ICV計(jì)算之最后目的地地址,則接收器用于其ICV檢核處理此欄為易變的。
于存儲(chǔ)118中之控制區(qū)塊包括指至由AH鑒別所包含之接收訊框200之開始和結(jié)束點(diǎn)部分之指針。IPsec處理器150使用此控制區(qū)塊信息以決定何處開始和終止其鑒別計(jì)算。于SA存儲(chǔ)登錄274v中之AH_ALG欄表示使用了哪一個(gè)鑒別算法。范例IPsec系統(tǒng)124提供用于AH處理之如定義于RFC 2404之HMAC-SHA-1-96和定義于RFC2403之HMAC-MD5-96。于各種情況,Rx IPsec處理器150使用從SA登錄274之AH_IPAD和AH_OPAD欄來之預(yù)先處理數(shù)據(jù),伴隨如說明于RFC 2104執(zhí)行HMAC密碼鑰匙雜湊算法之訊框數(shù)據(jù)。若此計(jì)算之結(jié)果不匹配AH標(biāo)頭之鑒別數(shù)據(jù)域之內(nèi)容,則AH_ERR位設(shè)定于對(duì)應(yīng)接收狀態(tài)環(huán)登錄199(圖5J)。
對(duì)于接收ESP處理,SA存儲(chǔ)登錄274之ESPAH_ALG欄不為0,表示要求ESP鑒別,以及非0之值表示將使用哪一個(gè)鑒別算法(例如,MD5、SHA-1等)。Rx IPsec處理器150使用從SA登錄274之ESP_IPAD和ESP_OPAD欄來之預(yù)先處理之ipad和opad數(shù)據(jù),伴隨訊框數(shù)據(jù),以執(zhí)行如于RFC 2104中所述之HMAC密碼鑰匙雜湊算法。Rx IPsec處理器150使用從存儲(chǔ)118之控制區(qū)塊取得的指針,以決定訊框之什么部分使用于ICV計(jì)算。使用開始于ESP標(biāo)頭開始處之計(jì)算,和剛于ESP標(biāo)尾之鑒別數(shù)據(jù)域之前之末端之?dāng)?shù)據(jù),其中于此范圍中沒有一個(gè)欄是易變的。若此ICV計(jì)算之結(jié)果不匹配于ESP標(biāo)尾中鑒別數(shù)據(jù)域之內(nèi)容,則ESP_ICV_ERR位設(shè)定于對(duì)應(yīng)之接收狀態(tài)環(huán)登錄199中。
若SA存儲(chǔ)登錄274之ESP_ALG欄不為0,則需要ESP解密,而接收IPsec處理器150使用登錄274之ESP_ALG和ECB欄,以決定使用哪一個(gè)解密算法和模式(例如,DES;3DES;AES-128,10循環(huán);AES-192,12循環(huán);AES-256,14循環(huán);等等)。Rx IPsec處理器150從登錄274之ENC_KEY欄擷取解密密碼鑰匙,并使用從存儲(chǔ)118中控制區(qū)塊來之信息以決定訊框之哪一部分經(jīng)加密(例如,剛于ESP標(biāo)頭后開始和剛于ESP標(biāo)尾之鑒別數(shù)據(jù)域之前結(jié)束之部分)。若SA表示沒有ESP鑒別將實(shí)施,則鑒別數(shù)據(jù)域之長(zhǎng)度為0而加密之?dāng)?shù)據(jù)正于FCS欄之前結(jié)束。
一旦解密了酬載,則IPsec處理器150檢核ESP標(biāo)尾之填補(bǔ)長(zhǎng)度欄,看看是否有字節(jié)存在。若填補(bǔ)長(zhǎng)度欄不為0,則處理器150檢查填補(bǔ)字節(jié),并若填補(bǔ)字節(jié)不與用1開始之整數(shù)串(例如,1、2、3、…)增值相一致,則設(shè)定PAD_ERR位于接收狀態(tài)環(huán)登錄199中。IPsec處理器150用存儲(chǔ)118中(解密之)明碼來取代加密之訊框數(shù)據(jù)。范例處理器150不再構(gòu)成原來之IP封包(例如,處理器150不去除ESP標(biāo)頭和標(biāo)尾并取代前面未解密標(biāo)頭之Next Header欄)。若加密使用CBC模式,則ESP酬載欄之首8個(gè)或16個(gè)字節(jié)包含未加密之IV,此情況IPsec處理器150不改變。跟隨著IV之加密數(shù)據(jù),由其解密之相對(duì)部分所取代。
于范例IPsec系統(tǒng)124中,使用單12位雜湊算法而計(jì)算SPI表箱號(hào)和IP目的地地址雜湊碼。藉由透過IPsec處理器150中之雜湊邏輯移位SPI而計(jì)算箱號(hào)。對(duì)于目的地地址(DA)雜湊,透過雜湊邏輯而移位32位IPv4目的地地址或128位IPv6目的地地址,此情況提供12個(gè)用為箱號(hào)之輸出位,其中僅使用8個(gè)最小有效位(least significant bit)于DA雜湊。藉由可程序12位多項(xiàng)式于控制器102之配置緩存器中而定義雜湊函數(shù),其中于多項(xiàng)式中之各位定義于處理器150之雜湊邏輯中之AND/XOR分支(tap)。輸入比特流執(zhí)行于雜湊函數(shù)中具有最后正反輸出(flip-flop)之互斥或。結(jié)果為用多項(xiàng)式之“及(AND)”位方式(bitwise)運(yùn)算、用前面緩存器輸出之互斥或運(yùn)算、然后移位(shifted)。用0來初始化雜湊函數(shù)位。然后搜尋密碼鑰匙傳送通過雜湊函數(shù)。輸入比特流移位入雜湊函數(shù)邏輯后,12位輸出即為雜湊密碼鑰匙。
雖然本發(fā)明已關(guān)于一個(gè)或多個(gè)實(shí)施方式而作了顯示和說明,但是對(duì)于顯示之例子可作各種改變和修飾,而仍不脫離所附申請(qǐng)專利范圍之精神和范圍。尤其關(guān)于由上述組件或結(jié)構(gòu)(區(qū)塊、單元、引擎、組件、裝置、電路、系統(tǒng)、等等)所執(zhí)行之各種功能用來描述此等組件,除了有特別指示外,系欲相應(yīng)于執(zhí)行所述組件之特定功能(例如,其為功能上等效)之任何組件或構(gòu)造,即使構(gòu)造上沒有相等于所揭示之執(zhí)行本說明書中所顯示之本發(fā)明實(shí)施范例之功能之結(jié)構(gòu)。此外,雖然已相關(guān)于數(shù)個(gè)實(shí)施方式中之僅一個(gè)實(shí)施方式而揭示了本發(fā)明之特殊特征,但是此特征可結(jié)合當(dāng)也許需要時(shí)和對(duì)于任何指定或特殊應(yīng)用具優(yōu)點(diǎn)時(shí)之其它實(shí)施方式之一個(gè)或多個(gè)其它特征。再者,對(duì)于內(nèi)容中之各語辭“包括(including)”、“包括(includes)”、“具有(having)”、“具有(has)”、“與(with)”、或者它們的變形,使用于詳細(xì)說明和申請(qǐng)專利范圍中,該等語辭將相似于語辭“至少包括(comprising)”之意義。
(工業(yè)上可利用性)本發(fā)明可用來創(chuàng)造網(wǎng)絡(luò)和計(jì)算機(jī)之間之安全高速接口。
權(quán)利要求
1.一種用來接口連接主系統(tǒng)(6)與網(wǎng)絡(luò)(8)的網(wǎng)絡(luò)接口系統(tǒng)(2),用于從該主系統(tǒng)(6)提供輸出數(shù)據(jù)至該網(wǎng)絡(luò)(8),并從該網(wǎng)絡(luò)(8)提供輸入數(shù)據(jù)至該主系統(tǒng)(6),該網(wǎng)絡(luò)接口系統(tǒng)(2)包括總線接口系統(tǒng)(4),與該主系統(tǒng)(6)中的主總線(106)耦接,并在該網(wǎng)絡(luò)接口系統(tǒng)(2)與該主系統(tǒng)(6)之間傳輸數(shù)據(jù);媒體存取控制系統(tǒng)(10),與該網(wǎng)絡(luò)(8)耦接,并在該網(wǎng)絡(luò)接口系統(tǒng)(2)與該網(wǎng)絡(luò)(8)之間傳輸數(shù)據(jù);存儲(chǔ)系統(tǒng)(12),與該總線接口系統(tǒng)(4)和該媒體存取控制系統(tǒng)(10)耦接,該存儲(chǔ)系統(tǒng)(12)儲(chǔ)存?zhèn)鬏斣谠摼W(wǎng)絡(luò)(8)與該主系統(tǒng)(6)之間的輸入和輸出數(shù)據(jù);安全系統(tǒng)(14),與該存儲(chǔ)系統(tǒng)(12)耦接,該安全系統(tǒng)(14)選擇地加密輸出數(shù)據(jù),并選擇地解密輸入數(shù)據(jù);以及其中該安全系統(tǒng)(14)包括二個(gè)處理器(20、21)用來加密該輸出數(shù)據(jù),該二個(gè)處理器(20、21)每個(gè)可彼此獨(dú)立操作以加密該輸出數(shù)據(jù),該安全系統(tǒng)(14)被配置或可配置成以交替方式送出輸出數(shù)據(jù)包至一個(gè)或至另一個(gè)處理器(20、21)用來加密。
2.如權(quán)利要求1所述的網(wǎng)絡(luò)接口系統(tǒng),其中該二個(gè)處理器(20、21)也可用于鑒別該輸出數(shù)據(jù)。
3.如權(quán)利要求1所述的網(wǎng)絡(luò)接口系統(tǒng),其中該二個(gè)處理器(20、21)功能上相同。
4.如權(quán)利要求1所述的網(wǎng)絡(luò)接口系統(tǒng),其中該安全系統(tǒng)(14)還包括與該存儲(chǔ)系統(tǒng)(12)耦接的二個(gè)輸入緩沖器(26、27),各輸入緩沖器(26、27)耦接至該二個(gè)處理器(20、21)的其中之一,而該安全系統(tǒng)(14)將從該存儲(chǔ)系統(tǒng)(12)讀取的數(shù)據(jù)包以交替方式直接輸出至該輸入緩沖器(26、27)的一個(gè)或另一個(gè)。
5.如權(quán)利要求1所述的網(wǎng)絡(luò)接口系統(tǒng),其中該安全系統(tǒng)(14)還包括與該存儲(chǔ)系統(tǒng)(12)耦接的二個(gè)輸出緩沖器(24、25),各輸出緩沖器(24、25)耦接至該二個(gè)處理器(20、21)的其中之一,配置該處理器(20、21)而將處理的數(shù)據(jù)包寫至該輸出緩沖器(24、25),以及配置該安全系統(tǒng)(14)而將該處理數(shù)據(jù)包從該輸出緩沖器(24、25)按照與該數(shù)據(jù)包處里前從該存儲(chǔ)系統(tǒng)(12)讀取相同的次序傳輸至該存儲(chǔ)系統(tǒng)(12)。
6.如權(quán)利要求1所述的網(wǎng)絡(luò)接口系統(tǒng),其中該安全系統(tǒng)(14)還包括處理器(20)選擇地解密輸入數(shù)據(jù),其中該安全系統(tǒng)(14)包括用來加密輸入數(shù)據(jù)的處理器多于解密輸出數(shù)據(jù)的處理器。
7.一種單集成電路,包括安全系統(tǒng)(14),對(duì)數(shù)據(jù)執(zhí)行發(fā)送IPsec處理以傳輸至網(wǎng)絡(luò)(8),其中該安全系統(tǒng)(14)包括二個(gè)并行執(zhí)行發(fā)送IPsec處理的處理器(20、21)。
8.如權(quán)利要求7所述的單集成電路,其中該二個(gè)處理器(20、21)功能上相同。
9.如權(quán)利要求7所述的單集成電路,其中該安全系統(tǒng)(14)還包括二個(gè)輸入緩沖器(26、27),各輸入緩沖器(26、27)耦接至該處理器(20、21)的其中之一,而該安全系統(tǒng)(14)以交替方式直接輸出數(shù)據(jù)包至輸入緩沖器(26、27)的一個(gè)或另一個(gè)。
10.如權(quán)利要求7所述的單集成電路,其中該安全系統(tǒng)(14)還包括二個(gè)輸出緩沖器(24、25),各輸出緩沖器(24、25)耦接至該二個(gè)處理器(20、21)的其中之一,配置該處理器而將處理的數(shù)據(jù)包寫至該輸出緩沖器(24、25),以及配置該安全系統(tǒng)(14)而將該處理數(shù)據(jù)包從該輸出緩沖器(24、25)按照與該數(shù)據(jù)包處里前讀入該安全系統(tǒng)(14)相同的次序發(fā)送。
全文摘要
本發(fā)明系關(guān)于用于接口連接主系統(tǒng)(6)與網(wǎng)絡(luò)(8)的網(wǎng)絡(luò)接口系統(tǒng)(2)。該網(wǎng)絡(luò)接口系統(tǒng)(2)包括總線接口系統(tǒng)(4)、媒體存取控制系統(tǒng)(10),以及安全系統(tǒng)(14)。該網(wǎng)絡(luò)接口(2)從主系統(tǒng)(6)卸除IPsec處理。依照本發(fā)明,安全系統(tǒng)(14)包括用來加密輸出數(shù)據(jù)之二個(gè)處理器(20、21)。輸出數(shù)據(jù)包選擇地送至處理器(20、21)之其中一個(gè)或另一個(gè),由此發(fā)送處理能夠相關(guān)于接收處理而加速。
文檔編號(hào)H04L12/22GK1926839SQ200580006794
公開日2007年3月7日 申請(qǐng)日期2005年2月26日 優(yōu)先權(quán)日2004年3月2日
發(fā)明者M·卡尼茨, J·德沃克, R·A·威廉斯, M·Y·馬尼亞, S·維斯瓦納特 申請(qǐng)人:先進(jìn)微裝置公司