

Spirent TestCenter 中文教程入門使用 - 如何創建流量
→Spirent TestCenter以太網測試儀
STC創建流量方式有兩種,一種是Bound stream,另一種是Raw stream.
Bound stream流量創建方式是基于對象建流方式,流量的源和目的節點基于的對象是不同儀表端口中的提前創建好的Endpoint, Endpoint可以是普通的Device,路由協議發布的Route,或者DHCP等接入協議分配到的地址等等,報文頭的源和目的MAC/VLAN/IP等屬性值都是繼承了Endpoint的地址,Bound Stream最大優勢是結合各種網絡協議,批量的為多達幾百個測試端口創建各種拓撲的復雜流量。
Raw stream是在每一個port的Traffic generator下面添加的,不依賴于其他任何協議,也不需要提前創建device, 一般用于純流量測試, 報文頭的源和目的MAC/VLAN/IP等屬性值也可以靈活配置,通過在報文頭部的某一個字段進行遞增和遞減等操作,也能夠構造復雜的流量模型。
通過前期的文章,我們知道了如何通過向導創建BGP device和發布BGP Route,那么這一期將通過向導方式來創建基于BGP Route的Bound Stream流量,另外后面還會講解Raw Stream流量的創建。
Bound Stream流量
下面是Bound Stream流量創建用到的測試網絡拓撲圖(圖1)以及STC預先做好的配置(圖2), STC使用4個儀表Port(port1->port4),每個Port分別創建一個BGP device ( device1->device4 ), 分別與DUT建立BGP鄰居,并分別發布各兩條BGP路由(1.0.0.0->4.0.1.0).

圖1 測試網絡拓撲圖

圖2 BGP Device和Route預配置
1.啟動Bound Stream流量創建向導

圖3
2. 選擇Ports

圖4
3.選擇源和目的Endpoints
源選擇port1和port2 BGP route,目的選擇port3和port4 BGP route, 然后左邊一列依次選擇Pair, Bidirectional, one-to-one, stream only generation選項,然后點擊Add, 那么下面會顯示兩行雙向流,后面會用比較多篇幅講解這個界面中選項的作用。

圖5
Endpoints界面各選項介紹:
3.1 端口拓撲(distribution) 選項
圖6 端口拓撲
參考了RFC2889標準,有三種拓撲(Fully meshed, Backbone, Pair)可以供選擇,默認拓撲是Pair,Pair拓撲比較靈活,除了可以選擇一個源端口和一個目的端口,達到端口一對一效果流量之外,也可以選擇多個源端口或者多個目的端口,達到端口一對多或者多對一效果。根據測試目的選擇相應拓撲,例如整機轉發壓力測試可以選擇Fully meshed拓撲。
3.2 Protocol和Encapsulation列表
過濾需要顯示在Source和Destination表中的Endpoints.

圖7
3.3 Orientation選項
Unidirectional是A->B單向, Bidirectional是A<->B雙向

圖8
3.4 Endpoints Mapping選項
圖9
每個端口一般創建有多個Endpoints, 例如Port1包含Device D1和D2, Port2包含DeviceD3和D4, 那么選擇one-to-one情況下,那么流量是D1<->D3和D2<->D4,單向兩條Flow(雙向共四條Flow), 如果選擇many-to-many那么流量是D1<->D3,D1<->D4, D2<->D3, D2<->D4,單向四條Flow(雙向八條Flow),Flow的概念下面會詳細講解。
3.5 Stream only Generation選項

圖10
數據統計的粗細粒度來決定是否勾選這個選項。
我們首先要理解一下Flow和Stream的概念,一條Flow表示構建這條流量的OSI L2-L7報文頭部的字段是唯一的,類似唯一的IP五元組,能夠區分不同的流量,DUT可以根據不同流量做出轉發決策。STC可以在創建Bound Stream流量中選擇不同的源和目的,或者在創建Raw Stream流量中對報文頭部中的字段進行遞增遞減等操作,從而構造出很多不同的流量,也就是很多不同的Flow.
Stream是用在統計分析中的,一條Stream包含一個唯一的Stream ID,四個字節的Stream ID包含在20字節的思博倫簽名字段當中,STC收到數據包首先會檢查是否有簽名字段,如果有,那么就會接著檢查Stream ID的值,STC會基于相同Stream ID的數據包分別進行獨立的統計分析。
Stream only Generation選項作用是Stream ID如何映射到Flow,例如創建了兩條Flow的流量,那么如果勾選上,那么兩條Flow會各有一個Stream ID, 也就是兩條Stream,每條Flow都可以獨立統計,如果不勾選,那么只生成一條Stream,兩條Flow會共用一個Stream ID, 合并進行統計。一般的測試場景就是一條Stream會對應多條Flow,方便合并進行統計。
3.6 Show All Headers選項
勾選后,流量向導中的Frame界面中會顯示全部的報文頭,包括以太網頭部。

圖11
3.7 Bypass IP Subnet Checking選項
如果流量的源和目的IP不在一個網段,默認不勾選的情況下,流量的目的MAC用的是網關的MAC,如果勾選這個選項,雖然源和目的不在一個網段,但是還是使用目的IP的MAC地址。

圖12
4.Tunnel Binding界面
該界面可選,配置跟MPLS和SRV6協議標簽綁定相關,由于現在是普通的BGP route的流量, 默認配置就行了。

圖13
5. Frame Size界面相配置
該界面可以配置StreamBlock的名字(1),IP 頭部中protocol和QOS字段的值(2),frame Size (Fixed, Random, Increment, Decrement, Auto, iMIX)(3),以及一些選項(4),下面會利用一些篇幅講解這些選項。

圖14
Frame Size界面各選項介紹:
5.1 Allow port to generate traffic to itself選項

圖15
有一種測試場景,Bound Stream的源和目的節點都在同一個儀表端口,也就是流量從發送端口發出到DUT后,DUT把流量原路返回給發送端口,那么勾上這個選項才能正常進行統計。
5.2 Expand Stream blocks under ports選項

圖16
前面講過了Flow和Stream的概念,這里另外還要講一下Streamblock概念才能更好理解這個選項,StreamBlock是具有一些共性stream的集合,StreamBlock提高了STC的擴展率和操作效率,能快速方便的配置大量的流。
通過這個向導創建后在Traffic Generator主界面顯示的也是一行一行的StreamBlock,一行Streamblock可能包含多條Stream。
回到Endpoints界面的配置 (圖17),如果端口拓撲選擇Backbone, 那么Port1端口會發送流量到Port3和port4,然后這個選項選擇“Multiple paths per streamblock”,那么Port1端口只生成一行Streamblock(圖18),如果選擇“One path per streamblock”,那么Port1端口會生成兩行Streamblock(圖19),分別對發往不同端口的流量單獨創建一行Streamblock。

圖17

圖18

圖19
5.3 High Speed Result Analysis選項
勾選上,發送和接收數據流都是硬件處理;不勾選,發送和接收都是CPU軟件處理。默認是勾選上的,只有特殊情況才不勾選。

圖20
5.4 Enable Analyzer Preload選項
勾選這個選項的目的是讓接收端口知道期望收到哪條Stream的數據包,如果接收端口沒有收到期望收到的某條Stream的任何數據包,那么它將會為這條Stream統計為100%丟包。

圖21
6. Frame界面配置
勾選 “Show AllFields”顯示報文頭部的全部字段,Bound Stream流量的報文頭部繼承了BGP Route的Ethernet和IP頭部地址屬性,所以這些屬性顯示的是灰色,無法在這里更改,但其它字段可以進行修改,可以通過點擊 “Add Header”, 添加IPV4封裝的上層頭部,例如TCP/UDP頭。

圖22
7. Traffic Load界面配置流量負載
配置流量調度模式和相應的流量負載,流量調度模式分別可以配置為Port based, Rate Based, Priority Based, Manual Based四種,具體四種詳細定義需要單獨另外文章展開討論,在這里不做細談,當前默認配置。

圖23
8. Rx Port界面選擇流量的接收端口(圖24)
該界面配置可選,添加期望收到該流量的接收端口,根據測試的需要添加,如果添加了Rx Port并在Settings界面勾選 “collect stray frames” 選項(圖25),那么如果不是期望的端口收到了該流量的數據包,這些數據包就會被統計為“stray”幀(迷失幀)。

圖24

圖25
9.完成流量創建并查看
9.1 可以通過點擊 “All Stream Blocks” 查看全部端口已創建的StreamBlock(圖26),或者點擊各自端口下的“Traffic Generator” 查看這個端口作為發送端口的StreamBlock(圖27)

圖26

圖27
9.2 右鍵點擊某條StreamBlock, 選擇Preview, 可以查看這條StreamBlock包含兩條Stream, 對應兩條Flow (已勾選Stream only generation)

圖28
10. 發送流量,查看結果
10.1 統計結果窗口依次選擇“System Views”->“Streams”->“Stream Block Results”,啟動BGP Device, 等BGP鄰居建立完成,點擊發送流量,一共有四個發送端口,每個端口一條Stream Block,那么在這個統計界面(圖29)會顯示四條Stream Block的統計,統計包含有丟包,亂序,重復包,時延值等等。

圖29
10.2 統計結果窗口依次選擇“System Views”->“Streams”-> “Detailed Stream Results”,因為每一條Streamblock包含兩條Stream,那么統計界面會顯示總共8條Stream的統計(圖30)。

圖30
Raw Stream流量
通過上一節創建bound stream流量,我們知道了Flow,Stream, Streamblock的概念,那么下面我將用Raw Stream方式建立一條Streamblock(下表), 包含三條Stream, 每一條Stream對應一條Flow.

1. 占用兩個儀表端口,端口1點擊"Add Raw Stream Block"
兩個端口使用光纖直接連接,端口1作為發送流量端口,端口2作為接收統計端口

2. StreamBlock編輯窗口
2.1 General頁,配置數據幀的Frame Size, Payload
Frame size:Fixed, Increment, Decrement, Random, Auto, iMIX
Payload fill constant和Payload Fill type: Payload fill constant配置的是payload的前四個16進制數,可以填全0,全1,AAAA,5555,0F0F, FFFF,剩余的payload填充
由Payload fill type決定,可以配置Constant, Increment, Decrement, PRBS
Insert FCS error: 是否發送FCS error幀
Include Signature Field: 發送的數據幀payload是否帶20字節的思博倫簽名字段

2.2 Frame頁
a. 默認是EthernetII+IPV4封裝,可以通過刪除,添加,插入,修改等操作得到需要的各種頭部和字段

b. 修改源和目的IP地址

c. 右鍵點擊Source,選擇Insert IPv4 Modifier

d. Modifier對話框
選擇increment遞增,遞增數目Count是3,選擇Use Streams (該選項功能同Bound Stream向導中的“Stream only Generation”),點擊OK

e. 按照同樣步驟給Destination添加遞增選項,最終顯示如下圖

3. Preview頁,查看最終生成的流量

4. 查看統計
在左右統計窗口同時打開“Stream Block Results”和“Detail Stream Results”

5. 抓包
在端口2中進行抓包,下面是實際發送的數據包,可以查看到是儀表是輪詢著發送三條flow的數據包




