Anycast 是一种网络寻址和路由方法,其中传入的请求可以路由到最多不同的位置。
阅读本文后,您将能够:
复制文章链接
Anycast 是一种网络寻址和路由方法,可以将传入请求路由到各种不同的位置或“节点”。在 CDN 的上下文中,Anycast 通常会将传入的流量路由到距离最近并且能够有效处理请求的数据中心。选择性路由使 Anycast 网络能够应对高流量、网络拥塞和 DDoS 攻击。
Anycast 网络路由能够跨多个数据中心路由传入的连接请求。当请求进入与 Anycast 网络关联的单个 IP 地址时,网络将根据某种优先级排序方法分发数据。通常,通过选择与请求方距离最短的数据中心来优化选择特定数据中心的选择过程,从而缩短延迟。Anycast 的特征是许多关联中的一对一,并且是互联网协议中使用的 5 种主要网络协议方法之一。
如果同时向同一源服务器发出许多请求,该服务器可能会不堪重负,无法高效响应其他入站请求。在 Anycast 网络中,负载可以分散到其他可用的数据中心,而不是仅由一台源服务器来承担最主要的流量,每个数据中心都拥有能够处理并响应入站请求的服务器。这种路由方法可以防止源服务器扩展容量,以及避免向源服务器请求获取内容的客户端遭遇服务中断。
大多数互联网通过称为“单播”的路由方案工作。在单播下,网络上的每个节点都有一个唯一的 IP 地址。家庭和办公室网络使用单播;如果一台计算机连接到无线网络并收到一条消息,指出 IP 地址已被使用,这时发生了 IP 地址冲突,因为同一单播网络上的另一台计算机已在使用同一个 IP。在大多数情况下,这是不允许的。
如果 CDN 使用单播地址,流量会直接路由到特定的节点。当网络遇到异常流量时(例如在 DDoS 攻击期间),这会造成漏洞。由于流量直接路由到特定的数据中心,该位置或其周围的基础设施可能会被流量所压垮,进而可能导致合法请求遭受拒绝服务。
使用 Anycast 意味着网络可以极有弹性。由于流量会找到最佳路径,因此整个数据中心脱机也没有关系,流量会自动流向邻近的数据中心。
在其他 DDoS 缓解工具过滤掉一些攻击流量后,Anycast 会将剩余的攻击流量分散到多个数据中心,以防止任何一个位置被请求压垮。如果 Anycast 网络的容量大于攻击流量,就可以有效缓解攻击。在大多数 DDoS 攻击中,许多被攻陷的“僵尸”或“机器人”计算机被用来组建成所谓的僵尸网络。这些计算机可以在网络上四处分散,产生大量流量,以致压垮典型的单播连接机器。
正确实施 Anycast 的 CDN 可以扩大接收网络的表面积,使得来自分布式僵尸网络的未过滤拒绝服务流量能被 CDN 的各个数据中心吸收掉。因此,随着网络规模和容量的不断扩大,针对使用 CDN 的任何人发起有效 DDoS 的难度也越来越高。
设置一个真正的 Anycast 网络并不容易。正确实现需要 CDN 提供商维护自己的网络硬件,建立与上游运营商的直接关系,并调优他们的网络路由,以确保流量不会在多个位置之间“交替”。这篇 Cloudflare 博客文章阐述了 Cloudflare 如何在没有负载均衡器的情况下使用 Anycast 来进行负载均衡。