《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 業(yè)界動(dòng)態(tài) > 一種支持多協(xié)議的超高速轉(zhuǎn)發(fā)引擎的設(shè)計(jì)與實(shí)現(xiàn)

一種支持多協(xié)議的超高速轉(zhuǎn)發(fā)引擎的設(shè)計(jì)與實(shí)現(xiàn)

2008-07-17
作者:趙崢嶸, 蘭巨龍, 曲 晶, 姜

  摘 要: 從節(jié)約FPGA資源的角度出發(fā),分析了超高速條件下多協(xié)議" title="多協(xié)議">多協(xié)議支持策略的實(shí)現(xiàn)難點(diǎn),設(shè)計(jì)了一種可支持10Gbps" title="10Gbps">10Gbps速率下多協(xié)議報(bào)文線速轉(zhuǎn)發(fā)的引擎結(jié)構(gòu),解決了FPGA“資源與速度互換”的矛盾。
  關(guān)鍵詞: 路由器 轉(zhuǎn)發(fā)引擎" title="轉(zhuǎn)發(fā)引擎">轉(zhuǎn)發(fā)引擎 協(xié)議


  光纖傳輸技術(shù)發(fā)展迅速,網(wǎng)絡(luò)鏈路層的接口速率目前已達(dá)到10Gbps,出現(xiàn)了諸如10G的LAN、WAN、POS等接口類型。高端路由器作為骨干網(wǎng)的核心交換結(jié)點(diǎn),必須支持10Gbps接口,轉(zhuǎn)發(fā)引擎的單包處理時(shí)間將急劇縮短。
  另一方面,隨著IPv6、組播" title="組播">組播、MPLS協(xié)議的成熟及廣泛應(yīng)用,高端路由器也要求提供對(duì)以上協(xié)議的支持。而不同類型的報(bào)文處理流程不盡相同,很難實(shí)現(xiàn)通用模塊的處理。這無(wú)疑增加了超高速轉(zhuǎn)發(fā)引擎的設(shè)計(jì)難度。
  傳統(tǒng)的報(bào)文處理流程已不能滿足超高速轉(zhuǎn)發(fā)和多協(xié)議支持的要求。作為轉(zhuǎn)發(fā)處理的代表方向之一,網(wǎng)絡(luò)處理器(NP)目前的商用化水平還不支持10Gbps接口,大多不具備多協(xié)議支持的能力。
  同時(shí),從自主知識(shí)產(chǎn)權(quán)的角度出發(fā),也必須在高端路由器上開(kāi)發(fā)自己的轉(zhuǎn)發(fā)“芯”。
  本文在深入分析了轉(zhuǎn)發(fā)引擎的實(shí)現(xiàn)難點(diǎn)后,從提高報(bào)文處理速度和節(jié)省FPGA資源的角度出發(fā),設(shè)計(jì)了一種可支持多協(xié)議的超高速轉(zhuǎn)發(fā)引擎結(jié)構(gòu),并經(jīng)國(guó)家“863”課題(“大規(guī)模接入?yún)R聚路由器ACR”)工程驗(yàn)證,可支持10Gbps接口下多種類型報(bào)文的線速轉(zhuǎn)發(fā)。
1 10Gbps接口下的線速轉(zhuǎn)發(fā)
  表1給出了不同接口下,40字節(jié)超短包的線速轉(zhuǎn)發(fā)時(shí)間。


  對(duì)于40字節(jié)的超短包,10Gbps接口下的處理時(shí)間只有32ns,即使在100MHz時(shí)鐘下,也只有不到4個(gè)周期的時(shí)間。而轉(zhuǎn)發(fā)引擎的報(bào)文處理流程包括報(bào)頭有效性檢查、直連檢查、組播RPF檢查、查表" title="查表">查表(單、組播、MPLS查表)、報(bào)頭修改等復(fù)雜操作。傳統(tǒng)的串行處理流程顯然無(wú)法滿足線速轉(zhuǎn)發(fā)的時(shí)間要求。
1.1 并行流水線方案
  按照處理流程各步驟之間的時(shí)間關(guān)系,筆者在對(duì)整個(gè)處理流程進(jìn)行了功能劃分后,采用流水線設(shè)計(jì),縮短了處理時(shí)間,如圖1。


  引進(jìn)該方案的最大好處是:整個(gè)轉(zhuǎn)發(fā)引擎可以處于流水線狀態(tài),不必等待單個(gè)任務(wù)的完成,省去了串行處理中的等待時(shí)間。整個(gè)流水線的周期等于最長(zhǎng)流水段的周期(路由查表),而不是簡(jiǎn)單的各段周期之和。
  按照這個(gè)思路,在實(shí)際工程應(yīng)用時(shí),采用了如下并行流水線引擎結(jié)構(gòu):
  對(duì)某些流水段,可以通過(guò)段內(nèi)的并行設(shè)計(jì),進(jìn)一步縮短處理時(shí)間。例如,對(duì)圖2中的有效性檢查模塊,可以進(jìn)一步細(xì)化為版本號(hào)檢查、TTL檢查、地址范圍檢查、Payload Length檢查四個(gè)子模塊,作并行處理,如圖3。


1.2 方案分析
  采用并行流水線的設(shè)計(jì),其關(guān)鍵在于整個(gè)流水線的不斷流、不溢出。這要求對(duì)各流水段進(jìn)行精細(xì)劃分,使各段的周期盡量接近,即實(shí)現(xiàn)同步流水線,減少段間的緩存容量。
2 多協(xié)議支持策略
  本方案考慮支持的協(xié)議為IPv4、IPv6、MPLS,均含單播、組播、二次查表。要支持如此多的協(xié)議類型,而不同類型報(bào)文的處理流程不盡相同,在時(shí)序上很難對(duì)齊,難以用通用模塊實(shí)現(xiàn),必然需要大量的緩存FIFO。圖4給出了其分析。


  可以看出,報(bào)頭處理的設(shè)計(jì)非常復(fù)雜,資源占用較多。為了合理利用FPGA的內(nèi)部資源,必須對(duì)報(bào)頭處理單元精心設(shè)計(jì)。
  報(bào)頭處理單元要處理的報(bào)文包括以下類型:IPv4(單、組播)、IPv6(單、組播)、MPLS(單、組播)6種,加上二次查表,共有12種類型的報(bào)文。對(duì)此,有如下分析:
  (1)對(duì)以上的12種情況各用一個(gè)單元進(jìn)行實(shí)現(xiàn),這就意味著報(bào)頭處理中任何一處的緩存FIFO都必須生成12個(gè)。
  (2)粗略劃分成IPv4、IPv6和MPLS三種實(shí)現(xiàn)單元,每一個(gè)單元又采用單組播獨(dú)立實(shí)現(xiàn)的方式,也就是將二次查表和非二次查表的報(bào)頭處理做成通用處理方式。這樣也需要6套FIFO緩存報(bào)文。
  (3) 只分成IPv4、IPv6和MPLS三種情況,對(duì)單播和組播、二次查表以及非二次查表做成通用的處理模塊,這樣內(nèi)部需要3套緩存FIFO。
  (4) 與(3)的區(qū)別在于,通過(guò)精細(xì)設(shè)計(jì)報(bào)頭處理單元的各種讀寫(xiě)信號(hào)(上報(bào)、轉(zhuǎn)發(fā)、二次查表),使得報(bào)頭處理單元內(nèi)部不需要緩存報(bào)文,報(bào)頭處理主要完成生成內(nèi)部報(bào)頭(轉(zhuǎn)發(fā)、上報(bào)和二次查表),將緩存FIFO合并為一個(gè),不管是IPv4、IPv6還是MPLS共用一個(gè)轉(zhuǎn)發(fā)FIFO和上報(bào)FIFO。
  為節(jié)省FPGA資源,提高設(shè)計(jì)可靠性,筆者在實(shí)際工程中采用了方案(4)的設(shè)計(jì)方法。其實(shí)現(xiàn)結(jié)構(gòu)如圖5。


  方案分析:顯然,該設(shè)計(jì)方案在節(jié)省資源的同時(shí),復(fù)雜了內(nèi)部邏輯的設(shè)計(jì),因?yàn)槿魏我粋€(gè)報(bào)頭處理都需要同時(shí)完成單播和組播、非二次查表和二次查表的統(tǒng)一處理,而且各種報(bào)文都統(tǒng)一存放于一個(gè)緩存FIFO,因此還需要IPv4、IPv6和MPLS報(bào)頭處理單元中的轉(zhuǎn)發(fā)設(shè)計(jì)和上報(bào)設(shè)計(jì)進(jìn)行時(shí)序?qū)R,即從緩存FIFO讀出報(bào)文的同時(shí)送往轉(zhuǎn)發(fā)和上報(bào),供兩路同時(shí)使用(在轉(zhuǎn)發(fā)和上報(bào)都有效時(shí)),需要二者的時(shí)序進(jìn)行配合。
3 工程應(yīng)用
  該方案已應(yīng)用在“大規(guī)模接入?yún)R聚路由器ACR”的10G轉(zhuǎn)發(fā)引擎上,采用的FPGA為VIRTEX PRO系列的XC2VP70芯片。圖6給出了測(cè)試數(shù)據(jù)。


  分析:
  (1) 單一包長(zhǎng)測(cè)試條件下,在負(fù)荷為100%時(shí),當(dāng)包長(zhǎng)大于等于109.5字節(jié)時(shí)的丟包率低于1.07E×10-6,吞吐率接近于1。
  (2) 混合包傳輸條件下,在端口負(fù)荷低于90%時(shí),丟包率低于3.0E×10-4。
  本文著重結(jié)合項(xiàng)目需要,解決了10Gbps線速轉(zhuǎn)發(fā)和多協(xié)議支持兩個(gè)問(wèn)題。通過(guò)并行流水線設(shè)計(jì),縮短了報(bào)文處理時(shí)間。而通過(guò)報(bào)頭處理內(nèi)部各模塊的時(shí)序配合,減少了FPGA內(nèi)部緩存FIFO的使用,節(jié)省了FPGA資源,保證了該設(shè)計(jì)的工程實(shí)用性。方案的難點(diǎn)在于報(bào)頭綜合處理單元的時(shí)序邏輯設(shè)計(jì)。
  可以預(yù)見(jiàn),鏈路接口速率即將突破40Gbps,可以考慮采用多條類似流水線并行處理的引擎結(jié)構(gòu),但將面臨流量均衡及轉(zhuǎn)發(fā)表效率的問(wèn)題,這是下一步的研究方向之一。
參考文獻(xiàn)
1 Xilinx Corporation.RocketIO transceiver user guide[Z].UG024 (v2.3.2)June 24,2004
2 Xilinx Corporation.Virtex pro platform FPGA handbook.2003
3 Mohammad J.Akhbarizadeh and mehrdad nourani. An IP packet forwarding technique based on partitioned lookup table
4 Newman P, Minshall G, Huston L. IP switching and gigabitrouters.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。