Cloudflare 服务器共享 IP 地址以进行出口流量

Cloudflare 使用“soft-unicast”管理服务器出口流量

Cloudflare 最近详细介绍了其如何通过“soft-unicast”技术管理服务器的出口流量。该技术允许多台服务器共享一个 IPv4 地址来处理出口流量,同时将响应数据包重定向到正确的物理服务器。这为 Cloudflare 提供了一种可扩展且成本效益高的解决方案,以支持需要标记出口 IP 地址的各种产品。

端口切片技术

Cloudflare 选择通过端口范围将出口 IP 分配给多台服务器。每台服务器拥有一个给定出口 IP 的少量源端口范围(称为端口切片)。通过 2048 个端口的切片,Cloudflare 可以将一个 IP 地址共享给 31 台服务器。为了提高端口使用效率,Cloudflare 实现了重复使用出口端口的方法,以避免端口耗尽的问题。

定制化负载均衡器 Unimog

为了将返回的数据包路由到正确的机器,Cloudflare 定制了其基于 XDP 的四层负载均衡器 Unimog,使其能够识别这种技术。Unimog 是 Cloudflare 的边缘负载均衡器,专门用于处理流量路由。

传统 NAT 的局限性

传统的路由器源 NAT(Source-NAT)可以在服务器之间共享 IP 地址,但 Cloudflare 所需的出口 IP 数量使其无法依赖路由器级别的有状态防火墙或 NAT。此外,Cloudflare 出于未公开的原因,选择避免分布式 NAT 安装。

Anycast 技术的应用

在公共互联网上,通常只能以 /24 或 256 个 IP 地址的粒度路由子网,这会导致 IP 空间的浪费。为了提高 IP 空间的利用率,Cloudflare 将出口 IP 地址部署为 Anycast 地址,这通常用于入口流量。Cloudflare 定制了 Unimog,使其能够通过其骨干网络将数据包转发到正确的数据中心。

IP 地址与数据中心的关系

在这种设计下,一个 IP 地址语义上标识一个数据中心,而 IP 和端口范围则标识特定的机器。这种行为几乎类似于单播(unicast)。

Anycast 的定义

根据维基百科的定义,Anycast 是一种网络寻址和路由方法,其中一个目标 IP 地址由多个位置的设备(通常是服务器)共享。路由器根据其正常决策算法(通常是最少的 BGP 网络跳数)将发送给此目标的数据包路由到离发送者最近的位置。Anycast 路由被内容分发网络(如 Web 和 DNS 主机)广泛使用,以将其内容更接近最终用户。

从入口到出口的 Anycast 扩展

此前,Cloudflare 仅将 Anycast 用于其入口流量。通过定制其四层负载均衡器,Cloudflare 能够将其应用于出口流量,并通过其骨干网络处理“最后一英里”的路由。

阅读 59
0 条评论