CPUMAP 是 BPF 里的一种特殊的 bpf map 类型,且应该是 XDP 专用的。CPUMAP 的作用是将网络包从一个 CPU core 上的 XDP 程序重定向到另一个 CPU core 上去处理;类似于 Scaling in the Linux Networking Stack[1] 里的 RSS
和 RPS
的功能。
CPUMAP 工作原理简介
如上图,CPUMAP 的工作原理是这样的:
XDP 程序通过 bpf_redirect_map()
函数将网络包重定向到 CPUMAP 中指定的 core 上;该 CPUMAP 里的 key 是目标 CPU core 的编号; 对应 core 会用一个 queue
来接收重定向过来的网络包;对应 core 会运行一个专门处理 queue
中网络包的kthread
内核线程。
更详细的 CPUMAP 讲解,请订阅知识星球查看,包含在 “XDP 进阶手册” 专栏里
XDP 进阶手册
Scaling in the Linux Networking Stack: https://www.kernel.org/doc/Documentation/networking/scaling.txt