摘 要: 介紹了網(wǎng)絡(luò)流量管理中的網(wǎng)絡(luò)數(shù)據(jù)采集系統(tǒng)的設(shè)計與實現(xiàn)。以Altera StratixGX系列FPGA為平臺,結(jié)合Marvell 88E1111網(wǎng)絡(luò)芯片,完成了網(wǎng)絡(luò)數(shù)據(jù)采集系統(tǒng)。本設(shè)計采用SoPC技術(shù),利用Altera提供的千兆以太網(wǎng)IP核,完成FPGA系統(tǒng)無縫連接千兆以太網(wǎng),實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)包采集。
關(guān)鍵詞: 千兆以太網(wǎng);SoPC;MAC;PCS;PMA
隨著互聯(lián)網(wǎng)的迅猛發(fā)展,對網(wǎng)絡(luò)管理的需求日益迫切,而流量監(jiān)測和統(tǒng)計分析是整個網(wǎng)絡(luò)管理的基礎(chǔ)。為了實現(xiàn)對網(wǎng)絡(luò)進(jìn)行綜合管理,有必要及時全面地收集、管理網(wǎng)絡(luò)的流量信息,準(zhǔn)確獲取網(wǎng)絡(luò)流量數(shù)據(jù),對網(wǎng)絡(luò)流量態(tài)勢進(jìn)行分析,對網(wǎng)絡(luò)健康狀況及未來的發(fā)展趨勢作出準(zhǔn)確判斷。然而,隨著網(wǎng)絡(luò)帶寬的增加和規(guī)模的擴(kuò)大,大規(guī)模網(wǎng)絡(luò)流量采集面臨著數(shù)據(jù)規(guī)模龐大和數(shù)據(jù)到達(dá)速度過快的挑戰(zhàn)。為了克服上述困難,通常采用硬件實現(xiàn)完成流量采集功能[1]。當(dāng)前采用硬件實現(xiàn)的流量采集方法(如Cisco的NetFlow或者InMon的sFlow)都是基于對數(shù)據(jù)報文周期性地采樣來進(jìn)行流量采集,這種方法存在處理速度緩慢、統(tǒng)計結(jié)果不精確、實現(xiàn)代價大、單個流處理訪存次數(shù)多等缺點。
隨著FPGA的發(fā)展,其內(nèi)部資源日益豐富,速度和性能大大提高,特別是內(nèi)部嵌入了大量IP核[2],這些使得在FPGA上進(jìn)行高速網(wǎng)絡(luò)流數(shù)據(jù)的采集和分析成為可能。流量管理系統(tǒng)主要包含網(wǎng)絡(luò)數(shù)據(jù)采集系統(tǒng)、網(wǎng)絡(luò)數(shù)據(jù)統(tǒng)計與分析和網(wǎng)絡(luò)數(shù)據(jù)分流三部分,如圖1所示。
本系統(tǒng)基于FPGA,獲取RJ45端口的網(wǎng)絡(luò)數(shù)據(jù),然后對數(shù)據(jù)進(jìn)行流量統(tǒng)計和分析,最后根據(jù)分析結(jié)果,將網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行分流再重新轉(zhuǎn)發(fā)回網(wǎng)絡(luò)中。
1 網(wǎng)絡(luò)數(shù)據(jù)采集系統(tǒng)總體設(shè)計
本文基于FPGA,重點研究了前端網(wǎng)絡(luò)數(shù)據(jù)采集系統(tǒng),該系統(tǒng)總體框圖如圖2所示,網(wǎng)絡(luò)數(shù)據(jù)由RJ45端口接入系統(tǒng),經(jīng)Marvell 88E1111和千兆以太網(wǎng)核的解析,獲取完整的數(shù)據(jù)包,暫存在指定地址的片內(nèi)RAM中進(jìn)行統(tǒng)計和分析。
網(wǎng)絡(luò)數(shù)據(jù)采集系統(tǒng)主要通過Marvel 88E1111物理層芯片和Altera公司的千兆以太網(wǎng)IP硬核來實現(xiàn),兩者通過標(biāo)準(zhǔn)的SGMII接口連接。
在發(fā)送數(shù)據(jù)的過程中,88E1111物理層芯片將FPGA的千兆以太網(wǎng)IP硬核產(chǎn)生的高速串行數(shù)據(jù)流經(jīng)RJ45以太網(wǎng)口,由5類雙絞線傳遞出去。在接收數(shù)據(jù)的過程中,88E1111物理層芯片檢測從5類雙絞線傳遞進(jìn)來的電信號,如果有有效電信號到來,將高速串行數(shù)據(jù)流傳遞給千兆以太網(wǎng)MAC核。
2 物理層器件88E1111
Altera公司的千兆以太網(wǎng)硬核默認(rèn)支持的物理層器件有支持10/100 Mb/s的National DP83848C,支持10/100/1000 Mb/s的National DP83865以及支持雙物理層和10/100/1000 Mb/s的Marvell 88E1111。
Marvell公司的物理層芯片88E1111是一款高性能的芯片,支持包括GMII、RGMII、SGMII、TBI、RTBI等接口的MAC層和物理層的連接方式,可以直接接入千兆以太網(wǎng)MAC或交換機(jī)端口,10/100/1000 Mb/s的物理傳輸層的媒介,光纖傳輸線連接方式以及雙絞線的連接方式[3]。88E1111支持的最高速率為1.25 GHz,I/O電平標(biāo)準(zhǔn)為3.3 V LVTTL。系統(tǒng)選擇Marvell 88E1111作為PHY器件。
3 千兆以太網(wǎng)
以太網(wǎng)技術(shù)是一種廣泛應(yīng)用的網(wǎng)絡(luò)技術(shù),千兆以太網(wǎng)在兼容原有以太網(wǎng)技術(shù)的基礎(chǔ)上進(jìn)行了一系列改進(jìn),網(wǎng)絡(luò)數(shù)據(jù)傳輸速率得到了大幅度提高。特別是IEEE802.3ab(1 000Based-T)千兆網(wǎng)標(biāo)準(zhǔn)的出臺,將5類非屏蔽雙絞線應(yīng)用在千兆網(wǎng)中,使得網(wǎng)絡(luò)性能在原有布線基礎(chǔ)上獲得大幅度提高[4]。如今,千兆網(wǎng)已經(jīng)發(fā)展成為主流的網(wǎng)絡(luò)技術(shù)。
千兆網(wǎng)兼容了原來以太網(wǎng)標(biāo)準(zhǔn)所規(guī)定的全部技術(shù)規(guī)范,其中包括CSMA/CD協(xié)議、以太網(wǎng)幀、全雙工、流量控制等。千兆網(wǎng)的標(biāo)準(zhǔn)化結(jié)構(gòu)包括介質(zhì)訪問控制(MAC)、物理編解碼(PCS)和物理介質(zhì)接入(PMA)三個主要部分。
3.1 千兆以太網(wǎng)FPGA硬核
Altera提供可參數(shù)化的千兆以太網(wǎng)IP核解決方案,該方案可在Altera的CycloneII、CycloneIII、Stratix等系列FPGA上工作,可配置使其包含MAC、PCS和PMA模塊中的一種或多種,選擇相應(yīng)的接口標(biāo)準(zhǔn)[5]。
構(gòu)建千兆以太網(wǎng)系統(tǒng)必須先了解MAC、PCS和PMA三個模塊的功能及其帶來的影響。MAC模塊主要用于全雙工模式下的流量控制及MAC幀的發(fā)送和接收,其主要操作有MAC幀的封裝與解包以及錯誤檢測。MAC模塊通過MII/GMII/RGMII接口與PHY器件或者PCS模塊進(jìn)行通信,同時為用戶提供了基于Aalon-ST的8 bit/32 bit接口[6]。
PCS和PMA分別代表物理層的物理編碼子層和物理介質(zhì)接入層,這兩個模塊在配置過程中是可選的。PCS模塊專門負(fù)責(zé)信道的編解碼、糾錯和擾碼等,可以通過GMII或MII接口訪問,同時提供了TBI接口與物理介質(zhì)接入層進(jìn)行通信。PMA模塊主要功能是實現(xiàn)數(shù)據(jù)在物理線路上串\并或并\串轉(zhuǎn)換,同時連接外部物理介質(zhì)相關(guān)(PMD)的設(shè)備,可以驅(qū)動銅線或光纖網(wǎng)路進(jìn)行工作,與PMD設(shè)備接口為1.25 Gb/s串行口或者SGMII接口。整個千兆以太網(wǎng)系統(tǒng)模塊關(guān)系圖如圖3所示。
SGMII是1.25 Gb/s串行數(shù)據(jù)接口,根據(jù)表1內(nèi)容選定系統(tǒng)中千兆以太網(wǎng)IP核包含MAC、PCS和PMA三個模塊。
3.3 千兆以太網(wǎng)IP核的配置
Altera提供千兆以太網(wǎng)控制器IP核,通過配置界面可將IP核配置為所需模式并進(jìn)行IP核參數(shù)設(shè)置,配置界面分為以下4個配置頁面[6]。
(1)Core Configuration:核配置選項,配置以太網(wǎng)功能模塊,是否包含PCS模塊、FIFO模塊,配置接口類型、端口數(shù)等。系統(tǒng)配置包含PCS和FIFO模塊,同時配置PCS接口類型為LVDS I/O(SGMII要求)。
(2)MAC Options:MAC配置選項,配置MAC模塊功能,系統(tǒng)配置包含MDIO模塊。
(3)FIFO Options:FIFO存儲器選項,可設(shè)置FIFO存儲器類型以及存儲器數(shù)據(jù)長度。
(4)PCS/SGMII Options:物理介質(zhì)接入層模塊配置頁面,配置物理層,系統(tǒng)配置包含SGMII橋接口。
4 網(wǎng)絡(luò)數(shù)據(jù)采集系統(tǒng)設(shè)計
網(wǎng)絡(luò)數(shù)據(jù)采集系統(tǒng)是基于Altera強(qiáng)大的SoPC Builder開發(fā)工具來完成系統(tǒng)設(shè)計。SoPC Builder 是一個軟件工具,它屬于一種基于IP或平臺的設(shè)計方法。平臺包括Altera的Nios處理器、Avalon總線以及片內(nèi)外存儲器。利用SoPC Builder,用戶可以很方便地將各種IP模塊通過Avalon總線連接起來,形成一個完整的系統(tǒng)[7]。SoPC Builder已包含一些常用的外設(shè)IP模塊,用戶也可自定義外設(shè)IP。
Avalon總線標(biāo)準(zhǔn)規(guī)定了Avalon-MM(Memory Mapped)和Avalon-ST(Strming)兩種接口。千兆以太網(wǎng)接口邏輯采用Avalon總線作為與其他模塊的互聯(lián)總線[8]。
4.1 系統(tǒng)介紹
為更好地實現(xiàn)數(shù)據(jù)鏈路和控制鏈路的分離,提高系統(tǒng)的執(zhí)行效率,千兆以太網(wǎng)模塊通過Avalon-ST接口和用戶程序進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)通信,以提升數(shù)據(jù)流傳遞過程中的效率。同時,系統(tǒng)自定義網(wǎng)絡(luò)數(shù)據(jù)接收模塊將千兆以太網(wǎng)解析的數(shù)據(jù)從Avalon-ST接口讀出,并存入指定地址處暫存,等待用戶程序處理。自定義網(wǎng)絡(luò)數(shù)據(jù)發(fā)送模塊將處理好的數(shù)據(jù)從RAM中讀出千兆以太網(wǎng)的Avalon-ST接口。
系統(tǒng)自定義千兆以太網(wǎng)控制模塊,通過MAC核的Avalon-MM接口實現(xiàn)對MAC核、PCS和物理芯片的控制。系統(tǒng)詳細(xì)結(jié)構(gòu)圖如圖5所示。
4.2 控制模塊設(shè)計
千兆以太網(wǎng)采用Avalon-MM從端口作為控制接口,接口提供了8 bit地址信號線,32 bit的讀寫控制信號,同時還提供了一些狀態(tài)信號。系統(tǒng)通過該控制接口,對MAC、PCS和外部物理器件進(jìn)行寄存器初始化,實現(xiàn)對MAC、PCS和外部PHY的控制。
自定義Control模塊是一個Avalon-MM主端口模塊,通過Avalon-MM總線接入MAC控制接口。在Control模塊內(nèi)部定義了一個狀態(tài)機(jī),如圖6所示,依次實現(xiàn)對千兆以太網(wǎng)各模塊的控制。
Control模塊首先初始化外部PHY(Marvell 88E1111)的寄存器,啟動外部物理器件;然后,初始化PCS寄存器,實現(xiàn)PCS模塊的幀同步;最后,對MAC寄存器初始化,設(shè)置其工作模式并啟動MAC開始工作。
初始化PHY的寄存器是通過MDC/MDIO端口實現(xiàn)的,MDC/MDIO是一個二線的控制端口,MDC是控制時鐘,MDIO是串行的輸入輸出數(shù)據(jù)。自定義Control模塊通過MAC的控制端口,對PHY寄存器初始化。初始化信號通過MAC模塊的翻譯,最終通過MDC/MDIO端口送入到PHY寄存器中。
初始化PCS和MAC的寄存器都是直接通過Avalon-MM從端口映射實現(xiàn)的。
4.3 自定義收發(fā)模塊設(shè)計
千兆以太網(wǎng)解析模塊通過Avalon-ST接口和用戶程序進(jìn)行通信。Avalon-ST接口本質(zhì)上已經(jīng)不同于Avalon-MM接口,它是一種非總線形式的連接,給設(shè)備之間提供了總線之外的點對點專用連接,以提升數(shù)據(jù)流傳遞過程中的效率。
Avalon-ST提供的點到點數(shù)據(jù)傳輸不能直接將網(wǎng)絡(luò)數(shù)據(jù)流按網(wǎng)絡(luò)數(shù)據(jù)包為單位傳輸?shù)焦潭ㄎ恢?。將各網(wǎng)絡(luò)數(shù)據(jù)以包為單位送到RAM指定地址存儲,更方便用戶對網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行統(tǒng)計處理。
因此,系統(tǒng)自定義網(wǎng)絡(luò)數(shù)據(jù)接收模塊將千兆以太網(wǎng)解析的數(shù)據(jù)從Avalon-ST接口讀出,并存入指定地址處暫存,等待用戶程序處理。自定義網(wǎng)絡(luò)數(shù)據(jù)發(fā)送模塊將處理好的數(shù)據(jù)從RAM中讀出,并送入千兆以太網(wǎng)的Avalon-ST接口。
5 測試及結(jié)果分析
為了測試千兆以太網(wǎng)的性能,本文采用Stratix IV FPGA與PC機(jī)通信的方式對千兆以太網(wǎng)的通信速率進(jìn)行測試。PC機(jī)的硬件平臺為Intel奔騰3.0 GHz CPU,2 GB內(nèi)存,Broadcom netxtreme gigabit ethernet網(wǎng)卡,TCP/IP最大傳輸單元大小為1 500。測試方法為PC機(jī)向StratixIV發(fā)送4 GB的測試數(shù)據(jù),經(jīng)千兆位解析后,重新發(fā)送返回至PC機(jī)。測試系統(tǒng)結(jié)構(gòu)圖如圖7所示。
自定義接收模塊將接收的數(shù)據(jù)重新由發(fā)送模塊發(fā)送回PC機(jī)。數(shù)據(jù)傳輸率最高達(dá)1 000 Mb/s。
本文以Altera StratixGX系列FPGA為平臺,結(jié)合Marvell 88E1111網(wǎng)絡(luò)芯片,實現(xiàn)了千兆網(wǎng)絡(luò)數(shù)據(jù)采集系統(tǒng)。設(shè)計過程中采用SoPC技術(shù),利用Altera提供的千兆以太網(wǎng)IP核,完成FPGA系統(tǒng)無縫連接千兆以太網(wǎng),實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)采集。測試表明,該系統(tǒng)能有效、高速地滿足網(wǎng)絡(luò)管理系統(tǒng)的要求。
參考文獻(xiàn)
[1] 王宏,龔正虎.Hits和Holds:識別大象流的兩種算法[J].軟件學(xué)報,2010(6):1392-1402.
[2] 李璇,敖光良.基于FPGA的千兆以太網(wǎng)設(shè)計[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2008(5):63-64.
[3] Marvell. 88E1111 Data Sheet Integrated 10/100/1000 Ultra Gigabit Ethernet Transceiver[Z]. 2004-11
[4] IEEE802.3.Part3:Carrier sense multiple access with collision detection(CSMA/CD) acess method and physical layer specification[S],2005.
[5] 柳利軍,熊良芳.基于FPGA的千兆以太網(wǎng)交換芯片的設(shè)計[J].微電子學(xué)與計算機(jī),2006,23(3):80-82.
[6] Altera Corportion. Triple speed ethernet megacore function user guide[Z]. 2008.
[7] 徐欣,于紅旗. 基于FPGA嵌入式系統(tǒng)設(shè)計[M].北京:機(jī)械工業(yè)出版社,2005.
[8] 李蘭英.Nios II嵌入式軟核-SOPC設(shè)計原理及應(yīng)用[M].北京:航天航空出版社,2006.