摘 要:路由器是網(wǎng)絡(luò)架設(shè)中必不可少的構(gòu)建組件,在路由器構(gòu)成中重要的就是NetFPGA網(wǎng)絡(luò)硬件平臺(tái)。該硬件平臺(tái)具有可重構(gòu)性,并且模塊化程度較高,更是一種開放型平臺(tái),用戶能夠根據(jù)所需構(gòu)建多種網(wǎng)絡(luò)應(yīng)用。基于NetFPGA的硬件路由器就是在其平臺(tái)上利用模塊化思想完成路由器構(gòu)建的方法,并對(duì)路由器進(jìn)行了功能驗(yàn)證,證實(shí)其可行性和安全可靠性。
關(guān)鍵詞:NetFPGA平臺(tái);模塊化路由器;可重構(gòu)性
中圖分類號(hào):TP393.05
路由器從結(jié)構(gòu)角度劃分,可分為模塊化和非模塊化兩種。非模塊結(jié)構(gòu)路由的接口固定,功能不可重構(gòu),通常只能用于小型網(wǎng)絡(luò)。而模塊化結(jié)構(gòu)的路由器的接口和功能擴(kuò)展都能根據(jù)用戶所需進(jìn)行配置和改變,能滿足不同應(yīng)用環(huán)境中用戶擴(kuò)容的需要和業(yè)務(wù)的拓展,更多的應(yīng)用到大型網(wǎng)絡(luò)中?,F(xiàn)在,模塊化結(jié)構(gòu)路由器的應(yīng)用設(shè)計(jì)更為廣泛。
1 路由器系統(tǒng)
1.1 NetFPGA系統(tǒng)概述
NetFPGA硬件平臺(tái)的兩大重要組成部分是:用戶控制層面及硬件轉(zhuǎn)發(fā)層面,其具體構(gòu)成如圖1所示。
由上圖可知,硬件轉(zhuǎn)發(fā)層面基于PCI板的組成電路。有兩個(gè)FPGA:其中一個(gè)實(shí)誠(chéng)頻率為125MHz,滿足用戶自主進(jìn)行編程的Vir-tex-II Pro50 FPGA;另外一個(gè)是被用來(lái)連接主機(jī)CPU的PCI接口,Xilinx Spartan控制邏輯的小型FPGA。還有四個(gè)FPGA的軟核千兆以太網(wǎng)控制器MAC。內(nèi)存有兩部分,一部分是2個(gè)同步于FPGA的125MHz頻率、字長(zhǎng)達(dá)36Byte的SRAM;另一部分是兩個(gè)異步于FPGA的時(shí)鐘頻率為200MHz、字長(zhǎng)達(dá)32Byte的DRAM。
而用戶控制層面也由兩大模塊構(gòu)成:功能實(shí)現(xiàn)模塊及架構(gòu)管理模塊。功能實(shí)現(xiàn)模塊的構(gòu)成:路由協(xié)議管理子模塊,例如OPSF軟件Scone;系統(tǒng)測(cè)試子模塊,例如監(jiān)聽端口計(jì)數(shù)器Cout-dump;簡(jiǎn)單的操作Java GUI的用戶管理界面。架構(gòu)管理模塊的構(gòu)成:仿真調(diào)試NetFPGA開放設(shè)計(jì)的CAD輔助設(shè)計(jì)工具ISE Modelsim;監(jiān)管工具M(jìn)onitor,對(duì)連接開發(fā)板和主機(jī)操作系統(tǒng)進(jìn)行管理,配置板卡、NetFPGA和主機(jī)的DMA傳送、映射片上存儲(chǔ)和DRAM及SRAM到內(nèi)存中,通過讀和寫控制NetFPGA的運(yùn)行形式。
1.2 設(shè)計(jì)思路
NetFPGA進(jìn)行硬件路由器設(shè)計(jì)的具體過程為:首先應(yīng)用置頂向下的過程,并逐層對(duì)模塊進(jìn)行設(shè)計(jì)和編寫,并層層調(diào)用。編寫完成后,用Modelsim仿真驗(yàn)證,并用ISE綜合,生成bit文件。通過PC機(jī)將bit文件下載到FPGA中編程,完成硬件設(shè)計(jì)。軟件由NetFPGA板卡的特定監(jiān)聽協(xié)議端口的數(shù)據(jù)包解析,再按照路由信息策略進(jìn)行相應(yīng)處理,保證成功運(yùn)行路由協(xié)議。在該設(shè)計(jì)中,更傾向于將硬件路由器設(shè)計(jì)成管道模型,不僅有ASIC的處理速度,還增強(qiáng)了其靈活性。圖2就是整個(gè)硬件路由器的管道模型圖:數(shù)據(jù)成流線型處理方式,數(shù)據(jù)總線及寄存器總線采用分時(shí)復(fù)用傳輸處理內(nèi)容。該模型只有一個(gè)push口,簡(jiǎn)單易行。
由上圖得知,模塊化硬件路由器主要有五個(gè)處理階段構(gòu)成:首先是進(jìn)行接收,對(duì)從以太網(wǎng)口收到的信號(hào)幀進(jìn)行重組,并增加輸入端口及數(shù)據(jù)包容量的控制信息;然后對(duì)信息進(jìn)行輸入判定,采用輪詢機(jī)制路對(duì)8路數(shù)據(jù)進(jìn)行處理,決定選出進(jìn)入下階段的信息;之后查詢輸出端口狀態(tài),處理數(shù)據(jù)包,按照訪問列表篩選數(shù)據(jù)包并按照目的IP對(duì)硬件轉(zhuǎn)發(fā)表查詢確定輸出端口,重點(diǎn)修改轉(zhuǎn)發(fā)包相關(guān)字段,避免出錯(cuò);輸出信息隊(duì)列,根據(jù)控制頭的輸出字段將數(shù)據(jù)包送到相應(yīng)的輸出緩存中,依次輪詢,構(gòu)成發(fā)送隊(duì)列;進(jìn)行發(fā)送,去掉數(shù)據(jù)包控制頭改變數(shù)據(jù)包格式,完成幀重組輸送到網(wǎng)絡(luò)。
1.3 模塊功能
輸入判定模塊功能:將數(shù)據(jù)通道的8路信號(hào)并行輸送進(jìn)判定器,運(yùn)行round-robin機(jī)制,在1個(gè)時(shí)鐘周期中只選擇1路數(shù)據(jù)并送到下階段,其它信號(hào)暫存判決隊(duì)列中,等待查詢。
路由輸出端口查詢功能:首先預(yù)處理,分析數(shù)據(jù)包,標(biāo)記字段,將數(shù)據(jù)流并行送入之后處理模塊中。再進(jìn)入鏈路層分析,按照目的MAC是非本地主機(jī)對(duì)數(shù)據(jù)包類型標(biāo)識(shí)并將標(biāo)識(shí)信息送到綜合處理塊。按照目的IP篩選,提取目的IP查詢TCAM列表,決定接收、轉(zhuǎn)發(fā)還是丟棄。進(jìn)入IP首部修正,數(shù)據(jù)包被1次轉(zhuǎn)發(fā)后,生存時(shí)間TTL減1修正,送到綜合處理塊。進(jìn)入IP首部檢測(cè),讀取控制頭輸入端口字,奇數(shù)為轉(zhuǎn)發(fā)包,偶數(shù)為本地主機(jī)數(shù)據(jù)包。進(jìn)入轉(zhuǎn)發(fā)查詢,根據(jù)最長(zhǎng)前綴匹配機(jī)制,獲取下一跳IP及輸出端口號(hào)。進(jìn)入ARP查詢,按照獲得的路由選項(xiàng)查詢ARP的緩存硬件映射表,獲取輸出端口MAC,輸出到綜合處理塊。最后進(jìn)入綜合處理,綜合以上提供的所有標(biāo)識(shí)信息及修正字段,重新生成一個(gè)數(shù)據(jù)包IP頭部,更新輸出端口字,將信息輸出隊(duì)列塊。
輸出隊(duì)列模塊功能:將輸出端查詢模塊送來(lái)的數(shù)據(jù)包存到SRAM中,再執(zhí)行round-robin輪詢,在系列子模塊中處理。存儲(chǔ)子塊將數(shù)據(jù)包存進(jìn)SRAM,并將新的存儲(chǔ)地址送給寄存器。頭部判斷塊分析進(jìn)入數(shù)據(jù)包,獲取控制頭的輸出端口字,標(biāo)識(shí)輸出到移除塊中。移除塊輪詢讀取輸出隊(duì)列數(shù)據(jù)包,刪除控制頭,送到發(fā)送端口隊(duì)列。
2 路由器功能驗(yàn)證
為證明該硬件路由的可行性需要對(duì)其中OSPF動(dòng)態(tài)路由協(xié)議及轉(zhuǎn)發(fā)功能的運(yùn)行情況進(jìn)行分析觀察。應(yīng)用終端HA向HC持續(xù)發(fā)送ICMP包的測(cè)試方式,并應(yīng)用Wireshark觀測(cè)SB網(wǎng)絡(luò)端口,監(jiān)測(cè)OSPF的運(yùn)行狀態(tài)。檔網(wǎng)絡(luò)拓?fù)渫暾麜r(shí),HA能夠不管pingHC。HA和HC的互通是通過HC終端用tracetoute進(jìn)行路由器選路的查看,發(fā)現(xiàn)這時(shí)候路徑為:HA→SA→SC→HC。然后斷開SC和SA間的直接連線。之后HA和HC間的通信就會(huì)因?yàn)镺SPF的路徑重新選擇中斷2s,之后才能恢復(fù)兩者之間的通信,此時(shí)查看路由器的路徑選擇,結(jié)果變?yōu)椋篐A→SA→SB→SC→HC。有以上的實(shí)驗(yàn)結(jié)果,經(jīng)過合理分析得知:網(wǎng)絡(luò)拓?fù)浒l(fā)生變化時(shí),OSPF協(xié)議開始運(yùn)行并且完成交互更新數(shù)據(jù)包,完成路由更新,證明NetFPGA轉(zhuǎn)發(fā)功能的正確性機(jī)及OSPF動(dòng)態(tài)路由協(xié)議運(yùn)行得正常性,證明NetFPGA硬件路由器可行性的實(shí)現(xiàn)。
3 結(jié)束語(yǔ)
基于NetFPGA的硬件路由器的設(shè)計(jì)就是在NetFPGA的平臺(tái)上進(jìn)行管道模型式的模塊化硬件路由器的設(shè)計(jì),并通過實(shí)驗(yàn)進(jìn)行了路由器功能的驗(yàn)證。結(jié)果證明,NetFPGA平臺(tái)的性能良好,能進(jìn)行動(dòng)態(tài)路由協(xié)議和其他功能的實(shí)現(xiàn)。綜合分析該路由器性能較為穩(wěn)定可靠,在以后市場(chǎng)中會(huì)占有更大的份額,應(yīng)用前景看好。
參考文獻(xiàn):
[1]洪毅清,秦雅娟,周華春.基于NetFPGA的模塊化硬件路由器實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2011(28):28-35.
[2]羅臘勇,賀鵬,關(guān)洪濤.可編程虛擬路由器關(guān)鍵技術(shù)與原型系統(tǒng)[J].計(jì)算機(jī)學(xué)報(bào),2013(33):108-112.
作者單位:遼寧省交通高等??茖W(xué)校,沈陽(yáng) 110122