概念

TSO(TCP Segmentation Offload): 是一种利用网卡来对大数据包进行自动分段,降低CPU负载的技术。 其主要是延迟分段。通过硬件(网卡)实现。

GSO(Generic Segmentation Offload): GSO是协议栈是否推迟分段,在发送到网卡之前判断网卡是否支持TSO,如果网卡支持TSO则让网卡分段,否则协议栈分完段再交给驱动。 如果TSO开启,GSO会自动开启。 GSO通过软件来实现。

以下是TSO和GSO的组合关系:

  1、GSO开启, TSO开启: 协议栈推迟分段,并直接传递大数据包到网卡,让网卡自动分段
  2、GSO开启, TSO关闭: 协议栈推迟分段,在最后发送到网卡前才执行分段
  3、GSO关闭, TSO开启: 同GSO开启, TSO开启
  4、GSO关闭, TSO关闭: 不推迟分段,在tcp_sendmsg中直接发送MSS大小的数据包

目前,在linux-4.18之后UDP也开始GSO的支持,可参考此处 patch。

UFO(DDP Fragmentation Offload)是一种类似于IP分片的技术,拆包之后只有第一个分片有UDP头部。

参考

https://www.kernel.org/doc/Documentation/networking/segmentation-offloads.txt
http://blog.jobbole.com/111668/
https://www.mnstory.net/2017/07/10/network-tso-ufo-gso-lro-gro/

TSO与GSO简单区分相关推荐

  1. Path(1)vrep中的贝塞尔点、控制点的简单区分

    贝塞尔点和控制点的简单区分 The Bezier interpolation factors indicate where the Bezier curve section starts and en ...

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

    文章目录 以太网卡TSO.GSO.LRO.GRO描述及相关配置 硬件包拆分与合并 TSO(TCP Segmentation Offload ) UFO(UDP Fragmentation Offloa ...

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

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

  4. TSO、GSO介绍与实现

    转载自:http://www.bsdmap.com/2012/02/22/转tso.ufo.gso.lro.gro和rss介绍/ 转载自:http://blog.chinaunix.net/uid-2 ...

  5. 镜头C接口和CS接口的简单区分

    转自http://www.pooher.com/xinwen/hangye/2012-05-10/98.html 什么叫C/CS接口?     单词"C"的来历是"cin ...

  6. IPv6的TSO/GRO/GSO及其Linux实现的不妥

    很明确的一件事是,IPv6不允许中间设备对报文分片.具体为什么这么设计,就是为了简单高效.因此,IPv6报头简洁了不少. 但TSO貌似并未违背取消IPv6分片的初衷,硬件把一些都处理的妥妥的,在路由软 ...

  7. SmartNIC/DPU — TSO、GSO、LRO、GRO 卸载技术

    目录 文章目录 目录 网络功能卸载 TSO(TCP Segmentation Offload) GSO(Generic Segmentation Offload) LRO(Large Receive ...

  8. Linux 内核协议栈的 TSO、GSO

    Linux 内核的 TSO 会在真正将skb发送到网卡前做GSO的检查: 对于真实硬件设备,是在sch_direct_xmit中调用validate_xmit_skb_list检查 对于虚拟设备,则是 ...

  9. 网络offload之TSO、GSO、LRO、GRO

    网络offload技术主要是针对网络数据包的分片和合并而进行优化和处理的技术,也可以在网卡实现offload技术. 1. TSO(TCP Segmentation Offload): 是一种利用网卡对 ...

最新文章

  1. 大数据催生决策新模式 未来将改变更多
  2. Python 逻辑运算符
  3. 监理公司的核心竞争力
  4. 1分钟 Zookeeper 快速入门_windows环境
  5. pytorch中CrossEntropyLoss和NLLLoss的区别与联系
  6. 迈向人工通用智能与混合天玑芯片架构
  7. Ta 在假笑么?这个识别算法可以鉴定
  8. J2EE的13种核心技术简介
  9. Python数据可视化的四种简易方法
  10. MySQL 5.5 到MySQL 5.6半同步复制(SSL)
  11. DataTables之TableTools插件
  12. 信号处理第一式——离散信号序列的基本运算及MATLAB实现
  13. Scrapy创建项目报错Scrapy – no active project,Unknown command解决办法
  14. 【基础入门题048】骰子游戏(一)
  15. 贝叶斯因果网络_因果关系和贝叶斯网络
  16. 1.CDC绘图。包括加载图片,消去图片,设置图片一部分透明,不闪烁方式。
  17. 用PDFPrint进行PDF文件的批量打印
  18. (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  19. python语言中有哪些函数_Python语言中的函数
  20. ajax post提交多个参数后台controller @RequestParam方式接收

热门文章

  1. 最新:深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)周志明
  2. JS操作表格样式汇总
  3. badboy录制时弹框提示“当前页面的脚本发生错误”
  4. Arduino PID Autotune Library
  5. D. Death by Thousand Cuts(立体几何)
  6. ubuntu_PL2303
  7. note同步不及时 one_成功解决onenote 与windowsmobile无法正常同步问题
  8. 借索爱XPERIA X1的Panel Interface说说Touch
  9. Jfinal项目提供接口
  10. CF #505 B Weakened Common Divisor