网卡VXLAN无状态卸载功能测试

测试目的

测试网卡Vxlan场景下,可让TSO和checksum卸载等功能扩展到隧道内payload。

预置条件

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

测试步骤

  1. 在本端和对端配置VXLAN隧道,以本端为例:

    ip link add vxlan0 type vxlan id 42 group 239.1.1.1 dev 网口名 dstport 4789

    在新生成的vxlan0端口上配置IPv4/IPv6地址。执行ping操作检查VLAN连通性,有结果1。

  2. 本端开启TX 方向 CheckSum Offload和内层TSO:

    ethtool -K <ifname> tx on

    ethtool -K <ifname> tx-udp_tnl(vxlan id)-csum-segmentation on

    以及内层TSO offload:

    ethtool -K <ifname> tx-udp_tnl-segmentation on

  3. 对端关闭lro gro,两端开启抓包:

    ethtool -K <ifname> lro off

    ethtool -K <ifname> gro off

  4. 使用iperf向对端发送TCP(IPv4)报文:

    iperf -s(对端)

    iperf -c 200.0.0.183 -n 1(本端)

    有结果2。

  5. 关闭本端TX 方向 CheckSum Offload:

    ethtool -K XXX tx off

    ethtool -K xxx tx-udp_tnl-csum-segmentation off

    以及内层TSO分段offload:

    ethtool -K XXX tx-udp_tnl-segmentation off,

    对端关闭lro gro

    重复步骤3操作,有结果3。

预期结果

  1. 本端和对端通过vxlan,IPv4/IPv6均可以ping通。
  2. 本端抓取到的发送的TCP报文的checksum为错误值;对端抓取到接收到的TCP报文的checksum为正确值,本端抓到的报文包括大于MTU的大包。
  3. 本端和对端抓取到的发送的TCP报文的checksum均为正确值及,抓到的TCP报文都不大于MTU。

测试结果

-

备注

  1. 配置VXLAN:以本端为例:

    ip link add vxlan0 type vxlan id 42 group 239.1.1.1 dev XXX dstport 4789

  2. 打开tx-udp_tnl-segmentation,操作系统自己会识别封装成VxLAN的UDP数据是一个tunnel数据,并且操作系统会直接把这一大段VxLAN数据丢给网卡去处理。