IP2800網(wǎng)絡(luò)處理器管理論文

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

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

IP2800網(wǎng)絡(luò)處理器管理論文

摘要本文介紹了一種基于Intel2800網(wǎng)絡(luò)處理器實現(xiàn)路由器的方法,按照該方法設(shè)計的路由器可以線速處理10G流量的SDH數(shù)據(jù)。

關(guān)鍵字網(wǎng)絡(luò)處理器;路由器;10G

引言

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

路由器作為網(wǎng)絡(luò)核心設(shè)備,其性能直接影響到網(wǎng)絡(luò)傳輸性能和效果。隨著新業(yè)務(wù)的不斷出現(xiàn),路由器功能已經(jīng)不僅僅是轉(zhuǎn)發(fā)分組,而需要提供新的服務(wù):如集成服務(wù),區(qū)分服務(wù),擁塞控制等等。同時,人們還要求路由器能夠支持靈活的配置并提供通用的編程平臺。

網(wǎng)絡(luò)處理器的特點恰好可以滿足對路由器的新的要求。因此基于網(wǎng)絡(luò)處理器設(shè)計路由器,正日益成為國內(nèi)外相關(guān)研究的熱點以及網(wǎng)絡(luò)設(shè)備制造商的首選方案。

1路由器體系結(jié)構(gòu)的發(fā)展趨勢

路由器的體系結(jié)構(gòu)經(jīng)歷了從單處理器到并行處理器,從共享總線到交換結(jié)構(gòu)的發(fā)展過程。第一代路由器中,全體線路接口共享內(nèi)部總線,隨著網(wǎng)絡(luò)上業(yè)務(wù)量和接口模塊的增加,總線上數(shù)據(jù)也隨之增加,同時分組的尋路、轉(zhuǎn)發(fā)都是由軟件處理,加重了CPU的處理負擔,使路由器傳輸性能迅速下降。

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

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

網(wǎng)絡(luò)處理器數(shù)據(jù)平面和控制平面分離的體系結(jié)構(gòu)非常適用于開發(fā)第三代的路由器。

2IntelIXP2800網(wǎng)絡(luò)處理器介紹

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

IXP2800網(wǎng)絡(luò)處理器具有以下的特點:

1)采用多內(nèi)核并行處理器結(jié)構(gòu)。片內(nèi)處理器按任務(wù)分為控制平面處理器(核心處理器)和數(shù)據(jù)層面處理器(微引擎)??刂破矫嫣幚砥魍ǔX撠煼菍崟r的管理任務(wù);數(shù)據(jù)平面處理器進行實時、線速數(shù)據(jù)分組處理。

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

3)優(yōu)化指令集和專用硬件加速處理單元。采用RISC技術(shù),結(jié)合多級流水線技術(shù),大部分指令在一個時鐘周期完成。針對網(wǎng)絡(luò)協(xié)議處理特點,設(shè)置專用硬件加速處理單元,提供專用指令。

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

5)硬件支持的環(huán)和隊列操作。網(wǎng)絡(luò)數(shù)據(jù)處理涉及很多隊列或環(huán)的數(shù)據(jù)結(jié)構(gòu)操作,而入隊和出隊操作需要多次訪問內(nèi)存,極大地影響了數(shù)據(jù)處理分組處理的周期。IXP2800中的SRAM控制器提供了基于SRAM的先入先出隊列,通過硬件實現(xiàn)了環(huán)和隊列操作。

3基于網(wǎng)絡(luò)處理器實現(xiàn)的路由器的結(jié)構(gòu)

3.1硬件體系結(jié)構(gòu)

為了滿足10G流量的數(shù)據(jù)處理能力和可擴展性的要求,一共使用了三臺IXP2800網(wǎng)絡(luò)處理器。POS成幀器的一個輸入輸出端與SDH網(wǎng)絡(luò)相連,其一個輸出端作為第一個入口IXP2800的輸入,經(jīng)過處理的數(shù)據(jù),從第一個入口IXP2800輸出到第二個入口IXP2800,數(shù)據(jù)經(jīng)過相應(yīng)的處理,從第二個入口IXP2800經(jīng)過CSIX交換網(wǎng)絡(luò)傳輸?shù)匠隹贗XP2800,然后通過出口IXP2800發(fā)送到成幀器,通過成幀器的輸入輸出端發(fā)送到SDH。至此,整個數(shù)據(jù)包的分類和路由完成。

3.2網(wǎng)絡(luò)處理器的軟件模塊結(jié)構(gòu)

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

第二個入口IXP2800從功能上可以分為SPI4接收模塊,分類模塊,統(tǒng)計模塊,cell(48字節(jié)長度的數(shù)據(jù)塊)隊列管理模塊,cell調(diào)度模塊和CSIX發(fā)送模塊。從SPI4接口接收前一個IXP2800傳輸來的數(shù)據(jù),通過分類器完成分類后,進行相應(yīng)的統(tǒng)計,最后,經(jīng)過cell隊列管理模塊,cell調(diào)度模塊和CSIX發(fā)送模塊,通過CSIX交換網(wǎng)絡(luò)將數(shù)據(jù)發(fā)送到出口IXP2800。

出口IXP2800從功能上可以分為CSIX接收模塊,包調(diào)度模塊,包隊列管理模塊和包發(fā)送模塊。通過CSIX交換網(wǎng)絡(luò)接收前一個IXP2800發(fā)送來的數(shù)據(jù),調(diào)度和隊列管理功能后,通過Media接口發(fā)送出去。

3.3資源分配和數(shù)據(jù)流的說明

3.3.1第一個入口IXP2800的資源分配和數(shù)據(jù)流

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

預(yù)分類和轉(zhuǎn)發(fā)模塊:該模塊包括PPP剝離/預(yù)分類微塊和IPv4/IPv6處理微塊,共占用8個ME。

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

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

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

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

3.3.2第二個入口IXP2800的資源分配和數(shù)據(jù)流

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

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

統(tǒng)計模塊:從scratchring中讀取數(shù)據(jù)的描述信息,統(tǒng)計每一個類別的數(shù)據(jù)包的個數(shù),統(tǒng)計完成后,把數(shù)據(jù)包的描述信息寫到scratchring中,給后續(xù)模塊使用。

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

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

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

3.3.3出口IXP2800的資源分配和數(shù)據(jù)流

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

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

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

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

4結(jié)束語

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

參考文獻

er著,張建忠,陶智華等譯,吳功宜審校.《網(wǎng)絡(luò)處理器與網(wǎng)絡(luò)系統(tǒng)設(shè)計》.機械工業(yè)出版社,2004

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

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

4陳云芝,白英彩,李小勇.《基于IXP1200網(wǎng)絡(luò)處理器構(gòu)建路由器研究》.計算機應(yīng)用與軟件,2005.5

5李洪杰,張宏科.基于網(wǎng)絡(luò)處理器構(gòu)建的核心路由器方案研究.計算機工程與應(yīng)用,2003.6

6施恩,鄭愛蓉,楊彬,陳宇,許榕生.基于網(wǎng)絡(luò)處理器實現(xiàn)千兆級多功能路由器.計算機應(yīng)用,2005.3

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

8

9IntelCorporation,IntelIXP2800NetworkProcessorHardwareReferenceManual2005

10IntelCorporation,IntelInternetExchangeArchitectureSoftwareBuildingBlocksApplicationsDesignGuide2005

11ntelCorporation,IntelInternetExchangeArchitectureSoftwareBuildingBlocksDeveloper’sManual2005

12IntelCorporation,IntelInternetExchangeArchitectureSoftwareBuildingBlocksReferenceManual2005

13IntelCorporation,IntelIXP2400andIXP2800NetworkProcessorProgrammer’sReferenceManual2005