AF_XDP 适用场景
本文对应 成长路径 中优先级:在 保留内核驱动 的前提下,把 特定队列 的流量送到用户态高速处理。
是什么
- AF_XDP socket 绑定 网卡 RX 队列(XSK map + BPF 重定向)。
- 报文进入 UMEM 环形缓冲,用户态 零拷贝 读取(模式依赖驱动)。
仍使用 内核网卡驱动,不是完整 UIO/VFIO 接管网卡。
与完整 DPDK 对比
| 项 | AF_XDP | DPDK PMD |
|---|---|---|
| 接管网卡 | 否,共享驱动 | 是(bind 后内核不可见) |
| 部署 | 需 XDP 支持驱动 | 需 hugepage、绑核 |
| 协议栈 | 可同口其他队列走内核 | 数据口通常全在用户态 |
| 典型场景 | 混合、渐进迁移 | 线速专用 数据面 |
何时考虑 AF_XDP
- 需要 内核栈(SSH、路由)与 高速处理 共存。
- 不想维护 双口 但驱动支持 XDP。
- PPS 需求 低于 完整 DPDK 上限但仍要优化。
何时仍用 DPDK
- 追求 极致 PPS/延迟,愿 独占 网卡。
- 需 rte_flow 等完整 offload 生态。
见 与内核网络栈共存。