DPDK应用(2)

本文介绍了DPDK应用中的Testpmd测试程序,包括启动参数、交互模式和性能测试。接着讲解了pktgen-dpdk的安装及使用,展示了如何进行收发测试,并通过调整发送速率实现接近线速的性能。

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

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 DPDKhttp://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发送数据。

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值