网卡Tx Checksum卸载功能测试

测试目的

测试IPv4/IPv6场景下网卡对于TCP和UDP协议的Checksum offload功能。

预置条件

按组网方式1搭建测试环境。

测试步骤

  1. 被测网卡开启tx checksum offload,并关闭TSO。

    ethtool -K <ifname> tx on

    ethtool -K <ifname> tso off

  2. 陪测网卡关闭tx checksum offload、LRO及GRO。

    ethtool -K <ifname> tx off

    ethtool -K <ifname> lro off

    ethtool -K <ifname> gro off

    收发两端都开启抓包功能:

    tcpdump -e -i <Tester_ifname> -s0 -w <Tester_ifname_tx_checksum_test>.pcap

    tcpdump -e -i <DUT_ifname> -s0 -w <DUT_ifname_tx_checksum_test>.pcap

  3. 收发两端配置IPv4地址,建立TCP(UDP)连接,使用netcat工具向对端发送指定文件的IPv4报文。

    参考命令:

    tcp ipv4(ipv6)报文:nc (-6) <Tester_IP> 9999(tcp/udp建立连接的端口号)

    udp ipv4报文:nc (-6) -u <Tester_IP> 9999

  4. 查看本端和对端的抓包结果,有结果1。
  5. 本端关闭tx checksum offload,重复步骤2-3,检查IP层和4层TCP checksum是否由OS协议栈生成,有结果2。
  6. 使用IPv6地址,重复步骤3-5,有结果1、2。

预期结果

  1. 被测网卡端抓取到的发送方TCP报文的checksum为错误值;陪测网卡端抓取到的接收方TCP报文的checksum为正确值;验证是由网卡生成checksum。
  2. 被测网卡端抓取到的发送方UDP报文的checksum为错误值;陪测网卡端抓取到接收方UDP报文的checksum为正确值。验证是由OS协议栈生成checksum。

测试结果

-

备注

iperf 测试udp ipv6情况下由于只能发大包,会分片,无法调用checksum offload。所以改用netcat工具,ipv6包会超很多。