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