亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

校驗(yàn)數(shù)據(jù)完整性的制作方法

文檔序號(hào):7634857閱讀:342來源:國知局
專利名稱:校驗(yàn)數(shù)據(jù)完整性的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種網(wǎng)絡(luò)接口,例如將計(jì)算機(jī)連接到網(wǎng)絡(luò)的接口設(shè)備。


圖1是如網(wǎng)絡(luò)接口卡(NIC)等網(wǎng)絡(luò)接口設(shè)備及可將該設(shè)備用于其中的系統(tǒng)的總體架構(gòu)的原理圖。網(wǎng)絡(luò)接口設(shè)備10通過數(shù)據(jù)鏈路5連接到處理設(shè)備如計(jì)算機(jī)1,并且通過數(shù)據(jù)鏈路14連接到數(shù)據(jù)網(wǎng)絡(luò)20。另外的網(wǎng)絡(luò)接口設(shè)備如處理設(shè)備30也與網(wǎng)絡(luò)相連,用于在網(wǎng)絡(luò)和另外的處理設(shè)備如處理設(shè)備40之間提供接口。
例如,計(jì)算機(jī)1可以是個(gè)人計(jì)算機(jī)、服務(wù)器或?qū)S锰幚碓O(shè)備例如數(shù)據(jù)記錄器或控制器。在本例中,它包括處理器2、程序存儲(chǔ)器4和存儲(chǔ)器3。程序存儲(chǔ)器存儲(chǔ)定義操作系統(tǒng)和可以在操作系統(tǒng)上運(yùn)行的應(yīng)用程序的指令。操作系統(tǒng)提供驅(qū)動(dòng)程序和接口庫等工具,利用該工具應(yīng)用程序可以訪問連接于計(jì)算機(jī)的外圍硬件裝置。
網(wǎng)絡(luò)接口設(shè)備最好能夠在用戶級(jí)支持如TCP、RDMA和ISCSI等標(biāo)準(zhǔn)傳輸協(xié)議即,通過一種方式可使它們能夠訪問運(yùn)行在計(jì)算機(jī)1上的應(yīng)用程序。這種支持使得能夠進(jìn)行需要使用標(biāo)準(zhǔn)協(xié)議的數(shù)據(jù)傳送,而不需數(shù)據(jù)通過內(nèi)核棧。在本例的網(wǎng)絡(luò)接口設(shè)備中,在計(jì)算機(jī)1的操作系統(tǒng)可訪問的傳輸庫中實(shí)現(xiàn)標(biāo)準(zhǔn)傳輸協(xié)議。
圖2說明了這樣的一個(gè)實(shí)現(xiàn)。在這個(gè)架構(gòu)中,實(shí)現(xiàn)了兩次TCP(以及其它)協(xié)議如圖2中TCP1和TCP2所示。在一個(gè)典型的操作系統(tǒng)中,TCP2是內(nèi)置于計(jì)算機(jī)的操作系統(tǒng)中的TCP協(xié)議的標(biāo)準(zhǔn)實(shí)現(xiàn)。為了控制網(wǎng)絡(luò)接口設(shè)備和/或與網(wǎng)絡(luò)接口設(shè)備通信,運(yùn)行在計(jì)算機(jī)上的應(yīng)用程序可發(fā)出API(應(yīng)用程序編程接口)調(diào)用。已提供的支持網(wǎng)絡(luò)接口設(shè)備的傳輸庫能夠處理一些API調(diào)用。對(duì)于應(yīng)用程序直接可用的傳輸庫所不能處理的API調(diào)用,通常通過應(yīng)用程序和操作系統(tǒng)之間的接口傳送由操作系統(tǒng)可用的庫處理。對(duì)于具有多個(gè)操作系統(tǒng)的實(shí)現(xiàn),方便的做法是令傳輸庫經(jīng)由OS接口,使用現(xiàn)有的基于Ethernet/IP的控制平面架構(gòu),例如SNMP和ARP協(xié)議。
在用戶級(jí)實(shí)現(xiàn)傳輸協(xié)議具有很多困難。到目前為止的多數(shù)實(shí)現(xiàn)均是基于把預(yù)先存在的內(nèi)核代碼基礎(chǔ)移植到用戶級(jí)。這樣的例子有Arsenic和Jet-stream。這證明了用戶級(jí)傳輸?shù)臐摿?,但是沒有解決取得一個(gè)完善的、魯棒的、高性能的、商業(yè)上可行的實(shí)現(xiàn)所需的諸多問題。
圖3示出一個(gè)使用標(biāo)準(zhǔn)內(nèi)核TCP傳輸(TCPk)的架構(gòu)。
該架構(gòu)的操作如下當(dāng)從網(wǎng)絡(luò)接口硬件(例如網(wǎng)絡(luò)接口卡(NIC))進(jìn)行分組接收時(shí),NIC將數(shù)據(jù)送入預(yù)先分配的數(shù)據(jù)緩沖區(qū)(a),并通過中斷線調(diào)用OS中斷處理程序(步驟i)。中斷處理程序管理硬件接口,例如公布新的接收緩沖區(qū),并且傳遞已接收的(在本例中,通過Ethernet)尋找協(xié)議信息的分組。如果一個(gè)分組被識(shí)別為指定了有效的協(xié)議,例如TCP/IP,就將其傳遞(不復(fù)制)到適當(dāng)?shù)慕邮諈f(xié)議處理塊(步驟ii)。
進(jìn)行TCP接收側(cè)的處理并且從分組識(shí)別目的部分。如果分組包含端口的有效數(shù)據(jù),那么將分組加入到端口的數(shù)據(jù)隊(duì)列(步驟iii),把該端口標(biāo)記為(可能需要調(diào)度程序和被阻止的進(jìn)程的喚醒)持有有效數(shù)據(jù)。
TCP接收處理可能需要其它分組已經(jīng)傳送(步驟iv),例如,如果應(yīng)當(dāng)再次傳送此前已傳送的數(shù)據(jù)或者可以現(xiàn)在傳送之前已入隊(duì)的數(shù)據(jù)(或許因?yàn)門CP窗口已經(jīng)打開)。在這種情況下,分組與用于傳送的OS“NDIS”驅(qū)動(dòng)程序一起排隊(duì)。
為了使一個(gè)應(yīng)用程序能夠檢索數(shù)據(jù)緩沖區(qū),它必須引用OS API(步驟v),例如使用recv(),select()或poll()等調(diào)用。如此做具有這樣的效果通知應(yīng)用程序數(shù)據(jù)已經(jīng)收到并且(在recv()調(diào)用的情況下)將數(shù)據(jù)從內(nèi)核緩沖區(qū)復(fù)制到應(yīng)用程序緩沖區(qū)。復(fù)制使內(nèi)核(OS)能夠重新使用它的網(wǎng)絡(luò)緩沖區(qū),該緩沖區(qū)具有如DMA可訪問的特殊屬性并意味著應(yīng)用程序不必在網(wǎng)絡(luò)所提供的單元中處理數(shù)據(jù),否則應(yīng)用程序需要預(yù)先知道數(shù)據(jù)的最終目的地,應(yīng)用程序必須預(yù)先分配以后能夠用于數(shù)據(jù)接收的緩沖區(qū)。
應(yīng)當(dāng)注意的是,在接收側(cè)具有至少兩個(gè)不同的異步交互的控制線程來自中斷的向上調(diào)用和來自應(yīng)用程序的系統(tǒng)調(diào)用。許多操作系統(tǒng)也將向上調(diào)用分開,以避免在中斷優(yōu)先級(jí)執(zhí)行太多的代碼,例如通過“軟中斷”或“延遲程序調(diào)用”技術(shù)。
除了通常存在一條執(zhí)行路徑外,發(fā)送過程以類似的方式運(yùn)作。應(yīng)用程序通過加以要傳送的數(shù)據(jù)調(diào)用操作系統(tǒng)API(例如,使用send()調(diào)用)(步驟vi)。該調(diào)用將數(shù)據(jù)復(fù)制到內(nèi)核數(shù)據(jù)緩沖區(qū)中并且引用用TCP發(fā)送處理。此時(shí),應(yīng)用了協(xié)議且完好形成的TCP/IP分組與接口驅(qū)動(dòng)程序一起排隊(duì)用于傳送。
如果成功的話,系統(tǒng)調(diào)用返回一個(gè)對(duì)經(jīng)調(diào)度的(由硬件)用于傳送的數(shù)據(jù)的指示。然而,在一些情況下,網(wǎng)絡(luò)接口設(shè)備無法使數(shù)據(jù)入隊(duì)。例如,傳輸協(xié)議使未決的確認(rèn)或窗口更新進(jìn)行排隊(duì),設(shè)備驅(qū)動(dòng)程序使到硬件的未決的數(shù)據(jù)傳送請求以軟件的形式進(jìn)行排隊(duì)。
由必須根據(jù)時(shí)間變化執(zhí)行的動(dòng)作生成貫穿系統(tǒng)的一個(gè)第三控制流。一個(gè)例子是,對(duì)重發(fā)算法的觸發(fā)。通常,操作系統(tǒng)為所有OS模塊提供時(shí)間和調(diào)度服務(wù)(由硬件時(shí)鐘中斷驅(qū)動(dòng)),使TCP棧能實(shí)現(xiàn)在基于每個(gè)連接的定時(shí)器。
如果在用戶級(jí)實(shí)現(xiàn)標(biāo)準(zhǔn)內(nèi)核棧,那么架構(gòu)通常如圖4中所示。應(yīng)用程序與傳輸庫鏈接而不是直接與OS接口鏈接。該架構(gòu)與具有由用戶級(jí)程序包提供的如定時(shí)器支持等服務(wù)的內(nèi)核棧實(shí)現(xiàn),以及由用戶級(jí)虛擬接口模塊替代的裝置驅(qū)動(dòng)程序接口很相似。然而,為了提供TCP實(shí)現(xiàn)所需要的一個(gè)異步處理模型,在傳輸庫內(nèi)必需有一些活動(dòng)的執(zhí)行線程(i)由應(yīng)用程序提供的系統(tǒng)API調(diào)用(ii)定時(shí)器生成協(xié)議代碼的的調(diào)用(iii)虛擬網(wǎng)絡(luò)接口和協(xié)議代碼內(nèi)合成的向上調(diào)用的管理(對(duì)于一些架構(gòu),可將ii和iii組合)然而,這樣安排帶來一些問題(a)在這些線程間的上下文轉(zhuǎn)換和實(shí)現(xiàn)閉鎖以保護(hù)共享數(shù)據(jù)架構(gòu)的開銷可能是巨大的,從而消耗了大量的處理時(shí)間。
(b)通常使用提供定時(shí)器/時(shí)間支持的操作系統(tǒng)來操作用戶級(jí)定時(shí)器代碼。來自定時(shí)器模塊的系統(tǒng)調(diào)用所產(chǎn)生的大的開銷導(dǎo)致系統(tǒng)不能獲得滿意的阻止操作系統(tǒng)和數(shù)據(jù)路徑間相互作用的目的。
(c)可能有許多獨(dú)立的應(yīng)用程序,每個(gè)應(yīng)用程序管理網(wǎng)絡(luò)連接的一個(gè)子集;一些是通過它們自己的傳輸庫,一些是通過現(xiàn)有的內(nèi)核棧傳輸庫。NIC必須能夠有效地解析分組,并將他們傳送到基于如IP端口和主地址位等協(xié)議信息的適當(dāng)?shù)奶摂M接口(或OS)。
(d)一個(gè)應(yīng)用程序可能將對(duì)特定網(wǎng)絡(luò)連接的控制傳送到另一個(gè)應(yīng)用程序,例如在Unix操作系統(tǒng)上的fork()系統(tǒng)調(diào)用期間。這要求將需要一個(gè)完全不同的傳輸庫例訪問連接狀態(tài)。更糟糕的是,許多應(yīng)用程序可能共享一個(gè)網(wǎng)絡(luò)連接,意味著傳輸庫通過(進(jìn)程間通信)技術(shù)共享所有權(quán)。現(xiàn)有的用戶級(jí)傳輸不支持這樣。
(e)通常要求傳輸協(xié)議命令網(wǎng)絡(luò)連接的壽命長于其所連接的應(yīng)用程序。
例如,使用TCP協(xié)議,傳輸必須竭力進(jìn)行發(fā)送,除了不被確認(rèn)的數(shù)據(jù),當(dāng)發(fā)送應(yīng)用程序退出或失效時(shí)適當(dāng)?shù)年P(guān)閉一個(gè)連接。對(duì)于內(nèi)核棧實(shí)現(xiàn),不管應(yīng)用程序的狀態(tài)如何,都能夠?qū)ⅰ岸〞r(shí)器”輸入到協(xié)議棧是沒有問題的,但是如果應(yīng)用程序退出、失效或者在調(diào)試程序中終止,對(duì)于將消失(可能是不適當(dāng)?shù)?的傳輸庫則存在問題。
另外,RDMA(遠(yuǎn)程直接存儲(chǔ)器存取)和ISCSI(Internet小型計(jì)算機(jī)系統(tǒng)接口)為這樣的協(xié)議允許一個(gè)諸如計(jì)算機(jī)的設(shè)備直接存取網(wǎng)絡(luò)上把該設(shè)備與其連接的另一個(gè)設(shè)備(“對(duì)象”)的存儲(chǔ)器的內(nèi)容。這些協(xié)議涉及向傳統(tǒng)網(wǎng)絡(luò)分組嵌入定義了根據(jù)協(xié)議所執(zhí)行的操作的數(shù)據(jù)串。例如,為執(zhí)行一個(gè)把數(shù)據(jù)寫至遠(yuǎn)程計(jì)算機(jī)的存儲(chǔ)器的RDMA操作,可以向該計(jì)算機(jī)發(fā)送一個(gè)TCP分組,該TCP分組具有一個(gè)包含由下列內(nèi)容組成的串的有效載荷(payload)一個(gè)標(biāo)記RDMA數(shù)據(jù)的開始的標(biāo)記符、一個(gè)指示把數(shù)據(jù)寫至存儲(chǔ)器中何處的標(biāo)簽、數(shù)據(jù)本身、以及一個(gè)允許在接收時(shí)驗(yàn)證數(shù)據(jù)的完整性的CRC塊。一個(gè)單一的TCP分組可以包括多個(gè)這樣的串。當(dāng)接收到TCP分組時(shí),可以將其有效載荷中的數(shù)據(jù)標(biāo)識(shí)為RDMA數(shù)據(jù),并相應(yīng)地對(duì)這些數(shù)據(jù)進(jìn)行處理,以執(zhí)行所希望的寫操作。
可以由對(duì)象設(shè)備本身的一個(gè)處理器,或者由對(duì)象設(shè)備的一個(gè)網(wǎng)絡(luò)接口設(shè)備執(zhí)行對(duì)分組處理以抽取、驗(yàn)證以及解釋RDMA數(shù)據(jù)。然而,這一處理一般都由網(wǎng)絡(luò)接口設(shè)備執(zhí)行,因?yàn)檫@樣做可以使往返于對(duì)象的存儲(chǔ)器的數(shù)據(jù)的傳遞效率更高。如果由對(duì)象設(shè)備的一個(gè)處理器執(zhí)行這一處理,則將需要兩個(gè)存儲(chǔ)器寫操作,因?yàn)槭紫缺仨毎裄DMA數(shù)據(jù)串傳遞于設(shè)備的存儲(chǔ)器的一個(gè)緩沖區(qū)域中,以進(jìn)行處理,然后,當(dāng)已確定了數(shù)據(jù)的目標(biāo)地址時(shí),其會(huì)被拷貝至該地址。相比之下,如果在網(wǎng)絡(luò)接口設(shè)備上執(zhí)行RDMA處理,則可以在其中確定數(shù)據(jù)的目標(biāo)地址,然后可以把數(shù)據(jù)直接寫至該地址,從而節(jié)省了否則將需要的拷貝操作。出于這一原因,最好采用在網(wǎng)絡(luò)接口設(shè)備上處理RDMA或ISCSI數(shù)據(jù)的方案。然而,其缺點(diǎn)是,要求網(wǎng)絡(luò)接口設(shè)備具有相當(dāng)大的處理能力。這增大的花費(fèi),特別是,由于在諸如網(wǎng)絡(luò)接口設(shè)備的設(shè)備上所嵌入的處理能力通常比主處理器能力更為昂貴。
人們希望提供一種支持諸如RDMA和ISCSI的協(xié)議的改進(jìn)的裝置。
根據(jù)本發(fā)明的一個(gè)方面,提供了一種網(wǎng)絡(luò)接口設(shè)備,用于與數(shù)據(jù)處理設(shè)備和數(shù)據(jù)網(wǎng)絡(luò)的連接,以在數(shù)據(jù)處理設(shè)備和網(wǎng)絡(luò)之間提供一個(gè)接口,以支持某一傳送協(xié)議的分組的網(wǎng)絡(luò),把網(wǎng)絡(luò)接口設(shè)備設(shè)置為能夠在這樣的分組數(shù)據(jù)的有效載荷中標(biāo)識(shí)一個(gè)進(jìn)一步的協(xié)議,進(jìn)一步的協(xié)議的數(shù)據(jù)包含該進(jìn)一步協(xié)議的有效載荷數(shù)據(jù)和該進(jìn)一步的協(xié)議的成幀數(shù)據(jù),成幀數(shù)據(jù)包括準(zhǔn)許驗(yàn)證有效載荷數(shù)據(jù)完整性的驗(yàn)證數(shù)據(jù);當(dāng)如此標(biāo)識(shí)進(jìn)一步的協(xié)議的數(shù)據(jù)時(shí),至少處理用于確定其完整性的有效載荷數(shù)據(jù),并且向數(shù)據(jù)處理設(shè)備傳輸至少某些成幀數(shù)據(jù)以及一個(gè)對(duì)所述處理的結(jié)果加以指示的指示信息。
權(quán)利要求中闡述了本發(fā)明的進(jìn)一步的方面和優(yōu)選特性。
本發(fā)明的其它方面和優(yōu)選特征在權(quán)利要求中陳述。
現(xiàn)在結(jié)合附圖通過例子來說明本發(fā)明,其中圖1是一個(gè)通用的網(wǎng)絡(luò)接口設(shè)備的原理圖;圖2示出了傳輸庫架構(gòu)的一個(gè)實(shí)現(xiàn);圖3示出使用用戶級(jí)TCP傳輸?shù)臉?biāo)準(zhǔn)內(nèi)核TCP傳輸?shù)募軜?gòu);圖4示出在用戶級(jí)實(shí)現(xiàn)標(biāo)準(zhǔn)內(nèi)核棧的架構(gòu);圖5示出一個(gè)TCP傳輸架構(gòu)的例子;圖5示出一個(gè)TCP傳輸架構(gòu)的例子,該架構(gòu)適合在如圖1中的設(shè)備10的網(wǎng)絡(luò)接口設(shè)備和如圖1的計(jì)算機(jī)1的計(jì)算機(jī)之間提供一個(gè)接口。該架構(gòu)不限于這個(gè)實(shí)現(xiàn)。
圖5中例子的架構(gòu)和傳統(tǒng)架構(gòu)之間的主要區(qū)別如下。
(i)代表網(wǎng)絡(luò)連接執(zhí)行協(xié)議處理的TCP代碼既位于傳輸庫又在OS內(nèi)核中。該代碼執(zhí)行協(xié)議處理的事實(shí)是非常重要的。
(ii)連接狀態(tài)和數(shù)據(jù)緩沖區(qū)保持在內(nèi)核存儲(chǔ)器和映射在傳輸庫的地址空間的存儲(chǔ)器中。
(iii)內(nèi)核與傳輸庫代碼均可訪問針對(duì)和代表某一特殊網(wǎng)絡(luò)連接的虛擬硬件接口。
(iv)通過虛擬硬件接口可管理定時(shí)器(這些定時(shí)器對(duì)應(yīng)于網(wǎng)絡(luò)接口設(shè)備上的真實(shí)定時(shí)器),不需系統(tǒng)調(diào)用來對(duì)他們設(shè)置和清零。NIC生成定時(shí)器事件,由網(wǎng)絡(luò)接口設(shè)備驅(qū)動(dòng)程序接收該事件并將其傳送到設(shè)備的TCP支持代碼上。
應(yīng)當(dāng)注意的是,網(wǎng)絡(luò)接口設(shè)備的TCP支持代碼是一般OS TCP的實(shí)現(xiàn)的補(bǔ)充。這能夠很好的與網(wǎng)絡(luò)接口設(shè)備棧共存。
為該架構(gòu)的效果如下。
(a)要求多個(gè)線程活動(dòng)于傳輸庫中由于既能作為系統(tǒng)API調(diào)用的結(jié)果在傳輸庫中執(zhí)行TCP代碼(例如recv())(見圖5步驟i),也可作為定時(shí)器事件的結(jié)果由內(nèi)核執(zhí)行TCP代碼(見圖5步驟ii),對(duì)于圖5的架構(gòu),不存在這一需求。在這兩種情況中,均可以管理VI(虛擬接口)且兩個(gè)代碼路徑可以訪問連接狀態(tài)或數(shù)據(jù)緩沖區(qū),可以由共享存儲(chǔ)器鎖管理對(duì)他們的保護(hù)和他們間的互斥。并且能夠去除在傳輸庫級(jí)的線程切換的開銷,該特點(diǎn)能夠應(yīng)用程序制止它們的線程和信號(hào)處理假設(shè)的需求例如在一些情況下,要求一個(gè)單線程的應(yīng)用程序與一個(gè)多線程的庫鏈接是不能接受的。
(b)替換針對(duì)定時(shí)器管理的系統(tǒng)調(diào)用由于網(wǎng)絡(luò)接口設(shè)備能夠?qū)崿F(xiàn)一些可分配在特殊虛擬接口例的多個(gè)定時(shí)器例如,每個(gè)活動(dòng)的TCP傳輸庫可有一個(gè)定時(shí)器,因此這一需求沒有表現(xiàn)在圖5的架構(gòu)中??梢酝ㄟ^由存儲(chǔ)器映射的VI使這些定時(shí)器成為可編程的(見圖5步驟iii),并且導(dǎo)致發(fā)布事件(見圖5步驟iv)。因?yàn)椴挥孟到y(tǒng)調(diào)用就可以設(shè)置和清零定時(shí)器,可大大降低定時(shí)器管理的開銷。
(c)至多傳輸庫的分組的正確送達(dá)網(wǎng)絡(luò)接口設(shè)備可以包括或者訪問內(nèi)容可尋址存儲(chǔ)器,這能夠匹配從進(jìn)入的分組標(biāo)頭所取得的比特,作為并行硬件匹配操作??梢詫⑷〉玫钠ヅ浣Y(jié)果指示必須用于送達(dá)的目的虛擬接口,并且硬件可以開始將已經(jīng)被推進(jìn)VI的分組的送達(dá)緩沖區(qū)。下面將說明匹配處理的一種可能的配置??梢詳U(kuò)展下面說明的配置來對(duì)與IPv6關(guān)聯(lián)的更大的主地址解復(fù)用,盡管與所描述的配置相比這將要求對(duì)應(yīng)每個(gè)分組更寬的CAM查找或多CAM查找。
為了這個(gè)目的使用CAM的一個(gè)選擇是使用散列算法,該算法允許來自分組標(biāo)頭的數(shù)據(jù)被處理以確定要被使用的虛擬接口。
(d)在進(jìn)程/應(yīng)用程序/線程之間連接的切換當(dāng)切換網(wǎng)絡(luò)連接時(shí),可以在應(yīng)用程序間傳送相同系統(tǒng)寬的資源句柄。例如,可以是文檔描述符。網(wǎng)絡(luò)接口設(shè)備的架構(gòu)能夠?qū)⑺信c網(wǎng)絡(luò)連接相關(guān)聯(lián)的狀態(tài)附加于(例如)該文件描述符,并要求傳輸庫存儲(chǔ)器映射至這個(gè)狀態(tài)。網(wǎng)絡(luò)連接切換后,盡管新的應(yīng)用程序在不同的地址空間中執(zhí)行,新的應(yīng)用程序(無論是應(yīng)用程序、線程或進(jìn)程)也能夠進(jìn)行存儲(chǔ)器映射并且繼續(xù)使用該狀態(tài)。另外,通過使用與在內(nèi)核和傳輸庫之間使用的相同的返回源語,任何應(yīng)用程序能夠共享具有由標(biāo)準(zhǔn)系統(tǒng)APIs指定的相同的語義的網(wǎng)絡(luò)連接的使用。
(e)當(dāng)傳輸庫停止、失效或解除時(shí),完成傳輸協(xié)議操作在網(wǎng)絡(luò)接口設(shè)備的架構(gòu)中可以完成這個(gè)步驟,因?yàn)檫B接狀態(tài)和協(xié)議代碼能夠駐留于內(nèi)核??梢园凑张c通用TCP(TCPk)協(xié)議棧相同的方式通知OS內(nèi)核代碼應(yīng)用程序狀態(tài)的改變。被停止的應(yīng)用程序?qū)⒉粫?huì)提供線程去進(jìn)行協(xié)議執(zhí)行,但是協(xié)議將通過定時(shí)器事件繼續(xù),例如,對(duì)于現(xiàn)有技術(shù)內(nèi)核棧協(xié)議,這是人們所熟悉的。
有很多新出現(xiàn)的協(xié)議如IETF RDMA和iSCSI。至少其中一些協(xié)議設(shè)計(jì)為運(yùn)行在TCP和其它協(xié)議代碼執(zhí)行在網(wǎng)絡(luò)接口設(shè)備上的環(huán)境中?,F(xiàn)在來說明這種協(xié)議能夠在主CPU上執(zhí)行的工具(即使用連接有網(wǎng)絡(luò)接口卡的計(jì)算機(jī)的處理裝置)。這種實(shí)現(xiàn)是先進(jìn)的,因?yàn)槠涫褂脩裟軌蚶弥鰿PU技術(shù)相對(duì)于協(xié)處理器技術(shù)的價(jià)格性能比優(yōu)勢。
RDMA規(guī)范中給出了RDMA指令的格式,這一規(guī)范可得于www.rdmaconsortium.org。
如RDMA等協(xié)議涉及在TCP流內(nèi)的成幀信息的嵌入和循環(huán)冗余校驗(yàn)。成幀信息在協(xié)議庫內(nèi)的計(jì)算是微不足道的,而CRC的計(jì)算(對(duì)比校驗(yàn)和)運(yùn)算量大且最好由硬件完成。為了適應(yīng)這一點(diǎn),當(dāng)TCP流帶有RDMA或相似的封包(encapsulation)時(shí),可以在虛擬接口內(nèi)進(jìn)行選擇,例如通過標(biāo)志位。當(dāng)檢測到這個(gè)選擇時(shí),NIC在傳送期間將解析傳送中的每個(gè)分組,恢復(fù)RDMA幀,使用RDMA CRC算法以及快速插入CCRC。相對(duì)如iSCSI等對(duì)誤差校驗(yàn)數(shù)據(jù)的運(yùn)算的運(yùn)算密度相對(duì)較大的其它協(xié)議,使用類比程序是有益的。
根據(jù)這一系統(tǒng),網(wǎng)絡(luò)接口設(shè)備還能使用相似的邏輯驗(yàn)證所接收的分組上的CRC。例如,可以用類似于標(biāo)準(zhǔn)TCP校驗(yàn)和卸載技術(shù)的方式來執(zhí)行校驗(yàn)。
為了執(zhí)行這一設(shè)置,較佳的做法是令所執(zhí)行的步驟如下。當(dāng)按一個(gè)RDMA可兼容的模式進(jìn)行操作時(shí),NIC對(duì)每一個(gè)所接收的TCP分組的有效載荷進(jìn)行分析,以識(shí)別其是否包含RDMA數(shù)據(jù)??梢酝ㄟ^校驗(yàn)RDMA成幀數(shù)據(jù)(即,RDMA頭標(biāo)和腳標(biāo)),特別是RDMA頭標(biāo)是否存在于有效載荷中,進(jìn)行這一識(shí)別。如果其不存在,則如通常那樣處理分組。如果其存在,則由NIC根據(jù)RDMACRC算法處理分組的有效載荷,以針對(duì)所接收數(shù)據(jù)計(jì)算RDMA CRC。一旦已經(jīng)進(jìn)行了這一計(jì)算,則可以使用兩條路線之一。在第一路線中,把RDMA數(shù)據(jù)隨所計(jì)算的CRC一起傳遞于主計(jì)算機(jī)。然后,主計(jì)算機(jī)可以把所計(jì)算CRC與RDMA數(shù)據(jù)中所接收的CRC進(jìn)行比較,以確定是否已正確地接收到數(shù)據(jù)。做為選擇,在第二路線中,可在NIC處進(jìn)行所述比較,并且把RDMA數(shù)據(jù)和所述比較結(jié)果的指示信息(例如在一個(gè)1比特的標(biāo)志中)傳遞至主計(jì)算機(jī)。因此,接下來,在這兩種情況的每一情況中,主計(jì)算機(jī)可以處理RDMA數(shù)據(jù)。因此,如果CRC校驗(yàn)的結(jié)果表明已經(jīng)正確地接收到數(shù)據(jù),則其可以執(zhí)行數(shù)據(jù)所表示的RDMA命令(通常為一個(gè)讀或?qū)懨?。否則,其不能執(zhí)行該命令,而且在該情況下,其可以自動(dòng)地執(zhí)行一個(gè)錯(cuò)誤恢復(fù)動(dòng)作,例如啟動(dòng)一個(gè)對(duì)數(shù)據(jù)進(jìn)行重新傳輸?shù)恼埱蟆?br> 如果除了其計(jì)算外,NIC還執(zhí)行對(duì)CRC的校驗(yàn),則如果其斷定還沒有有效地接收到數(shù)據(jù),則其不需要把相應(yīng)RDMA數(shù)據(jù)的有效載荷傳輸至主計(jì)算機(jī)。其僅需要根據(jù)傳送協(xié)議分組的頭標(biāo)(通常為一個(gè)TCP頭標(biāo))以及RDMA成幀信息傳輸允許主計(jì)算機(jī)請求重新傳輸?shù)淖銐虻男畔⒓纯伞F淇梢詡鬏斦麄€(gè)頭標(biāo)和成幀信息,其也可以只傳輸所述頭標(biāo)和成幀信息的某些部分。最好基于每RDMA數(shù)據(jù)單位進(jìn)行這一操作。因此,如果一個(gè)TCP分組包含一個(gè)單一的RDMA數(shù)據(jù)單位,則其為傳遞于主計(jì)算機(jī)的同一數(shù)據(jù)單位的成幀數(shù)據(jù)和同一分組的頭標(biāo)(或其一部分)。如果一個(gè)TCP分組包含多個(gè)RDMA數(shù)據(jù)單位,則如果斷定任何一個(gè)RDMA數(shù)據(jù)出現(xiàn)問題,則把其成幀數(shù)據(jù)和整個(gè)分組的頭標(biāo)(或其一部分)傳輸于主PC。
諸如RDMA的協(xié)議也可能要求附加的操作,例如在傳統(tǒng)的實(shí)現(xiàn)中要求網(wǎng)絡(luò)接口設(shè)備上附加智能的RDMA讀操作。如以上所示,這一類型的實(shí)現(xiàn)已導(dǎo)致這樣一個(gè)普遍的認(rèn)同應(yīng)該通過一個(gè)協(xié)同處理器網(wǎng)絡(luò)接口設(shè)備實(shí)現(xiàn)RDMA/TCP。在此處所描述的類型的架構(gòu)中,可以對(duì)一個(gè)特定的硬件濾波程序進(jìn)行編碼,以捕獲對(duì)某一具體網(wǎng)絡(luò)連接的這樣的較上級(jí)協(xié)議的請求。在這樣一種情況下,NIC可以生成一個(gè)類似于定時(shí)器事件的事件,以通過運(yùn)行在所附接計(jì)算機(jī)上的軟件以及一條提交數(shù)據(jù)消息請求動(dòng)作。通過以這樣的一種方法觸發(fā)一個(gè)事件,NIC可以實(shí)現(xiàn)這樣一種效果傳輸庫或內(nèi)核幫助程序,可以立即對(duì)請求采取動(dòng)作。這可以避免內(nèi)核擴(kuò)展在調(diào)度傳輸庫之前不執(zhí)行的潛在問題,并且如果需要的話,可將其施用于其它較上級(jí)協(xié)議。
較佳的作法是,使用NIC的專用硬件進(jìn)行CRC的計(jì)算,因?yàn)檫@樣做為執(zhí)行這樣的逐比特操作提供了一種特別有效的方式。相類似,上述方法也適用于計(jì)算除CRC計(jì)算之外的計(jì)算,例如,這些其它的計(jì)算可以包括認(rèn)證、加密以及解密操作。
盡管已參照RDMA描述了這一例子,但其也適用于其它協(xié)議。
據(jù)此,本申請人獨(dú)立地公開了此處所描述的各個(gè)特性,以及兩或兩個(gè)以上這樣的特性的任何組合,以致,總體上,依據(jù)這一技術(shù)領(lǐng)域中普通熟練技術(shù)人員共同的一般知識(shí),能夠根據(jù)本說明書執(zhí)行這樣的特性或組合,而不管這樣的特性或特性組合是否解決此處所公開的任何問題,而且對(duì)權(quán)利要求的范圍未加以限制。本申請人表示本發(fā)明的各個(gè)方面可由任何這樣的單個(gè)特性或特性的組合組成。鑒于以上的描述,這一技術(shù)領(lǐng)域中的熟練技術(shù)人員將會(huì)明顯意識(shí)到,可以在本發(fā)明的范圍內(nèi)對(duì)本發(fā)明進(jìn)行多方面的修改。
權(quán)利要求
1.一種網(wǎng)絡(luò)接口設(shè)備,用于與數(shù)據(jù)處理設(shè)備和數(shù)據(jù)網(wǎng)絡(luò)的連接,以在數(shù)據(jù)處理設(shè)備和網(wǎng)絡(luò)之間提供一個(gè)接口,以支持某一傳送協(xié)議的分組的網(wǎng)絡(luò),把網(wǎng)絡(luò)接口設(shè)備設(shè)置為能夠在這樣的分組數(shù)據(jù)的有效載荷中標(biāo)識(shí)一個(gè)進(jìn)一步的協(xié)議的數(shù)據(jù),該進(jìn)一步的協(xié)議的數(shù)據(jù)包括進(jìn)一步的協(xié)議的有效載荷數(shù)據(jù)和該進(jìn)一步的協(xié)議的成幀數(shù)據(jù),成幀數(shù)據(jù)包括準(zhǔn)許驗(yàn)證有效載荷數(shù)據(jù)完整性的驗(yàn)證數(shù)據(jù);當(dāng)如此標(biāo)識(shí)進(jìn)一步的協(xié)議的數(shù)據(jù)時(shí),至少處理用于確定其完整性的有效載荷數(shù)據(jù),并且向數(shù)據(jù)處理設(shè)備傳輸至少某些成幀數(shù)據(jù)以及一個(gè)對(duì)所述處理的結(jié)果加以指示的指示信息。
2.根據(jù)權(quán)利要求1中所要求的一種網(wǎng)絡(luò)接口設(shè)備,其中,把網(wǎng)絡(luò)接口設(shè)備設(shè)置為能夠通過把一個(gè)預(yù)先確定的函數(shù)施用于有效載荷數(shù)據(jù),處理有效載荷數(shù)據(jù),以形成一個(gè)驗(yàn)證結(jié)果。
3.根據(jù)權(quán)利要求1中所要求的一種網(wǎng)絡(luò)接口設(shè)備,其中,所述驗(yàn)證結(jié)果為結(jié)果的所述指示信息。
4.根據(jù)權(quán)利要求3中所要求的一種網(wǎng)絡(luò)接口設(shè)備,其中,把網(wǎng)絡(luò)接口設(shè)備設(shè)置為能夠把有效載荷數(shù)據(jù)隨至少某些成幀數(shù)據(jù)一起傳輸至數(shù)據(jù)處理設(shè)備。
5.根據(jù)權(quán)利要求2中所要求的一種網(wǎng)絡(luò)接口設(shè)備,其中,把網(wǎng)絡(luò)接口設(shè)備進(jìn)一步設(shè)置為能夠通過把驗(yàn)證結(jié)果與核實(shí)數(shù)據(jù)進(jìn)行比較,處理有效載荷數(shù)據(jù),這一比較的結(jié)果為結(jié)果的所述指示信息。
6.根據(jù)權(quán)利要求5中所要求的一種網(wǎng)絡(luò)接口設(shè)備,其中,把網(wǎng)絡(luò)接口設(shè)備設(shè)置為如果所述比較的結(jié)果為驗(yàn)證結(jié)果與驗(yàn)證數(shù)據(jù)相匹配,則把有效載荷數(shù)據(jù)隨至少某些成幀數(shù)據(jù)一起傳輸至數(shù)據(jù)處理設(shè)備。
7.根據(jù)權(quán)利要求5或6中所述的一種網(wǎng)絡(luò)接口設(shè)備,其中,把網(wǎng)絡(luò)接口設(shè)備設(shè)置為如果所述比較的結(jié)果為驗(yàn)證結(jié)果與驗(yàn)證數(shù)據(jù)不相匹配,則不把有效載荷數(shù)據(jù)傳輸至數(shù)據(jù)處理設(shè)備。
8.根據(jù)權(quán)利要求2至7中任何一個(gè)權(quán)利要求中所述的一種網(wǎng)絡(luò)接口設(shè)備,其中,預(yù)先確定的函數(shù)為一個(gè)循環(huán)冗余校驗(yàn)函數(shù)。
9.根據(jù)權(quán)利要求2至7中任何一個(gè)權(quán)利要求中所述的一種網(wǎng)絡(luò)接口設(shè)備,其中,預(yù)先確定的函數(shù)為一個(gè)認(rèn)證函數(shù)。
10.根據(jù)權(quán)利要求2~9中任何一個(gè)權(quán)利要求中所述的一種網(wǎng)絡(luò)接口設(shè)備,其中,預(yù)先確定的函數(shù)為一個(gè)涉及有效載荷數(shù)據(jù)的逐字節(jié)處理的函數(shù)。
11.根據(jù)任何先前權(quán)利要求中所述的一種網(wǎng)絡(luò)接口設(shè)備,其中,傳送協(xié)議的分組包括該協(xié)議的分組頭標(biāo),并且把網(wǎng)絡(luò)接口設(shè)備設(shè)置為當(dāng)標(biāo)識(shí)進(jìn)一步的協(xié)議的數(shù)據(jù)時(shí),能夠把載有有效載荷數(shù)據(jù)的傳送協(xié)議的一或多個(gè)分組的一或多個(gè)頭標(biāo)的至少某些隨有效載荷數(shù)據(jù)一起傳輸至數(shù)據(jù)處理設(shè)備。
13.一種網(wǎng)絡(luò)接口設(shè)備,其中,把網(wǎng)絡(luò)接口設(shè)備設(shè)置為能夠通過把數(shù)據(jù)傳輸至一個(gè)數(shù)據(jù)處理設(shè)備所支持的傳輸庫,執(zhí)行向數(shù)據(jù)處理設(shè)備的傳輸。
14.根據(jù)任何先前權(quán)利要求中所述的一種網(wǎng)絡(luò)接口設(shè)備,其中,傳送協(xié)議為TCP(傳輸控制協(xié)議)協(xié)議。
15.一種網(wǎng)絡(luò)接口設(shè)備,其中,進(jìn)一步的協(xié)議為一個(gè)針對(duì)遠(yuǎn)程直接存儲(chǔ)器存取的協(xié)議。
16.根據(jù)權(quán)利要求15中所述的一種網(wǎng)絡(luò)接口設(shè)備,其中,進(jìn)一步的協(xié)議為這樣的協(xié)議其支持存儲(chǔ)器寫指令,其中,成幀數(shù)據(jù)包括指示把至少某些有效載荷數(shù)據(jù)寫至其中的數(shù)據(jù)處理設(shè)備的存儲(chǔ)器地址的信息。
17.根據(jù)權(quán)利要求15或16中所述的一種網(wǎng)絡(luò)接口設(shè)備,其中,進(jìn)一步的協(xié)議為RDMA(遠(yuǎn)程直接存儲(chǔ)器存取)或ISCSI(Internet小型計(jì)算機(jī)串行接口)協(xié)議。
18.根據(jù)任何先前權(quán)利要求中所述的一種網(wǎng)絡(luò)接口設(shè)備,其中,把網(wǎng)絡(luò)接口設(shè)備設(shè)置為當(dāng)標(biāo)識(shí)進(jìn)一步的協(xié)議的至少某些形式的數(shù)據(jù)時(shí),能夠在數(shù)據(jù)處理裝置上引發(fā)一個(gè)中斷。
19.根據(jù)權(quán)利要求18中所述的一種網(wǎng)絡(luò)接口設(shè)備,其中,所述形式的數(shù)據(jù)包括存儲(chǔ)器讀指令。
20.根據(jù)權(quán)利要求18中所述的一種網(wǎng)絡(luò)接口設(shè)備,其中,所述形式的數(shù)據(jù)包括存儲(chǔ)器寫指令。
21.根據(jù)權(quán)利要求19或20中所述的一種網(wǎng)絡(luò)接口設(shè)備,其中,所述指令包括指示在其處執(zhí)行所述讀/寫的一個(gè)存儲(chǔ)器地址的信息。
22.一種數(shù)據(jù)處理系統(tǒng),包括一個(gè)網(wǎng)絡(luò)接口設(shè)備,該網(wǎng)絡(luò)接口設(shè)備用于與數(shù)據(jù)處理設(shè)備和數(shù)據(jù)網(wǎng)絡(luò)的連接,以在數(shù)據(jù)處理設(shè)備和網(wǎng)絡(luò)之間提供一個(gè)接口,以支持某一傳送協(xié)議的分組的網(wǎng)絡(luò),把網(wǎng)絡(luò)接口設(shè)備設(shè)置為能夠在這樣的分組數(shù)據(jù)的有效載荷中標(biāo)識(shí)一個(gè)進(jìn)一步的協(xié)議的數(shù)據(jù),該進(jìn)一步的協(xié)議的數(shù)據(jù)包括進(jìn)一步的協(xié)議的有效載荷數(shù)據(jù)和該進(jìn)一步的協(xié)議的成幀數(shù)據(jù),成幀數(shù)據(jù)包括準(zhǔn)許驗(yàn)證有效載荷數(shù)據(jù)完整性的驗(yàn)證數(shù)據(jù);當(dāng)如此標(biāo)識(shí)進(jìn)一步的協(xié)議的數(shù)據(jù)時(shí),至少處理用于確定其完整性的有效載荷數(shù)據(jù),并且向數(shù)據(jù)處理設(shè)備傳輸至少某些成幀數(shù)據(jù)以及一個(gè)對(duì)所述處理的結(jié)果加以指示的指示信息。以及所述數(shù)據(jù)處理設(shè)備。
23.一種數(shù)據(jù)處理方法,使用了一個(gè)網(wǎng)絡(luò)接口設(shè)備,該網(wǎng)絡(luò)接口設(shè)備用于與數(shù)據(jù)處理設(shè)備和數(shù)據(jù)網(wǎng)絡(luò)的連接,以在數(shù)據(jù)處理設(shè)備和網(wǎng)絡(luò)之間提供一個(gè)接口,以支持某一傳送協(xié)議的分組的網(wǎng)絡(luò),該方法包括通過網(wǎng)絡(luò)接口設(shè)備執(zhí)行下列步驟在這樣的分組數(shù)據(jù)的有效載荷中標(biāo)識(shí)一個(gè)進(jìn)一步的協(xié)議的數(shù)據(jù),該進(jìn)一步的協(xié)議的數(shù)據(jù)包括進(jìn)一步的協(xié)議的有效載荷數(shù)據(jù)和該進(jìn)一步的協(xié)議的成幀數(shù)據(jù),成幀數(shù)據(jù)包括準(zhǔn)許驗(yàn)證有效載荷數(shù)據(jù)完整性的驗(yàn)證數(shù)據(jù);當(dāng)如此標(biāo)識(shí)進(jìn)一步的協(xié)議的數(shù)據(jù)時(shí),至少處理用于確定其完整性的有效載荷數(shù)據(jù),并且向數(shù)據(jù)處理設(shè)備傳輸至少某些成幀數(shù)據(jù)以及一個(gè)對(duì)所述處理的結(jié)果加以指示的指示信息。
全文摘要
一種網(wǎng)絡(luò)接口設(shè)備,用于與數(shù)據(jù)處理設(shè)備和數(shù)據(jù)網(wǎng)絡(luò)的連接,以在數(shù)據(jù)處理設(shè)備和網(wǎng)絡(luò)之間提供一個(gè)接口,以支持某一傳送協(xié)議的分組的網(wǎng)絡(luò),把網(wǎng)絡(luò)接口設(shè)備配置為能夠在這樣的分組數(shù)據(jù)的有效載荷中標(biāo)識(shí)一個(gè)進(jìn)一步的協(xié)議的數(shù)據(jù),該進(jìn)一步的協(xié)議的數(shù)據(jù)包括進(jìn)一步的協(xié)議的有效載荷數(shù)據(jù)和該進(jìn)一步的協(xié)議的成幀數(shù)據(jù),成幀數(shù)據(jù)包括準(zhǔn)許驗(yàn)證有效載荷數(shù)據(jù)完整性的驗(yàn)證數(shù)據(jù);當(dāng)如此標(biāo)識(shí)進(jìn)一步的協(xié)議的數(shù)據(jù)時(shí),至少處理用于確定其完整性的有效載荷數(shù)據(jù),并且向數(shù)據(jù)處理設(shè)備傳輸至少某些成幀數(shù)據(jù)以及一個(gè)對(duì)所述處理的結(jié)果加以指示的指示信息。
文檔編號(hào)H04L29/06GK1961559SQ200580012678
公開日2007年5月9日 申請日期2005年4月8日 優(yōu)先權(quán)日2004年4月21日
發(fā)明者斯蒂夫·萊斯利·蒲柏, 德瑞克·愛華茲·羅伯茨, 戴維·詹姆斯·里多克 申請人:Level5網(wǎng)絡(luò)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1