内核协议栈为通用性付出了代价:每个包要经中断处理、协议栈层层解析、内核到用户态的内存拷贝、进程上下文切换。对每秒千万级包的场景(高频交易、电信网关、CDN 边缘),这些开销成为瓶颈。内核旁路绕过协议栈,让用户态程序直接读写网卡队列。

DPDK 的关键技术:1)UIO/VFIO 驱动接管网卡——网卡 DMA 直接把包写入用户态巨页内存,零拷贝;2)轮询代替中断——CPU 空转轮询收包队列,消灭中断上下文切换(用 100% CPU 占用换微秒级延迟与确定性能);3)大页内存(2MB/1GB)减少 TLB miss;4)CPU 亲和性绑定 + 无锁队列 + 批量收发包摊薄每包开销。配套生态:VPP(用户态完整协议栈/转发面)、Seastar 框架、SPDK(同思想用于存储)。其他路线:XDP/eBPF 不完全旁路,在内核最早收包点执行用户注入的程序做丢弃/重定向,兼顾性能与内核生态;io_uring 减少 I/O 系统调用开销。追问方向:旁路后 TCP 协议栈怎么办(用户态协议栈如 mTCP 的代价)、RSS 多队列与 NUMA 亲和、DPDK 适用与不适用(普通业务系统得不偿失)的边界。

(约 450 字)