一種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法
【專利摘要】本發(fā)明利用以太網(wǎng)交換芯片的通用功能,基于以太網(wǎng)交換機(jī)的通用硬件架構(gòu),提供一種以太網(wǎng)流量生成和分析的方法,以實現(xiàn)流量生成,流量分析兩大功能,具體包括:發(fā)送流量的報文內(nèi)容構(gòu)造、發(fā)送報文數(shù)量的控制,發(fā)送流量速率的控制,發(fā)送和接收流量的計數(shù)、接收流量的捕獲,轉(zhuǎn)發(fā)時延測量的功能,以及協(xié)議報文的交互功能。
【專利說明】—種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)通信中的流量分析技術(shù),尤其涉及一種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法。
【背景技術(shù)】
[0002]隨著以太網(wǎng)技術(shù)在通信領(lǐng)域的應(yīng)用不斷發(fā)展,小至家庭局域網(wǎng)(二層交換機(jī)),大到企業(yè)網(wǎng)和城域網(wǎng)(二三層交換機(jī)、路由器),甚至骨干網(wǎng)(傳輸設(shè)備、骨干路由器)都在廣泛使用以太網(wǎng)接口,因此產(chǎn)生了以太網(wǎng)流量生成和分析設(shè)備(簡稱測試設(shè)備),針對具有以太網(wǎng)接口的通信設(shè)備(簡稱被測試設(shè)備),在研發(fā)和生產(chǎn)過程中進(jìn)行測試分析。一般的測試場景為:測試設(shè)備與被測試設(shè)備之間通過網(wǎng)線連接了一個或多個物理端口,測試設(shè)備構(gòu)造出特定內(nèi)容的報文,以特定的速率通過某個物理端口發(fā)送到被測試設(shè)備,被測試設(shè)備接收到測試流量,經(jīng)內(nèi)部處理后,通過某個物理端口發(fā)送回到測試設(shè)備,測試設(shè)備對接收到的流量報文進(jìn)行分析,得出相應(yīng)的指標(biāo)數(shù)據(jù)。而測試設(shè)備提供的功能概括分為流量生成和流量分析兩個方面,其中流量生成包括:測試報文內(nèi)容的構(gòu)造,發(fā)送報文個數(shù)的控制,發(fā)送流量速率的控制;流量分析包括:發(fā)送和接收流量的計數(shù),接收流量報文內(nèi)容的捕獲(即抓包),被測試設(shè)備轉(zhuǎn)發(fā)時延的測量。
[0003]現(xiàn)有的測試設(shè)備一般采用FPGA芯片來實現(xiàn)流量的生成和分析,其研發(fā)成本高,周期長,技術(shù)難度大,同時FPGA具有功耗大的特點,在實際設(shè)備中需要使用大功率風(fēng)扇輔助散熱,所產(chǎn)生的噪聲也對測試環(huán)境造成了影響。
[0004]目前,市面上成熟的商用以太網(wǎng)交換芯片一般用于二三層以太網(wǎng)交換機(jī),主要面向企業(yè)和城域網(wǎng)用戶。其芯片內(nèi)部的處理流程一般為,當(dāng)接收端口從物理線路上接收到完整的一幀以太網(wǎng)數(shù)據(jù)后,根據(jù)設(shè)定的二三層轉(zhuǎn)發(fā)方式進(jìn)行查表,得到出口信息,然后進(jìn)入發(fā)送端口的發(fā)送隊列后等待調(diào)度,在由流量整形功能(令牌桶)調(diào)整發(fā)送速率后,發(fā)送到物理線路上。在這個基本處理過程中,為了靈活地滿足各種轉(zhuǎn)發(fā)需求,一般會引入流分類功能,即設(shè)定內(nèi)容匹配規(guī)則,對滿足匹配條件的報文施加相應(yīng)的處理動作。匹配規(guī)則可以選擇通用的報文數(shù)據(jù)字段,也可以自定義偏移量和數(shù)據(jù)寬度。處理動作一般包括丟棄報文,重新指定出口,流量限速(令牌桶),修改報文內(nèi)容等,其中流量限速動作又可以進(jìn)一步衍生出帶寬內(nèi)動作和超過帶寬動作。以太網(wǎng)交換芯片,結(jié)合通用處理器(CPU),構(gòu)成了以太網(wǎng)交換機(jī)的基本硬件架構(gòu),該通用處理器一般通過特定總線接口(如PCI/SPI/GMII等)訪問以太網(wǎng)交換芯片,對芯片的硬件寄存器進(jìn)行配置,以及將CPU生成的報文插入到芯片內(nèi)部的發(fā)送隊列中,或者從芯片內(nèi)部提取報文到CPU。
【發(fā)明內(nèi)容】
[0005]本發(fā)明利用上述以太網(wǎng)交換芯片的通用功能,基于以太網(wǎng)交換機(jī)的通用硬件架構(gòu),提供一種以太網(wǎng)流量生成和分析的方法,以實現(xiàn)流量生成,流量分析兩大功能,具體包括:發(fā)送流量的報文內(nèi)容構(gòu)造、發(fā)送報文數(shù)量的控制,發(fā)送流量速率的控制,發(fā)送和接收流量的計數(shù)、接收流量的捕獲,轉(zhuǎn)發(fā)時延測量的功能,以及協(xié)議報文的交互功能。
[0006]為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實現(xiàn):
[0007]本發(fā)明提供的一種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法,該方法包括:固定內(nèi)容流量生成模塊、變化內(nèi)容流量生成模塊、發(fā)送報文個數(shù)控制模塊、發(fā)送流量速率控制模塊、報文捕獲模塊、流量計數(shù)模塊、報文時延測量模塊及協(xié)議交互模塊,其中,固定內(nèi)容流量生成模塊實現(xiàn)固定內(nèi)容流量的生成方法,變化內(nèi)容流量生成模塊實現(xiàn)變化內(nèi)容流量的生成方法,發(fā)送報文個數(shù)控制模塊實現(xiàn)發(fā)送流量報文個數(shù)的控制方法,發(fā)送流量速率控制模塊實現(xiàn)流量發(fā)送速率的控制方法,報文捕獲模塊實現(xiàn)接收流量的捕獲方法、流量計數(shù)模塊實現(xiàn)收發(fā)流量的計數(shù)方法、報文時延測量模塊實現(xiàn)轉(zhuǎn)發(fā)時延的測量方法,協(xié)議交互模塊實現(xiàn)各類協(xié)議的測試方法,固定內(nèi)容流量生成模塊和變化內(nèi)容流量生成模塊,統(tǒng)一為流量生成模塊,所述模塊可單獨或組合使用。
[0008]上述方案中,所述固定內(nèi)容流量生成模塊具體通過以太網(wǎng)交換芯片上的兩個物理端口 A和B,配合CPU實現(xiàn)。其中端口 A為外部不可見端口且收發(fā)處于環(huán)回狀態(tài),定義為引擎端口,端口 B外部可見,并連接到了被測試設(shè)備,定義為發(fā)送端口。首先由CPU構(gòu)造出用戶指定內(nèi)容的以太網(wǎng)測試報文,插入到引擎端口 A的發(fā)送隊列,并發(fā)送到物理線路上,由于環(huán)回狀態(tài),該報文進(jìn)入引擎端口 A的接收入口,利用流分類功能,將其復(fù)制到引擎端口 A和發(fā)送端口 B的發(fā)送隊列。進(jìn)入發(fā)送端口 B的發(fā)送隊列的報文,隨之發(fā)送到物理線路上,該報文作為測試設(shè)備生成的測試流量報文送往被測試設(shè)備。進(jìn)入引擎端口 A發(fā)送隊列的報文,再次重復(fù)上述過程,從而發(fā)送端口 B能夠源源不斷向被測試設(shè)備發(fā)送出內(nèi)容固定的測試流量報文。進(jìn)一步的,使用引擎端口上的多個發(fā)送隊列或多個引擎端口,可以構(gòu)造出多條不同內(nèi)容的并發(fā)的測試流量。
[0009]上述方案中,所述變化內(nèi)容流量生成模塊具體為:在固定內(nèi)容流量生成模塊的基礎(chǔ)上,配合使用引擎端口上的大容量的發(fā)送隊列,實現(xiàn)內(nèi)容變化的流量。首先將引擎端口的發(fā)送隊列深度設(shè)置為最大,取決于交換芯片的報文緩存大小,定義最大隊列深度為N,然后關(guān)閉引擎端口的發(fā)送功能,即發(fā)送隊列中的報文將積壓等待發(fā)送。然后CPU連續(xù)向引擎端口的發(fā)送隊列注入N個內(nèi)容變化的報文。最后打開引擎端口的發(fā)送功能?;诠潭▋?nèi)容流量生成模塊的工作流程,隊列中N個內(nèi)容變化的報文將被反復(fù)地復(fù)制到發(fā)送端口上,實現(xiàn)內(nèi)容變化的持續(xù)流量。將固定內(nèi)容流量生成模塊和變化內(nèi)容流量生成模塊,統(tǒng)稱為流量生成模塊。
[0010]上述方案中,所述發(fā)送報文個數(shù)控制模塊具體為:在流量生成模塊的基礎(chǔ)上,利用引擎端口的入口流分類功能中的流量限速功能,實現(xiàn)發(fā)送報文數(shù)量的精確控制。首先設(shè)置流量限速功能的令牌桶的工作模式為報文模式,即令牌數(shù)的消耗取決于報文個數(shù)而不是報文字節(jié)數(shù)。其次關(guān)閉令牌注入功能,不再有新令牌產(chǎn)生,每個報文消耗的令牌都是存量令牌。然后根據(jù)用戶希望發(fā)送報文的數(shù)量,計算出所需要的令牌數(shù),并設(shè)置為令牌桶的當(dāng)前存量令牌數(shù),同時確保令牌桶深度大于該令牌數(shù)。最后配置流量限速的帶寬內(nèi)動作為復(fù)制到引擎端口和發(fā)送端口,帶寬外動作為丟棄?;诹髁可赡K的工作流程,每一個環(huán)回進(jìn)入引擎端口的報文,都會在通過流分類的流量限速時獲得對應(yīng)的動作,當(dāng)存量令牌尚未耗盡時,報文會被復(fù)制到引擎端口和發(fā)送端口,當(dāng)令牌數(shù)耗盡后,報文立即被丟棄,流量隨之結(jié)束。[0011]上述方案中,所述發(fā)送流量速率控制模塊具體為:在流量生成模塊的基礎(chǔ)上,配合引擎端口發(fā)送隊列上的流量整形功能,實現(xiàn)流量發(fā)送速率的精確控制。首先在CPU向引擎端口發(fā)送隊列注入報文前,將流量整形功能的令牌桶的令牌注入關(guān)閉,并清空存量令牌,此時令牌桶中無可用令牌,發(fā)送隊列中的報文將積壓在隊列內(nèi)等待可用令牌。然后由CPU注入報文到引擎端口的發(fā)送隊列,所有報文處于等待發(fā)送狀態(tài)。最后啟動令牌注入功能,注入速率為用戶希望的測試流量的發(fā)送速率,隊列中的報文等待到可用令牌后開始發(fā)送,發(fā)送速率與令牌的注入速率一致?;诹髁可赡K的工作流程,發(fā)送端口的報文發(fā)送速率與引擎端口的報文發(fā)送速率保持一致。通過使用多個引擎端口的發(fā)送隊列及其流量整形功能,可以實現(xiàn)多條測試流量的相互獨立的速率控制。
[0012]進(jìn)一步的,當(dāng)多條測試流量之間的速率存在一定比例時,可以優(yōu)化為使用單個發(fā)送隊列生成多條不同速率的流量,具體方法為:CPU向引擎端口的同一個發(fā)送隊列注入每條流量對應(yīng)的報文,每條流量注入報文的數(shù)量取決于流量之間的速率比例,最終發(fā)送隊列中將形成一組報文序列,不同流量之間的報文個數(shù)比例對應(yīng)于他們之間的速率比例,基于流量生成模塊的工作流程,該報文序列將保持不變地通過發(fā)送端口發(fā)送出去,從而達(dá)到多條流量之間的速率保持固定比例,實現(xiàn)了單個隊列生成不同速率的多條流量。
[0013]上述方案中,所述報文捕獲模塊具體利用以太網(wǎng)芯片上的一個物理端口,配合流分類功能和CPU實現(xiàn)指定內(nèi)容和指定數(shù)量的報文的捕獲和顯示。該物理端口外部可見,并連接到了被測試設(shè)備,用于接收從被測試設(shè)備發(fā)送出來的報文,定義為接收端口。首先接收端口接收到被測試設(shè)備發(fā)送出來的報文,利用流分類功能識別出需要捕獲的指定內(nèi)容的報文,對于不符合內(nèi)容要求的報文將不做捕獲處理。對于符合指定內(nèi)容要求的報文,流分類的流量限速功能將進(jìn)行速率或數(shù)量的控制,對于超過限速的報文將不做進(jìn)一步處理。對于通過限速檢查的報文,利用流分類功能將該報文轉(zhuǎn)發(fā)到CPU端口的發(fā)送隊列,同時攜帶時間戳信息,然后CPU端口發(fā)送隊列中的報文通過總線傳送到CPU,運行在CPU上的軟件模塊接收到報文后,解析報文內(nèi)容和時間戳信息,并呈現(xiàn)在用戶交互界面上。
[0014]上述方案中,所述流量計數(shù)模塊具體分為針對發(fā)送流量的計數(shù)和針對接收流量的計數(shù)。發(fā)送流量的計數(shù)利用引擎端口的流分類功能,對每一條流量,施加計數(shù)動作,統(tǒng)計發(fā)送報文的數(shù)量;接收流量的計數(shù)利用接收端口上的流分類功能,對接收到的所有報文施加計數(shù)動作,或針對特定內(nèi)容的報文施加計數(shù)動作。
[0015]上述方案中,所述報文時延測量模塊具體為:利用交換芯片上的一個處于環(huán)回狀態(tài)的物理端口,定義為為時延測量端口,得到時延測量所需要的發(fā)送時間戳,再配合報文捕獲模塊,得到時延測量所需要的接收時間戳,從而計算出被測試設(shè)備的轉(zhuǎn)發(fā)時延。首先CPU向引擎端口注入一個特定內(nèi)容的報文,用于時延測量,報文從引擎端口發(fā)送出去并環(huán)回進(jìn)入引擎端口,利用引擎端口的流分類功能識別出該特定測量報文,將其復(fù)制到時延測量端口和發(fā)送端口的發(fā)送隊列,報文分別從發(fā)送端口和時延測量端口同時發(fā)送出去。時延測量端口設(shè)置為環(huán)回狀態(tài),測量報文隨即重新進(jìn)入該端口,利用流分類功能識別出該測量報文,將其送往CPU端口的發(fā)送隊列,并攜帶時間戳Tl,最終CPU上的軟件模塊接收到該報文和時間戳。發(fā)送端口的報文送往被測試設(shè)備,經(jīng)其轉(zhuǎn)發(fā)處理后,送回到測試設(shè)備的接收端口,利用接收端口的流分類功能識別出該測量報文,將其送往CPU端口的發(fā)送隊列,攜帶時間戳T2,最終CPU上的軟件模塊接收到該報文和時間戳,CPU上的軟件模塊計算出時延為T2 -Tl。
[0016]上述方案中,所述協(xié)議交互模塊具體為:CPU上的軟件協(xié)議模塊生成協(xié)議報文,并直接插入到發(fā)送端口的發(fā)送隊列,發(fā)送到被測試設(shè)備。測試設(shè)備的接收端口接收到被測試設(shè)備發(fā)出的響應(yīng)協(xié)議報文后,通過流分類功能識別出特定的協(xié)議報文,轉(zhuǎn)發(fā)到CPU端口,最終CPU上的軟件協(xié)議模塊接收到該報文。該交互序列也可以是先接收報文,再發(fā)送報文,并且可以反復(fù)進(jìn)行,取決于具體協(xié)議的交互序列。
[0017]本發(fā)明基于通用的以太網(wǎng)交換芯片和以太網(wǎng)交換機(jī)的硬件架構(gòu),提供一種以太網(wǎng)流量生成和分析的方法,相比當(dāng)前同類測試設(shè)備的實現(xiàn),將大大降低研發(fā)成本和硬件成本,同時,基于交換機(jī)的硬件架構(gòu)具有明顯的低功耗和低噪音的優(yōu)勢,并且在設(shè)備體積和端口密度方面具有更大的潛力。
【專利附圖】
【附圖說明】
[0018]下面結(jié)合附圖對本發(fā)明的【具體實施方式】作進(jìn)一步詳細(xì)的說明,其中:
圖1是本發(fā)明一種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法的功能結(jié)構(gòu)
圖;
圖2是本發(fā)明一種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法中固定內(nèi)容流量生成模塊流程圖;
圖3是本發(fā)明一種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法中固定內(nèi)容流量生成模塊的多流量生成的流程圖;
圖4是本發(fā)明一種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法中變化內(nèi)容流量生成模塊流程圖;
圖5是本發(fā)明一種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法中發(fā)送報文個數(shù)控制模塊流程圖;
圖6是本發(fā)明一種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法中令牌桶突發(fā)特性的示意圖;
圖7是本發(fā)明一種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法中發(fā)送流量速率控制模塊流程圖;
圖8是本發(fā)明一種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法中發(fā)送流量速率控制模塊的優(yōu)化流程圖;
圖9是本發(fā)明一種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法中報文捕獲模塊流程圖;
圖10是本發(fā)明一種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法中報文流量計數(shù)模塊的發(fā)送流量計數(shù)流程圖;
圖11是本發(fā)明一種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法中報文流量計數(shù)模塊的接收流量計數(shù)流程圖;
圖12是本發(fā)明一種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法中報文時延測量模塊流程圖;
圖13是本發(fā)明一種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法中報文時延測量模塊的報文結(jié)構(gòu)示意圖; 圖14是本發(fā)明一種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法中協(xié)議交互模塊流程圖;
圖15是本發(fā)明一種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法中二層以太網(wǎng)交換機(jī)測試流程圖;
圖16是本發(fā)明一種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法中三層路由器測試流程圖;
圖17是本發(fā)明一種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法中三層以太網(wǎng)交換機(jī)測試流程圖。
【具體實施方式】
[0019]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚明白,下面結(jié)合實施方式和附圖,對本發(fā)明做詳細(xì)說明。在此,本發(fā)明的示意性實施方式及其說明用于解釋本發(fā)明,但并不作為對本發(fā)明的限定。
[0020]本發(fā)明利用以太網(wǎng)交換芯片的通用功能,基于以太網(wǎng)交換機(jī)的通用硬件架構(gòu),提供一種以太網(wǎng)流量生成和分析的方法,以實現(xiàn)流量生成,流量分析兩大功能,具體包括:發(fā)送流量的報文內(nèi)容構(gòu)造、發(fā)送報文個數(shù)的控制,發(fā)送流量速率的控制,發(fā)送和接收流量的計數(shù)、接收流量的捕獲(即抓包),轉(zhuǎn)發(fā)時延測量的功能,以及協(xié)議報文的交互功能。
[0021]本發(fā)明所述的一種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法,如圖1所示,該方法包括:固定內(nèi)容流量生成模塊、變化內(nèi)容流量生成模塊、發(fā)送報文個數(shù)控制模塊、發(fā)送流量速率控制模塊、報文捕獲模塊、報文流量計數(shù)模塊、報文時延測量模塊及協(xié)議交互模塊,其中,固定內(nèi)容流量生成模塊實現(xiàn)固定內(nèi)容流量的生成方法,變化內(nèi)容流量生成模塊實現(xiàn)變化內(nèi)容流量的生成方法,發(fā)送報文個數(shù)控制模塊實現(xiàn)發(fā)送流量報文個數(shù)的控制方法,發(fā)送流量速率控制模塊實現(xiàn)流量發(fā)送速率的控制方法,報文捕獲模塊實現(xiàn)接收流量的捕獲方法、報文流量計數(shù)模塊實現(xiàn)收發(fā)流量的計數(shù)方法、報文時延測量模塊實現(xiàn)轉(zhuǎn)發(fā)時延的測量方法,協(xié)議交互模塊實現(xiàn)各類協(xié)議的測試方法,所述模塊可單獨或組合使用。
[0022]如圖2所示,固定內(nèi)容流量生成模塊具體通過以太網(wǎng)交換芯片上的兩個物理端口,并配合CPU實現(xiàn)。其中一個端口為外部不可見端口且收發(fā)處于環(huán)回狀態(tài),定義為引擎端口,另一個端口外部可見,并連接到了被測試設(shè)備,定義為發(fā)送端口。具體方法為:
1、CPU構(gòu)造出以太網(wǎng)報文,插入到引擎端口的發(fā)送隊列;
2、該報文發(fā)送到物理線路上;
3、引擎端口設(shè)置為環(huán)回方式(MAC層或者PHY層的內(nèi)環(huán)),所有本端口發(fā)送出去的報文都會回到本端口接收入口;
4、引擎端口接收到報文后,利用流分類功能施加報文復(fù)制動作,將報文復(fù)制后同時送往引擎端口和發(fā)送端口的發(fā)送隊列;
5、進(jìn)入發(fā)送端口發(fā)送隊列的報文,發(fā)送到物理線路,送往被測試設(shè)備;
6、進(jìn)入引擎端口發(fā)送隊列的報文,再次重復(fù)步驟2。
基于上述方法,只要往引擎端口的發(fā)送隊列注入一個報文,該報文就會持續(xù)反復(fù)地進(jìn)入引擎端口,從而發(fā)送端口就可以持續(xù)發(fā)送出測試測量,并可以達(dá)到物理線速發(fā)送的性能。進(jìn)一步地,作為一個測試設(shè)備,需要能夠在一個端口同時發(fā)送出多條內(nèi)容不同的測試流量,多流量的生成方法,如圖3所示:
UCPU向引擎端口的隊列I注入報文A,報文環(huán)回到引擎端口的入口 ;
2、CPU向引擎端口的隊列2注入報文B,報文環(huán)回到引擎端口的入口;
3、引擎端口的流分類功能通過識別特定的內(nèi)容,區(qū)分出A流量報文和B流量報文,并施加相應(yīng)復(fù)制動作,將報文復(fù)制后分別送往引擎端口和發(fā)送端口的發(fā)送隊列中。一個引擎端口上的不同流量可以復(fù)制到不同的發(fā)送端口,同樣的,多個引擎端口上的多條流量也可以復(fù)制到同一個發(fā)送端口。
多流量情況下,引擎端口的流分類功能需要識別出報文屬于哪條流量,據(jù)此來指定相應(yīng)的復(fù)制端口。除了通過完整地檢查報文內(nèi)容來識別出流量外,還可以簡化地實現(xiàn)為,對每條流量添加一個外層vlan tag,通過其中唯一的vlan id來標(biāo)識流量,并在發(fā)送端口發(fā)送前剝掉該vlan tag。
[0023]如圖4所示,變化內(nèi)容流量生成模塊在固定內(nèi)容流量生成模塊的基礎(chǔ)上,配合使用引擎端口上的大容量的發(fā)送隊列,實現(xiàn)內(nèi)容變化的流量。具體為:
1、將引擎端口的發(fā)送隊列深度擴(kuò)展到最大,具體取決于交換芯片的報文緩存大小,假設(shè)隊列深度為N個報文;
2、CPU連續(xù)向引擎端口的發(fā)送隊列注入N個內(nèi)容變化的報文;
3、啟動引擎端口的發(fā)送;
4、報文環(huán)回后,利用引擎端口的流分類功能,最終復(fù)制到發(fā)送端口上。
[0024]如圖5所示的發(fā)送報文個數(shù)控制模塊的實現(xiàn)方法為利用引擎端口的入口流分類功能中的流量限速功能,實現(xiàn)發(fā)送報文數(shù)量的精確控制。具體為:
1、流量限速所使用的令牌桶工作模式設(shè)置為報文模式,即令牌數(shù)的消耗取決于報文個數(shù)而不是報文字節(jié)數(shù);
2、、關(guān)閉令牌注入功能,不再有新令牌自動產(chǎn)生,報文通過與否完全取決于存量令牌
數(shù);
3、根據(jù)需要發(fā)送的報文數(shù)量,假設(shè)為L,計算出對應(yīng)的令牌數(shù),并設(shè)置為令牌桶的當(dāng)前存量令牌數(shù),同時確保桶深度大于當(dāng)前令牌數(shù);
4、配置流量限速的帶寬內(nèi)動作為復(fù)制到引擎端口和發(fā)送端口;
5、配置流量限速的帶寬外動作為丟棄;
6、CPU注入初始流量并啟動發(fā)送;
7、報文環(huán)回到引擎端口后,開始向發(fā)送端口復(fù)制報文;
8、由于令牌桶沒有新的令牌注入,當(dāng)發(fā)送了L個數(shù)的報文后,存量令牌數(shù)耗盡,報文立即被丟棄,流量也隨之結(jié)束。
[0025]流量速率控制模塊的實現(xiàn)方法是,利用引擎端口發(fā)送隊列的流量整形功能(shaper),我們可以控制該隊列上報文發(fā)送的速率(速率單位為bps,比特每秒,或fps中貞每秒),從而也就決定了該流量在發(fā)送端口的發(fā)送速率。除此之外,我們還需要考慮最大速率和速率均勻度問題,以及如何優(yōu)化隊列資源利用。最大速率,即報文和報文之間不存在空閑的間隙,一般也叫做“線速”。這時候需要考慮,從引擎端口從入口收到一個包開始,經(jīng)過流分類施加復(fù)制動作送往發(fā)送隊列,一直等到報文真正開始發(fā)送到物理線路上為止,這整個過程所需要的時間,假設(shè)為Tl ;如果CPU只注入一個報文到引擎端口的發(fā)送隊列,那么物理線路上報文和報文之間必然會間隔Tl時間;再設(shè)一幀報文從傳輸?shù)谝粋€bit到物理線路上,一直到整一幀的最后一個bit完成傳輸,所需的時間為T2,如果Τ2>T1,那么我們只需要在引擎端口連續(xù)注入兩個報文,就能保證報文之間沒有空閑間隔;T1 一般是固定的,取決于交換芯片的轉(zhuǎn)發(fā)處理性能,而T2取決于物理線路速率以及包長,因此可以計算出需要注入多少個包才能滿足線速性能,即T1/T2+1,也可以定義一個固定的保守值M,簡化處理。關(guān)于速率均勻度,一般以太網(wǎng)交換芯片的令牌桶機(jī)制普遍存在突發(fā)(burst)特性,即在累積的令牌數(shù)耗盡之前,報文通過速率取決于實際物理線路的可用速率,這種情況一直持續(xù)到存量令牌數(shù)耗盡,然后新令牌注入的速率決定了報文的通過速率,這整個過程的報文通過速率如圖6所示,而作為測試設(shè)備,需要始終保持一個恒定均勻的發(fā)送速率,因此需要通過如下方法控制流量整形功能的令牌桶,來達(dá)到均勻的發(fā)送速率,如圖7所示,
1、在CPU流量注入前,停止新令牌注入,同時將存量令牌清空;
2、CPU注入M個報文到引擎端口的發(fā)送隊列,此時由于令牌桶無可用令牌,隊列中的報文將積壓在隊列內(nèi)等待可用令牌;
3、啟動令牌注入功能,注入速率是恒定均勻的,隊列中的報文等待到可用令牌后開始發(fā)送,發(fā)送的速率完全依賴于令牌的注入速率,因此發(fā)送速率也是恒定均勻的。
進(jìn)一步的,考慮到多條并發(fā)流量的情況下,每條流量都需要獨立占用引擎端口的一個發(fā)送隊列來控制發(fā)送速率,因此有限的隊列資源成為了并發(fā)流量數(shù)的瓶頸,假設(shè)測試環(huán)境只對所有流量的速率總和有要求,且每條流量之間存在一定的速率比例,例如有三條流量A,B, C,他們之間的速率 比為1:1:2,那么對發(fā)送流量速率控制模塊的優(yōu)化方法如圖8所示:
1、CPU往引擎端口的發(fā)送隊列注入初始流量,按照速率比例注入對應(yīng)的報文序列,序列為 A、B、C、C ;
2、引擎端口逐個發(fā)送并環(huán)回報文,報文的序列始終保持不變;
3、經(jīng)過流分類復(fù)制到引擎端口和發(fā)送端口的報文序列也始終保持不變;
4、發(fā)送端口發(fā)送出去報文序列也始終保持不變。
由于報文序列始終不變,因此不同流量之間的速率比例也保持不變,從而使用單個隊列生成了不同速率的多條流量。
[0026]如圖9所示的報文捕獲模塊,利用以太網(wǎng)芯片上的一個物理端口,配合流分類功能和CPU實現(xiàn)指定內(nèi)容和指定數(shù)量的報文的捕獲和顯示。該物理端口外部可見,并連接到了被測試設(shè)備,用于接收從被測試設(shè)備發(fā)送出來的報文,定義為接收端口。具體實現(xiàn)如下:
1、接收端口接收到從被測試設(shè)備發(fā)送出來的報文流量;
2、接收端口的流分類功能識別出需要捕獲的特定內(nèi)容的報文,對不符合匹配條件的報文不做捕獲處理;
3、流分類的流量限速功能對符合匹配條件的報文進(jìn)行數(shù)量或速率的控制,對于超出限速的報文不做進(jìn)一步處理。
4、對于符合限速的報文,利用流分類功能將報文轉(zhuǎn)發(fā)到CPU端口的發(fā)送隊列,并攜帶時間戳信息;
5、CPU端口發(fā)送隊列中的報文通過特定總線傳送到CPU;
6、CPU上的軟件模塊接收到報文后,解析報文內(nèi)容和時間戳信息,并通過交互界面顯示出來。
[0027]報文流量計數(shù)模塊具體分為發(fā)送流量的計數(shù)和接收流量的計數(shù)。如圖10所示,發(fā)送流量的計數(shù),在引擎端口上針對每一條流,利用流分類功能,加入一個計數(shù)動作。特別的,對于需要控制發(fā)送報文個數(shù)的流量,只對限速帶寬內(nèi)的報文進(jìn)行計數(shù)。與發(fā)送流量的計數(shù)類似的,接收流量的計數(shù)如圖11所示,在接收口上通過流分類的計數(shù)動作來統(tǒng)計接收流量,可以對接收端口收到的所有流量進(jìn)行計數(shù),也可以針對特定內(nèi)容的流量。
[0028]報文時延測量模塊用于測量一個報文在被測試設(shè)備內(nèi)部停留的時間,即發(fā)送到被測試設(shè)備和從被測試設(shè)備接收到之間的時間差,一般稱之為轉(zhuǎn)發(fā)時延。如圖12所示,需要利用以太網(wǎng)芯片上一個處于環(huán)回狀態(tài)的端口(定義為時延測量端口),獲取發(fā)送時間戳,具體如下:
UCPU向引擎端口注入一個特定內(nèi)容的報文,用于時延測量;
2、報文從引擎端口發(fā)送出去并環(huán)回再次進(jìn)入引擎端口;
3、引擎端口的流分類功能識別出該特定的測量報文,將其復(fù)制到時延測量端口和發(fā)送端口的發(fā)送隊列。由于沒有復(fù)制到引擎端口,因此該報文不會再次進(jìn)入引擎端口,即只會被發(fā)送端口發(fā)送一次;
4、報文分別從發(fā)送端口和時延測量端口,同時發(fā)送出去,發(fā)送端口的報文送往被測試設(shè)備,經(jīng)其轉(zhuǎn)發(fā)處理后,將回到測試設(shè)備的某個接收端口,時延測量端口設(shè)置為環(huán)回狀態(tài),測量報文立即重新進(jìn)入該端口 ;
5、時延測量端口的流分類功能識別出該測量報文,將其送往CPU端口的發(fā)送隊列,并攜帶時間戳Tl;
6、CPU端口將攜帶著時間戳Tl的報文送到CPU,運行在CPU上的軟件模塊接收到報文,并解析出報文內(nèi)容和時間戳;
7、從被測試設(shè)備發(fā)出的特定測量報文抵達(dá)了測試設(shè)備的接收端口,流分類功能識別出該特定報文,將其送往CPU端口的發(fā)送隊列,攜帶時間戳T2 ;
8、CPU端口將攜帶著時間戳T2的報文送到CPU,運行在CPU上的軟件模塊接收到報文,并解析出報文內(nèi)容和時間戳;
9、CPU上的軟件模塊計算出時延為T2- Tl。
進(jìn)一步的,考慮誤差問題,在存在多條并發(fā)測試流量的情況,時延測量報文可能會在發(fā)送端口的發(fā)送隊列中積壓一段時間,等待該隊列中排在前面的其他報文完成發(fā)送,而由于時延測量端口總是處于空閑狀態(tài),這就會導(dǎo)致時延測量端口取到的時間戳Tl和該測量報文在發(fā)送端口實際發(fā)送的時間之間存在誤差。針對上述問題,如果引擎端口在向發(fā)送端口復(fù)制流量的同時也向時延測量端口復(fù)制一份,也就是說時延測量端口與發(fā)送端口始終同時發(fā)送相同的流量,且端口速率相同,那么上述問題將得到避免。
另外,考慮到端口資源的利用效率,可以在設(shè)備范圍內(nèi)共享時延測量端口。一般時延的范圍是毫秒級別的,也就是說一次時延測量的周期并不長,因此可以串行地在各個發(fā)送端口間依次進(jìn)行測量。如果全局有兩個時延測量端口,那么就可以同時進(jìn)行兩組時延測量,即時延測量端口的數(shù)量決定設(shè)備時延測試的性能,即性能和成本之間的平衡。
通常在測試某一條流量時,會關(guān)注其所需要的轉(zhuǎn)發(fā)時延。該流量的任意一個報文的內(nèi)容可能是完全相同的,而時延測試必然要求能夠識別出特定的某個報文,才能確定收發(fā)時間??紤]到測試報文一般只關(guān)心報文頭的內(nèi)容(因為通信設(shè)備一般只關(guān)心報文頭),而對凈荷(payload)本身不做要求,因此針對時延測試的報文,在報文頭后引入一個特定的數(shù)據(jù)段(delay tag),其內(nèi)容包括標(biāo)識符和序列號,如圖13所示,標(biāo)識符固定為某個數(shù)值,用于區(qū)分普通測量報文和時延測量報文,序列號可以唯一標(biāo)識每個時延測量的報文,由于delay tag屬于非標(biāo)準(zhǔn)協(xié)議字段,因此必須使用流分類功能中的自定義偏移量的匹配模式,匹配內(nèi)容為delay tag內(nèi)的標(biāo)識符,而后由CPU上的軟件模塊來解析出序列號,并計算相同序列號報文的T2和Tl的差值。
[0029]當(dāng)前的測試設(shè)備開始逐漸支持越來越多的協(xié)議交互的功能,例如ARP,IGMP, PPPoEdiscovery,這將大大方便針對協(xié)議功能的測試?;谝蕴W(wǎng)交換機(jī)的架構(gòu),實現(xiàn)協(xié)議交互模塊非常方便。如圖14所示,具體方法為:
UCPU上的軟件協(xié)議模塊生成協(xié)議報文,并直接插入到發(fā)送端口的發(fā)送隊列,并發(fā)送到被測試設(shè)備;
2、接收端口收到被測試設(shè)備發(fā)出的協(xié)議報文后,通過流分類功能識別出特定的協(xié)議報文,轉(zhuǎn)發(fā)到CPU端口。
步驟I和2先后順序可交換,且可重復(fù)循環(huán),取決于具體協(xié)議的交互序列。
[0030]實施例一,如圖15所示,被測試設(shè)備是一臺二層以太網(wǎng)交換機(jī),其轉(zhuǎn)發(fā)方式基于目的MAC地址的查找。當(dāng)查找失敗時,報文廣播到所有端口(接收端口除外),而當(dāng)查找成功時,報文只單播到對應(yīng)的出口。對于接收到的每個報文的源MAC,交換機(jī)會記錄其接收端口的信息。測試設(shè)備提供三個外部可見的端口為A、B、C,即前文所述的發(fā)送端口和接收端口,其中A、B分別擁有一個內(nèi)部的引擎端口 X、Y,為其提供流量生成功能;被測試設(shè)備也提供三個外部可見端口為D、E、F,具備二層轉(zhuǎn)發(fā)功能;AB⑶EF均工作在100 mbps (兆比特每秒)的速率。
通過下面幾個步驟,我們來驗證該二層交換機(jī)的轉(zhuǎn)發(fā)行為。
步驟1:測試設(shè)備在端口 A上構(gòu)造一條流量,目的MAC為FF:FF:FF:FF:FF:FF,源MAC為00:00:00:00:00:01,幀長度為64字節(jié),數(shù)量為I個。這條流量將用于交換機(jī)學(xué)習(xí)MAC地址,使其記錄MAC 00:00:00:00:00:01對應(yīng)的端口為D。
利用“發(fā)送報文個數(shù)控制模塊”控制發(fā)送數(shù)量,利用“流量計數(shù)模塊”實現(xiàn)發(fā)送流量的計數(shù),具體操作為:
I)引擎端口 X的入口流量限速令牌桶設(shè)置為報文模式;2)關(guān)閉新令牌注入;3)假設(shè)一個令牌對應(yīng)一個報文,設(shè)置當(dāng)前存量令牌數(shù)為1,設(shè)置最大桶深為I個令牌;4)設(shè)置流量限速的帶寬內(nèi)動作為復(fù)制到端口 A和端口 X,并進(jìn)行計數(shù)動作;5)設(shè)置流量限速的帶寬外動作為丟棄
利用“固定內(nèi)容流量生成模塊”生成測試流量,具體操作為
I)設(shè)置引擎端口 X為環(huán)回狀態(tài);2) CPU注入報文到引擎端口 X的發(fā)送隊列1,報文的目的嫩(:為??:??:??:??:??:??,源嫩(:為00:00:00:00:00:01,長度為64字節(jié),注入I個。報文經(jīng)過環(huán)回后,經(jīng)過流量限速功能的令牌桶,第I個報文符合帶寬內(nèi)的條件,被復(fù)制到端口 A和端口 X的發(fā)送隊列;第2個報文超過帶寬限制,被丟棄。復(fù)制到端口 A的報文將送往被測試設(shè)備的端口 D ;運行在CPU上的軟件模塊讀取引擎端口 X的流分類的發(fā)送計數(shù),顯示在用戶交互界面上。步驟2:被測試設(shè)備在端口 D接收到報文,由于其目的MAC為廣播地址,因此廣播到端口 E,F(xiàn)。同時,被測試設(shè)備記錄下MAC 00:00:00:00:00:01對應(yīng)的端口為D。
步驟3:測試設(shè)備接收端口 B、C接收到來自對端被測試設(shè)備發(fā)出的報文,同時利用“報文捕獲模塊”捕獲報文內(nèi)容,利用“流量計數(shù)模塊”獲得接收流量計數(shù),具體操作為:
I)端口 B,C的流分類功能將所有接收到的報文轉(zhuǎn)發(fā)到CPU端口,并攜帶時間戳,同時進(jìn)行計數(shù)動作;2) CPU端口將報文傳送到CPU ;3)運行在CPU上的軟件模塊接收到報文后,解析出報文內(nèi)容和時間戳,然后在用戶交互界面上顯示出來,并讀取端口 B、C上的接收計數(shù),也一并在用戶交互界面上顯示出來。
步驟4:測試設(shè)備在端口 B上構(gòu)造一條持續(xù)流量,目的MAC為00:00:00:00:00:01,源MAC 為 00:00:00:00:00:02,長度為 64 字節(jié),速率為 IOOmbps0
利用“固定內(nèi)容流量生成模塊”和“發(fā)送流量速率控制模塊”生成測試流量,利用“流量計數(shù)模塊”實現(xiàn)發(fā)送流量計數(shù),具體操作為:
1)設(shè)置引擎端口 Y為環(huán)回狀態(tài);2)引擎端口 Y的流分類動作設(shè)置為將報文復(fù)制到端口 B和端口 Y,同時進(jìn)行計數(shù)動作;3)設(shè)置引擎端口 Y的隊列I的流量整形功能的令牌桶,關(guān)閉新令牌注入,清空當(dāng)前存量令牌;4) CPU注入報文到引擎端口 Y的發(fā)送隊列1,報文的目的 MAC 為 00:00:00:00:00:01,源 MAC 為 00:00:00:00:00:02,長度為 64 字節(jié)。連續(xù)注入10個以保證線速性能,由于令牌桶無可用令牌,報文積壓在發(fā)送隊列中;5)設(shè)置流量整形令牌桶的令牌注入數(shù)量,假設(shè)一個令牌對應(yīng)I個字節(jié),注入的周期為125微秒,即每秒鐘注入8000次,那么IOOmbps的速率需要每次注入:100000000/8/8000=1562.5個令牌;6)設(shè)置令牌桶深度為1563,大于每次刷新的令牌數(shù)即可;7)啟動令牌注入功能。
令牌注入啟動后,端口 B立即開始持續(xù)地以IOOmbps的速率向外發(fā)送報文,運行在CPU上的軟件模塊讀取端口 Y的流分類發(fā)送計數(shù),并在用戶交互界面顯示出來。
步驟5:被測試設(shè)備在端口 E上接收到報文,根據(jù)目的MAC 00:00:00:00:00:01查找出對應(yīng)端口為D,將其轉(zhuǎn)發(fā)到D端口。
步驟6:測試設(shè)備在端口 A上接收到來自被測試設(shè)備端口 D發(fā)出的報文,進(jìn)行報文接收
計數(shù)
利用“流量計數(shù)模塊”,端口 A的流分類功能將接收到的報文進(jìn)行計數(shù),運行在CPU上的軟件模塊讀取端口 A的接收計數(shù),并在用戶交互界面顯示出來。
經(jīng)過上述幾個步驟,利用測試設(shè)備提供的功能,我們可以驗證被測試設(shè)備是否具備二層轉(zhuǎn)發(fā)的能力,以及轉(zhuǎn)發(fā)的性能是否達(dá)到lOOmbps。
[0031]實施例二,如圖16所示,被測試設(shè)備為一臺三層路由器,提供了四個端口:E、F、G、H,速率均為IG bps。設(shè)定路由規(guī)則配置為:
F 端口為通往 192.168.1.1 ~192.168.1.254 網(wǎng)段的接口,
G 端口為通往 192.168.2.1 ~192.168.2.254 網(wǎng)段的接口,
H 端口為通往 192.168.3.1 ~192.168.3.254 網(wǎng)段的接口,
測試設(shè)備提供四個外部端口:A、B、C、D,速率均為IG bps,內(nèi)部有一個引擎端口 X和時延測量端口 Y,速率均為IG bps。
通過下述測試流量,我們來驗證該路由器是否具備路由功能,以及轉(zhuǎn)發(fā)性能。
從A端口發(fā)送三條測試流量,分別為: 1)目的IP為192.168.1.100,幀長為1500字節(jié),速率為1000 pps,持續(xù)流量;
2)目的IP為192.168.2.100,幀長為1500字節(jié),速率為2000 pps,持續(xù)流量;
3)目的IP為192.168.3.1?192.168.3.255遞增循環(huán)變化,幀長為1500字節(jié),速率為500mbps,持續(xù)流量。
同時,還將對流量192.168.1.100進(jìn)行時延測量。
步驟1:利用“固定內(nèi)容流量生成模塊”,“變化內(nèi)容流量生成模塊”和“發(fā)送流量速率控制模塊”,生成三條持續(xù)的測試流量,具體步驟為:
I)設(shè)置端口 X為環(huán)回;2)設(shè)置端口 X的流分類,添加三條流量識別規(guī)則,基于報文的最外層vlan tag中的vlan id,分別為:vlan id為I的報文識別為測試流量192.168.1.100,復(fù)制到端口 A,X的隊列1,并計數(shù);vlan id為2的報文識別為測試流量192.168.2.100,復(fù)制到端口 A,X的隊列1,并計數(shù);vlan id為3的報文識別為測試流量192.168.3.x,復(fù)制到端口 A,X的隊列2,并計數(shù);3)設(shè)置端口 A,在出口方向剝除所有報文的最外層vlan tag,該層vlan tag只在測試設(shè)備內(nèi)部用于標(biāo)識流量;4)設(shè)置端口 X發(fā)送隊列I上的流量整形功能的令牌桶,工作模式為報文模式,關(guān)閉令牌注入功能,清空當(dāng)前存量令牌;5) CPU注入以下報文序列到端口 X的發(fā)送隊列I:目的IP為192.168.1.100,攜帶vlan id為I的vlantag,幀長為1500字節(jié),報文注入數(shù)量2個;目的IP為192.168.2.100,攜帶vlan id為2的vlan tag,幀長為1500字節(jié),報文注入數(shù)量4個;由于沒有可用令牌,以上報文將積壓在隊列I中;6)設(shè)置端口 X發(fā)送隊列I上的流量整形功能,假設(shè)I個令牌對應(yīng)一個報文,令牌注入的平率是每秒8000次,而隊列I上的總流量為3000pps,因此每次令牌注入數(shù)量為3/8個令牌,令牌桶的深度為1,即大于每次令牌注入數(shù)量即可,啟動令牌注入功能,隊列I上的報文開始發(fā)送,流量I和流量2按照1:2的比例,最終由發(fā)送端口 A發(fā)送出去,運行在CPU上的軟件模塊讀取端口 X的流量I和流量2的流分類發(fā)送計數(shù),并在用戶交互界面顯示出來;7)設(shè)置端口 X發(fā)送隊列2上的流量整形功能的令牌桶,工作模式為字節(jié)模式,即消耗的令牌數(shù)取決于報文字節(jié)數(shù),關(guān)閉令牌注入功能,清空當(dāng)前存量令牌;8)設(shè)置發(fā)送端口 X的發(fā)送隊列2的深度,使之能夠容納255個報文;9) CPU注入以下報文序列到端口 X的發(fā)送隊列2:目的IP為192.168.3.1?192.168.3.255遞增變化,攜帶vlan id為3的vlan tag,幀長1500字節(jié),數(shù)量255個,由于沒有可用存量令牌,以上報文將積壓在隊列2中;10)設(shè)置端口X發(fā)送隊列2上的流量整形功能,假設(shè)I個令牌對應(yīng)一個字節(jié),令牌注入的平率是每秒8000次,而隊列2上的總流量為500mbps,因此每次令牌注入數(shù)量為,500000000/8/8000=7812.5個令牌,設(shè)置令牌桶的深度為7813,即大于每次令牌注入數(shù)量即可,啟動令牌注入功能,隊列2上的報文開始發(fā)送,流量3以500mbps到速率由端口 A發(fā)送出去,運行在CPU上的軟件模塊讀取端口 X的流量3的流分類發(fā)送計數(shù),并在用戶交互界面顯示出來。
步驟2:被測試設(shè)備依據(jù)路由規(guī)則,轉(zhuǎn)發(fā)接收到的三條流量,流量192.168.1.100轉(zhuǎn)發(fā)到端口 F,流量192.168.2.100轉(zhuǎn)發(fā)到端口 G,流量192.168.3.x轉(zhuǎn)發(fā)到端口 H。
步驟3:測試設(shè)備在端口 B,C,D上接收到來自對端被測試設(shè)備發(fā)出的報文流量,利用“流量接收的計數(shù)模塊”進(jìn)行接收流量計數(shù),具體操作為:
I)設(shè)置端口 B的流分類,匹配目的IP為192.168.1.100的報文,進(jìn)行計數(shù);2)設(shè)置端口 C的流分類,匹配目的IP為192.168.2.100的報文,進(jìn)行計數(shù);3)設(shè)置端口 D的流分類,匹配目的IP為192.168.3.X的報文,進(jìn)行計數(shù);4)運行在CPU上的軟件模塊讀取端口 B、C、D的流分類計數(shù),并在用戶交互界面顯示出來。
步驟4:利用“時延測量模塊”,測量流量192.168.1.100的時延,具體操作方法為:
O設(shè)置將端口 A發(fā)送方向的所有流量鏡像到端口 Y,這樣兩個端口在發(fā)送報文的時間上將達(dá)到完全的步調(diào)一致;2)設(shè)置端口 X的流分類,匹配vlan id為4094的報文,只復(fù)制到端口 A,并不復(fù)制到端口 X。這里的vlan id 4094用于在測試設(shè)備內(nèi)部標(biāo)識時延測量報文;3)設(shè)置端口 Y為環(huán)回;4)設(shè)置端口 Y的流分類,匹配vlan id為4094的報文,轉(zhuǎn)發(fā)到CPU端口,并攜帶時間戳,丟棄所有其他接收到的報文;5)設(shè)置端口 B的流分類,匹配偏移量為第43?44字節(jié)為DDDD的報文,轉(zhuǎn)發(fā)到CPU端口,并攜帶時間戳,在本例中,設(shè)定報文為TCP/UDP結(jié)構(gòu),第43個字節(jié)開始,是UDP的凈荷數(shù)據(jù),我們在此位置設(shè)置一個4字節(jié)的自定義數(shù)據(jù)段,即前文中的delay tag,標(biāo)識符為兩個字節(jié),內(nèi)容為DDDD,序列號為兩個字節(jié);6)CPU生成以下報文序列,注入到端口 X的隊列I中,目的IP為192.168.1.100,攜帶vlan id為4094的vlan tag, UDP靜荷的前兩個字節(jié)為DDDD,隨后兩個字節(jié)為序列號,幀長1500字節(jié),報文注入數(shù)量10個,前文所述的序列號分別為I?10遞增;7)該序列報文從端口 X發(fā)送并環(huán)回到入口,利用流分類復(fù)制到端口 A和端口 Y,報文在端口 Y環(huán)回到入口,利用流分轉(zhuǎn)發(fā)到CPU端口,并攜帶時間戳,報文在端口 A發(fā)送出去后,經(jīng)過被測試設(shè)備路由轉(zhuǎn)發(fā)到F端口,送到了測試設(shè)備的B端口,利用流分類功能轉(zhuǎn)發(fā)到CPU端口,并攜帶時間戳;8)CPU上的軟件模塊依次收到20個報文,包含10組序列號,每個序列號對應(yīng)有兩個報文,攜帶不同的時間戳,分別計算這10組時間戳的差值,得到10個轉(zhuǎn)發(fā)時延的數(shù)據(jù),再進(jìn)一步計算平均值,得到流量192.168.1.100的轉(zhuǎn)發(fā)時延。
通過以上步驟,利用測試設(shè)備提供的功能,我們可以驗證該路由設(shè)備的路由轉(zhuǎn)發(fā)行為,以及轉(zhuǎn)發(fā)的性能和時延。
[0032]實施例三,如圖17所示,被測試設(shè)備為以太網(wǎng)三層交換機(jī),提供了外部端口 B,該端口上綁定了三層接口 192.168.1.1,因此會響應(yīng)ARP request報文(查詢IP為192.168.1.1),測試設(shè)備提供了外部端口 A。
通過以下步驟,我們來驗證該三層交換機(jī)的ARP協(xié)議交互功能。
步驟1:利用“協(xié)議交互模塊”生成ARP request報文,具體操作為:CPU上的軟件模塊生成查詢IP地址為192.168.1.1的ARP request報文,并插入到端口 A的發(fā)送隊列中,隨即報文發(fā)送到了被測試設(shè)備的端口 B ;
步驟2:被測試設(shè)備上的軟件模塊處理ARP request報文后,生成ARP reply報文,并從端口 B發(fā)送出來;
步驟3:利用“協(xié)議交互模塊”和“報文捕獲模塊”,捕獲并分析接收到的協(xié)議響應(yīng)報文,具體操作為:
I)設(shè)置端口 A的流分類,將以太網(wǎng)類型字段為0806的報文轉(zhuǎn)發(fā)到CPU端口 ;2)CPU上的軟件模塊解析接收到的ARP request報文,分析是否符合協(xié)議交互標(biāo)準(zhǔn),并在用戶交互界面上顯示報文內(nèi)容和分析結(jié)果。
通過以上步驟,利用測試設(shè)備提供的功能,我們可以驗證被測試設(shè)備的協(xié)議交互行為。
【權(quán)利要求】
1.一種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法,該方法包括:固定內(nèi)容流量生成模塊、變化內(nèi)容流量生成模塊、發(fā)送報文個數(shù)控制模塊、發(fā)送流量速率控制模塊、報文捕獲模塊、流量計數(shù)模塊、報文時延測量模塊及協(xié)議交互模塊,其中,固定內(nèi)容流量生成模塊實現(xiàn)固定內(nèi)容流量的生成方法,變化內(nèi)容流量生成模塊實現(xiàn)變化內(nèi)容流量的生成方法,發(fā)送報文個數(shù)控制模塊實現(xiàn)發(fā)送流量報文個數(shù)的控制方法,發(fā)送流量速率控制模塊實現(xiàn)流量發(fā)送速率的控制方法,報文捕獲模塊實現(xiàn)接收流量的捕獲方法、流量計數(shù)模塊實現(xiàn)收發(fā)流量的計數(shù)方法、報文時延測量模塊實現(xiàn)轉(zhuǎn)發(fā)時延的測量方法,協(xié)議交互模塊實現(xiàn)各類協(xié)議的測試方法,固定內(nèi)容流量生成模塊和變化內(nèi)容流量生成模塊,統(tǒng)一為流量生成模塊,所述模塊可單獨或組合使用。
2.如權(quán)利要求1所述的一種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法,其特征在于,所述固定內(nèi)容流量生成模塊具體通過以太網(wǎng)交換芯片上的兩個物理端口 A和B,配合CPU實現(xiàn),其中端口 A為外部不可見端口且收發(fā)處于環(huán)回狀態(tài),定義為引擎端口,端口 B外部可見,并連接到了被測試設(shè)備,定義為發(fā)送端口 ;首先由CPU構(gòu)造出用戶指定內(nèi)容的以太網(wǎng)測試報文,插入到引擎端口 A的發(fā)送隊列,并發(fā)送到物理線路上,由于環(huán)回狀態(tài),該報文進(jìn)入引擎端口 A的接收入口,利用流分類功能,將其復(fù)制到引擎端口 A和發(fā)送端口 B的發(fā)送隊列;進(jìn)入發(fā)送端口 B的發(fā)送隊列的報文,隨之發(fā)送到物理線路上,該報文作為測試設(shè)備生成的測試流量報文送往被測試設(shè)備。進(jìn)入引擎端口 A發(fā)送隊列的報文,再次重復(fù)上述過程,從而發(fā)送端口 B能夠源源不斷向被測試設(shè)備發(fā)送出內(nèi)容固定的測試流量報文;使用引擎端口上的多個發(fā)送隊列或多個引擎端口,可以構(gòu)造出多條不同內(nèi)容的并發(fā)的測試流量。
3.如權(quán)利要求1所述的一種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法,其特征在于,所述變化內(nèi)容流量生成模塊具體為:在固定內(nèi)容流量生成模塊的基礎(chǔ)上,配合使用引擎端口上的大容量的發(fā)送隊列,實現(xiàn)內(nèi)容變化的流量;首先將引擎端口的發(fā)送隊列深度設(shè)置為最大,取決于交換芯片的報文緩存大小,定義最大隊列深度為N,然后關(guān)閉引擎端口的發(fā)送功能,即發(fā)送隊列中的報文將積壓等待發(fā)送;然后CPU連續(xù)向引擎端口的發(fā)送隊列注入N個內(nèi)容變化的 報文;最后打開引擎端口的發(fā)送功能。
4.如權(quán)利要求1所述的一種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法,其特征在于,所述發(fā)送報文個數(shù)控制模塊具體為:在流量生成模塊的基礎(chǔ)上,利用引擎端口的入口流分類功能中的流量限速功能,實現(xiàn)發(fā)送報文數(shù)量的精確控制;首先設(shè)置流量限速功能的令牌桶的工作模式為報文模式,即令牌數(shù)的消耗取決于報文個數(shù)而不是報文字節(jié)數(shù);其次關(guān)閉令牌注入功能,不再有新令牌產(chǎn)生,每個報文消耗的令牌都是存量令牌;然后根據(jù)用戶希望發(fā)送報文的數(shù)量,計算出所需要的令牌數(shù),并設(shè)置為令牌桶的當(dāng)前存量令牌數(shù),同時確保令牌桶深度大于該令牌數(shù);最后配置流量限速的帶寬內(nèi)動作為復(fù)制到引擎端口和發(fā)送端口,帶寬外動作為丟棄。
5.如權(quán)利要求1所述的一種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法,其特征在于,所述發(fā)送流量速率控制模塊具體為:在流量生成模塊的基礎(chǔ)上,配合引擎端口發(fā)送隊列上的流量整形功能,實現(xiàn)流量發(fā)送速率的精確控制;首先在CPU向引擎端口發(fā)送隊列注入報文前,將流量整形功能的令牌桶的令牌注入關(guān)閉,并清空存量令牌,此時令牌桶中無可用令牌,發(fā)送隊列中的報文將積壓在隊列內(nèi)等待可用令牌;然后由CPU注入報文到引擎端口的發(fā)送隊列,所有報文處于等待發(fā)送狀態(tài);最后啟動令牌注入功能,注入速率為用戶希望的測試流量的發(fā)送速率,隊列中的報文等待到可用令牌后開始發(fā)送,發(fā)送速率與令牌的注入速率一致。
6.如權(quán)利要求1所述的一種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法,其特征在于,所述報文捕獲模塊具體利用以太網(wǎng)芯片上的一個物理端口,配合流分類功能和CPU實現(xiàn)指定內(nèi)容和指定數(shù)量的報文的捕獲和顯示,該物理端口外部可見,并連接到了被測試設(shè)備,用于接收從被測試設(shè)備發(fā)送出來的報文,定義為接收端口 ;首先接收端口接收到被測試設(shè)備發(fā)送出來的報文,利用流分類功能識別出需要捕獲的指定內(nèi)容的報文,對于不符合內(nèi)容要求的報文將不做捕獲處理;對于符合指定內(nèi)容要求的報文,流分類的流量限速功能將進(jìn)行速率或數(shù)量的控制,對于超過限速的報文將不做進(jìn)一步處理;對于通過限速檢查的報文,利用流分類功能將該報文轉(zhuǎn)發(fā)到CPU端口的發(fā)送隊列,同時攜帶時間戳信息,然后CPU端口發(fā)送隊列中的報文通過總線傳送到CPU,運行在CPU上的軟件模塊接收到報文后,解析報文內(nèi)容和時間戳信息,并呈現(xiàn)在用戶交互界面上。
7.如權(quán)利要求1所述的一種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法,其特征在于,所述流量計數(shù)模塊具體分為針對發(fā)送流量的計數(shù)和針對接收流量的計數(shù),發(fā)送流量的計數(shù)利用引擎端口的流分類功能,對每一條流量,施加計數(shù)動作,統(tǒng)計發(fā)送報文的數(shù)量;接收流量的計數(shù)利用接收端口上的流分類功能,對接收到的所有報文施加計數(shù)動作,或針對特定內(nèi)容的報文施加計數(shù)動作。
8.如權(quán)利要求1所述的一種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法,其特征在于,所述報文時延測量模塊具體為:利用交換芯片上的一個處于環(huán)回狀態(tài)的物理端口,定義為時延測量端口,得到時延測量所需要的發(fā)送時間戳,再配合報文捕獲模塊,得到時延測量所需要的接收時間戳,從而計算出被測試設(shè)備的轉(zhuǎn)發(fā)時延;首先CPU向引擎端口注入一個特定內(nèi)容的報文,用于時延測量,報文從引擎端口發(fā)送出去并環(huán)回進(jìn)入引擎端口,利用引擎端口的流分類功能識別出該特定測量報文,將其復(fù)制到時延測量端口和發(fā)送端口的發(fā)送隊列,報文分別從發(fā)送端口和時延測量端口同時發(fā)送出去;時延測量端口設(shè)置為環(huán)回狀態(tài),測量報文隨即重新進(jìn)入該端口,利用流分類功能識別出該測量報文,將其送往CPU端口的發(fā)送隊列,并攜帶時間戳Tl,最終CPU上的軟件模塊接收到該報文和時間戳;發(fā)送端口的報文送往被測試設(shè)備,·經(jīng)其轉(zhuǎn)發(fā)處理后,送回到測試設(shè)備的接收端口,利用接收端口的流分類功能識別出該測量報文,將其送往CPU端口的發(fā)送隊列,攜帶時間戳T2,最終CPU上的軟件模塊接收到該報文和時間戳,CPU上的軟件模塊計算出時延為T2 - Tl。
9.如權(quán)利要求1所述的一種基于以太網(wǎng)交換芯片的以太網(wǎng)流量生成和分析的方法,其特征在于,所述協(xié)議交互模塊具體為:CPU上的軟件協(xié)議模塊生成協(xié)議報文,并直接插入到發(fā)送端口的發(fā)送隊列,發(fā)送到被測試設(shè)備。測試設(shè)備的接收端口接收到被測試設(shè)備發(fā)出的響應(yīng)協(xié)議報文后,通過流分類功能識別出特定的協(xié)議報文,轉(zhuǎn)發(fā)到CPU端口,最終CPU上的軟件協(xié)議模塊接收到該報文;該交互序列也可以是先接收報文,再發(fā)送報文,并且可以反復(fù)進(jìn)行,取決于具體協(xié)議的交互序列。
【文檔編號】H04L12/801GK103716248SQ201310227029
【公開日】2014年4月9日 申請日期:2013年6月7日 優(yōu)先權(quán)日:2013年6月7日
【發(fā)明者】潘晶 申請人:潘晶