以太网卡TSO、GSO、LRO、GRO描述及相关配置

以太网卡TSO、GSO、LRO、GRO描述及相关配置

以太网卡的 TSO、GSO、LRO、GRO 是一些传输协议中用于提高网络性能的技术。

硬件包拆分与合并

TSO(TCP Segmentation Offload )

TSO 是一种由网卡卸载 TCP 数据包分段的技术。在传统的方式中,当 TCP 数据包超过网卡 MTU(最大传输单元)时,操作系统需要将这些数据包分成多个小包进行传输,这会增加 CPU 的负担。而使用 TSO 技术,网卡可以将大的 TCP 数据包分成多个小的数据包,而不需要 CPU 的介入。这可以提高网络性能并减少 CPU 的负担。

TSO针对TCP在发送端网卡上的拆包。

UFO(UDP Fragmentation Offload )

已弃用UFO segmentation-offloads

在这里插入图片描述

UFO针对UDP在发送端网卡上的拆包。

LRO(Large Receive Offload )

LRO 是一种由网卡卸载数据包重组的技术。在传统的方式中,当网络接收到多个小的数据包时,操作系统需要对这些小的数据包进行重组,这会增加 CPU 的负担。而使用 LRO 技术,网卡可以将多个小的数据包重组成一个大的数据包,而不需要 CPU 的介入。这可以提高网络性能并减少 CPU 的负担。
LRO针对TCP在接收端网卡的组包。

TSO、UFO、LRO基于网卡特性,可在网卡上进行包的合并与拆分,减轻CPU的负荷。

软件包拆分与合并

GSO(Generic Segmentation Offload)

GSO 是一种类似于 TSO 的技术,但是不仅限于 TCP 协议,也适用于其他协议,如 UDP。与 TSO 不同的是,GSO 通过将多个小的数据包组合成一个大的数据包来减少网络流量的开销。这样做有助于减少 CPU 的负担,并提高网络性能。

软件实现包拆分,若网卡不支持分片、重组offload能力(如TSO、UFO、LRO)的情况下,GSO推迟数据分片直至数据发送到网卡驱动之前进行分片后再发往网卡。

拆包过程:首先查询网卡是否支持 TSO 功能,如果硬件支持 TSO 则使用网卡的硬件分片能力执行分片;如果网卡不支持 TSO 功能,则将分片的执行,延缓到了将数据推送到网卡的前一刻执行。

TSOGSO分片阶段
offonGSO、网卡驱动阶段
ononTSO、网卡硬件阶段

GRO(Generic Receive Offload)GRO (Generic Receive Offload)

GRO 是一种类似于 LRO 的技术,但是不仅限于 TCP 协议,也适用于其他协议,如 UDP。与 LRO 不同的是,GRO 可以在协议层面上进行数据包重组,而不需要在网络层面重组数据包。这可以提高网络性能并减少 CPU 的负担。

软件实现包合并,GRO将大量的小报文合并为少量的大报文,再将合并后的大报文提交给OS协议栈处理。

同时GSO、GRO不仅支持TCP和UDP包,还可支持vxlan和gre。

LROGRO阶段
offoffTCP阶段
onoff网卡硬件阶段
offon网卡驱动阶段

Bluefiled2网卡配置TSO、GSO、LRO、GRO

安装ethtool工具

sudo apt install ethtool

查询TSO

sudo ethtool -k eth<x>

eg

sudo ethtool -k enps4f0np0

设置TSO

sudo ethtool -K eth<x> [rx on|off] [tx on|off] [sg on|off] [tso on|off] [lro on|off]

eg

sudo ethtool -K enps4f0np0 tso on

注意:ethtool命令的相关配置不可持续,在计算机下电后会被清除;

参考

Ethernet Driver Usage and Configuration - MLNX_EN v5.8-1.0.1.1 LTS - NVIDIA Networking Docs 迈络思网卡配置手册。

关于网卡特性TSO、UFO、GSO、LRO、GRO_51CTO博客_网卡的特性

网卡TSO、UFO、GSO、LRO、GRO和RSS介绍_小雨的网络文档的技术博客_51CTO博客

SmartNIC — TSO、GSO、LRO、GRO 技术_范桂飓的博客-CSDN博客

TSO和GSO_测试里的小虾米的技术博客_51CTO博客

TSO、UFO、GSO、LRO、GRO和RSS介绍-飞鸿无痕-ChinaUnix博客

网络虚拟化中的 offload 技术:LSO/LRO、GSO/GRO、TSO/UFO、VXLAN_yeasy的博客-CSDN博客

https://www.kernel.org/doc/Documentation/networking/segmentation-offloads.txt Linux内核offload的描述

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值