eBPF 无处不在 --> 无感知

138 阅读2分钟

A vision for eBPF Everywhere

image.png

image.png

1. katran l4 lb (from FB)

XDP line rate speed, 15 Million packet/s, 50 nanosec one packet. 10X ipvs

2. 51: Life of a Packet with Cilium

docs.cilium.io/en/stable/n…

Endpoint to Endpoint

首先,我们展示的是本地端点到端点流量,出口和入口均采用可选的 L7 策略。然后是启用套接字层强制执行的相同端点到端点流量。启用 TCP 流量套接字层强制执行后,启动连接的握手过程将遍历端点策略对象,直到 TCP 状态为 ESTABLISHED。然后,在连接ESTABLISHED(建立)后,仍然只需要 L7 策略对象。

image.png

Egress from Endpoint

接下来我们展示本地端点到出口的可选覆盖网络。在可选叠加网络中,流量将从与叠加网络相对应的 Linux 网络接口转发出去。默认情况下,覆盖接口名为 cilium_vxlan。与上文类似,当启用套接字层强制执行且使用 L7 代理时,我们可以避免在端点和 L7 策略之间运行端点策略块来处理 TCP 流量。如果启用,可选的 L3 加密块将对数据包进行加密。

image.png

Ingress to Endpoint

最后,我们还展示了本地端点的入口,以及可选的覆盖网络。与上述情况类似,套接字层执行可用于避免代理和端点套接字之间的一系列策略遍历。如果数据包在接收时是加密的,则会首先解密,然后通过正常流程处理。

image.png

3. bpf lb

image.png

4. 云原生 os

image.png

image.png

image.png

image.png

负载均衡器的位置

image.png

认证

image.png

创新中

image.png

5. SO_REUSEPORT

多个 socket 可以监听在同一个端口上

image.png

在同一个端口上,每个进程都可以拥有自己的 socket。

image.png

默认模式

image.png

image.png

自定义负载均衡器

image.png

image.png