◆吳中軍 張 穎
?
基于FPGA的高速轉(zhuǎn)發(fā)網(wǎng)絡(luò)安全平臺(tái)設(shè)計(jì)
◆吳中軍1張 穎2
(1.中國(guó)電子科技集團(tuán)公司第三十研究所 四川 610093;2.陸軍參謀部第一通訊站 北京 100042)
不管是對(duì)于核心的路由器、交換機(jī)、或者網(wǎng)絡(luò)安全設(shè)備,高速轉(zhuǎn)發(fā)引擎都是其中的重點(diǎn)、難點(diǎn)、以及關(guān)鍵技術(shù)。本文圍繞著高傳輸帶寬的需求,低時(shí)延的需求,基于FPGA技術(shù)實(shí)現(xiàn)了一種10Gbps速率的全線速的高速轉(zhuǎn)發(fā)網(wǎng)絡(luò)安全平臺(tái)。并討論了基于FPGA的高速轉(zhuǎn)發(fā)引擎的流水線設(shè)計(jì)以及并行設(shè)計(jì)方案,并對(duì)其性能指標(biāo)進(jìn)行了試驗(yàn)分析。
FPGA;10Gbps轉(zhuǎn)發(fā)引擎;并行設(shè)計(jì);流水線設(shè)計(jì)
伴隨著社會(huì)的發(fā)展與進(jìn)步,網(wǎng)絡(luò)對(duì)于高帶寬、低時(shí)延、高質(zhì)量的QOS等的需求都越來(lái)越高。尤其是光纖傳輸方式在這些年得到了長(zhǎng)足的發(fā)展與進(jìn)步,網(wǎng)絡(luò)中每一年對(duì)于高帶寬需求的增長(zhǎng)已經(jīng)超過了摩爾定律的增長(zhǎng)速度。所以位于網(wǎng)絡(luò)關(guān)鍵節(jié)點(diǎn)的交換機(jī)、路由器、網(wǎng)絡(luò)安全等設(shè)備其吞吐量、時(shí)延等性能指標(biāo)就有了更高的需求。
為了適應(yīng)下一代互聯(lián)網(wǎng)的發(fā)展,以及關(guān)鍵技術(shù)的掌握和國(guó)產(chǎn)化。早在二十世紀(jì)初國(guó)家就啟動(dòng)了一批重大專項(xiàng)研究,比如高性能寬帶信息網(wǎng)(3TNet)工程。在項(xiàng)目自主研發(fā)了T比特級(jí)的光傳輸系統(tǒng)[1]、T比特級(jí)的交換路由設(shè)備、T比特級(jí)的網(wǎng)絡(luò)應(yīng)用環(huán)境。本文以此為基礎(chǔ),實(shí)現(xiàn)一種基于FPGA的高速轉(zhuǎn)發(fā)平臺(tái),可以靈活的搭載重構(gòu)設(shè)計(jì)部分網(wǎng)絡(luò)安全功能,可以作為關(guān)鍵網(wǎng)絡(luò)節(jié)點(diǎn)的安全設(shè)備,并給出實(shí)現(xiàn)方案。
以性能指標(biāo)支持10Gbps的網(wǎng)絡(luò)數(shù)據(jù)包線速處理為要求,那么就必須在速率達(dá)到10Gbps的情況下,實(shí)現(xiàn)以太網(wǎng)的最短包長(zhǎng)即40字節(jié)的網(wǎng)絡(luò)包的線速處理轉(zhuǎn)發(fā),那么可以得出FPGA轉(zhuǎn)發(fā)一個(gè)數(shù)據(jù)包的最大如下所示:
(數(shù)據(jù)包包長(zhǎng))40*8bit/10Gbps = 32ns
表1為在10Gbps的吞吐量下,平臺(tái)對(duì)于不同數(shù)據(jù)包包長(zhǎng)的報(bào)文的轉(zhuǎn)發(fā)處理時(shí)間。
表1 轉(zhuǎn)發(fā)平臺(tái)線速處理時(shí)間表
報(bào)文長(zhǎng)度(byte)處理時(shí)間(ns) 4032 4839 6452 9677 128103
由表1可以看出,要完成速率為10Gbps的最短 40字節(jié)數(shù)據(jù)包的線速處理轉(zhuǎn)發(fā),該轉(zhuǎn)發(fā)平臺(tái)對(duì)該長(zhǎng)度的數(shù)據(jù)包的最長(zhǎng)轉(zhuǎn)發(fā)時(shí)間為32ns,假如使用125Mhz的內(nèi)部時(shí)鐘,那么需要短短的4個(gè)周期來(lái)處理轉(zhuǎn)發(fā)該數(shù)據(jù)包。對(duì)于FPGA的設(shè)計(jì)使用來(lái)說,單單僅靠加大時(shí)鐘頻率或者總線的寬度來(lái)提高處數(shù)據(jù)的帶寬,會(huì)造成很多別的方面的印象。比如時(shí)鐘頻率過高會(huì)使得數(shù)據(jù)總線上數(shù)據(jù)有效的保持時(shí)間大大縮短,這樣就降低了數(shù)據(jù)采樣的精確度,即增加了數(shù)據(jù)采樣的難度。這就不可避免的增加了FPGA的設(shè)計(jì)中布局布線難度,使得書序錯(cuò)誤頻發(fā)。另外受FPGA器件水平和國(guó)內(nèi)可購(gòu)買的高速大規(guī)模FPGA技術(shù)參數(shù)的限制,目前轉(zhuǎn)發(fā)引擎FPGA內(nèi)部系統(tǒng)時(shí)鐘超過200M則會(huì)造成很多系統(tǒng)性問題。
基于上面的敘述,在高速轉(zhuǎn)發(fā)引擎的設(shè)計(jì)中,為了提升性能,引入了并行處理方式和流水線操作的處理方式[2]。流水線處理是一種高速設(shè)計(jì)中的常用方法。該數(shù)據(jù)處理方式是指將一個(gè)復(fù)雜過長(zhǎng)的時(shí)序過程劃分為若干個(gè)可以串行連接的子過程,其各個(gè)子過程都可以被叫做流水線的“級(jí)”,而且每個(gè)子過程都可以有效地的在時(shí)間上與其它子過程同步執(zhí)行。
如圖2所示,這就是一個(gè)流水線全過程示意圖。對(duì)于流水線而言,其設(shè)計(jì)的關(guān)鍵是子過程模塊時(shí)序安排的合理性,各個(gè)流水段都要合理劃分。對(duì)于流水線中的各個(gè)流水段,其時(shí)間最長(zhǎng)的流水段會(huì)造成整個(gè)流水線的“堵塞”,所以合理的劃分流水段就顯得尤其重要。流水線處理方式能極大的提高效率的原因就是其多次復(fù)制了所有的處理模塊,這是一種典型的“資源換速度”的方式。
圖2 流水線結(jié)構(gòu)圖
并行處理方式就是對(duì)一個(gè)總的任務(wù),將其劃分為空間和功能上相互獨(dú)立的且完成時(shí)間較短的N個(gè)簡(jiǎn)單的任務(wù)子單元si(i = 1, 2,… ,N),而N個(gè)簡(jiǎn)單的任務(wù)子單元si可以在相同的時(shí)間內(nèi)同時(shí)完成,這樣組合在一起一個(gè)復(fù)雜的任務(wù)就得以完成。即通過并行處理方式可以有效的降低復(fù)雜度,并降低時(shí)延。一個(gè)簡(jiǎn)單的并行處理方式的示意圖如圖3所示。
圖3 并行流水線結(jié)構(gòu)
限制網(wǎng)絡(luò)傳輸帶寬的主要因素是輸入傳輸帶寬、內(nèi)部傳輸帶寬、輸出傳輸帶寬,如三個(gè)帶寬的示意圖如圖4所示。
圖4 高速轉(zhuǎn)發(fā)引擎帶寬分析
在這里先對(duì)下文公式用到的符號(hào)做以下定義:端口速率-R;鏈路的承載效率-a;數(shù)據(jù)報(bào)文長(zhǎng)度-L;添加端口標(biāo)簽的字節(jié)數(shù)-M;路由標(biāo)簽標(biāo)簽的字節(jié)數(shù)-N;數(shù)據(jù)送往交換網(wǎng)絡(luò)的平面數(shù)-K,F(xiàn)PGA內(nèi)部時(shí)鐘頻率-C;FPGA內(nèi)部數(shù)據(jù)傳輸總線位度-W。
已知10Gbps帶寬接口的實(shí)際速率為,R = 2. 488× 4= 9. 952 Gbps,可以采用VC-4容器的OC-192SDH幀[3],其承載效率為261/270,而類HDLC幀[4]的承載效率可以表示為L(zhǎng)/(L+9),那么對(duì)長(zhǎng)度為L(zhǎng)的以太網(wǎng)數(shù)據(jù)包,其鏈路層的承載效率a可以表示為:
轉(zhuǎn)發(fā)平臺(tái)的輸入、輸出帶寬、內(nèi)部傳輸帶寬的關(guān)系可以用下面的表達(dá)式來(lái)表述:
參考FPGA供應(yīng)商Xilinx[5]和Altera[6]的芯片水平,在數(shù)據(jù)包長(zhǎng)度L = 40字節(jié)的時(shí)候,使用125Mhz時(shí)鐘和128比特位寬的方式來(lái)進(jìn)行數(shù)據(jù)傳輸,這樣可以使內(nèi)部傳輸帶寬達(dá)到16Gbps。這樣就能滿足一個(gè)高性能的線速網(wǎng)絡(luò)安全轉(zhuǎn)發(fā)平臺(tái)的要求。
對(duì)于轉(zhuǎn)發(fā)平臺(tái)的查表設(shè)計(jì),本文給出了一個(gè)支持流水線操作的NSE[7,8]+SRAM查表搜索結(jié)構(gòu)[9—12],NSE(搜索引擎)中存放每一個(gè)表項(xiàng)的關(guān)鍵字,SRAM中存放查找表的結(jié)果,其具體查表過程如圖5所示。
圖 5 NSE+SRAM的流水線查表操作
如上述結(jié)構(gòu),可以將查表過程分為三個(gè)子過程,即送入查表關(guān)鍵字、輸出匹配地址、讀取查表結(jié)果,這三個(gè)子過程可以支持流水線操作。所以一次成功的查表的時(shí)間就由最長(zhǎng)的子流水段的時(shí)間所決定,對(duì)于實(shí)際應(yīng)用環(huán)境,組播查表關(guān)鍵字的生成就決定了最長(zhǎng)的查表時(shí)間,其為4個(gè)時(shí)鐘周期,而在NSE支持的125Mhz工作頻率下,完全可以滿足性能達(dá)到10Gbps帶寬的轉(zhuǎn)發(fā)平臺(tái)的設(shè)計(jì)要求。
FPGA技術(shù)的發(fā)展與進(jìn)步,為以FPGA為基礎(chǔ)而實(shí)現(xiàn)的高速轉(zhuǎn)發(fā)平臺(tái)提供了良好的基礎(chǔ)芯片和開發(fā)平臺(tái)。FPGA芯片的主要技術(shù)性能具體表現(xiàn)在以下幾個(gè)方面。
(1)高速M(fèi)GT:Xilinx[13]和Altera[14]兩個(gè)FPGA主流供應(yīng)商都針對(duì)高速FPGA的開發(fā),集成了24個(gè)以上的MGT(Multi-Gigabit Transciver)模塊。這些模塊可以實(shí)現(xiàn)10Gbps以上的數(shù)據(jù)傳輸帶寬要求,同時(shí)抗噪能力、功耗消耗都更理想。
(2)封裝和電平:FPGA供應(yīng)商都提供大量的不同的封裝類型,以及大規(guī)模的I/O引腳數(shù)。并且每個(gè)引腳都支持阻抗匹配技術(shù),可以減少片外電阻設(shè)計(jì)。支持多種單端和差分電平標(biāo)準(zhǔn)。
(3)時(shí)鐘:大多數(shù)FPGA都提供多達(dá)12個(gè)以上的DCM,使用DCM可以補(bǔ)償由于時(shí)鐘傳輸延時(shí)以及電路板布局限制產(chǎn)生的限號(hào)不穩(wěn)定情況。DCM能更好的適合具有多個(gè)時(shí)鐘域和關(guān)鍵時(shí)序要求的系統(tǒng)。
(4)片內(nèi)塊RAM:大多是FPGA都提供超過10Mb嵌入式Block RAM可以實(shí)現(xiàn)對(duì)報(bào)文的高容量且高速的緩存,可以支持多種數(shù)據(jù)處理功能方面的應(yīng)用。
基于前文的分析圖6給出了一個(gè)性能為10Gbps帶寬的轉(zhuǎn)發(fā)平臺(tái)的設(shè)計(jì)方案。在FPGA內(nèi)部完成數(shù)據(jù)包包頭的檢查,主要包括版本號(hào)、校驗(yàn)和、TTL等關(guān)鍵字段;在設(shè)計(jì)時(shí)可以在其后面串接安全功能模塊,并采用流水線的方式實(shí)現(xiàn)以提高性能;在FPGA外部采用搜索引擎芯片NSE和片外SRAM芯片如2.2節(jié)介紹的來(lái)配合FPGA內(nèi)部模塊的功能完成查表;通過PCIE通道實(shí)現(xiàn)CPU和FPGA的數(shù)據(jù)通信,可以通過CPU向FPGA下發(fā)指令,以及實(shí)現(xiàn)某些數(shù)據(jù)包的上傳CPU功能;在CPU上還可進(jìn)行二次開發(fā),實(shí)現(xiàn)一些FPGA難以實(shí)現(xiàn)的功能。
圖 6 10Gbps轉(zhuǎn)發(fā)平臺(tái)設(shè)計(jì)方案
該方案具有很強(qiáng)的靈活性和可移植性,開發(fā)者可以根據(jù)該平臺(tái)開發(fā)添加適合自己產(chǎn)品的功能模塊。
本文采用Xilinx公司的k7系列FPGA,龍心3A國(guó)產(chǎn)處理器。125m時(shí)鐘128位寬的數(shù)據(jù)總線,按照設(shè)計(jì)要求,其可以達(dá)到16Gb的吞吐量。
采用TestCenter網(wǎng)絡(luò)測(cè)試儀進(jìn)行性能測(cè)試(該網(wǎng)絡(luò)測(cè)試儀包長(zhǎng)計(jì)算包括包頭)。經(jīng)測(cè)試,在不添加安全功能模塊的前提下,系統(tǒng)的吞吐量如表2所示。可以看出其完全滿足10Gbps線速轉(zhuǎn)發(fā)平臺(tái)的要求。
表2 轉(zhuǎn)發(fā)平臺(tái)吞吐量測(cè)試
包長(zhǎng)(byte)吞吐量(GB) 6415.87 12815.90 25615.92 51215.94 102415.97