邵 凱
(重慶郵電大學 通信與信息工程學院,重慶 400065)
IP網絡設備是IP網絡的核心,其性能的好壞直接影響IP網絡規模、網絡穩定性以及網絡可擴展性。由于互聯網工程任務組(IETF)沒有對特定設備性能測試作專門規定,一般只能按照RFC2544[1]作測試。網絡互聯設備(如路由器)性能測試包括吞吐量、時延、丟包率、背靠背幀數、系統恢復時間等指標。上述指標要求測試儀表具備主動測試功能,能產生符合要求的以太網幀,并按任意的速率向IP網絡發送數據,實時獲取網絡的性能指標。
產生任意速率的數據流是IP網絡測試儀表要解決的首要問題,目前有兩種方法:一是采用軟件封裝數據流,然后通過網絡驅動器接口標準(NDIS)向外傳送數據;二是采用基于FPGA的設計方法。
第一種方法的優點是編寫修改容易,不考慮信號與信號之間的相互關系,不存在信號完整性問題。缺點是軟件每執行一條指令的耗費時間與CPU有關,CPU的系統頻率越低,工作效率就越低,而在嵌入式系統中,CPU的工作頻率普遍不高,一般約為幾百兆赫茲。同時,軟件的時間定位不準確,稍微偏差1 ms,就會影響上千條數據流。CPU到NDIS接口的耗費時間成倍增加,假設NDIS接口能承載1 000 Mbit/s的流量,由于CPU訪問數據時,采樣一個數據需要幾個到十幾個系統周期,導致產生的數據流速率低,遠遠無法滿足測試要求。
第二種方法的優點是:時間定位精確,可達到納秒級,不存在多發或者少發數據流的現象;不需要太高的工作頻率就能產生1 000 Mbit/s的流量(設系統位寬是8位,工作頻率125 MHz);工作效率高,使用流水線的方式產生或者拆解各種數據流,處理時延忽略不計;能達到1 000 Mbit/s以上的吞吐能力,避免丟包。缺點是要縝密考慮信號完整性,調試困難,開發難度高。
測試儀表針對10/100/1 000(Mbit·s-1)以太網網絡,要求高精度的測試結果,因此采用FPGA設計方法是解決問題的關鍵[2]。
由IEEE 802.3標準可知,以太網幀由前導碼B(7 byte)、幀起始定界符S(1 byte)、目的MAC地址(6 byte)、源MAC地址(6 byte)、類型/長度(2 byte)、數據(46~1 500 byte)和幀校驗序列(4 byte)組成。
正常的以太網幀最小長度是64 byte,最大長度是1 518 byte。在每個幀前,有前導碼B(單位byte)和起始定界符S(單位byte)。設系統并行總位寬為N(單位bit),幀長度為L(單位byte)、幀速率V(單位幀/秒,即f/s)、設定線速率為C(bit/s)、最小幀間隔G是12 byte,則有

根據式(1),設C=1 000 Mbit/s,L=64 byte,G=12 byte,那么幀速率V約為1 488 095 f/s。可見,FPGA必須每秒產生1 488 095條64 byte長度的以太網幀才能符合1 000 Mbit/s流量的要求。
IEEE 802.3標準規定1 000 Mbit/s的以太網網絡兩幀間最小間隔是96 ns,系統工作頻率是125 MHz(周期為8 ns,位寬N=8 bit),可見幀間隔是12 byte,與式(1)計算一致。
同一設備對接不同的網絡,工作模式將不一樣,如圖1所示,假設網絡A為100 Mbit/s的以太網網絡,根據物理層之間自適應原理,測試儀表發送部分要自適應為100 Mbit/s的工作模式,所以outside_clk設為25 MHz。

如果圖1中inside_clk仍為125 MHz,幀間隔是12,那么客戶層產生100 Mbit/s的流量只需要0.1 s,而鏈路層以下處理100 Mbit/s流量需要的時間是1 s,可見除非在鏈路層增加足夠大的緩沖區,否則以25 MHz的outside_clk為參考時鐘的物理層無法在0.1 s內承載100 Mbit/s的流量。任何物理資源總是有限的,充分考慮系統性價比,采用無限增加緩沖區這一方法無效。
有兩種方法解決上述問題,一是inside_clk與out?side_clk采用同源時鐘;二是inside_clk采用125 MHz,適當增加幀間隔[3]。
1)同源時鐘技術
根據IEEE 802.3標準,在1 000 Mbit/s網絡下,out?side_clk的工作時鐘是125 MHz,100 Mbit/s網絡下,out?side_clk 的工作時鐘是 25 MHz,10 Mbit/s網絡下,out?side_clk的工作時鐘是2.5 MHz。因此,inside_clk可通過一個選擇器進行時鐘切換,滿足同源時鐘的要求(見圖2)。

如圖2所示,locallink_clk根據實際網絡環境選擇10M_clk,100M_clk或者1 000M_clk為參考時鐘,然后通過BUFG(全局時鐘buffer)產生同頻率同相位的in?side_clk和outside_clk。這一方案在一定程度上滿足了圖1的要求。
假設圖1中的數據總線local_dat對接網絡A中的一臺155.52 Mbit/s的多業務傳送平臺(Multi-Service Trans?fer Platform,MSTP)設備,為了實現同源時鐘設計方案,只能再接上一條155.52M_clk供locallink_clk進行選擇。如果對接311.04 Mbit/s的MSTP設備,也需要提供一條311.04M_clk供選擇。以此類推,對接不同的環境,需要不同的時鐘,顯然,在有限的資源下,無法滿足這樣的要求。即使有足夠的資源,采用這一方式,FPGA綜合布線非常困難,性能很差。
2)流量均衡技術
流量均衡技術就是在固定的系統工作頻率下,適當增加鏈路層緩沖區,把流量平均分配到各個時間點上。如圖3所示,將左側陰影部分平均分成5等份,然后均勻分布到各時間點上,即系統能根據外部條件自動調整幀間隔,平穩地發送測試數據流,避免突發流量的產生。

流量均衡技術需要動態調整幀間隔,設計復雜度相對同源時鐘設計方案來說要高,但在有限的資源下,流量均衡技術系統時鐘固定不變,FPGA綜合布線容易,性能高,適合大規模邏輯設計。
設系統頻率為F(單位MHz),系統并行總線位寬為N(單位bit),則系統總吞吐量T(單位bit/s)為

設幀間隔是G(單位byte),幀長是L(單位byte),前導碼B(單位byte),起始符S(單位byte),幀速率V(單位f/s),則有

結合式(2)和式(3),幀間隔G與幀速率V關系為

根據式(1),式(4)進一步推導為

假設F=125 MHz,L=64 byte,用戶設定的發送速率為100 Mbit/s,根據式(5),得到G=768 byte,每個字節的周期為8 ns(T=1/F),所以兩幀之間的時間間隔差為768×8 ns=6 144 ns,也就是說前一幀頭到下一幀頭之間的時間間隔差為6 144 ns+(L+B+S)×8 ns=6 720 ns。
如果采用同源時鐘設計方法,系統頻率F降為25 MHz,系統總位寬N為4(100/10(Mbit·s-1)模式下,系統數據總線只有低4位有效),即每個字節需要2個周期才能傳完,那么前一幀頭到下一幀頭之間的時間間隔差是(L+G+B+S)×2×(1/25)×1 000 ns=6720 ns。
可見,采用流量均衡技術與采用同源時鐘設計方案達到的效果是一致的。鏈路層緩沖區只須正常緩存最大幀長即可。
如圖4所示,速率控制模塊主要由幀間隔寄存器、幀速率寄存器、幀間隔控制器、幀速率控制器、判定和鏈路層緩沖區組成。工作流程如下:
1)上層軟件首先將式(5)的值寫入到幀間隔寄存器,將式(1)的值寫入幀速率寄存器,轉入2);
2)定時器開始工作,每定時到1 s,定時器就打開開關,更新速率控制器的內容,轉入3);
3)幀速率控制器在trm_cpl為1時,自減1,然后將spd_rdy信號置1,幀間隔控制器自減到0,并將gap_rdy信號置1,轉入4);
4)判定模塊時刻監測gap_rdy和spd_rdy信號,當它們同時為1時,判定條件成功,將judge_rdy信號置1,轉入5);
5)鏈路層緩沖區在judge_rdy信號為1時,通過out?data總線向網絡發送測試數據,發送成功后,分別對trm_rdy和trm_cpl信號置1,outdata經過圖1中的鏈路層的MAC控制器后,變成outside_dat信號,轉入6);
6)trm_rdy信號為1時,打開開關,更新幀間隔控制器,轉入3)。
FPGA經過上述1)~6)的工作步驟輪循后,就產生了穩定的測試速率,精確度達到1 ms以上。

本設計采用Modelsim仿真器進行驗證。設用戶需要產生400 Mbit/s、幀長度為64 byte的測試數據流。根據式2),幀速率為595 238 f/s。根據式9),每秒的幀間隔是138(即1 104 ns,設系統頻率是125 MHz)。那么在25 μs中FPGA要產生15幀才能滿足上述要求。
如圖5所示,gmii_tx_clk_0,gmii_txd_0,gmii_tx_en_0和gmii_tx_er_0是一個標準的吉比特媒體獨立接口(Gigabit Media Independent Interface,GMII),即圖1中的outside_dat信號。時刻12 994 200 ps與104 742 000 ps的時間間隔差約為25 μs,在這一時間間隔內,總共有15個數據幀(gmii_tx_en_0為高電平時表示一個數據幀有效)。兩幀間隔差是1 104 ns(時刻119 862 000 ps與11 875 800 ps的時間間隔差)。可見FPGA的仿真結果與理論分析一致,說明本文基于流均衡技術的FPGA實現方法滿足了測試需求。

詳細推導了幀速率和幀間隔的計算方法,從理論上提出了一套實現流量控制的測試方法,充分對比了同源時鐘技術與流量均衡技術,明確指出了基于流量均衡技術的FPGA實現方法,能在有限的資源下滿足絕大部分的測試環境。仿真結果證明,本文設計的基于流量均衡技術的FPGA實現方法符合高精度IP網絡性能測試要求,具有很高的參考價值和工業應用價值。
[1] LEE J W,CHOI J K.A study of rate-based credit flow control mechanism between IP network and ATM network,high performance switching and routing[C]\Proc.the IEEE Conference on Digital Object.[S.l.]:IEEE Press,2000:205-213.
[2] 王瑞剛,多用途以太網分路器的設計與實現[J].電視技術,2011,35(5):74-77.
[3]MATRAWY A,LAMBADARIS I.Multicast flow control in prioritybased IP networks[C]\Proc.Conference on Electrical and Computer Engineering.[S.l.]:IEEE Press,2003:1009-1012.
[4] 何全勝,姚國祥.IP網絡中實時數據流的流量控制[J].計算機科學,2002,29(3):51-53.