TCP TSO/GSO初步探索

本文深入探讨TCP TSO(TCP Segmentation Offload)和GSO(Generic Segmentation Offload),解释它们如何减少CPU资源消耗,改善网络性能。内容涵盖TSO/GSO的工作原理,如何在IP层和网卡层面处理数据分片,以及开启TSO/GSO对TCP/UDP数据传输的影响。同时,文章指出小报文发送时可能存在的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:https://blog.youkuaiyun.com/quqi99/article/details/51066800
           https://www.ibm.com/developerworks/cn/linux/l-cn-network-pt/  重点介绍和分析

TCP TSO/GSO:
1、数据payload+TCP header(20 bytes)到达IP层后,加上IP层的20字节header
2、此时协议栈在IP层会将该数据包的总大小和MTU值进行比较,大于MTU,则会进行分包,协议栈IP层的分片和组装消耗的是CPU的资源
3、如果开启了GSO/TSO属性,则协议栈在IP层不对数据包的总大小进行检查
4、TSO开启,则数据包直接透传到网卡,在网卡上根据MTU进行分片
5、TSO开启的前提下,GSO会默认开启,GSO不仅仅支持TCP,也支持UDP,TSO仅支持TCP
6、若TSO未开启,GSO开启,数据包在协议栈会推迟分包,在最后发送到网卡前才执行分段

延迟分段会减少发送路径上的数据拷贝操作,所以即使网络设备不支持TSO,只要能够延迟分段也是有收益的


参考:https://blog.youkuaiyun.com/maxlovezyy/article/details/77824679
           https://blog.youkuaiyun.com/hanpingxue/article/details/38415235
           https://blog.youkuaiyun.com/substitute_coder/article/details/53909516


一条TCP发送数据流:
1、应用层在user space打开一个fd,并将user space的buffer数据发送至内核IP协议栈
2、内核IP协议栈检测该fd有效性后,会绑定一个socket到该 fd,同时会绑定一个TCB(TCP co

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值