dpdk-pktgen 设置发送随机数据包

最近在做 82599网卡的 RSS测试,需要一款能够发送随机数据包的工具(这里说的随机是指协议字段的取值随机),经过一番研究,发现 dpdk-pktgen符合要求,下面就其使用方法做个简单的记录。

dpdk-pktgen中有一个叫做 range的页面,用来展示当前所发数据包的各个协议字段的取值范围。

dpdk-pktgen中可通过 "page range"命令来显示该页面的内容,即:

Pktgen:/> page range

range页面的内容如下图所示:
pktgen range page

从上面可以看到,协议字段的取值范围由 4部分组成,简称 “SMMI”,它们分别是:初始值 (Start),最小值(Min),最大值(Max),增加步长(Inc)。在对某个协议字段进行取值范围设定时,需要同时指定这 4个值。若指定增加步长 Inc0,则表示不随机。

从上面还可以看到,部分协议字段的取值范围已经预设好了,比如:dst.ip, dst.port, src.port等等。

从帮助手册里可以找到协议字段取值范围的设置方法,如下所示:

                                                       ** Pktgen Help Information **

  -- Setup the packet range values --
     note: SMMI = start|min|max|inc (start, minimum, maximum, increment)

range <portlist> src|dst mac <SMMI> <etheraddr> - Set destination/source MAC address
      e.g: range 0 src mac start 00:00:00:00:00:00
           range 0 dst mac max 00:12:34:56:78:90
      or  range 0 src mac 00:00:00:00:00:00 00:00:00:00:00:00 00:12:34:56:78:90 00:00:00:01:01:01
range <portlist> src|dst ip <SMMI> <ipaddr>   - Set source IP start address
      e.g: range 0 dst ip start 0.0.0.0
           range 0 dst ip min 0.0.0.0
           range 0 dst ip max 1.2.3.4
           range 0 dst ip inc 0.0.1.0
       or  range 0 dst ip 0.0.0.0 0.0.0.0 1.2.3.4 0.0.1.0
range <portlist> type ipv4|ipv6               - Set the range packet type to IPv4 or IPv6
range <portlist> proto tcp|udp                - Set the IP protocol type
range <portlist> src|dst port <SMMI> <value>  - Set UDP/TCP source/dest port number
       or  range <portlist> src|dst port <start> <min> <max> <inc>
range <portlist> vlan <SMMI> <value>          - Set vlan id start address
      or  range <portlist> vlan <start> <min> <max> <inc>
range <portlist> size <SMMI> <value>          - Set pkt size start address
      or  range <portlist> size <start> <min> <max> <inc>
range <portlist> teid <SMMI> <value>          - Set TEID value
      or  range <portlist> teid <start> <min> <max> <inc>
range <portlist> mpls entry <hex-value>       - Set MPLS entry value
range <portlist> qinq index <val1> <val2>     - Set QinQ index values
range <portlist> gre key <value>              - Set GRE key value
range <portlist> cos <SMMI> <value>           - Set cos value
range <portlist> tos <SMMI> <value>           - Set tos value
range <portlist> ttl <SMMI> <value>           - Set TTL
range <portlist> hop_limits <SMMI> <value>    - Set Hop Limits
range <portlist> traffic_class <SMMI> <value> - Set Traffic Class value

  Return to Continue or ESC:: 

假设我们要发送带有 vlan标识的数据包,并且指定 vlan帧头中的 PRI字段(即 802.1p优先级,或称 CoS字段,标识了服务质量需求)随机,则可以使用如下命令实现:

Pktgen:/> enable 0 range  // 设置网口 0 发送随机数据包,必须
Pktgen:/> enable 0 vlan  // 设置网口 0 发送 vlan 数据包,必须
Pktgen:/> range 0 cos 0 0 7 1  // 设置 vlan 中 PRI 字段的取值范围,即 SMMI 取值
Pktgen:/> start 0  // 启动网口 0 进行发包
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值