1、Testpmd测试程序
Testpmd是dpdk自带的一个例子程序,用来进行dpdk的包转发测试,同时也是编写dpdk应用程序的范例。使用:
sudo ./testpmd -l 0,1 -n 4 -- -i --nb-cores=1 --nb-ports=2
参数说明:
- “--”之前的参数为EAL参数;
- -l EAL的逻辑核(dpdk中类似于线程的概念)列表。0,1表示有两个逻辑核;
- -n EAL的内存通道数,一般为4;
- “--”之后的是testpmd程序本身的参数;
- -i 启用交互模式;
- --nb-cores 用于转发的逻辑核数目。注意testpmd本身需要一个逻辑核用于交互,所以这个参数的值应>0,≤总逻辑核数-1;
- --nb-ports 用于转发的网络接口。如果不指定则使用所有可用的接口;2表示用前两个接口。

首先用光纤将两个10G以太网接口直连。然后启动testpmd,进入交互模式,输入start tx_first,启动转发测试。

运行过程中可以随时输入show port stats all或者show port stats <port_id>查看相应端口的统计信息。

10Gbps以太网转发64bits以太网帧的理论线速为:10G/(64+8+12)/8=14.88M packets per second。但是不知为何,我用testpmd测试的时候只能达到线速的一半,请明白人指教。
2、安装pktgen-dpdk
pktgen-dpdk是一个网络测试工具pktgen的dpdk版本。官网在此:
pktgen-dpdk - Traffic generator powered by DPDK
http://git.dpdk.org/apps/pktgen-dpdk/下载解压代码,注意选择的版本应与dpdk的版本匹配,我用的是dpdk18.11.11+pktgen-dpdk19.11.0。编译步骤:
- 安装依赖项liblua和libpcap;
- 指定dpdk路径;
- make。
sudo apt install liblua5.3-dev
sudo apt install libpcap-dev
export RTE_SDK=<DPDKinstallDir>
export RTE_TARGET=x86_64-native-linux-gcc
make
编译完成后,生成的pktgen应用程序在<源代码目录>/app/x86_64-native-linux-gcc/中。
3、Pktgen和Testpmd收发测试
现在同时运行pktgen和testpmd来进行数据包收发测试。网卡连线与刚才一致,pktgen使用其中一个网口发送,testpmd在另外一个网口接收。
启动程序时可以设置EAL的白名单参数-w,dpdk程序将只使用-w指定的网络接口。为了使用多个网口,可以重复设置-w。
同时运行多个dpdk应用进程时还需要额外设置下面的EAL参数:
- --proc-type 指定一个dpdk进程是主进程还是副进程;
- --file-prefix 允许无关联的进程拥有不同的内存区域。
启动testpmd步骤:
- 进入testpmd交互模式;
sudo ./testpmd -l 0,1 -n 4 -w 02:00.0 --proc-type auto --file-prefix pg1 -- -i --nb-cores=1
- 输入set fwd rxonly设置转发模式为只接收;
- 输入start开始接收;
- 运行过程中输入set port stats 0查看统计信息。
启动pktgen步骤:
- 进入pktgen交互模式;
sudo ./pktgen -l 2,3 -n 4 -w 02:00.1 --proc-type auto --file-prefix pg2 -- -P -T -m 3.0
- 参数说明:-P 开启网卡混杂模式,-T 启用颜色输出 -m 3.0 指定逻辑核3使用接口0,详细用法参考pktgen --help;
- 进入交互模式后,输入start 0开启网口0发送。

可以看到这次测试结果接近线速14.88M pps。
pktgen还可以使用-s参数发送pcap格式的抓包文件,例如用网口0发送一个xxxx.pcap文件的参数为:-s 0:/home/xxxx.pcap。
pktgen默认全速发送,不遵循pcap文件中的时间戳。可以用set <port_id> rate <percentage> 命令设置发送速度,如set 0 rate 50即指定用50%线速在网口0发送数据。
本文介绍了DPDK应用中的Testpmd测试程序,包括启动参数、交互模式和性能测试。接着讲解了pktgen-dpdk的安装及使用,展示了如何进行收发测试,并通过调整发送速率实现接近线速的性能。
4970

被折叠的 条评论
为什么被折叠?



