摘 要: 分析了Intel IXP2400網(wǎng)絡(luò)處理器" title="網(wǎng)絡(luò)處理器">網(wǎng)絡(luò)處理器硬件結(jié)構(gòu)和軟件模型,提出了基于網(wǎng)絡(luò)處理器的高效,、可擴(kuò)展、分層核心路由器體系結(jié)構(gòu),,重點(diǎn)闡述它的系統(tǒng)處理軟件模型,。
關(guān)鍵詞: 網(wǎng)絡(luò)處理器 體系結(jié)構(gòu) 微引擎" title="微引擎">微引擎 數(shù)據(jù)處理 路由器 軟件開發(fā)平臺(tái)
Internet骨干網(wǎng)絡(luò)流量的增長及新業(yè)務(wù)的出現(xiàn),要求路由器具有線速和智能的處理能力,?;谕ㄓ锰幚砥鱃PP(General Purpose Processor)的解決方案雖然靈活,但在數(shù)據(jù)處理速度上難以滿足要求,;基于專用集成電路ASIC(Application Specfic Integrated Circuit)的解決方案雖然有效地提高了網(wǎng)絡(luò)處理速度,,卻降低了靈活性。它們都難以滿足下一代互聯(lián)網(wǎng)的要求,。在這種情況下,,一種可編程的網(wǎng)絡(luò)處理器NP(Network Processor)被應(yīng)用到路由器設(shè)計(jì)中,成為一種新興,、有效的統(tǒng)一解決方案,。基于網(wǎng)絡(luò)處理器的路由器具有ASIC高速處理性能和GPP的靈活性,, 得到了快速的發(fā)展,。
1 網(wǎng)絡(luò)處理器硬件架構(gòu)
IXP2400網(wǎng)絡(luò)處理器是Intel公司在2002年推出的第二代互聯(lián)網(wǎng)交換架構(gòu)IXA網(wǎng)絡(luò)處理器[1]。它面向中高端應(yīng)用,,可用于實(shí)現(xiàn)OC-48的網(wǎng)絡(luò)路由交換設(shè)備,。IXP2400的結(jié)構(gòu)充分體現(xiàn)了片上系統(tǒng)SoC(System on Chip)的思想,。IXP2400結(jié)構(gòu)框圖如圖1所示,它的內(nèi)部主要包括8個(gè)完全可編程的8線程微引擎ME和1個(gè)XScale核,。此外,,還有用于連接外部設(shè)備MAC的媒質(zhì)和交換結(jié)構(gòu)接口MSF單元、連接各種存儲(chǔ)器和總線的接口單元等,。這些單元通過內(nèi)部的高速數(shù)據(jù)總線和控制總線彼此協(xié)作,。
XScale核是32位的嵌入式精簡指令集處理器,時(shí)鐘頻率是600MHz,,具有32KB的指令緩存和32KB的數(shù)據(jù)緩存,,它在IXP2400中起控制和管理作用。具體包括:對(duì)系統(tǒng)初始化和配置,;提供系統(tǒng)時(shí)鐘,;建立并管理路由表;提供一個(gè)對(duì)應(yīng)于IXP2400各寄存器,、存儲(chǔ)器和外部存儲(chǔ)器的地址映射表等,。它在應(yīng)用中主要完成加載微碼、啟動(dòng)微引擎,、完成必要的數(shù)據(jù)分析,、高復(fù)雜度的算法、統(tǒng)計(jì),、管理等應(yīng)用任務(wù),。
IXP2400中的每個(gè)微引擎就是一個(gè)32位精簡指令集RISC處理器,時(shí)鐘頻率是600MHz,,可以由8個(gè)并行硬件線程共享,。數(shù)據(jù)包的接收、處理和發(fā)送等任務(wù)均由微引擎指令存儲(chǔ)區(qū)中微代碼程序的各線程并行執(zhí)行,。網(wǎng)絡(luò)處理器數(shù)據(jù)的高速轉(zhuǎn)發(fā)正是因?yàn)槌浞掷昧擞布牟⑿行浴?BR> IXP2400通過數(shù)據(jù)線連接著各種存儲(chǔ)設(shè)備,,如SRAM和DRAM等。DRMA主要用于存放需要處理和轉(zhuǎn)發(fā)的數(shù)據(jù)包,、路由表等大型數(shù)據(jù)結(jié)構(gòu),;SRAM主要存放對(duì)數(shù)據(jù)包包頭進(jìn)行處理所需的重要信息和數(shù)據(jù)包的隊(duì)列描述等內(nèi)容,,如表、緩沖區(qū)描述符。
IXP2400具有豐富的標(biāo)準(zhǔn)高速I/O接口,,包括物理鏈路接口,、交換接口,、存儲(chǔ)器接口,、PCI總線接口,能夠方便地與其他廠家的設(shè)備進(jìn)行接口,、互連,;擁有專用硬件加速處理單元,;采用專用硬件對(duì)特定協(xié)議操作進(jìn)行協(xié)處理:如CRC、哈希查找,、樹查找,、字符匹配;針對(duì)安全產(chǎn)品,,提供加/解密,、大數(shù)運(yùn)算等硬件單元。
綜上所述,,IXP2400擁有網(wǎng)絡(luò)處理的一般特點(diǎn),,從系統(tǒng)角度看,,IXP2400屬于一個(gè)并行式的多處理器共享總線的計(jì)算機(jī)系統(tǒng),。
2 網(wǎng)絡(luò)處理器軟件開發(fā)平臺(tái)
Intel提供了網(wǎng)絡(luò)處理器開發(fā)平臺(tái),稱為Intel IXA可移植" title="可移植">可移植框架(Intel IXA portability framework)[2],。IXP2400軟件開發(fā)可移植框架層次圖如圖2所示,。
Intel IXA可移植框架中,將數(shù)據(jù)的處理分為兩個(gè)層次:數(shù)據(jù)面(Data Plane,,也稱為Fast Path)處理和控制面(Control Plane,,也稱為Slow Path)處理。
數(shù)據(jù)平面主要運(yùn)行在微引擎處理之上,,充分利用數(shù)據(jù)包的無關(guān)性,,采取并行處理方式,用于實(shí)現(xiàn)高速轉(zhuǎn)發(fā)數(shù)據(jù)包的處理功能,,具有線速執(zhí)行特點(diǎn),。數(shù)據(jù)面的數(shù)據(jù)包處理可分為若干微模塊Microblock。各個(gè)微模塊之間相互獨(dú)立,,可實(shí)現(xiàn)數(shù)據(jù)面層次上的可移植性,。
控制平面一般運(yùn)行在網(wǎng)絡(luò)處理器核上,處理各種通信協(xié)議,、更新路由表,、管理數(shù)據(jù)平面任務(wù)與狀態(tài)、完成高層的QoS控制等,。這些操作的性能要求低于數(shù)據(jù)層面,,因此通常采用高性能" title="高性能">高性能通用處理器硬件平臺(tái)。為了有效支持網(wǎng)絡(luò)處理功能,,控制平面與數(shù)據(jù)平面之間存在復(fù)雜的信息交互與依賴關(guān)系,。
IXP2400的軟件開發(fā)分為內(nèi)核程序和微代碼兩部分。XScale內(nèi)核的開發(fā)通常使用基于嵌入式操作系統(tǒng)集成開發(fā)工具" title="開發(fā)工具">開發(fā)工具,,如WindRiver公司提供的基于嵌入式操作系統(tǒng)VxWorks的集成開發(fā)工具Tornado或BMR TEC CO提供的基于嵌入式操作系統(tǒng)Montavista Linux 的集成開發(fā)工具Teja,。Teja開發(fā)工具給基于網(wǎng)絡(luò)處理器的嵌入式開發(fā)帶來極大的方便,,它能縮短開發(fā)周期,優(yōu)化生成代碼,,提高代碼性能,,而且生成的代碼很容易移植到不同的目標(biāo)系統(tǒng)。使用Teja集成開發(fā)工具,,能獨(dú)立于復(fù)雜的硬件而將網(wǎng)絡(luò)應(yīng)用表達(dá)為狀態(tài)機(jī),。狀態(tài)機(jī)邏輯可以被映射到選定的目標(biāo)網(wǎng)絡(luò)處理器的分布資源,基于這種邏輯設(shè)計(jì)和到硬件的邏輯映射,,生成優(yōu)化的目標(biāo)代碼(C,、C++和MicroC)并且編譯生成最終的映像文件。此外,,Teja對(duì)于此邏輯和系統(tǒng)設(shè)計(jì)還能提供模擬測(cè)試和調(diào)試功能,;IXP2400中對(duì)微引擎的編程使用Intel公司提供的Developer Workbench開發(fā)環(huán)境,主要使用微代碼來進(jìn)行編程,。Developer Workbench提供了完善的編譯,、鏈接、仿真和調(diào)試功能,。
Intel IXA可移植框架中最重要的組成部分就是在微引擎上和XScale核上開發(fā)的代碼模塊,。基于不同硬件開發(fā)的代碼模塊分別為微模塊和核心組件(Core component),。每個(gè)模塊都代表了一個(gè)進(jìn)行包處理的代碼單元,。這里實(shí)際上引入了構(gòu)件的思想,各種模塊以一定的順序組織在一起,,形成一個(gè)特定的應(yīng)用,。
3 基于網(wǎng)絡(luò)處理器IXP2400的核心路由器體系結(jié)構(gòu)
路由器體系結(jié)構(gòu)[3]的發(fā)展經(jīng)歷了四次大的發(fā)展,由單機(jī)集中式到單機(jī)分布式共享總線,,再到分布式Crossbar結(jié)構(gòu),,最后到多機(jī)互聯(lián)的集群式結(jié)構(gòu),目前正朝著系統(tǒng)化,、高性能,、可擴(kuò)展方向發(fā)展。由于基于網(wǎng)絡(luò)處理器的路由器體系能夠滿足這些要求,,被公認(rèn)為推動(dòng)下一代網(wǎng)絡(luò)向靈活性和高性能發(fā)展的核心技術(shù),。Princeton大學(xué)的可擴(kuò)充路由器VERA[4]和Columbia大學(xué)的Genesis系統(tǒng)[5]在這方面做了一些推進(jìn)。前者主要是基于區(qū)分服務(wù)Diffserv體系結(jié)構(gòu),,注重服務(wù)的靈活性和可擴(kuò)充性,;后者基于“Spawn”思想和Netbind機(jī)制,注重虛擬網(wǎng)絡(luò)系統(tǒng)的動(dòng)態(tài)創(chuàng)建,,但是兩者都沒有提出一個(gè)通用的體系模型,。
從本質(zhì)上說,,路由器是一種進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)包轉(zhuǎn)發(fā)的網(wǎng)絡(luò)設(shè)備,其體系結(jié)構(gòu)可分為三大部分:(1)輸入/輸出端口,;(2)路由計(jì)算及處理,;(3)交換結(jié)構(gòu)。其中路由計(jì)算和處理是路由器的關(guān)鍵,,對(duì)路由器高性能和靈活性起決定作用,。由于網(wǎng)絡(luò)處理器IXP2400具有高速和靈活性,本文采用IXP2400作為路由計(jì)算和處理部分,,提出了一種全雙工,、可擴(kuò)展的高性能路由器系統(tǒng)體系結(jié)構(gòu),如圖3所示,。
在圖3中,,IXP2400是系統(tǒng)核心部分,負(fù)責(zé)對(duì)數(shù)據(jù)包進(jìn)行轉(zhuǎn)發(fā),,實(shí)現(xiàn)路由功能,。SRAM是IXP2400的外接存儲(chǔ)設(shè)備,,通過SRAM Controller與IXP2400連接,,主要實(shí)現(xiàn)存儲(chǔ)數(shù)據(jù)包處理過程中用到的發(fā)送列隊(duì)、查找表等數(shù)據(jù)結(jié)構(gòu),。DRAM也是IXP2400外接的存儲(chǔ)設(shè)備,,通過DRAM Controller與IXP2400連接,主要存儲(chǔ)數(shù)據(jù)包和路由表,??刂铺幚砥魇荌XP2400的外接處理器,通過PCI Controller與IXP2400連接,,主要為系統(tǒng)提供高層的控制和管理功能,。物理層設(shè)備收發(fā)數(shù)據(jù)包,通過介質(zhì)和交換接口MSF與IXP2400連接,。交換結(jié)構(gòu)作為處理器與外部接口的傳輸樞紐,,對(duì)整個(gè)系統(tǒng)的性能起著至關(guān)重要的作用。它主要分為總線,、Cross-bar(縱橫制矩陣)和共享內(nèi)存三種方式,。Cross-bar同其他技術(shù)相比,具有成本低,,可擴(kuò)展性良好和非阻塞特性,并且可以根據(jù)實(shí)際需要擴(kuò)充寬帶,。
4 基于網(wǎng)絡(luò)處理器IXP2400的核心路由器系統(tǒng)處理軟件模型
基于IXP2400的核心路由器軟件模塊框圖如圖4所示。入口(Ingress)IXP2400首先通過IXF1104或IXF6048從外部網(wǎng)絡(luò)接收數(shù)據(jù)包,,然后對(duì)數(shù)據(jù)進(jìn)行處理,,并將處理后的數(shù)據(jù)通過交換接口芯片發(fā)送到交換結(jié)構(gòu)(SF),;出口(Egress) IXP2400首先通過交換接口芯片從交換結(jié)構(gòu)接收數(shù)據(jù),然后對(duì)數(shù)據(jù)包進(jìn)行處理,,最后通過IXF1104或IXF6048將數(shù)據(jù)包發(fā)送出去,。微引擎的編程模式有流水線模式(HTC)和線程池(POTS)模式,二者各有優(yōu)缺點(diǎn),。本文采用了HTC和POTS相結(jié)合的編程模式,,揚(yáng)長避短,以取得最佳的處理效率,。所有的Context Pipe Stage模塊(如包接收,、包發(fā)送、列隊(duì)管理等)各自占據(jù)一個(gè)單獨(dú)的微引擎,,采用HTC方式,,每個(gè)Context Pipe Stage模塊都映射到單獨(dú)的一個(gè)微引擎上。而Funcational Pipeline映射到4個(gè)微引擎上,,采用POTS方式,,執(zhí)行PPP Decap(數(shù)據(jù)包解封裝)、Classfication(數(shù)據(jù)包分類)和IP Forwarding(IP數(shù)據(jù)包轉(zhuǎn)發(fā))等操作,。
如圖4所示,,系統(tǒng)的數(shù)據(jù)處理由以下模塊組成:
(1)包接收模塊。包接收(Packet Rx)模塊是一個(gè)與低層硬件密切相關(guān)的驅(qū)動(dòng)模塊,,負(fù)責(zé)接收來自外部網(wǎng)絡(luò)的數(shù)據(jù)包分片mpacke,,并將mpacket重組得到一個(gè)完整的數(shù)據(jù)包。將重組后的數(shù)據(jù)包寫入DRAM,,建立包頭信息,,Packet Rx模塊使用一個(gè)微引擎上的8個(gè)Thread來進(jìn)行mpacket包的接收和重組,每個(gè)Thread負(fù)責(zé)處理一個(gè)mpacket,。
(2)解封裝/分類/過濾模塊,。數(shù)據(jù)包處理模塊包括PPP解封裝、分類,、轉(zhuǎn)發(fā),、過濾子模塊。這些子模塊組成Funcational Pipeline,,運(yùn)行在4個(gè)微引擎,、32個(gè)線程上。PPP解封裝子模塊通過修改Metadata中的offset和size,,將MAC幀頭去掉,,提取IP數(shù)據(jù)幀,實(shí)現(xiàn)數(shù)據(jù)包的解封裝功能。分類子模塊執(zhí)行分類操作,,將數(shù)據(jù)包分為IPv4,、IPv6和ARP等類型。如果是ARP數(shù)據(jù)包,,將其標(biāo)記為異常數(shù)據(jù)包送到Xscale Core作進(jìn)一步處理,;否則,將數(shù)據(jù)包傳送到下一個(gè)處理模塊處理,。
(3)包轉(zhuǎn)發(fā)模塊,。首先檢查包頭是否符合RFC2460規(guī)范。如果不符合,,則將該包丟棄,;否則,根據(jù)IP頭進(jìn)行最長前綴匹配LPM查找,,得到Next Hop ID(下一跳ID),、Fabric Blade ID和Output Port三個(gè)參數(shù)。如果LPM沒有找到匹配表項(xiàng),,則將包標(biāo)記為異常提交給Xscale Core作進(jìn)一步的處理,;否則,根據(jù)Next Hop ID進(jìn)行表查詢,,獲得PPP頭信息,。將數(shù)據(jù)包封裝為PPP格式之后, Forwarder將包交給DL-QM-Sink模塊,,該模塊判斷數(shù)據(jù)包是否合法,,若合法,,則向列隊(duì)管理發(fā)送加入隊(duì)列請(qǐng)求,,將數(shù)據(jù)包加入到相應(yīng)的發(fā)送隊(duì)列。此外,, Forwarder還將修改后的IP頭和包描述符Metadata寫回SRAM,。
(4)隊(duì)列管理模塊。管理模塊是一個(gè)運(yùn)行在單個(gè)微引擎的驅(qū)動(dòng)模塊,,負(fù)責(zé)利用SRAM Controller中的Q-Array硬件結(jié)構(gòu)對(duì)發(fā)送隊(duì)列執(zhí)行解封裝Decap和封裝Encap操作,。
(5)發(fā)送調(diào)度模塊。模塊將處理來自Fabric的流量控制信息,、來自QM的隊(duì)列轉(zhuǎn)換信息和來自MSF的發(fā)送狀態(tài)機(jī),。
(6)CSIX發(fā)送模塊。該模塊是位于單個(gè)微引擎的驅(qū)動(dòng)模塊,,接收來自QM發(fā)送的消息,,對(duì)于每次發(fā)送請(qǐng)求,微模塊將每個(gè)Cframer寫入發(fā)送緩沖TBUF,通過MSF發(fā)送狀態(tài)機(jī)發(fā)送到Fabric,。
(7)CSIX接收模塊,。接收來自CSIX Fabric的Cframer,并將其重組為IP數(shù)據(jù)包,。
(8)包封裝模塊,。為接收到的信息添加包頭,將IP Packet封裝為PPP格式,,并向隊(duì)列管理發(fā)送加入隊(duì)列請(qǐng)求,,請(qǐng)求將封裝后的包加入到相應(yīng)的發(fā)送隊(duì)列。
(9)出口的隊(duì)列模塊,。該模塊與信元隊(duì)列模塊的區(qū)別在于列隊(duì)中傳遞的是分組而不是信元,。對(duì)于每個(gè)出隊(duì)請(qǐng)求,分組隊(duì)列模塊向調(diào)度模塊返回一個(gè)出隊(duì)響應(yīng)消息,。
(10)出口包調(diào)度模塊,。出口包調(diào)度模塊是基于分組的調(diào)度,不需要處理來自Fabric的流控信息,,出口調(diào)度模塊對(duì)端口進(jìn)行WRR調(diào)度,,對(duì)每個(gè)端口的隊(duì)列可進(jìn)行DRR(Deficit Round Robin)調(diào)度。
(11)包發(fā)送模塊,。通過媒體介質(zhì)接口發(fā)送分組,,將分組分段成mpacket,并寫入TBUF,,通過MSF狀態(tài)機(jī)進(jìn)行發(fā)送,。
本文以Intel IXP2400網(wǎng)絡(luò)處理器為例,討論了網(wǎng)絡(luò)處理器硬件結(jié)構(gòu)和軟件開發(fā)技術(shù),,并在此基礎(chǔ)上提出了一種基于網(wǎng)絡(luò)處理器的路由器體系結(jié)構(gòu)和軟件開發(fā)流程,。在今后幾年里,基于網(wǎng)絡(luò)處理器的路由器將有著非常巨大的發(fā)展空間,,但其發(fā)展也是一個(gè)復(fù)雜的,、長期的過程,將面臨嚴(yán)峻的挑戰(zhàn),。
參考文獻(xiàn)
1 Intel Corp.Intel IXP2400 Network Processor Hardware Refer-ence Manual.Intel Press,,2003:27~29
2 Intel Corp.Intel Internet Exchange Architecture Portability Framework.Intel Press,2003:16~22
3 徐 恪,,吳建平,,徐明偉.高等計(jì)算機(jī)網(wǎng)絡(luò)——體系結(jié)構(gòu)、協(xié)議機(jī)制,、算法設(shè)計(jì)與路由技術(shù).北京:機(jī)械工業(yè)出版社,,2003:495~505
4 Karlin S,Peterson L.VERA:An extensible router architecture.Computer Networks,2002,;38(3):277~293
5 Kounavis M E,,Campbell A T,Chou S T et al.The gnesis kernel:A programing systerm for spawing network architec-tures.IEEE Journal on Selected Areas in Communications,,2001,;19(3):511~526