eBPF Talk: XDP 进阶手册
文章目录
XDP,全称为 eXpress Data Path,是 Linux 内核 4.8 版本引入的一种高性能网络数据包处理技术。
XDP 只能用来处理网卡接收到的网络包,可对网络包进行修改、丢弃、转发等操作;所以可以用来抗 DDoS 攻击、做 ACL、做负载均衡等。
XDP 有 3 种模式:
- Generic 模式,也成为 SKB 模式
- Native 模式,也称为 Driver 模式
- Hardware 模式,也称为 Offload 模式
而在容器时代里,常用的 veth 网络设备就支持 Generic 模式和 Native 模式。
当然,Mellanox 网卡、Intel 网卡等也支持 XDP Native 模式。
而 XDP Hardware offload 模式完全取决于网卡硬件的支持情况,在实际使用中比较少采用该模式。
在 XDP 实际落地时,还需要考虑 XDP 程序所在的网络环境的观测,所以需要对 XDP 程序进行跟踪、即对 XDP 程序处理的网络包进行抓包,以便观测 XDP 程序的处理结果。
而在 XDP 的发展过程中,也出现了一些 XDP 的衍生技术,如 AF_XDP、XDP metadata 等。
而最近,bpf 社区在给 Generic 模式增加了一个新特性:multi-buff。在本手册的最后章节中,会介绍该特性。
总而言之,《XDP 进阶手册》将会从以下几个方面来介绍 XDP:
- XDP Generic 模式
- XDP Generic 模式下运行 XDP 程序
- XDP Generic 模式下重定向网络包
- XDP Generic 模式下安装 XDP 程序
- 加餐:阅读内核源代码的方法
- XDP Native 模式
- XDP Native 模式下安装 XDP 程序
- 插曲:kernel patch: add a tracepoint of attachment failure
- XDP Native 模式下重定向网络包
- XDP on Mellanox mlx5_core driver
- 插曲:skb 构建过程讲解
- XDP on Intel ixgbe driver
- XDP on Intel i40e driver
- XDP on Intel ice driver
- XDP on veth device
- XDP 将网络包从 Mellanox 网卡重定向到 veth
- 加餐:bpf on netkit device
- XDP metadata 讲解
- XDP tracer 实战
- 训练:鼓捣自己的 xdpdump
- AF_XDP 简介
- AF_XDP UMEM
- AF_XDP RX
- AF_XDP TX
- 训练:使用 AF_XDP 迷惑使用 ICMP 探测网络距离的工具
- XDP helpers 和 kfuncs 简要讲解
- CPUMAP 讲解
- XDP dispatcher 讲解
- XDP 支持分片包的实现讲解
本手册适合对 XDP 有一定了解的读者,将直接从源代码的角度来讲解 XDP 的实现原理。
学习完本手册后,你将会对 XDP 有一个比较全面的认知,从而更好地面对 XDP 在项目落地时的各种情况。
欢迎加入 「eBPF Talk」知识星球,一起来探讨 XDP 技术!
文章作者 Leon Hwang
上次更新 2024-05-26