IP2800網絡處理器管理論文

時間:2022-03-12 10:37:00

導語:IP2800網絡處理器管理論文一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。

IP2800網絡處理器管理論文

摘要本文介紹了一種基于Intel2800網絡處理器實現路由器的方法,按照該方法設計的路由器可以線速處理10G流量的SDH數據。

關鍵字網絡處理器;路由器;10G

引言

隨著Internet技術的飛速發展,新興的網絡業務不斷出現,要求網絡設備具有線速處理能力,同時具有很強的靈活性,以滿足不同的網絡應用的需要。網絡處理器就是為了解決這一問題而研制的一種網絡設備,網絡處理器既具有ASIC芯片的高速處理性能,同時又具有通用處理器的可編程特性,既能完成線速處理分組所要求的高性能硬件功能,又能保證系統的靈活性。

路由器作為網絡核心設備,其性能直接影響到網絡傳輸性能和效果。隨著新業務的不斷出現,路由器功能已經不僅僅是轉發分組,而需要提供新的服務:如集成服務,區分服務,擁塞控制等等。同時,人們還要求路由器能夠支持靈活的配置并提供通用的編程平臺。

網絡處理器的特點恰好可以滿足對路由器的新的要求。因此基于網絡處理器設計路由器,正日益成為國內外相關研究的熱點以及網絡設備制造商的首選方案。

1路由器體系結構的發展趨勢

路由器的體系結構經歷了從單處理器到并行處理器,從共享總線到交換結構的發展過程。第一代路由器中,全體線路接口共享內部總線,隨著網絡上業務量和接口模塊的增加,總線上數據也隨之增加,同時分組的尋路、轉發都是由軟件處理,加重了CPU的處理負擔,使路由器傳輸性能迅速下降。

第二代路由器增強了線路接口卡的功能,該卡上配有一定容量的存儲器和一個存儲路由信息的本地Cache。第二代路由器提高了系統的效率,但仍有兩個問題未解決:第一,隨著網絡規模的擴大,各個端口上的數據流量越來越大,各個端口中包含到達不同目的地的流量越來越多,造成cache命中率下降,導致路由器性能下降。第二,共享總線的體系結構決定了一旦達到共享總線帶寬的極限值,性能很難繼續提高。

第三代路由器設計,邏輯上將控制功能和數據功能兩個主要平面分開,控制平面負責路由表維護、設備管理和異常處理等功能;數據平面負責轉發報文。控制平面又稱之為慢速通道,是速度比較慢的通路,因此大部分數據流量不經過它,主要是少量的路由和協議通信報文。控制平面的大部分功能仍然在通用的處理器上由軟件實現。數據平面負責轉發數據報文,屬于快速通道,線速處理數據報文。在數據平面的輸入側,報文經過分類,用目的IP地址查找路由并轉發。在數據平面的輸出側,報文必須被調度或者排隊;對簡單的IP路由,意味著報文需要被放置到正確的輸出端口隊列中,但QoS保證要求更高級的隊列調度算法。

網絡處理器數據平面和控制平面分離的體系結構非常適用于開發第三代的路由器。

2IntelIXP2800網絡處理器介紹

IXP2800網絡處理器是Intel公司的新一代網絡處理器,支持10Gbps流量數據處理,具有16個1.4GHz的微引擎和一個700Mhz的核心處理器Xscale,可配置3塊RDRAM和4塊QDRSRAM,支持標準的線卡/交換接口標準SPI-4.2或CSIX-L1。

IXP2800網絡處理器具有以下的特點:

1)采用多內核并行處理器結構。片內處理器按任務分為控制平面處理器(核心處理器)和數據層面處理器(微引擎)。控制平面處理器通常負責非實時的管理任務;數據平面處理器進行實時、線速數據分組處理。

2)支持硬件多線程。為了提高網絡處理器的資源利用率,每個微引擎還支持八個硬件線程。每個線程都有一套專門的硬件來存放上下文(Context),以獲得線程切換的零開銷。

3)優化指令集和專用硬件加速處理單元。采用RISC技術,結合多級流水線技術,大部分指令在一個時鐘周期完成。針對網絡協議處理特點,設置專用硬件加速處理單元,提供專用指令。

4)優化的分級存儲組織和分布式存取。在微引擎內部有大量的不同類別的寄存器、本地存儲器、CAM,在微引擎外部有片內存儲器Scratchpad。在網絡處理器外部可以擴展大容量的片外存儲器SRAM和SDRAM。多層次的存儲組織為用戶提供不同速率、不同容量的存儲器,便于用戶根據應用的需求靈活配置。另外,不同的存儲器有獨立的總線支持,程序模塊可并行訪問多種數據存儲單元。

5)硬件支持的環和隊列操作。網絡數據處理涉及很多隊列或環的數據結構操作,而入隊和出隊操作需要多次訪問內存,極大地影響了數據處理分組處理的周期。IXP2800中的SRAM控制器提供了基于SRAM的先入先出隊列,通過硬件實現了環和隊列操作。

3基于網絡處理器實現的路由器的結構

3.1硬件體系結構

為了滿足10G流量的數據處理能力和可擴展性的要求,一共使用了三臺IXP2800網絡處理器。POS成幀器的一個輸入輸出端與SDH網絡相連,其一個輸出端作為第一個入口IXP2800的輸入,經過處理的數據,從第一個入口IXP2800輸出到第二個入口IXP2800,數據經過相應的處理,從第二個入口IXP2800經過CSIX交換網絡傳輸到出口IXP2800,然后通過出口IXP2800發送到成幀器,通過成幀器的輸入輸出端發送到SDH。至此,整個數據包的分類和路由完成。

3.2網絡處理器的軟件模塊結構

第一個入口IXP2800從功能上可以分為包接收模塊,預分類和轉發模塊和SPI4發送模塊。從Media接口接收進來的POS數據,經過PPP頭部剝離后,完成預分類,根據IP數據包的類型,進行IPv4轉發,或者IPv6轉發。最后,SPI4發送模塊通過SPI4接口把數據發送到第二個入口IXP2800,繼續進行處理。

第二個入口IXP2800從功能上可以分為SPI4接收模塊,分類模塊,統計模塊,cell(48字節長度的數據塊)隊列管理模塊,cell調度模塊和CSIX發送模塊。從SPI4接口接收前一個IXP2800傳輸來的數據,通過分類器完成分類后,進行相應的統計,最后,經過cell隊列管理模塊,cell調度模塊和CSIX發送模塊,通過CSIX交換網絡將數據發送到出口IXP2800。

出口IXP2800從功能上可以分為CSIX接收模塊,包調度模塊,包隊列管理模塊和包發送模塊。通過CSIX交換網絡接收前一個IXP2800發送來的數據,調度和隊列管理功能后,通過Media接口發送出去。

3.3資源分配和數據流的說明

3.3.1第一個入口IXP2800的資源分配和數據流

包接收模塊:該模塊把接收到的數據寫到DRAM,同時把數據描述符寫到SRAM。SDH數據經過成幀器后,被組裝成第二層數據包,MSF把數據包分割成一個個固定大小的微包。接收模塊接收SPI-4總線上的微包,根據接收狀態字,把微包組裝成第二層數據包,把組成的數據幀從接收緩沖區復制到SDRAM中,同時,包描述符寫到SRAM中。存放數據包的緩沖區的句柄和其余的關于數據包的描述信息通過ScratchRing傳給預分類和轉發模塊。

預分類和轉發模塊:該模塊包括PPP剝離/預分類微塊和IPv4/IPv6處理微塊,共占用8個ME。

PPP剝離/預分類微塊去掉數據包的第二層PPP頭部,并根據PPP頭部中相關字段的信息,把數據包分類成IPv4數據包,IPv6數據包,或者PPP控制數據包。PPP控制數據包交給XScale核心處理器處理,其余的數據包交給相應的處理模塊處理。

IPv4轉發微塊:該模塊檢查IP數據包是否是有效數據,如果是無效數據,丟棄該IP數據包。如果是有效的IP數據包,根據IP頭部執行最長前綴匹配(LPM)算法,如果找到了一個匹配結果,在該數據包中做標記,交給統計模塊;如果沒有匹配的結果,則該IP數據包交給XScalecore做進一步的處理。

IPv6處理微塊:該模塊包括IPv6轉發子模塊,隧道剝離和隧道封裝子模塊。IPv6轉發子模塊的功能同IPv4轉發子模塊的功能近似。隧道剝離子模塊處理到達終點的封裝了IPv6數據包的IPv4數據報。隧道封裝子模塊處理需要封裝成IPv4的IPv6數據包。一個封裝的IPv6數據包首先經過IPv4轉發模塊,經過LPM查詢后,其下一跳信息標志一個隧道,則該數據包被發送給隧道剝離子模塊,然后交給IPv6轉發子模塊,經過IPv6的LPM查詢后,如果需要經過一個隧道,則交給隧道封裝子模塊,最后封裝完成的數據包像IPv4數據包一樣處理。

SPI4發送模塊:該模塊通過SPI4接口發送數據包。該模塊與發送模塊類似,只是沒有了到調度模塊的反饋,同時在每一個數據包之前加上了一些額外信息,一起發送給第二個入口IXP2800。

3.3.2第二個入口IXP2800的資源分配和數據流

SPI4接收模塊:該模塊通過SPI4接口接收前一個入口IXP2800發送的數據,并組裝成完整的IP數據包。該模塊與包接收模塊類似,只是在接收到的每一個數據包前有額外的描述信息,根據這些信息來形成數據包的包描述符。把包描述符寫到scratchring中交給分類模塊。

分類模塊:從scratchRing中讀取數據的描述信息,讀取數據包頭部,存儲到傳輸寄存器中,使用分類器進行分類,并在每一個數據包的描述符中做出相應的標記。把做過標記的數據包的描述信息寫到scratchring中,給后續模塊使用。

統計模塊:從scratchring中讀取數據的描述信息,統計每一個類別的數據包的個數,統計完成后,把數據包的描述信息寫到scratchring中,給后續模塊使用。

Cell隊列管理模塊:與包隊列管理模塊算法相同,只是包隊列管理模塊是基于數據包的,而該模塊是基于cell的。

CSIX調度模塊:與包調度模塊的算法相同,只是包調度模塊是基于數據包的,該模塊是基于C幀(固定長度的數據塊)來調度的。

CSIX發送模塊:該模塊從SPI4接口上發送數據包。該模塊的算法與發送模塊相同,只是發送模塊是基于數據包發送的,而該模塊是基于C幀發送的。

3.3.3出口IXP2800的資源分配和數據流

CSIX接收模塊:該模塊從CSIX交換網絡接收C幀,把它們組裝成IP數據包。根據接收的數據,形成IP數據包的描述符信息,存儲在Scratchring中,交給后續模塊處理。

包隊列管理模塊:該隊列管理器在SRAM隊列上執行入隊列和出隊列操作,QM從scratchring接收到一個來自分類模塊的入對列請求,在隊列上執行入隊列操作;從調度ME得到出隊列消息,在隊列上執行出隊列操作。當隊列在空與非空之間轉換時,QM通過鄰居寄存器發送一個轉換消息給調度,每完成一個出隊列操作,QM就會向發送scratchring中傳遞一個發送請求。

包調度模塊:調度的功能就是從所有的隊列中選擇一個準備發送的packet后,向QM發送一個出隊列請求,調度的另一個任務就是處理QM返回的對于出隊列請求的回復消息。一共有兩個線程:一個調度線程和一個QM消息處理線程。調度線程實際調度一個隊列,并且給QM發送出隊列請求。消息處理線程處理從QM回來的消息。

包發送模塊:發送通過MSF向千兆網口發送數據包,發送模塊從scratchring中取出一個發送請求(來自QM,用來訪問包描述符),并把取到的包切割成微包,并通過數據包描述信息中指定的端口發送出去,所有分段發送完之后,包緩沖區再循環使用。發送模塊周期性地與調度模塊通信,以通知調度有多少包發送成功,如果端口上隊列中的包數目超過一個限定(就是指這個隊列中的包被調度但是一直沒有發送出去),就不再對這個端口上的隊列進行調度。

4結束語

本文介紹了一種基于IntelIXP2800網絡處理器的可以處理10G數據流量的路由器的實現方法,在一些模塊的設計上使用了比較簡單的方法,隨著各個模塊的逐步完善,通過該設計實現的路由器的靈活性必將更好,效率必將更高。

參考文獻

er著,張建忠,陶智華等譯,吳功宜審校.《網絡處理器與網絡系統設計》.機械工業出版社,2004

2AndrewS.Tanenbaum著,潘愛民譯,徐明偉審.《計算機網絡》.清華大學出版社

3譚章熹,林闖,任豐源,等.網絡處理器的分析與研究.軟件學報,2003,14

4陳云芝,白英彩,李小勇.《基于IXP1200網絡處理器構建路由器研究》.計算機應用與軟件,2005.5

5李洪杰,張宏科.基于網絡處理器構建的核心路由器方案研究.計算機工程與應用,2003.6

6施恩,鄭愛蓉,楊彬,陳宇,許榕生.基于網絡處理器實現千兆級多功能路由器.計算機應用,2005.3

7李金庫,張德運,楊振江,廖明濤.基于網絡處理器的DiffServ邊界路由器研究與實現.微電子與計算機,2004.7

8

9IntelCorporation,IntelIXP2800NetworkProcessorHardwareReferenceManual2005

10IntelCorporation,IntelInternetExchangeArchitectureSoftwareBuildingBlocksApplicationsDesignGuide2005

11ntelCorporation,IntelInternetExchangeArchitectureSoftwareBuildingBlocksDeveloper’sManual2005

12IntelCorporation,IntelInternetExchangeArchitectureSoftwareBuildingBlocksReferenceManual2005

13IntelCorporation,IntelIXP2400andIXP2800NetworkProcessorProgrammer’sReferenceManual2005