"); //-->
本文分享自天翼云开发者社区《T-rex压测工具使用》,作者:f****n
trex使用一、软件版本
TRex版本:v3.00
二、无状态模式(单设备发包)1.工作目录
cd /home/root/trex/scripts/
2.dpdk网卡使用
modprobe uio insmod /home/root/pktgen-3.7.2/igb_uio.ko/home/root/dpdk-devbind.py -b igb_uio 3b:00.1 &&\ /home/root/dpdk-devbind.py -b igb_uio af:00.1
3.stl服务启动
//-i 交互模式, --stl 无状态模式 --no-scapy-server 禁用 Scapy 服务器,Scapy 是一个 Python 库,用于网络数据包的创建和解析 -c 16 运行16个lcore ./t-rex-64 -i --stl --no-scapy-server -c 16
4.控制台启动
//在新窗口./trex-console -s 127.0.0.1 --force
5.控制台执行脚本
trex> start -f stl/split_var_to_cores.py -m 700000// -m 700000 为重复次数,执行这个脚本得话实际看是pps数量,
6.脚本介绍
stl/split_var_to_cores.py
作用:测试other协议包、udp协议包等自定义类型包,可以指定payload长度
from trex_stl_lib.api import *import argparse
class STLS1(object):
def create_stream (self, direction): payload_len = 0
#GRE
#base_pkt = Ether(dst='00:00:aa:aa:aa:aa',src='00:00:bb:bb:bb:bb')/IP()/GRE(key=12345)/IP()/UDP()/('!'*payload_len)
#TCP SYN
base_pkt = Ether(dst='00:00:aa:aa:aa:aa',src='00:00:bb:bb:bb:bb')/IP()/TCP(flags="S")/('!'*payload_len)
#UDP
#base_pkt = (Ether(dst='00:00:aa:aa:aa:aa',src='00:00:bb:bb:bb:bb')/IP()/UDP()/('*' * payload_len))
#VLAN
#base_pkt = (Ether(dst='00:00:aa:aa:aa:aa',src='00:00:bb:bb:bb:bb')/Dot1Q(vlan=189)/IP()/UDP()/('*' * payload_len))
ip_range = {'src': {'start': "10.0.0.1", 'end': "10.255.255.254"}, 'dst': {'start': "8.0.0.1", 'end': "8.0.0.5"}}
if (direction == 0):
src = ip_range['src']
dst = ip_range['dst'] else:
src = ip_range['dst']
dst = ip_range['src']
vm = STLVM()
vm.var(name="src", min_value=src['start'], max_value=src['end'], size=4, op='inc')
vm.var(name="dst", min_value=dst['start'], max_value=dst['end'], size=4, op='inc')
vm.var(name="src", min_value=1024, max_value=65535, size=2, op='inc') # 端口号按递增赋值
vm.var(name="dst", min_value=5011, max_value=5011, size=2, op='inc')
#vm.repeatable_random_var(fv_name="src_port", size=2, min_value = 1024, max_value = 65535, limit=3, seed=0) # 随机值,seed要为可变值才能实现随机,如使用时间戳
#vm.repeatable_random_var(fv_name="dst_port", size=2, min_value = 1024, max_value = 65535, limit=3, seed=0)
vm.write(fv_name="src", pkt_offset='IP.src')
vm.write(fv_name="dst", pkt_offset='IP.dst')
#vm.write(fv_name="src_port", pkt_offset="UDP.sport") # 根据TCP/UDP选择切换
#vm.write(fv_name="dst_port", pkt_offset="UDP.dport")
vm.write(fv_name="src_port", pkt_offset="TCP.sport")
vm.write(fv_name="dst_port", pkt_offset="TCP.dport")
vm.fix_chksum(offset='IP') return STLStream(packet = STLPktBuilder(pkt = base_pkt, vm = vm),
mode = STLTXCont())
def get_streams (self, direction, tunables, **kwargs):
parser = argparse.ArgumentParser(description='Argparser for {}'.format(os.path.basename(__file__)),
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
args = parser.parse_args(tunables)
# create 1 stream return [ self.create_stream(direction) ]
# dynamic load - used for trex console or simulator
def register(): return STLS1()专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
Addison.Wesley.Advanced.Linux.Networking.part1.rar
中国首例!我国对美国相关光纤产品发起反规避调查
Addison.Wesley.Advanced.Linux.Networking.part3.rar
我国西部首个,重庆算力互联互通平台在两江新区上线
SDN可编程交换芯片架构核心:RMT,一个可编程的网络DSA
[转帖]IBM可编程网络处理器
Addison.Wesley.Advanced.Linux.Networking.part4.rar
INA103构成的使放大器稳定工作的输入网络
怎么样才能让一个网络接口同时有两个ip address?
超高速光纤创下全球速度纪录:在欧式距离上达到1.02拍比特每秒
Coherent推出全系列InP技术组合
采用TDA4290的音量调节网络
8、16位MCU接入TCPIP网络方案
AI网络架构或将进入“无交换机”时代
: 影响未来的20项数字技术
网络爬虫开发常用框架Scrapy
INA166的输入稳定网络电路
安捷伦(Agilent)科技公司的网络优化测试仪
帮个忙:一个网络接口是否能拥有两个IP地址?
GSMA:全球 43% 的人口仍未使用移动互联网
Addison.Wesley.Advanced.Linux.Networking.part2.rar
HTML 解析之 BeautifulSoup
INA217的输入稳定网络电路
教程:设置内置逻辑的 IO-Link 网络
IGBT无损吸收网络