# cd
# exporthttps_proxy=https://proxy.austin.hp.com:8080
# gitclone https://github.com/pktgen/Pktgen-DPDK.git
Ubuntu14.04,pktgen2.7.7 ,DPDK1.7.1
注:Pktgen-DPDK/dpdk/example目录中包含有pktgen源码
1. 设置运行时环境
# sudo apt-get install libpcap-dev
# export RTE_SDK=/Pktgen-DPDK/dpdk
# export RTE_TARGET=x86_64-pktgen-linuxapp-gcc
2. 编译安装
# cd $RTE_SDK
# ./tools/setup.sh
选择安装
x86_64-pktgen-linuxapp-gcc
,然后配置
hugepagemappings for non-NUMA systems
。安装成功后在
dpdk
目录下会出现
x86_64-pktgen-linuxapp-gcc
文件夹。
1. 编译安装
构建pktgen时确保RTE_SDK、RTE_TARGET两个环境变量的值(同dpdk配置)存在有效。
# cd examples/pktgen
# make
2. 配置脚本
在pktgen目录下,setup.sh和doit.sh两个脚本文件需要根据自身系统来配置。
# lspci | grep Ethernet //
查看以太网端口信息
# name=`uname -n` //
获取主机名
setup.sh脚本主要用来a.检查环境变量和hugepages的设置; b.加载uio、igb_uio和rte_kni三个模块;c.绑定绑定网卡。在环境变量设置正确的情况下b会正确执行。需要手动配置的是c,绑定网卡。如node3上的配置:
name=`uname -n`
if [ $name == "node3" ]; then
$sdk/tools/dpdk_nic_bind.py -b igb_uio 01:00.0 06:00.0
fi
doit.sh脚本是设置pktgen运行参数并启动
name=`uname -n`
if [ $name == "node3" ]; then
./app/build/pktgen -c f -n 3 --proc-type auto --socket-mem 256,256 --file-prefix pg -b 0000:00:19.0 -- -T -P -m "[1:3].0, [2:4].1" -f test/set_seq.lua
fi
注:
-c 是指选择的core的掩码,f等于1111也就是选择 1 、 2 、3 core;
--proc-type 选择的auto ,如果是当前系统第一执行的dpdk相关的程序,选择primary模式,如果是第二是secondary 模式;
--file-prefix pg 设置/mnt/huge/内存分配模块的文件名前缀;
-p 0x14 0x14等于 00010100 , 选择你当前系统的其中2块intel相关网卡端口;
-P 使能网络混装模式,
-m "2.0, 3.1" 是指一个矩阵模型,2.0是指,在2号lcore上绑定的端口0 , 3.1是指在lcore3上绑定端口1
-f test/set_seq.lua 导入pktgen的执行配置文件;在执行pktgen时,利用配置产生数据包;
安装指导:https://github.com/Pktgen/Pktgen-DPDK/
+-----------+ +-----------+
|node0 | | node3 |
| eth1 +--------+ eth2 |
| | | |
| | | |
+-----------+ +-----------+
Eth1与Eth2网线直连,node0和node3编译安装dpdk和pktgen。在dpdk/example/pktgen/目录下先后执行setup.sh和doIt.sh.
Pktgen参数选择及运行时命令文档:http://pktgen.readthedocs.org/en/latest/commands.html
执行./setup.sh输出如下:
执行./doit.sh输出如下
在node3一端执行
Pktgen>start 0 //
端口
0
开始发包
通过当前窗口可以监控发包状态
Node0一端可以查看端口2的收包状态