王曉嬌,張治中
(重慶郵電大學(xué)通信網(wǎng)與測(cè)試技術(shù)重點(diǎn)實(shí)驗(yàn)室 重慶 400065)
隨著LTE(long term evolution,長(zhǎng)期演進(jìn))網(wǎng)絡(luò)規(guī)模的擴(kuò)大、帶寬的不斷提升,基于全I(xiàn)P的業(yè)務(wù)應(yīng)用發(fā)展迅速,對(duì)網(wǎng)絡(luò)流量生成技術(shù)也提出了新的挑戰(zhàn)。部署LTE網(wǎng)絡(luò)的采集機(jī)、交換機(jī)、路由器等網(wǎng)絡(luò)設(shè)備的新產(chǎn)品、新協(xié)議的開發(fā)過(guò)程中,IP流量發(fā)生器可以在簡(jiǎn)單的測(cè)試環(huán)境中,模擬LTE現(xiàn)網(wǎng)的IP數(shù)據(jù)和流量以及各種異常的數(shù)據(jù)分組,為生產(chǎn)、測(cè)試、研發(fā)提供信號(hào)源[1],是網(wǎng)絡(luò)模擬和網(wǎng)絡(luò)設(shè)備測(cè)試中的重要工具。
目前流量生成技術(shù)主要基于通用處理器、ASIC(application specific integrated circuit,專用集成電路)專用芯片或FPGA(field programmable gate array,現(xiàn)場(chǎng)可編程門陣列)實(shí)現(xiàn)。第一種方法可以模擬較低速率的網(wǎng)絡(luò)流量;第二種方法是采用專用硬件器件實(shí)現(xiàn),雖然可以生成高速率的流量,滿足吉比特線速的速率環(huán)境要求,但成本昂貴,實(shí)現(xiàn)復(fù)雜;而采用可編程器件的方式,利用FPGA可以有效兼顧性能與成本[1~3]。
本文設(shè)計(jì)了一種基于LTE網(wǎng)絡(luò)測(cè)試儀數(shù)據(jù)采集平臺(tái)的IP流量發(fā)生器,該硬件平臺(tái)采用全FPGA架構(gòu),重點(diǎn)研究了在Windows平臺(tái)下用軟件方式實(shí)現(xiàn)高速流量的生成方法,分析了性能模式和仿真模式兩種工作模式的軟件設(shè)計(jì)方案。在性能模式下能夠精準(zhǔn)地定速、定量發(fā)送用戶指定長(zhǎng)度的單個(gè)IP數(shù)據(jù)分組,在仿真模式下可以發(fā)送批量IP數(shù)據(jù)分組,包括短分組、長(zhǎng)分組、超長(zhǎng)分組,兩者均能同時(shí)支持多路發(fā)送,擁有很好的靈活性,對(duì)LTE網(wǎng)絡(luò)測(cè)試儀的數(shù)據(jù)采集測(cè)試、模擬高速網(wǎng)絡(luò)環(huán)境具有重要的應(yīng)用價(jià)值。
LTE網(wǎng)絡(luò)測(cè)試儀的IP流量發(fā)生器基于IP數(shù)據(jù)采集卡硬件平臺(tái)進(jìn)行開發(fā),該硬件平臺(tái)采用全FPGA架構(gòu),其總體模塊化設(shè)計(jì)如圖1所示。由于待發(fā)送的IP數(shù)據(jù)分組已封裝成MAC幀,因此應(yīng)用層控制模塊直接將待發(fā)送的MAC幀依次寫入板卡的發(fā)送內(nèi)存中,并與FPGA層的BMD(bus master DMA,總線主控DMA)模塊通過(guò)約定好的交互機(jī)制,控制數(shù)據(jù)的發(fā)送與更新。由于采用新一代總線接口PCI-E X4連接PC機(jī)和板卡,BMD模塊通過(guò)與PCI-E core模塊配合,向操作系統(tǒng)申請(qǐng)PCI-E協(xié)議事務(wù)層的TLP(transaction layer packet,事務(wù)層分組),返回的TLP稱為CplD(completion with data,攜帶數(shù)據(jù)的完成分組)。BMD 中的CplD重組模塊對(duì)亂序的CplD進(jìn)行重新排序,按照正確的序列寫入發(fā)送FIFO中,通過(guò)發(fā)送調(diào)度模塊[4],控制發(fā)送的速率和順序,將IP數(shù)據(jù)分組送入下一級(jí)的MAC模塊進(jìn)行復(fù)制、分流處理,最后通過(guò)相應(yīng)的SFP端口將數(shù)據(jù)發(fā)出。由此可見,在數(shù)據(jù)傳輸通道已建立的情況下,保證該IP流量發(fā)生器功能與性能的關(guān)鍵是應(yīng)用層控制模塊與BMD模塊的交互機(jī)制設(shè)計(jì)。
在性能模式下,IP流量發(fā)生器可實(shí)現(xiàn)單個(gè)IP數(shù)據(jù)分組的多次或無(wú)限次發(fā)送,重點(diǎn)關(guān)注發(fā)送速率的可控性,即發(fā)送數(shù)據(jù)的速率可由上層用戶進(jìn)行設(shè)定。速率控制的關(guān)鍵在于BMD中發(fā)送調(diào)度模塊的流量控制算法設(shè)計(jì),實(shí)現(xiàn)方法的基本思想是:在兩個(gè)相鄰MAC幀之間插入一定數(shù)量的空閑周期,空閑周期數(shù)的取值與BMD模塊的FPGA時(shí)鐘周期有關(guān)。
以下對(duì)該方案的發(fā)送速率進(jìn)行逐步推導(dǎo)。
發(fā)送數(shù)據(jù)比特率的原始計(jì)算式為式(1),其中,Speed為發(fā)送速率,mrd_len_real_byte為發(fā)送的MAC幀幀長(zhǎng),單位為bit,frm_send_gap為兩個(gè)相鄰MAC幀之間的空閑周期數(shù),periodtrm_clk為時(shí)鐘周期,[mrd_len_real_byte/8]表示總是向上取整。
在實(shí)際應(yīng)用中,考慮到后級(jí)模塊會(huì)添加4 byte校驗(yàn)位和20 byte的間隙,因此發(fā)送速率的修正計(jì)算式如下:
若發(fā)送特定比特率的數(shù)據(jù)流,由式(1)反演得到:
其中,ftrm_clk為時(shí)鐘頻率,與periodtrm_clk成倒數(shù)關(guān)系。從式 (2)可以看出,發(fā)送速率Speed與 MAC幀長(zhǎng)mrd_len_real_byte成正比,與發(fā)送間隙frm_send_gap成反比。因?yàn)閒rm_send_gap≥0,可以通過(guò)式(4)得到Speed的理論最大值為:
由于BMD模塊實(shí)際取時(shí)鐘頻率ftrm_clk為125 MHz,即時(shí)鐘周期為8 ns,可以達(dá)到Speed≤1 Gbit/s的理論上限。又因?yàn)樵贛AC幀長(zhǎng)mrd_len_real_byte、時(shí)鐘周期periodtrm_clk一定的情況下,發(fā)送速率Speed只與發(fā)送間隙frm_send_gap相關(guān),根據(jù)式(2)可得frm_send_gap的計(jì)算式為:
因此,上層用戶設(shè)定發(fā)送速率后,應(yīng)用層控制模塊根據(jù)發(fā)送的MAC幀長(zhǎng)與速率,計(jì)算出發(fā)送間隙數(shù)frm_send_gap,其粒度為8 ns。并根據(jù)約定好的交互機(jī)制,向BMD模塊提供該參數(shù),使其根據(jù)該空閑周期數(shù),控制MAC幀的發(fā)送節(jié)奏,以達(dá)到定速的目的。
IP流量發(fā)生器的主控方在PC機(jī)端,在性能模式下,是進(jìn)行單個(gè)IP數(shù)據(jù)分組的發(fā)送,因此應(yīng)用層程序?qū)⒋l(fā)送的IP數(shù)據(jù)分組拷貝到板卡的發(fā)送內(nèi)存中即可,無(wú)需更新數(shù)據(jù)。然后,根據(jù)用戶設(shè)置的相關(guān)參數(shù),配置好相關(guān)寄存器,啟動(dòng)數(shù)據(jù)發(fā)送命令,后續(xù)的發(fā)送控制工作將完全交由BMD模塊進(jìn)行處理。軟件配置流程如圖2所示。
仿真模式下,IP流量發(fā)生器可以實(shí)現(xiàn)對(duì)一個(gè)完整IP數(shù)據(jù)分組文件的發(fā)送,即可發(fā)送批量IP數(shù)據(jù)分組[5]。不同于性能模式,仿真模式發(fā)送時(shí)會(huì)涉及對(duì)板卡發(fā)送內(nèi)存的數(shù)據(jù)更新。經(jīng)前期測(cè)試,如果拷貝一個(gè)IP數(shù)據(jù)分組到發(fā)送內(nèi)存,啟動(dòng)一次發(fā)送,再寫入下一個(gè)分組,再啟動(dòng)一次發(fā)送,效率會(huì)很低。因此,本方案通過(guò)對(duì)數(shù)據(jù)幀進(jìn)行重新封裝,將發(fā)送內(nèi)存劃分為若干塊,設(shè)定讀寫索引號(hào),實(shí)現(xiàn)數(shù)據(jù)的“邊發(fā)邊寫”功能,保證了較理想的發(fā)送性能。
為了充分利用板卡有限的發(fā)送內(nèi)存空間(硬件平臺(tái)實(shí)際預(yù)留了4 MB發(fā)送內(nèi)存),實(shí)現(xiàn)一次寫入多個(gè)IP數(shù)據(jù)分組,并且BMD可以定位每個(gè)IP數(shù)據(jù)分組,應(yīng)用層向板卡的發(fā)送內(nèi)存寫入數(shù)據(jù)前,需對(duì)數(shù)據(jù)進(jìn)行重新封裝,封裝格式如圖3所示。BMD從發(fā)送內(nèi)存提取數(shù)據(jù)后,首先進(jìn)行解封裝,根據(jù)MAC幀長(zhǎng)字段可以定位每個(gè)MAC幀。
4.2.1 發(fā)送內(nèi)存分塊
為了提高BMD每次從發(fā)送內(nèi)存讀取的數(shù)據(jù)量,提高處理效率,按8 kbit/s的粒度將板卡發(fā)送內(nèi)存分為大小相同的若干個(gè)塊,用Block表示,如圖4所示。每一個(gè)Block可存放若干個(gè)數(shù)據(jù)幀,BMD每次可讀取一個(gè)或多個(gè)Block。
4.2.2 讀寫索引號(hào)
為了能使應(yīng)用層與BMD更好地識(shí)別和控制每一個(gè)Block,需要設(shè)置讀索引號(hào)RdIdx和寫索引號(hào)WdIdx,以對(duì)應(yīng)每一個(gè)8 kbit/s的Block,第n個(gè)Block對(duì)應(yīng)的讀寫索引號(hào)值為n。上層應(yīng)用程序負(fù)責(zé)更新寫索引號(hào)WdIdx以啟動(dòng)下層發(fā)送,下層BMD負(fù)責(zé)不斷輪詢WdIdx值的變化以發(fā)送數(shù)據(jù),并更新讀索引號(hào)RdIdx以反饋給上層。上層再通過(guò)讀取RdIdx是否與WdIdx一致,判斷下層是否已發(fā)送相應(yīng)數(shù)據(jù)段,以執(zhí)行后續(xù)發(fā)送和數(shù)據(jù)更新操作。
4.2.3 發(fā)送處理流程
數(shù)據(jù)發(fā)送的處理會(huì)有以下3種情況:要發(fā)送的數(shù)據(jù)(包括重復(fù)發(fā)送次數(shù))可一次裝入發(fā)送內(nèi)存;第一次可拷貝的數(shù)據(jù)文件次數(shù)大于等于1,但不能把所有數(shù)據(jù)(包括重復(fù)發(fā)送次數(shù))一次性裝入發(fā)送內(nèi)存中;第一次不能裝下一次完整的數(shù)據(jù)。因此應(yīng)用控制模塊會(huì)進(jìn)行判斷,按情況分別處理,處理流程如圖5所示。
其中,第3種情況是“邊發(fā)邊寫”算法的難點(diǎn),需要真正地邊發(fā)送、邊更新發(fā)送內(nèi)存的數(shù)據(jù)。應(yīng)用層啟動(dòng)發(fā)送下一個(gè)Block的同時(shí),會(huì)更新上一個(gè)Block數(shù)據(jù),而新寫入的數(shù)據(jù)需要在整個(gè)發(fā)送文件中重新定位,才能保證發(fā)送數(shù)據(jù)的可靠性和有效性。
IP流量發(fā)生器的測(cè)試界面如圖6所示,界面可以選擇要發(fā)送的數(shù)據(jù)文件進(jìn)行參數(shù)設(shè)定,包括工作模式、發(fā)送的MAC幀范圍(起始消息號(hào)和結(jié)束消息號(hào))、重復(fù)發(fā)送次數(shù)、發(fā)送比特率、發(fā)送端口等內(nèi)容。配置成功后,可以計(jì)算出發(fā)送的第一個(gè)MAC幀長(zhǎng)、MAC幀個(gè)數(shù)和發(fā)送間隔數(shù)。將光纖連接網(wǎng)絡(luò)性能測(cè)試儀表作為接收端,以測(cè)試發(fā)送的速率和接收到的數(shù)據(jù)幀數(shù),點(diǎn)擊啟動(dòng)發(fā)送后,統(tǒng)計(jì)列表視圖會(huì)顯示各端口的具體發(fā)送信息。
表1 性能模式下短分組與長(zhǎng)分組的發(fā)送速率
表2 仿真模式下IP數(shù)據(jù)分組發(fā)送情況
通過(guò)多次測(cè)試,對(duì)性能模式和仿真模式的發(fā)送情況進(jìn)行了統(tǒng)計(jì),部分結(jié)果分別見表1和表2。從表中可以分析出,該IP流量發(fā)生器在性能模式下可以進(jìn)行有效的流量控制,在可容忍的誤差范圍內(nèi)實(shí)現(xiàn)精準(zhǔn)的定速發(fā)送;在仿真模式下,可以正確穩(wěn)定地發(fā)送完整的數(shù)據(jù)文件,且長(zhǎng)分組的發(fā)送速率可以達(dá)到630 Mbit/s,短分組的發(fā)送速率達(dá)到269 Mbit/s,能夠較好地模擬網(wǎng)絡(luò)流量,滿足當(dāng)前LTE網(wǎng)絡(luò)測(cè)試儀的測(cè)試需求。
本文對(duì)LTE網(wǎng)絡(luò)測(cè)試儀的IP流量生成技術(shù)進(jìn)行了研究,提出了一種基于LTE網(wǎng)絡(luò)測(cè)試儀數(shù)據(jù)采集硬件平臺(tái)的IP流量發(fā)生器設(shè)計(jì)與實(shí)現(xiàn)方案,介紹了性能模式和仿真模式下的軟件實(shí)現(xiàn)方法,重點(diǎn)研究了流量控制算法和數(shù)據(jù)“邊發(fā)邊寫”的軟件控制方法。實(shí)際測(cè)試表明,該IP流量發(fā)生器在性能模式下能夠?qū)崿F(xiàn)精準(zhǔn)的定速發(fā)送,在仿真模式下能夠正確穩(wěn)定地發(fā)送批量IP數(shù)據(jù),具有良好的發(fā)送性能,滿足LTE網(wǎng)絡(luò)測(cè)試的流量模擬需求,在LTE網(wǎng)絡(luò)測(cè)試系統(tǒng)中具有重要的應(yīng)用價(jià)值。
1 王一強(qiáng).IP流量發(fā)生器的研究與實(shí)現(xiàn).成都理工大學(xué)碩士學(xué)位論文,2010
2 Antichi G,Di Pietro A,Ficara D,et al.Design of a high performance traffic generatoron network processor.Digital System Design Architectures,Methods and Tools,DSD’08,2008:438~441
3 張錚,趙榮彩,邰銘等.一種靈活的基于網(wǎng)絡(luò)處理器的流量生成方法.計(jì)算機(jī)工程與應(yīng)用,2007,43(21):137~140
4 陳玉花,張治中,杜西亞.IPTV測(cè)試儀網(wǎng)絡(luò)層測(cè)試的設(shè)計(jì)與實(shí)現(xiàn).電子技術(shù)應(yīng)用,2009(6):102~105,109
5 李明,雒江濤,鄧炳光.一種E1多模式數(shù)據(jù)仿真測(cè)試平臺(tái)的研究與實(shí)現(xiàn).電視技術(shù),2011,35(5):113~116