网卡LRO功能测试

测试目的

测试IPv4场景下网卡支持TCP的LRO功能。

预置条件

  1. 按组网方式1搭建测试环境。
  2. 关闭网卡GRO卸载功能:

    ethtool -K <ifname> gro off

测试步骤

  1. 在被测服务器上,开启待测网卡的LRO功能:

    ethtool -K <ifname> lro on

  2. 使用iperf工具从陪测服务器向本端发包,数据长度要求大于MSS值(例如:10000字节):

    本端收包:iperf -s

    对端发包:iperf -c 本端地址 -n 10000

    提前在本端进行抓包,有结果1

    tcpdump -enn -i enp7s0f0 –s0 -w 文件名.pcap

  3. 本端关闭LRO功能,重复步骤2,有结果2。
  4. ethtool -K <ifname> lro off。

预期结果

  1. iperf执行成功,且本端抓取到的下行TCP报文进行了聚合。
  2. iperf执行成功,且本端抓取到的下行TCP报文没有进行聚合。

测试结果

-

备注

  1. MSS是传输层TCP协议范畴内的概念,为标识TCP能够承载的最大的应用数据段长度,MSS=MTU-20字节TCP报头-20字节IP报头。
  2. 网卡LRO功能实现中支持IPv4 IPv6都可以 的 TCP 协议。
  3. 聚合:在内核上有一块缓存,隔一段时钟时间,汇总一条流的报文发给上层,所以会有一些头部字段的PSH报文1500字节的会直接发,不聚合。
  4. 虚拟化所需要的桥接功能开启LRO可能无法使用,所以测试时需将ip_forward设置为0:echo 0 > /proc/sys/net/ipv4/ip_forward。
  5. GRO(Generic Receive Offload)属于LRO的升级,若网卡支持则优先测试GRO,LRO可选。