bpf_redirect_map 重定向介绍
bpf_redirect_map 支持的map类型有三种:
- BPF_MAP_TYPE_DEVMAP
- BPF_MAP_TYPE_CPUMAP
- BPF_MAP_TYPE_XSKMAP
kernel 源码中(kernel/bpf/verifier.c),除了这三种其他都会被拒绝
1)BPF_MAP_TYPE_DEVMAP
https://github.com/dropbox/goebpf/blob/master/examples/xdp/bpf_redirect_map/ebpf_prog/xdp.c
2)BPF_MAP_TYPE_XSKMAP
https://github.com/xdp-project/xdp-tutorial/blob/master/advanced03-AF_XDP/af_xdp_kern.c
3)BPF_MAP_TYPE_CPUMAP
https://cregit.linuxsources.org/code/4.17/samples/bpf/xdp_redirect_cpu_kern.c.html
bpf_redirect 和 bpf_redirect_map 都是eBPF程序中使用的指令,它们的作用是将来自某个网络接口的数据包重定向到另一个网络接口。但是,bpf_redirect_map与bpf_redirect的区别在于:
-
bpf_redirect只能将数据包重定向到一个指定的网络接口,而bpf_redirect_map可以将数据包重定向到多个网络接口,这取决于在eBPF程序中指定的映射表。
-
bpf_redirect_map可以在eBPF程序执行期间动态更改映射表中的条目,从而可以更灵活地控制数据包的重定向。
因此,如果需要将数据包重定向到多个网络接口并且需要在程序执行期间更改重定向规则,则应该使用bpf_redirect_map。如果只需要将数据包重定向到一个特定的网络接口,则可以使用bpf_redirect。
本文作者:salami_china
本文链接:https://www.cnblogs.com/wangjq19920210/p/17268101.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步