XDP 编程:从基础到实践
1. 数据包处理器
在 XDP(eXpress Data Path)中,数据包处理器是执行 BPF 程序和协调网络栈交互的核心组件。它直接处理来自网卡接收(RX)队列的数据包,确保数据包可读可写,并允许以数据包处理器操作的形式附加后处理裁决。其特点如下:
-运行时更新:可以在运行时进行原子性的程序更新和新程序加载,而不会中断网络服务和相关流量。
-工作模式:
-忙轮询模式:预留处理每个 RX 队列的 CPU,避免上下文切换,确保数据包到达时立即响应。
-中断驱动模式:不预留 CPU,通过中断通知 CPU 处理新事件,同时继续正常处理。
graph LR classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px; A(NIC):::process --> B(数据包处理器):::process B --> C(BPF 程序):::process B --> D(网络栈):::process C --> B D --> B2. XDP 结果代码(数据包处理器操作)
数据包处理器对数据包做出决策后,会使用五种返回代码之一来指示网络驱动程序如何处理数据包:
| 代码 | 名称 | 描述 |