1. introduction

  TRex是cisco基于Intel dpdk开发的软件程序。推荐在CentOS/RHEL 7.6, 64bits中运行,否则connectx-4网卡不可使用。

笔者在Ubuntu16.04中Intel-XL710网卡测试也成功。

  使用中高端服务器和最新的Intel网卡,TRex的发包性能可达到200Gbps,使用某些类型的网卡还支持基于硬件的每流统计量汇报(Intel-XL710 支持255条独立流)。

2. installation

mkdir -p /opt/trex

cd /opt/trex

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

tar -xzvf latest

  至此就结束了安装,解压出来都是可执行文件。

  另外,需要配置网卡设置:

sudo ./dpdk_setup_ports.py -s
# 查看网络接口配置

  设置配置文件,例如:给DPDK驱动使用:

cp  cfg/simple_cfg.yaml /etc/trex_cfg.yaml
#拷贝例子到默认配置文件路径

  根据接口情况手动修改配置文件:

sudo vim /etc/trex_cfg.yaml
<none>
- port_limit : 2
version : 2
interfaces : ["03:00.0", "03:00.1"] #需要对此进行手动调整,填写网口pcie编号
port_info :
- ip : 1.1.1.1
default_gw : 2.2.2.2
- ip : 2.2.2.2
default_gw : 1.1.1.1

3. 配置多流流量

   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- -i
# t-rex- 是可执行文件,在安装目录中

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

trex-console  

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

start -f stl/simple_3pkt.py -a

  常用操作:

pause -a
#暂停所有发送 tui
#流量统计信息

  另外一个比较有用的操作是可以根据流量配置文件生成对应的pcap文件,在流量发送之前,

通过视察pcap文件,我们可以测试配置脚本是否正确:

sudo ./stl-sim -f stl/udp_1pkt_range_clients_splita.py -o flow1a64Byte60000.pcap -l 60000
#-o 输出文件名 -l 总包数

5. 启动硬件每流测量

  编写流量配置文件,其中需要设置流ID(pg_id = 7),以及打开统计功能(flow_stats) ,stl/4flow_stats.py:

from trex_stl_lib.api import *

class STLS1(object):

    def __init__ (self):
self.fsize =128; # the size of the packet def create_stream (self): # Create base packet and pad it to size
size = self.fsize - 4; # HW will add 4 bytes ethernet FCS
base_pkt = Ether()/IP(src="16.0.0.1",dst="48.0.0.1")/UDP(dport=12,sport=1025)
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)
base_pkt3 = Ether()/IP(src="16.0.0.4",dst="48.0.0.1")/UDP(dport=12,sport=1025)
pad = max(0, size - len(base_pkt)) * 'x' return STLProfile( [ STLStream( isg = 1.0, # start in delay in usec
packet = STLPktBuilder(pkt = base_pkt/pad),
mode = STLTXCont( pps = 27500),
flow_stats = STLFlowStats(pg_id = 7),
), STLStream( isg = 2.0,
packet = STLPktBuilder(pkt = base_pkt1/pad),
mode = STLTXCont( pps = 27500),
flow_stats = STLFlowStats(pg_id = 12),
), STLStream( isg = 3.0,
packet = STLPktBuilder(pkt = base_pkt2/pad),
mode = STLTXCont( pps = 27500),
flow_stats = STLFlowStats(pg_id = 15), ),
STLStream( isg = 4.0,
packet = STLPktBuilder(pkt = base_pkt3/pad),
mode = STLTXCont( pps =27500),
flow_stats = STLFlowStats(pg_id = 17), )
]).get_streams() def get_streams (self, direction = 0, **kwargs):
# create 1 stream
return self.create_stream() # dynamic load - used for trex console or simulator
def register():
return STLS1()

  开始流量:

start -f stl/4flow_stats.py -a

  打开监控:

tui

  打开每流显示:

#对于版本不同可能采用不同方式, v2.6的打开方式如下:
# 先按下esc
# 再按下x,启动每流监控

TRex,一个基于DPDK的数据包发生器,测试仪的更多相关文章

  1. 基于DPDK的高效包处理系统

    一.概念 Intel® DPDK全称Intel Data Plane Development Kit,是intel提供的数据平面开发工具集,为Intel architecture(IA)处理器架构下用 ...

  2. scapy - 基于python的数据包操作库

    简介 地址:https://github.com/secdev/scapy scapy是一个基于python的交互式数据包操作程序和库. 它能够伪造或者解码多种协议的数据包,通过使用pcap文件对他们 ...

  3. 一个基于图的数据管理系统-gStore

    gStore是遵循 BSD协议的一个开源项目.一个基于图的 RDF 三元组存储的数据管理系统.该项目是北京大学.滑铁卢大学.香港科技大学的联合研究项目.中国北京大学计算机科学与技术研究所的数据库组对该 ...

  4. 基于IPv6的数据包分析(第三组)

    一.实验拓扑 二.配置过程 本处提供R1.R2.R4的详细配置过程(包含静态路由的配置) 1)      R1: R1(config)#int e1/0 R1(config-if)#ipv6 addr ...

  5. 基于IPV6的数据包分析(GNS3)

    1.拓扑图 2.配置ipv6地址.使路由器之间可互ping,用ospf配置.(R5为例) 查看路由表 试R5 ping 到R4 R4 ping到 R1 3.开始抓包分析 128返回请求(Echo Re ...

  6. 基于IPV6的数据包分析(更新拓扑加入了linux主机和抓取133icmp包)(第十三组)

    1.拓扑图 2.配置ipv6地址,在拓扑图上对应位置标有对应网段,所在网段的端口按照网段配置,下图以r4为例 3.配置路由表,由于静态路由还要敲ip很麻烦所以使用ospf协议,下图为ospf配置以r5 ...

  7. 基于IPv6的数据包分析

    1.首先我们来构建拓扑:如下所示 2.对各个路由器进行配置使得网络ping通:命令如下 a)配置各路由器接口的IPv6地址,可由上图注释配置 b)配置各路由器的静态路由(此处举例R4) (global ...

  8. 基于IPv6的数据包抓包分析(GNS3)

    一.实验拓扑 二.路由配置 路由R1.R2.R3.R4.R5详细配置: 1.配置R1: R1(config)#interface fastEthernet 0/1 R1(config-if)#ipv6 ...

  9. 多CPU下基于e1000e驱动的数据包以及网卡中断流程分析.doc

    http://wenku.baidu.com/link?url=mMKDH_fKmUXN7L6rANIFHjoHdKCYBLlDrqoYB1daDTEkNFk9Bt9xlJtS_4BKBj6w22WD ...

随机推荐

  1. 终于理解Macro: Tree-of-symbols , 几个特殊标记符号

  2. PIE SDK栅格矢量化算法

    1.算法功能简介 栅格数据矢量化较为复杂,如果由一幅扫描的数字化地图来建立矢量数据库,则需要经过数字图象处理,如边缘增强.细化.二值化.特征提取及模式识别才能获得矢量数据.人们通常将多色地图分色后逐个 ...

  3. java包装类和值类型的关系

    java包装类总是让人疑惑 它与值类型到底是怎么样一种关系? 本文将以int和Integer为例来探讨它们的关系 java值类型有int short char boolean byte long fl ...

  4. 自回归(auto-regression)机制

    在每个新单词产生后,该单词就被添加在之前生成的单词序列后面,这个序列会成为模型下一步的新输入.这种机制叫做自回归(auto-regression),同时也是令 RNN 模型效果拔群的重要思想. GPT ...

  5. Jmeter 使用自定义变量

    有些情况下比如发起测试时URL的主机名和端口需要在采样器中出现多次,这样就有个问题,当测试的主机更改时, 我们需要修改主机名称,这时就需要修改多个地方,如果多的情况会有遗漏.如果我们在配置脚本的时候, ...

  6. django2.2(一)

    限制请求method 什么是method 1.通常客户端请求服务器获取资源为GET方式 2.客户端提交数据给服务器端数据为POST方式 method限制请求 如果要限制请求,比如客户端只允许用GET方 ...

  7. Linux文件服务管理之Samba

    Linux文件服务器的搭建            Samba      vsftpd      nfs       Samba服务                     作用:共享目录        ...

  8. 为 Jupyter 添加目录

    1.依次在 anaconda prompt 窗口中执行以下两句命令 pip install jupyter_contrib_nbextensions # 安装第三方包 jupyter contrib ...

  9. tensorflow运行时错误:服务似乎挂掉了,但是会立刻重启的.

    以前在POD里跑起来,没问题的示例代码. 移到jupyter中,多给两个GPU,有时运行就会爆出这个错误: 于是,按网上的意见,暂时加了个使用GPU的指定, 暂时搞定. 如下红色部分. import ...

  10. Codeforces Round #605 (Div. 3)

    地址:http://codeforces.com/contest/1272 A. Three Friends 仔细读题能够发现|a-b| + |a-c| + |b-c| = |R-L|*2 (其中L ...