内核网络协议栈offload功能盘点

TSO
TCP Segmentation Offload的缩写,只针对TCP包发送,超过 MTU 大小的报文不需要在协议栈分段,直接offload到网卡,由网卡硬件实现分段,降低 CPU 负载。除了TSO,还有一个LSO(Large Segment Offload),LSO的定义相对于TSO更加宽泛一些,不仅仅只是指TCP包,不过一般可以近似认为二者是同一个概念,猜测可能是硬件上网卡很难做到针对所有协议都可以offload的特性,所以内核中并没有针对这个特性的功能实现。

UFO
UDP Fragmentation offload的缩写,和TSO类似,只针对UDP包发送。

GSO
Generic Segment Offload的缩写,它是 TSO 的软件实现,延迟大报文分段时机到 IP 层结束或者设备层发包前,不同版本内核实现不同。

LRO
Large Receive Offload的缩写,在接收网络包时,由网卡硬件实现网络包的聚合,聚合成一个大的数据包在上报到内核协议栈中去处理,从而减少协议栈的处理压力提升性能。

GRO
Generic Receive Offload,是 LRO 功能的软件实现版本,通过将接收到的多个数据包聚合成一个大的数据包,然后传递给网络协议栈处理,以减少上层协议栈处理开销,提高系统性能。

RSS
Receive-Side Scaling (RSS), 基于多个硬件接收队列执行接收操作,多CPU同时处理,提升接收性能。

RPS
Receive Packet Steering,和RSS类似,区别在于RPS是软件实现的队列,利用软件来做接收数据分发,多CPU同时处理。

RFS
Receive flow steering,相对于RPS来说进一步提高了cache hit的性能。

XPS
Transmit Packet Steering缩写,和RSS/RPS相对应,对于有多队列的网卡,建立 CPU 与 tx queue 的对应关系,而对于只有单队列的网卡,则没有优化作用。

XDP
基于ebpf实现,只作用于接收操作,在hook点协议栈处理之前,可以在进入协议栈之前处理一些包的策略,从而offload协议栈的负载到更底层。

TC
基于ebpf实现,只作用于发送操作,实现QOS和流控功能。

checksum offload
对于TCP层和UDP层的checksum计算,可以offload到网卡中利用硬件进行计算,从而减少checksum计算带来的一些计算开销。
使用 ethtool -k 可以查看对应网卡的checksum offload特性支持情况:

generic-segmentation-offload: on
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值