You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux系统中tcp-segmentation-offload(TSO)的工作机制是怎样的?

TCP分段卸载(TSO)工作原理详解

TCP分段卸载(tcp-segmentation-offload,简称TSO)是网卡硬件卸载特性的一种,核心作用是把原本需要内核TCP协议栈完成的数据包分段工作转移到网卡硬件执行,从而降低CPU负载、提升大流量场景下的网络吞吐量。

核心工作逻辑(解决路由前无法判断网卡支持性的问题)

  • 应用层提交TCP发送数据时,内核协议栈不会提前做分段,而是先构造最大可达64KB甚至更大的socket buffer(简称skb),远大于常规1500字节的MTU值,此时只会给skb打上SKB_GSO_TCPV4/SKB_GSO_TCPV6的通用分段卸载(GSO)标记,不会直接调用硬件TSO能力。
  • 路由判决完成、确定最终出站的网络接口后,内核才会检查该网卡的TSO支持位:
    • 若网卡已开启TSO支持,内核直接将带GSO标记的超大skb传递给网卡驱动,由硬件自动完成分段、每段TCP校验和计算、IP头+TCP头封装,最终将符合MTU的标准帧发送到链路
    • 若网卡不支持TSO,内核会在软件层执行GSO分段,把超大skb拆成符合MTU的小包后再传给网卡发送
  • 这种先打GSO标记、路由后再判断是否启用硬件TSO的设计,正好解决了路由判决前无法感知网卡TSO能力的问题。

TSO的性能收益

  • 大幅降低内核CPU占用:原本需要CPU处理数十次小包的头封装、校验和计算,现在仅需要处理1次超大包,剩余计算全部由网卡硬件完成
  • 提升PCIe总线传输效率:减少了内核和网卡之间的小包交互次数,总线带宽利用率更高
  • 10G及以上速率的网卡,开启TSO通常能带来20%以上的吞吐量提升

常用操作命令

查看网卡TSO开启状态:

ethtool -k <网卡名> | grep tcp-segmentation-offload

手动开启网卡TSO:

ethtool -K <网卡名> tso on

手动关闭网卡TSO:

ethtool -K <网卡名> tso off

注意事项

  • TSO仅对TCP出站流量生效,入站方向对应的同类特性是LRO(大接收卸载)
  • 虚拟化场景下,需要宿主机物理网卡和虚拟机虚拟网卡同时开启TSO,才能真正生效
  • 部分老旧网卡的驱动存在TSO兼容性问题,开启后可能出现丢包、校验错误等异常,遇到此类问题可临时关闭TSO排查

内容的提问来源于stack exchange,提问作者Mr Pang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 07:12:03