王 鵬,何 楓
( 西南交通大學(xué) 信息科學(xué)與技術(shù)學(xué)院, 成都 610031 )
隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,用戶需求的不斷增大以及需要業(yè)務(wù)功能的不斷增強(qiáng),對(duì)網(wǎng)絡(luò)通信起主要作用的路由器的發(fā)展大致經(jīng)歷了3個(gè)階段,其中,路由器的處理核心也經(jīng)歷了3個(gè)階段的變化。(1)在網(wǎng)絡(luò)發(fā)展初期,網(wǎng)絡(luò)傳輸?shù)乃俾时容^低,通用CPU也可以滿足網(wǎng)絡(luò)的需求。然而,隨著各種傳輸技術(shù)的進(jìn)步,基于CPU轉(zhuǎn)發(fā)的網(wǎng)絡(luò)設(shè)備逐漸變成了網(wǎng)絡(luò)傳輸?shù)钠款i。(2)網(wǎng)絡(luò)設(shè)備開始更多地采用基于固定功能的專用集成電路(ASIC)技術(shù)來獲得比較高的處理速度。然而,ASIC最大的缺點(diǎn)是不可編程,因而缺乏靈活性,很難修改升級(jí),無法滿足當(dāng)前網(wǎng)絡(luò)新業(yè)務(wù)的不斷出現(xiàn)。(3)正是在CPU和ASIC技術(shù)都無法滿足的這種雙重要求下,出現(xiàn)了網(wǎng)絡(luò)處理器技術(shù)。
網(wǎng)絡(luò)處理器具有高性能、靈活等優(yōu)點(diǎn),是設(shè)計(jì)網(wǎng)絡(luò)設(shè)備的理想方案。網(wǎng)絡(luò)處理器通過良好的體系結(jié)構(gòu)設(shè)計(jì)和專門針對(duì)網(wǎng)絡(luò)處理優(yōu)化的部件,為上層提供了一個(gè)可編程控制的環(huán)境,但網(wǎng)絡(luò)處理器也有技術(shù)復(fù)雜、硬件資源限制較多缺點(diǎn),給設(shè)計(jì)帶來了不少困難。本文設(shè)計(jì)了基于網(wǎng)絡(luò)處理器的IPV4報(bào)文轉(zhuǎn)發(fā),由于平臺(tái)在硬件資源方面的限制,本文就設(shè)計(jì)過程中遇到的問題和解決方法展開討論[1~2]。
本文所用的網(wǎng)絡(luò)處理器(NP)可以達(dá)到10 Gbit線速的要求,可用于做接入設(shè)備。芯片內(nèi)有很多高速的微引擎,當(dāng)一個(gè)報(bào)文進(jìn)來后,硬件自動(dòng)綁定5個(gè)微引擎來執(zhí)行報(bào)文的業(yè)務(wù)操作。這時(shí)內(nèi)部的其它微引擎可以并行處理進(jìn)來的各個(gè)報(bào)文。
該網(wǎng)絡(luò)處理器內(nèi)含許多高速的任務(wù)優(yōu)化處理器(TOP),分為4種類型:解析處理器、查找處理器、分配處理器及修改處理器。所有相同類型的TOP執(zhí)行相同的代碼,但具有各自的存儲(chǔ)空間和相互獨(dú)立的指令代碼空間。這樣,多個(gè)相同類型TOP就可以并行執(zhí)行,不同類型的TOP可以形成流水線處理,如圖1,從而滿足網(wǎng)絡(luò)上的數(shù)據(jù)包高速修改轉(zhuǎn)發(fā)和過濾的需求。
圖1 網(wǎng)絡(luò)處理器TOP陣列[3]
4種不同類型的TOP各自完成不同的功能:
(1)解析處理器:解析和提取各種數(shù)據(jù)包的包頭、標(biāo)記、地址、端口、協(xié)議、模式和關(guān)鍵字等。
(2)查找處理器:使用提取出的字段作為關(guān)鍵字在相關(guān)的路由、分類和策略表中進(jìn)行查找。
(3)分配處理器:進(jìn)行數(shù)據(jù)包轉(zhuǎn)發(fā)目的地的判斷和QoS決策,并更新表和會(huì)話狀態(tài)信息等。
(4)修改處理器:負(fù)責(zé)對(duì)數(shù)據(jù)包進(jìn)行修改并發(fā)送。
基于某通信公司的實(shí)驗(yàn)平臺(tái),圖2介紹了分布式路由器架構(gòu)中網(wǎng)絡(luò)處理器的工作環(huán)境。
圖2 硬件環(huán)境[3]
控制CPU:負(fù)責(zé)處理信令報(bào)文,路由協(xié)議,給NP下載路由轉(zhuǎn)發(fā)表和處理在轉(zhuǎn)發(fā)表中無法找到下一跳路由的報(bào)文。主要通過PCIE總線與NP交互。
網(wǎng)絡(luò)處理器(NP):所寫的微碼就放在NP上運(yùn)行。
外擴(kuò)搜索緩存和外擴(kuò)控制緩存:都是NP的擴(kuò)展外存。因?yàn)镹P中的資源有限,當(dāng)業(yè)務(wù)需求增大時(shí)需要的存儲(chǔ)空間就會(huì)多。該NP可以擴(kuò)展512 M存儲(chǔ)空間。
交換芯片:負(fù)責(zé)線卡與線卡之間的數(shù)據(jù)交換,用在本設(shè)備跨板操作中。
微碼流程見圖3[3]。 解析處理器TOP內(nèi)部的解碼硬件(Hardware DecodeBlock),能夠在微指令執(zhí)行前由硬件預(yù)先對(duì)數(shù)據(jù)包進(jìn)行解析, 可以解析出很多報(bào)文處理所要用的內(nèi)容,比如:是否超時(shí),是否是組播,是IPV4或者IPV6以及路由報(bào)文的3層起始位置等。因?yàn)槭怯布獯a,不僅簡(jiǎn)化了軟件的實(shí)現(xiàn),也加快了處理速度。校驗(yàn)和部件(Checksum Block)能在快速計(jì)算出所處理的數(shù)據(jù)包的校驗(yàn)和的同時(shí),通過與數(shù)據(jù)包自身的校驗(yàn)和字段進(jìn)行比較,判斷數(shù)據(jù)包的正確性。在這個(gè)階段,可以通過查找設(shè)計(jì)的表來判斷出是2層還是3層報(bào)文,同時(shí)準(zhǔn)備一些KEY在查找處理器1中查表用。
圖3 微碼流程圖
查找處理器1中可以寫微碼,即:可以用微碼控制查表的次數(shù)也可以根據(jù)需要查不同的表。因?yàn)槭怯布?zhí)行的查表,所以有256條微碼的限制。
這個(gè)階段主要做判決,所以有專門針對(duì)判斷跳轉(zhuǎn)的指令,雖然靈活性不大,性能卻很好。因?yàn)闃I(yè)務(wù)流程的原因,這里沒有表項(xiàng)的更新,只有為查找處理器2準(zhǔn)備KEY和做一些QoS決策的調(diào)整。所有的判決都在這個(gè)階段執(zhí)行,為修改處理器階段執(zhí)行做準(zhǔn)備。
因?yàn)樵撾A段硬件設(shè)計(jì)的原因,這里不可以寫代碼,只可以進(jìn)行簡(jiǎn)單KEY的查找,所有的查找也都是硬件完成。
該階段是報(bào)文處理的最后一個(gè)階段,只有在這個(gè)階段可以修改報(bào)文,所以添加報(bào)文頭,刪除多余信息,替換MAC地址,修改TTL時(shí)間和校驗(yàn)和等都在該階段完成。還需要把報(bào)文描述符,報(bào)文大小,緩沖區(qū)大小寫入指示報(bào)文發(fā)出信息的寄存器中。
該芯片提供的TM主要對(duì)網(wǎng)絡(luò)流量起監(jiān)管作用,通過設(shè)置適當(dāng)?shù)膮?shù)對(duì)流量進(jìn)行限速、整形等一些QoS管理。如果沒有使用TM這個(gè)功能,該芯片可以達(dá)到20 Gbit的速度,但是如果使用了TM,該款芯片最好情況下只能達(dá)到10 Gbit。因?yàn)門M的調(diào)度轉(zhuǎn)發(fā)能力只有10 Gbit。為了使轉(zhuǎn)發(fā)性能達(dá)到10 Gbit,需要考慮以下3個(gè)影響性能的因素:
(1)指令執(zhí)行的時(shí)延。(2)每個(gè)TOP階段的查表次數(shù)。(3)需要注意表項(xiàng)的存儲(chǔ)結(jié)構(gòu),使其均勻存放在存儲(chǔ)器里。
只有符合這些條件,才有可能確保轉(zhuǎn)發(fā)達(dá)到限速,下面對(duì)每個(gè)限制因素進(jìn)行解釋。
(1)在線上流轉(zhuǎn)的1份64 byte報(bào)文、8 byte的前導(dǎo)和12 byte的幀間距:8+64+12=84(byte),共672 bit,在10 Gbit的線上相當(dāng)于67.2 ns。該芯片的主頻是250 MHz也就是每個(gè)時(shí)鐘周期4 ns,那么1份64 byte的報(bào)文處理需要花費(fèi)的時(shí)鐘周期為:672/4×10=16.8個(gè)。因此,為了達(dá)到線速,有如表1的時(shí)鐘周期約束。
表1 時(shí)鐘周期數(shù)
解析處理器、分配處理器、修改處理器各有8個(gè)TOP,所以1個(gè)階段的64 byte時(shí)鐘周期數(shù)為:16.8×8=134.4個(gè)。TOP之間的傳遞需要6個(gè)時(shí)鐘周期。該款NP芯片都是每條指令1個(gè)時(shí)鐘周期。所以,每個(gè)TOP階段也就不能超過128條指令。
(2)查表時(shí)延按以下公式計(jì)算:4+10×intM+(27+exd)×extM。其中,intM是查片內(nèi)表次數(shù),extM是查片外表次數(shù),exd是不同頻率的擴(kuò)展內(nèi)存不同的算法。本文設(shè)計(jì)采用的是芯片支持的一種內(nèi)存頻率,所以片外表次數(shù)為:exd=7+4×250/333次。該次數(shù)與每個(gè)階段的指令所花費(fèi)的周期數(shù)加在起不能大于128,否則不能達(dá)到線速。
(3)表項(xiàng)的均勻散列存儲(chǔ)到存儲(chǔ)器的各個(gè)BANK,這樣會(huì)充分利用存儲(chǔ)器的效率。
測(cè)試1:tm單向使能,大表多流流量。
測(cè)試方法描述:查1 M exthash流表,1 M條測(cè)試流(亂序和遞增兩種方式測(cè)試), 所用的KEY占6 byte,KEY=dip+最后一個(gè)byte(2次);entries是用芯片公司提供的軟件根據(jù)KEY的后20 bit產(chǎn)生1 M條entries。
測(cè)試目的:?jiǎn)蜗虼蟊矶嗔髁鞅硐滦阅堋?/p>
測(cè)試結(jié)果:14 pps,881 pps,084 pps。
測(cè)試2:tm雙向使能。
測(cè)試方法描述:fastip表采用16.8.8.8.8方式;所用的KEY包括vrf,共6 byte,查完vrf后再查一級(jí)fastip表。
測(cè)試目的:?jiǎn)蝏ank下ddr2的性能。
測(cè)試結(jié)果:8 pps,238 pps,123 pps。
測(cè)試結(jié)果表明,利用本款網(wǎng)絡(luò)處理器芯片在某公司的平臺(tái)上可以使IPV4的轉(zhuǎn)發(fā)性能達(dá)到線速。
網(wǎng)絡(luò)處理器具有性能高、靈活的優(yōu)點(diǎn), 已在中高端網(wǎng)絡(luò)設(shè)計(jì)中大量使用。本文主要介紹IPV4報(bào)文在網(wǎng)絡(luò)處理器中的執(zhí)行過程,性能是網(wǎng)絡(luò)處理器的關(guān)鍵,為了使性能達(dá)到線速要求,需要滿足上述幾個(gè)因素。隨著功能需求的增加,業(yè)務(wù)處理流程也會(huì)變得更加復(fù)雜;如何在復(fù)雜的處理流程中同樣能達(dá)到線速級(jí)的轉(zhuǎn)發(fā),還有待進(jìn)一步研究。
[1]王 圣,蘇全樹,鄧 宇. 網(wǎng)絡(luò)處理器體系結(jié)構(gòu)的比較與分析[J]. 計(jì)算機(jī)工程,2003,29(17):53-55.
[2]杜秀娟,金志剛. MPLS VPN 功能的微碼設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與研究,2008, 25(12).
[3]W.Richard Stevens.TCP/IP 詳解(卷 1:協(xié)議)[M]. 1版 北京:機(jī)械工業(yè)出版社,2000,4.