前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >图解网络Offload

图解网络Offload

作者头像
虚拟化云计算
发布2021-03-25 16:29:32
3.4K0
发布2021-03-25 16:29:32
举报
文章被收录于专栏:虚拟化云计算虚拟化云计算

这是图解系列之网络Offload

关注阅读更多图解

网络应用程序如果要发送很大的数据包,经过内核协议栈的时,大包会被分片成多个不超过MTU长度的包。这个分片比较费CPU资源。Offload技术可以把这些分片和合并的工作进行优化处理,也可以直接Offload到网卡上。

了解MTU

MTU是一个二层的概念,即最大传输单元(Maximum Transmission Unit,MTU),它不包含二层以太网头尾数据。网卡发送数据包的大小都是限制在MTU内的。

以太网头和尾数据包含:2bit的以太网类型+6bit的DMAC+6bit的SMAC+4bit的FCS

Offload涉及到四个概念:TSO、GSO、LRO、GRO。(当然还有UDP的UFO,以及一些checksum的Offload,在这里不讨论。)

TSO

TSO(TCP Segmentation Offload) 是一种利用网卡对大数据包进行分片,从而减小 CPU 负荷的一种技术。其作用通过两个图来对比:

TSO off和GSO off 状态数据包的发送过程:

TSO on状态数据包的发送过程:

一个大的网络包直到进入网卡内部后才由网卡进行了分片。

GSO

GSO(Generic Segmentation Offload)是延缓分片技术。它比 TSO 更通用,原因在于它不需要硬件的支持就可以进行分片。

其过程是:首先查询网卡是否支持TSO 功能,如果硬件支持TSO则使用网卡的硬件分片能力执行分片;如果网卡不支持 TSO 功能,则将分片的执行,延缓到了将数据推送到网卡的前一刻执行。

网卡关闭TSO时,GSO on状态数据包的发送过程:

一个大的网络包直到进入网卡前的最后一步才进行了分片。

TSO和GSO对应数据发送过程,对应数据接收过程的是LRO和GRO。

LRO

LRO(Large Receive Offload)是将网卡接收到的多个数据包合并成一个大的数据包,然后再传递给网络协议栈处理的技术。这样提系统接收数据包的能力,减轻CPU负载。

LRO off和GRO off 状态数据包的接收过程:

LRO on状态数据包的接收过程:

数据一进入网卡立刻进行了合并。

GRO

GRO (Generic Receive Offload)是 LRO 的软件实现,只是GRO 的合并条件更加的严格和灵活。

GRO on状态数据包的接收过程:

以上的网络offload是网络协议栈配合网卡完成的,在现在的很多智能网卡上可以直接offload整个网络协议栈,即把网络协议的处理放到了智能网卡上。

毕竟网络协议的处理本来就不该在内核中。

关于智能网卡offload和dpdk这种旁路协议处理的方式,我后面会再图解。

这是图解系列之网络Offload

关注阅读更多图解

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 虚拟化云计算 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档