准备工作
登录Trex server开启server进程
[root@localhost ~]# cd /home/test/v2.95/
[root@localhost v2.95]# ./t-rex-64 -i --stl --ipv6
再次看个连接,启动client
[root@localhost v2.95]# ./trex-console --force
发送过程中可以用stop命令来强制停止发送
直接发送流量
先开启service模式下的端口转包,以便验证流量
capture monitor start --tx 1:打印port 1 的出方向的报文
trex>service
Enabling service mode on port(s): [0, 1, 2, 3] [SUCCESS]
trex(service)>capture monitor start --tx 1
Starting stdout capture monitor - verbose: 'low' [SUCCESS]
*** use 'capture monitor stop' to abort capturing... ***
报文的封装是靠scapy来完成的,具体可以参看Scapy Manual
Ether(): 不填参数就用端口默认的mac来发送,这个默认的mac是在/etc/trex_cfg.yaml里面初始化的。当然也可以根据实际的需求学习刷新
Dot1Q(vlan=12):指定Vlan,也能再加上dscp等参数
-p 1:指定发送的接口,不指定的话从所有可用的口都发一份
trex(service)>pkt -s Ether()/Dot1Q(vlan=12)/IPv6(src="::5")/TCP(dport=12,sport=1025) -p 1
Pushing 1 packets on port(s) [1]: [SUCCESS]
7.32 [ms]
trex(service)>
#1 Port: 1 ──▶ TX
trex(service)>
Type: TCP, Size: 78 B, TS: 6.56 [sec]
trex(service)>
Ether(dst='6c:fe:54:25:2f:d0',src='6c:fe:54:25:2f:d1',type=33024)/Dot1Q(prio=0,id=0,vlan=12,type=34525)/IPv6(version=6,tc=0,fl=0,plen=20,nh=6,hlim=64,src='::5',dst='::1')/TCP(sport=1025,dport=12,seq=0,ack=0,dataofs=5,reserved=0,flags=2,window=8192,chksum=35792,urgptr=0)
用现成的PCAP抓包文件发送
用push命令发送
-f :要使用的文件,相对的根目录是在trex的安装路径
–force:service模式下需要强制发送
trex(service)>push -f stl/udp_64B_no_crc.pcap --force -p 1
Converting 'stl/udp_64B_no_crc.pcap' to streams: [SUCCESS]
Removing all streams from port(s) [1._]: [SUCCESS]
Attaching 1 streams to port(s) [1._]: [SUCCESS]
Starting traffic on port(s) [1._]: [SUCCESS]
61.36 [ms]
trex(service)>
2022-06-13 22:44:52 - [server][info] - Profile 1._ job done
trex(service)>
2022-06-13 22:44:52 - [server][info] - Port 1 job done
trex(service)>
#2 Port: 1 ──▶ TX
trex(service)>
Type: UDP, Size: 60 B, TS: 2154.10 [sec]
trex(service)>
Ether(dst='6c:fe:54:25:2f:d0',src='6c:fe:54:25:2f:d1',type=2048)/IP(version=4,ihl=5,tos=0,len=46,id=0,flags=2,frag=0,ttl=64,proto=17,chksum=28605,src='101.0.0.1',dst='102.0.0.1')/UDP(sport=2001,dport=2001,len=26,chksum=1176)/Raw(load=b'\xde\xad\xbe\xef\x00\x01\x06\x07\x08\t\n\x0b\x00\x9b\xe7\xdb\x82M')
调用封装好的py文件发送
-m 10: 指定发送速率bps
-d 1:发送时长单位是秒
start -f stl/simple_3st.py -m 10 -d 1 --force
#375584 Port: 1 ──▶ TX
trex(service)>
Type: UDP, Size: 60 B, TS: 2701.19 [sec]
trex(service)>
Ether(dst='6c:fe:54:25:2f:d0',src='6c:fe:54:25:2f:d1',type=2048)/IP(version=4,ihl=5,tos=0,len=46,id=1,flags=0,frag=0,ttl=64,proto=17,chksum=15035,src='16.0.0.3',dst='48.0.0.1')/UDP(sport=1025,dport=12,len=26,chksum=32621)/Raw(load=b'xxxxxxxxxxxxxxxxxx')