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

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

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

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

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

?

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

??? 國(guó)家“863”計(jì)劃中大規(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)在對(duì)用戶接口和用戶業(yè)務(wù)的管理與控制,,以及支持寬帶網(wǎng)絡(luò)業(yè)務(wù)運(yùn)營(yíng)環(huán)境。ACR中負(fù)責(zé)用戶端接入的模塊是遠(yuǎn)端模塊,,它又包括擴(kuò)展用分復(fù)用單元EMD(Ethernet Multiplexer-Demultiplexer)和遠(yuǎn)端接口單元RIU(Remote Interface Unit),。其中,EMD主要完成上下行數(shù)據(jù)的合路與分發(fā),,以及用戶業(yè)務(wù)控制功能,,是ACR實(shí)施用戶管理與控制的主要設(shè)備。EMD包括二種線路接口,,分別為EMD 10G線路接口和EMD 1000M線路接口,。?

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

?

?

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

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

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

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

??? 根據(jù)10G線路接口卡的功能需求分析,采用單片的多路鏈路層處理芯片完成數(shù)據(jù)鏈路層的處理,,然后用FPAG+TCAM+SRAM完成數(shù)據(jù)報(bào)文的后續(xù)分類,、查表以及封裝處理?;谶@種設(shè)計(jì)思想,,給出EMD 10G線路接口卡的總體結(jié)構(gòu)如圖2所示。其工作流程仍分為上行和下行處理,??梢钥闯觯岸颂幚碇饕缮逃眯酒?fù)責(zé),,報(bào)文的提取以及查表封裝由FPGA完成,。?

?

?

??? 在實(shí)際實(shí)現(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接口進(jìn)行數(shù)據(jù)交互,,共同完成上下行的數(shù)據(jù)處理,。?

2 FPGA設(shè)計(jì)分析?

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

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

?

?

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

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

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

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

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

?

?

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

2.2 上行報(bào)文分路模塊設(shè)計(jì)方案?

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

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

?

?

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

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

?

?

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

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

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

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

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

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

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

?

?

?

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

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

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

參考文獻(xiàn)?

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

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

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

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

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

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