Offload与TCP拥塞算法冲突问题

165 views
Skip to first unread message

Gao Feng

unread,
Aug 11, 2016, 9:07:13 PM8/11/16
to 《linux环境编程》讨论组
昨天看了一篇文章,是微博上的林沛满写的一篇文章,链接为http://weibo.com/ttarticle/p/show?id=2309404003654557427834

文中的重点是网卡的LRO导致接收端的ACK延时,从而使发送端的TCP的vegas算法,认为网络情况不佳,因而降低了发送速率。我对此产生的疑问是GRO和TSO,都是在数据包前做的offload,将多个数据包汇集成一个报文,同样会有延时。因此,我针对这个问题,与作者在微博上简单讨论了几句。作者的经验是GRO和TSO都没有问题,但没有明显的证据说明。

后面自己多看了一些东西。GRO和TSO确实不应该出问题,因为LRO是硬件实现,没有考虑到协议栈部分,包括一些协议的标志位。而软件是实现的GRO和TSO不一样,其实现比LRO要健壮的多。以GRO为例,甚至为上层协议栈开了接口,可以由上层协议栈判断是否结束GRO。

虽然目前我还没有阅读相关代码。但从GRO的实现上,基本上可以分析,在林文中的环境下,如果是GRO,TCP协议栈会及时结束GRO,及时发送ack,从而避免文中的问题。

张杨

unread,
Aug 16, 2016, 11:30:52 PM8/16/16
to 《linux环境编程》讨论组

最近刚好遇到个有关的问题。
有的网卡的gro tso都能关掉。
lro关不掉是什么原因?而且ethtool显示会有一个fixed标志。

[root@centos6 ~]# ethtool -k igb0
Features for igb0:
rx-checksumming: on
tx-checksumming: off
    tx-checksum-ipv4: off
    tx-checksum-unneeded: off
    tx-checksum-ip-generic: off
    tx-checksum-ipv6: off
    tx-checksum-fcoe-crc: off [fixed]
    tx-checksum-sctp: off [fixed]
scatter-gather: off
    tx-scatter-gather: off
    tx-scatter-gather-fraglist: off [fixed]
tcp-segmentation-offload: off
    tx-tcp-segmentation: off
    tx-tcp-ecn-segmentation: off
    tx-tcp6-segmentation: off
udp-fragmentation-offload: off [fixed]
generic-segmentation-offload: off
generic-receive-offload: off
large-receive-offload: off [fixed]

[root@centos6 ~]# ethtool -K igb0 lro off
Cannot change large-receive-offload



在 2016年8月12日星期五 UTC+8上午9:07:13,Gao Feng写道:

Gao Feng

unread,
Aug 17, 2016, 9:44:26 AM8/17/16
to 《linux环境编程》讨论组

ethtool是由网卡驱动提供的。关不掉,是该网卡驱动不支持。

BTW,ethtool提供的功能有很多,但网卡驱动是选择性支持。
Reply all
Reply to author
Forward
0 new messages