文章目录

  • 以太网卡TSO、GSO、LRO、GRO描述及相关配置
    • 硬件包拆分与合并
      • TSO(TCP Segmentation Offload )
      • UFO(UDP Fragmentation Offload )
      • LRO(Large Receive Offload )
    • 软件包拆分与合并
      • GSO(Generic Segmentation Offload)
      • GRO(Generic Receive Offload)GRO (Generic Receive Offload)
    • Bluefiled2网卡配置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 功能,则将分片的执行,延缓到了将数据推送到网卡的前一刻执行。

TSO GSO 分片阶段
off on GSO、网卡驱动阶段
on on TSO、网卡硬件阶段

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

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

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

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

LRO GRO 阶段
off off TCP阶段
on off 网卡硬件阶段
off on 网卡驱动阶段

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的描述

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

  1. 网络协议栈TSO/UFO/GSO/LRO/GRO/RSS特性

    作者 QQ群:852283276 微信:arm80x86 微信公众号:青儿创客基地 B站:主页 https://space.bilibili.com/208826118 参考 网卡多队列技术与RSS功 ...

  2. 【百度分享】以太网卡TSO技术浅析

    TSO(TCP Segment Offload)技术是一种利用网卡的少量处理能力,降低CPU发送数据包负载的技术,需要网卡硬件及驱动的支持. 在不支持TSO的网卡上,TCP层向IP层发送数据会考虑ms ...

  3. TCP TSO/GSO初步探索

    参考:https://blog.csdn.net/quqi99/article/details/51066800            https://www.ibm.com/developerwor ...

  4. linux 网卡gso,linux内核网络协议栈学习笔记:关于GRO/GSO/LRO/TSO等patch的分析和测试...

    TSO,全称是TCP Segmentation Offload,我们知道通常以太网的MTU是1500,除去TCP/IP的包头,TCP的MSS (Max Segment Size)大小是1460,通常情 ...

  5. TSO/GSO GRO/LRO 从入门到精通

    目录 概念介绍 功能与用途 使用场景 在协议栈各个层次如何实现 参考资料 一.概念介绍: TSO/GSO TSO 是(TCP segmentation offload )的缩写,主要把TCP分段这个o ...

  6. 2.2.8 SEA Shared Ethernet Adapter共享以太网卡

    最后更新2021/07/10 SEA是IBM小型机虚拟化技术中的一个概念(元素),但IBM并没有很清晰地定义SEA.实际上,从SEA直接的定义来分析,有很多种类型的SEA!按照字面意义理解SEA--共 ...

  7. Linux以太网卡架构解析-MAC层和PHY层

    引子 最近,在调试基于Freescale IMX6UL板子的以太网口时,遇到了一个奇怪的问题:网口插拔时,系统检测不到Link Down.Link UP事件.并且,在使用ifconfig eth0 u ...

  8. linux网卡发送数据包流程,linux内核Ethernet以太网卡驱动收发数据过程

    linux内核Ethernet以太网卡驱动收发数据过程 linux内核Ethernet以太网卡驱动收发数据过程 下图简单描述了网卡驱动与Linux内核之间的联系: 关于上图的一些说明: 系统初始化: ...

  9. 基于嵌入式Linux的千兆以太网卡驱动程序设计及测试

    基于嵌入式Linux的千兆以太网卡驱动程序设计及测试 一. 引言 千兆以太网是一种具有高带宽和高响应的新网络技术,相关协议遵循IEEE 802.3规范标准.采用和10M以太网相似的帧格式.网络协议和布 ...

最新文章

  1. mybatis foreach map_Spring Boot(五):春眠不觉晓,Mybatis知多少
  2. JS获取URL中参数值(QueryString)的4种方法分享
  3. python 搭建系统监控
  4. 使用流光法实现物体跟踪
  5. VTK:PolyData之MiscCellData
  6. xshell连接Linux Server
  7. .net core image怎么保存_轻量级Vue图片上传插件——Vue-core-image-Upload
  8. linux生成ssl证书给haproxy,如何为多个SSL证书配置HAProxy
  9. abp vnext token失效时间设置
  10. 手机APP身份证识别
  11. Button按钮及其点击事件方式
  12. 你不知道的“虚假需求”
  13. 机器视觉学习笔记(7)——基于OpenCV的双目摄像机标定
  14. 内网集群 无法通信_IPSEC连接成功,内网之间却无法互相通信。
  15. 硕士学位答辩PPT制作技巧
  16. Web前端相关面试题
  17. 安装 AWS Load Balancer Controller 附加组件
  18. 烘焙门店 | 解锁公众号精准引流5W+的流量密码
  19. Clickhouse 生成日历表
  20. Linux命令 - gunzip命令

热门文章

  1. Problem C: 四阶多项式
  2. 计算机教师 师德演讲,关于师德师风演讲稿(精选11篇)
  3. Linux常用文本编辑器,及文本查看摘选的常用命令
  4. python编程可以用来干嘛-入门学习python可以用来做什么?
  5. PHP isset()与empty()
  6. Mysql密码修改方式
  7. cy7c68013 usb 开发经验
  8. 如何理解实践标准是确定性和不确定性的统一
  9. 少儿机器人编程会学什么
  10. 二项分布均值和方差的推导