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:

  1. XDP Generic 模式
  2. XDP Generic 模式下运行 XDP 程序
  3. XDP Generic 模式下重定向网络包
  4. XDP Generic 模式下安装 XDP 程序
  5. 加餐:阅读内核源代码的方法
  6. XDP Native 模式
  7. XDP Native 模式下安装 XDP 程序
  8. 插曲:kernel patch: add a tracepoint of attachment failure
  9. XDP Native 模式下重定向网络包
  10. XDP on Mellanox mlx5_core driver
  11. 插曲:skb 构建过程讲解
  12. XDP on Intel ixgbe driver
  13. XDP on Intel i40e driver
  14. XDP on Intel ice driver
  15. XDP on veth device
  16. XDP 将网络包从 Mellanox 网卡重定向到 veth
  17. 加餐:bpf on netkit device
  18. XDP metadata 讲解
  19. XDP tracer 实战
  20. 训练:鼓捣自己的 xdpdump
  21. AF_XDP 简介
  22. AF_XDP UMEM
  23. AF_XDP RX
  24. AF_XDP TX
  25. 训练:使用 AF_XDP 迷惑使用 ICMP 探测网络距离的工具
  26. XDP helpers 和 kfuncs 简要讲解
  27. CPUMAP 讲解
  28. XDP dispatcher 讲解
  29. XDP 支持分片包的实现讲解

本手册适合对 XDP 有一定了解的读者,将直接从源代码的角度来讲解 XDP 的实现原理。

学习完本手册后,你将会对 XDP 有一个比较全面的认知,从而更好地面对 XDP 在项目落地时的各种情况。


欢迎加入 「eBPF Talk」知识星球,一起来探讨 XDP 技术!

eBPF Talk 知识星球