step1:
下载最新版的DPDK和pktgen,官网地址(http://www.dpdk.org/download)
或者可以用我的测试的dpdk16.04和pktgen2.9.17 (百度网盘地址:http://pan.baidu.com/s/1mhDn1Ss)
step2:
把pktgen解压放到dpdk16.04的examples文件夹里面。
step3:
首先安装DPDK16.04
(根据自己电脑的特性安装,下面是参考)
/home/dpdk/wenxingbeng/dpdk-16.04/tools# ./setup.sh #用自带脚本安装
接下来分别选择:
[15] x86_64-native-linuxapp-gcc
[17] Insert IGB UIO module
[20] Setup hugepage mappings for non-NUMA systems #输入1024
[23] Bind Ethernet device to IGB UIO module #输入 0000:01:00.0 0000:01:00.1
(界面如下!需要说的的是需要dpdk指定的网卡才能运行!)
Network devices using DPDK-compatible driver
============================================
Network devices using kernel driver
===================================
0000:01:00.0 '82599ES 10-Gigabit SFI/SFP+ Network Connection' if=eth4 drv=ixgbe unused=igb_uio
0000:01:00.1 '82599ES 10-Gigabit SFI/SFP+ Network Connection' if=eth3 drv=ixgbe unused=igb_uio
0000:03:00.0 'RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller' if=eth0 drv=r8169 unused=igb_uio *Active*
Other network devices
=====================
Enter PCI address of device to bind to IGB UIO driver: 0000:01:00.0 0000:01:00.1
step4: 指定环境变量RTE_SDK和RTE_TARGET
export RTE_SDK=/home/dpdk/wenxingbeng/dpdk-16.04 #dpdk安装的文件夹
export RTE_TARGET=x86_64-native-linuxapp-gcc #你所指定的编译器
step5: 安装 libpcap-dev
root@dpdk-All-Series:/home/dpdk/wenxingbeng/dpdk-16.04/examples/pktgen-2.9.17# sudo apt-get install libpcap-dev
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
libpcap-dev 已经是最新的版本了。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 711 个软件包未被升级。
一般都需要安装 linux-headers-版本号-generic ,但是我亲测的时候并不需要!有问题就安装吧!
(sudo apt-get install linux-headers-4.2.0-23-generic)
如果你不知道版本号 就只输入 sudo apt-get install linux-headers 然后会给出版本列表,安装即可!
step6: 进入examples/pktgen-2.9.17
输入make
step7: 进入examples/pktgen-2.9.17
打开doith.sh文件 在最后一行输入
./app/app/x86_64-native-linuxapp-gcc/pktgen -c 0x1f -n 3 -- -P -m "[1:3].0, [2:4].1"
(启动的位置必须和pktgen.lua文件在同一目录下,不然会报错!)
Copyright (c) <2010-2016>, Intel Corporation. All rights reserved.
Pktgen created by: Keith Wiles -- >>> Powered by Intel® DPDK <<<</div>
Lua 5.3.2 Copyright (C) 1994-2015 Lua.org, PUC-Rio
lua-shell: module 'Pktgen' not found:
no field package.preload['Pktgen']
no file '/usr/local/share/lua/5.3/Pktgen.lua'
no file '/usr/local/share/lua/5.3/Pktgen/init.lua'
no file '/usr/local/lib/lua/5.3/Pktgen.lua'
no file '/usr/local/lib/lua/5.3/Pktgen/init.lua'
no file './Pktgen.lua'
no file './Pktgen/init.lua'
no file '/usr/local/lib/lua/5.3/Pktgen.so'
no file '/usr/local/lib/lua/5.3/loadall.so'
no file './Pktgen.so'
stack traceback:
[C]: in function 'require'
pktgen: /home/dpdk/wenxingbeng/dpdk-16.04/examples/pktgen-2.9.17/app/lpktgenlib.c:3164: _lua_openlib: Assertion `dolibrary(L, "Pktgen") == 0' failed.
./doit.sh: 行 63: 4293 已放弃 (核心已转储) ./app/app/x86_64-native-linuxapp-gcc/pktgen -c 0x1f -n 3 -- -P -m "[1:3].0, [2:4].1"
step8: 运行pktgen
step9: 输入start0 开始发包
quit命令是退出
stop是停止发包。
更多内容详见官方技术文档:http://pktgen.readthedocs.org/en/latest/
附件:Pktgen在默认条件下的发包流程图概要
修改发包的内容方法
输入一下内容:
# seq dst-Mac src-Mac dst-IP src-IP/netmask sport dport ipv4|ipv6|vlan udp|tcp|icmp vid pktsize
seq 0 0 0000:4455:6677 0000:1234:5678 211.11.0.0 10.10.0.1/16 5 6 ipv4 udp 1 64
seq 1 0 0000:4455:6677 0000:1234:5678 211.11.0.1 10.10.0.1/16 5 6 ipv4 udp 1 128
seq 2 0 0000:4455:6677 0000:1234:5678 211.11.0.2 10.10.0.1/16 5 6 ipv4 udp 1 192
seq 3 0 0000:4455:6677 0000:1234:5678 211.11.0.3 10.10.0.1/16 5 6 ipv4 udp 1 256
seq 4 0 0000:4455:6677 0000:1234:5678 211.11.0.4 10.10.0.1/16 5 6 ipv4 udp 1 320
seq 0 1 0000:4455:6677 0000:1234:5678 211.11.1.0 10.10.0.1/16 5 6 ipv4 udp 1 64
seq 1 1 0000:4455:6677 0000:1234:5678 211.11.1.1 10.10.0.1/16 5 6 ipv4 udp 1 128
seq 2 1 0000:4455:6677 0000:1234:5678 211.11.1.2 10.10.0.1/16 5 6 ipv4 udp 1 192
seq 3 1 0000:4455:6677 0000:1234:5678 211.11.1.3 10.10.0.1/16 5 6 ipv4 udp 1 256
seq 4 1 0000:4455:6677 0000:1234:5678 211.11.1.4 10.10.0.1/16 5 6 ipv4 udp 1 320
set 0 seqCnt 5
set 1 seqCnt 5
每一个端口法五种类型的包
然后再启动脚本里 doit.sh文件里面 面修改
./app/app/x86_64-native-linuxapp-gcc/pktgen -c 0x1f -n 1 --proc-type auto --socket-mem 2048 --file-prefix pg -- -p 0x3 -P -m "[1:3].0, [2:4].1" -f test/set_seq_wxb.pkt