專利名稱:處理網絡數(shù)據(jù)的方法和系統(tǒng)的制作方法
技術領域:
本發(fā)明的一些實施例涉及網絡數(shù)據(jù)的處理,更具體地說,本發(fā)明的一些實施例涉及一種集成以太網、TCP、ISCSI、RDMA和網絡應用程序加速支持的系統(tǒng)級芯片設備的方法和系統(tǒng)。
背景技術:
國際標準化組織建立了開放式系統(tǒng)互連(OSI)參考模型。該OSI參考模型提供了一種網絡設計架構,該架構可使不同提供商的設備能夠相互通信。更具體地說,OSI參考模型將通信流程按分層順序分成了七個獨立、不同而又相互關聯(lián)的類別。層1是物理層。它以物理方式發(fā)送數(shù)據(jù)。層2是數(shù)據(jù)鏈路層。它與操作通信鏈路的規(guī)程和協(xié)議相關,包括消息錯誤的檢測和糾錯。層3是網絡層。它決定數(shù)據(jù)是如何在計算機間傳輸?shù)摹?是傳輸層,定義了信息交換的規(guī)則,并管理消息在網絡內部和網絡之間端到端傳送,包括錯誤恢復和流量控制。層5是會話層。它處理對話管理并控制由層4提供的基本通信設備的使用。層6是表示層。它與數(shù)據(jù)格式化、代碼的轉換和壓縮/解壓縮相關。層7是應用層,它處理與特定應用服務,如文件傳輸、遠程文件訪問和虛擬終端相關的功能。
各種電子設備,如計算機、無線通信設備和個人數(shù)字助理等,為了能相互通信可能訪問各種網絡。例如,這些設備為了方便通過因特網通信,可能使用傳輸控制協(xié)議/因特網協(xié)議(TCP/IP)。TCP允許兩個應用建立連接并交換數(shù)據(jù)流。TCP能保證數(shù)據(jù)的傳送,同時也可保證這些數(shù)據(jù)包能按順序傳送到TCP以上的各層。與諸如用戶數(shù)據(jù)報協(xié)議(UDP)等協(xié)議相比,TCP可用于將數(shù)據(jù)包按與發(fā)送時相同的順序傳送到最終目的地,且不會出現(xiàn)包丟失的情況。TCP同時還可區(qū)分不同應用程序的數(shù)據(jù),例如,同一計算機上的Web服務器和郵件服務器。
相應地,TCP協(xié)議經常用于因特網通信。執(zhí)行OSI棧和TCP/IP處理的傳統(tǒng)解決方案可能要使用更快更強的處理器。例如,研究表明,TCP輸入/輸出處理的普通路徑大約需要300條指令。在最大速率條件下,對于10Gbit/s連接而言,每秒大約可接收一千五百萬條的最小包長的數(shù)據(jù)包。因此,輸入路徑的處理大約需要每秒4,500百萬條指令(MIPS)。當還需要添加類似數(shù)目的MIPS用于處理輸出連接時,每秒的總指令數(shù)可能接近于一個新式處理器的極限。例如,高級奔4處理器可有大概10,000MIPS的處理能力。但是,在處理器可能要處理整個協(xié)議棧的設計中,該處理器可能成為瓶頸。
主機總線適配器(host bus adaptors,HBA)或網絡接口卡(network interfacecard,NIC)的現(xiàn)有設計很大程度上依賴于嵌入式處理器中運行的固件。這些設計的共有特性就是都依賴嵌入式處理器和固件來解決NIC級的網絡堆棧處理。為了適應日益增長的網絡速度,傳統(tǒng)NIC的自然解決方法是使用更多的處理器,這在增加處理速度的同時也增加了實施成本。
通過比較本發(fā)明后續(xù)將要結合附圖介紹的系統(tǒng),傳統(tǒng)技術的其它局限性和弊端對于本領域的普通技術人員來說是顯而易見的。
發(fā)明內容
本發(fā)明的至少一副附圖以及權利要求中示出和/或描述了一種用于集成以太網、TCP、ISCSI、RDMA和網絡應用程序加速支持的片上系統(tǒng)(SoC)設備的方法和/或系統(tǒng)。
根據(jù)本發(fā)明的一方面,提供一種處理網絡數(shù)據(jù)的方法,所述方法包括將多個網絡連接中至少一個網絡連接的至少一部分接收數(shù)據(jù)存儲在處理多種協(xié)議的芯片上;配置所述芯片以基于與所述接收數(shù)據(jù)相關的所述多種協(xié)議中的一種來處理所述接收數(shù)據(jù);在所述芯片內,通過所述經配置的芯片處理所述多個網絡連接中至少一個網絡連接的接收數(shù)據(jù)。
優(yōu)選地,所述多種網絡協(xié)議中的一種包括以下之一以太網協(xié)議、傳輸控制協(xié)議(TCP)、因特網協(xié)議(IP)、因特網小型計算機系統(tǒng)接口(iSCSI)協(xié)議和遠程直接存儲訪問(RDMA)協(xié)議。
優(yōu)選地,所述至少一個網絡連接的所述已存儲的接收數(shù)據(jù)中的至少一部分包括上下文信息。
優(yōu)選地,所述方法還包括在所述芯片中處理所述接收數(shù)據(jù)之前,驗證所述接收數(shù)據(jù)。
優(yōu)選地,所述方法還包括在所述芯片中基于與所述至少一個網絡連接相關的協(xié)議提取所述接收數(shù)據(jù)的至少一個報頭。
優(yōu)選地,所述提取的至少一個報頭包括以下之一因特網協(xié)議(IP)報頭和傳輸控制協(xié)議(TCP)報頭。
優(yōu)選地,所述方法還包括如果所述至少一個網絡連接的所述接收數(shù)據(jù)使用傳輸控制協(xié)議(TCP),則在所述芯片內基于所述接收數(shù)據(jù)內對應的TCP報頭確定TCP會話標識。
優(yōu)選地,所述方法還包括在所述芯片內基于所述確定的TCP會話標識獲取所述接收數(shù)據(jù)的TCP上下文信息。
優(yōu)選地,所述方法還包括在所述芯片中基于所述獲取的TCP上下文信息處理所述接收數(shù)據(jù)內的至少一個TCP數(shù)據(jù)包。
優(yōu)選地,所述方法還包括如果所述至少一個網絡連接的所述接收數(shù)據(jù)基于RDMA協(xié)議,則在所述芯片內移除所述接收數(shù)據(jù)的至少一個RDMA標記。
優(yōu)選地,所述芯片包括多功能主機總線適配器芯片。
根據(jù)本發(fā)明的一方面,提供一種處理網絡數(shù)據(jù)的系統(tǒng),所述系統(tǒng)包括存儲多個網絡連接中的至少一個網絡連接的至少一部分接收數(shù)據(jù)的芯片,其中,所述芯片處理多種協(xié)議,并且所述芯片進行配置后基于與所述接收數(shù)據(jù)相關的多種協(xié)議中的一種來處理所述接收數(shù)據(jù);且所述芯片處理所述至少一個網絡連接的接收數(shù)據(jù)。
優(yōu)選地,所述多種協(xié)議中的一種包括以下之一以太網協(xié)議、傳輸控制協(xié)議(TCP)、因特網協(xié)議(IP)、因特網小型計算機系統(tǒng)接口(iSCSI)協(xié)議、遠程直接存儲訪問(RDMA)協(xié)議。
優(yōu)選地,所述至少一個網絡連接的所述已存儲的接收數(shù)據(jù)中的至少一部分包括上下文信息。
優(yōu)選地,所述芯片在處理所述接收數(shù)據(jù)之前,在所述芯片內驗證所述接收數(shù)據(jù)。
優(yōu)選地,所述芯片基于與所述至少一個網絡連接相關的協(xié)議提取所述接收數(shù)據(jù)的至少一個報頭。
優(yōu)選地,所述提取的至少一個報頭包括以下之一因特網協(xié)議(IP)報頭和傳輸控制協(xié)議(TCP)報頭。
優(yōu)選地,如果所述至少一個網絡連接的所述接收數(shù)據(jù)使用傳輸控制協(xié)議(TCP),所述芯片基于所述接收數(shù)據(jù)內對應的TCP報頭確定TCP會話標識。
優(yōu)選地,所述芯片基于所述確定的TCP會話標識獲取所述接收數(shù)據(jù)的TCP上下文信息。
優(yōu)選地,所述芯片基于所述獲取的TCP上下文信息處理所述接收數(shù)據(jù)內的至少一個TCP數(shù)據(jù)包。
優(yōu)選地,如果所述至少一個網絡連接的所述接收數(shù)據(jù)基于RDMA協(xié)議,所述芯片移除所述接收數(shù)據(jù)的至少一個RDMA標記。
優(yōu)選地,所述芯片包括多功能主機總線適配器芯片。
優(yōu)選地,如果在所述芯片內處理的數(shù)據(jù)是基于RDMA協(xié)議,所述芯片將至少一個RDMA標記插入到所述數(shù)據(jù)內。
通過以下的描述以及附圖,將更好地理解本發(fā)明的各種優(yōu)點、目的和顯著特征,以及具體實施例的各種細節(jié)。
下面將結合附圖及實施例對本發(fā)明作進一步說明,附圖中圖1A是結合本發(fā)明一個實施例使用的一個通信系統(tǒng)的方框示意圖;圖1B是根據(jù)本發(fā)明的一個實施例的多功能主機總線適配器的各種處理路徑的方框示意圖;圖2是根據(jù)本發(fā)明的一個實施例的多功能主機總線適配器的方框示意圖;圖3A是根據(jù)本發(fā)明一個實施例的RDMA分段的示意圖;圖3B是根據(jù)本發(fā)明一個實施例的RDMA處理的示意圖;圖3C是根據(jù)本發(fā)明一個實施例使用多功能主機總線適配器的存儲子系統(tǒng)的方框示意圖;圖3D是根據(jù)本發(fā)明一個實施例處理網絡數(shù)據(jù)的方法的流程圖。
具體實施例方式
本發(fā)明的一些實施例涉及使用片上系統(tǒng)(system-on-a-chip,SOC)設備處理網絡數(shù)據(jù)的方法和系統(tǒng),這種SOC設備集成有以太網、TCP、iSCSI、RDMA和網絡應用加速的支持。所述SOC設備包括用于處理多種協(xié)議的多功能主機總線適配器(MHBA)芯片。所述MHBA芯片可存儲多個網絡連接中的至少一個網絡連接的接收數(shù)據(jù);所述MHBA芯片可進行配置以基于與所述接收數(shù)據(jù)相關聯(lián)的所述多種協(xié)議中的一種處理所述接收數(shù)據(jù)。例如,所述MHBA芯片可處理與一種協(xié)議關聯(lián)的數(shù)據(jù),比如以太網協(xié)議、傳輸控制協(xié)議(TCP)、因特網協(xié)議(IP)、因特網小型計算機系統(tǒng)接口(iSCSI)協(xié)議、遠程直接存儲器存取(RDMA)協(xié)議。這樣,與這些協(xié)議相關的數(shù)據(jù)處理從主機處理器轉移到MHBA芯片上,從而提高了主機處理器的效率并顯著地降低了實施成本。
圖1A是結合本發(fā)明的一個實施例使用的通信系統(tǒng)的方框示意圖。參考圖1A,圖1A中示出了主機100、101,以及網絡115。主機101包括中央處理器(CPU)102、存儲器接口(MCH)104、存儲器模塊106、輸入/輸出(I/O)接口(ICH)108和多功能主機總線適配器(MHBA)芯片110。
存儲器接口(MCH)104可包括合適的電路和/或邏輯,用于在存儲器模塊106與其他設備如CPU 102之間傳輸數(shù)據(jù)。輸入/輸出接口(ICH)108可包括合適的電路和/或邏輯,用于在IO設備之間、IO設備與存儲器模塊之間、或者IO設備與CPU 102之間傳輸數(shù)據(jù)。MHBA芯片110可包括合適的電路、邏輯和/或編碼,用于為任何的通信協(xié)議傳輸和接收數(shù)據(jù)。MHBA芯片110可使用RDMA主機總線適配器(HBA)功能、iSCSI HBA功能、以太網網絡接口卡(NIC)功能,和/或TCP/IP卸載(offload)功能。在這點上,MHBA芯片110可用于處理以太網協(xié)議數(shù)據(jù)、TCP數(shù)據(jù)、IP數(shù)據(jù)、iSCSI數(shù)據(jù)和RDMA數(shù)據(jù)。處理的量可預先設定和/或根據(jù)實際情況決定。在一些實施例中,MHBA芯片110可為單芯片,使用片載存儲器和/或片外存儲器來處理任何一種通信協(xié)議的數(shù)據(jù)。
工作時,主機100和主機101可通過網絡115互相通信。網絡115可以是以太網。因此,主機100和/或主機101可通過網絡接口卡如MHBA芯片110發(fā)送和/或接收數(shù)據(jù)包。例如,CPU 102可從存儲器模塊106上取得指令并執(zhí)行這些指令。CPU 102還能將數(shù)據(jù)存儲到存儲器模塊106上和/或從存儲器模塊106上取回數(shù)據(jù)。所述指令的執(zhí)行可包括與其他部件傳輸數(shù)據(jù)。例如,在CPU 102上運行的軟件應用程序可將數(shù)據(jù)傳輸?shù)骄W絡如網絡115。所述軟件應用程序的一個例子是電子郵件應用程序,其在主機100和主機101之間發(fā)送電子郵件。
因此,主機101內的CPU 102可處理電子郵件中的數(shù)據(jù)并將處理后的數(shù)據(jù)傳遞給MHBA芯片110。這可由CPU 102直接發(fā)送給MHBA芯片110。替換的,也可以先將數(shù)據(jù)存儲在存儲器模塊106上,然后通過直接存儲器存取(DMA)進程等將所存儲的數(shù)據(jù)傳遞給MHBA芯片110。DMA需要的各種參數(shù),如源起始地址、將要傳輸?shù)淖止?jié)數(shù)、目標起始地址等可由CPU 102寫入存儲器接口(MCH)104。存儲器接口(MCH)104一旦接到開始命令,就開始DMA進程。在這點上,存儲器接口(MCH)104充當DMA控制器。
NIC 110還處理電子郵件數(shù)據(jù),以適合于在NIC 110所連接的網絡115上傳輸?shù)母袷綄㈦娮余]件數(shù)據(jù)以數(shù)據(jù)包形式傳輸。類似地,NIC 110從所連接的網絡115上接收數(shù)據(jù)包。NIC 100處理所接收的數(shù)據(jù)包中的數(shù)據(jù),并將處理后的數(shù)據(jù)傳輸給更高協(xié)議的進程,進一步處理所述數(shù)據(jù)。處理后的數(shù)據(jù)可通過IO接口(ICH)108和存儲器接口(MCH)104存儲在存儲器模塊106中。在CPU 102上運行的電子郵件應用程序還可進一步處理存儲器模塊106中的數(shù)據(jù),這些數(shù)據(jù)最終以文本電子郵件消息的形式顯示給主機101的用戶。
圖1B是根據(jù)本發(fā)明一個實施例的多功能主機總線適配器的各種處理路徑的示意圖。參考圖1B,圖1B中示出了集成在芯片中的硬件設備,如多功能主機總線適配器(MHBA)芯片106b,MHBA芯片106b可用于處理來自與應用程序或用戶級102b的一個或多個連接的數(shù)據(jù)。用戶級可通過內核或軟件級104b與MHBA芯片106b通信。用戶級102b可使用一個或多個RDMA應用程序108b和/或套接應用程序110b。內核級104b可使用那些用于實現(xiàn)系統(tǒng)呼叫接口112b、文件系統(tǒng)處理114b、小型計算機系統(tǒng)接口處理(SCSI)116b、因特網SCSI處理(iSCSI)120b、RDMA動詞庫(verb library)處理124b、TCP卸載處理126b、TCP/IP處理128b和網絡設備驅動130b等的軟件。MHBA106b可包括消息接發(fā)與DMA接口(DMA IF)132b、RDMA處理模塊134b、TCP卸載處理模塊136b、以太網處理模塊138b、TCP卸載引擎140b和收發(fā)器(Tx/Rx)接口142b。
在本發(fā)明的一個實施例中,MHBA芯片106可用于處理來自本地(native)的TCP/IP或以太網堆棧、TCP卸載堆棧和/或RDMA堆棧的數(shù)據(jù)。以太網堆棧處理、TCP卸載處理和RDMA處理在圖1B中分別用路徑1、2和3表示。
以太網處理路徑,即路徑1,可被現(xiàn)有的套接應用程序(socket application)110b利用以實現(xiàn)網絡輸入/輸出(I/O)操作。在處理以太網數(shù)據(jù)包時,數(shù)據(jù)包在內核級104b中可通過系統(tǒng)呼叫接口112b和開關122b從套接應用程序110b傳輸?shù)絋CP/IP處理模塊128b。接著,TCP/IP處理模塊128b將以太網數(shù)據(jù)包傳輸?shù)組HBA芯片106b上的以太網處理模塊138b。以太網數(shù)據(jù)包被處理后,所得的結果被傳輸給Rx/Tx接口(IF)142b。在本發(fā)明的一個實施例中,MHBA芯片106b可利用優(yōu)化技術在原始以太網路徑即路徑1中執(zhí)行數(shù)據(jù)優(yōu)化操作。這種數(shù)據(jù)優(yōu)化操作可包括IP報頭校驗和(checksum)、TCP校驗和和/或用戶數(shù)據(jù)報協(xié)議(user datagram protocol,UDP)校驗和的計算。附加的數(shù)據(jù)優(yōu)化操作可包括應用程序特定摘要(application specific digests)的計算,如iSCSI的32位的循環(huán)冗余校驗(CRC-32)值。其他的數(shù)據(jù)優(yōu)化操作可包括添加安全校驗和(secure checksum)到遠程程序呼叫(PRC)的呼叫和答復。
在路徑2所示的TCP卸載處理方案中,TCP數(shù)據(jù)包在內核級106b中通過系統(tǒng)呼叫接口112b和開關122b從套接應用程序110b傳輸?shù)絋CP卸載處理模塊126b。接著,TCP卸載處理模塊126b將TCP數(shù)據(jù)包傳輸給TCP卸載模塊136b。TCP卸載模塊136b將TCP數(shù)據(jù)包傳輸給TCP卸載引擎140b以進行處理。TCP數(shù)據(jù)包被處理后,所得的結果從TCP卸載引擎140b傳輸?shù)絉x/Tx接口(IF)142b。Rx/Tx IF 142b用于從MHBA芯片106b接收信息和將信息傳輸給MHBA芯片106b。MHBA芯片106b上的TCP卸載引擎(TCP offloadengine,TOE)140b用于在主機處理器有限的干預或不干預下進行網絡I/O處理。具體地,TOE 140b可用于在MHBA芯片106b內執(zhí)行與協(xié)議有關的封裝、分割、重組(re-assembly)和/或確認任務,從而減少了主機處理器的開銷(overhead)。
在路徑3所示的RDMA堆棧處理方案中,RDMA數(shù)據(jù)包通過內核級104上的一個或多個模塊從用戶級102b內的RDMA應用模塊108b傳輸?shù)絻萂HBA芯片內的RDMA處理模塊134b。例如,RDMA數(shù)據(jù)包可通過系統(tǒng)呼叫接口112b從RDMA應用模塊108b傳輸?shù)絉DMA動詞處理模塊124b。RDMA動詞處理模塊124b通過利用網絡設備驅動130b和消息接口132b將RDMA數(shù)據(jù)包傳輸給RDMA處理模塊134b。RDMA處理模塊134b可使用TCP卸載引擎140b以進一步處理RDMA數(shù)據(jù)包。RDMA數(shù)據(jù)包被處理后,所得的結果從TCP卸載引擎140b傳輸?shù)絉x/Tx接口(IF)142b。
圖2是根據(jù)本發(fā)明一個實施例的多功能主機總線適配器的示意圖。參考圖2,多功能主機總線適配器(MHBA)芯片202包括接收接口(RxIF)214、發(fā)射接口(TxIF)212、TCP引擎204、處理器接口(PIF)208、以太網引擎(ETH)206、主機接口(HIF)210和協(xié)議處理器236,...,242。MHBA芯片202還可以包括會話查找模塊216、MPT/MTT處理模塊228、節(jié)點控制器230、廉價磁盤冗余陣列(RAID)控制器248、存儲器控制器234、緩存管理器250、互連總線232。
RxIF 214包括有合適的電路、邏輯和/或代碼,可用于從任一協(xié)議類型中接收數(shù)據(jù),預處理所接收的數(shù)據(jù)并將預處理后的數(shù)據(jù)傳輸給MHBA芯片202的一個或多個模塊中以進行進一步的處理。RxIF 214可包括接收緩存描述符序列(receive buffer descriptor queue)214a、接收器媒介訪問控制(MAC)模塊(RxMAC)214b、循環(huán)冗余校驗(CRC)模塊214c、校驗和計算模塊(ChkSum)214d、報頭提取模塊(HDREX)214e和過濾模塊(Filtering)214f。RxIF 214可通過一個或多個輸入端口264接收數(shù)據(jù)包。輸入端口264中,每個輸入端口都有唯一的IP地址,例如,可用于支持千兆以太網(Gigabit Ethernet)。接收緩存描述符序列214a可包括用于保存所接收的數(shù)據(jù)包的本地緩存器列表。該列表可從緩存管理器250接收。接收器MAC模塊214b可包括合適的電路、邏輯和/或代碼,用于執(zhí)行媒介訪問控制(MAC)層處理,如所接收數(shù)據(jù)包的校驗和有效性確認。
接收器MAC模塊214b可使用校驗和計算模塊214d來計算出校驗和,并將所計算出的校驗和與所接收數(shù)據(jù)包的校驗和進行比較。校驗和不正確的數(shù)據(jù)包是被破壞了的,這種數(shù)據(jù)包會被RxIF 214丟棄。此外,接收器MAC模塊214b使用過濾模塊214f過濾接收的幀,通過檢驗所接收的幀的目標地址來濾出送往主機的幀。在這點上,接收器MAC模塊214b將當前數(shù)據(jù)包的IP地址與目的地IP地址比較。如果IP地址不匹配,就丟棄該數(shù)據(jù)包。RxIF 214可利用CRC模塊214c計算所接收的數(shù)據(jù)包的CRC。另外,RxIF 214可利用報頭提取模塊214e從所接收的數(shù)據(jù)包中提取一個或多個報頭。例如,RxIF 214可首先提取IP報頭,然后提取TCP報頭。
發(fā)射接口(TxIF)212包括有合適的電路、邏輯和/或代碼,可用于緩沖經處理的數(shù)據(jù),以及在將處理后的數(shù)據(jù)送出MHBA芯片202之前執(zhí)行MAC層的功能。此外,TxIF 212可計算出站數(shù)據(jù)包的校驗和和/或循環(huán)冗余校驗碼(CRC),以及將MPA標記插入到RDMA數(shù)據(jù)包中。TxIF 212通過一個或多個輸出端口266將處理后的數(shù)據(jù)輸出,例如,通過支持千兆以太網的端口。TxIF 212可包括多個緩存器212a、一個或多個請求序列212c和發(fā)射(Tx)MAC模塊212b。請求將處理后的數(shù)據(jù)發(fā)送的命令在請求隊列212c中排隊。TxIF 212可將處理后的數(shù)據(jù)存儲在一個或多個緩存器212a中。在本發(fā)明的一個實施例中,當數(shù)據(jù)通過例如DMA傳輸器存儲到緩存器212a內時,TxIF 212可計算發(fā)送的數(shù)據(jù)包的校驗和。
TCP引擎204可包括合適的電路、邏輯和/或代碼,用于處理TCP卸載數(shù)據(jù)包。TCP引擎可包括調度器218、TCP接收引擎(RxE)222、TCP傳輸引擎(TxE)220、計時器226和確認生成器224。調度器218可包括請求隊列218a和上下文高速緩存(Ctx Cache)218b。上下文高速緩存218b可存儲最近訪問的TCP會話的傳輸控制塊(TCB)陣列信息。
調度器218可用于接收數(shù)據(jù)包信息,如來自RxIF 214的TCP報頭信息,并在處理所接收的TCP數(shù)據(jù)包時為RxE 222提供傳輸控制塊(TCB)或TCP上下文,以及在傳輸TCP卸載數(shù)據(jù)包時為TxE 220提供傳輸控制塊(TCB)或TCP上下文。TCP信息可基于TCP會話查找的結果從上下文高速緩存218b中獲取。請求隊列218a可用于將從上下文高速緩存218b中請求TCB數(shù)據(jù)的一個或多個請求排隊。如果找不到卸載會話的上下文,調度器218還用于將所接收的TCP數(shù)據(jù)包傳遞給以太網引擎(ETH)206。
會話查找模塊216可包括合適的電路、邏輯和/或代碼,在TCP會話查找操作時,調度器218基于從RxIF 214接收的TcP報頭信息,使用所述會話查找模塊216從上下文高速緩存218b獲取TCP上下文信息。
RxE 222可包括合適的電路、邏輯和/或代碼,可以是兼容RFC的硬件引擎,用于為所接收的數(shù)據(jù)包處理TCP數(shù)據(jù)包報頭信息。TCP數(shù)據(jù)包報頭信息可從調度器218接收。經處理的數(shù)據(jù)包報頭信息被傳遞給PIF 208;更新后的TCP上下文信息可回傳給調度器218以存儲在上下文高速緩存218b中。RxE222還可產生對定時器226的請求,以設定或重新設定定時器;還可產生計算往返時間(round trip time,RTT)的請求,以處理TCP重傳和避免堵塞。此外,RxE 222可產生對確認產生器224的請求,以產生一個或多個TCP確認數(shù)據(jù)包。
TxE 220可包括合適的電路、邏輯和/或代碼,可以是兼容RFC的硬件引擎,用于為所發(fā)射的數(shù)據(jù)包處理TCP上下文信息。TxE 220可從調度器218上接收TCP上下文信息,以及使用所接收的TCP上下文信息生成發(fā)射數(shù)據(jù)包的TCP報頭。所產生的TCP報頭信息可傳輸給TxIF 212,在TxIF 212中,將TCP報頭添加到TCP有效載荷中以產生TCP發(fā)射數(shù)據(jù)包。
處理器接口(PIF)208可包括合適的電路、邏輯和/或代碼,可使用嵌入式處理器核心如協(xié)議處理器236,...,242以處理動態(tài)操作,如TCP重組和主機消息收發(fā)功能。PIF 208可包括消息隊列208a、存儲器直接訪問(DMA)命令隊列208b和接收/發(fā)送隊列(RxQ/TxQ)208c。協(xié)議處理器236,...,242可用于TCP重組和系統(tǒng)管理任務。
以太網引擎(ETH)206可包括合適的電路、邏輯和/或代碼,可用于進行非卸載數(shù)據(jù)包的處理,如不需要TCP會話處理的以太網數(shù)據(jù)包或TCP數(shù)據(jù)包。ETH 206可包括消息隊列206a、DMA命令隊列206b、RxQ/TxQ 206c和接收緩存器描述符列表(RxBufDesc)206d。
主機接口(HIF)210可包括合適的電路、邏輯和/或代碼,可為主機與MHBA芯片202通過連接256的通信提供消息收發(fā)支持。MPT/MTT處理模塊228可包括合適的電路、邏輯和/或代碼,用于處理RDMA連接的過程中進行真實的主機存儲器地址查找。MPT/MTT處理模塊228可包括自適應高速緩存,用于在主機存儲器地址查找操作中緩存MPT和MTT入口(entry)。用于MPT/MTT表和TCP上下文的一種典型的自適應高速緩存設計在2005年9月16日申請的、美國專利申請?zhí)枮椋撸?代理案號1669US02)的美國專利申請中有描述,本文在此引用其全文。
緩存管理器250可包括合適的電路、邏輯和/或代碼,可用于管理MHBA芯片202的本地緩存器。例如,緩存管理器250提供緩存器給例如RxIF 214以接收未經請求的數(shù)據(jù)包。緩存管理器250還能接收邏輯模塊如ETH 206釋放的緩沖器。例如,當ETH 206完成DMA操作,將所接收的數(shù)據(jù)移動到主機存儲器之后,就釋放緩存器。
MHBA芯片202還使用節(jié)點控制器230與外部的MHBA通信,使多個MHBA芯片形成多處理器系統(tǒng)。MHBA芯片202還使用RAID控制器248與外部的存儲設備通信。存儲器控制器234可用于控制外部存儲器246與MHBA芯片202之間的通信。例如,外部存儲器246可用于存儲主TCB陣列。該TCB陣列的一部分將傳遞給MHBA芯片202,并可存儲在上下文高速緩存218b中。
工作時,RxIF 214通過輸入端口264接收數(shù)據(jù)包,以及基于所接收數(shù)據(jù)包的協(xié)議類型在MHBA芯片202中處理所述數(shù)據(jù)包。RxIF 214可丟棄目標地址不正確的或者校驗和不正確的數(shù)據(jù)包??蓮拿枋龇斜?RxBufDes)214a中取得緩存器,用于存儲所接收的數(shù)據(jù)包;同時更新該描述符列表214a。可從緩存管理器250中獲取新的補充緩存器。如果所接收的數(shù)據(jù)包是非TCP數(shù)據(jù)包,例如,如果是以太網數(shù)據(jù)包,則通過連接271將該數(shù)據(jù)包傳遞給ETH206。非TCP數(shù)據(jù)包被當作以太網幀傳遞給ETH 206。ETH 206也接收來自TCP引擎204內的調度器218的非卸載TCP數(shù)據(jù)包。ETH 206處理非TCP數(shù)據(jù)包后,將處理后的非TCP數(shù)據(jù)包傳遞給HIF 210。HIF 210通過連接256將所接收的數(shù)據(jù)包傳遞給主機。
如果所接收的數(shù)據(jù)包是TCP卸載數(shù)據(jù)包,則由RxIF 214對該數(shù)據(jù)包進行處理。RxIF 214移除TCP報頭,該TCP報頭被傳遞給TCP引擎204內的調度器218以及會話查找模塊216。所得的TCP有效載荷經由互連總線232傳遞給外部存儲器246,以由協(xié)議處理器236,...,242處理。調度器218基于所接收的TCP報頭,使用會話查找模塊216在最近訪問的TCP會話中進行TCP會話查找。被選擇的TCP會話270將傳遞給調度器218。調度器218可基于該TCP會話信息270為當前TCP報頭選擇TCP上下文。TCP上下文經由連接273傳遞給RxE 222。RxE 222基于所選擇的TCP上下文或者從調度器接收的TCB處理當前的TCP報頭并提取控制信息。接著,RxE 222基于處理后的報頭信息更新TCP上下文;更新后的TCP上下文被傳遞回調度器218以存儲在上下文高速緩沖器218b中。處理后的報頭信息可從RxE 222傳遞到PIF208。接著,協(xié)議處理器236,...,242執(zhí)行TCP重組。重組后的TCP數(shù)據(jù)包,以及從外部存儲器246中讀取的有效載荷數(shù)據(jù),被傳遞給HIF 210,接著經由連接256傳遞給主機。
在處理數(shù)據(jù)以用于發(fā)射時,數(shù)據(jù)可由MHBA芯片202通過連接256以及HIF 210從主機上接收。所接收的發(fā)射數(shù)據(jù)可存儲在外部存儲器246內。如果所述發(fā)射數(shù)據(jù)是非TCP數(shù)據(jù),則傳遞給ETH 206。ETH 206處理該非-TCP數(shù)據(jù)包并通過連接276將處理后的數(shù)據(jù)包傳遞給TxIF 212。然后,TxIF 212經過輸出端口266將處理后的非-TCP數(shù)據(jù)包傳送到MHBA芯片202外面。
如果所述發(fā)射數(shù)據(jù)包括TCP有效載荷數(shù)據(jù),PIF 208將通過連接274將與TCP有效載荷信息對應的TCP會話指示符(indicator)傳送給調度器218。調度器218基于從PIF 208接收的TCP會話信息從上下文高速緩沖器218b中選擇TCP上下文。所選擇的TCP上下文經由連接272從調度器218傳送到TxE220。然后,TxE 220基于TCB或者從調度器218接收的TCP上下文為TCP發(fā)射數(shù)據(jù)包產TCP報頭。所產生的TCP報頭經由連接275從TxE 220傳遞給TxIF 212。TCP有效載荷也經由連接254從TxIF 212傳送到PIF 208。數(shù)據(jù)包有效載荷也從主機傳送到TxIF 212,或者從主機傳送到外部存儲器的本地緩存器中。在這點上,在數(shù)據(jù)包重傳期間,可通過DMA傳輸器將數(shù)據(jù)從外部存儲器246內的本地緩存器傳送到TxIF 212;或者通過DMA傳輸器將數(shù)據(jù)從主機存儲器傳送到TxIF 212。TxIF 212可利用從PIF 208接收的TCP有效載荷以及從TxE 220接收的TCP報頭來產生TCP數(shù)據(jù)包。接著,所產生的TCP數(shù)據(jù)包經由一個或多個輸出端口266傳輸?shù)組HBA芯片202外。
在本發(fā)明的一個實施例中,MHBA芯片202可處理從RxIF 214接收的RDMA數(shù)據(jù),或者處理將通過TxIF 212發(fā)射的RDMA數(shù)據(jù)。附圖3A和附圖3B中將進一步描述使用主機總線適配器如MHBA芯片202處理RDMA數(shù)據(jù)。RDMA是在現(xiàn)代網絡子系統(tǒng)中達到零拷貝(zero-copy)的技術。RDMA是包括三種協(xié)議的套件,即RDMA協(xié)議(RDMAP)、直接數(shù)據(jù)放置(DDP)以及標記PDU對齊幀協(xié)議(maker PDU aligned framing protocol,MPA),其中,PDU是協(xié)議數(shù)據(jù)單元。RDMAP為應用程序提供接口以發(fā)送和接收數(shù)據(jù)。DDP用于將出站數(shù)據(jù)分割成符合TCP最大段大小的多個片段,以及將入站數(shù)據(jù)存入目標緩存器中。MPA用于提供組幀方案,使RDMA處理過程中標識DDP片段時的DDP操作更容易。RDMA可以是TCP之上的傳輸協(xié)議套件。
圖3A是根據(jù)本發(fā)明一個實施例的RDMA片段的示意圖。參考圖2和3A,MHBA芯片202可用于處理RxIF 214所接收的RDMA信息。例如,RxIF 214可接收TCP片段302a。該TCP片段包括TCP報頭304a和有效載荷306a。RxIF可分離TCP報頭304a。所得到的TCP報頭304a被傳輸給PIF 208并在PIF 208中緩沖,以由協(xié)議處理器236,...,242處理。因為RDMA消息可能太大而無法裝在一個TCP片段中,所以處理器236,...,242的DDP處理可將大的RDMA消息分割成小的片段。例如,RDMA協(xié)議數(shù)據(jù)單元312a,其可以是有效載荷306a的一部分,包括組合報頭310a和312a、DDP/RDMA有效載荷314a。所述組合報頭可包括控制信息,如MPA頭,其包括長度指示符310a和DDP/RDMA報頭312a。DDP/RDMA報頭信息312a可指定參數(shù),例如操作類型、目標緩存器的地址以及數(shù)據(jù)傳輸?shù)拈L度。
MPA組幀協(xié)議可在TCP序列空間上每隔512字節(jié)就添加一個標記到RDMA有效載荷中。所述標記幫助接收器如MHBA芯片202找到DDP/RDMA報頭312a。如果MHBA芯片202接收的網絡數(shù)據(jù)包無序,MHBA芯片202可使用位置固定已知的標記316a來快速找到DDP報頭,如DDP/RDMA報頭312a?;謴虳DP報頭312a后,MHBA芯片202通過HIF 210將數(shù)據(jù)存入主機存儲器的目標緩存中。因為每個DDP片段都是獨立的,并且RDMA報頭312a可包括目標緩存器地址,所以出現(xiàn)無序數(shù)據(jù)包時便能進行快速數(shù)據(jù)存放。
HIF 210可用于移除標記316a和CRC 318a以獲得DDP片段319a。DDP片段319a包括DDP/RDMA報頭320a和DDP/RDMA有效載荷322a。HIF 210還處理DDP片段310a以獲得RDMA消息324a。RDMA消息324a包括RDMA報頭326a和有效載荷328。有效載荷328,可以是應用數(shù)據(jù)330a,包括上層協(xié)議(UPL)信息和協(xié)議數(shù)據(jù)單元(PDU)信息。
圖3B是根據(jù)本發(fā)明的一個實施例的RDMA處理的示意圖。參考圖2和3A,主機總線適配器302b與圖2的MHBA芯片202相同,該主機總線適配器302b可利用RDMA協(xié)議處理模塊312b、DDP處理310b、MPA處理308b以及TCP引擎306b的TCP處理。RDMA、MPA和DDP處理可由處理器236,...,242執(zhí)行。主機304b的主機應用程序324b可通過動詞層(verb layer)322b和驅動層(driver layer)320b與MHBA芯片202通信。例如,主機應用程序324b可通過RDMA/TCP連接傳遞數(shù)據(jù)。在這種情況之下,主機應用程序324b發(fā)送傳輸請求到發(fā)送隊列(send queue,SQ)314b。所述傳輸請求命令包括有將要發(fā)送到MHBA芯片202的數(shù)據(jù)的量的指示。當RDMA數(shù)據(jù)包的發(fā)送準備就緒時,TxIF計算MPA報頭和CRC信息并將它們插入到RDMA有效載荷中。
圖3C是根據(jù)本發(fā)明的一個實施例使用多功能主機總線適配器的存儲子系統(tǒng)的示意圖。參考圖3C,存儲子系統(tǒng)305c包括存儲器316c、處理器318c、多功能主機總線適配器(MHBA)芯片306c以及多個存儲驅動器320c,...,324c。MHBA芯片306c與圖2所示的MHBA芯片202相同。MHBA芯片306c包括節(jié)點控制器和數(shù)據(jù)包管理器(NC/PM)310c、iSCSI和RDMA(iSCSI/RDMA)模塊312c、TCP/IP處理模塊308c和串行高級技術附件(SATA)接口314c。存儲子系統(tǒng)305c可通信地連接到總線/開關307c和服務器開關302c。
NC/PM 310c可包括合適的電路、邏輯和/或編碼,用于控制一個或多個正在使用存儲子系統(tǒng)305c的節(jié)點。例如,所述節(jié)點可通過總線/開關307c連接到存儲子系統(tǒng)305c。存儲子系統(tǒng)305c可使用iSCSI/RDMA模塊312c和TCP/IP模塊308c與遠程專用服務器通信,例如,在TCP/IP網絡上使用iSCSI協(xié)議。例如,可通過開關302c和使用iSCSI/RDMA模塊312c的TCP/IP連接將來自遠端服務器的網絡傳輸信息(network traffic)傳遞給存儲子系統(tǒng)305c。另外,在存儲器316c與遠端設備(例如,連接到總線/開關307c的網絡設備)的存儲器進行RDMA連接時,存儲子系統(tǒng)305c可利用iSCSI/RDMA模塊312c。MHBA芯片306c可使用SATA接口314c在存儲子系統(tǒng)305c的存儲器設備302c,...,324c與MHBA芯片306c之間建立快速連接和數(shù)據(jù)交換。
具體操作時,連接到總線/開關307c的網絡設備可請求將服務器數(shù)據(jù)326c存儲在存儲子系統(tǒng)中。服務器數(shù)據(jù)326c可通過開關302c傳輸和路由到存儲子系統(tǒng)中。例如,可將服務器數(shù)據(jù)306c路由以存儲在存儲子系統(tǒng)的存儲塊304c中,或者將其路由以存儲在存儲子系統(tǒng)305c中。MHBA芯片306c可使用SATA接口314c以將被請求的服務器數(shù)據(jù)存儲在任何一個存儲驅動器320c,...,324c中。
圖3D是根據(jù)本發(fā)明一個實施例處理網絡數(shù)據(jù)的流程圖。參考圖2和3D,步驟302d中,將多個網絡連接中至少一個網絡連接的接收數(shù)據(jù)的至少一部分存儲在多功能主機總線適配器(MHBA)芯片202中,所述MHBA芯片202處理多種協(xié)議。步驟303d中,在MHBA芯片202中驗證所述接收數(shù)據(jù)。例如,由RxIF 214驗證所述接收數(shù)據(jù)。步驟304d中,配置MHBA芯片202以基于與所述接收數(shù)據(jù)關聯(lián)的多種協(xié)議中的一種協(xié)議處理所述接收數(shù)據(jù)。步驟306d中,確定所述接收數(shù)據(jù)是否使用傳輸控制協(xié)議(TCP)。如果所述接收數(shù)據(jù)使用傳輸控制協(xié)議,步驟308d中,在MHBA芯片202中確定TCP會話標識。
例如,TCP會話標識可由會話查找模塊216確定,TCP會話識別可基于接收數(shù)據(jù)中對應的TCP報頭進行。步驟310d中,基于已定位的TCP會話標識,在MHBA芯片202中活卻接收數(shù)據(jù)的TCP上下文信息。步驟312d中,在MHBA芯片202內,基于獲取的TCP上下文信息,處理該接收數(shù)據(jù)內的至少一個TCP數(shù)據(jù)包。步驟314d中,確定該接收數(shù)據(jù)是否基于RDMA協(xié)議。如果該接收數(shù)據(jù)基于RDMA協(xié)議,步驟316d中,在MHBA芯片中將該接收數(shù)據(jù)的至少一個RDMA標記移除。
因此,本發(fā)明可以通過硬件、軟件、固件或它們的組合來實現(xiàn)。本發(fā)明可以在至少一個計算機系統(tǒng)中以集中方式實現(xiàn),或者由分布在幾個互連的計算機系統(tǒng)中的不同部分以分散方式實現(xiàn)。任何可以實現(xiàn)所述方法的計算機系統(tǒng)或其它設備都是可適用的。常用軟硬件的結合可以是安裝有計算機程序的通用計算機系統(tǒng),通過安裝和執(zhí)行所述程序控制計算機系統(tǒng),使其按所述方法運行。在計算機系統(tǒng)中,利用處理器和存儲單元來實現(xiàn)所述方法。
本發(fā)明的一個實施例可通過電路板級的產品實現(xiàn),例如單個芯片、特定用途集成電路(ASIC),或者在可變集成度的單芯片上實現(xiàn),而系統(tǒng)的其他部分是獨立的組件。系統(tǒng)的集成度主要由速度和成本決定。因為現(xiàn)代處理的固有屬性,使用商業(yè)可用的處理器是可行的,所述商業(yè)可用處理器可外接到本發(fā)明系統(tǒng)的ASIC核心上。替換地,如果處理器以ASIC核心或邏輯模塊形式可用,那么商業(yè)可用處理器可用作多功能ASIC設備的一部分,而各種其他功能用固件實現(xiàn)。
本發(fā)明還可以嵌入在計算機程序產品內,所述程序包含能夠實現(xiàn)本發(fā)明方法的全部特征,當其安裝到計算機系統(tǒng)中時,通過運行,可以實現(xiàn)本發(fā)明的方法。本文件中的計算機程序所指的是可以采用任何程序語言、代碼或符號編寫的一組指令的任何表達式,該指令組使系統(tǒng)具有信息處理能力,以直接實現(xiàn)特定功能,或在進行下述一個或兩個步驟之后實現(xiàn)特定功能a)轉換成其它語言、編碼或符號;b)以不同的格式再現(xiàn)。
本發(fā)明是通過幾個具體實施例進行說明的,本領域技術人員應當明白,在不脫離本發(fā)明范圍的情況下,還可以對本發(fā)明進行各種變換及等同替代。另外,針對特定情形或具體情況,可以對本發(fā)明做各種修改,而不脫離本發(fā)明的范圍。因此,本發(fā)明不局限于所公開的具體實施例,而應當包括落入本發(fā)明權利要求范圍內的全部實施方式。
本申請引用并要求申請日期為2005年6月7日的美國臨時專利申請No.60/688,265的優(yōu)先權。
本申請還參考了美國專利申請?zhí)枺撸?代理案號16592US02),申請日期為2005年9月16日;美國專利申請?zhí)枺撸?代理案號16593US02),申請日期為2005年9月16日;美國專利申請?zhí)枺撸?代理案號16594US02),申請日期為2005年9月16日;美國專利申請?zhí)枺撸?代理案號16597US02),申請日期為2005年9月16日;美國專利申請?zhí)枺撸?代理案號16642US02),申請日期為2005年9月16日;美國專利申請?zhí)枺撸?代理案號16669US02),申請日期為2005年9月16日。
權利要求
1.一種處理網絡數(shù)據(jù)的方法,所述方法包括將多個網絡連接中至少一個網絡連接的至少一部分接收數(shù)據(jù)存儲在處理多種協(xié)議的芯片上;配置所述芯片以基于與所述接收數(shù)據(jù)相關的所述多種協(xié)議中的一種來處理所述接收數(shù)據(jù);在所述芯片內,通過所述經配置的芯片處理所述多個網絡連接中至少一個網絡連接的接收數(shù)據(jù)。
2.根據(jù)權利要求1所述的方法,其特征在于,所述多種網絡協(xié)議中的一種包括以下之一以太網協(xié)議、傳輸控制協(xié)議(TCP)、因特網協(xié)議(IP)、因特網小型計算機系統(tǒng)接口(iSCSI)協(xié)議和遠程直接存儲訪問(RDMA)協(xié)議。
3.根據(jù)權利要求1所述的方法,其特征在于,所述至少一個網絡連接的所述已存儲的接收數(shù)據(jù)中的至少一部分包括上下文信息。
4.根據(jù)權利要求1所述的方法,其特征在于,所述方法還包括在所述芯片中處理所述接收數(shù)據(jù)之前,驗證所述接收數(shù)據(jù)。
5.根據(jù)權利要求1所述的方法,其特征在于,所述方法還包括在所述芯片中基于與所述至少一個網絡連接相關的協(xié)議提取所述接收數(shù)據(jù)的至少一個報頭。
6.一種處理網絡數(shù)據(jù)的系統(tǒng),所述系統(tǒng)包括存儲多個網絡連接中的至少一個網絡連接的至少一部分接收數(shù)據(jù)的芯片,其中,所述芯片處理多種協(xié)議,并且所述芯片進行配置后基于與所述接收數(shù)據(jù)相關的多種協(xié)議中的一種來處理所述接收數(shù)據(jù);且所述芯片處理所述至少一個網絡連接的接收數(shù)據(jù)。
7.根據(jù)權利要求6所述的系統(tǒng),其特征在于,所述多種協(xié)議中的一種包括以下之一以太網協(xié)議、傳輸控制協(xié)議(TCP)、因特網協(xié)議(IP)、因特網小型計算機系統(tǒng)接口(iSCSI)協(xié)議、遠程直接存儲訪問(RDMA)協(xié)議。
8.根據(jù)權利要求6所述的系統(tǒng),其特征在于,所述至少一個網絡連接的所述已存儲的接收數(shù)據(jù)中的至少一部分包括上下文信息。
9.根據(jù)權利要求6所述的系統(tǒng),其特征在于,所述芯片在處理所述接收數(shù)據(jù)之前,在所述芯片內驗證所述接收數(shù)據(jù)。
10.根據(jù)權利要求6所述的系統(tǒng),其特征在于,所述芯片基于與所述至少一個網絡連接相關的協(xié)議提取所述接收數(shù)據(jù)的至少一個報頭。
全文摘要
本發(fā)明涉及用于集成有以太網、TCP、ISCSI、RDMA和網絡應用程序加速支持的片上系統(tǒng)設備的方法和系統(tǒng)。所述方法包括將至少一個網絡連接的一部分接收數(shù)據(jù)存儲在處理多種網絡協(xié)議的多功能主機總線適配器(MHBA)芯片上。所述MHBA芯片被配置以基于與所述接收數(shù)據(jù)關聯(lián)的一種協(xié)議處理所述接收數(shù)據(jù)。所述至少一個網絡連接的接收數(shù)據(jù)在所述MHBA芯片中進行處理。所述一種協(xié)議包括以太網協(xié)議、傳輸控制協(xié)議(TCP)、因特網協(xié)議(IP)、因特網小型計算機系統(tǒng)接口(iSCSI)協(xié)議和/或遠程直接存儲器訪問(RDMA)協(xié)議。
文檔編號H04L29/06GK101047720SQ20061009151
公開日2007年10月3日 申請日期2006年6月6日 優(yōu)先權日2005年6月7日
發(fā)明者龐舫 申請人:美國博通公司