文档: Documentation/networking/pktgen.txt
有人测试的例子: http://kerrigan.sinaapp.com/post-8.html
http://people.kth.se/~danieltt/pktgen/
基本使用
1. 编译pktgen模块
选中 config NET_PKTGEN
2. 安装pktgen模块
modprobe pktgen
cd /proc/net/pktgen/
3. 添加测试设备
echo rem_device_all > kpktgend_0
echo add_device eth0 > kpktgend_0
4. 设置测试参数
测试参数通过eth0的设备接口来配置。
echo count 10000 > eth0
echo clone_skb 1000 > eth0
echo pkt_size 1500 > eth0
echo dst 10.11.11.101 > eth0
echo dst_mac 00:21:cc:60:5f:c8 > eth0
5. 启动
echo start > pgctrl
进一步解释
当内核加载了pktgen模块后,有几个/proc文件比较重要。
/proc/net/pktgen/pgctrl
这个整个模块的控制接口,只接受三个命令
stop
start
reset
/proc/net/pktgen/kpktgend_%d
pktgen模块在每个cpu上都有一个内核线程,该文件就对应了相应的内核线程。
读取该文件,显示对应内核线程的状态。
写该文件,可以控制对应内核线程。只接受两个命令,其实就是添加/删除设备。
add_device
rem_device_all
/proc/net/pktgen/eth0
当执行了add_device命令后,会出现一个和设备名字一样的proc文件。
读取该文件,获得相应的设备测试结果。
写该文件,则可以控制测试的条件。
网络观察分析
sar -n DEV 2 10
每间隔两秒,显示一次状态,一共显示10次。
09:32:12 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
09:32:12 AM eth3 0.00 0.00 0.00 0.00 0.00 0.00 0.00
09:32:12 AM eth7 0.00 0.00 0.00 0.00 0.00 0.00 0.00
09:32:12 AM virbr1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
影响网速的因素
1. packet size
min_pkt_size 从58 调到 1000, 网速从67Mb/s 增加到了 96Mb/s。
网卡本身是100Mb/s的。