朱全彪 吳紅青
(1.武漢郵電科學研究院 武漢 430074)(2.烽火通信科技股份有限公司 武漢 430073)
伴隨著互聯網時代[1]到來,網絡通信技術[2]正快速地發展,規模不斷的擴大,用于連接網絡的互聯設備在當今網絡中扮演著越來越重要的角色[3]。網絡互聯設備特別是交換機作為網絡的核心,其性能將對網絡穩定性及網絡的可靠性起關鍵作用。因此,網絡設備良好的性能是網絡正常運行的有力保障,正確評測網絡互聯設備是設備使用前的關鍵一步。RFC2544協議[4]作為網絡設備的國際評測標準,它提供了一系列切實有用的測試過程和步驟,使得用戶和服務運營商可以在相同標準下,對測試的實施和結果有個正確統一的認識。
目前都是利用現有的測試儀器[5~6]對網絡設備進行測量,但網絡設備缺少自我測量的功能。本文以三層交換機[7~8]作為載體,在其已有的硬件基礎上,基于RFC2544協議開發軟件評測系統,并驗證系統的可行性。
RFC2544協議是由國際互聯網工程任務組[9](Internet Engineering Task Force,IETF)制定的,作為評測網絡互聯設備性能的國際標準,其測試的性能指標得到了主流運營商和各大網絡設備制造廠商的認可,已成為一個國際標準。RFC2544協議提出采用七種標準幀作為測試幀,標準幀長由大到小依次為1518字節、1280字節、1024字節、512字節、128字節、64字節、32字節,并在一定的時間內,按照一定的數目對確定的幀長進行測試,其主要測試項[10~12]有:
1)丟包率(Frame Loss Rate)是指測試交換機在不同負載條件下不能轉發的數據包占總發送數據包個數的比例,反映被測交換機對負載的承受能力。不同負載指發送數據幀的速率,速率的范圍一般是從吞吐量增大到線速(理論上網絡中最大的傳輸數率),步長不超過線速的10%。
2)時延(Latency)是指被測交換機吞吐量速率范圍內從發出幀到接收該幀的時間間隔,反映被測交換機處理收到的數據幀的能力。
3)吞吐量(Throughput)是指被測試交換機在丟包率為零的情況下數據幀轉發的最大速率,是一個重要的評測指標,直接反映被測交換機的質量好壞。通常可以根據二分查找法原理求得被測交換機的吞吐量。
另外RFC2544協議介紹了兩種基本的測試模式,以交換機為研究對象,分別介紹如下。
單機模式工作流程[13]:如圖1所示,在A交換機輸入配置測試命令,利用命令行啟動測試,測試數據幀由交換機A產生并經發包端口發出,然后經過交換機B的轉發,流回交換機B的收報端口,最后,交換機A按照協議規定的方法進行處理運算,通過命令查看測試狀態和結果。

圖1 單機模式
雙機模式工作流程[14]:如圖2所示,該模式下存在四種測試模式,分別為環回、上行、下行以及上行-下行測試模式,四種測試模式都是在由三臺交換機構成的拓撲結構下進行測試。環回測試是交換機A作為客戶端進行數據的發送和接收,交換機B作為中間設備,交換機C作為服務器完成數據流的環回工作。上行測試是由交換機A發送數據幀,由交換機C接收傳送回來數據幀。下行測試正好相反,由交換機C發送,由交換機A來接收。上行-下行測試是上行測試和下行測試的結合。

圖2 雙機模式
RFC2544協議認為單機模式和雙機模式都是適合的,但各有優缺點[15]。單機模式測試環境的搭建簡單方便,容易控制測試精度,但很難制造足夠的測試壓力。而雙機模式由于是三臺設備同時工作,雖然容易產生測試壓力,但由于進程處于三臺設備中,將不可避免地造成時間同步與進程同步等問題。因為本文探討的是交換機的以太網測試,單機結構部署靈活,且能達到測試目的,所以本文的實現選擇比較經典的單機測試。
本文使用的交換機為三層交換機,硬件是由以太網收發模塊、FPGA模塊和CPU管理模塊組成,如圖3所示。以太網收發模塊采用博通公司生產的BCM5482芯片,該芯片具備10M/100M/1000M自協商功能,是一個雙口千兆PHY芯片,每個BCM5482芯片可管理2個電口,實現以太網得數據通信,并通過SGMII接口與CPU管理模塊通信。CPU管理模塊選用博通芯片BCM56268,該芯片提供多個接口,包括內聯到交換業務的MDIO接口、內聯到ARM處理器的UART接口和連接到FPGA的同步接口等,本模塊把以太網測試幀發送給BCM5482芯片,實現數據的發送,同樣解析接收到的數據,將從收發模塊BCM5482芯片接收到數據發送給FPGA處理。FPGA模塊選用ALTERA EP4CE6E22C8N,該模塊提升對數據的處理能力。

圖3 硬件系統結構
本系統軟件采用C語言開發,編寫好源代碼在Linux主機上編譯,編譯好的可執行文件通過FTP工具上傳給交換機并運行。整個的開發架構采用功能模塊化設計,包括實時信息查詢模塊、參數配置模塊、狀態機FSM模塊、API模塊以及以太網幀處理模塊,這樣的設計降低了各模塊間的耦合,便于后期維護。整個的軟件系統架構如圖4所示。具體到RFC2544系統軟件,有如下這些重要文件。Cmd_rfc2544.c為命令行函數文件,實現參數配置、信息查詢等功能。rfc2544.c、rfc2544.h為以太網幀處理函數文件,實現以太網幀處理的功能。rfc2544_sm.c、rfc2544_sm.h文件實現狀態機FSM模塊的功能。rfc2544_api.c為set、get函數文件,實現API模塊的功能。

圖4 軟件系統結構
假設Test_rate(kbps)為發送測試包的速率,Trt_pkt為發送的測試包數量,Rcv_pkt為接收的測試包數量,N為測試次數,T為測試時間。
步驟:以Test_rate(kbps)的速率(本實驗中取100M),在T時間內發送Trt_pkt個數據包到被測交換機,經過環回,接收到的數據包數量為Rcv_pkt個,記錄本次測試的丟包率

如此測試N次,得到N個結果值,求得其平均值作為結果。
假設Test_rate(kbps)發送測試包的速率,T1為發送時間,T2為接收時間,lRcv_pkt為上次收報數,Rcv_pkt為本次收報數,LtyDly為某次測試中的時延,AvgDly為平均時延,lAvgDly為上次的平均時延,N測試次數,T為測試時間。
步驟:第一輪測試中,以 Test_rate(kbps)速率(本實驗中取10M),在T時間內發送一定的數據包到對端的交換機設備,記錄發送時間T1,經過一段時間,記錄到達的時間T2,在沒有數據包丟失的情況下,計算本次的時延LtyDly=T2-T1。在接下的測試過程中,都會計算每次的平均時延,平均時延AvgDly的計算公式為

如此測試N次,得到N個結果值,求得其平均值作為結果。
假設Test_rate(kbps)為發送的測試包速率,Rcv_pkt為接收的測試包數量,Trt_pkt為發送的測試包數量,R為測試精度(本實驗中取1M),N為測試次數,T為測試時間。
步驟:以Test_rate(kbps)的速率(本實驗中取1000M),在T時間內發送Trt_pkt個數據包到被測交換機,經過環回,接收到的數據包數量為Rcv_pkt個,比較Trt_pkt和Rcv_pkt的大小。如果Trt_pkt=Rcv_pkt,表示數據包沒有丟失,則增大交換機發送數據包的速率。如果Trt_pkt>Rcv_pkt,表示有數據包丟失,則減小交換機發送數據包的速率,然后判斷兩次發包速率的差值是否小于測試精度R。如果測試結果滿足要求,差值小于測試精度R,則取本次發送數據包的速率作為該次測試的吞吐量值,否則進入下一輪測試直到滿足精度要求。如此測試N次,得到N個結果值,求得平均值作為最終的吞吐量值。
本文是在三層交換機的Linux平臺下,設計了一種基于RFC2544標準的以太網性能測試方案,通過命令行實時獲取以太網吞吐量、時延和丟包率的測試結果,并在XY坐標系中描點形成直觀的折線,便于分析。
如圖5所示,測試幀長度越長,丟包率反而越小。這是因為在帶寬相同的情況下,幀長越長,單位時間內,被測交換機設備處理的數據包個數越少,丟包越少,即丟包率下降。

圖5 丟包率測試結果
如圖6所示,時延測試結果指的是平均時延,測試幀長度越長,時延越大。這是因為數據幀長越大,被測交換機設備處理時間增加,所耗費的時間越長,時延就越大。

圖6 時延測試結果
如圖7所示,數據幀長越小,對吞吐率的影響越大,反之,幀長越長,對吞吐率的影響越小,而且可以很明顯地看到,數據幀長增加到一定的時候,吞吐率幾乎沒有變化了。這是因為同一帶寬下,數據幀長度增大時,在相同時間內,進入被測交換機進行處理的數據包數量就會減少,而處理單個數據包的時間沒有改變,所以轉發速率變快,從而增加了吞吐量。

圖7 吞吐率測試結果
從以上對測試結果的分析可得,在三層交換機中設計的軟件測試系統,符合RFC2544協議標準,從而驗證了該軟件測試系統的可行性。