基于DPDK的网卡Testpmd单端口单队列自发自收转发性能测试

测试目的

使用DPDK自带Testpmd测试程序测试网卡单端口单队列自发自收下数据包转发性能。

预置条件

  1. 测试流量生成工具(Test Center)。
  2. 适配网卡的网卡驱动。
  3. 服务器已经安装Linux操作系统并安装对应网卡的DPDK testPMD应用,并优化BIOS配置。
  4. 按照测试组网3将测试仪与被测服务器网卡端口分别连接。
  5. 测试拓扑参考附录,组网3.1
  6. 操作系统下可进行调优设置,如修改内存巨页、设置CPU 节能选项、设置PCIe内核引导选项、设置内核iommu引导选项设置NUMA选项等。

测试步骤

  1. 编译testpmd测试用例。
  2. 启动运行testpmd测试程序。
  3. 测试模型采用:

    Traffic_Gen_Nic1->eth0-Test_Device-eth0->Traffic_Gen_Nic1

  4. 以单端口单队列模式运行Testpmd:,命令参考如下

    ./app/testpmd -l 0-1 -w d8:00.0 --socket-mem=2048,0 -- -i --rss-ip --nb-cores=1 --rxq=1 --txq=1 --rxd=1024 --txd=1024 --burst=64 --forward-mode=macswap -a

  5. 其中,-nb-cores=1 cpu指定转发核数为1个。内存分配给插槽为2G,具体转发核和内存位置可根据Numa节点配置;--rxq=1 --txq=1 网卡端口队列数为1。
  6. 用包发生器向被测试的设备端口注入流量,流量的包长为64B。包发生器发包的过程中逐包变化数据包的目的IP,构造不同的业务流量,通过测试仪表检测在丢包率设为0.001%情况下的网络吞吐,记录转发性能数据及平均时延。
  7. 使用流程生成设备向被测设备的端口注入流量,将数据包大小换为128B、256B、512B,1024,1280,1518,重复执行上述步骤,记录不同包长的性能数据。
  8. 分别在ARM服务器平台和x86服务器平台重复以上步骤进行测试。

预期结果

记录网卡单端口单队列情况下不同大小的数据包的时候转发性能数据。(丢包率及抖动指标需确认)

测试结果

-

备注

  1. 测试

    ./x86_64-native-linuxapp-gcc/app/testpmd -l 0-X -w X --socket-mem=X -- -i --rss-ip --nb-cores=X --rxq=X --txq=X --rxd=N --txd=N --burst=X --forward-mode=macswap -a”

  2. 参数解析:
    • -l 0-X 使用0到X这几个core, 其中testpmd会把其中第一个core做为master core, 不参与转发。
    • -n X 内存通道数为X。
    • -i 打开命令行交互模式。
    • -w 选择测试的网卡端口PCIe地址(也可以用---portmask=0xX)。
    • --nb-cores=X 参与转发的core为X个。
    • --rxq=X 每个port收包队列为X。
    • --txq=X 每个port发包队列为X。
    • --burst=X 批量收/发包的最大值为X。
    • --rxd=N 设置Rx描述符个数, 范围1<=N<=65535, 默认是128。
    • --txd=N 设置Tx描述符个数, 范围1<=N<=65535, 默认是512 -----forward-mode=macswap:MAC交换转发模式,在转发报文之前交换报文的 src MAC 地址和 dst MAC 地址。