Trex

1. 环境准备

 OS选择和安装

根据说明,trex支持常用的linux系统,本次使用的是ubuntu 16.04.1。

虚拟机配置需要能上网(虚拟机桥接到真实电脑物理网卡上网,此部分不赘述)

Trex环境安装

         1、新建trex工作目录  :mkdir trex

         2、进入trex工作目录  :cd trex

         3、下载安装包  :wget --no-cache http://trex-tgn.cisco.com/trex/release/latest

         4、解压文件  :tar -zxvf latest

         5、进入相应工作目录  :cd trex

2. Trex环境调试 - stateless模式

2.1 stateless  模式配置和启动

  1.  ./dpdk_setup_ports.py  -h, --help       //查看这个命令使用帮助

  2.  sudo ./dpdk_set_ports.py -t                 //以table的形式打印所有网络接口的num/pcie/MAC

  3. sudo ./dpdk_set_ports.py -s                 //显示接口的状态,是否被dpdk bind使用,xinzhuang的dpdk下没有任何接口

  4. sudo ./dpdk_setup_ports.py -c 02:06.0 02:07.0 -o /etc/trex_cfg.yaml     //绑定相应的借口给dpdk使用,并替换/etc/下的trex端口配置,这样如果打流的时候没有主动添加cfg yaml,就会默认用这个yaml,这样下面就不会下一步了。

      

     5. 复制配置文件到/etc下:root@ubuntu:/home/test/trex/v2.57#cp  cfg/simple_cfg.yaml  /etc/trex_cfg.yaml

     6. 修改接口配置文件和自己的拓扑相符合:

      修改如下两个部分,修改了两个接口,实际只使用一个也可以。只修改一个只有一个方向的流,回不来。

       ip是当前使用的网口的ip,gw是与此接口相连的网口的ip地址。需要对应修改。在同一个子网内即可。

      

   

3.How to use trex stateless?

可以通过client的方式来使用trex,也可以直接通过pcap回放的方式来使用。

   3.1. 启动stateless服务器:

root@ubuntu:/home/test/trex/v2.57#./t-rex-64 -i     

服务器启动后,可以监听各个端口的收发包情况

  console连接环境确认

1、打开控制台、进入servicee模式,执行ping命令,确认环境:

 配置多流流量

    sudo vim /opt/trex/v2.61/stl/simple_3pkt.py

def create_stream (self):

        # create a base packet and pad it to size
        size = self.fsize - 4 # no FCS
        base_pkt =  Ether()/IP(src="16.0.0.1",dst="48.0.0.1")/UDP(dport=12,sport=1025)       1
        base_pkt1 =  Ether()/IP(src="16.0.0.2",dst="48.0.0.1")/UDP(dport=12,sport=1025)
        base_pkt2 =  Ether()/IP(src="16.0.0.3",dst="48.0.0.1")/UDP(dport=12,sport=1025)
        pad = max(0, size - len(base_pkt)) * 'x'


        return STLProfile( [ STLStream( isg = 0.0,
                                        packet = STLPktBuilder(pkt = base_pkt/pad),
                                        mode = STLTXCont( pps = 10),                         2
                                        ),

                             STLStream( isg = 25000.0, #defined in usec, 25 msec
                                        packet  = STLPktBuilder(pkt = base_pkt1/pad),
                                        mode    = STLTXCont( pps = 20),                      3
                                        ),

                             STLStream(  isg = 50000.0,#defined in usec, 50 msec
                                         packet = STLPktBuilder(pkt = base_pkt2/pad),
                                         mode    = STLTXCont( pps = 40)                      4

                                        )
                            ]).get_streams()

  可分别对三种流量包头配置(IP),速度配置(PPS),启动时间配置(isg)。

4. 启动TRex,测试双网口网卡回环。

  将光线两端分别接入网卡的两个口。

  打开命令行终端,并开启TRex服务端程序:

sudo ./t-rex-64 -i 
# t-rex-64 是可执行文件,在安装目录中

  打开另外一个命令行终端,开启TRex客户端程序:

trex-console  

  在客户端程序中开启流量发送:

start -f stl/simple_3pkt.py -a

  常用操作:

pause -a 
#暂停所有发送

tui
#流量统计信息

 

4. pcap数据包回放发包 - stateful模式

4.1 pcap准备

此部分使用安装文件自带的例子,/home/trex/trex/v2.62/avl 在目录下有很多的pcap,我们可以通过在yaml中配置多种不通的pcap和client/server的ip范围来增加我们打流的丰富程度。一般测performance也会需要各种不通的配置文件。

sfr_delay_10.yaml

 duration : 0.1
  generator :
          distribution : "seq"
          clients_start : "16.0.0.1"
          clients_end   : "16.0.1.255"
          servers_start : "48.0.0.1"
          servers_end   : "48.0.21.245"
          clients_per_gb : 201
          min_clients    : 101
          dual_port_mask : "1.0.0.0"
          tcp_aging      : 0
          udp_aging      : 0
  mac        : [0x0,0x0,0x0,0x1,0x0,0x00]
  #vlan       : { enable : 1  ,  vlan0 : 100 , vlan1 : 200 }
  #mac_override_by_ip : true
  cap_ipg    : true
  #cap_ipg_min    : 30
  #cap_override_ipg    : 200
  wlength    : 107
  cap_info :
     - name: avl/delay_10_http_get_0.pcap
       cps : 102.0
       ipg : 10000
       rtt : 10000
       w   : 1
     - name: avl/delay_10_http_post_0.pcap
       cps : 102.0
       ipg : 10000
       rtt : 10000
       w   : 1
     - name: avl/delay_10_https_0.pcap
       cps : 33.0
       ipg : 10000
       rtt : 10000
       w   : 1
     - name: avl/delay_10_http_browsing_0.pcap
       cps : 179.0
       ipg : 10000
       rtt : 10000
       w   : 1
     - name: avl/delay_10_exchange_0.pcap
       cps : 64.0
       ipg : 10000
       rtt : 10000
       w   : 1
 

4.2 修改文件、回放脚本

1、修改配置文件:

Yaml文件包括两部分,generator部分是关于更换数据包中五元组等信息的统一操作;cap_info部分是使用的数据包,需要回放哪些数据包及内容。可以列很多出来。

 

2、脚本回放:./t-rex-64 -f cap2/dns.yaml -m 1 -d 10 (m为复制几份,可以通过这个控制流量的大小,d为持续时间)

执行脚本回放后,对端虚拟机内,可以查看到收到的数据包,其中原地址、目的地址等是按照配置,自行修改的。

这中是默认用/etc/下的端口配置yaml,我们也可以在后面自己指定对应的cfg yaml,这样就不用关注/etc/下的配置。

 

3.sudo ./t-rex-64 -f avl/sfr_delay_10_1g.yaml   --cfg  /home/cisco/v2.46/pigeon/trex_cfg.yaml -c 5 -m 5 -d 3000 这条是带 stream yaml和cfg yaml的命令。

4.回放一个flow一次:

只打一条流打一次,利用一个pcap文件,这样发送和接收多少个包都是一定的。如果我们对flow进行相应的测试和monitor,这里就会帮助我们分析问题。如果要测performance,可以打大流量,修改m值即可调流量大小,在页面会显示出来。

sudo ./t-rex-64 -f pigeon/sfr_delay_10_1g.yaml --cfg /home/trex/v2.58/pigeon/port_cfg.yaml.1 -c 1 -d 1 -e -m 1 --active-flows 1

sfr_delay_10_1g.yaml 改成下面这样即可:

- duration : 0.1

  generator :

          distribution : "seq"

          clients_start : "67.0.0.1"

          clients_end   : "67.0.1.255"

          servers_start : "98.0.0.1"

          servers_end   : "98.0.21.245"

          clients_per_gb : 201

          min_clients    : 101

          dual_port_mask : "1.0.0.0"

          tcp_aging      : 0

          udp_aging      : 0

  mac        : [0x0,0x0,0x0,0x1,0x0,0x00]

  cap_ipg    : true

  #cap_ipg_min    : 30

  #cap_override_ipg    : 200

  cap_info :

     - name: avl/delay_10_http_get_0.pcap

       cps : 1

       ipg : 10000

       rtt : 10000

       w   : 1

 

小结:这里都是关于ipv4的操作,对于ipv6的操作,只需要修改流的yaml文件,然后在命令后加参数--ipv6,但是必须要保证是ipv6的网络,路由都是有的。一般我们打流只是打出去,如果我们要收到,必须要在连接的路由器上设置相应的ip route。

 

duration : 0.1

#vlan : { enable : 1 , vlan0 : 100 , vlan1 : 200 }

src_ipv6 : [0x2001,0x0DB8,0x0003,0x0004,0x0000,0x0000]

dst_ipv6 : [0x2001,0x0DB8,0x0003,0x0004,0x0000,0x0000]

generator :

distribution : "seq"

clients_start : "16.0.0.1"

clients_end : "16.0.21.255"

servers_start : "48.0.0.1"

servers_end : "48.0.21.255"

clients_per_gb : 201

min_clients : 201

dual_port_mask : "1.0.0.0"

tcp_aging : 0

udp_aging : 0

mac : [0x0,0x0,0x0,0x1,0x0,0x00]

 

 

参考:

https://www.cnblogs.com/pandaroll/p/11617801.html

https://blog.youkuaiyun.com/haozi87/article/details/93762153

TREX说明书: 命令名称: Z1 简便找盘 XINXI 查看硬盘信息 chkresfall检测固件 smt 查看SMART表 csmt 清SMART表 svmod 0x.. 单个备份模块 wrmod 0x.. 写入备份好的单个模块 pg 合并GP pgn 立即合并pg CGLIST 清G CFILE 0X33 清P Depophd 1,X关头 DM 内部低格 rdfl 2;edit 编辑ID wrdir 写01扇区 GSGJQ 格式化固件区 QLGJQ固件区清零 clribilog 清E0-E6 F0-F1的LOG HEADTEST 自动测试当前所有磁头好坏,好的返回OK,坏的返回BAD。 getPEDATA 自动获取PE bin 读E8 E9 E10 tp 校准指针 sf1 从0x01自动开自校准(范围S53. S58) 处理完后,出现COMPLETELY(完成)此时需要手工断电通电一次,校准即开启。校准时候用 POLL 0 命令实时查看进程。 sf2 从0x0e自动开自校准(若sf失败,则用这个跑(范围S53. S58)) 处理完后,出现COMPLETELY(完成)此时需要手工断电通电一次, 校准即开启。校准时候用POLL 0命令实时查看进程。 stop 强制停校准(盘在IDE 1,不是IDE0) rdTRK 自动备份全固件磁道 (范围S53. S58) wrTRKa 自动写全固件磁道 (范围S53. S58) swap58 自动全换SABRE58系列固件(范围S53. S58) swap53 自动全换SABRE53系列固件(范围S53. S58) wr58 自动全写S58系列固件(范围S53. S58) wr53 自动全写S53系列固件(范围S53. S58) sv58 自动全备份S58系列固件(范围S53. S58) sv53 自动全备份S53系列固件(范围S53. S58) wrdir 写dir wrrplist 写35模块 re47 自动配47适配器模块(范围S53. S58) re40 自动配40适配器模块(范围S53. S58) SVLROM 保存128K ROM WRROML 写128K ROM CLRCOLOR 修护色块和坏道的命令 CLR0 清零 CLRPW 解密 setPWD 加密 disablePWD 禁用密码 unlockUnit SECURITY UNLOCK Macro erasePrep SECURITY ERASE PREPARE Macro eraseUnit SECURITY ERASE UNIT Macro SMARTSTAT SMART归位 smtRdData SMART数据读取 htl L板测磁头 hlr换L板ROM AdpL自适配L板47 KadpL headnum 砍L板所选磁头适配 svtl uhead 保存L板所选磁头磁道 wrtl uhead 写所选磁头磁道 SVALL 存全固件RPM wrall 写全固件RPM svhawk保存HAWK全固件 wrhawk写HAWK全固件 svthawk保存HAWK磁道 wrthawk写HAWK磁道 initall初始化三项 getadpfrom40 从40拷贝MR适配进47 getadpfrom41 从41拷贝MR适配进47 raidergetadpfrom40 raider系列从40拷贝MR适配进47 raidergetadpfrom41 raider系列从41拷贝MR适配进47 svseqfull SEQ保存全固件 wrseqfull SEQ写全固件 SVBUC BUC保存全固件 WRBUC BUC写全固件 SVRAIDER RAIDER保存全固件 WRRAIDER RAIDER写全固件 kill headnum 这几个系列的砍头 adujst40 调整40模块 fmtcover 格式覆盖 SVORION ORION保存全固件 WRORION ORION写全固件 ORIONadp47 ORION配47 ROYL tp32 32位校准指针 ROYSF 自动开ROYL系列校准(从01开始跑,即第一个DC)处理完后,出现COMPLETELY(完成)此时需要手工断电通电一次,校准即开启。 校准时候用POLL 0命令实时查看进程。 STOPROY 强制停ROY校准 ROYHEADTEST ROY测试磁头 ROYRE47 ROY配ROM ROYMAKEROM ROY配ROM BAKpermovl 备份11号ATA模块 新命令: SF、SFP校准 LDR自动加载11 tpseq 设置校准起始指针 Get_adp_info 获取适配信息 Get_adp_new_info 获取适配信息(新) displayheadmap、hdmap 显示磁头映射 AAJSre40 AAJS盘从47拷贝MR到40 AAJSre47 AAJS盘从40拷贝MR到47 adjust_40(微代码,调用时加.)适配40 adjust_47(微代码,调用时加.)适配47 Adpzeus自适配ZEUS系列47 AdpR R系自适配47 K47 umaxhead UHEAD 砍头且设置47 kadpzeus headnum砍ZEUS所选磁头适配 cutmap uhead 关要砍的头的映射 SETPARM uhead设置所需磁头数的TPI和CAP getflash读取ROY备份ROM SA并保存 peirom配ROM svall 存全固件RPM,并存ROM.BIN, 11 PERMOVL.BIN, 35 RPLIST.BIN SVFW 保存全固件 SVBASE 存33 40 41 SVROM 保存192K ROM SV2ROM 保存256K ROM SVROMMOD 保存A 47 SVT UHEAD 保存所选磁头磁道 SVMOD OverlayNum 保存单个模块 WRBASE 写33 40 41 WRROMMOD 写A 47 WRROM 写192K ROM WR2ROM 写256K ROM WRALL 全写固件RPM RWRFW 自读自写全固件RPM wrFW 全写固件RPM WRT UHEAD 写入所选磁头磁道 WRTL UHEAD 写入所选磁头磁道 WrMOD BinFileNum 写入单个模块 SETHQ ULCAP设置HQ自定义CAP SETTAG ULCAP设置TAG自定义CAP scap显示CAP STPI显示TPI dpst、dpst1显示流程 EMDL编辑磁盘型号 HT测试头 HDT UHEAD测试所选头 SETLBA ULBA设置自定义LBA setdcm udcm设置自定义DCM setTPI为全部磁头设置TPI setCap为全部磁头设置CAP ST0 UTPI为0头设置TPI ST1 UTPI为1头设置TPI ST2 UTPI为2头设置TPI ST3 UTPI为3头设置TPI ST4 UTPI为4头设置TPI ST5 UTPI为5头设置TPI ST6 UTPI为6头设置TPI ST7 UTPI为7头设置TPI SC0 UCAP为0头设置CAP SC1 UCAP为1头设置CAP SC2 UCAP为2头设置CAP SC3 UCAP为3头设置CAP SC4 UCAP为4头设置CAP SC5 UCAP为5头设置CAP SC6 UCAP为6头设置CAP SC7 UCAP为7头设置CAP RADP读103并重新适配47 REPAIR重建DIR SFLOG查校准LOG CM对比47和103 ClrRES prmFileID、ClrR prmFileID、Clrbinfile binfile清空所选模块 CLEARFILE UFILEID清空所选ID模块 CLRPSTLOG清除SPTLOG CLRLIST清除所有缺陷表 kadp3 headnum、kadp2 headnum、kNEW2ROM headnum、knew3 headnum砍所选磁头适配 k0 headnum、k1 headnum、k3 headnum砍头 vp1、vp显示P表 VG显示G表 c4改28走C4 FmtR格式化固件区 cf清空缺陷 sz显示ZONE kz uznum ulba砍所选段位LBA SHOWZONE显示ZONE kZONE uzone砍所选段位 hr换ROM gb搞0B模块 h40换40 固件区 允许输入拉丁字符的拼音 Firmware District 常用指令 1、 关头 Depophd 1,X 2、 配47 Re47 3、 格式化 Fmtunit 4、 启动自校 Sf 5、 备份固件 Sv53,sv58 6、 写全部固件 Wr53,wr58 7、 自动更换替换固件 Swap53,swap58 8、 写01扇区 wrdir 9、 格式化固件区 fmtrsvd 10、 固件区清零 zrcyls 11、 清LOG clribilog sv109t wr109t wr083j sv083j sv218b wr218b adp0 adp1
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值