專利名稱:網(wǎng)絡(luò)協(xié)議單元完整性的確定的制作方法
網(wǎng)絡(luò)協(xié)議單元完整性的確定
領(lǐng)域
在此公開(kāi)的主題涉及對(duì)網(wǎng)絡(luò)協(xié)議單元完整性的確定。 相關(guān)技術(shù)
計(jì)算機(jī)之間基于網(wǎng)絡(luò)的通信速度正在提高。然而網(wǎng)絡(luò)速度的提升尚未被完全 利用,這部分是由于與計(jì)算機(jī)內(nèi)的數(shù)據(jù)傳輸和協(xié)議處理相關(guān)聯(lián)的等待時(shí)間引起的。
至少一種類型的協(xié)議處理包括循環(huán)冗余校驗(yàn)(CRC)。需要能夠加快計(jì)算機(jī)內(nèi)的數(shù) 據(jù)傳輸和協(xié)議處理速度的技術(shù)。
附圖簡(jiǎn)述
圖1A描繪了在其中可以使用本發(fā)明的某些實(shí)施例的合適系統(tǒng)。 圖1B描繪了網(wǎng)絡(luò)協(xié)議單元的示例。
圖2A根據(jù)本發(fā)明一個(gè)實(shí)施例描繪了網(wǎng)絡(luò)接口各部分的一個(gè)示例性實(shí)現(xiàn)。 圖2B描繪了可以在本發(fā)明一個(gè)實(shí)施例內(nèi)使用的主機(jī)存儲(chǔ)器的內(nèi)容的一個(gè)示 例性實(shí)現(xiàn)。
圖3描繪了能夠用于對(duì)一部分內(nèi)容執(zhí)行CRC確認(rèn)的進(jìn)程的流程圖,該內(nèi)容的
邊界被推測(cè)性地確定并且該內(nèi)容位于網(wǎng)絡(luò)協(xié)議單元內(nèi)。
圖4描繪了能夠用于對(duì)先前可能已經(jīng)進(jìn)行過(guò)推測(cè)性CRC確定的網(wǎng)絡(luò)協(xié)議單元 的內(nèi)容執(zhí)行CRC確認(rèn)的進(jìn)程的流程圖,
注意,在不同附圖中使用相同的標(biāo)號(hào)來(lái)指示相同或類似的元素。
詳細(xì)描述
本說(shuō)明書通篇對(duì)"一個(gè)實(shí)施例"或"某個(gè)實(shí)施例"的引用指的是結(jié)合該實(shí)施 例描述的特定特征、結(jié)構(gòu)或特性被包括在本發(fā)明的至少一個(gè)實(shí)施例中。因而,在本 說(shuō)明書通篇各處出現(xiàn)的短語(yǔ)"在一個(gè)實(shí)施例中"或"在某一實(shí)施例中"不必都指代 同一實(shí)施例。此外,在一個(gè)或多個(gè)實(shí)施例中,可組合這些特定的特征、結(jié)構(gòu)或特性。
圖1A在計(jì)算機(jī)系統(tǒng)100內(nèi)描繪了在其中可以使用本發(fā)明的某些實(shí)施例的合適
系統(tǒng)。計(jì)算機(jī)系統(tǒng)100可以包括主機(jī)系統(tǒng)102、總線116和網(wǎng)絡(luò)接口 118。
主機(jī)系統(tǒng)102可以在任何計(jì)算環(huán)境中使用,這些計(jì)算環(huán)境包括但不限于個(gè)人 計(jì)算機(jī)、服務(wù)器、交換機(jī)、路由器、個(gè)人數(shù)字助理和/或移動(dòng)電話。主機(jī)系統(tǒng)102 的一個(gè)實(shí)施例包括芯片組105、處理器110、主機(jī)存儲(chǔ)器112和存儲(chǔ)114。芯片組 105可以提供處理器110、主機(jī)存儲(chǔ)器112、存儲(chǔ)114、總線116以及圖形適配器之 間的相互通信,上述圖形適配器可用于傳輸圖形和信息以供在顯示設(shè)備上顯示(兩 者都未示出)。例如,芯片組105可以包括能夠提供與存儲(chǔ)114的相互通信的存儲(chǔ) 適配器(未示出)。例如,存儲(chǔ)適配器能夠遵守以下任何協(xié)議來(lái)與存儲(chǔ)114通信 小型計(jì)算機(jī)系統(tǒng)接口 (SCSI)、光纖通道(FC)和/或串行高級(jí)技術(shù)附件(S-ATA)。 在某些實(shí)施例中,芯片組105可包括用以對(duì)主機(jī)存儲(chǔ)器內(nèi)的信息執(zhí)行直接存儲(chǔ)器訪 問(wèn)(DMA)的直接存儲(chǔ)器訪問(wèn)引擎。
處理器110可以被實(shí)現(xiàn)為復(fù)雜指令集計(jì)算機(jī)(CISC)或精簡(jiǎn)指令集計(jì)算機(jī) (RISC)處理器、多核、或者任何其他微處理器或中央處理單元。
主機(jī)存儲(chǔ)器112可以被實(shí)現(xiàn)為易失性存儲(chǔ)設(shè)備,諸如但不限于隨機(jī)存取存儲(chǔ) 器(RAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)或靜態(tài)RAM (SRAM)。
存儲(chǔ)114可以被實(shí)現(xiàn)為非易失性存儲(chǔ)設(shè)備,諸如但不限于磁盤驅(qū)動(dòng)器、光盤 驅(qū)動(dòng)器、磁帶驅(qū)動(dòng)器、內(nèi)部存儲(chǔ)設(shè)備、附加存儲(chǔ)設(shè)備和/或網(wǎng)絡(luò)可訪問(wèn)存儲(chǔ)設(shè)備。
總線116可以提供至少是在主機(jī)系統(tǒng)102和網(wǎng)絡(luò)接口 118以及其他外圍設(shè)備 之間的相互通信??偩€116可以支持串行或并行通信??偩€116可以支持節(jié)點(diǎn)對(duì)節(jié) 點(diǎn)或者節(jié)點(diǎn)對(duì)多節(jié)點(diǎn)通信??偩€116例如可以與在可從美國(guó)俄勒岡州波特蘭市的 PCI Special Interest Group (PCI特殊利益集團(tuán))獲得的Peripheral Component Interconnect (PCI) Local Bus Specification, Revision2.2, December 18, 1998 (于1998 年12月18日發(fā)布的外圍部件互連(PCI)本地總線規(guī)范版本2.2)(及其修訂) 中描述的外圍部件互連(PCI);在PCI Special Interest Group的PCI Express Base Specification of the Revision 1.0a (PCI Express基礎(chǔ)規(guī)范版本1.0a)(及其修訂) 中描述的PCI Express;在可從前述美國(guó)俄勒岡州波特蘭市的PCI Special Interest Group獲得的PCI-X Specification Rev. 1.0a, July 24, 2000 (于2000年7月2日發(fā)布 的PCI-X規(guī)范版本1.0a)(及其修訂)中描述的PCI-x;和/或通用串行總線(USB) (及其相關(guān)標(biāo)準(zhǔn))以及其他互連標(biāo)準(zhǔn)相兼容。
網(wǎng)絡(luò)接口 118能夠在主機(jī)系統(tǒng)102和網(wǎng)絡(luò)120之間提供遵守由網(wǎng)絡(luò)120支持的協(xié)議的相互通信。網(wǎng)絡(luò)接口 118可以使用總線U6與主機(jī)系統(tǒng)102通信。在一個(gè) 實(shí)施例中,網(wǎng)絡(luò)接口 118可以被集成到芯片組105中。
網(wǎng)絡(luò)120可以是任何網(wǎng)絡(luò),諸如因特網(wǎng)、內(nèi)聯(lián)網(wǎng)、局域網(wǎng)(LAN)、存儲(chǔ)區(qū) 域網(wǎng)(SAN)、廣域網(wǎng)(WAN)或無(wú)線網(wǎng)絡(luò)。網(wǎng)絡(luò)120可以使用以太網(wǎng)標(biāo)準(zhǔn)(在 IEEE 802.3及其相關(guān)標(biāo)準(zhǔn)中描述)或任何通信標(biāo)準(zhǔn)與網(wǎng)絡(luò)接口 118交換話務(wù)。
在某些實(shí)施例中,計(jì)算機(jī)系統(tǒng)100可以利用RDMA協(xié)議。RDMA協(xié)議可以使 用TCP/IP之上的被稱為MPA的層來(lái)從TCP/IP網(wǎng)絡(luò)協(xié)議單元的入站流中恢復(fù)幀邊 界并提供對(duì)所恢復(fù)的幀的CRC確認(rèn)。例如,RDMA可以是在能從RDMA Consortium (RDMA聯(lián)盟)獲得的"An RDMA Protocol Specification" (version 1.0) (2002)" (RDMA協(xié)議規(guī)范(版本l.O) (2002))中所描述的。例如,TCP/IP協(xié)議是至少 在為Defense Advanced Projects Research Agency (國(guó)防先進(jìn)技術(shù)研究計(jì)劃署)(RFC 793, 1981年9月出版)準(zhǔn)備的題為"Transmission Control Protocol: DARPA Internet Program Protocol Specification"(傳輸控制協(xié)議DARPA因特網(wǎng)程序協(xié)議規(guī)范) 的出版物中所描述的。例如,MPA可以是至少在來(lái)自IETF working forum Remote Direct Data Placement Work Group (IETF工作論壇,遠(yuǎn)程直接數(shù)據(jù)放置工作小組) (2004年2月)的"Marker PDU Aligned Framing for TCP Specification"(針對(duì)TCP 規(guī)范的標(biāo)記PDU對(duì)齊成幀)及其修訂(以下稱為"MPA規(guī)范")中所描述的。在 此使用的"網(wǎng)絡(luò)協(xié)議單元"可以包括根據(jù)任何協(xié)議規(guī)范形成的帶有報(bào)頭和凈荷部分 的任何分組或幀或其他格式的信息。
根據(jù)本發(fā)明的一個(gè)實(shí)施例,網(wǎng)絡(luò)接口可以推測(cè)性地確定在網(wǎng)絡(luò)協(xié)議單元內(nèi)接 收到的內(nèi)容的邊界并且對(duì)一部分該推測(cè)性地定位的內(nèi)容執(zhí)行CRC確認(rèn)。在某些實(shí) 施例中,該內(nèi)容可以包括MPA幀。當(dāng)然,也可以推測(cè)性地確定其他類型的凈荷、 分組和幀的邊界。如果內(nèi)容的定位被正確地推測(cè),則主機(jī)系統(tǒng)就能夠在無(wú)需進(jìn)一步 確認(rèn)(例如,CRC或其他的比特奇偶校驗(yàn)處理)的情況下使用該內(nèi)容。藉此,主 機(jī)系統(tǒng)內(nèi)的處理周期就可用于執(zhí)行除CRC確認(rèn)或其他比特奇偶校驗(yàn)處理以外的操 作。同樣還能夠避免由于為CRC操作或其他比特奇偶校驗(yàn)處理而將網(wǎng)絡(luò)協(xié)議單元 排隊(duì)所造成的網(wǎng)絡(luò)協(xié)議單元可用性的延遲,從而可以縮短對(duì)網(wǎng)絡(luò)協(xié)議單元可用性的 等待時(shí)間。
計(jì)算機(jī)系統(tǒng)100可以被實(shí)現(xiàn)為以下各項(xiàng)的任一項(xiàng)或組合使用主板互連的微 芯片或集成電路、硬連線邏輯、由存儲(chǔ)器設(shè)備存儲(chǔ)并由處理器執(zhí)行的軟件、固件、 專用集成電路(ASIC)、和/或現(xiàn)場(chǎng)可編程門陣列(FPGA)。術(shù)語(yǔ)"邏輯"作為
示例可以包括軟件或硬件,和/或軟件和硬件的組合。
圖IB描繪了遵守TCP/IP協(xié)議的網(wǎng)絡(luò)協(xié)議單元的示例,并且每個(gè)網(wǎng)絡(luò)協(xié)議單 元都在TCP凈荷部分內(nèi)載有MPA幀。例如,在某些實(shí)施例中,每個(gè)網(wǎng)絡(luò)協(xié)議單元 可以包括IP和TCP報(bào)頭部分以及封裝在TCP凈荷部分內(nèi)的MPA幀。MPA幀可 以包括MPA長(zhǎng)度字段、MPA幀內(nèi)容、以及相關(guān)聯(lián)的MPA CRC字段。TCP凈荷 部分(和MPA幀)如圖所示大小可變。在示出的實(shí)施例中,MPA幀邊界與TCP 凈荷部分的邊界相匹配,然而MPA幀邊界也可以不與TCP凈荷部分的邊界相匹配。 對(duì)于更多的MPA幀封裝示例,參見(jiàn)MPA規(guī)范。
圖2A根據(jù)本發(fā)明的一個(gè)實(shí)施例描繪了網(wǎng)絡(luò)接口的各部分的示例性實(shí)現(xiàn)。例 如,網(wǎng)絡(luò)接口至少可以包括收發(fā)機(jī)202、內(nèi)容標(biāo)識(shí)器204、 CRC邏輯206、 CRC累 加器208、網(wǎng)絡(luò)協(xié)議單元(NPU)狀態(tài)寄存器210、以及總線接口212。雖然沒(méi)有 詳細(xì)描述,但是網(wǎng)絡(luò)接口可以包括能夠?qū)⒕W(wǎng)絡(luò)協(xié)議單元傳送至網(wǎng)絡(luò)的邏輯。
收發(fā)機(jī)202可以包括媒體訪問(wèn)控制(MAC)和物理層接口 (PHY)(皆未示 出),它們能夠以遵守適用的協(xié)議(諸如在IEEE 802.3及其相關(guān)標(biāo)準(zhǔn)中描述的以 太網(wǎng),雖然也可以使用其他的協(xié)議)的任何速率從網(wǎng)絡(luò)接收網(wǎng)絡(luò)協(xié)議單元并向網(wǎng)絡(luò) 發(fā)送網(wǎng)絡(luò)協(xié)議單元。例如,收發(fā)機(jī)202可以使用物理線路和/或無(wú)線技術(shù)接收來(lái)自 網(wǎng)絡(luò)120的網(wǎng)絡(luò)協(xié)議單元并向網(wǎng)絡(luò)發(fā)送網(wǎng)絡(luò)協(xié)議單元。
內(nèi)容標(biāo)識(shí)器204可以從收發(fā)機(jī)202中接收網(wǎng)絡(luò)協(xié)議單元并將其邊界被推測(cè)性 地確定并定位在每個(gè)網(wǎng)絡(luò)協(xié)議單元的凈荷部分內(nèi)的內(nèi)容提供給CRC邏輯206。例 如,當(dāng)網(wǎng)絡(luò)協(xié)議單元遵守TCP/IP時(shí),內(nèi)容標(biāo)識(shí)器204可以根據(jù)TCP/IP規(guī)范來(lái)確定 TCP凈荷位置。在某些實(shí)施例中,內(nèi)容標(biāo)識(shí)器204可以推測(cè)內(nèi)容的邊界與TCP凈 荷的邊界相同。例如,在某些實(shí)施例中,其邊界被推測(cè)性地確定的內(nèi)容可以包括 MPA幀。當(dāng)然,也能夠推測(cè)其他類型的幀、分組或其他信息的邊界。內(nèi)容標(biāo)識(shí)器 204可以將其邊界被推測(cè)性地確定的至少一部分內(nèi)容提供給CRC邏輯206并且指 示CRC確認(rèn)何時(shí)開(kāi)始和停止。
CRC邏輯206可以對(duì)內(nèi)容標(biāo)識(shí)器204 (或另一源)提供的內(nèi)容執(zhí)行CRC確認(rèn) 操作。例如,提供的內(nèi)容可以包括MPACRC字段、MPA長(zhǎng)度字段和MPA幀內(nèi)容 的組合、或者整個(gè)MPA幀。CRC邏輯206可以將CRC確認(rèn)操作的中間結(jié)果存儲(chǔ) 在CRC累加器208中并且使用來(lái)自CRC累加器208的中間結(jié)果來(lái)確定所提供內(nèi)容 的CRC確認(rèn)。在某些實(shí)施例中,CRC累加器208可以存儲(chǔ)對(duì)內(nèi)容執(zhí)行的CRC計(jì) 算的中間和最終版本。例如,CRC確認(rèn)可以包括根據(jù)MPA規(guī)范的CRC32c值的計(jì) 算。CRC邏輯206可以指示對(duì)所提供內(nèi)容的CRC確認(rèn)操作是有效還是無(wú)效。
網(wǎng)絡(luò)協(xié)議單元(NPU)狀態(tài)寄存器210可以指示對(duì)其邊界被推測(cè)性地確定的 網(wǎng)絡(luò)協(xié)議單元內(nèi)容的CRC確認(rèn)操作是有效還是無(wú)效。寄存器210內(nèi)的CRC有效/ 無(wú)效結(jié)果可以作為元數(shù)據(jù)被傳送至主機(jī)計(jì)算機(jī)(或其他目的地)。元數(shù)據(jù)可以被存 儲(chǔ)在主機(jī)存儲(chǔ)器中與相關(guān)聯(lián)網(wǎng)絡(luò)協(xié)議單元相同的區(qū)域內(nèi),也可以被存儲(chǔ)在主機(jī)存儲(chǔ) 器的另一區(qū)域內(nèi)。
總線接口 212可以提供與總線的相互通信。該總線可包括但不限于類似于總 線116 (圖1A)的總線。例如,總線可以在網(wǎng)絡(luò)接口和主機(jī)系統(tǒng)之間提供相互通 信??偩€接口 212可以遵守該總線所支持的標(biāo)準(zhǔn)(但是也可以使用其他的互連標(biāo) 準(zhǔn))。例如,總線接口 212可以包括并利用直接存儲(chǔ)器訪問(wèn)(DMA)引擎(未示 出)來(lái)對(duì)從主機(jī)存儲(chǔ)器和/或主機(jī)存儲(chǔ)到網(wǎng)絡(luò)接口和/或從網(wǎng)絡(luò)接口到主機(jī)存儲(chǔ)器和 /或主機(jī)存儲(chǔ)的信息執(zhí)行直接存儲(chǔ)器訪問(wèn)。例如,總線接口 212至少可用于將網(wǎng)絡(luò) 協(xié)議單元和元數(shù)據(jù)傳送至主機(jī)系統(tǒng)。
圖2B描繪了可在本發(fā)明一個(gè)實(shí)施例中使用的由主機(jī)系統(tǒng)利用的主機(jī)存儲(chǔ)器 的內(nèi)容的示例性實(shí)現(xiàn)。例如,主機(jī)存儲(chǔ)器可以存儲(chǔ)操作系統(tǒng)(OS) 250、堆棧252、 設(shè)備驅(qū)動(dòng)程序254、目的地緩沖器256和應(yīng)用程序258。例如,主機(jī)系統(tǒng)至少可以 接收來(lái)自網(wǎng)絡(luò)接口的網(wǎng)絡(luò)協(xié)議單元和元數(shù)據(jù)。元數(shù)據(jù)可以指示對(duì)網(wǎng)絡(luò)協(xié)議單元的一 部分內(nèi)容所執(zhí)行的CRC確認(rèn)操作提供的是有效還是無(wú)效的結(jié)果,其中上述內(nèi)容的 邊界是被推測(cè)性地確定的。
OS 250的合適實(shí)施例包括但不限于與LinuxTM或Microsoft Windows⑧兼容的 操作系統(tǒng)。
堆棧252至少可以對(duì)從網(wǎng)絡(luò)中接收的網(wǎng)絡(luò)協(xié)議單元和/或要傳送給網(wǎng)絡(luò)的信息 (它們都依照RDMA、 TCP/IP和/或MPA協(xié)議規(guī)范)執(zhí)行協(xié)議處理。例如,在某 些實(shí)施例中,堆棧252可以對(duì)從網(wǎng)絡(luò)中接收的網(wǎng)絡(luò)協(xié)議單元的凈荷部分執(zhí)行CRC 確認(rèn)操作。在某些實(shí)施例中,堆棧252可以被集成到OS 250中。
設(shè)備驅(qū)動(dòng)程序254可以是用于網(wǎng)絡(luò)接口的設(shè)備驅(qū)動(dòng)程序。設(shè)備驅(qū)動(dòng)程序254 至少可以協(xié)同在主機(jī)系統(tǒng)和網(wǎng)絡(luò)接口之間的網(wǎng)絡(luò)協(xié)議單元(或其部分)以及其他信 息的傳輸。
目的地緩沖器256可以存儲(chǔ)由網(wǎng)絡(luò)接口例如從網(wǎng)絡(luò)中接收的數(shù)據(jù)(例如,網(wǎng) 絡(luò)協(xié)議單元(或其部分))。
應(yīng)用程序258可以是至少利用接收自網(wǎng)絡(luò)或向網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)的一個(gè)或多個(gè) 邏輯。應(yīng)用程序包括但不限于,例如web瀏覽器、輸入/輸出過(guò)濾器、電子郵件服
務(wù)應(yīng)用程序、文件服務(wù)應(yīng)用程序或數(shù)據(jù)庫(kù)應(yīng)用程序。
圖3描繪了能夠由網(wǎng)絡(luò)接口或其他邏輯使用以對(duì)一部分內(nèi)容執(zhí)行CRC確認(rèn)的 進(jìn)程的流程圖,該內(nèi)容的邊界被推測(cè)性地確定,并且該內(nèi)容被定位在網(wǎng)絡(luò)協(xié)議單元 內(nèi)。例如,該內(nèi)容可包括MPA幀(或其他信息)。圖3的進(jìn)程300可以由能夠從
網(wǎng)絡(luò)中接收網(wǎng)絡(luò)協(xié)議單元并向另一計(jì)算邏輯(諸如,主機(jī)系統(tǒng))提供網(wǎng)絡(luò)協(xié)議單元 的任何計(jì)算邏輯來(lái)執(zhí)行。
在框302,進(jìn)程300可以初始化CRC累加器值。CRC累加器值可以表示在對(duì) 其邊界被推測(cè)性地確定的一部分內(nèi)容執(zhí)行CRC之前的CRC的值。例如,被初始化 的累加器值可以是表示依照MPA規(guī)范的初始化值的OxFFFFFFFF,雖然也可以在 初始化時(shí)使用其他的值。
在框304,進(jìn)程300可以定位網(wǎng)絡(luò)協(xié)議單元的凈荷部分的邊界。例如,網(wǎng)絡(luò)協(xié) 議單元可以包括TCP報(bào)頭和TCP凈荷部分,并且該凈荷部分可以是TCP凈荷部分。 在框304,進(jìn)程300可以確定TCP報(bào)頭的大小并且基于該確定,定位TCP凈荷部 分的開(kāi)始。例如,在某些實(shí)施例中,TCP報(bào)頭的長(zhǎng)度可以在四十(40)至六十(60)字 節(jié)之間變化,雖然也可以使用其他的大小。例如,TCP報(bào)頭內(nèi)的一個(gè)或多個(gè)比特 可以指示TCP報(bào)頭的長(zhǎng)度?;谠撝甘荆梢源_定該TCP報(bào)頭的長(zhǎng)度以及TCP 凈荷的開(kāi)始。例如,從所確定的TCP凈荷的開(kāi)始到網(wǎng)絡(luò)協(xié)議單元的結(jié)尾的那一部 分可以是TCP凈荷。
在框306,進(jìn)程300可以對(duì)來(lái)自網(wǎng)絡(luò)協(xié)議單元的凈荷部分的帶有被推測(cè)的邊界 的一部分內(nèi)容執(zhí)行CRC計(jì)算。例如,在某些實(shí)施例中,進(jìn)程300可以推測(cè)包括 MPA長(zhǎng)度字段、MPA幀內(nèi)容、以及MPA CRC字段的組合在內(nèi)的MPA幀的邊界 與TCP凈荷的邊界相同。在某些實(shí)施例中,對(duì)其執(zhí)行CRC計(jì)算的該部分內(nèi)容可以 僅僅是MPA CRC字段、MPA長(zhǎng)度字段和MPA幀內(nèi)容的組合、或者整個(gè)MPA幀。 例如,MPA長(zhǎng)度字段和MPA CRC字段可以在MPA幀內(nèi)具有已知的大小和位置。 例如,MPACRC字段可以是MPA幀的最后四個(gè)字節(jié)。
CRC計(jì)算的結(jié)果可以在CRC累加器內(nèi)提供。CRC計(jì)算可以按字節(jié)或字執(zhí)行。 例如, 一種合適的CRC計(jì)算方案例如可以在MPA規(guī)范中描述,雖然也可以使用 其他的CRC計(jì)算方案。
在框308,進(jìn)程300可以確定對(duì)其邊界被推測(cè)的部分內(nèi)容的CRC計(jì)算是否成 功。例如,當(dāng)在CRC計(jì)算中使用MPA CRC字段或整個(gè)MPA幀(包括MPA CRC
字段)時(shí),CRC計(jì)算的結(jié)果可以指示有效CRC是與期望質(zhì)量相匹配的結(jié)果。例如, 當(dāng)在CRC計(jì)算中使用了將MPA CRC字段排除在外的MPA幀時(shí),CRC計(jì)算的結(jié) 果在該結(jié)果與被排除的MPA CRC字段相匹配的情況下可以指示有效CRC。如果 得到有效CRC,則框308之后是框310。如果沒(méi)有得到有效CRC,則則框308之 后是框312。在框312,網(wǎng)絡(luò)協(xié)議單元狀態(tài)可以被指示為CRC無(wú)效。在框310和 312之后則是框314。
在框314,進(jìn)程300可以將網(wǎng)絡(luò)協(xié)議單元狀態(tài)傳送給主機(jī)。例如,可以將帶有 與網(wǎng)絡(luò)協(xié)議單元相關(guān)聯(lián)的元數(shù)據(jù)的網(wǎng)絡(luò)協(xié)議單元傳送給主機(jī)。元數(shù)據(jù)可以指示對(duì)其 邊界被推測(cè)性地確定的部分內(nèi)容執(zhí)行的CRC是有效還是無(wú)效。
圖4描繪了可由協(xié)議處理堆棧用來(lái)對(duì)先前可能己經(jīng)對(duì)其進(jìn)行過(guò)CRC確認(rèn)的網(wǎng) 絡(luò)協(xié)議單元的一部分內(nèi)容執(zhí)行CRC確認(rèn)的進(jìn)程的流程圖。例如,進(jìn)程400可以由 堆棧152利用,雖然其他邏輯也可以利用進(jìn)程400。圖4的進(jìn)程400可以由任何計(jì) 算邏輯執(zhí)行。
在框402,進(jìn)程400可以確定網(wǎng)絡(luò)協(xié)議單元的凈荷部分的內(nèi)容的邊界被正確推 測(cè)。例如,網(wǎng)絡(luò)接口或其他計(jì)算邏輯可能已經(jīng)推測(cè)了網(wǎng)絡(luò)協(xié)議單元的凈荷部分的內(nèi) 容的邊界。例如,凈荷部分的內(nèi)容可以與一MPA幀相對(duì)應(yīng)。
例如,框402可以確定網(wǎng)絡(luò)協(xié)議單元的凈荷部分的內(nèi)容的邊界。例如,當(dāng)該 內(nèi)容是MPA幀時(shí),框402可以確定(1) TCP凈荷的開(kāi)頭是否與MPA幀的開(kāi)頭相 匹配,以及(2) TCP凈荷的結(jié)尾是否與該MPA幀的結(jié)尾相匹配。如果(1)或(2) 中的任一個(gè)為假,則內(nèi)容的邊界沒(méi)有被正確地推測(cè),并且在框402之后是框404。 如果(1)和(2)都為真,則內(nèi)容的邊界被正確地推測(cè),并且在框402之后是框 406。例如,框406可以跟隨內(nèi)容邊界被正確推測(cè)的條件。
例如,在框402,進(jìn)程400可以根據(jù)TCP/IP規(guī)范來(lái)計(jì)算TCP凈荷的邊界。例 如,在框402,進(jìn)程400可以根據(jù)MPA規(guī)范和MPA狀態(tài)信息來(lái)計(jì)算MPA幀的邊 界。MPA狀態(tài)信息可以包括與在其中傳輸網(wǎng)絡(luò)協(xié)議單元的會(huì)話有關(guān)的信息。例如, MPA狀態(tài)可以指示MPA幀的TCP序列號(hào)以及MPA幀的幀邊界。例如,會(huì)話可 以與RDMA連接相對(duì)應(yīng)。例如,MPA狀態(tài)可以根據(jù)MPA規(guī)范來(lái)計(jì)算。
例如,TCP凈荷可能在發(fā)送者發(fā)送未對(duì)準(zhǔn)(或被壓縮的)MPA幀或者在向網(wǎng) 絡(luò)接口轉(zhuǎn)發(fā)該分組之前執(zhí)行了重新分段由此導(dǎo)致MPA幀對(duì)準(zhǔn)喪失的情況下不與 MPA幀的邊界相匹配。
在框404,進(jìn)程400可以對(duì)網(wǎng)絡(luò)協(xié)議單元的凈荷內(nèi)的內(nèi)容的一部分正確邊界計(jì)
算CRC。例如,MPA幀的正確邊界可能己經(jīng)在框402被確定。例如,CRC確認(rèn)可 以包括使用與在圖3的框302中所描述的技術(shù)相類似的CRC計(jì)算技術(shù)。
在框406,進(jìn)程400可以確定對(duì)所關(guān)注內(nèi)容應(yīng)用的CRC是否與有效CRC相對(duì) 應(yīng)。所關(guān)注內(nèi)容可以與執(zhí)行了 CRC的那部分內(nèi)容相對(duì)應(yīng)。例如,如果主機(jī)確定 MPA幀的邊界與TCP凈荷的邊界相對(duì)應(yīng)(正像在框402所確定的那樣),則對(duì)被 正確推測(cè)的邊界的有效CRC的指示可以與有關(guān)該內(nèi)容的有效CRC相對(duì)應(yīng)。例如, 對(duì)于在框404執(zhí)行的CRC計(jì)算而言,有關(guān)該關(guān)注內(nèi)容的有效CRC可以按在框308 所描述的方式相類似的方式來(lái)確定。如果有關(guān)該關(guān)注內(nèi)容的CRC無(wú)效,則框406 之后是框408。如果有關(guān)該關(guān)注內(nèi)容的CRC有效,則框406之后是框410。
在框408,進(jìn)程400可以對(duì)該內(nèi)容執(zhí)行差錯(cuò)恢復(fù)。例如,可以對(duì)MPA幀執(zhí)行 差錯(cuò)恢復(fù)。例如,差錯(cuò)恢復(fù)可以包括根據(jù)MPA規(guī)范的MPA差錯(cuò)恢復(fù)方案。在框 410,進(jìn)程400可以提供CRC有效內(nèi)容以供應(yīng)用程序或其他協(xié)議處理層使用。例如, 內(nèi)容可以包括MPA幀。
本發(fā)明的實(shí)施例可以被實(shí)現(xiàn)為以下各項(xiàng)中的任一項(xiàng)或組合使用主板互連的 微芯片或集成電路、硬連線邏輯、由存儲(chǔ)器設(shè)備存儲(chǔ)并由處理器執(zhí)行的軟件、固件、 專用集成電路(ASIC)、和/或現(xiàn)場(chǎng)可編程門陣列(FPGA)。
附圖和以上描述給出了本發(fā)明的示例。雖然被描繪成多個(gè)離散的功能項(xiàng),但 是本領(lǐng)域普通技術(shù)人員應(yīng)該認(rèn)識(shí)到,這些元素的一個(gè)或多個(gè)也可以被組合成單個(gè)功 能元素??蛇x地,某些元素也可以被分成多個(gè)功能元素。來(lái)自一個(gè)實(shí)施例的元素可 被添加至另一實(shí)施例。例如,在此描述的各進(jìn)程的次序可以被改變并且不限于在此 描述的方式。然而本發(fā)明的范圍決不受到這些特定示例的限制。無(wú)論是在說(shuō)明書中 顯式還是隱式給出的各種變化,諸如結(jié)構(gòu)、尺寸和使用材料上的差異都是可能的。 本發(fā)明的范圍至少與所附權(quán)利要求給出的一樣寬。
權(quán)利要求
1.一種方法,包括在第一計(jì)算邏輯處接收來(lái)自網(wǎng)絡(luò)的網(wǎng)絡(luò)協(xié)議單元;在所述第一計(jì)算邏輯處,推測(cè)所述網(wǎng)絡(luò)協(xié)議單元的內(nèi)容的邊界;在所述第一計(jì)算邏輯處,對(duì)具有所推測(cè)的邊界的一部分所述內(nèi)容執(zhí)行循環(huán)冗余校驗(yàn)(CRC)確認(rèn);以及在所述第一計(jì)算邏輯處,提供所述內(nèi)容的所述CRC是有效還是無(wú)效的指示。
2. 如權(quán)利要求l所述的方法,其特征在于,所述推測(cè)邊界包括將所述內(nèi)容的邊界設(shè)置為所述網(wǎng)絡(luò)協(xié)議單元的凈荷部分的邊界。
3. 如權(quán)利要求1所述的方法,其特征在于,所述內(nèi)容的所述部分包括MPA CRC字段。
4. 如權(quán)利要求1所述的方法,其特征在于,所述內(nèi)容的所述部分包括MPA 長(zhǎng)度字段和MPA幀內(nèi)容的組合。
5. 如權(quán)利要求l所述的方法,其特征在于,還包括在第二計(jì)算邏輯處,接收來(lái)自所述第一計(jì)算邏輯的所述網(wǎng)絡(luò)協(xié)議單元和所述 指示;以及在所述第二計(jì)算邏輯處,響應(yīng)于所推測(cè)的邊界被正確確定以及所述CRC有效 的指示來(lái)選擇性地提供所述內(nèi)容。
6. 如權(quán)利要求1所述的方法,其特征在于,還包括在第二計(jì)算邏輯處,接收來(lái)自所述第一計(jì)算邏輯的所述網(wǎng)絡(luò)協(xié)議單元和所述 指示;以及在所述第二計(jì)算邏輯處,響應(yīng)于所述推測(cè)性邊界被正確確定以及所述CRC無(wú) 效的指示來(lái)對(duì)所述內(nèi)容選擇性地執(zhí)行MPA差錯(cuò)恢復(fù)。
7. 如權(quán)利要求l所述的方法,其特征在于,還包括在第二計(jì)算邏輯處,接收來(lái)自所述第一計(jì)算邏輯的所述網(wǎng)絡(luò)協(xié)議單元和所述 指示;以及在所述第二計(jì)算邏輯處,響應(yīng)于所述內(nèi)容的邊界被不正確地推測(cè)來(lái)使用所述 內(nèi)容的正確邊界選擇性地執(zhí)行CRC確認(rèn)。
8. —種方法,包括接收網(wǎng)絡(luò)協(xié)議單元以及對(duì)帶有被推測(cè)的邊界的內(nèi)容的循環(huán)冗余校驗(yàn)(CRC) 確認(rèn)是有效還是無(wú)效的指示;以及確定所述內(nèi)容的邊界是否被正確地推測(cè)。
9. 如權(quán)利要求8所述的方法,其特征在于,所推測(cè)的邊界包括所述網(wǎng)絡(luò)協(xié)議 單元的凈荷部分的邊界。
10. 如權(quán)利要求8所述的方法,其特征在于,還包括響應(yīng)于所述內(nèi)容的邊界被不正確地推測(cè)來(lái)使用所述內(nèi)容的正確邊界選擇性地 執(zhí)行另一CRC確認(rèn)。
11. 如權(quán)利要求8所述的方法,其特征在于,還包括響應(yīng)于所推測(cè)的邊界被正確確定以及所述CRC有效的所述指示來(lái)選擇性地提 供所述內(nèi)容。
12. 如權(quán)利要求8所述的方法,其特征在于,還包括 響應(yīng)于所述CRC無(wú)效的所述指示來(lái)選擇性地執(zhí)行MPA差錯(cuò)恢復(fù)。
13. —種包括其上存儲(chǔ)的指令的計(jì)算機(jī)可讀介質(zhì),所述指令在被機(jī)器執(zhí)行時(shí) 會(huì)使得所述機(jī)器在第一計(jì)算邏輯處,接收來(lái)自網(wǎng)絡(luò)的網(wǎng)絡(luò)協(xié)議單元; 在所述第一計(jì)算邏輯處,推測(cè)所述網(wǎng)絡(luò)協(xié)議單元的內(nèi)容的邊界; 在所述第一計(jì)算邏輯處,對(duì)具有所推測(cè)的邊界的一部分所述內(nèi)容執(zhí)行循環(huán)冗 余校驗(yàn)(CRC)確認(rèn);以及在所述第一計(jì)算邏輯處,提供所述內(nèi)容的所述CRC是有效還是無(wú)效的指示。
14. 如權(quán)利要求13所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述用于推測(cè)的指令包括用于執(zhí)行以下動(dòng)作的指令將所述內(nèi)容的邊界設(shè)置為所述網(wǎng)絡(luò)協(xié)議單元的凈荷部分的邊界。
15. 如權(quán)利要求13所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述內(nèi)容的所述部 分包括MPA CRC字段。
16. 如權(quán)利要求13所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述內(nèi)容的所述部 分包括MPA長(zhǎng)度字段和MPA幀內(nèi)容的組合。
17. —種包括其上存儲(chǔ)的指令的計(jì)算機(jī)可讀介質(zhì),所述指令在被機(jī)器執(zhí)行時(shí) 會(huì)使得所述機(jī)器接收網(wǎng)絡(luò)協(xié)議單元以及對(duì)帶有被推測(cè)的邊界的內(nèi)容的循環(huán)冗余校驗(yàn)(CRC) 確認(rèn)是有效還是無(wú)效的指示;以及確定所述內(nèi)容的邊界是否被正確地推測(cè)。
18. 如權(quán)利要求17所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所推測(cè)的邊界包括 所述網(wǎng)絡(luò)協(xié)議單元的凈荷部分的邊界。
19. 如權(quán)利要求17所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括其上存儲(chǔ)的指令,所述指令在被機(jī)器執(zhí)行時(shí)會(huì)使得所述機(jī)器響應(yīng)于所述內(nèi)容的邊界被不正確地推測(cè)來(lái)使用所述內(nèi)容的正確邊界選擇性地執(zhí)行另一CRC確認(rèn)。
20. 如權(quán)利要求17所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括其上存儲(chǔ)的指令,所述指令在被機(jī)器執(zhí)行時(shí)會(huì)使得所述機(jī)器響應(yīng)于所推測(cè)的邊界被正確確定以及所述CRC有效的所述指示來(lái)選擇性地提 供所述內(nèi)容。
21. 如權(quán)利要求17所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括其上存儲(chǔ)的指令,所述指令在被機(jī)器執(zhí)行時(shí)會(huì)使得所述機(jī)器響應(yīng)于所述CRC無(wú)效的所述指示來(lái)選擇性地執(zhí)行MPA差錯(cuò)恢復(fù)。
22. —種系統(tǒng),包括 包括處理器和存儲(chǔ)器設(shè)備的主機(jī)系統(tǒng); 總線;以及把所述主機(jī)系統(tǒng)通信耦合至所述總線的芯片組,其中所述芯片組包括網(wǎng)絡(luò)接口,并且其中所述網(wǎng)絡(luò)接口包括用于執(zhí)行以下動(dòng) 作的邏輯接收來(lái)自網(wǎng)絡(luò)的網(wǎng)絡(luò)協(xié)議單元; 推測(cè)所述網(wǎng)絡(luò)協(xié)議單元的內(nèi)容的邊界;對(duì)具有所推測(cè)邊界的一部分所述內(nèi)容執(zhí)行循環(huán)冗余校驗(yàn)(CRC)確認(rèn);以及提供所述內(nèi)容的CRC是有效還是無(wú)效的指示。
23,如權(quán)利要求22所述的系統(tǒng),其特征在于,所述主機(jī)系統(tǒng)包括用于執(zhí)行以 下動(dòng)作的邏輯接收所述網(wǎng)絡(luò)協(xié)議單元以及對(duì)帶有所推測(cè)邊界的內(nèi)容的所述CRC確認(rèn)是有效 還是無(wú)效的指示;以及確定所述內(nèi)容的邊界是否被正確地推測(cè)。
全文摘要
推測(cè)網(wǎng)絡(luò)協(xié)議單元的凈荷的內(nèi)容邊界并對(duì)該內(nèi)容執(zhí)行循環(huán)冗余校驗(yàn)(CRC)的技術(shù)。對(duì)該內(nèi)容的CRC確認(rèn)可以在諸如網(wǎng)絡(luò)接口等計(jì)算邏輯內(nèi)執(zhí)行??梢允沟镁W(wǎng)絡(luò)協(xié)議單元對(duì)諸如主機(jī)系統(tǒng)等其他計(jì)算邏輯可用。該主機(jī)系統(tǒng)可以確定是否對(duì)該網(wǎng)絡(luò)協(xié)議單元執(zhí)行另一CRC確認(rèn)操作。
文檔編號(hào)H04L1/00GK101208892SQ200680019719
公開(kāi)日2008年6月25日 申請(qǐng)日期2006年4月28日 優(yōu)先權(quán)日2005年5月3日
發(fā)明者F·貝瑞, S·金 申請(qǐng)人:英特爾公司