网卡PF多队列功能测试

测试目的

查询网卡支持的队列数及测试网卡的IPv4/IPv6 RSS功能。

预置条件

  1. 按组网方式1搭建测试环境。
  2. 服务器配置被测网卡和陪测服务器使用scapy进行发包。
  3. 对端处于LinkUp状态且已经配置了IPv4/IPv6地址。

测试步骤

  1. 查询网卡支持的队列数,有结果1。

    ethtool -l enp7s0f0

  2. 开启RSS功能,有结果2。

    例如:

    ethtool --config-ntuple rx-flow-hash tcp4 sdfn

    ethtool –-config-ntuple rx-flow-hash udp4 sdfn

  3. 执行下述命令,查看RSS队列信息。

    ethtool --show-rxfh-indir enp7s0f0

    陪测服务器使用scapy工具发送大量IPv4地址离散的数据报文,查看发送报文前后的收包统计,有结果3。

    ethtool -S enp7s0f0 |grep _packets

  4. 开启IPv6 RSS,发送大量IPv6测试报文,重复第3步骤,有结果4。
  5. 关闭RSS功能,重复第3、4步骤,有结果5。

    ethtool -K enp7s0f0 rxhash off

预期结果

  1. 记录网卡支持的最大队列数和当前队列数(Combined值)。
  2. 从cat /proc/interrupts查看到被测网卡m个RxTx中断向量,m=min(网卡本身最大队列数,lcpu),即m等于网卡本身最大队列数和环境上核个数的最小值。
  3. 统计显示收包负载被分摊到m个不同的Rx Queue上。
  4. 统计显示收包负载被分摊到m个不同的Rx Queue上。
  5. 统计显示收包负载均集中在一个Rx Queue上。

测试结果

-

备注

  1. ethtool -l XXX 查看网卡支持的队列数,XXX为网卡设备名称。
  2. ethtool -L XXX combined n 开启RSS,配置网卡队列数n。
  3. 队列数量是独立的,以每个网口为单位。
  4. 使用scapy命令发送离散IPv4报文。

    scapy p=Ether(dst="30:09:f9:20:4b:a4",src="30:09:f9:20:47:0a")/IP(src="200.0.0.10/24",dst="193.0.0.182")

    sendp(p, iface=”网口名”)

  5. 使用scapy命令发送离散IPv6报文。

    scapy

    p=Ether(dst="30:09:f9:20:4b:a4",src="30:09:f9:20:47:0a")/IPv6(src="fd00:1:1:2::11/120",dst="fd00:1:1:1::182")

    sendp(p, iface=”网口名”)

  6. 不是所有网卡都支持RSS关闭,若不支持可忽略结果5。