Linux 内核将使用 BPF 替换 iptables

查看原文

这篇文章简要讲述了 iptables 的性能问题和一系列基于 bpf 的项目逐渐开始替代 iptables, 例如 facebook 使用基于 bpf/xdp 的负载均衡替换 lpvs, Netflix 使用基于 bpf 的 bcc 做性能分析,Google 开发 bpfd , cillium 基于 bpf 做 l3-l7 的 network/security/lb; 等等。 Iptables 在过去的十数年中获得很大的成功,它的功能可以简单地说成三个词:INPUT chain, OUTPUT chain, FORWARD chain, 分别管理进来的流量,出去的流量,以及转发。然而问题在于 packet 在经过 iptables 的时候是逐个 rules 来处理的,这意味着一旦 list rules 量大了,iptables 的性能势必慢下来。文中举了个粒子,kube-proxy 基于 iptables 设置防火墙,20k 个服务花了 5 个小时才把 160k 个iptables rules 部署完。 BPF 可以让用户定义的沙盒规则 bytecodes 直接送入内核执行。这让它在处理 Packet 的时候又快又安全。未来势必会更多用上 bpf 内建的工具,相应地不再以 ip-address/port 为中心来配置。