熟女俱乐部五十路二区av,又爽又黄禁片视频1000免费,国产卡一卡二卡三无线乱码新区,中文无码一区二区不卡αv,中文在线中文a

"); //-->

博客專欄

EEPW首頁 > 博客 > 【工具】Trex使用教程

【工具】Trex使用教程

發(fā)布人:電子禪石 時間:2024-09-03 來源:工程師 發(fā)布文章

簡介

TRex 是一種高性能的網(wǎng)絡(luò)流量生成工具,它通過創(chuàng)新和可擴展的軟件實現(xiàn),

利用標(biāo)準(zhǔn)和開放的軟件以及x86/UCS硬件,解決了傳統(tǒng)商業(yè)狀態(tài)感知流量生成器的問題。

TRex 的關(guān)鍵特點包括:


生成和分析L4-7流量:TRex 能夠模擬傳輸層到應(yīng)用層的流量,為網(wǎng)絡(luò)性能測試提供全面的解決方案。

一體化商業(yè)L7工具能力:在一個軟件包中集成了商業(yè)級L7工具的功能,提供成本效益高的測試解決方案。

基于預(yù)處理和智能重放的狀態(tài)流量生成器:使用真實流量模板進(jìn)行預(yù)處理和智能重放,以生成狀態(tài)流量。

生成和放大客戶端和服務(wù)器端流量:能夠同時生成和放大客戶端請求和服務(wù)器響應(yīng)流量,模擬真實的網(wǎng)絡(luò)交互。

可定制的功能:用戶可以根據(jù)需要添加自定義功能,以適應(yīng)特定的測試需求。

擴展性強:能夠擴展到200Gb/sec的速率,適用于單個UCS系統(tǒng)(使用Intel 40Gb/sec NICs)。

低成本:與商業(yè)流量生成器相比,TRex 提供了成本效益更高的選擇。

易于安裝和部署:作為一個自包含的軟件包,TRex 可以輕松地安裝和部署在多種環(huán)境中。

支持虛擬接口:TRex 支持在完全虛擬化的環(huán)境中使用,無需物理 NICs。

這使得 TRex 可以在多種虛擬化場景下使用。

使用示例:


Amazon AWS:在云環(huán)境中使用 TRex 進(jìn)行網(wǎng)絡(luò)性能測試。

Cisco LaaS:作為服務(wù)的一部分,使用 TRex 來提供網(wǎng)絡(luò)測試能力。

TRex on your laptop:在個人筆記本電腦上部署 TRex,進(jìn)行本地網(wǎng)絡(luò)性能測試和學(xué)習(xí)。

TRex 的靈活性和高性能使其成為網(wǎng)絡(luò)工程師和研究人員在進(jìn)行網(wǎng)絡(luò)性能測試和分析時的

理想選擇。通過模擬復(fù)雜的網(wǎng)絡(luò)流量,TRex 幫助用戶發(fā)現(xiàn)潛在的性能瓶頸和安全問題,優(yōu)化網(wǎng)絡(luò)設(shè)計和配置。下面來介紹一下 TRex 的安裝與使用。


下載安裝

獲取 TRex 最新版本安裝包


wget --no-cache https://trex-tgn.cisco.com/trex/release/latest

獲取 TRex 指定版本安裝包


wget --no-cache https://trex-tgn.cisco.com/trex/release/vX.XX.tar.gz

版本號查詢 TRex發(fā)布文檔


安裝包解壓:tar -xzvf latest 或 tar -xzvf vX.XX.tar.gz


進(jìn)入解壓后的目錄,對幾個主要文件夾做一個說明:


├─astf

├─automation

├─avl

├─bird

├─cap2

├─cfg             // TRex 提供的配置文件示例

├─emu

├─exp

├─external_libs  // 引用的外部庫

├─generated

├─ko

├─so

├─stl            // 使用Python Scapy 庫構(gòu)造各類報文的示例

├─trex_emu

└─x710_ddp

首次運行步驟

確認(rèn)使用的網(wǎng)卡信息

TRex 是一款 Linux 應(yīng)用程序,與 Linux 內(nèi)核模塊交互。它使用 DPDK(無需作為庫安裝 DPDK)。

TRex 應(yīng)該能夠在任何商用現(xiàn)貨 (COTS) x86 服務(wù)器上運行。運行 TRex 的另一種選擇是使用內(nèi)核接口

以原始套接字模式運行,適用于低性能和低占用需求(由于內(nèi)核限制,大約限制在 1MPPs)。

本文涉及的內(nèi)容是基于 CentOS 進(jìn)行描述的,收發(fā)包網(wǎng)卡使用DPDK驅(qū)動接管的方式

(無需手動綁定,TRex 運行會自動執(zhí)行綁定)。


進(jìn)入安裝包所在目錄,執(zhí)行 sudo ./dpdk_setup_ports.py -s 查看網(wǎng)卡信息,執(zhí)行完會看到類似如下信息:


[bash]>sudo ./dpdk_setup_ports.py -s


 Network devices using DPDK-compatible driver

 ============================================


 Network devices using kernel driver

 ===================================

 0000:03:00.0 '82599ES 10-Gigabit SFI/SFP+ Network Connection' drv= unused=ixgb #1

 0000:03:00.1 '82599ES 10-Gigabit SFI/SFP+ Network Connection' drv= unused=ixgb

 0000:13:00.0 '82599ES 10-Gigabit SFI/SFP+ Network Connection' drv= unused=ixgb

 0000:13:00.1 '82599ES 10-Gigabit SFI/SFP+ Network Connection' drv= unused=ixgb

 0000:02:00.0 '82545EM Gigabit Ethernet Controller (Copper)' if=eth2 drv=e1000 unused=igb_uio *Active* #2


 Other network devices

 =====================

 <none>

查看DPDK支持的網(wǎng)卡類型:官網(wǎng)鏈接


配置文件修改

默認(rèn)配置文件路徑:/etc/trex-cfg.yaml,有兩種方式生成配置文件。


TRex提供了配置文件的demo,在此基礎(chǔ)上進(jìn)行修改,示例存放路徑:cfg/ ,以 simple_cfg.yaml 文件為例,對各配置參數(shù)進(jìn)行說明。

- port_limit      : 2

  version         : 2

#List of interfaces. Change to suit your setup. Use ./dpdk_setup_ports.py -s to see available options

  interfaces    : ["03:00.0","03:00.1"]

  port_info       :

            # Either default_gw or dest_mac is mandatory

          - ip         : 1.1.1.1    # port 0 src_ip

            default_gw : 2.2.2.2    # dst_ip

          - ip         : 2.2.2.2    # port 1

            default_gw : 1.1.1.1


          - dest_mac   : '00:00:00:01:00:00'  # port 0

            src_mac    : '00:00:00:02:00:00'

          - dest_mac   : '00:00:00:03:00:00'  # port 1

            src_mac    : '00:00:00:04:00:00'

port_limit:端口數(shù)量,必須等于 interfaces 中列出的接口數(shù)量

version:必須設(shè)置為2

interfaces:要使用的接口列表。運行 sudo ./dpdk_setup_ports.py -s 來查看可選列表

port_info:端口信息。TRex 需要知道每個端口對應(yīng)的目的 MAC 地址,可以通過兩種方式指定:

直接指定 dest_mac

指定 default_gw,TRex 將向此 IP 發(fā)出 ARP 請求,并使用結(jié)果作為目的 MAC

使用 dpdk_setup_ports.py 腳本生成,腳本提供了交互模式來生成配置文件,命令:sudo ./dpdk_setup_ports.py -i,根據(jù)提示信息選擇要使用的網(wǎng)卡,生成的配置文件如下所示:

### Config file generated by dpdk_setup_ports.py ###


- version: 2

  interfaces: ['03:00.0', '03:00.1']

  port_info:

      - dest_mac: 00:bb:12:34:56:02 # MAC OF LOOPBACK TO IT'S DUAL INTERFACE

        src_mac:  00:bb:12:34:56:01

      - dest_mac: 00:bb:12:34:56:01 # MAC OF LOOPBACK TO IT'S DUAL INTERFACE

        src_mac:  00:bb:12:34:56:02


  platform:

      master_thread_id: 0                             #1

      latency_thread_id: 1                            #2

      dual_if:                                        

        - socket: 0                                   #3

          threads: [2,3,4,5,6]                        #4

master_thread_id:控制線程使用的 CPU 核

latency_thread_id:收包線程使用的 CPU 核

dual_if:定義了接口對的信息(依據(jù)interfaces列表中的順序)。每個部分,從- socket開始,為不同的接口對指定配置。

socket:為接口對分配使用的內(nèi)存的 NUMA 節(jié)點

threads:發(fā)包線程使用的 CPU 核列表,列表里所有的 CPU 要歸屬于socket指定的 NUMA 節(jié)點

查看 CPU 信息的命令:lscpu,可查看有幾個NUMA節(jié)點,各NUMA節(jié)點上有哪些 CPU。


# 兩個 NUMA節(jié)點,cpu 0-31 屬于 NUMA node0,cpu 32-63 屬于 NUMA node1

[root] lscpu

......

NUMA node0 CPU(s):   0-31

NUMA node1 CPU(s):   32-63

......


NUMA架構(gòu)簡單來說就是,系統(tǒng)有多個CPU處理器,每個處理器有自己的獨立內(nèi)存,CPU訪問自己的內(nèi)存,速度會更快,所以上述配置中,指定的CPU要歸屬于同一個NUMA節(jié)點。


運行

TRex 支持兩種運行模式:stateful 和 stateless,可簡單理解為,stateless 支持基本的 L2/L3 層測試,沒有保存流中間狀態(tài)的情況(如tcp流)。Stateful 模式的基礎(chǔ)是由多個報文組成的流。Stateless 理解與使用起來比較簡單,下文主要說明這種模式的運行。


stateless 模式(命令執(zhí)行均在解壓后的 TRex 安裝包目錄下)

把 TRex 作為 server 啟動


[bash]>sudo ./t-rex-64 -i -c 4

#配置文件中指定的發(fā)包核個數(shù)是固定的,可以通過 -c 參數(shù)來指定實際使用幾個核,若不指定,則使用全部


等server完全運行起來后,在本機另外打開一個終端,通過 trex-console 連接到 TRex,進(jìn)入到 console 界面后,就可以通過各種命令進(jìn)行發(fā)包測試了。


Stateless 模式下的發(fā)包主要使用 python scapy 庫來構(gòu)造報文的,基礎(chǔ)報文構(gòu)造腳本示例位于目錄 stl/ 下。發(fā)包命令:


# 指定 port 0 發(fā)送 udp 報文,發(fā)包速率為 10kbps

trex> start -f stl/udp_1pkt_simple.py -p 0 -m 10kbps


# 指定 port 1 發(fā)送 udp 報文,發(fā)包速率為 10Mbps

trex> start -f stl/udp_1pkt_simple_1.py -p 1 -m 10Mbps


-p :指定發(fā)包網(wǎng)卡,不指定則使用配置文件指定的所有網(wǎng)卡

-f:構(gòu)造發(fā)包的腳本路徑及文件名

-m MULT:發(fā)包速率,指定格式:[number][<empty> | bps | kbps | mbps | gbps | pps | kpps | mpps | %],%代表占網(wǎng)卡帶寬的百分比,即10Gbps的網(wǎng)卡,-m 10% 則代表1Gbps。

發(fā)包過程中可通過命令來更新發(fā)包速率


#更新所有網(wǎng)卡發(fā)包速率

update -m <參數(shù)>


#更新指定網(wǎng)卡發(fā)包速率

update -p <port_id> -m <參數(shù)>


其他常用命令:


# pause the traffic on all port

>pause -a                                                              


# resume the traffic on all port

>resume -a                                                             


# stop traffic on all port

>stop -a                                                              


查看實時統(tǒng)計信息


>tui

Global Statistics


Connection  : localhost, Port 4501

Version     : v3.04, UUID: N/A

Cpu Util    : 0.2%

            :

Total Tx L2 : 40.01 Mb/sec

Total Tx L1 : 52.51 Mb/sec

Total Rx    : 40.01 Mb/sec

Total Pps   : 78.14 Kpkt/sec

            :

Drop Rate   : 0.00 b/sec

Queue Full  : 0 pkts


Port Statistics


   port    |         0          |         1          |

 --------------------------------------------------------

 owner      |             hhaim |             hhaim |

 state      |            ACTIVE |            ACTIVE |

 --         |                   |                   |

 Tx bps L2  |        10.00 Mbps |        10.00 Mbps |

 Tx bps L1  |        13.13 Mbps |        13.13 Mbps |

 Tx pps     |        19.54 Kpps |        19.54 Kpps |

 Line Util. |            0.13 % |            0.13 % |

 ---        |                   |                   |

 Rx bps     |        10.00 Mbps |        10.00 Mbps |

 Rx pps     |        19.54 Kpps |        19.54 Kpps |

 ----       |                   |                   |

 opackets   |           1725794 |           1725794 |

 ipackets   |           1725794 |           1725794 |

 obytes     |         110450816 |         110450816 |

 ibytes     |         110450816 |         110450816 |

 tx-bytes   |         110.45 MB |         110.45 MB |

 rx-bytes   |         110.45 MB |         110.45 MB |

 tx-pkts    |        1.73 Mpkts |        1.73 Mpkts |

 rx-pkts    |        1.73 Mpkts |        1.73 Mpkts |

 -----      |                   |                   |

 oerrors    |                 0 |                 0 |

 ierrors    |                 0 |                 0 |


 status:  /


 browse:     'q' - quit, 'g' - dashboard, '0-3' - port display

 dashboard:  'p' - pause, 'c' - clear, '-' - low 5%, '+' - up 5%,

stateless GUI

TRex 提供了圖形化界面工具,可以安裝在 Windows 機器上,遠(yuǎn)程連接到 TRex 所在的 Linux 機器上,圖形化界面上查看實時收發(fā)包流量統(tǒng)計,更為直觀。

下載地址:https://github.com/cisco-system-traffic-generator/trex-stateless-gui


TRex 仿真

TRex 提供了仿真工具,可執(zhí)行py腳本(使用scapy構(gòu)造報文的腳本),然后以抓包格式輸出,可用來驗證構(gòu)造的報文是否符合預(yù)期


./stl-sim -f stl/udp_1pkt_simple.py -o udp_test.pcap -l 500

1

-l :生成的報文個數(shù),默認(rèn)是5000

-o:若不指定絕對路徑,生成的抓包文件位于當(dāng)前目錄

TRex 抓包

Service mode 下可以抓包,在console界面輸入service就進(jìn)入了service mode,抓包命令:


trex(service)> capture record start --rx port_id[ port_id ...]

1

--rx:抓收到的報文

--tx:抓發(fā)出的報文

若不指定 rx tx,收發(fā)的報文都抓

可指定抓某個port或某幾個port的報文,不指定則全部port

舉例說明:


trex(service)>capture record start --rx 0 1


Starting packet capturing up to 1000 packets                 [SUCCESS]


*** Capturing ID is set to '19' ***

*** Please call 'capture record stop --id 19 -o <out.pcap>' when done ***


根據(jù)開始抓包后界面回顯的提示,停止抓包


*** Capturing ID is set to '19' ***

*** Please call 'capture record stop --id 19 -o <out.pcap>' when done ***


trex(service)> capture record stop --id 19 -o <out.pcap>


注:-o 指定保存抓包文件的路徑,應(yīng)使用絕對路徑


TRex arp 學(xué)習(xí)

TRex 可自動獲取對端 mac,cfg yaml文件內(nèi)若指定的是IP,即default_gw,可指示 TRex 學(xué)習(xí)對端mac。以下命令均在service mode下執(zhí)行。


打開混雜模式(確保網(wǎng)卡可以收到廣播包)

trex(service)> portattr --prom on

1

使用arp命令使 TRex 主動發(fā) arp 請求,獲取對端 mac

trex(service)> arp -p port_id[port_id port_id...] -r <cnt>

1

-p 指定port

-r 指定重復(fù)次數(shù)

舉例:


trex(service)>arp -p 0 1 -r 3


Resolving destination on port(s) [0, 1]:                     [SUCCESS]


Port 0 - Recieved ARP reply from: 49.0.0.3, hw: 50:7c:6f:14:67:79

Port 1 - Recieved ARP reply from: 48.0.0.2, hw: 50:7c:6f:14:67:78


285.42 [ms]


關(guān)閉service mode

service --off

————————————————


                        

原文鏈接:https://blog.csdn.net/Wendy1226/article/details/133211803


*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



關(guān)鍵詞: trex

技術(shù)專區(qū)

關(guān)閉