Linux 操作系统原理 — 网络硬件卸载
目录 文章目录 目录 网络 Offload 交换 Offload 网络 Offload 网络 Offload,主要是指将原本在内核网络协议栈中进行的 IP 分片、TCP 分段、重组、checksum 校验等操作,转移到网卡硬件中进行,使得 CPU 的发包路径更短,消耗更低,从而提高处理性能。 一开始这些 Offload 功能都是在网卡上针对特定功能设计一个专门的电路并且带有很小的缓存,去做专门的事情。后来直接在网卡上部署一个可编程的通用的小型 CPU,一般称为 网络协处理器 ,就是现在的智能网卡。智能网卡的协处理器可以先对该数据包进行一些预处理,根据处理结果考虑是不是要把数据包发送给主机 CPU,智能网卡中的 Offload 功能一般是使用 eBPF 编程来实现的。 交换 Offload Linux 4.0 引入了 switchdev 框架,它代表对一类拥有 “交换” 能力芯片的多网口设备的抽象。其中每一个网口就是一个 Port,在 switchdev 框架中被注册成为一个 net_device。 switchdev 起源于 Open vSwitch 项目,由 Jiři Pirko 在 2014 年 9 月首次提出。在 2015 年 2 月的 Netdev 0.1 会议上,网络开发人员决定扩展并采用 switchdev 作为硬件交换机芯片的通用解决方案。switchdev