(免费订阅,永久学习)学习地址: Dpdk/网络协议栈/vpp/OvS/DDos/NFV/虚拟化/高性能专家-学习视频教程-腾讯课堂

更多DPDK相关学习资料有需要的可以自行报名学习,免费订阅,永久学习,或点击这里加qun免费
领取,关注我持续更新哦! !

dpdk pktgen发包工具使用

编译方法 dpdk pktgen发包工具编译

接下来要做的是修改配置文件。在/pktgen-dpdk/cfg里

# 备份
cp default.cfg backup
vim default.cfg

这是官方给我们的示例 default.cfg

description = 'A Pktgen default simple configuration'

# Setup configuration
setup = {
'exec': (
'sudo',
'-E'
),

'devices': (
'81:00.0 81:00.1 81:00.2 81:00.3',
'85:00.0 85:00.1 85:00.2 85:00.3'
),

'opts': (
'-b igb_uio'
)
}

# Run command and options
run = {
'exec': (
'sudo',
'-E'
),

# Application name and use app_path to help locate the app
'app_name': 'pktgen',

# using (sdk) or (target) for specific variables
# add (app_name) of the application
# Each path is tested for the application
'app_path': (
'./app/%(target)s/%(app_name)s',
'%(sdk)s/%(target)s/app/%(app_name)s',
),

'dpdk': (
'-l 14,15-22',
'-n 4',
'--proc-type auto',
'--log-level 7',
'--socket-mem 2048,2048',
'--file-prefix pg'
),

'blacklist': (
#'-b 81:00.0 -b 81:00.1 -b 81:00.2 -b 81:00.3',
#'-b 85:00.0 -b 85:00.1 -b 85:00.2 -b 85:00.3',
'-b 81:00.0 -b 81:00.1',
'-b 85:00.0 -b 85:00.1',
'-b 83:00.0'
),

'app': (
'-T',
'-P',
'--crc-strip',
'-m [15:16].0',
'-m [17:18].1',
'-m [19:20].2',
'-m [21:22].3'
),

'misc': (
'-f', 'themes/black-yellow.theme'
)
}

需要修改的地方有三处:

  1. 网卡设备的PCI号,可以用dpdk的usertools查看。
  2. DPDK EAL 的 command line arguments。改成与你系统对应的参数。参照DPDK的文档。
  3. pktgen 的 command line arguments,参照pktgen的文档。

贴上我的版本作为参考:

# 只贴有修改的部分
# ……
'devices': (
'02:01.0 02:02.0' # 只绑定了两个网卡到DPDK做实验
),
# ……

'dpdk': (
'-l 0-3',
'-n 4',
'--proc-type auto',
'--log-level 7',
#'--socket-mem 2048,2048',
'--socket-mem 2048', # 只有一个socket
'--file-prefix pg',
),

# .......

'app': (
'-T',
'-P',
'--crc-strip',
'-m [1].0', # 查看官方手册了解 -m 用法,用于提供lcore到port的映射
'-m [2].1'
#'-m [19:20].2',
#'-m [21:22].3'
),

修改完后即可执行。

cd pktgen-dpdk
./tools/run.py -s default
./tools/run.py default

启动会出现错误

                                                                       Port memory used = 780295 KB
Src MAC e8:61:1f:13:02:cd<Promiscuous mode Enabled> <Promiscuous mode Enabled>Total memory used = 1560590 KB=== Display processing on lcore 1RX/TX processing lcore:   2 rx:  1 tx:  1
For RX found 1 port(s) for lcore 2
For TX found 1 port(s) for lcore 2RX/TX processing lcore:   3 rx:  1 tx:  1
For RX found 1 port(s) for lcore 3
For TX found 1 port(s) for lcore 3
PANIC in pktgen_main_rxtx_loop():
*** port 1 on socket ID 0 has different socket ID on lcore 3 socket ID 1
7: [/lib64/libc.so.6(clone+0x6d) [0x7f5819094b0d]]
6: [/lib64/libpthread.so.0(+0x7ea5) [0x7f581936bea5]]
5: [./app/x86_64-native-linuxapp-gcc/pktgen(eal_thread_loop+0x28b) [0x7adb4a]]
4: [./app/x86_64-native-linuxapp-gcc/pktgen(pktgen_launch_one_lcore+0x84) [0x4b9121]]
3: [./app/x86_64-native-linuxapp-gcc/pktgen() [0x4b87c1]]
2: [./app/x86_64-native-linuxapp-gcc/pktgen(__rte_panic+0xd9) [0x7b4f28]]
1: [./app/x86_64-native-linuxapp-gcc/pktgen(rte_dump_stack+0x27) [0x7b4dd4]]
[root@localhost pktgen-dpdk-pktgen-19.12.0]# 

表示 cpu 的socket 不在一个槽,需要设置到一个槽

        'cores': '1,2,4','nrank': '4','proc': 'auto','log': '7','prefix': 'pg','opts': ('-v','-T','-P','-j',),'map': ('[2].0','[4].1',),

进入交互命令

./tools/run.py -s default

./tools/run.py default

运行 start 0开始第一个网口,stop 0停止第一个网口,第二个网口类似;运行 start all开始所有网口,stop all停止所有网口;运行page help可以看到可用命令,主要有page stats, page xstats, page rate, quit
  • 运行pktgen 把两个网口互联

set 0 dst ip 192.168.74.132
set 0 dst mac 00:0c:29:45:e2:b9
set 0 count 100
start 0

图中port1和port2已经有明显区别,收包数相差100个包

设置参数

clear 0 stats
reset 0
set 0 size 500
enable screen
enable 0 range
disable 0 vlan
set 0 size 64
set 0 rate 100
set 0 burst 64
set 0 type ipv4
set 0 proto udp
set 0 dst ip 192.168.0.1/24
set 0 src ip 172.0.0.1/16
set 0 sport 12325
set 0 dport 12325
set 0 dst mac 20:04:0f:34:aa:3d
set 0 src mac f8:f2:1e:1a:d6:00
range 0 proto udp
range 0 src port 10000 10000 60000 1
range 0 dst port 10000 10000 60000 1
set 0 src ip 172.0.0.1/16
range 0 src ip start 172.0.0.1
range 0 src ip min 172.0.0.1
range 0 src ip max 172.0.255.254
range 0 src ip inc 0.0.0.1
set 0 dst ip 192.168.0.1
range 0 dst ip start 192.168.0.1
range 0 dst ip min 192.168.0.1
range 0 dst ip max 192.168.0.1
range 0 dst ip inc 0.0.0.0
disable 0 process
disable 0 bonding
disable 0 mac_from_arp
start 0 arp request
range 0 dst mac start 20:04:0f:34:aa:3d
range 0 dst mac min 20:04:0f:34:aa:3d
range 0 dst mac max 20:04:0f:34:aa:3d
range 0 src mac start f8:f2:1e:1a:d6:00
range 0 src mac min f8:f2:1e:1a:d6:00
range 0 src mac max f8:f2:1e:1a:d6:00

用pkggen再发1000个包

set 0 count 10000000

** Version: DPDK 19.11.10, Command Line Interface without timers
Pktgen:/> theme default white white off
Pktgen:/> theme top.spinner cyan none bold/ Ports 0-1 of 2   <Main Page>  Copyright (c) <2010-2019>, Intel CorporationFlags:Port        : P------Single      :0 P------Single      :1
Link State          :          <UP-1000-FD>          <UP-1000-FD>      ---Total Rate---
Pkts/s Max/Rx       :                   0/0             1502485/0             1502485/0Max/Tx       :             1502486/0                   0/0             1502486/0
MBits/s Rx/Tx       :                   0/0                   0/0                   0/0
Broadcast           :                     0                     0
Multicast           :                     0                     0
Sizes 64            :                     0              1000000065-127        :                     0                     0128-255       :                     0                     0256-511       :                     0                     0512-1023      :                     0                     01024-1518     :                     0                     0
Runts/Jumbos        :                   0/0                   0/0
ARP/ICMP Pkts       :                   0/0                   0/0
Errors Rx/Tx        :                   0/0                   0/0
Total Rx Pkts       :                     0              10000000Tx Pkts       :              10000000                     0Rx MBs        :                     0                  6720Tx MBs        :                  6720                     0:
Pattern Type        :               abcd...               abcd...
Tx Count/% Rate     :        10000000 /100%         Forever /100%
Pkt Size/Tx Burst   :             64 /   64             64 /   64
TTL/Port Src/Dest   :         4/ 1234/ 5678         4/ 1234/ 5678
Pkt Type:VLAN ID    :       IPv4 / TCP:0001       IPv4 / TCP:0001
802.1p CoS/DSCP/IPP :             0/  0/  0             0/  0/  0
VxLAN Flg/Grp/vid   :      0000/    0/    0      0000/    0/    0
IP  Destination     :           192.168.1.1           192.168.0.1Source          :        192.168.0.1/24        192.168.1.1/24
MAC Destination     :     e8:61:1f:13:02:cd     e8:61:1f:13:02:ccSource          :     e8:61:1f:13:02:cc     e8:61:1f:13:02:cd
PCI Vendor/Addr     :     8086:1521/04:00.0     8086:1521/04:00.1-- Pktgen 19.12.0 (DPDK 19.11.10)  Powered by DPDK  (pid:22927) ---------------

1g 网卡 64字节 Max/Tx : 1502486 每秒 150w = 733M/秒

1g 网卡 1024字节 Max/Tx : 122185 每秒 12w = 1033M/秒

原文链接;https://zhuanlan.zhihu.com/p/457654071  原文作者:江义波

dpdk pktgen发包工具使用相关推荐

  1. linux内核发包工具,Linux内核发包工具pktgen测试方案说明

    简介 pktgen是Linux内核里包含的一个高性能发包工具,主要用来测试网络性能.一般情况下,使用pktgen就可以满足千兆网卡的测试需要. pktgen运行在"内核态",并不占 ...

  2. Linux内核发包软件,请教一Linux內核自帶的網絡发包工具: pktgen 的問題

    主題: 使用Linux內核自帶的網絡发包工具:pktgen 时,發現以下問題: SuSE9:/bin # ./ipg FATAL: Module pg3 not found. ./ipg: line  ...

  3. PC上最快的发包工具

    昨天做了个实验,测试了三种发包方式所能达到的最快速度.测试平台是一台双至强.1G内存的服务器,操作系统为Linux,内核版本2.6.15.3,网卡为Intel e1000光口网卡.使用一台smartb ...

  4. 数据包发包工具bittwist

    数据包发包工具bittwist 渗透测试中,通过发送特定格式的包,可以实施网络嗅探和攻击.Kali Linux提供一款发包工具bittwist.该工具可以通过指定的网络接口发送数据.该工具不仅可以设置 ...

  5. 通过HTTP发包工具了解HTTP协议

    一.HTTP.pl功能简介 HTTP.pl perl编写的发包工具,简化版本curl,像curl致敬(唉,"致敬"都被于妈玩坏了).   该发包工具支持HEAD,GET,METHO ...

  6. udp发包工具_利用nginx的第四层协议stream模块实现UDP端口的负载均衡

    1.服务  Nginx1.9以上版本  UDP 服务 1:8011  UDP 服务 2:8012 2.Nginx 配置  编译安装参数:--with-stream  stream 模块主要配 ...

  7. 手机发包工具_【发包工具】http多线程发包工具

    [发包工具]http多线程发包工具 使用方法:输入地址,发送的内容,线程数,等待时间,每个线程发送的次数,GET/POST请求. 源代码 package com.xmxkkk.httptest; im ...

  8. Unity一键发包工具

    如果你的游戏项目只有一个版本或渠道维护,那可能对一键发包的需要不是很大,但是如果需要从一个项目工程发布不同渠道版本包时,最好是搞个一键发包工具,全自动化,只需在发包窗口做一些必要设置如版本号,目标平台 ...

  9. 基于scapy实现随机源IP的DNS发包工具

    介绍 在DNS系统运维工作中,我们通常会希望能测试不同的源IP下DNS解析结果的应答情况,进而评估智能DNS的实现情况或者做DNS数据分析等. 本文介绍在python2.7环境下使用scapy模块实现 ...

最新文章

  1. spring MVC项目启动报错
  2. 现代软件工程讲义 5 团队合作的阶段
  3. CV:利用cv2自带两步法haarcascade_frontalface_default.xml、_smile.xml实现对人脸、笑脸同时检测
  4. 洛谷 P2765 魔术球问题 (dinic求最大流,最小边覆盖)
  5. Android之android.os.NewWorkOnMainThreadException解决办法
  6. python 字体_python docx字体设置
  7. Python实用笔记 (27)面向对象高级编程——使用枚举类
  8. stvd能编译c语言,stvd+stm8s单片机程序编译报错
  9. java数字转大写_java实现数字转大写的方法
  10. 阿里巴巴大数据计算平台MaxCompute全套攻略
  11. Machine Learning机器学习自学资料整理
  12. accept函数的参数不是随便填的
  13. 使用ffmpeg做直播推流例子
  14. L2签证都有哪些福利待遇?
  15. 【笔试题1】按输入的两个数进行幂级数求和,如s=2的0次方+2的一次方+2的n次方,编码实现
  16. 网速是什么意思?带宽是什么意思?1M网速的下载速度应是多少?[转.baidu]
  17. 【运行报错】Centos 6 无法使用 yum
  18. 免费的机器学习数据集网站(6300+数据集)
  19. OpenStack Horizon 参数设置说明
  20. How to solve Exception raised during rendering: java.lang.System.arraycopy([CI[CII)V in Android

热门文章

  1. Java编程----函数
  2. linux的nfs配置文件的编写信息(学习day1)
  3. 观察者(observer)模式(二) —— 实现线程安全的监听器
  4. Oracle日期函數
  5. es(Elasticsearch)客户端Elasticsearch-head安装使用(04Elasticsearch-head安装篇)
  6. git clone速度太慢的解决办法
  7. 【零信任落地案例】北京芯盾时代电信运营商零信任业务安全解决方案落地项目
  8. 圣思园官方论坛正式上线,众板块版主火热招募中,欢迎围观
  9. 圣思园——Java SE Lesson 6
  10. samba共享使用端口