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. Python学习笔记之从文件中读取数据

    10-1 Python 学习笔记:在文本编辑器中新建一个文件,写几句话来总结一下你至此学到的Python 知识,其中每一行都以“In Python you can”打头.将这个文件命名为learnin ...

  2. 解决 Electron 5.0 版本出现 require is not defined 的问题

    Electron已经发布了5.0正式版,升级后发现原来能运行的代码报错提示require is not defined 经查相关资料,原来官方在5.0版本修改了nodeIntegration的默认值, ...

  3. elementui 自定义表头 renderHeader的写法 给增加el-tooltip的提示

    1.html <el-table-column prop="taxes" :render-header="renderHeader" width=&quo ...

  4. 轻量级.Net ORM SqlSuger项目实战

    SqlSuger,清垃圾ORM实战例子. //添加引用 using SqlSugar; //在构造函数中实例化SqlSuger clinet = new SqlSugarClient(new Conn ...

  5. java mybatis Column 'AAA' in where clause is ambiguous

    今天在java mybatis项目中遇到一个问题,“java mybatis Column 'AAA' in where clause is ambiguous”, 这是由于在多表连接查询的时候,遇上 ...

  6. Mybatis 子查询

    在查询数据库时,需要以查询结果为查询条件进行关联查询. 在mybatis中通过association标签和collection标签实现子查询. 1. collection(集合)和associatio ...

  7. Linux服务管理之ntp

    NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议. 在计算机的世界里,时间非常地重要,例如对于火箭发射这种科研活动,对时间的统一性和准确性要 ...

  8. IDEA 设置(中文乱码、svn、热部署、ideolog 、Jrebel )

    目录 console中文乱码 idea 多个工程分别设置svn idea svn忽略版本控制 idea svn客户端 ideolog 插件配置 idea 热部署 Jrebel 插件激活和使用 # I ...

  9. yum无法下载,网关问题

    由于网关地址改变没有及时更新配置,造成无法下载 failure: repodata/repomd.xml from base: [Errno 256] No more mirrors to try h ...

  10. msyql error: Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A

    mysql> use mydb Reading table information for completion of table and column names You can turn o ...