《電子技術(shù)應用》
您所在的位置:首頁 > 通信與網(wǎng)絡 > 業(yè)界動態(tài) > EMD 10G線路接口卡的硬件設(shè)計與實現(xiàn)

EMD 10G線路接口卡的硬件設(shè)計與實現(xiàn)

2009-01-13
作者:楊 琴,, 蘭巨龍,, 王 雨
關(guān)鍵詞: 查表 組播 10G 輪詢 權(quán)值

??? 摘? 要: 針對現(xiàn)有網(wǎng)絡接入設(shè)備難以滿足流媒體等新業(yè)務要求的問題,,深入研究了EMD(擴展用分復用單元)10G線路接口卡的功能與結(jié)構(gòu),并針對上行數(shù)據(jù)流的合路問題提出了基于FPGA的WDRR(加權(quán)欠賬輪詢)算法,,該算法在不過度改變計算復雜度的情況下,,使得時延性能得到改善;針對超寬表項的1 920位組播查表問題,,提出了FPGA+TCAM+2*SRAM的組播流水線查表,,與傳統(tǒng)的查表方案相比,其效率提高了67%,。最后通過仿真,,測試表明該硬件設(shè)計方案能夠滿足ACR路由器對EMD 10G線路接口卡的要求。?

??? 關(guān)鍵詞: 大規(guī)模接入?yún)R聚路由器,; EMD 10G線路接口卡,; FPGA; WDRR算法,; TCAM?

?

??? 隨著互聯(lián)網(wǎng)的日趨成熟,,新的業(yè)務流量不斷涌現(xiàn),語音,、VOD,、網(wǎng)絡電視、虛擬個人網(wǎng)絡等以視頻信息為代表的寬帶流媒體業(yè)務,,對邊緣網(wǎng)的交換設(shè)備提出了越來越高的要求,,而現(xiàn)有的邊緣網(wǎng)絡級數(shù)多,端口密度低,,帶寬不可控,,這些特點使得現(xiàn)有網(wǎng)絡很難滿足新業(yè)務流的要求,當有大量數(shù)據(jù)流到來時,,無法實現(xiàn)用戶層面的數(shù)據(jù)接入管理與控制,。?

??? 國家“863”計劃中大規(guī)模接入?yún)R聚路由器(ACR)的研發(fā)就是為了從根本上解決邊緣網(wǎng)的大容量交換需求,以及用戶的大規(guī)模接入問題,。ACR不僅具有常規(guī)大容量高性能雙棧核心路由器的寬帶IPv4/v6組網(wǎng)功能,,而且具有大規(guī)模用戶接入?yún)R聚功能[1]。ACR的大規(guī)模用戶接入?yún)R聚功能主要體現(xiàn)在對用戶接口和用戶業(yè)務的管理與控制,,以及支持寬帶網(wǎng)絡業(yè)務運營環(huán)境,。ACR中負責用戶端接入的模塊是遠端模塊,它又包括擴展用分復用單元EMD(Ethernet Multiplexer-Demultiplexer)和遠端接口單元RIU(Remote Interface Unit),。其中,,EMD主要完成上下行數(shù)據(jù)的合路與分發(fā),以及用戶業(yè)務控制功能,,是ACR實施用戶管理與控制的主要設(shè)備,。EMD包括二種線路接口,分別為EMD 10G線路接口和EMD 1000M線路接口,。?

??? 本文主要介紹EMD 10G線路接口卡的設(shè)計與實現(xiàn),。圖1為EMD 10G線路接口在整個ACR中所處的位置。從圖1可以看出,,一個10G線路接口卡通過ATCA背板下連4個千兆接口模塊,,每個千兆接口模塊通過千兆接口下行支持10個RIU,每個RIU再下接48個BMG,。于是,,一個EMD設(shè)備最多可以接入1 920個用戶,在確保用戶服務質(zhì)量的條件下,每用戶不僅可同時觀看1路HDTV和1路SDTV節(jié)目,,還可以獨享9M端到端帶寬用于VOD,,或者PC上網(wǎng)業(yè)務。?

?

?

??? 10G線路接口模塊的功能主要包括:?

??? (1)下行數(shù)據(jù)流方向:將外部物理信號通過光電,、串并轉(zhuǎn)換恢復成比特流,。提取數(shù)據(jù)鏈路層幀并作相應處理,將IP報文根據(jù)單,、組播以及IPTV組播查表結(jié)果封裝成內(nèi)部自定義格式,,將數(shù)據(jù)報文復制送往4個千兆接口模塊,實現(xiàn)組播復制,。?

??? (2)上行數(shù)據(jù)流方向:對4個千兆接口模塊送來的四路數(shù)據(jù)調(diào)度合路輸出,,再根據(jù)單、組播以及IPTV組播查表結(jié)果進行上行的數(shù)據(jù)封裝,,封裝成數(shù)據(jù)鏈路幀后,,將比特流以光信號的形式發(fā)送到物理鏈路。?

1 EMD 10G線路接口卡的設(shè)計?

??? 根據(jù)10G線路接口卡的功能需求分析,,采用單片的多路鏈路層處理芯片完成數(shù)據(jù)鏈路層的處理,,然后用FPAG+TCAM+SRAM完成數(shù)據(jù)報文的后續(xù)分類、查表以及封裝處理,?;谶@種設(shè)計思想,給出EMD 10G線路接口卡的總體結(jié)構(gòu)如圖2所示,。其工作流程仍分為上行和下行處理,。可以看出,,前端處理主要由商用芯片負責,,報文的提取以及查表封裝由FPGA完成。?

?

?

??? 在實際實現(xiàn)中,,光電轉(zhuǎn)換器件選用住友(SEI)公司的SXP3101EX,,串并轉(zhuǎn)換器件選擇AMCC公司的S19237芯片,鏈路層處理芯片選用AMCC公司的S19205,,TCAM選用IDT公司的75K75100,,SRAM選用71T75602,F(xiàn)PGA選用Xilinx公司Virtex4系列的XC4VLX160和XC4VFX60,,兩塊芯片間通過SPI接口進行數(shù)據(jù)交互,,共同完成上下行的數(shù)據(jù)處理。?

2 FPGA設(shè)計分析?

??? 根據(jù)上一節(jié)的介紹可知,,F(xiàn)PGA主要完成IP報文的預處理,,查表封裝以及與4個千兆線路接口板數(shù)據(jù)的分合路,。本節(jié)將詳細介紹FPGA的設(shè)計方案。?

??? 下行數(shù)據(jù)進入FPGA中首先緩存,,判斷是協(xié)議報文還是數(shù)據(jù)報文,,如果是協(xié)議報文則上交板級處理機,如是數(shù)據(jù)報文則進行單組播和IPTV組播查表,,再將數(shù)據(jù)報文和查表結(jié)果格式封裝下發(fā)分路到4個千兆接口板,。上行方向,,將從千兆接口收到的四路數(shù)據(jù)調(diào)度合路輸出,,對數(shù)據(jù)和協(xié)議報文分路處理,協(xié)議報文仍上交板級處理機,,數(shù)據(jù)報文根據(jù)查表結(jié)果封裝輸出,。根據(jù)該FPGA的功能分析,得到其內(nèi)部功能模塊劃分如圖3,。圖中虛線左側(cè)為XC4VLX160芯片所完成的功能,,虛線右側(cè)為XC4VFX60芯片完成的功能,XC4VFX60帶有兩個Power PC 405硬核,,16路高速通道,,每路高速通道的速率為3.11Gb/s,可以滿足4個千兆線路板的接口要求,。?

?

?

??? 由于下行和上行數(shù)據(jù)在FPGA中的處理是一個相對的過程,,現(xiàn)以上行數(shù)據(jù)流為例介紹FPGA的設(shè)計分析。在對上行數(shù)據(jù)流進行處理時,,有三個關(guān)鍵環(huán)節(jié),,分別是:4路千兆線路接口板數(shù)據(jù)的合路調(diào)度輸出,上行報文分路,,數(shù)據(jù)報文的單組播查表以及IPTV組播查表,。下面將詳細介紹這三個功能模塊的FPGA設(shè)計。?

2.1 上行合路調(diào)度輸出模塊設(shè)計方案?

??? 千兆線路接口送來的四路數(shù)據(jù)先放在4個整包緩存隊列中,,等待合路調(diào)度輸出,。由于IP報文是變長數(shù)據(jù)包,同時兼顧到硬件實現(xiàn)的復雜度,,因此,,本文采用差額輪詢DRR(Deficit Round Robin)調(diào)度算法。DRR為每個隊列賦予了一個計數(shù)器,,在每次輪循時,只有待發(fā)分組長度小于計數(shù)器值才允許發(fā)送分組,。計數(shù)器的計算方法為:初值為定額值,每發(fā)送一個分組就減去此分組長度值,,每經(jīng)過一次輪循就加上定額值,。但是由于DRR在輪詢隊列時是順序訪問下一個隊列,,沒有考慮隊列間的優(yōu)先級問題,故易造成輸出報文的時延性較差[2],。?

??? 于是,,在DRR算法的基礎(chǔ)上,本文采用一種改進的加權(quán)DRR算法——WDRR(Weighted Deficit Round Robin),。該算法的基本思想是:給每個隊列賦予一個權(quán)值Wi,,是該隊列的長度和包到達速率的比值,表示該隊列的優(yōu)先級,。在每一輪輪詢開始之前,,先計算各隊列的權(quán)值,并按降序排列,,服務順序從大到小,。設(shè)置隊列i的計數(shù)器Ci的初值為N字節(jié),每輪輪詢前各隊列的計數(shù)器Ci=Ci+N,。開始輪詢時,,如果權(quán)值最大隊列中有整包,且Ci>Lmin(Lmin表示網(wǎng)絡中最短包的字節(jié)數(shù)),,則輸出該隊列中一個長度為整包,,同時使Ci=Ci-,再判斷是否滿足前述條件,,重復此過程,,直到Ci≤Lmin;如果該隊列中沒有整包,,則將此輪分配的N字節(jié)積累到下輪使用,。此隊列服務完成后轉(zhuǎn)到權(quán)值次小的隊列。在調(diào)度過程中,,為了避免Ci無限增大,,為其設(shè)置一個上限值Lmax。?

??? 在算法實現(xiàn)中,,由于IPv6的最短包長度為40B,,于是取N和Lmin均為40;設(shè)網(wǎng)絡中IPv6的最長包為1 500B,,故取Lmax為1 500,;設(shè)隊列的計數(shù)器Ci的寬度為11bit,故最大計數(shù)值為2 048,。具體的算法流程見圖4,。?

?

?

??? WDRR算法在傳統(tǒng)DRR算法的基礎(chǔ)上,允許在計數(shù)器小于整包長度時仍可以輸出一個整包,,避免了隊列中有包但無法傳輸?shù)那闆r,。同時,,在不過度改變算法復雜度的情況下,對每個隊列賦予權(quán)值,,每一輪按照權(quán)值大小依次調(diào)度,,使得輸出結(jié)果更加平滑,時延性能得到改善,,該算法由于其復雜度低也便于硬件實現(xiàn)與管理,。?

2.2 上行報文分路模塊設(shè)計方案?

??? 對4路千兆線路接口卡送來的數(shù)據(jù)進行合路后,形成一路數(shù)據(jù)輸出,。為了便于后續(xù)查表和報文封裝操作,,需要將報文分類,以判斷該報文是否需要查表,,如果需要查表,,確定是查單播表、組播表還是IPTV組播表,。?

??? 首先提取協(xié)議類型字段,判斷其是否是自定義控制幀,,如是,,則直接上交10G板級處理機;然后根據(jù)目的MAC判斷單組播,,對于組播報文,,再根據(jù)協(xié)議類型域區(qū)分IPv4和IPv6報文,提取目的IP作為查表關(guān)鍵字,,查上網(wǎng)組播表,,或者IPTV組播表;對于單播報文,,則將目的MAC地址作為查表關(guān)鍵字,,查單播表。對于不需要查表的報文,,則直接進行格式封裝后,,上交ACR-S。具體的報文處理流程見圖5,。?

?

?

2.3 查表模塊設(shè)計方案?

??? 報文進入查表模塊后,,根據(jù)報文類型不同可能需要查三個表,分別是:單播表,、上網(wǎng)組播表和IPTV組播表,。根據(jù)ACR的總體設(shè)計方案,要求最多支持100個IPTV組播臺,,順序編號為0~99,;最多支持1 920個用戶,,順序編號為0~1? 919。再結(jié)合ACR路由器的體系結(jié)構(gòu),,設(shè)計三種表項結(jié)構(gòu)見圖6,。其中,單播MAC表是48bitMAC地址到EMD和RIU出接口的映射,,組播IP表是128bitIP地址到1 920個用戶接口映射,,IPTV組播表是128bitIPTV組播地址到1 920個用戶的映射。?

?

?

??? 由表項結(jié)構(gòu)可以看出,,單播MAC查表采用傳統(tǒng)的FPGA->TCAM->SRAM->FPGA查表方式即可實現(xiàn),。但是對于組播IP查表和IPTV組播查表,由于表項寬度過寬,,達到1 920位,,如果仍采用這種方式,難免會影響查表效率,。為了提高查IP組播表和IPTV組播表的效率,,本文從以下兩個方面作了改進。?

??? (1)傳統(tǒng)的FPGA->CAM->SRAM->FPGA流水線查表,,TCAM送出的控制SRAM連續(xù)讀寫的burst信號僅能維持5個周期,,而對于數(shù)據(jù)位寬為32位的SRAM,需要最少60個周期才能完成IP組播表或是IPTV組播表的讀寫操作,,也就是最少進行12次TCAM查表,。TCAM從查表關(guān)鍵字送入到結(jié)果送出需要約10個周期,讀SRAM需要5個周期,,因此多一次查TCAM就會浪費5個周期,,這樣,進行一次組播查表需要120個周期,,但其中有55個周期被浪費,。由此可以看出,在表項寬度較窄時此方式效率較高,,但是表項寬度較寬時,,效率明顯降低[3][4]。?

????因此本文采用FPGA->CAM->FPGA->SRAM->FPGA的流水線操作,,這種方式只需查一次TCAM,,再根據(jù)TCAM返回的讀SRAM的索引地址,讀60個周期的SRAM,,在70個周期內(nèi)就能完成組播查表,。與前一種方法相比,節(jié)省了50個周期,。?

??? (2)由于在SRAM中存放的查表結(jié)果有1 920位,,即使采用FPGA->CAM->FPGA->SRAM->FPGA的流水線操作,,讀SRAM的周期也太長,總共需要60個周期才能讀完一次查表結(jié)果,。如果用兩片SRAM共同存放1 920位的組播結(jié)果,,一片SRAM存放前960位結(jié)果,另一片SRAM存放后960位結(jié)果,,前后兩個960位結(jié)果在兩片SRAM中所處的物理地址是對應一致的,。這樣查一次TCAM得到的索引SRAM的地址同時送到兩片SRAM,用30個周期即可讀完一個組播結(jié)果,。在表項維護和表項更新時,,兩片SRAM也是同步進行的。值得注意的是如果是查單播表,,由于查表結(jié)果只需讀一個周期32位的數(shù)據(jù),,因此在兩片SRAM的對應地址中所存放的內(nèi)容應該是一樣的,最后選擇其中一片SRAM的結(jié)果輸出即可,。?

??? 綜上,,采用FPGA+TCAM+2*SRAM的流水線查表操作后,進行一次組播查表總共需要40個周期就能完成,,與傳統(tǒng)的查表方式相比,,完成一次組播查表減少80個周期,效率提高67%,。?

3 FPGA實現(xiàn)及仿真?

??? 在仿真實現(xiàn)時,上行合路模塊在XC4VFX60中完成,,報文分類和查表模塊在XC4VLX160中完成,,從芯片資源的角度來看,兩片芯片的性能均能滿足需求,。仿真時,,用ROM生成一個數(shù)據(jù)源,通過Xilinx 9.1集成開發(fā)環(huán)境,,得到的上行報文合路模塊和查表模塊的關(guān)鍵信號仿真結(jié)果如圖7和圖8,。

?

?

?

??? 圖7為用ModelSim得到的上行合路模塊的仿真波形圖,其中g(shù)e0~ge3分別表示4路1000M接口卡送來的數(shù)據(jù),,第129和128bit表示對應報文的包頭和包尾指示,,用來表示報文的開始和結(jié)束。dout表示合路輸出數(shù)據(jù),,結(jié)果表明WDRR算法實現(xiàn)了4路報文的調(diào)度合路輸出,。?

??? 圖8為查表模塊一次IPTV組播查表的仿真波形圖。由于查表模塊需要片外TCAM和SRAM配合,,才能得到輸出結(jié)果,,故在仿真時通過在該功能模塊中插入chipscope核,,測試查表效率。由圖可以看出,,查表關(guān)鍵字cam_key送入后,,10個周期左右得到查表命中match指示,3個周期后得到查TCAM的結(jié)果cam_rbus,然后同時送入兩片SRAM,,讀30個周期的SRAM結(jié)果,,這樣,按照預期目標成功完成一次組播查表,。?

??? 本文根據(jù)ACR路由器對EMD 10G線路接口卡的要求,,設(shè)計了EMD 10G線路接口卡,并詳細分析了FPGA對數(shù)據(jù)流的處理,。以對上行數(shù)據(jù)流的處理為例,,對于4個千兆接口卡送來的四路數(shù)據(jù)報文,用WDRR算法,,通過對每個隊列引入權(quán)重度量,,使得輸出結(jié)果更加平滑,時延性能得到改善,,但由于不過度改變算法的復雜度,,仍較便于硬件實現(xiàn)與管理。對于報文分類處理后等待查表的數(shù)據(jù)報文,,由于ACR對用戶數(shù)量的支持,,使得組播表項過寬,達到了1 920位,,采用傳統(tǒng)的查表機制效率低,,但通過改進的FPGA+TCAM+2*SRAM的組播流水線查表,其效率可提高67%,。通過編程以及仿真結(jié)果也可以看出,,該10G接口卡基本上完成了所需要的功能。?

參考文獻?

[1] 張興明.大規(guī)模接入?yún)R聚路由器(ACR)總體技術(shù)規(guī)范[S].國家數(shù)字交換系統(tǒng)工程技術(shù)研究中心,,2005.?

[2]?王重鋼,,隆克平,龔向陽,,等.分組交換網(wǎng)絡中隊列調(diào)度算法的研究及其展望[J].電子學報,,2001,29(4):553-559.?

[3] 趙永忠,,蘭巨龍,,劉勤讓.10Gbps線路接口設(shè)計分析與實現(xiàn)[J].微電子學和計算機,2005,22(2):159-161.?

[4]?張佳杰,,扈紅超,,劉強,等.基于接入?yún)R聚路由器的IPTV組播的實現(xiàn)[J].計算機工程,,2007,,33(11):107-109.?

[5]?侯伯亨,顧新.VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計[M].西安:西安電子科技大學出版社,,2005.?

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