亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種處理網(wǎng)絡(luò)數(shù)據(jù)的方法及系統(tǒng)的制作方法

文檔序號(hào):7963253閱讀:161來(lái)源:國(guó)知局
專利名稱:一種處理網(wǎng)絡(luò)數(shù)據(jù)的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)的訪問(wèn),更具體地說(shuō),涉及一種高性能硬件網(wǎng)絡(luò)協(xié)議處理引擎的方法和系統(tǒng)。
背景技術(shù)
國(guó)際標(biāo)準(zhǔn)化組織建立了開(kāi)放式系統(tǒng)互連(OSI)參考模型。該OSI參考模型提供了一種網(wǎng)絡(luò)設(shè)計(jì)架構(gòu),該架構(gòu)可使不同提供商的設(shè)備能夠相互通信。更具體地說(shuō),OSI參考模型將通信流程按分層順序分成了七個(gè)獨(dú)立、不同而又相互關(guān)聯(lián)的類別。層1是物理層。它以物理方式發(fā)送數(shù)據(jù)。層2是數(shù)據(jù)鏈路層。它與操作通信鏈路的規(guī)程和協(xié)議相關(guān),包括消息錯(cuò)誤的檢測(cè)和糾錯(cuò)。層3是網(wǎng)絡(luò)層。它決定數(shù)據(jù)是如何在計(jì)算機(jī)間傳輸?shù)?。?是傳輸層。它定義了信息交換的規(guī)則,并管理消息在網(wǎng)絡(luò)內(nèi)部和網(wǎng)絡(luò)之間端到端的傳送,包括錯(cuò)誤恢復(fù)和流量控制。層5是會(huì)話層。它處理對(duì)話管理并控制由層4提供的基本通信設(shè)備的使用。層6是表示層。它與數(shù)據(jù)格式化、代碼的轉(zhuǎn)換和壓縮/解壓縮相關(guān)。層7是應(yīng)用層,它處理與特定應(yīng)用服務(wù),如文件傳輸、遠(yuǎn)程文件訪問(wèn)和虛擬終端相關(guān)的功能。
各種電子設(shè)備,如計(jì)算機(jī)、無(wú)線通信設(shè)備和個(gè)人數(shù)字助理等,為了能相互通信可能訪問(wèn)各種網(wǎng)絡(luò)。例如,這些設(shè)備為了方便通過(guò)因特網(wǎng)通信,可能使用傳輸控制協(xié)議/因特網(wǎng)協(xié)議(TCP/IP)。TCP允許兩個(gè)應(yīng)用建立連接并交換數(shù)據(jù)流。TCP能保證數(shù)據(jù)的傳送,同時(shí)也可保證這些數(shù)據(jù)包能按順序傳送到TCP以上的各層。與諸如用戶數(shù)據(jù)報(bào)協(xié)議(UDP)等協(xié)議相比,TCP可用于將數(shù)據(jù)包按與發(fā)送時(shí)相同的順序傳送到最終目的地,且不會(huì)出現(xiàn)包丟失的情況。TCP同時(shí)還可區(qū)分不同應(yīng)用程序的數(shù)據(jù),例如,同一計(jì)算機(jī)上的Web服務(wù)器和郵件服務(wù)器。
相應(yīng)地,TCP協(xié)議經(jīng)常用于因特網(wǎng)通信。執(zhí)行OSI棧和TCP/IP處理的傳統(tǒng)解決方案可能要使用更快更強(qiáng)的處理器。例如,研究表明,TCP輸入/輸出處理的普通路徑大約需要300條指令。在最大速率條件下,對(duì)于10Gbit/s連接而言,每秒大約可接收一千五百萬(wàn)條的最小包長(zhǎng)的數(shù)據(jù)包。因此,輸入路徑的處理大約需要每秒4,500百萬(wàn)條指令(MIPS)。當(dāng)還需要添加類似數(shù)目的MIPS用于處理輸出連接時(shí),每秒的總指令數(shù)可能接近于一個(gè)新式處理器的極限。例如,高級(jí)奔4處理器可有大概10,000MIPS的處理能力。但是,在處理器可能要處理整個(gè)協(xié)議棧的設(shè)計(jì)中,該處理器可能成為瓶頸。
隨著網(wǎng)速的提高,某些設(shè)計(jì)可通過(guò)使用更快速的處理器或添加更多的處理器來(lái)緩解處理器的瓶頸問(wèn)題。然而,當(dāng)訪問(wèn)DRAM等存儲(chǔ)器時(shí),處理器仍然可能減速。對(duì)此問(wèn)題的一種解決方案是高速緩沖存儲(chǔ)器。但是,當(dāng)發(fā)生緩存缺失時(shí),在等待將慢存儲(chǔ)器的數(shù)據(jù)填充到緩存的過(guò)程中,處理器性能可能會(huì)嚴(yán)重下降。
此外,三重內(nèi)容可尋址存儲(chǔ)器(T-CAM)設(shè)備可用于加速TCP會(huì)話查詢等操作。之所以可使用T-CAM存儲(chǔ),因?yàn)槠渌阉魉俾士赡芨哂诨谲浖乃惴ㄋ阉鳌2贿^(guò),T-CAM存儲(chǔ)器的缺點(diǎn)在于其消耗的功率。
通過(guò)將這些系統(tǒng)與本發(fā)明某些方面進(jìn)行比較,可進(jìn)一步看出傳統(tǒng)解決方案的更多局限和缺點(diǎn),下面將結(jié)合實(shí)施例和附圖對(duì)本發(fā)明作進(jìn)一步描述。

發(fā)明內(nèi)容
一種高性能硬件網(wǎng)絡(luò)協(xié)議處理引擎的系統(tǒng)和/或方法,結(jié)合下述至少一副附圖進(jìn)行了充分說(shuō)明,且在權(quán)利要求中進(jìn)行了更完整的闡明。
根據(jù)本發(fā)明的一方面,提供了一種處理網(wǎng)絡(luò)數(shù)據(jù)的方法,該方法包含在單網(wǎng)絡(luò)芯片上使用多個(gè)管線硬件級(jí)處理下述中的至少一項(xiàng)接收到的TCP數(shù)據(jù)包和要傳輸?shù)腡CP數(shù)據(jù)包。
優(yōu)選地,該方法進(jìn)一步包括,在所述單網(wǎng)絡(luò)芯片內(nèi),在所述并行管線硬件級(jí)的第一級(jí),解析接收到的TCP數(shù)據(jù)包的報(bào)頭。
優(yōu)選地,該方法進(jìn)一步包括,在所述單網(wǎng)絡(luò)芯片內(nèi),在所述并行管線硬件級(jí)的所述第一級(jí),驗(yàn)證接收到的所述TCP數(shù)據(jù)包的以太網(wǎng)幀CRC摘要(digest)、IP報(bào)頭校驗(yàn)和以及TCP校驗(yàn)和。
優(yōu)選地,該方法進(jìn)一步包括,在所述單網(wǎng)絡(luò)芯片內(nèi),在所述并行管線硬件級(jí)的所述第一級(jí),確認(rèn)接收到的所述TCP數(shù)據(jù)包的IP地址。
優(yōu)選地,該方法進(jìn)一步包括,在所述單網(wǎng)絡(luò)芯片內(nèi),在所述并行管線硬件級(jí)的第二級(jí),查詢所述接收到的所述TCP數(shù)據(jù)包TCB索引。
優(yōu)選地,該方法進(jìn)一步包括,在所述單網(wǎng)絡(luò)芯片內(nèi)、在所述并行管線硬件級(jí)的第三級(jí),對(duì)下列中的至少一項(xiàng)的TCB數(shù)據(jù)查詢排序所述接收到的TCP數(shù)據(jù)包和所述要傳輸?shù)腡CP數(shù)據(jù)包。
優(yōu)選地,該方法進(jìn)一步包括,在所述并行管線硬件級(jí)的所述第三級(jí)中,在所述單網(wǎng)絡(luò)芯片內(nèi),至少為下列中的一項(xiàng)所述接收到的TCP數(shù)據(jù)包和所述要傳輸?shù)腡CP數(shù)據(jù)包,存儲(chǔ)所述TCB數(shù)據(jù)。
優(yōu)選地,該方法進(jìn)一步包括,將與所述已處理TCP數(shù)據(jù)包相對(duì)應(yīng)的的所述TCB數(shù)據(jù)的至少一部分存儲(chǔ)在所述單網(wǎng)絡(luò)芯片的外部存儲(chǔ)器中。
優(yōu)選地,該方法進(jìn)一步包括,將由所述網(wǎng)絡(luò)芯片處理的活動(dòng)網(wǎng)絡(luò)連接的TCB數(shù)據(jù)的至少一部分緩存到所述單網(wǎng)絡(luò)芯片中。
優(yōu)選地,該方法進(jìn)一步包括,在所述并行管線硬件級(jí)的第四級(jí),在所述單網(wǎng)絡(luò)芯片內(nèi)執(zhí)行所述TCP數(shù)據(jù)包的接收處理。
優(yōu)選地,該方法進(jìn)一步包括,在所述并行管線硬件級(jí)的第五級(jí),在所述單網(wǎng)絡(luò)芯片中,開(kāi)始將所述已處理的接收到的TCP數(shù)據(jù)包傳輸?shù)綉?yīng)用層中。
優(yōu)選地,該方法進(jìn)一步包括,在所述并行管線硬件級(jí)的第五級(jí),在所述單網(wǎng)絡(luò)芯片中,在開(kāi)始所述傳輸之前,將無(wú)序接收到的TCP數(shù)據(jù)包進(jìn)行重新組合。
優(yōu)選地,該方法進(jìn)一步包括,在所述并行管線硬件級(jí)的第五級(jí),在所述單網(wǎng)絡(luò)芯片中,根據(jù)來(lái)自應(yīng)用程序的數(shù)據(jù),開(kāi)始創(chuàng)建所述的要傳輸?shù)腡CP數(shù)據(jù)包。
優(yōu)選地,該方法進(jìn)一步包括,在所述并行管線硬件級(jí)的第一級(jí),在所述單網(wǎng)絡(luò)芯片內(nèi)部,將TCP和IP報(bào)頭附加在所述的最初創(chuàng)建的要傳輸?shù)腡CP數(shù)據(jù)包上。
優(yōu)選地,該方法進(jìn)一步包括,在所述并行管線硬件級(jí)的第一級(jí),在所述單網(wǎng)絡(luò)芯片內(nèi)部,生成以太網(wǎng)幀,所述以太網(wǎng)幀至少包含附加在所述的最初創(chuàng)建的TCP數(shù)據(jù)包上的TCP和IP報(bào)頭。
根據(jù)本發(fā)明的另一方面,還提供了一種處理網(wǎng)絡(luò)數(shù)據(jù)的系統(tǒng),該系統(tǒng)包含單網(wǎng)絡(luò)芯片,該單網(wǎng)絡(luò)芯片包含處理下述項(xiàng)中的至少一個(gè)的多個(gè)片上管線硬件級(jí)接收到的TCP數(shù)據(jù)包,和要傳輸?shù)腡CP數(shù)據(jù)包。
優(yōu)選地,所述多個(gè)并行的管線硬件級(jí)的第一級(jí),在所述單網(wǎng)絡(luò)芯片上解析所述接收到的TCP數(shù)據(jù)包的報(bào)頭。
優(yōu)選地,所述多個(gè)并行的管線硬件級(jí)的所述第一級(jí),在所述單網(wǎng)絡(luò)芯片上驗(yàn)證所述接收到的TCP數(shù)據(jù)包的以太網(wǎng)幀CRC摘要、IP檢驗(yàn)和以及TCP校驗(yàn)和。
優(yōu)選地,所述多個(gè)并行的管線硬件級(jí)的所述第一級(jí),在所述單網(wǎng)絡(luò)芯片上確認(rèn)所述接收到的TCP數(shù)據(jù)包的IP地址。
優(yōu)選地,所述多個(gè)并行的管線硬件級(jí)的第二級(jí),在所述單網(wǎng)絡(luò)芯片上執(zhí)行所述接收到的TCP數(shù)據(jù)包的TCB索引查詢。
優(yōu)選地,所述多個(gè)并行的管線硬件級(jí)的第三級(jí),在所述單網(wǎng)絡(luò)芯片上為下述項(xiàng)中的至少一個(gè)的TCB數(shù)據(jù)查詢排序所述接收到的TCP數(shù)據(jù)包,以及所述的要傳輸?shù)腡CP數(shù)據(jù)包。
優(yōu)選地,所述多個(gè)并行的管線硬件級(jí)的第三級(jí),在所述單網(wǎng)絡(luò)芯片上為下述項(xiàng)中的至少一個(gè)存儲(chǔ)所述TCB數(shù)據(jù)所述接收到的TCP數(shù)據(jù)包,以及所述的要傳輸?shù)腡CP數(shù)據(jù)包。
優(yōu)選地,所述多個(gè)并行的管線硬件級(jí)的所述第三級(jí),將對(duì)應(yīng)于所述已處理TCP數(shù)據(jù)包的所述TCB數(shù)據(jù)的至少一部分存儲(chǔ)到所述單網(wǎng)絡(luò)芯片的外部存儲(chǔ)器中。
優(yōu)選地,所述多個(gè)并行的管線硬件級(jí)的至少一個(gè)級(jí)中,在所述單網(wǎng)絡(luò)芯片上存儲(chǔ)由所述網(wǎng)絡(luò)芯片處理的活動(dòng)網(wǎng)絡(luò)連接的TCB數(shù)據(jù)的至少一部分。
優(yōu)選地,所述多個(gè)并行的管線硬件級(jí)的第四級(jí),在所述單網(wǎng)絡(luò)芯片上對(duì)所述接收到的TCP數(shù)據(jù)包進(jìn)行接收處理。
優(yōu)選地,所述多個(gè)并行的管線硬件級(jí)的第五級(jí),在所述單網(wǎng)絡(luò)芯片上開(kāi)始將所述已處理的接收到的TCP數(shù)據(jù)包傳輸?shù)綉?yīng)用層。
優(yōu)選地,所述多個(gè)并行的管線硬件級(jí)的所述第五級(jí),在開(kāi)始所述傳輸之前,在所述單網(wǎng)絡(luò)芯片內(nèi)將無(wú)序接收到的TCP數(shù)據(jù)包重新組合。
優(yōu)選地,所述多個(gè)并行的管線硬件級(jí)的第五級(jí),在所述單網(wǎng)絡(luò)芯片內(nèi)開(kāi)始根據(jù)從應(yīng)用程序接收而來(lái)的數(shù)據(jù)創(chuàng)建所述的要傳輸?shù)腡CP數(shù)據(jù)包。
優(yōu)選地,該系統(tǒng)進(jìn)一步包括,在所述單網(wǎng)絡(luò)芯片內(nèi)的所述多個(gè)并行的管線硬件級(jí)的第一級(jí),將TCP和IP報(bào)頭附加到所述初始創(chuàng)建的要傳輸?shù)腡CP數(shù)據(jù)包上。
優(yōu)選地,該系統(tǒng)進(jìn)一步包括生成以太網(wǎng)幀,所述以太網(wǎng)幀包括在所述單網(wǎng)絡(luò)芯片內(nèi)的所述多個(gè)并行的管線硬件級(jí)的所述第一級(jí),將所述TCP和IP報(bào)頭中的至少一個(gè)附加到所述的初始創(chuàng)建的TCP數(shù)據(jù)包上。
本發(fā)明的各優(yōu)點(diǎn)、方面和創(chuàng)新點(diǎn),以及具體實(shí)施方式
,可以通過(guò)下文及附圖得到充分說(shuō)明。


圖1a是典型通信系統(tǒng)的方框圖,它可與本發(fā)明的實(shí)施例一起使用。
圖1b是未卸載(non-offloaded)因特網(wǎng)協(xié)議棧的典型系統(tǒng)的方框圖,它可與本發(fā)明的實(shí)施例一起使用。
圖1c是帶有智能網(wǎng)絡(luò)接口卡的因特網(wǎng)協(xié)議棧的典型系統(tǒng)的方框圖,它可與本發(fā)明的實(shí)施例一起使用。
圖2是在現(xiàn)代計(jì)算機(jī)系統(tǒng)中執(zhí)行TCP/IP協(xié)議棧的示意圖,它可與本發(fā)明的實(shí)施例一起使用。
圖3a是根據(jù)本發(fā)明實(shí)施例的包含帶有多個(gè)管線硬件級(jí)的典型網(wǎng)絡(luò)芯片的方框圖。
圖3b是根據(jù)本發(fā)明實(shí)施例的典型管線硬件級(jí)的示意圖。
圖4a是根據(jù)本發(fā)明實(shí)施例的多個(gè)并行管線硬件級(jí)的第一級(jí)接收網(wǎng)絡(luò)數(shù)據(jù)的典型流程圖。
圖4b是根據(jù)本發(fā)明實(shí)施例的在多個(gè)并行管線硬件級(jí)的第一級(jí)中傳輸網(wǎng)絡(luò)數(shù)據(jù)的典型流程圖。
圖5是根據(jù)本發(fā)明實(shí)施例的多個(gè)并行管線硬件級(jí)的第二級(jí)的方框圖。
圖6是根據(jù)本發(fā)明實(shí)施例的多個(gè)并行管線硬件級(jí)的第三級(jí)的方框圖。
圖7是根據(jù)本發(fā)明實(shí)施例的多個(gè)并行管線硬件級(jí)中第二級(jí)和第四級(jí)的方框圖。
圖8是根據(jù)本發(fā)明實(shí)施例的多個(gè)并行管線硬件級(jí)的第五級(jí)的典型流程圖。
圖9a是根據(jù)本發(fā)明實(shí)施例的通過(guò)多個(gè)并行管線硬件級(jí)將數(shù)據(jù)傳輸?shù)骄W(wǎng)絡(luò)的典型流程圖。
圖9b是根據(jù)本發(fā)明實(shí)施例的通過(guò)多個(gè)并行管線硬件級(jí)從網(wǎng)絡(luò)接收數(shù)據(jù)的典型流程圖。
具體實(shí)施例方式
本發(fā)明的實(shí)施例涉及一種單網(wǎng)絡(luò)芯片上的多管線硬件級(jí),用于處理接收到的TCP數(shù)據(jù)包和/或要傳輸?shù)腡CP數(shù)高性能硬件網(wǎng)絡(luò)協(xié)議處理引擎的方法和系統(tǒng)。該方法可包括單網(wǎng)絡(luò)芯片上的上的多個(gè)管線硬件級(jí),所述單網(wǎng)絡(luò)芯片用來(lái)處理所接收的TCP數(shù)據(jù)包和待發(fā)送的TCP數(shù)據(jù)包。在并行管線硬件級(jí)的第一級(jí),可解析接收到的TCP數(shù)據(jù)包的報(bào)頭,并可驗(yàn)證所接收到的TCP數(shù)據(jù)包的以太網(wǎng)幀CRC。在第一級(jí)同時(shí)也可驗(yàn)證所接收到的TCP數(shù)據(jù)包的IP地址。在并行管線硬件級(jí)的第二級(jí),可查詢所接收到的TCP數(shù)據(jù)包的TCB索引。為了能對(duì)TCB數(shù)據(jù)進(jìn)行查詢,對(duì)接收到的TCP數(shù)據(jù)包和/或要傳輸?shù)腡CP數(shù)據(jù)包進(jìn)行排序,并可在并行管線硬件級(jí)的第三級(jí)獲取TCB數(shù)據(jù)。
對(duì)于接收到的TCP數(shù)據(jù)包和/或要傳輸?shù)腡CP數(shù)據(jù)包,TCB數(shù)據(jù)可在并行管線硬件級(jí)的第三級(jí)進(jìn)行保存。對(duì)應(yīng)于已處理的TCP數(shù)據(jù)包的至少一部分TCB數(shù)據(jù)存儲(chǔ)于單網(wǎng)絡(luò)芯片外部的存儲(chǔ)器中和/或緩存在單網(wǎng)絡(luò)芯片內(nèi)部。可在并行管線硬件級(jí)的第四級(jí)進(jìn)行TCP數(shù)據(jù)包的接收處理。并行管線硬件級(jí)的第五級(jí)可用于開(kāi)始將所接收的已處理TCP數(shù)據(jù)包傳送到應(yīng)用層。在開(kāi)始傳送之前,在并行管線硬件級(jí)的第五級(jí)將那些無(wú)序接收的TCP數(shù)據(jù)包進(jìn)行重新組合。
并行管線硬件級(jí)的第五級(jí)可用于根據(jù)來(lái)自應(yīng)用程序的數(shù)據(jù),開(kāi)始創(chuàng)建要傳輸?shù)腡CP數(shù)據(jù)包。在并行管線硬件級(jí)的第一級(jí)可將TCP和IP數(shù)據(jù)包報(bào)頭預(yù)先添加到初始創(chuàng)建的要傳輸?shù)腡CP數(shù)據(jù)包的前面。并行管線硬件級(jí)的第一級(jí)可用于生成以太網(wǎng)幀,其中至少包含預(yù)先添加到在單網(wǎng)絡(luò)芯片內(nèi)初始創(chuàng)建的TCP數(shù)據(jù)包之前的TCP和IP數(shù)據(jù)包報(bào)頭。
圖1a是典型通信系統(tǒng)的方框圖,該系統(tǒng)可與本發(fā)明的實(shí)施例一起使用。如圖1a所示,其中包含主機(jī)100和101以及網(wǎng)絡(luò)115。主機(jī)101可包含中央處理單元(CPU)102、存儲(chǔ)接口(MCH)104、存儲(chǔ)模塊106、輸入/輸出(IO)接口(ICH)108和網(wǎng)絡(luò)接口卡(NIC)110。
存儲(chǔ)接口(MCH)104可包括適當(dāng)?shù)碾娐泛?或邏輯,可用于在存儲(chǔ)模塊106和其它設(shè)備如CPU 102之間傳輸數(shù)據(jù)。
輸入/輸出接口(ICH)108可包括適當(dāng)?shù)碾娐泛?或邏輯,可用于在IO設(shè)備間、IO設(shè)備與存儲(chǔ)模塊106間或IO設(shè)備與CPU 102間傳輸數(shù)據(jù)。
網(wǎng)絡(luò)接口卡(NIC)110可包括適當(dāng)?shù)碾娐?、邏輯?或代碼,可用于傳輸和接收來(lái)自網(wǎng)絡(luò)的數(shù)據(jù),如來(lái)自以太網(wǎng)的數(shù)據(jù)等。NIC 110可處理已接收數(shù)據(jù)和/或要傳輸?shù)臄?shù)據(jù)。處理量可依賴于其設(shè)計(jì)和/或設(shè)備。一般地,NIC 110可能包括單個(gè)芯片,該芯片也可使用片上存儲(chǔ)器和/或片外存儲(chǔ)器。
在操作中,主機(jī)100和主機(jī)101可通過(guò)例如網(wǎng)絡(luò)115實(shí)現(xiàn)相互通信。網(wǎng)絡(luò)115可以是以太網(wǎng)。因此,主機(jī)100和/或101可通過(guò)網(wǎng)絡(luò)接口卡,如NIC 100,發(fā)送和/或接收包。例如,CPU 102可獲取來(lái)自存儲(chǔ)模塊106的指令并執(zhí)行這些指令。CPU 102可進(jìn)一步將數(shù)據(jù)存儲(chǔ)到存儲(chǔ)模塊106上和/或從存儲(chǔ)模塊106獲取數(shù)據(jù)。例如,運(yùn)行在CPU 102中的軟件應(yīng)用程序可讓數(shù)據(jù)傳送到網(wǎng)絡(luò)中,如傳送到網(wǎng)絡(luò)115中等。軟件應(yīng)用程序的實(shí)例可以是用于在主機(jī)100和101之間發(fā)送郵件的郵件應(yīng)用程序。
相應(yīng)地,主機(jī)101內(nèi)的CPU 102可處理郵件中的數(shù)據(jù)并將已處理的數(shù)據(jù)傳送到NIC 110。該數(shù)據(jù)可由CPU 102直接傳送到NIC 110。選擇性地,該數(shù)據(jù)也可存儲(chǔ)在存儲(chǔ)模塊106中。已存儲(chǔ)的數(shù)據(jù)可通過(guò)直接內(nèi)存存取(DMA)進(jìn)程等傳送到NIC 110。DMA所需的各種參數(shù),如,源開(kāi)始地址、待傳送比特?cái)?shù)和目的開(kāi)始地址可由CPU 102寫入到例如存儲(chǔ)接口(MCH)104中。根據(jù)開(kāi)始命令,存儲(chǔ)接口(MCH)104可啟動(dòng)DMA進(jìn)程。在此情形下,存儲(chǔ)接口(MCH)104可看成是DMA控制器。
NIC 110可進(jìn)一步處理郵件數(shù)據(jù),并將郵件數(shù)據(jù)以適合于在與之相連的網(wǎng)絡(luò)115上傳送的數(shù)據(jù)包的形式發(fā)送出去。類似地,NIC 110可從與之相連的網(wǎng)絡(luò)115中接收數(shù)據(jù)包。NIC 110可處理所接收數(shù)據(jù)包中的數(shù)據(jù),并將已處理的數(shù)據(jù)傳送到可進(jìn)一步處理該數(shù)據(jù)的更高層協(xié)議程序。已處理數(shù)據(jù)可通過(guò)IO接口(ICH)108和存儲(chǔ)器接口(MCH)104存儲(chǔ)在存儲(chǔ)模塊106中。存儲(chǔ)模塊106中的數(shù)據(jù)可由在CPU 102中運(yùn)行的郵件應(yīng)用程序進(jìn)一步處理,并最終以例如文本郵件消息的形式顯示給主機(jī)101的用戶。
圖1b是未卸載(non-offloaded)因特網(wǎng)協(xié)議棧的典型系統(tǒng)方框圖,它可與本發(fā)明的實(shí)施例一起使用。如圖1b所示,主機(jī)101可包含CPU 102、MCH 104、存儲(chǔ)模塊106、ICH 108和NIC 110。圖1b還顯示了應(yīng)用層120、套接字(socket)122、傳輸層124、網(wǎng)絡(luò)層126和數(shù)據(jù)鏈路層128。
應(yīng)用層120、傳輸層124、網(wǎng)絡(luò)層126和數(shù)據(jù)鏈路層128可是協(xié)議棧的一部分,用于接收和傳送來(lái)自網(wǎng)絡(luò)的數(shù)據(jù)。協(xié)議??梢允抢缫蛱鼐W(wǎng)所使用協(xié)議的因特網(wǎng)協(xié)議(IP)族。協(xié)議IP族可包含應(yīng)用層協(xié)議、傳輸層協(xié)議、網(wǎng)絡(luò)層協(xié)議、數(shù)據(jù)鏈路層協(xié)議和物理層協(xié)議。套接字122可包含軟件程序,該程序可允許在兩個(gè)其它軟件程序間傳送數(shù)據(jù)。因此,套接字122可看成是在應(yīng)用層120和傳輸層124間傳送數(shù)據(jù)的管線。物理層可以是將網(wǎng)絡(luò)中的一個(gè)主機(jī)與其它主機(jī)相連的媒介。例如,該媒介可以是用于在網(wǎng)絡(luò)中傳導(dǎo)如以太網(wǎng)等網(wǎng)絡(luò)信號(hào)的電纜。
例如,接收郵件時(shí),NIC 110可從以太網(wǎng)媒介等物理層中以一系列數(shù)據(jù)包的形式接收郵件。該NIC 110可將接收到的數(shù)據(jù)包存儲(chǔ)到存儲(chǔ)模塊106中。CPU 102可運(yùn)行數(shù)據(jù)鏈路層128協(xié)議,從而將各包的物理層幀(framing)去除。該幀可包含節(jié)點(diǎn)地址和指示各數(shù)據(jù)包的起始及結(jié)束的比特類型。接著CPU102可進(jìn)一步執(zhí)行協(xié)議棧中下一個(gè)OSI層的協(xié)議。該OSI層可以是例如網(wǎng)絡(luò)層126,且可包括去除各數(shù)據(jù)包的網(wǎng)絡(luò)相關(guān)信息,該信息用于將數(shù)據(jù)包從一個(gè)網(wǎng)絡(luò)路由到另一個(gè)網(wǎng)絡(luò)。接著要執(zhí)行的下一層協(xié)議可為傳輸層124。傳輸層124可確保文件的所有數(shù)據(jù)包都已被接收,并可將各數(shù)據(jù)包按順序組合。
接著,已組合好的文件可由應(yīng)用層120協(xié)議處理。應(yīng)用層120協(xié)議可以是應(yīng)用程序的一部分,如郵件應(yīng)用程序等。應(yīng)用層120協(xié)議可確保數(shù)據(jù)格式是應(yīng)用程序使用的格式。例如,郵件消息的字符編碼使用ASCII格式而不是EBCDIC格式進(jìn)行編碼。
將數(shù)據(jù)傳送到網(wǎng)絡(luò)時(shí),協(xié)議棧的運(yùn)行方向相反。例如,從應(yīng)用層120到傳輸層124,然后到網(wǎng)絡(luò)層126,接著到數(shù)據(jù)鏈路層128,最后到物理層。應(yīng)用層120可將應(yīng)用程序文件編碼為該應(yīng)用程序類型的標(biāo)準(zhǔn)格式。傳輸層124可將該文件分解為數(shù)據(jù)包,且各數(shù)據(jù)包被標(biāo)識(shí),從而使接收主機(jī)的對(duì)應(yīng)傳輸層能將接收到的包按順序重新組合。網(wǎng)絡(luò)層126可將來(lái)自傳輸層124的數(shù)據(jù)包進(jìn)行封裝,從而能把數(shù)據(jù)包路由到可能位于不同網(wǎng)絡(luò)中的目的地址。數(shù)據(jù)鏈路層可為包提供報(bào)頭,從而使他們能指定到網(wǎng)絡(luò)中的特定節(jié)點(diǎn)。
圖1c是帶有智能網(wǎng)絡(luò)接口卡的因特網(wǎng)協(xié)議棧的典型系統(tǒng)方框圖,它可與本發(fā)明的實(shí)施例一起使用。如圖1c所示,該方框圖與圖1b類似。不過(guò),協(xié)議棧可以是獨(dú)立的。例如,傳輸層124、網(wǎng)絡(luò)層126和數(shù)據(jù)鏈路層128可由NIC 110執(zhí)行,而不是由圖1b中的CPU 102執(zhí)行。該NIC 110可看成是智能網(wǎng)卡,因?yàn)樗蛇M(jìn)行某些協(xié)議棧處理,例如,傳輸層124、網(wǎng)絡(luò)層126的因特網(wǎng)協(xié)議(IP)、數(shù)據(jù)鏈路層128的以太網(wǎng)協(xié)議。這樣,CPU 102可以只需處理套接字122和應(yīng)用層120協(xié)議,而不必將更多的處理資源分配給應(yīng)用程序軟件。因此,可提高處理器性能,從而可更高效地執(zhí)行應(yīng)用程序軟件。智能NIC,如NIC 110等,可能依賴于嵌入式處理器和固件來(lái)處理網(wǎng)絡(luò)協(xié)議棧。
圖2是在現(xiàn)代計(jì)算機(jī)系統(tǒng)中執(zhí)行TCP/IP棧的示意圖,它可與本發(fā)明的實(shí)施例一起使用。如圖2所示,其中示出了TCP/IP協(xié)議棧中的物理層202、數(shù)據(jù)鏈路層204、IP層206、TCP層208和應(yīng)用層210。圖2中還給出了在時(shí)間點(diǎn)(time instant)T0到時(shí)間點(diǎn)(time instant)T5期間,TCP/IP協(xié)議棧中各層202、204、206、208和210進(jìn)行的步驟。協(xié)議棧中的各步驟可由主機(jī)處理器執(zhí)行,如CPU 102。
在時(shí)間點(diǎn)T0之后,網(wǎng)絡(luò)控制器例如NIC 110可從網(wǎng)絡(luò)如以太網(wǎng)處獲取數(shù)據(jù)。如果由NIC 110接收到的數(shù)據(jù)包中的MAC地址與NIC 110的MAC地址相同,則這些數(shù)據(jù)包的目的地為NIC 110。
在時(shí)間點(diǎn)T1,NIC 110可能中斷CPU 102以告知其已接收到數(shù)據(jù)包。這個(gè)對(duì)CPU 102的中斷可能觸發(fā)上下文切換,其中可能包括保存當(dāng)前正在執(zhí)行以及中斷的進(jìn)程的各種信息,同時(shí)為各寄存器載入新信息。上下文切換中涉及的寄存器中的信息可能包括例如CPU 102中的通用寄存器、程序計(jì)數(shù)器、棧指針等。必須載入新信息進(jìn)而為中斷提供服務(wù)。從這點(diǎn)上來(lái)看,上下文切換可能消耗寶貴的CPU處理時(shí)間。
作為中斷服務(wù)程序的一部分,以太網(wǎng)驅(qū)動(dòng)器204可以是數(shù)據(jù)鏈路層128(圖1b)的一部分,該驅(qū)動(dòng)器可以去除例如以太網(wǎng)幀信息。以太網(wǎng)驅(qū)動(dòng)器204可以分配第二控制緩存以跟蹤接收到的數(shù)據(jù)包??刂凭彺娴姆峙浜统跏蓟赡軐?dǎo)致許多緩存的缺失。當(dāng)發(fā)生緩存缺失時(shí),在等待來(lái)自外部存儲(chǔ)器的數(shù)據(jù)期間,處理器性能可能會(huì)嚴(yán)重下降。以太網(wǎng)驅(qū)動(dòng)器204同樣需要用接收緩存對(duì)網(wǎng)絡(luò)適配器進(jìn)行補(bǔ)充,從而可使接收到的數(shù)據(jù)包得到進(jìn)一步的協(xié)議處理。以太網(wǎng)驅(qū)動(dòng)器204接著可將接收到的數(shù)據(jù)包插入到接收緩存的輸入隊(duì)列中,并確定軟件中斷的時(shí)間,這樣協(xié)議處理可稍后繼續(xù)進(jìn)行。可在例如時(shí)間點(diǎn)T2處安排軟件中斷。
以太網(wǎng)驅(qū)動(dòng)器204在時(shí)間點(diǎn)T2處設(shè)置的軟件中斷可啟動(dòng)IP層206的執(zhí)行,IP層206可以是網(wǎng)絡(luò)層126(圖1b)。IP層206包括驗(yàn)證本地主機(jī),如主機(jī)101,是否為目的地。IP層206也可根據(jù)傳輸層協(xié)議將數(shù)據(jù)包解復(fù)用到協(xié)議棧中的上一層,例如,傳輸層124。傳輸層124可能包括多個(gè)協(xié)議,如TCP和用戶數(shù)據(jù)報(bào)協(xié)議(UDP)。TCP可以保證某個(gè)主機(jī),如主機(jī)100等,發(fā)送的數(shù)據(jù)能被另一個(gè)主機(jī),如主機(jī)101等,以相同順序接收且沒(méi)有任何數(shù)據(jù)包丟失。而UDP可能無(wú)法提供由TCP層提供的可靠性和順序保證。數(shù)據(jù)包到達(dá)時(shí)可能無(wú)序或者可能無(wú)預(yù)警的丟失。因此,UDP可為許多輕量級(jí)或?qū)r(shí)間敏感的應(yīng)用提供更快更高效的數(shù)據(jù)傳輸。使用UDP的一些數(shù)據(jù)傳輸包括流媒體應(yīng)用程序、IP電話和/或在線游戲。
在時(shí)間點(diǎn)T3,TCP層208可以是例如傳輸層124,它從TCP控制模塊(TCB)的會(huì)話查詢操作開(kāi)始。與網(wǎng)絡(luò)節(jié)點(diǎn)相關(guān)的各傳輸層124可能包含各TCP連接的狀態(tài)信息。該信息通常可能在數(shù)據(jù)結(jié)構(gòu)中,該數(shù)據(jù)結(jié)構(gòu)包含連接狀態(tài)信息、相關(guān)本地進(jìn)程和關(guān)于連接傳輸特性的反饋參數(shù)。該TCB通常按每個(gè)連接進(jìn)行維護(hù)。一旦發(fā)現(xiàn)或者為新連接生成數(shù)據(jù)包的TCB信息,接收主機(jī)的TCP層208,如主機(jī)101,可對(duì)數(shù)據(jù)包的接收進(jìn)行確認(rèn)。
在一段時(shí)間之后,如果接收主機(jī)尚未發(fā)送某個(gè)數(shù)據(jù)包的確認(rèn)信息,則發(fā)送主機(jī),如主機(jī)100,將重新發(fā)送該數(shù)據(jù)包。例如,當(dāng)接收主機(jī)101的TCP層208判定某個(gè)文件已根據(jù)協(xié)議完成,它可將接收到的數(shù)據(jù)包重新組合排列到套接字接收緩存中。套接字接收緩存本質(zhì)上可能是鏈接列表,該列表可能包含所有按正確順序的已接收數(shù)據(jù)包。套接字接收緩存中的數(shù)據(jù)可能通過(guò)利用時(shí)間點(diǎn)T4上的套接字122與應(yīng)用層進(jìn)行通信。套接字接收緩存中的數(shù)據(jù)可由應(yīng)用層120復(fù)制到應(yīng)用程序存儲(chǔ)器中。
在時(shí)間點(diǎn)T3到時(shí)間點(diǎn)T4的時(shí)間段內(nèi),接收主機(jī)可以進(jìn)行報(bào)頭預(yù)測(cè),從而可為各自的TCP會(huì)話的下一個(gè)接收TCP數(shù)據(jù)包實(shí)現(xiàn)快速處理。如果接收到的TCP數(shù)據(jù)包不是所預(yù)測(cè)的數(shù)據(jù)包,則可能需要進(jìn)行附加處理。例如,在序列號(hào)達(dá)到最大值之后已經(jīng)折回(wrap around)的情況下,可能需要防止折回的(wrapped)序列處理。此外,多個(gè)數(shù)據(jù)包可能包含重復(fù)或重疊的信息,例如,如果發(fā)送主機(jī)因?yàn)闆](méi)有收到已發(fā)送數(shù)據(jù)包的確認(rèn)信息而發(fā)送另外的數(shù)據(jù)包。為了避免冗余,可能需要對(duì)重復(fù)的數(shù)據(jù)進(jìn)行整理。
可為各接收到的數(shù)據(jù)包生成時(shí)間戳,從而有助于追蹤TCP數(shù)據(jù)包。對(duì)于接收到的TCP數(shù)據(jù)包,也可有確認(rèn)處理。此外,如果發(fā)送主機(jī)請(qǐng)求結(jié)束TCP會(huì)話,則應(yīng)有進(jìn)程結(jié)束TCP會(huì)話。最后,可對(duì)接收到的數(shù)據(jù)進(jìn)行重新排列并對(duì)接收的數(shù)據(jù)按順序重新組合。
圖3a是根據(jù)本發(fā)明實(shí)施例、其中包含帶有多個(gè)管線硬件級(jí)的網(wǎng)絡(luò)芯片的典型系統(tǒng)方框圖。如圖3a所示,主機(jī)101包括CPU 102、存儲(chǔ)器接口(MCH)104、存儲(chǔ)模塊106、輸入輸出(IO)接口(ICH)108和網(wǎng)絡(luò)接口卡(NIC)110。NIC 110包含多個(gè)可并行運(yùn)行的管線硬件級(jí)301、302、303、304和305。
管線硬件級(jí)301可接收來(lái)自網(wǎng)絡(luò)的數(shù)據(jù),如網(wǎng)絡(luò)115,同時(shí)可將數(shù)據(jù)傳送到網(wǎng)絡(luò)115中。管線硬件級(jí)301接收得到的數(shù)據(jù)可由管線硬件級(jí)301、302、303、304和305進(jìn)行處理。管線硬件級(jí)305可將載荷數(shù)據(jù)傳送到主機(jī)存儲(chǔ)器中,如存儲(chǔ)模塊106,從而使應(yīng)用程序可以使用該數(shù)據(jù)。應(yīng)用程序可由CPU 102執(zhí)行,如郵件程序。從網(wǎng)絡(luò)115處接收并傳送至存儲(chǔ)模塊106的數(shù)據(jù)可以是,例如來(lái)自主機(jī)100的郵件。
管線硬件級(jí)301、302、303、304和305也可處理數(shù)據(jù)并將其傳送到網(wǎng)絡(luò)115中。管線硬件級(jí)305可以接收來(lái)自應(yīng)用程序的應(yīng)用層的數(shù)據(jù)。為了生成可傳送到網(wǎng)絡(luò)115中的數(shù)據(jù)包,可在管線硬件級(jí)305、304、303、302和301中進(jìn)行處理。例如,郵件程序用戶生成的郵件可能傳送到管線硬件級(jí)305。該郵件可通過(guò)管線硬件級(jí)305、304、303、302和301傳送到主機(jī)101中。
管線硬件級(jí)301、302、303、304和305將參照?qǐng)D3b、4a、4b、5、6、7、8、9a和9b進(jìn)行更詳細(xì)地描述。
圖3b是根據(jù)本發(fā)明實(shí)施例、典型管線硬件級(jí)的示意圖。如圖3b所示,可在管線硬件級(jí)301、302、303、304和305中并行處理網(wǎng)絡(luò)協(xié)議。管線硬件級(jí)301可包含MAC接口模塊310、報(bào)頭模塊312和IP模塊314。管線硬件級(jí)302可包含TCP傳輸模塊320和TCB查詢模塊322。管線硬件級(jí)303可包含調(diào)度模塊330、上下文緩存模塊332和上下文存儲(chǔ)模塊334。管線硬件級(jí)304可包含TCP接收模塊340。管線硬件級(jí)305可包含DMA引擎模塊350、數(shù)據(jù)包存儲(chǔ)模塊352、隊(duì)列模塊354和協(xié)議處理器模塊356。
MAC接口模塊310可包括適當(dāng)?shù)目捎糜诮邮蘸?或傳送如以太網(wǎng)幀等的電路和/或邏輯塊。當(dāng)接收以太網(wǎng)幀時(shí),MAC接口模塊310驗(yàn)證MAC目的地址是否為與MAC接口模塊310相關(guān)的本地MAC地址。如果MAC目的地址與本地MAC目的地址不相匹配,該以太網(wǎng)幀將被丟棄。否則,MAC接口模塊310將從接收到的以太網(wǎng)幀中分離出數(shù)據(jù)鏈路層128信息、網(wǎng)絡(luò)層126信息和傳輸層124信息。數(shù)據(jù)鏈路層128信息可包括MAC報(bào)頭和CRC摘要(digest)。網(wǎng)絡(luò)層126信息可包含報(bào)頭字段。傳輸層124信息可包含報(bào)頭字段。剩余數(shù)據(jù)可被運(yùn)行在應(yīng)用層120的應(yīng)用程序使用。該數(shù)據(jù)可存儲(chǔ)在數(shù)據(jù)包存儲(chǔ)模塊352中。
處理那些要傳送的數(shù)據(jù)包時(shí),MAC接口模塊310可得到數(shù)據(jù)包存儲(chǔ)模塊352中的待傳送數(shù)據(jù)。MAC接口模塊310可為之附加上TCP和IP報(bào)頭以形成IP數(shù)據(jù)報(bào)。在傳送最終以太網(wǎng)幀之前,MAC接口模塊310可用于添加數(shù)據(jù)鏈路層128信息,如MAC報(bào)頭和CRC摘要等。
報(bào)頭模塊312可包含適當(dāng)?shù)碾娐泛?或邏輯,用于對(duì)已接收的以太網(wǎng)幀中所提取的數(shù)據(jù)鏈路層128信息、網(wǎng)絡(luò)層126信息和傳輸層124信息進(jìn)行解析,從而驗(yàn)證CRC摘要、IP校驗(yàn)和以及TCP校驗(yàn)和。如果CRC摘要、IP校驗(yàn)和或TCP校驗(yàn)和無(wú)法得到成功驗(yàn)證,則與該接收到的以太網(wǎng)幀相關(guān)的所有信息都將被丟棄。如果CRC摘要、IP校驗(yàn)和或TCP校驗(yàn)和得到成功驗(yàn)證,則該接收到的以太網(wǎng)幀將得到進(jìn)一步處理。
IP模塊314可包含適當(dāng)?shù)碾娐泛?或邏輯塊,用于對(duì)所接收到的以太網(wǎng)幀中的IP目的地址進(jìn)行驗(yàn)證,驗(yàn)證其是否與本地IP地址相同。如果IP目的地址與本地IP地址不相匹配,則與該接收到的以太網(wǎng)幀相關(guān)的所有信息都將被丟棄。否則,接收到的以太網(wǎng)幀將得到進(jìn)一步處理。
TCP傳輸模塊320可包含適當(dāng)?shù)碾娐泛?或邏輯,用于生成IP和TCP報(bào)頭。所生成的報(bào)頭被發(fā)送給MAC接口模塊310。
TCB查詢模塊322可包含適當(dāng)?shù)碾娐泛瓦壿媺K,用于為接收到的以太網(wǎng)幀查詢那些包括TCP會(huì)話信息的TCB數(shù)據(jù)。因?yàn)楦鲬?yīng)用程序有多個(gè)正在運(yùn)行的TCP會(huì)話,TCB數(shù)據(jù)可用于將接收到的以太網(wǎng)幀與適當(dāng)?shù)腡CP會(huì)話相關(guān)聯(lián)。例如,應(yīng)用程序可以是郵件、瀏覽器和IP語(yǔ)音電話通信等。
調(diào)度模塊330可包含適當(dāng)?shù)碾娐泛?或邏輯,用于為要傳送到網(wǎng)絡(luò)中或從網(wǎng)絡(luò)中接收得到的數(shù)據(jù)提供適當(dāng)?shù)腡CB信息。例如,該信息可來(lái)自上下文緩存模塊332或上下文存儲(chǔ)模塊334。
上下文緩存模塊332包含適當(dāng)?shù)木彺?,可用于緩存TCP會(huì)話信息。上下文緩存模塊332可與上下文存儲(chǔ)模塊334聯(lián)合使用。
TCP接收模塊340可包含適當(dāng)?shù)碾娐泛?或邏輯,用于已接收TCP數(shù)據(jù)包的接收處理。已接收TCP數(shù)據(jù)包的接收處理可能包含下一個(gè)TCP數(shù)據(jù)包的報(bào)頭預(yù)測(cè)、防止已接收TCP數(shù)據(jù)包的序列號(hào)折回、以及當(dāng)多個(gè)TCP數(shù)據(jù)包包含冗余數(shù)據(jù)時(shí)進(jìn)行重疊數(shù)據(jù)清理。已接收TCP數(shù)據(jù)包的接收處理還包含讀取已接收TCP數(shù)據(jù)包的時(shí)間戳、對(duì)TCP數(shù)據(jù)包的接收進(jìn)行確認(rèn)以及結(jié)束TCP會(huì)話。TCP接收模塊340也可用于將DMA信息存儲(chǔ)到隊(duì)列模塊354中,從而可將接收到的數(shù)據(jù)傳送到應(yīng)用層120中。
DMA引擎模塊350可包含適當(dāng)?shù)碾娐泛?或邏輯塊,用于將源數(shù)據(jù)傳送到目的地,且無(wú)需CPU的干涉。例如,DMA引擎模塊350可將來(lái)自數(shù)據(jù)包存儲(chǔ)模塊352的數(shù)據(jù)傳送到存儲(chǔ)模塊106,反之亦然。
數(shù)據(jù)包存儲(chǔ)模塊352可包含適當(dāng)?shù)拇鎯?chǔ)器,用于存儲(chǔ)從網(wǎng)絡(luò)處接收得到的數(shù)據(jù)或等待被傳送到網(wǎng)絡(luò)中的數(shù)據(jù)。
隊(duì)列模塊354可包含適當(dāng)?shù)碾娐泛?或邏輯,用于存儲(chǔ)各TCP數(shù)據(jù)包中進(jìn)行DMA傳送的信息,同時(shí)可為合適的數(shù)據(jù)傳輸設(shè)置DMA引擎模塊350。隊(duì)列模塊354同時(shí)還可用于對(duì)來(lái)自調(diào)度模塊330的外發(fā)數(shù)據(jù)包請(qǐng)求排序。
協(xié)議處理器模塊356可包含適當(dāng)?shù)碾娐贰⑦壿嫼?或代碼,用于與應(yīng)用層120通信,從而接收與需要從存儲(chǔ)模塊106傳送到數(shù)據(jù)包存儲(chǔ)模塊352的數(shù)據(jù)相關(guān)的信息,同時(shí)也可接收與需要從數(shù)據(jù)包存儲(chǔ)模塊352傳送到存儲(chǔ)模塊106的數(shù)據(jù)相關(guān)的信息。協(xié)議處理器模塊356也可用于判斷在傳送之前,是否需要將來(lái)自存儲(chǔ)模塊106的數(shù)據(jù)分解為多個(gè)TCP數(shù)據(jù)包。此外,協(xié)議處理器模塊356也可將從多個(gè)TCP數(shù)據(jù)包接收并通過(guò)DMA傳送到存儲(chǔ)模塊106的數(shù)據(jù)進(jìn)行重新組合。該重新組合后的數(shù)據(jù)信息可發(fā)送到應(yīng)用層120。
相應(yīng)地,當(dāng)運(yùn)行在主機(jī)上的應(yīng)用程序通過(guò)網(wǎng)絡(luò)將數(shù)據(jù)發(fā)送到另一臺(tái)主機(jī)上時(shí),應(yīng)用層120可用于與協(xié)議處理器模塊356交流適當(dāng)信息。應(yīng)用層120告知的目的地信息讓協(xié)議處理器模塊356可啟動(dòng)與目的主機(jī)的TCP會(huì)話。協(xié)議處理器模塊356也可接收關(guān)于要傳輸?shù)臄?shù)據(jù)比特?cái)?shù)和數(shù)據(jù)位置的相關(guān)信息。在管線硬件級(jí)305,協(xié)議處理器模塊356可將適當(dāng)信息存儲(chǔ)到隊(duì)列模塊354中。隊(duì)列模塊354可設(shè)置DMA引擎模塊350,從而將數(shù)據(jù)從存儲(chǔ)模塊106傳送到數(shù)據(jù)包存儲(chǔ)模塊352中。DMA引擎模塊350可將合適的數(shù)據(jù)傳送到數(shù)據(jù)包存儲(chǔ)模塊352。隊(duì)列模塊354也可請(qǐng)求來(lái)自調(diào)度模塊330的調(diào)度,從而可將數(shù)據(jù)傳送到網(wǎng)絡(luò)中。協(xié)議處理器模塊356也可將各數(shù)據(jù)的適當(dāng)TCB數(shù)據(jù)或TCP會(huì)話信息存儲(chǔ)到上下文存儲(chǔ)模塊334中。
在管線硬件級(jí)303,調(diào)度模塊330可接收存儲(chǔ)在數(shù)據(jù)包存儲(chǔ)模塊352中的各數(shù)據(jù)的TCB數(shù)據(jù)。TCB數(shù)據(jù)可來(lái)自上下文緩存模塊332或上下文存儲(chǔ)模塊334。其中可包含用于TCP和IP報(bào)頭的信息的TCB數(shù)據(jù),可被傳送到TCP傳輸模塊320。在管線硬件級(jí)302中,TCP傳輸模塊320可為數(shù)據(jù)包存儲(chǔ)模塊352中的相應(yīng)數(shù)據(jù)生成TCP和IP報(bào)頭,同時(shí)這些報(bào)頭可被傳遞到MAC接口模塊310。在管線硬件級(jí)301中,MAC接口模塊310可將該報(bào)頭附加到來(lái)自數(shù)據(jù)包存儲(chǔ)模塊352的數(shù)據(jù)中,以形成數(shù)據(jù)報(bào)。MAC接口模塊310接著可將MAC報(bào)頭和CRC摘要附加到IP數(shù)據(jù)報(bào)中,進(jìn)而可形成可在以太網(wǎng)中傳輸?shù)囊蕴W(wǎng)幀。如果MAC接口模塊310不知道目的MAC地址,MAC接口模塊310可在因特網(wǎng)上發(fā)送查詢信息。網(wǎng)絡(luò)中的其它系統(tǒng)將回復(fù)目的MAC地址,所述MAC地址與該查詢中的目的IP地址相關(guān)聯(lián)。當(dāng)以太網(wǎng)幀形成時(shí),可傳送到以太網(wǎng)中。
接收到來(lái)自網(wǎng)絡(luò)的數(shù)據(jù)時(shí),管線硬件級(jí)301中的MAC接口模塊310可接收以太網(wǎng)幀。MAC接口模塊310可驗(yàn)證MAC目的地址是否為與該MAC接口模塊310關(guān)聯(lián)的本地MAC地址。如果MAC目的地址與本地MAC地址不相匹配,則丟棄該以太網(wǎng)幀。已接收的以太網(wǎng)幀將傳送到報(bào)頭模塊312并復(fù)制到數(shù)據(jù)包存儲(chǔ)模塊352。
報(bào)頭模塊312可計(jì)算CRC摘要、IP檢驗(yàn)和以及TCP校驗(yàn)和。如果CRC摘要、IP校驗(yàn)和或TCP校驗(yàn)和無(wú)法得到成功驗(yàn)證,則與該接收到的以太網(wǎng)幀相關(guān)的信息都將被丟棄。如果CRC摘要、IP校驗(yàn)和或TCP校驗(yàn)和得到成功驗(yàn)證,則該接收到的以太網(wǎng)幀將由IP模塊314進(jìn)行處理。IP模塊314可驗(yàn)證目的IP地址是否與本地IP地址相匹配。如果目的IP地址與本地IP地址不相匹配,則與該接收到的以太網(wǎng)幀相關(guān)的所有信息都將被丟棄。
在管線硬件級(jí)302中,TCB查詢模塊322可為已接收到的以太網(wǎng)幀查詢其TCB索引。TCB索引可用于查詢已接收到以太網(wǎng)幀的TCB數(shù)據(jù)。因?yàn)楦鲬?yīng)用程序有多個(gè)正在運(yùn)行的TCP會(huì)話,TCB數(shù)據(jù)可用于將接收到的以太網(wǎng)幀與適當(dāng)?shù)腡CP會(huì)話相關(guān)聯(lián)。典型應(yīng)用程序可包括郵件應(yīng)用程序、Web瀏覽器和IP語(yǔ)音電話應(yīng)用程序。TCB索引可在管線硬件級(jí)303中傳送到調(diào)度模塊330,而調(diào)度模塊330可從上下文緩存模塊332或上下文存儲(chǔ)模塊334中獲得TCB數(shù)據(jù)。TCB數(shù)據(jù)可用于例如組合TCP數(shù)據(jù)包等,包含組合那些可能無(wú)序的數(shù)據(jù)包。
在管線硬件級(jí)304中,TCP接收模塊340的接收處理功能可能包含對(duì)下一個(gè)TCP數(shù)據(jù)包的報(bào)頭預(yù)測(cè)、防止已接收TCP數(shù)據(jù)包的序列號(hào)折回、當(dāng)多個(gè)TCP數(shù)據(jù)包包含冗余數(shù)據(jù)時(shí)對(duì)重疊數(shù)據(jù)進(jìn)行清理、記錄已接收數(shù)據(jù)包的時(shí)間戳、對(duì)TCP數(shù)據(jù)包的接收進(jìn)行確認(rèn)以及結(jié)束TCP會(huì)話。對(duì)各TCP數(shù)據(jù)包的數(shù)據(jù),TCP接收模塊340也可將DMA傳輸?shù)男畔⒋鎯?chǔ)在隊(duì)列模塊354中。管線硬件級(jí)304中的隊(duì)列模塊354可設(shè)置DMA引擎模塊350,從而可將適當(dāng)數(shù)據(jù)傳送到應(yīng)用層120中。
管線硬件級(jí)305可以是TCP后(post-TCP)處理級(jí)。在管線硬件級(jí)305中,DMA引擎模塊350可將存儲(chǔ)在數(shù)據(jù)包存儲(chǔ)模塊352中的數(shù)據(jù)存儲(chǔ)到存儲(chǔ)模塊106中。協(xié)議處理器模塊356可將已從數(shù)據(jù)包存儲(chǔ)模塊352傳送到例如存儲(chǔ)模塊106中的數(shù)據(jù)的相關(guān)信息發(fā)送到應(yīng)用層120。協(xié)議處理器模塊356發(fā)送的信息可能包含來(lái)自不同TCP數(shù)據(jù)包的已傳送數(shù)據(jù)的地址以及各數(shù)據(jù)的比特?cái)?shù)。
選擇性地,當(dāng)TCP報(bào)頭指示該數(shù)據(jù)可用于RDMA時(shí),協(xié)議處理器模塊356可對(duì)TCP數(shù)據(jù)包數(shù)據(jù)進(jìn)行進(jìn)一步處理。TCP數(shù)據(jù)包中的RDMA數(shù)據(jù)等的數(shù)據(jù)協(xié)議處理在美國(guó)專利申請(qǐng)?zhí)枺?代理案號(hào)16591US02)中有詳細(xì)說(shuō)明。
圖4a是根據(jù)本發(fā)明實(shí)施例、在多個(gè)并行管線硬件級(jí)的第一級(jí)中接收網(wǎng)絡(luò)數(shù)據(jù)的典型流程圖。在步驟400中,保留帶有有效MAC地址的已接收數(shù)據(jù)包,丟棄無(wú)效MAC地址的數(shù)據(jù)包。在步驟410中,驗(yàn)證以太網(wǎng)幀中的CRC摘要、IP校驗(yàn)和以及TCP校驗(yàn)和,同時(shí)提取出IP/TCP數(shù)據(jù)報(bào)頭。在步驟420中,保留帶有有效IP地址的數(shù)據(jù)包,同時(shí)丟棄無(wú)效IP地址的數(shù)據(jù)包。
如圖4a所示,同時(shí)參考圖3b,步驟400中,管線硬件級(jí)301中的MAC接口模塊310接收以太網(wǎng)幀。MAC接口模塊310驗(yàn)證該MAC目的地址是否為與該MAC接口模塊310關(guān)聯(lián)的本地MAC地址。如果目的MAC地址與本地MAC地址不匹配,則該以太網(wǎng)幀將被丟棄。否則,MAC接口模塊310可從以太網(wǎng)幀中分離數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層和傳輸層的信息。剩余信息可能對(duì)運(yùn)行在應(yīng)用層120中的應(yīng)用程序有用。該數(shù)據(jù)可存儲(chǔ)在數(shù)據(jù)包存儲(chǔ)模塊352中。
在步驟410中,管線硬件級(jí)301中的報(bào)頭模塊312可驗(yàn)證CRC摘要、IP校驗(yàn)和以及TCP校驗(yàn)和。如果CRC摘要、IP校驗(yàn)和或TCP校驗(yàn)和無(wú)法得到成功驗(yàn)證,則與該接收到的以太網(wǎng)幀相關(guān)的所有信息都將被丟棄。如果CRC摘要、IP校驗(yàn)和或TCP校驗(yàn)和得到成功驗(yàn)證,則該接收到的以太網(wǎng)幀將由IP模塊314進(jìn)行處理。在步驟420中,管線硬件級(jí)301中的IP模塊314驗(yàn)證IP目的地址是否與本地IP地址相同。如果IP目的地址與本地IP地址不相匹配,則與該接收到的以太網(wǎng)幀相關(guān)的所有信息都將被丟棄。如果IP地址驗(yàn)證成功,則TCP和IP報(bào)頭將被傳送到第二個(gè)管線硬件級(jí)302中。
圖4b是根據(jù)本發(fā)明實(shí)施例,用于說(shuō)明在多個(gè)并行管線硬件級(jí)的第一級(jí)中傳輸網(wǎng)絡(luò)數(shù)據(jù)的典型流程圖。在步驟430中,要傳送到網(wǎng)絡(luò)中的數(shù)據(jù)可被復(fù)制到本地緩存中。在步驟440中,給數(shù)據(jù)附加上TCP和IP包頭報(bào)頭進(jìn)而形成IP數(shù)據(jù)報(bào)。在步驟450中,給該IP數(shù)據(jù)報(bào)附加MAC報(bào)頭和CRC校驗(yàn)和以生成以太網(wǎng)幀。
如圖4b所示,同時(shí)參考圖3b,步驟430中,要傳送的數(shù)據(jù)可從數(shù)據(jù)包存儲(chǔ)模塊352復(fù)制到管線硬件級(jí)301中的MAC接口模塊310中的本地緩存中。在復(fù)制過(guò)程中,MAC接口模塊310可計(jì)算IP和TCP的校驗(yàn)和。在步驟440中,MAC接口模塊310可將TCP數(shù)據(jù)報(bào)頭和IP報(bào)頭附加到要傳送的數(shù)據(jù)中,從而形成IP數(shù)據(jù)報(bào)。在步驟450中,MAC接口模塊310可將MAC報(bào)頭和CRC摘要附加到IP數(shù)據(jù)報(bào)中,從而形成可在以太網(wǎng)中傳輸?shù)囊蕴W(wǎng)幀。如果MAC接口模塊310不知道目的MAC地址,MAC接口模塊310可向因特網(wǎng)發(fā)送查詢信息。網(wǎng)絡(luò)中的路由器將回復(fù)目的MAC地址,該MAC地址與該查詢中的目的IP地址相關(guān)聯(lián)。當(dāng)以太網(wǎng)幀形成時(shí),該幀可在以太網(wǎng)中進(jìn)行傳輸。
圖5是根據(jù)本發(fā)明實(shí)施例的多個(gè)并行管線硬件級(jí)中第二級(jí)的方框圖。如圖5所示,TCB查詢模塊322可包括TCB控制器502和查詢表504。
TCB控制器502可包括適當(dāng)?shù)倪壿嫛㈦娐泛?或代碼,可用于在管線硬件級(jí)301中接收來(lái)自報(bào)頭模塊312的TCP和IP報(bào)頭。TCB控制器502解析該報(bào)頭以獲得源和目的IP地址以及源和目的TCP端口號(hào)。這四項(xiàng)可稱為一個(gè)元組(tuple),且可用于查詢查詢表504中的相應(yīng)TCB索引。TCB控制器502可將該TCB索引和TCP及IP報(bào)頭傳送到調(diào)度模塊330,如圖6所示。
圖6是根據(jù)本發(fā)明實(shí)施例的多個(gè)并行管線硬件級(jí)中第三級(jí)的方框圖。如圖6所示,其中包括調(diào)度模塊330、隊(duì)列模塊354、TCP傳輸模塊320、TCP接收模塊340和上下文存儲(chǔ)模塊334。調(diào)度模塊330可包括上下文緩存模塊332、寫入邏輯模塊602、讀取邏輯模塊604、報(bào)頭寄存器模塊606、TCB寄存器模塊608和612以及回寫寄存器模塊610和614。
向網(wǎng)絡(luò)傳送數(shù)據(jù)時(shí),關(guān)于要傳送數(shù)據(jù)的各信息可從隊(duì)列模塊354傳送到讀取邏輯模塊604中。該信息可包括數(shù)據(jù)的初始序列號(hào)、要傳送數(shù)據(jù)的比特?cái)?shù)、要傳送數(shù)據(jù)可存儲(chǔ)的緩存地址和TCB索引。該信息可由協(xié)議處理器模塊356放置在隊(duì)列模塊354中。讀取邏輯模塊604可使用TCB索引以從上下文緩存模塊332或上下文存儲(chǔ)模塊334中獲取TCB數(shù)據(jù)。讀取邏輯模塊604接著可將TCB數(shù)據(jù)放置到TCB寄存器模塊612中,且TCB數(shù)據(jù)可被傳送到TCP傳輸模塊320中。TCP傳輸模塊可根據(jù)需要修改某些信息,如序列號(hào)等,并將修改的TCB數(shù)據(jù)傳送到寫入邏輯模塊602。寫入邏輯模塊602可將TCB數(shù)據(jù)寫入到上下文緩存332或上下文存儲(chǔ)模塊334中。
當(dāng)從網(wǎng)絡(luò)中接收數(shù)據(jù)時(shí),來(lái)自TCB查詢模塊322的TCB索引以及TCP和IP報(bào)頭可被傳送到讀取邏輯模塊604中。讀取邏輯模塊604可使用TCB索引以讀取上下文緩存模塊332或上下文存儲(chǔ)模塊334中的相應(yīng)TCB數(shù)據(jù)。接著讀取邏輯模塊604可將TCB數(shù)據(jù)放置到TCB寄存器模塊608中,且將TCP和IP報(bào)頭放置到報(bào)頭寄存器模塊606中。TCB寄存器模塊608和報(bào)頭寄存器模塊606中的信息可被傳送到TCP接收模塊340中。TCP接收模塊340可將信息傳送到隊(duì)列模塊354中,將已接收數(shù)據(jù)傳送到例如CPU102中時(shí)需要該隊(duì)列模塊354。該信息可以是開(kāi)始序列號(hào)、數(shù)據(jù)的比特?cái)?shù)、數(shù)據(jù)存儲(chǔ)地址和TCB索引。TCP接收模塊340可根據(jù)需要修改某些信息,如確認(rèn)號(hào)等,并將已修改的TCB數(shù)據(jù)傳送到回寫寄存器模塊610中。已修改的TCB數(shù)據(jù)接著可被傳送到寫入邏輯模塊602中。寫入邏輯模塊602可將TCB數(shù)據(jù)寫入到上下文緩存332或上下文存儲(chǔ)模塊334中。
圖7是根據(jù)本發(fā)明實(shí)施例的多個(gè)并行管線硬件級(jí)中第二級(jí)和第四級(jí)的方框圖。該方框圖可表示例如TCP傳送模塊320和/或TCP接收模塊340。如圖7所示,有限狀態(tài)機(jī)700可包括復(fù)用器702、TCB寄存器模塊704、組合邏輯模塊706、狀態(tài)寄存器模塊708和本地控制寄存器模塊710。有限狀態(tài)機(jī)700可從一個(gè)狀態(tài)轉(zhuǎn)換到下一個(gè)狀態(tài),如在輸入時(shí)鐘信號(hào)CLK的上升沿處進(jìn)行轉(zhuǎn)換。
TCB寄存器模塊704可包括適當(dāng)邏輯和/或電路,用于在輸入時(shí)鐘信號(hào)CLK的上升沿處存儲(chǔ)TCB和/或TCP及IP報(bào)頭數(shù)據(jù)。狀態(tài)寄存器模塊708可包括適當(dāng)邏輯和/或電路,用于在輸入時(shí)鐘信號(hào)CLK的上升沿處輸出可指示特定狀態(tài)的比特?cái)?shù)。本地控制寄存器模塊710可包括適當(dāng)邏輯和/或電路,用于在輸入時(shí)鐘信號(hào)CLK的上升沿處輸出特定狀態(tài)的控制比特?cái)?shù)。
當(dāng)有限狀態(tài)機(jī)700開(kāi)始進(jìn)行傳送或接收操作時(shí),復(fù)用器從狀態(tài)寄存器模塊708中選擇信號(hào)和從調(diào)度模塊330等處選擇查詢信號(hào)。狀態(tài)寄存器模塊708可用于選擇輸入TCB數(shù)據(jù)、TCP和IP報(bào)頭。來(lái)自復(fù)用器702的數(shù)據(jù)可保存在TCB寄存器模塊704中。組合邏輯模塊706可使用TCB寄存器模塊704的輸出數(shù)據(jù)、狀態(tài)寄存器模塊708的輸出和本地控制寄存器模塊710的輸出,生成輸入數(shù)據(jù)。在第一級(jí)可能選擇調(diào)度模塊330中的數(shù)據(jù)之后,接下來(lái)的狀態(tài)可選擇復(fù)用器702數(shù)據(jù),該數(shù)據(jù)可從組合邏輯模塊706中反饋得到。
對(duì)于從網(wǎng)絡(luò)中接收得到的數(shù)據(jù)包,有限狀態(tài)機(jī)700生成的輸出可為報(bào)頭預(yù)測(cè),該預(yù)測(cè)可用于對(duì)各TCP會(huì)話的下一個(gè)接收TCP數(shù)據(jù)包進(jìn)行快速處理。如果接收到的TCP數(shù)據(jù)包不是已預(yù)測(cè)的數(shù)據(jù)包,則需要進(jìn)行附加處理。例如在序列號(hào)達(dá)到最大值之后可能出現(xiàn)折回(wrap around)的情況下,可能需要防止折回的序列處理。此外,有限狀態(tài)機(jī)700可能去除多個(gè)數(shù)據(jù)包中的重復(fù)或重疊信息。例如,如果發(fā)送主機(jī)因?yàn)闆](méi)有收到已發(fā)送數(shù)據(jù)包的確認(rèn)信息而發(fā)送另外的數(shù)據(jù)包。為了避免冗余,可能需要對(duì)重復(fù)數(shù)據(jù)進(jìn)行整理。有限狀態(tài)機(jī)700也可為各接收到的數(shù)據(jù)包生成時(shí)間戳,從而有助于追蹤TCP數(shù)據(jù)包。對(duì)于接收到的TCP數(shù)據(jù)包和結(jié)束TCP會(huì)話,當(dāng)傳送主機(jī)請(qǐng)求時(shí)有限狀態(tài)機(jī)700也應(yīng)進(jìn)行確認(rèn)處理。
對(duì)于要傳送到網(wǎng)絡(luò)中的數(shù)據(jù),有限狀態(tài)機(jī)700可能生成TCP和IP報(bào)頭。如,對(duì)于從網(wǎng)絡(luò)中接收得到的數(shù)據(jù)包,生成的輸出可被傳送到如隊(duì)列模塊354;對(duì)于要傳送到網(wǎng)絡(luò)中的數(shù)據(jù),生成的輸出可被傳送到MAC接口模塊310中。
圖8是根據(jù)本發(fā)明實(shí)施例的多個(gè)并行管線硬件級(jí)的第五級(jí)的典型流程圖。在步驟800中,對(duì)于需要傳送到網(wǎng)絡(luò)中的數(shù)據(jù),或者已從網(wǎng)絡(luò)中接收得到并傳送到主機(jī)存儲(chǔ)器的數(shù)據(jù),在CPU 102和協(xié)議處理器模塊356之間交換信息。在步驟810中,可設(shè)置隊(duì)列模塊354進(jìn)而將數(shù)據(jù)傳送到網(wǎng)絡(luò)中。在步驟820中,可向DMA引擎模塊350提供用于DMA傳輸?shù)脑春湍康牡刂芬约耙獋鬏數(shù)谋忍財(cái)?shù)。在步驟830中,數(shù)據(jù)可從主機(jī)存儲(chǔ)器模塊106經(jīng)DMA傳送至數(shù)據(jù)包存儲(chǔ)器模塊352中。在步驟840中,可為從網(wǎng)絡(luò)中接收得到的數(shù)據(jù)設(shè)置隊(duì)列模塊354。在步驟850中,可向DMA引擎模塊350提供用于DMA傳輸?shù)脑春湍康牡刂芬约耙獋鬏數(shù)谋忍財(cái)?shù)。在步驟860中,接收到的數(shù)據(jù)可從數(shù)據(jù)包存儲(chǔ)模塊352經(jīng)DMA傳送到主機(jī)存儲(chǔ)器模塊106中。
如圖8所示,同時(shí)參考圖1c和圖3,步驟800和860可在本發(fā)明的多個(gè)并行管線硬件級(jí)的第五級(jí)進(jìn)行。第五級(jí)可能包括數(shù)據(jù)包存儲(chǔ)模塊352、DMA引擎模塊350、隊(duì)列模塊354和協(xié)議處理器模塊356。在步驟800中,協(xié)議處理器模塊356可能與如CPU 102交換信息。來(lái)自CPU 102的信息可能包括TCP流ID、數(shù)據(jù)比特?cái)?shù)和數(shù)據(jù)地址。TCP流ID可能等于如TCB索引。協(xié)議處理器模塊356可接收來(lái)自CPU 102的消息信息并增加隊(duì)列模塊354,從而將數(shù)據(jù)傳送到網(wǎng)絡(luò)中。下一步是將數(shù)據(jù)傳送到網(wǎng)絡(luò)的步驟810。
接收數(shù)據(jù)時(shí),消息可能從協(xié)議處理器模塊356傳送到例如CPU 102中。該消息可指示傳送到主存儲(chǔ)模塊106中的數(shù)據(jù)信息。該信息可包括地址位置和各數(shù)據(jù)的比特?cái)?shù)。即便TCP數(shù)據(jù)包尚未按序接收,該數(shù)據(jù)信息可將數(shù)據(jù)按序重新組合。下一步是從網(wǎng)絡(luò)中接收數(shù)據(jù)的步驟840。此外,例如,CPU 102傳送的消息可能是關(guān)于主存儲(chǔ)模塊106中各地址的信息,而主存儲(chǔ)模塊106可用作DMA目的緩存。
在步驟810中,協(xié)議處理器模塊356可將適當(dāng)信息傳送到隊(duì)列模塊354中,以進(jìn)行DMA傳送。隊(duì)列模塊354可設(shè)置數(shù)據(jù)的DMA傳送,例如,從主存儲(chǔ)模塊106到數(shù)據(jù)包存儲(chǔ)模塊352。信息可包括例如源地址、目的地址、傳送的比特?cái)?shù)。相應(yīng)地,在步驟820中,隊(duì)列模塊354可設(shè)置源DMA地址、目的DMA地址、和在DMA引擎模塊350中傳送的比特?cái)?shù)。在步驟830中,當(dāng)DMA引擎模塊350結(jié)束DMA傳送之后,可指示DMA傳送到隊(duì)列模塊354的結(jié)束。隊(duì)列模塊354可將此傳送到調(diào)度模塊330中。
在步驟840中,TCP接收模塊340可將適當(dāng)信息傳送到隊(duì)列模塊354中以進(jìn)行DMA傳送。隊(duì)列模塊354可設(shè)置數(shù)據(jù)的DMA傳送,例如,從數(shù)據(jù)包存儲(chǔ)模塊352到主存儲(chǔ)模塊106。該信息可能包括源地址、目的地址和傳送的比特?cái)?shù)。相應(yīng)地,在步驟850中,隊(duì)列模塊354可設(shè)置源DMA地址、目的DMA地址、和在DMA引擎模塊350中傳送的比特?cái)?shù)。在步驟860中,DMA引擎模塊350結(jié)束DMA傳送之后,可指示DMA傳送到隊(duì)列模塊354的結(jié)束。隊(duì)列模塊354可將此傳送到協(xié)議處理器模塊356中。
圖9a是根據(jù)本發(fā)明實(shí)施例的通過(guò)多個(gè)并行管線硬件級(jí)將數(shù)據(jù)傳輸?shù)骄W(wǎng)絡(luò)的典型流程圖。在步驟900中,將主存儲(chǔ)模塊106中的數(shù)據(jù)傳送到數(shù)據(jù)包存儲(chǔ)模塊352中。在步驟910中,TCB數(shù)據(jù)調(diào)度請(qǐng)求與傳輸?shù)骄W(wǎng)絡(luò)中的數(shù)據(jù)相對(duì)應(yīng)。在步驟920中,可從TCB數(shù)據(jù)中生成TCP和IP報(bào)頭。在步驟930中,可生成以太網(wǎng)幀且該以太網(wǎng)幀可發(fā)送到網(wǎng)絡(luò)中。
如圖9a所示,同時(shí)參考圖1c和3b,來(lái)自主機(jī)的數(shù)據(jù)可能通過(guò)在單網(wǎng)絡(luò)芯片上的多個(gè)并行管線硬件級(jí)中執(zhí)行的步驟900到930傳送到網(wǎng)絡(luò)中。在步驟900中,在多個(gè)并行的管線硬件級(jí)的第五級(jí),協(xié)議處理器模塊356可將適當(dāng)信息存儲(chǔ)在多個(gè)并行的管線硬件級(jí)的第五級(jí)的隊(duì)列模塊354中,以進(jìn)行DMA傳送。隊(duì)列模塊354接著可設(shè)置DMA引擎模塊350,并開(kāi)始將對(duì)待傳送到網(wǎng)絡(luò)中的數(shù)據(jù)進(jìn)行DMA傳送。該數(shù)據(jù)可能是從主存儲(chǔ)模塊106經(jīng)DMA傳送到數(shù)據(jù)包存儲(chǔ)模塊352的。
在步驟910中,在多個(gè)并行的管線硬件級(jí)的第三級(jí),隊(duì)列模塊354可將TCB索引傳送到調(diào)度模塊330且請(qǐng)求數(shù)據(jù)傳輸?shù)恼{(diào)度。調(diào)度模塊330可查詢對(duì)應(yīng)于該TCB索引的TCB數(shù)據(jù)。該TCB數(shù)據(jù)可被傳送到TCB傳送模塊320中。在步驟920中,在多個(gè)并行的管線硬件級(jí)的第二級(jí),TCB傳送模塊320可從TCB數(shù)據(jù)中生成TCP和IP報(bào)頭。該TCP和IP報(bào)頭可被傳送到MAC接口模塊310中。
在步驟930中,在多個(gè)并行的管線硬件級(jí)的第一級(jí),MAC接口模塊310可將TCP和IP報(bào)頭附加到數(shù)據(jù)包存儲(chǔ)模塊352中的適當(dāng)數(shù)據(jù)中,進(jìn)而形成IP數(shù)據(jù)報(bào)。MAC接口模塊310接著可通過(guò)將以太網(wǎng)報(bào)頭附加到IP數(shù)據(jù)報(bào)中、插入已計(jì)算的IP校驗(yàn)和以及TCP校驗(yàn)和、以及將CRC摘要附加到IP數(shù)據(jù)報(bào)中,以形成以太網(wǎng)幀。最終的以太網(wǎng)幀可傳送到網(wǎng)絡(luò)中。
圖9b是根據(jù)本發(fā)明實(shí)施例的通過(guò)多個(gè)并行管線硬件級(jí)從網(wǎng)絡(luò)接收數(shù)據(jù)的典型流程圖。在步驟950中,驗(yàn)證CRC摘要、IP校驗(yàn)和以及TCP校驗(yàn)和,同時(shí)提取TCP和IP報(bào)頭。在步驟960中,可查詢已接收TCP數(shù)據(jù)包的TCB信息。在步驟970中,可請(qǐng)求對(duì)接收到的TCP數(shù)據(jù)包進(jìn)行調(diào)度。在步驟980中,處理已接收的TCP數(shù)據(jù)包。在步驟990中,將TCP數(shù)據(jù)包中的數(shù)據(jù)載荷傳送到主機(jī)中。
如圖9b所示,同時(shí)參考圖1c和3b,從網(wǎng)絡(luò)接收得到的數(shù)據(jù)可通過(guò)在單網(wǎng)絡(luò)芯片上的多個(gè)并行管線硬件級(jí)中執(zhí)行的步驟950到990傳送到主機(jī)中。在步驟950中,在多個(gè)并行的管線硬件級(jí)的第一級(jí),由MAC接口310接收以太網(wǎng)幀。MAC接口模塊310驗(yàn)證MAC目的地址是否為與MAC接口模塊310相關(guān)的本地MAC地址。如果MAC目的地址與本地MAC目的地址不相匹配,該以太網(wǎng)幀將被丟棄。接收到的以太網(wǎng)幀將被傳送到報(bào)頭模塊312中,同時(shí)復(fù)制到數(shù)據(jù)包存儲(chǔ)模塊352中。
報(bào)頭模塊312可提取報(bào)頭信息,同時(shí)計(jì)算CRC摘要、IP校驗(yàn)和以及TCP校驗(yàn)和。如果CRC摘要、IP校驗(yàn)和或TCP校驗(yàn)和不能得到成功驗(yàn)證,則與所接收的以太網(wǎng)幀相關(guān)的所有信息都會(huì)被丟棄。如果CRC摘要、IP校驗(yàn)和或TCP校驗(yàn)和得到成功驗(yàn)證,則接收到的以太網(wǎng)幀將由IP模塊314進(jìn)行處理。IP模塊314可驗(yàn)證目的IP地址是否與本地IP地址相匹配。如果目的IP地址與本地IP地址不相匹配,則與該接收到的以太網(wǎng)幀相關(guān)的所有信息都將被丟棄。
在步驟960中,在多個(gè)并行的管線硬件級(jí)的第二級(jí),TCB查詢模塊322可查詢已接收數(shù)據(jù)包的TCB索引。TCB索引可用于查詢可用于查詢其中包括已接收以太網(wǎng)幀的TCP會(huì)話信息的TCB數(shù)據(jù)。因?yàn)楦鲬?yīng)用程序有多個(gè)正在運(yùn)行的TCP會(huì)話,該會(huì)話信息包括將接收到的以太網(wǎng)幀與適當(dāng)?shù)腡CP會(huì)話關(guān)聯(lián)在一起。典型應(yīng)用程序可包括郵件應(yīng)用程序、web瀏覽器和IP語(yǔ)音電話應(yīng)用程序。
在步驟970中,在多個(gè)并行的管線硬件級(jí)的第三級(jí),TCB索引可傳送到調(diào)度模塊330中,而調(diào)度模塊330可從上下文緩存模塊332或上下文存儲(chǔ)模塊334中獲取TCB數(shù)據(jù)。該TCB數(shù)據(jù)可用于例如組合TCP數(shù)據(jù)包,其中包括那些已經(jīng)失序的數(shù)據(jù)包。
在步驟980中,在多個(gè)并行的管線硬件級(jí)的第四級(jí),TCP接收模塊340可對(duì)下一個(gè)TCP數(shù)據(jù)包進(jìn)行報(bào)頭預(yù)測(cè),防止已接收TCP數(shù)據(jù)包的序列號(hào)折回,對(duì)多個(gè)可能包含重復(fù)數(shù)據(jù)的TCP數(shù)據(jù)包進(jìn)行重疊數(shù)據(jù)整理,記錄已接收數(shù)據(jù)包的時(shí)間戳、對(duì)TCP數(shù)據(jù)包的接收進(jìn)行確認(rèn)以及結(jié)束TCP會(huì)話。TCP接收模塊340也可將用于DMA傳送的信息存儲(chǔ)到各TCP數(shù)據(jù)包中數(shù)據(jù)的隊(duì)列模塊354中。
在步驟990中,在多個(gè)并行的管線硬件級(jí)的第五級(jí),隊(duì)列模塊354可設(shè)置DMA引擎模塊350,用于將適當(dāng)數(shù)據(jù)傳送到應(yīng)用層120中。這可以是后TCP處理級(jí)。DMA引擎模塊350可將存儲(chǔ)在數(shù)據(jù)包存儲(chǔ)模塊352中的數(shù)據(jù)DMA傳送到存儲(chǔ)模塊106中。協(xié)議處理器模塊356可將已從數(shù)據(jù)包存儲(chǔ)模塊352傳送到存儲(chǔ)模塊106中的數(shù)據(jù)相關(guān)信息發(fā)送到應(yīng)用層120。協(xié)議處理器模塊356發(fā)送的信息可能包含來(lái)自不同TCP數(shù)據(jù)包的已傳送數(shù)據(jù)的地址以及各數(shù)據(jù)的比特?cái)?shù)。即使接收到的TCP數(shù)據(jù)包是無(wú)序的,則該數(shù)據(jù)信息也可將數(shù)據(jù)按序重新組合。
盡管在圖9a和9b中分別描述了從網(wǎng)絡(luò)接收數(shù)據(jù)過(guò)程以及向網(wǎng)絡(luò)發(fā)送數(shù)據(jù)過(guò)程,但本發(fā)明不應(yīng)看成是僅限于傳送或接收。為了支持傳送和接收的某些功能,步驟900到930和步驟950到990中至少有一些步驟是同時(shí)發(fā)生的。例如,在步驟900中,在多個(gè)并行的管線硬件級(jí)的第五級(jí),傳送到網(wǎng)絡(luò)中的數(shù)據(jù)可能是從主存儲(chǔ)模塊106經(jīng)DMA傳送到數(shù)據(jù)包存儲(chǔ)模塊352中。同時(shí),在步驟950中,在多個(gè)并行的管線硬件級(jí)的第一級(jí),MAC接口310可能正在接收以太網(wǎng)幀。
此外,盡管本發(fā)明實(shí)施例描述的是TCP數(shù)據(jù)的處理,本發(fā)明并不局限于此。例如,當(dāng)TCP數(shù)據(jù)報(bào)頭指示說(shuō)明該TCP數(shù)據(jù)包數(shù)據(jù)可用于RDMA或iSCSI,則協(xié)議處理器模塊356可對(duì)該TCP數(shù)據(jù)包數(shù)據(jù)進(jìn)行進(jìn)一步處理。協(xié)議處理器模塊356接著可進(jìn)一步解析TCP數(shù)據(jù)包數(shù)據(jù)并分離出RDMA或iSCSI數(shù)據(jù)。
對(duì)于每秒10兆比特的以太網(wǎng)(10G)網(wǎng)絡(luò)而言,TCP數(shù)據(jù)包吞吐量速率可為每秒一千五百萬(wàn)數(shù)據(jù)包。這是因?yàn)門CP數(shù)據(jù)包內(nèi)嵌在以太網(wǎng)幀中,而以太網(wǎng)幀的最小大小為72字節(jié)。由于以太網(wǎng)幀的最小幀間間隔為12字節(jié),所以有一些額外的開(kāi)銷。因此,典型的最大數(shù)據(jù)包到達(dá)速率為每67.2納秒(ns)一個(gè)數(shù)據(jù)包。因此,傳輸層124、網(wǎng)絡(luò)層126和數(shù)據(jù)鏈路層128的的硬件管線協(xié)議棧,如管線硬件級(jí)301、302、303、304和305,各管線硬件級(jí)的設(shè)計(jì)目標(biāo)時(shí)間為67.2ns。盡管連續(xù)描述了各功能,本發(fā)明無(wú)需受此限制。例如,報(bào)頭模塊312的校驗(yàn)和操作以及IP模塊314的IP地址驗(yàn)證操作可以并行進(jìn)行。
盡管本發(fā)明實(shí)施例涉及TCP傳輸層和IP網(wǎng)絡(luò)層,但本發(fā)明無(wú)需受此限制。因此,本發(fā)明實(shí)施例可用于帶IP網(wǎng)絡(luò)層的其它傳輸層,如用戶數(shù)據(jù)報(bào)協(xié)議(UDP)。類似地,本發(fā)明實(shí)施例也可支持其它網(wǎng)絡(luò)層,如Appletalk和IPX,以及由其它網(wǎng)絡(luò)層支持的傳輸層。此外,本發(fā)明的其它實(shí)施例在管線硬件級(jí)的數(shù)目和/或各管線硬件級(jí)的功能上可能有所差異。
因此,本發(fā)明可用硬件、軟件或軟硬件結(jié)合來(lái)實(shí)現(xiàn)。本發(fā)明可在至少一臺(tái)計(jì)算機(jī)系統(tǒng)的集中式環(huán)境下實(shí)現(xiàn),也可在各元件分布在不同相互連接的計(jì)算機(jī)系統(tǒng)的分布式環(huán)境下實(shí)現(xiàn)。任何種類的計(jì)算機(jī)系統(tǒng)或其它適合于執(zhí)行本發(fā)明所述方法的設(shè)備都適合使用本發(fā)明。軟硬件結(jié)合的范例可為帶有某計(jì)算機(jī)程序的通用計(jì)算機(jī)系統(tǒng),但載入并運(yùn)行該計(jì)算機(jī)程序時(shí),可控制計(jì)算機(jī)系統(tǒng)執(zhí)行本發(fā)明所述的方法。
本發(fā)明也可內(nèi)置在計(jì)算機(jī)程序產(chǎn)品中,其中包含可實(shí)現(xiàn)本發(fā)明所述方法的所有性能,且當(dāng)其載入到計(jì)算機(jī)系統(tǒng)時(shí)可執(zhí)行這些方法。本上下文中的計(jì)算機(jī)程序是指以任何語(yǔ)言、代碼或符號(hào)編寫的指令集的任何表達(dá)式,可使帶有信息處理功能的系統(tǒng)直接執(zhí)行特定功能或者在完成下列一項(xiàng)或兩項(xiàng)之后執(zhí)行特定功能a)轉(zhuǎn)換為其它語(yǔ)言、代碼或符號(hào);b)以其它形式重新生成。
本發(fā)明是根據(jù)特定實(shí)施例進(jìn)行描述的,但本領(lǐng)域的技術(shù)人員應(yīng)明白在不脫離本發(fā)明范圍時(shí),可進(jìn)行各種變化和等同替換。此外,為適應(yīng)本發(fā)明技術(shù)的特定場(chǎng)合或材料,可對(duì)本發(fā)明進(jìn)行諸多修改而不脫離其保護(hù)范圍。因此,本發(fā)明并不限于在此公開(kāi)的特定實(shí)施例,而包括所有落入到權(quán)利要求保護(hù)范圍的實(shí)施例。
權(quán)利要求
1.一種處理網(wǎng)絡(luò)數(shù)據(jù)的方法,其特征在于,該方法包含在單網(wǎng)絡(luò)芯片上使用多個(gè)管線硬件級(jí)處理下述中的至少一項(xiàng)接收到的傳輸控制協(xié)議數(shù)據(jù)包和要傳輸?shù)膫鬏斂刂茀f(xié)議數(shù)據(jù)包。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括,在所述單網(wǎng)絡(luò)芯片內(nèi),在所述并行管線硬件級(jí)的第一級(jí),解析接收到的所述傳輸控制協(xié)議數(shù)據(jù)包的報(bào)頭。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,進(jìn)一步包括,在所述單網(wǎng)絡(luò)芯片內(nèi),在所述并行管線硬件級(jí)的所述第一級(jí),驗(yàn)證接收到的所述傳輸控制協(xié)議數(shù)據(jù)包的以太網(wǎng)幀循環(huán)冗余校驗(yàn)摘要、因特網(wǎng)協(xié)議報(bào)頭校驗(yàn)和以及傳輸控制協(xié)議校驗(yàn)和。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,進(jìn)一步包括,在所述單網(wǎng)絡(luò)芯片內(nèi),在所述并行管線硬件級(jí)的所述第一級(jí),確認(rèn)接收到的所述傳輸控制協(xié)議數(shù)據(jù)包的因特網(wǎng)協(xié)議地址。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括,在所述單網(wǎng)絡(luò)芯片內(nèi),在所述并行管線硬件級(jí)的第二級(jí),查詢所述接收到的所述傳輸控制協(xié)議數(shù)據(jù)包的傳輸控制協(xié)議控制模塊索引。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括,在所述單網(wǎng)絡(luò)芯片內(nèi)、在所述并行管線硬件級(jí)的第三級(jí),對(duì)下列中的至少一項(xiàng)的傳輸控制協(xié)議控制模塊的數(shù)據(jù)查詢排序所述接收到的傳輸控制協(xié)議數(shù)據(jù)包和所述要傳輸?shù)膫鬏斂刂茀f(xié)議數(shù)據(jù)包。
7.一種處理網(wǎng)絡(luò)數(shù)據(jù)的系統(tǒng),其特征在于,該系統(tǒng)包含單網(wǎng)絡(luò)芯片,該單網(wǎng)絡(luò)芯片包含處理下述項(xiàng)中的至少一個(gè)的多個(gè)片上管線硬件級(jí)接收到的傳輸控制協(xié)議數(shù)據(jù)包,和要傳輸?shù)膫鬏斂刂茀f(xié)議數(shù)據(jù)包。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述多個(gè)并行的管線硬件級(jí)的第一級(jí),在所述單網(wǎng)絡(luò)芯片上解析所述接收到的傳輸控制協(xié)議數(shù)據(jù)包的報(bào)頭。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,所述多個(gè)并行的管線硬件級(jí)的所述第一級(jí),在所述單網(wǎng)絡(luò)芯片上驗(yàn)證所述接收到的傳輸控制協(xié)議數(shù)據(jù)包的以太網(wǎng)幀循環(huán)冗余校驗(yàn)摘要、因特網(wǎng)協(xié)議檢驗(yàn)和以及傳輸控制協(xié)議校驗(yàn)和。
10.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,所述多個(gè)并行的管線硬件級(jí)的所述第一級(jí),在所述單網(wǎng)絡(luò)芯片上確認(rèn)所述接收到的傳輸控制協(xié)議數(shù)據(jù)包的因特網(wǎng)協(xié)議地址。
全文摘要
本發(fā)明涉及一種高性能硬件網(wǎng)絡(luò)協(xié)議處理引擎的方法。該方法包括通過(guò)單網(wǎng)絡(luò)芯片上的多個(gè)管線硬件級(jí)處理TCP數(shù)據(jù)包。在并行管線硬件級(jí)的第一級(jí),解析接收到的TCP數(shù)據(jù)包的報(bào)頭,并驗(yàn)證以太網(wǎng)幀CRC摘要、IP校驗(yàn)和以及TCP校驗(yàn)和。同時(shí)在第一級(jí)還可驗(yàn)證所接收到的TCP數(shù)據(jù)包的IP地址。在第二級(jí),可查詢所接收到的TCP數(shù)據(jù)包的TCB索引。在第三級(jí)查詢TCP數(shù)據(jù)包的TCB數(shù)據(jù),在第四級(jí)對(duì)TCP數(shù)據(jù)包進(jìn)行接收處理。在第五級(jí)可將已處理的所接收到的TCP數(shù)據(jù)包傳送到應(yīng)用層。
文檔編號(hào)H04L12/56GK101047714SQ20061009151
公開(kāi)日2007年10月3日 申請(qǐng)日期2006年6月6日 優(yōu)先權(quán)日2005年6月7日
發(fā)明者龐舫 申請(qǐng)人:美國(guó)博通公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1