基于DPDK的网卡三层双端口自发自收转发性能

测试目的

使用DPDK自带L3fwd测试程序测试网卡双端口自发自收场景下数据包三层转发性能。

预置条件

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

    Modified /l3fwd/main.c:85:

    #define RTE_TEST_RX_DESC_DEFAULT 2048

    #define RTE_TEST_TX_DESC_DEFAULT 2048

    Modified /l3fwd/l3fwd.h:47:

    #define MAX_PKT_BURST 64

    注:描述符大小与网卡的cache有关,各网卡值可不相同。

测试步骤

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

    Traffic_Gen_Nic1->eth0-Test_Device-eth0->Traffic_Gen_Nic1

    Traffic_Gen_Nic2->eth1-Test_Device-eth1->Traffic_Gen_Nic2

  4. 以双端口模式运行L3fwd:

    ./build/l3fwd -l 1,2,3,4,5,6,7,8 -n 4 -- -P -q 4 -p 0x3 --config=”(0,0,1),(0,1,2),(0,2,3),(0,3,4),(1,0,5),(1,1,6),(1,2,7),(1,3,8)”

    其中 -p 0x3 表示使用绑定网口中的第一、二个口进行测试;

    -l lcore 指程序要用到的内核,之间用逗号隔开;

    -n NUM:十进制整数表示内存通道数量;

    -q 为每个端口开启的队列数;

    --config 配置端口及端口队列绑定对应的Cpu core;

    -l指定内核自行设置、-n 内存通道数可自行设置、--config可自行配置端口绑定CPU核、-q队列数自行可设

  5. 用包发生器指定对应端口的IP地址向被测试的设备端口注入流量,流量的包长为64B。包发生器发包的过程中逐包变化数据包的目的IP,构造不同的业务流量,通过测试仪表检测在丢包率设为0.001%情况下的网络吞吐,记录转发性能数据及平均时延。
  6. 使用流程生成设备向被测设备的端口注入流量,将数据包大小换为128B、256B、512B,1024,1280,1518,重复执行上述步骤,设置CPU核数使被测设备直至取达到线速(或无法超越的某带宽最大值)的结果。
  7. 分别在ARM服务器平台和x86服务器平台重复以上步骤进行测试。

预期结果

  1. 记录网卡双端口双流情况下不同大小的数据包的时候转发性能数据。(丢包率及抖动指标需确认)
  2. 记录预期结果所使用的CPU核数。

测试结果

-

备注

  • 测试./l3fwd -c 0xX –n X -- -q X -p 0xX –config=”(X,X,X),(X,X,X)”。
  • 参数解析:
    • L3fwd [EAL options] -- -p --config(a,b,c)
    • EAL options:
    • DPDK EAL的默认参数,必须参数为-c COREMASK -n NUM。
    • COREMASK:一个十六进制位掩码表示分配的逻辑内核数量。
    • NUM:一个十进制整数表示内存通道数量。
    • --: EAL命令行参数和程序运行参数分隔符
    • -q:为每端口配置的队列数
    • -p PORTMASK
    • PORTMASK:一个十六进制位掩码表示分配的端口数量。
    • -P 参数:(可选参数),开启混杂模式,开启后发任意目的mac地址包都能收到,不开启则端口只能收到目的mac地址为本端口mac地址的包。
    • --config 配置端口及端口队列绑定对应的Cpu core
    • 其中:a: 端口号,b:端口队列号, c:cpu core number