一種全硬件tcp協(xié)議棧實現方法
【技術領域】
[0001] 本發(fā)明涉及一種全硬件TCP協(xié)議棧實現方法,尤其是一種基于ASIC或者FPGA器 件,通過全硬件方式實現TCP/IP協(xié)議棧中網絡接口層、網絡層和傳輸層的方法。屬于大規(guī) 模集成電路設計以及網絡通信技術領域。
【背景技術】
[0002] 隨著信息技術的發(fā)展,功能化模塊化的設計思想已經逐漸成為了實現復雜功能的 必要選擇,實現方式也從復雜的高度集成的單一設備向功能分立的系統(tǒng)實現方式轉變。這 種設計思想和實現方式能夠顯著減低實現復雜度,使設計、調試和維護等操作簡單化。比如 在衛(wèi)星地面站或者雷達中,需要多種信號采集設備、信號處理設備以及顯示設備。這就需要 一種成熟開放、傳輸距離遠、方便靈活的通信協(xié)議來實現各設備之間的信息交互。作為當前 發(fā)展最為成熟、應用最為廣泛的TCP/IP協(xié)議和以太網技術已經成為了網絡通信的標準,其 優(yōu)點在于通信速率高、傳輸距離遠、方便靈活和抗干擾能力強。
[0003] -般來講,實現以太網網絡接口的方法主要有軟件和硬件兩種方式。
[0004] 軟件方式是采用通用型處理器(INTEUAMD的X86架構的處理器)或者嵌入式處理 器(ARM、IBM的RISC架構的處理器),其上能夠運行各種操作系統(tǒng),通過操作系統(tǒng)中的軟件 實現的TCP/IP協(xié)議來實現網絡通信。這種實現方式的優(yōu)點是簡化了繁瑣的硬件設計并且 比較靈活。然而缺點也比較明顯,當網絡速度達到吉比特數量級時,主CPU越來越繁忙,其 中大部分處理負荷都是來自對TCP/IP協(xié)議的處理,比如對IP數據包的校驗處理、對TCP數 據流的可靠性和一致性處理。大量協(xié)議數據還需要通過I/O中斷進行操作,不斷在網絡接 口緩沖區(qū)和應用程序內存之間進行數據交換,這些額外負擔極大地降低了主CPU的處理效 率,增加了應用計算的平均等待時間。按照CPU對網絡數據流的處理比率分析,大概CPU每 處理1比特網絡數據,就將消耗1Hz的處理性能,也就是說需要2GHz的CPU處理能力滿負 荷運行才能滿足1GB以太網數據流的處理要求。面對網絡帶寬和速度的飛速增長,這種傳 統(tǒng)的通過軟件進行TCP/IP協(xié)議處理的方式已經越來越成為高性能網絡通信的瓶頸。
[0005] 硬件方式是通過FPGA或者ASIC使用全硬件的方式來實現TCP/IP協(xié)議棧,囊括了 TCP/IP協(xié)議棧全部的四層結構,獨立于CPU運作,信息的進棧/出棧,封包/解包等網絡數 據處理全部在實現了TCP/IP協(xié)議棧的FPGA或者ASIC芯片中進行,卸載掉了CPU對于龐 大數據處理的負載,從而使CPU保持高效運轉且能夠實現高速網絡傳輸,同時也避免了CPU 受到網絡攻擊的危險,增加了CPU工作的安全性。該技術通常被成為TCPOffloadEngine (TOE)技術。
[0006]美國專利US6996070B2 "TCP/IPOFFLOADDEVICEWITHREDUCEDSEQUENTIAL PROCESSING" 和美國專利US8402142B2"SYSTEMANDMETHODFORTCP/IPOFFLOAD INDEPENDENTOFBANDWIDTHDELAYPRODUCT"給出了兩種實現方法,實現了TOE功能。但是 其存在兩個主要的缺陷,首先應用領域有限制,很難移植到嵌入式領域;其次從設計上來講 其層次化比較模糊,實現架構比較復雜。
[0007] 另外商用化的TOE芯片主要有美國Broadcom公司的BCM5709C系列和韓國WIZnet 公司的W5100系列芯片。目前,國內還沒有類似的專利和芯片。
【發(fā)明內容】
[0008] 本發(fā)明旨在解決傳統(tǒng)的通過軟件進行TCP/IP協(xié)議處理方式帶來的網絡通信的瓶 頸。本發(fā)明基于大規(guī)模集成電路器件,通過全硬件的方式實現TCP/IP協(xié)議棧中網絡接口 層、網絡層和傳輸層,極大的提高了CPU的處理效率和網絡傳輸速率。
[0009] 本發(fā)明的目的是通過以下技術方案實現的。
[0010] 本發(fā)明的一種全硬件TCP協(xié)議棧實現方法在實現上采用了如下五種設計思想和 技術:1)分層設計思想;2)接收和發(fā)送通道分離;3)標準化的控制和數據接口技術;4)多 級狀態(tài)機;5)數據多級緩存和高效預取技術。旨在提高傳輸速度、降低設計難度、提高設計 可重用性。
[0011] 本發(fā)明的一種全硬件TCP協(xié)議棧實現方法其硬件平臺使用網絡接口芯片100、外 置PHY芯片101和DDR芯片102構成。其中網絡接口芯片100為主控制芯片,實現了TCP/ IP協(xié)議棧數據鏈路層、網絡層和傳輸層的功能,可采用FPGA(FieldProgrammableGate Array,現場可編程門陣列),也可使用ASIC(Application_SpecificIntegratedCircuit, 專用集成電路)實現。外置PHY芯片101實現了TCP/IP協(xié)議棧的物理層功能,可選擇性 比較廣泛,只要支持Mil、GMII、SGMII和RGMII等標準接口的芯片都可以用在本發(fā)明中, 比如MARVELL公司的88E1111、REALTEK公司的RTL8201CP、MICREL公司的KSZ8001L/S和 KSZ8041NL。DDR芯片實現數據緩沖,主要是為了適應比較復雜情況的網絡情況和比較大的 網絡抖動,在比較簡單的網絡環(huán)境中也可以使用網絡接口芯片100中的內部RAM做為數據 緩沖。
[0012] 本發(fā)明的一種全硬件TCP協(xié)議棧實現方法,其中所述的網絡接口芯片100由MAC 模塊1、MAC控制模塊2、組包模塊3、解包模塊4、ARP模塊5、IP模塊6、ICMP模塊7、TCP模 塊8、數據交互引擎9、DDR控制器10和配置和管理模塊11構成。其功能和連接方式為:MAC 模塊1與外部的PHY芯片連接,其輸入接口與組包模塊3相連,輸出接口與解包模塊4相 連,控制和狀態(tài)接口與MAC控制模塊2相連;MAC控制模塊2與MAC模塊1交互發(fā)送接收狀 態(tài)信息以及流控制信息,分別控制組包模塊3和解包模塊4的發(fā)送和接收;解包模塊4會根 據頭信息判斷接收包類型,把不同類型的包發(fā)送給ARP模塊5和IP模塊7處理;IP模塊7 把接收的ICMP包發(fā)給ICMP模塊6處理,把數據包去掉IP包頭之后交給TCP模塊8處理; TCP模塊8通過標準的存儲器接口方式把接收的數據發(fā)送到數據交互引擎9,并從數據交互 引擎9得到需要發(fā)送的數據;數據交互引擎9和DDR控制器11相連,完成數據緩沖,并且該 模塊還實現了芯片外部接口邏輯;配置和管理模塊10通過配置接口分別于TCP模塊8和數 據交互引擎9相連。
[0013] 本發(fā)明的一種全硬件TCP協(xié)議棧實現方法,其中所述的MAC模塊1由管理數據接 口仲裁11、地址配置寄存器組12、傳輸引擎13、接收引擎14、流量控制模塊15、PHY接口控 制邏輯16構成;解包模塊3由接收計數器21、接收參數寄存器組22、有效性判斷和接收分 配模塊23構成;組包模塊4由發(fā)送狀態(tài)機41、幀成形模塊42、發(fā)送數據緩沖43構成;ARP 模塊5由ARP包檢測和一些功能邏輯構成;ICMP模塊6由PING應答數據緩沖61、CRC生成 模塊62構成;IP模塊7由IP包有效性判斷模塊71、IP包頭生成72、IP包頭緩沖RAM73構 成。TCP模塊8由主控制狀態(tài)機81、TCP接收引擎82、TCP發(fā)送引擎83、TCP包解析和參數 提取模塊84和發(fā)送合成復用模塊85構成;數據交互引擎9由主機接口控制模塊91、讀寫 訪問控制模塊92、接收數據通道93和發(fā)送數據通道94構成;配置和管理模塊10由系統(tǒng)寄 存器組和中斷控制單元構成。
[0014] 本發(fā)明的一種全硬件TCP協(xié)議棧實現方法,其數據的接收包括如下步驟: 1. MAC模塊接收PHY輸出的數據,完成對以太網幀的解包操作,在這個過程中會比較目 的地址是否為本機目的地址,以及判斷幀是否正確。如果正確,MAC模塊會去掉幀頭部和尾 部然后把數據發(fā)送到解包模塊; 2. 解包模塊會根據頭信息判斷接收包類型,如果是ARP包會發(fā)給ARP模塊處理,ARP模 塊處理完成之后產生的ARP應答包會通知組包模塊發(fā)送,如果是IP數據包會發(fā)送給IP模 塊處理; 3. IP模塊內部的IP包有效性判斷模塊會分析IP包頭的參數信息和CRC是否正確。如 果是ICMP包會發(fā)給ICMP模塊處理,ICMP模塊處理完成之后產生的ICMP應答包通過組包 模塊發(fā)送,如果是TCP數據包會去掉IP頭然后發(fā)送給TCP模塊處理; 4. TCP模塊中的TCP包解析和參數提取模塊得到TCP包頭中的參數,判斷TCP包類型。 如果是數據包會交給TCP接收引擎處理,TCP接收引擎中的接收控制狀態(tài)機會根據設置的 條件發(fā)送數據應答包,并且把接收的數據放入接收數據緩沖,存儲控制模塊從緩沖中讀出 數據交給數據交互引擎; 5. 接收的數據在數據交互引擎的接收數據通道內再做一級緩存,然后啟動讀寫訪問控 制模塊把接收的數據放入DDR緩存,并且通過主機接口控制模塊生成接收數據中斷通知主 機取數據; 6. 主機接口控制模塊在有數據接收的時候會啟動讀寫訪問控制模塊從DDR預取數據, 等待主機讀取。
[0015] 本發(fā)明的一種全硬件TCP協(xié)議棧實現方法,其數據的發(fā)送包括如下步驟: 1. 主機把需要發(fā)送的數據通過數據交互引擎送入DDR緩存; 2. 數據交互引擎的發(fā)送數據通道通過讀寫訪問控制模塊從DDR預取數據放入發(fā)送 FIFO中緩存。發(fā)送BUF寫狀態(tài)機判斷到發(fā)送FIFO有數據后會啟動讀FIFO操作,然后把需 要發(fā)送的數據按照幀長度送入發(fā)送BUFA和發(fā)送BUFB,在這個過程中完成數據CRC的計算。 如果是重傳操作,重傳BUF控制狀態(tài)機會從DDR中讀取出重傳數據放入重傳BUF,同樣在寫 入過程中也完成數據CRC的計算。數據準備好之后通知TCP模塊有數據需要發(fā)送; 3. TCP發(fā)送引擎在發(fā)送控制狀態(tài)機的控制下生成TCP包頭存入TCP包頭緩沖模塊,然后 通知IP模塊發(fā)送。因為發(fā)送和接收同時進行,所以發(fā)送請求會經過發(fā)送合成復用模塊復用 TCP發(fā)送引擎和TCP接收引擎的發(fā)送請求; 4. IP模塊根據TCP模塊提供的發(fā)送數據包的信息生成IP包頭存入IP包頭緩沖模塊, 通知組包模塊發(fā)送; 5. 在組包模塊的發(fā)送狀態(tài)機的控制下,從IP模塊讀出IP頭,從TCP模塊讀出TCP頭, 從數據交互引擎讀出待發(fā)送的數據,然后根據以太網幀格式生成正確的以太網幀送入MAC 模塊