專利名稱:基于萬兆網卡的以太網包檢驗和fpga硬件校驗方法
技術領域:
本發明涉及計算機系統的網絡通訊技術領域,具體地,涉及基于萬兆網卡的以太網包檢驗和硬件現場可編程門陣列(Field-Programmable Gate Array,簡稱FPGA)硬件校驗方法。
背景技術:
電腦總和檢驗碼(checksum,又稱校驗總和),在數據處理和數據通信領域中,是用于校驗目的的一組數據項的和,這些數據項可以是數字或在計算檢驗總和過程中看作數字的其它字符串,通常是以十六進制為數制表示的形式,如十六進制串0102030405060708的效驗和是24 (十六進制)。如果效驗和的數值超過十六進制的FF,也就是255。就要求其補碼作為效驗和通常用來在通信中,尤其是遠距離通信中保證數據的完整性和準確性。
在IP首部校驗算法中,IP首部校驗和字段是根據IP首部計算的校驗和碼,它不對首部后面的數據進行計算。例如,Internet控制報文報協議(Internet Control MessageProtocol,簡稱 ICMP)、Internet 組管理協議(Internet Group Management Protocol,簡稱IGMP )、用戶數據報協議(User Datagram ProtocoI,簡稱UDP )和傳輸控制協議(Transmission Control Protocol,簡稱TCP)在,它們各自的首部中均含有同時覆蓋首部和數據校驗和碼。在IP首部校驗和計算中,為了計算一份數據報的IP檢驗和,首先把檢驗和字段置為O。然后,對首部中每個16bit進行二進制反碼求和(整個首部看成是由一串16bit的字組成),結果存在檢驗和字段中。當收到一份IP數據報后,同樣對首部中每個16bit進行二進制反碼的求和。由于接收方在計算過程中包含了發送方存在首部中的檢驗和,因此,如果首部在傳輸過程中沒有發生任何差錯,那么接收方計算的結果應該為全I。如果結果不是全I (即檢驗和錯誤),那么IP就丟棄收到的數據報。但是不生成差錯報文,由上層去發現丟失的數據報并進行重傳。在TCP和UDP校驗和計算(兩者相同)中,校驗和還包含一個96位的偽首標,理論上它位于TCP首標的前面。這個偽首標包含了源地址、目的地址、協議和TCP長度等字段,這使得TCP能夠防止出現路由選擇錯誤的數據段。這些信息由網際協議(IP)承載,通過TCP/網絡接口,在IP上運行的TCP調用參數或者結果中傳遞。偽首部并非UDP數據報中實際的有效成分,偽首部是一個虛擬的數據結構,其中的信息是從數據報所在IP分組頭的分組頭中提取的,既不向下傳送也不向上遞交,而僅僅是為計算校驗和。這樣的校驗和,既校驗了 UDP用戶數據的源端口號和目的端口號以及UDP用戶數據報的數據部分,又檢驗了 IP數據報的源IP地址和目的地址。偽報頭保證UDP和TCP數據單元到達正確的目的地址。因此,偽報頭中包含IP地址并且作為計算校驗和需要考慮的一部分。最終目的端根據偽報頭和數據單元計算校驗和以驗證通信數據在傳輸過程中沒有改變而且到達了正確的目的地址。在數據通信網絡中,基于網絡協議傳輸的網絡包的數據完整性和準確性尤為重要,通常的方法是通過應用層軟件去檢查以太網數據包包頭(header)的checksum區域的值,同時重新計算接收到的以太網數據包包頭(header)的checksum的值,由應用層軟件去比較這兩個checksum的值來判斷接收到的以太網數據包是否有效,如果數據包有效,則準備繼續接收下一幀數據,如果無效則返回無效信息等待重新接收數據包,整個過程中應用層軟件的執行過程通過CPU處理中斷和分配資源,占用CPU資源和進程。在網絡協議傳輸的以太網包中,checksum作為一種傳輸數據完整性的檢測方法,用CPU去處理中斷,然后解析以太網數據包包頭的checksum值,并重新計算以太網數據包包頭的checksum值,再來比較這兩個checksum的值。以太網協議規定了以太網巾 貞的IP首部必須使用檢驗和(checksum)并被檢驗,TCP也必須使用校驗和,UDP可以不使用校驗和。進行checksum的算法在以太網協議中已經定義好了,但是實現的方法各有不同。通常checksum實現的方法都是通過以太網應用層軟件,來實現checksum的算法和CPU處理中斷控制數據傳輸過程,這種實現方法實現起來簡單,但是應用層軟件占用CPU資源,會影響CPU的工作效率和性能。在實現本發明的過程中,發明人發現現有技術中至少存在占用CPU資源多、CPU處理中斷和進程所占用的時間長、以及CPU處理數據的效率和性能低等缺陷。
發明內容
本發明的目的在于,針對上述問題,提出基于萬兆網卡的以太網包檢驗和FPGA硬件校驗方法,以實現以太網數據包的checksum檢驗和的硬件計算且計算速度快、以及數據傳輸的穩定性和可靠性高的優點。為實現上述目的,本發明采用的技術方案是基于萬兆網卡的以太網包檢驗和FPGA硬件校驗方法的萬兆網卡結構主要包括
XAUI模塊主要用于實現以太網協議數據傳輸的物理層協議,主要包括以太網協議物理層數據傳送和接收所需的光電信號轉換、數據的編碼、串并轉換和提供數據鏈路層的MAC子層的XGMII接口 ;
IOGE MAC模塊主要用于實現以太網協議數據傳輸的數據鏈路層協議,主要包括以太網數據鏈路層的MAC子層和LLC子層、上層協議的Avalon-ST接口(Avalon流接口)和低層協議的XGMII接口 ;以及,用于負責對數據包進行封裝成以太網數據幀格式傳輸,即數據幀的構建和數據差錯檢驗;
接口時序轉換邏輯模塊主要用于通過FPGA硬件邏輯,實現Avalon-ST接口到AX1-Stream接口的轉換;
AXI以太網(Ethernet)模塊主要用于管理以太網數據包,映射發送和接收的以太網數據包內容到AXI Ethernet模塊內部獨立的RAM塊中,對接收和發送的以太網數據包內容作全雙工checksum校驗,以及提供ΑΧΙ-Stream接口數據幀的流控判斷和寄存器端口的AX1-Lite接口讀寫以及外部PHY芯片訪問的獨立管理接口 ;
AXI DMA模塊能夠與外部中斷控制模塊和外部DDR3通信,主要用于實現AXIEthernet模塊內部獨立RAM塊中的數據和AXI interconnect模塊中AX1-Stream接口流數據的緩存FIFO中的數據;
AXI互聯網(interconnect)模塊主要用于定義AX1-Stream接口流數據的緩存FIFO,實現讀寫內存模塊的路由包括作為master或slaver的MM2S Read接口和S2MM Write接口控制;PCIe Hard Ip模塊能夠與外部CPU通信,作為PCIe的硬核模塊,主要用于實現對以太網數據包的拆包組包過程;
校驗總和(checksum)硬件邏輯模塊用于實現以太網數據包的硬件checksum校驗邏輯,主要是用于通過FPGA邏輯來實現對AX1-Stream接口流數據進行解析,同時判斷檢驗位對需要進行校驗數據進行checksum檢驗,最后把校驗的checksum值填入到以太網數據IP頭部和以太網協議類型規定的數據包的頭部格式相應位置。進一步地,所述的接口時序轉換模塊,AXI_Ethernet模塊和AXI_DMA模塊,主要包括
AX1-Lite接口 主要用于實現系統訪問硬件寄存器的接口時序邏輯;
AX1-Stream接口 主要用于實現系統數據發送和接收流接口時序邏輯; AX1-Lite子模塊主要用于實現以太網應用層軟件的寄存器讀寫;
SG R/W子模塊主要用于實現應用層軟件讀取硬件描述符信息的讀寫功能;
MM2S Read子模塊主要用于實現硬件讀內存信息到硬件的高級可擴展總線流接口功
S2MM Write子模塊主要用于實現硬件通過高級可擴展總線流接口寫數據信息到內存的接口功能。進一步地,所述checksum硬件邏輯模塊,主要包括
CSUM_CTRL模塊主要用于實現checksum模塊的主要硬件邏輯,主要是用于對接收和發送的以太網數據包進行解析,提取數據包的傳輸協議類型、checksum值和計算IP頭的checksum,同時根據傳輸協議類型來計算或比較傳輸協議類型的數據包的checksum值,最后將正確的checksum值填入到以太網數據包包頭的位置進行傳輸;
TX_CSUM模塊主要用于對發送數據的checksum值進行計算;
RX_CSUM模塊主要用于對接收數據的checksum值進行計算;
TX_FIF0模塊主要用于調用的FPGA內部一個發送數據的緩存,FIFO的輸入是上端AX1-Stream接口下來的發送包數據,FIFO的輸出是通過TX_CSUM模塊計算后的數據;RX_FIF0模塊主要用于調用的FPGA內部一個接收數據的緩存,FIFO的輸入是上端AX1-Stream接口下來的接收包數據,FIFO的輸出是通過RX_CSUM模塊計算后的數據。進一步地,所述AXI DMA模塊,主要包括
AX1-Lite子模塊主要用于實現以太網應用層軟件的寄存去讀寫;
SG R/W子模塊主要用于實現應用層軟件讀取硬件描述符信息的讀寫功能;
MM2S Read子模塊主要用于實現硬件讀內存信息到硬件的高級可擴展總線流接口功
S2MM Write子模塊主要用于實現硬件通過高級可擴展總線流接口寫數據信息到內存的接口功能。進一步地,所述IOGE MAC模塊用于實現數據幀的構建和數據差錯檢驗時,主要是對發送以太網數據包添加幀頭和幀尾,對接收以太網數據包去除幀頭和幀尾;幀頭包括目標主機的MAC地址,自己的源MAC地址和數據包類型;幀尾為數據包的CRC校驗字。進一步地,所述的checksum硬件邏輯校驗的實現過程主要包括
對接收和發送的以太網包頭或協議數據包頭作checksum校驗,對以太網數據幀頭和協議數據包頭格式的填充和判斷,以及對作checksum校驗時的狀態信息的輸出控制。進一步地,在所述對接收和發送的以太網包頭或協議數據包頭作checksum校驗的操作中,接收部分具體包括
在接收以太網數據包作checksum時,checksum硬件邏輯判斷checksum硬件邏輯模塊的接口控制信號TX_CSBEGIN的狀態,根據狀態信息確定是否進入到接收以太網數據包checksum檢驗狀態;
在這個狀態,checksum硬件邏輯模塊解析數據包的內容,同時調用checksum硬件邏輯模塊的硬件邏輯去執行IP頭或者TCP/UDP包頭的checksum計算,根據硬件解析的以太網數據包的類型來確定是否計算TCP/UDP包頭,完成計 算后硬件邏輯校驗checksum的值來判斷數據包的完整性;
在接收以太網數據包作checksum時,checksum硬件邏輯判斷checksum硬件邏輯模塊的接口控制信號RX_CSRAW的狀態,根據狀態信息確定是否進入到接收數據完整性校驗狀態;
在這個狀態,checksum硬件邏輯模塊的硬件邏輯會比較兩次checksum值,如果值一致則進入到RX_CSUM_PLAYLOAD狀態,開始接收這一幀以太網包數據;否則丟棄這幀數據,進入到IDLE狀態等待重新接收數據。進一步地,所述checksum硬件邏輯模塊會解析數據包的內容,包括以太網數據包的類型、IP頭的checksum和TCP/UDP包頭的checksum、以及TCP/UDP的數據部分。進一步地,在所述對接收和發送的以太網包頭或協議數據包頭作checksum校驗的操作中,發送部分具體包括
在發送以太網數據包作checksum時,checksum硬件邏輯模塊的接口控制信號TX_CSBEGIN的狀態,進入到發送以太網數據包checksum檢驗狀態;
在這個狀態,checksum硬件邏輯模塊的硬件邏輯判斷發送以太網幀數據類型,確定是否需要作協議數據包頭的checksum校驗,同時對以太網數據包IP header進行checksum校驗;
在TX_CSUM_IP_HEADER狀態,checksum硬件邏輯模塊根據接口控制信號TX_CSINSERT、TX_CSCNTRL和TX_CSINIT,來確定是否開始作TCP/UDP header的checksum,確定是否改填充TCP/UDP header的checksum數據包頭格式;
硬件做完數據的填充后,進入到發送以太網數據包狀態,開始發送完整的以太網數據包格式的數據到AXI數據鏈路層接口,此幀數據發送完成后跳到IDEL狀態重新開始檢測發送以太網數據包。本發明各實施例的基于萬兆網卡的以太網包檢驗和FPGA硬件校驗方法,由于該結構包括主要用于實現以太網協議數據傳輸的物理層協議的XAUI模塊,主要用于實現以太網協議數據傳輸的數據鏈路層協議的IOGE MAC模塊,主要用于通過FPGA硬件邏輯實現Avalon-ST接口到AX1-Stream接口轉換的接口時序轉換邏輯模塊,主要用于管理以太網數據包的AXI Ethernet模塊,主要用于實現AXI Ethernet模塊內部獨立RAM塊中的數據和AXI interconnect模塊中AX1-Stream接口流數據的緩存FIFO中數據的AXI DMA模塊,主要用于定義AX1-Stream接口流數據的緩存FIFO實現讀寫內存模塊的路由包括作為master 或 slaver 的 MM2S Read 接口和 S2MM Write 接口控制的 AXI interconnect 模塊,主要用于實現對以太網數據包的拆包組包過程的PCIe Hard Ip模塊,主要用于實現以太網數據包的硬件checksum校驗邏輯的checksum硬件邏輯模塊;相對于在數據傳輸過程中,通過硬件邏輯來實現這個過程不但可以節省占用CPU的資源和減少CPU處理中斷和進程所占用的時間,還可以提高CPU處理其它進程的效率和性能;而且通過硬件邏輯來實現以太網數據包包頭(header)的checksum計算更快,提高了數據傳輸的穩定性和可靠性;從而可以克服現有技術中占用CPU資源多、CPU處理中斷和進程所占用的時間長、以及CPU處理數據的效率和性能低的缺陷,以實現以太網數據包的checksum檢驗和計算速度快、以及數據傳輸的穩定性和可靠性高的優點。本發明的其它特征和優點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發明而了解。下面通過附圖和實施例,對本發明的技術方案做進一步的詳細描述。
附圖用來提供對本發明的進一步理解,并且構成說明書的一部分,與本發明的實施例一起用于解釋本發明,并不構成對本發明的限制。在附圖中
圖1是基于萬兆網卡的以太網包檢驗和FPGA硬件校驗方法所用系統的硬件模塊結構示意圖2是checksum硬件模塊的結構示意圖3是基于萬兆網卡的以太網包檢驗和FPGA硬件校驗方法所用系統的結構示意圖;圖4是checksum硬件校驗狀態機(即checksum校驗和的實現方法)的工作流程示意圖。結合附圖,本發明實施例中附圖標記如下
10-XAUI模塊;11-10GE MAC模塊;12_接口時序轉換邏輯模塊;13_AXI Ethernet模塊;14-AXI DMA 模塊;15-AXI interconnect 模塊;16- PCIe Hard Ip 模塊;17-checksum硬件邏輯模塊;18-CSUM_CTRL模塊;19_TX_CSUM模塊;20_RX_CSUM模塊;21_TX_FIF0模塊;22-RX_FIF0 模塊。
具體實施例方式以下結合附圖對本發明的優選實施例進行說明,應當理解,此處所描述的優選實施例僅用于說明和解釋本發明,并不用于限定本發明。系統實施例
根據本發明實施例,如圖1-3所示,提供了基于萬兆網卡的以太網包檢驗和FPGA硬件校驗方法所用系統。參見圖1,本實施例的基于萬兆網卡的以太網包檢驗和FPGA硬件校驗方法所用系統,主要包括XAUI模塊(10吉比特傳輸速率硬件接口模塊)10、IOGE MAC模塊(10吉比特以太網介質訪問控制模塊)11,接口時序轉換邏輯模塊12,AXI Ethernet模塊13,AXI DMA模塊 14, AXI interconnect 模塊 15, PCIe Hard Ip 模塊 16, checksum 硬件邏輯模塊 17。在圖1中,每個模塊的具體功能描述如下
XAUI模塊10 :主要用于實現以太網協議數據傳輸的物理層協議;該以太網協議數據傳輸的物理層協議,包括以太網協議物理層數據傳送和接收所需的光電信號轉換、數據的編碼、串并轉換和提供數據鏈路層的MAC子層的XGMII接口。IOGE MAC模塊11 :主要用于實現以太網協議數據傳輸的數據鏈路層協議;該以太網協議數據傳輸的數據鏈路層協議,包括以太網數據鏈路層的MAC (介質訪問控制)子層和LLC (邏輯鏈路控制)子層、上層協議的Avalon-ST接口和低層協議的XGMII接口。該IOGE MAC模塊11 :主要還用于負責對數據包進行封裝成以太網數據幀格式傳輸,即數據幀的構建和數據差錯檢驗。IOGE MAC模塊用于實現數據幀的構建和數據差錯檢驗時,主要是對發送以太網數據包添加幀頭和 幀尾,對接收以太網數據包去除幀頭和幀尾;幀頭包括目標主機的MAC地址,自己的源MAC地址和數據包類型;幀尾為數據包的CRC校驗字。接口時序轉換邏輯模塊12 :主要用于通過FPGA硬件邏輯實現Avalon-ST接口(Avalon流接口)到AX1-Stream接口(高級可擴展總線流接口)的轉換。AXI Ethernet模塊13 :主要用于管理以太網數據包,映射發送和接收的以太網數據包內容到AXI Ethernet模塊內部獨立的RAM塊中,對接收和發送的以太網數據包內容作全雙工checksum校驗,提供AX1-Stream接口數據幀的流控判斷和寄存器端口的AX1-Lite接口讀寫以及外部PHY芯片訪問的介質獨立管理接口(ΜΠΜ接口)。AXI DMA模塊14 :主要用于實現AXI Ethernet模塊13內部獨立RAM塊中的數據和AXI interconnect模塊15中AX1-Stream接口流數據的緩存FIFO中的數據。AXI interconnect模塊15 :主要用于定義AX1-Stream接口流數據的緩存FIFO,實現讀寫內存模塊的路由包括作為master或slaver的MM2S Read接口和S2MM Write接口控制。PCIe Hard Ip模塊16 :能夠與外部電腦主板(如CPU)通信,作為PCIe的硬核模塊,主要用于實現對以太網數據包的拆包組包過程。checksum硬件邏輯模塊17 :主要用于實現以太網數據包的硬件checksum校驗邏輯,即主要是通過FPGA邏輯來實現對AX1-Stream接口流數據進行解析,同時判斷檢驗位對需要進行校驗數據進行checksum檢驗,最后把校驗的checksum值填入到以太網數據IP頭部和以太網協議類型規定的數據包的頭部格式相應位置。在上述實施例的基于萬兆網卡的以太網包檢驗和FPGA硬件校驗方法所用系統中,checksum硬件邏輯的實現方案為以太網數據包的checksum檢驗包括對IP首部的檢驗和傳輸層數據包的checksum檢驗,在數據傳輸過程中checksum的值都是被填入到數據傳輸的幀格式的固定位置,通過硬件邏輯實現checksum檢驗就必須清楚以太網數據包的傳輸格式。上述以太網數據幀格式,為幀頭+數據包+幀尾;其中幀頭包括源和目標主機MAC地址及類型,幀尾是CRC校驗字。
… 目楊地址(6Byle> | 藤地址(βΒ) 莢型(2Β)數據包(妬》| CRC<4B)
ο以太網數據幀的類型決定了數據包將是以哪種數據包傳輸協議進行傳輸。數據包包含網絡協議IP頭部和數據傳輸協議的數據信息。數據傳輸協議的數據信息包含有TCP、UDP、ICMP和IGMP等,最常見的數據包傳輸協議為TCP和UDP協議,數據傳輸協議的傳輸取決于以太網數據幀格式的類型。以下是TCP和UDP數據包的幀傳輸格式
TCP數據包格式
權利要求
1.基于萬兆網卡的以太網包檢驗和FPGA硬件校驗方法,其特征在于,主要包括XAUI模塊主要用于實現以太網協議數據傳輸的物理層協議,主要包括以太網協議物理層數據傳送和接收所需的光電信號轉換、數據的編碼、串并轉換和提供數據鏈路層的MAC 子層的XGMII接口 ;IOGE MAC模塊主要用于實現以太網協議數據傳輸的數據鏈路層協議,主要包括以太網數據鏈路層的MAC子層和LLC子層、上層協議的Avalon-ST接口和低層協議的XGMII接口 ;以及,用于負責對數據包進行封裝成以太網數據幀格式傳輸,即數據幀的構建和數據差錯檢驗;接口時序轉換邏輯模塊主要用于通過FPGA硬件邏輯,實現Avalon-ST接口到AX1-Stream接口(高級可擴展總線流接口)的轉換;AXI Ethernet模塊主要用于管理以太網數據包,映射發送和接收的以太網數據包內容到AXI Ethernet模塊內部獨立的RAM塊中,對接收和發送的以太網數據包內容作全雙工 checksum校驗,以及提供AX1-Stream接口數據巾貞的流控判斷和寄存器端口的AX1-Lite接口讀寫以及外部PHY芯片訪問的獨立管理接口 ;AXI DMA模塊能夠與外部中斷控制模塊和外部DDR3通信,主要用于實現AXI Ethernet模塊內部獨立RAM塊中的數據和AXI interconnect模塊中AX1-Stream接口流數據的緩存FIFO中的數據;AXI interconnect模塊主要用于定義AX1-Stream接口流數據的緩存FIFO,實現讀寫內存模塊的路由包括作為master或slaver的MM2S Read接口和S2MM Write接口控制; PCIe Hard Ip模塊能夠與外部CPU通信,作為PCIe的硬核模塊,主要用于實現對以太網數據包的拆包組包過程;checksum硬件邏輯模塊用于實現以太網數據包的硬件checksum校驗邏輯,主要是用于通過FPGA邏輯來實現對AX1-Stream接口流數據進行解析,同時判斷檢驗位對需要進行校驗數據進行checksum檢驗,最后把校驗的checksum值填入到以太網數據IP頭部和以太網協議類型規定的數據包的頭部格式相應位置。
2.根據權利要求1所述的基于萬兆網卡的以太網包檢驗和FPGA硬件校驗方法,其特征在于,所述的接口時序轉換模塊,AXI_Ethernet模塊和AXI_DMA模塊,主要包括AX1-Lite接口 主要用于實現系統訪問硬件寄存器的接口時序邏輯;AX1-Stream接口 主要用于實現系統數據發送和接收流接口時序邏輯;AX1-Lite子模塊主要用于實現以太網應用層軟件的寄存器讀寫;SG R/W子模塊主要用于實現應用層軟件讀取硬件描述符信息的讀寫功能;MM2S Read子模塊主要用于實現硬件讀內存信息到硬件的高級可擴展總線流接口功S2MM Write子模塊主要用于實現硬件通過高級可擴展總線流接口寫數據信息到內存的接口功能。
3.根據權利要求1所述的基于萬兆網卡的以太網包檢驗和FPGA硬件校驗方法,其特征在于,所述checksum硬件邏輯模塊,主要包括CSUM_CTRL模塊主要用于實現checksum模塊的主要硬件邏輯,主要是用于對接收和發送的以太網數據包進行解析,提取數據包的傳輸協議類型、checksum值和計算IP頭的checksum,同時根據傳輸協議類型來計算或比較傳輸協議類型的數據包的checksum值,最后將正確的checksum值填入到以太網數據包包頭的位置進行傳輸;TX_CSUM模塊主要用于對發送數據的checksum值進行計算;RX_CSUM模塊主要用于對接收數據的checksum值進行計算;TX_FIF0模塊主要用于調用的FPGA內部一個發送數據的緩存,FIFO的輸入是上端 AX1-Stream接口下來的發送包數據,FIFO的輸出是通過TX_CSUM模塊計算后的數據;RX_FIF0模塊主要用于調用的FPGA內部一個接收數據的緩存,FIFO的輸入是上端 AX1-Stream接口下來的接收包數據,FIFO的輸出是通過RX_CSUM模塊計算后的數據。
4.根據權利要求3中所述的基于萬兆網卡的以太網包檢驗和FPGA硬件校驗方法,其特征在于,所述的checksum硬件邏輯校驗的實現過程主要包括對接收和發送的以太網包頭或協議數據包頭作checksum校驗,對以太網數據幀頭和協議數據包頭格式的填充和判斷,以及對作checksum校驗時的狀態信息的輸出控制。
5.根據權利要求4所述的基于萬兆網卡的以太網包檢驗和FPGA硬件校驗方法,其特征在于,在所述對接收和發送的以太網包頭或協議數據包頭作checksum校驗的操作中,接收部分具體包括在接收以太網數據包作checksum時,checksum的硬件邏輯判斷checksum硬件邏輯模塊的接口控制信號TX_CSBEGIN的狀態,根據狀態信息確定是否進入到接收以太網數據包 checksum檢驗狀態;在這個狀態,checksum硬件邏輯模塊解析數據包的內容,同時調用checksum硬件邏輯模塊的硬件邏輯去執行IP頭或者TCP/UDP包頭的checksum計算,根據硬件解析的以太網數據包的類型來確定是否計算TCP/UDP包頭,完成計算后硬件邏輯校驗checksum的值來判斷數據包的完整性;在接收以太網數據包作checksum時,checksum的硬件邏輯判斷checksum硬件邏輯模塊的接口控制信號RX_CSRAW的狀態,根據狀態信息確定是否進入到接收數據完整性校驗狀態;在這個狀態,checksum硬件邏輯模塊的硬件邏輯會比較兩次checksum值,如果值一致則進入到RX_CSUM_PLAYLOAD狀態,開始接收這一幀以太網包數據;否則丟棄這幀數據,進入到IDLE狀態等待重新接收數據。
6.根據權利要求5所述的基于萬兆網卡的以太網包檢驗和FPGA硬件校驗方法,其特征在于,所述checksum硬件邏輯模塊會解析數據包的內容,包括以太網數據包的類型、IP頭的checksum和TCP/UDP包頭的checksum、以及TCP/UDP的數據部分。
7.根據權利要求5或6所述的基于萬兆網卡的以太網包檢驗和FPGA硬件校驗方法,其特征在于,在所述對接收和發送的以太網包頭或協議數據包頭作checksum校驗的操作中, 發送部分具體包括在發送以太網數據包作checksum時,checksum的硬件邏輯判斷checksum硬件邏輯模塊的接口控制信號TX_CSBEGIN的狀態,根據狀態信息確定是否進入到發送以太網數據包 checksum檢驗狀態;在這個狀態,checksum硬件邏輯模塊的硬件邏輯判斷發送以太網幀數據類型,確定是否需要作協議數據包頭的checksum校驗,同時對以太網數據包IP header進行checksum校驗;在 TX_CSUM_IP_HEADER狀態,checksum硬件邏輯模塊根據接口控制信號TX_CSINSERT、 TX_CSCNTRL和TX_CSINIT,來確定是否開始作TCP/UDP header的checksum,確定是否改填充TCP/UDP header的checksum數據包頭格式;硬件做完數據的填充后,進入到發送以太網數據包狀態,開始發送完整的以太網數據包格式的數據到AXI數據鏈路層接口,此幀數據發送完成后跳到IDEL狀態重新開始檢測發送以太網數據包。
全文摘要
本發明公開了基于萬兆網卡的以太網包檢驗和FPGA硬件校驗方法,該萬兆網卡包括用于實現以太網協議數據傳輸的物理層協議的XAUI模塊,用于實現以太網協議數據傳輸的數據鏈路層協議的10GEMAC模塊,用于實現接口轉換的接口時序轉換邏輯模塊,用于管理以太網數據包的AXI以太網模塊,用于數據緩存的AXIDMA模塊,用于實現路由控制的AXI互聯網模塊,用于實現對以太網數據包拆包組包過程的PCIeHardIp模塊,用于實現以太網數據包的硬件校驗總和校驗邏輯的校驗總和硬件邏輯模塊。該硬件實現方法,可以實現以太網數據包的校驗和的硬件計算且計算速度快、以及數據傳輸的穩定性和可靠性高的優點。
文檔編號H04L12/26GK103001827SQ20121050265
公開日2013年3月27日 申請日期2012年11月30日 優先權日2012年11月30日
發明者張慶敏, 張衡, 胡剛 申請人:無錫眾志和達存儲技術股份有限公司