Trex测试仪使用

公司测试仪器紧张,打算安装Trex做简单的测试。如下下载最新的trex工程。

rz@trex:~$ sudo mkdir /opt/trex
rz@trex:~$ cd /opt/trex/
rz@trex:/opt/trex$
rz@trex:/opt/trex$ sudo wget --no-cache https://trex-tgn.cisco.com/trex/release/latest --no-check-certificate
--2024-06-11 08:51:28--  https://trex-tgn.cisco.com/trex/release/latest
Resolving trex-tgn.cisco.com (trex-tgn.cisco.com)... 173.36.109.208
Connecting to trex-tgn.cisco.com (trex-tgn.cisco.com)|173.36.109.208|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 248025436 (237M) [application/x-tar]
Saving to: ‘latest’latest                           100%[==========================================================>] 236.54M  2.13MB/s    in 2m 25s  2024-06-11 08:53:53 (1.63 MB/s) - ‘latest’ saved [248025436/248025436]

解压,得到版本v3.04。

rz@trex:/opt/trex$ sudo tar -xf latest
rz@trex:/opt/trex$ ls
latest  v3.04
rz@trex:/opt/trex$ cd v3.04/
rz@trex:/opt/trex/v3.04$

运行脚本dpdk_setup_ports.py,配置trex使用的网卡。需要配置偶数的接口数量,可以使用ID,PCI地址或者linux接口名称来指定trex使用的接口。这里根据ID,指定ID为4和5的接口,即linux接口enp7s0和enp8s0。

rz@trex:/opt/trex/v3.04$ sudo ./dpdk_setup_ports.py -i
By default, IP based configuration file will be created. Do you want to use MAC based config? (y/N)
+----+------+---------+-------------------+---------------------------------+--------+----------+--------+
| ID | NUMA |   PCI   |        MAC        |              Name               | Driver | Linux IF | Active |
+====+======+=========+===================+=================================+========+==========+========+| 3  | -1   | 06:00.0 | 94:09:d3:2b:72:fe | I210 Gigabit Network Connection | igb    | enp6s0   |        |
+----+------+---------+-------------------+---------------------------------+--------+----------+--------+
| 4  | -1   | 07:00.0 | 94:09:d3:2b:72:ff | I210 Gigabit Network Connection | igb    | enp7s0   |        |
+----+------+---------+-------------------+---------------------------------+--------+----------+--------+
| 5  | -1   | 08:00.0 | 94:09:d3:2b:73:00 | I210 Gigabit Network Connection | igb    | enp8s0   |        |
+----+------+---------+-------------------+---------------------------------+--------+----------+--------+
Please choose an even number of interfaces from the list above, either by ID, PCI or Linux IF
Stateful will use order of interfaces: Client1 Server1 Client2 Server2 etc. for flows.
Stateless can be in any order.
Enter list of interfaces separated by space (for example: 1 3) : 4 5

脚本默认配置两个接口为回环模式。先都采用默认的配置,稍后在修改。

For interface 4, assuming loopback to its dual interface 5.
Putting IP 1.1.1.1, default gw 2.2.2.2 Change it?(y/N).
For interface 5, assuming loopback to its dual interface 4.
Putting IP 2.2.2.2, default gw 1.1.1.1 Change it?(y/N).
Print preview of generated config? (Y/n)
### Config file generated by dpdk_setup_ports.py ###

配置完之后,预览配置内容如下,保存到/etc/trex_cfg.yaml。

- version: 2interfaces: ['07:00.0', '08:00.0']port_info:- ip: 1.1.1.1default_gw: 2.2.2.2- ip: 2.2.2.2default_gw: 1.1.1.1platform:master_thread_id: 0latency_thread_id: 1dual_if:- socket: 0threads: [2,3]Save the config to file? (Y/n)
Default filename is /etc/trex_cfg.yaml
Press ENTER to confirm or enter new file:
Saved to /etc/trex_cfg.yaml.

修改trex_cfg.yaml文件如下:

rz@trex:/opt/trex/v3.04$ sudo vim /etc/trex_cfg.yaml
### Config file generated by dpdk_setup_ports.py ###- version: 2interfaces: ['07:00.0', '08:00.0']port_info:- ip: 1.1.1.2default_gw: 1.1.1.1- ip: 2.2.2.2default_gw: 2.2.2.1platform:master_thread_id: 0latency_thread_id: 1dual_if:- socket: 0threads: [2,3]
"/etc/trex_cfg.yaml" 17L, 340B written

对应的拓扑如下图。

              |---------------||      Trex     |1.1.1.2 |               | 2.2.2.2|------------|enp7s0  enp8s0 |------------||            |---------------|            ||                                         ||                                         ||            |---------------|            ||    1.1.1.1 |      DUT      | 2.2.2.1    ||------------| eth0     eth1 |------------||---------------|

被测设备DUT

被测设备位移台ubuntu设备,安装有两个网卡。如下打开转发,配置接口的IPv4地址,配置路由。

echo 1 > /proc/sys/net/ipv4/ip_forwardifconfig eth0 1.1.1.1/24
ifconfig eth1 2.2.2.1/24ip route add 16.0.0.0/8 via 1.1.1.2
ip route add 48.0.0.0/8 via 2.2.2.2

查看路由配置:

# ip route
1.1.1.0/24 dev eth0 proto kernel scope link src 1.1.1.1
2.2.2.0/24 dev eth1 proto kernel scope link src 2.2.2.1
16.0.0.0/8 via 1.1.1.2 dev eth0
48.0.0.0/8 via 2.2.2.2 dev eth1

Trex配置

如下启动trex服务。

rz@trex:/opt/trex/v3.04$ sudo ./t-rex-64 -i 

启动终端trex-console连接服务端:

rz@trex:/opt/trex/v3.04$ ./trex-console Using 'python3' as Python interpeter
Connecting to RPC server on localhost:4501                   [SUCCESS]
Connecting to publisher server on localhost:4500             [SUCCESS]
Acquiring ports [0, 1]:                                      [SUCCESS]
*** Warning - Port 0 destination is unresolved ***
*** Warning - Port 1 destination is unresolved ***
Server Info:
Server version:   v3.04 @ STL
Server mode:      Stateless
Server CPU:       1 x Intel(R) Celeron(R) CPU  J1900  @ 1.99GHz
Ports count:      2 x 1Gbps @ I210 Gigabit Network Connection
-=TRex Console v3.0=-
Type 'help' or '?' for supported actions
trex>

进入服务模式service,ping测试与DUT设备的连通性。

trex>service
Enabling service mode on port(s): [0, 1]                     [SUCCESS]
15.69 [ms]
trex(service)>
trex(service)>ping -d 2.2.2.1 -p 1Pinging 2.2.2.1 from port 1 with 64 bytes of data:           
Reply from 2.2.2.1: bytes=64, time=0.89ms, TTL=64
Reply from 2.2.2.1: bytes=64, time=0.63ms, TTL=64
Reply from 2.2.2.1: bytes=64, time=1.07ms, TTL=64
Reply from 2.2.2.1: bytes=64, time=1.02ms, TTL=64
Reply from 2.2.2.1: bytes=64, time=0.56ms, TTL=64
trex(service)>
trex(service)>ping -d 1.1.1.1 -p 0   Pinging 1.1.1.1 from port 0 with 64 bytes of data:           
Reply from 1.1.1.1: bytes=64, time=1.42ms, TTL=64
Reply from 1.1.1.1: bytes=64, time=1.46ms, TTL=64
Reply from 1.1.1.1: bytes=64, time=0.51ms, TTL=64
Reply from 1.1.1.1: bytes=64, time=0.97ms, TTL=64
Reply from 1.1.1.1: bytes=64, time=0.70ms, TTL=64

statefull模式

rz@trex:/opt/trex/v3.04$ 
rz@trex:/opt/trex/v3.04$ sudo ./t-rex-64 -f cap2/http_simple.yaml -d 100 -m 1 --nc

在DUT设备上抓包,查看报文:

06:33:41.894512 ARP, Request who-has 2.2.2.2 (01:03:05:07:09:00) tell 2.2.2.2, length 46
06:33:41.894578 ARP, Request who-has 2.2.2.1 (01:03:05:07:09:01) tell 2.2.2.2, length 46
06:33:41.894638 ARP, Reply 2.2.2.1 is-at 94:09:d3:2a:f6:dd, length 28
06:33:41.894676 ARP, Request who-has 1.1.1.2 (01:03:05:07:09:00) tell 1.1.1.2, length 46
06:33:41.894699 ARP, Request who-has 1.1.1.1 (01:03:05:07:09:00) tell 1.1.1.2, length 46
06:33:41.894722 ARP, Reply 1.1.1.1 is-at 94:09:d3:2a:f6:dc, length 28
06:33:42.011447 IP 16.0.0.1.41668 > 48.0.0.1.http: Flags [S], seq 404375002, win 32768, options [mss 1460], length 0
06:33:42.011546 IP 16.0.0.1.41668 > 48.0.0.1.http: Flags [S], seq 404375002, win 32768, options [mss 1460], length 0
06:33:42.022162 IP 48.0.0.1.http > 16.0.0.1.41668: Flags [S.], seq 404419109, ack 404375003, win 32768, options [mss 1460], length 0
06:33:42.022198 IP 48.0.0.1.http > 16.0.0.1.41668: Flags [S.], seq 404419109, ack 404375003, win 32768, options [mss 1460], length 0
06:33:42.033376 IP 16.0.0.1.41668 > 48.0.0.1.http: Flags [.], ack 1, win 32768, length 0
06:33:42.033394 IP 16.0.0.1.41668 > 48.0.0.1.http: Flags [.], ack 1, win 32768, length 0
06:33:42.033412 IP 16.0.0.1.41668 > 48.0.0.1.http: Flags [P.], seq 1:250, ack 1, win 32768, length 249: HTTP: GET /3384 HTTP/1.1
06:33:42.033420 IP 16.0.0.1.41668 > 48.0.0.1.http: Flags [P.], seq 1:250, ack 1, win 32768, length 249: HTTP: GET /3384 HTTP/1.1
06:33:42.044175 IP 48.0.0.1.http > 16.0.0.1.41668: Flags [P.], seq 1:1461, ack 250, win 32768, length 1460: HTTP: HTTP/1.1 200 OK
06:33:42.044194 IP 48.0.0.1.http > 16.0.0.1.41668: Flags [P.], seq 1:1461, ack 250, win 32768, length 1460: HTTP: HTTP/1.1 200 OK
06:33:42.044215 IP 48.0.0.1.http > 16.0.0.1.41668: Flags [P.], seq 1461:2921, ack 250, win 32768, length 1460: HTTP
06:33:42.044224 IP 48.0.0.1.http > 16.0.0.1.41668: Flags [P.], seq 1461:2921, ack 250, win 32768, length 1460: HTTP

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/35898.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

antd内容超过固定长度就显示...,鼠标移入则显示提示

结合antd的Tooltip组件,如果内容超过固定长度就显示…,鼠标移入则显示提示 /*** 结合antd的Tooltip组件,如果内容超过固定长度就显示...,鼠标移入则显示提示* param param0* returns*/ const EllipsisText ({ text }) > {con…

前端项目vue3/React使用pako库解压缩后端返回gzip数据

pako仓库地址:https://github.com/nodeca/pako 文档地址:pako 2.1.0 API documentation 外部接口返回一个直播消息或者图片数据是经过zip压缩的,前端需要把这个数据解压缩之后才可以使用,这样可以大大降低网络数据传输的内容&…

解决qiankun项目与子应用样式混乱问题

背景 qiankun项目用的是Vue2Antdesign2,但其中一个子应用用的是Vue3Antdesign4。集成之后发现子应用的样式混乱,渲染的是Antdesign2的样式。 解决 以下步骤在子应用里操作 1. 在main.js引入ConfigProvider ,在app全局注册ConfigProvider …

【异常错误】归一化导致的图像生成颜色偏差

由于归一化的问题,会导致生成的图像颜色偏差严重,例如会导致生成的颜色偏红黑色、淡色、青色.. 如果你生成的图像整体感官上没有问题,但是却在颜色上有很大偏差,那么很大可能就是你训练的时候归一化的程序不对 ImageFolder的实现…

Depth Anything V1,V2论文解读

Depth Anything 引言Depth Anything V1标注方法学习标注图像发挥未标注图像的潜力语义辅助感知 Depth Anything V2总体框架流程 引言 在深度估计领域,单目深度估计(Monocular Depth Estimation,MDE)是指利用单个摄像头拍摄的图像…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(十八)

课程地址: 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程,一套精通鸿蒙应用开发 (本篇笔记对应课程第 28 节) P28《27.网络连接-Http请求数据》 案例: 这里不懂后端假设服务器的前端小伙伴就需要课程源码资料了…

深度之眼(二十五)——研究生学习计划安排

文章目录 一、前言二、结构安排和规划2.1 夯实基础2.2 分方向训练(待)2.3 进阶训练 三、其他 一、前言 课题组这边是需要对机器视觉有所要求吧,也就是CV方向。这一届研三师兄也都是在大厂拿到30W的年薪了,也是需要拥抱深度学习这…

java收徒 java辅导 java试用期辅导 java零基础学习

💗博主介绍:✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末报名辅导🌟 感兴趣的可以先收藏起来,还有大家…

守护变电箱消防安全,全氟己酮自动灭火片该安装在哪个位置?

变电箱、配电柜、换电柜是电力设备的重要组成部分,安全性至关重要。但在使用过程中,容易受到电气、机械、环境等因素影响,出现接触不良、短路、漏电等安全隐患,从而引发火灾事故。为了及时防范火灾风险,提前安装一款能…

【LeetCode】每日一题:数组中的第K大的元素

给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 解题思路 第一种是快排,快…

Vue中数组的【响应式】操作

在 Vue.js 中,当你修改数组时,Vue 不能检测到以下变动的数组: 当你利用索引直接设置一个项时,例如:vm.items[indexOfItem] newValue当你修改数组的长度时,例如:vm.items.length newLength 为…

网卡基础命令

使用 nmcli 可以执行各种网络管理任务,包括重新加载连接配置、重启网卡以及关闭和启用网卡。以下是一些常见的基础命令及其用途: 重新加载连接配置 sudo nmcli connection reload 重新加载所有网络连接的配置文件。 重启网卡(网络设备&#x…

Java基础(二)——数组,方法,方法重载

个人简介 👀个人主页: 前端杂货铺 ⚡开源项目: rich-vue3 (基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL) 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 &#x1…

01_02_Mybatis的配置文件与基于XML的使用

1、引入日志 在这里我们引入SLF4J的日志门面&#xff0c;使用logback的具体日志实现&#xff1b;引入相关依赖&#xff1a; <!--日志的依赖--><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version&g…

从命令行管理文件——软连接,软硬连接的区别

软连接 1. 原理 软连接本质是一种符号连接&#xff0c;类似于 Windows 的快捷方式&#xff0c;存储对应文件的路劲 2. 格式 ln -s 源文件 软连接名称 例&#xff1a; [rootserver /] # cd ~ [rootserver ~] # echo "china" > h1.txt [rootserver ~] # ln…

2024国内外音频转换器大盘点,盘点音乐剪辑的7个有效方法!

当遇到不支持的音乐文件时&#xff0c;您可能就会想要拥有一款优秀的音频转换器。当您想减小大量音乐文件以节省设备存储空间时&#xff0c;它也可以很好地帮上忙。如果您正在寻找这么一款音频转换器&#xff0c;那么&#xff0c;请不要错过这篇文章。一款顶尖的音频转换器不仅…

Oracle day10

create table category( 类目id number, 父类目id number, 描述 char(500) ) --insert into category(类目id,父类目id) values(1001,1); /*insert into category values(1,0,0为根类目); insert into category(类目id,父类目id) values(1002,2); …

USB2.0学习1--基本概念

目录 1.USB概念 2.USB协议发展 3.USB接口类型 3.1 TYPE类型 3.2 Mini类型 3.3 Micro类型 4. USB体系结构和关键概念 4.1 USB工作原理 4.2 USB物理拓扑结构 4.3 USB逻辑拓扑结构 4.4 USB软件架构 4.5 USB数据流模型 4.5.1 USB设备端点 4.5.2 USB管道 4.6 USB即插…

网工内推 | 国企信息工程师,信息系统项目管理师优先,最高14薪

01 上海浦东软件园股份有限公司 &#x1f537;招聘岗位&#xff1a;信息化管理工程师 &#x1f537;岗位职责&#xff1a; 1. 根据公司战略、数字化总体架构规划和IT 技术趋势&#xff0c;制定信息化系统的规划与设计&#xff0c;并制定实施计划。 2. 统筹公司信息化系统管理…

Redis-实战篇-缓存击穿问题及解决方案

文章目录 1、缓存击穿2、常见的解决方案有两种&#xff1a;2.1、互斥锁2.2、逻辑过期2.3、两种方案对比 3、利用互斥锁解决缓存击穿问题3.1、ShopServiceImpl.java3.2、使用 jmeter.bat 测试高并发 4、利用逻辑过期解决缓存击穿问题 1、缓存击穿 缓存击穿问题 也叫 热点key问题…