这一步之前,DPDK环境已塔好,pktgen已编译成功,网卡已绑定成功等一系列初始化工作已完成。
命令行参数:-P 和 -m 这两个参数是必要的!
./app/build/pktgen [EAL options] -- \
[-h] [-P] [-G] [-T] [-f cmd_file] \
[-l log_file] [-s P:PCAP_file] [-m ]
-s P: file PCAP packet stream file, 'P' is the port number -f filename Command file (.pkt) to execute or a Lua script (.lua) file
-l filename Write log to filename 写日志
-P Enable PROMISCUOUS mode on all ports 开启混杂模式,必须要的参数
-g address Optional IP address and port number default is (localhost:0x5606)
If -g is used that enable socket support as a server application
-G Enable socket support using default server values localhost:0x5606
-N Enable NUMA support
-T Enable the color output 输出颜色
--crc-strip Strip CRC on all ports
-h Display the help information
参数中,最复杂的是 -m <string>
-m <string> 配置端口到逻辑核的映射关系,使用类似BNF类语法.映射的逻辑核要与 [EAL options]中的逻辑核要一致。
如下,也可以用 {} 来代替 [].
[EAL options]里的参数与DPDK基本一样,主要是配置逻辑核掩码和内存通道数。这里不详解。以上是命令行参数,下面介绍运行时参数。
详细可参考官网中的资料:pktgen运行时参数
Pktgen:/> help #有帮助提示
这里只介绍最常用的命令,最常用的配置就是MAC,IPv4|IPv6|ARP,TCP|UDP|ICMP,SPORT|DPORT,PROTO,SEQ等
这些配置可以用 set命令来完成。
除了set命令,常用的还有显示主页面,page 0 | page main
加载和保存 .lua脚本的配置信息 load | save <path-to-file>
启动/结束发包:start | stop <portlist>.
其实不用刻意去记命令怎么使用,按两次Tab键会有命令使用的提示。我现在用的是版本是3.1.2,最新版已到了3.5.0,所以一些配置命令会有些不一样,比如配置ip时,<portlist>的顺序就不一样。以上配置是基于最新版来的,如果在实际中发现按上面的命令不对,请先确认是否为最新版.其实只要大致记住一些命令就行,实际使用时可以按两次Tab键就会有提示,也可以把配置保存成.lua文件,下一次运行时候,直接加载就不用再配置了。由于对lua脚本不太熟,关于lua脚本的使用,等使用熟悉了再来深入讨论一些功能。最后,放一张运行时候的图来压压惊。。。
运行命令:./app/app/x86_64-native-linuxapp-gcc/pktgen -l 1-4 -n 4 -- -P -T -m "[1:2].0,[3:4].1"
祝大家生活愉快。