过去几周,由于大规模攻击,传统 DNS 和 DDoS 防护服务多次出现重大故障。Cloudflare 的客户自然会询问我们如何应对类似的攻击。

任何服务都有其局限性,Cloudflare 也不例外。但我们拥有完善的架构,能够抵御近期的攻击,并持续扩展以应对未来不可避免的大规模攻击。我们每天都在多次缓解新闻报道中提及的僵尸网络攻击。根据已公开的攻击数据以及私下分享的信息,我们已成功缓解了类似规模和类型的攻击,且未造成客户服务中断。

我认为现在是时候谈谈 Cloudflare 的架构与大多数传统 DNS 和 DDoS 缓解服务有何不同,以及这如何帮助我们在面对这些极其高流量的攻击时保持客户的在线状态了。

类比:数据库如何扩展

在深入探讨我们的架构之前,不妨花点时间思考一下另一个类似的、更容易理解的技术难题:数据库扩展。从 20 世纪 80 年代中期关系型数据库开始兴起,到 21 世纪初,企业扩展数据库的方式通常是购买更大的硬件。当时的策略是:购买你能负担得起的最大数据库服务器,开始向其中填充数据,然后祈祷在你耗尽存储空间之前,有更新、更大的服务器发布。硬件公司也随之推出了越来越多功能齐全、专用于特定数据库的硬件。

了解 IBM z13 大型机(来源:IBM)

在某种程度上,任何存储设备都无法容纳某些组织想要存储的所有数据。谷歌就是一个著名的例子。在公司初创时期,他们没有足够的资源购买最大的数据库服务器。即便他们有,最大的服务器也无法存储他们想要索引的所有数据——而他们想要索引的数据几乎是所有数据。

因此,谷歌并没有采用传统方式,而是编写了一款软件,使许多廉价的通用服务器能够协同工作,就像一个大型数据库一样。随着谷歌开发更多服务,这款软件能够高效地将负载分配到谷歌网络中的所有机器上,从而最大限度地利用网络、计算和存储资源。而且,随着谷歌需求的增长,他们只需添加更多通用服务器——这使得他们能够线性扩展资源以满足需求。

传统 DNS 和 DDoS 缓解

这与传统 DNS 和 DDoS 防护服务缓解攻击的方式截然不同。传统上,阻止攻击的方法是购买或搭建大型设备,并用它来过滤传入流量。如果你深入研究大多数传统 DDoS 防护服务供应商的技术细节,你会发现思科、Arbor Networks 和 Radware 等公司的硬件被集中部署在所谓的“清洗中心”中。

CC BY-SA 3.0 污水处理图片由 Annabel 提供

就像以前的数据库时代一样,虽然有一些技巧可以让这些庞大的缓解设备(勉强)协同工作,但这些技巧并不实用。通常,单个设备能够吸收的数据包数量的物理极限,就成了服务提供商能够缓解的总流量的有效限制。而且,在规模非常大的 DDoS 攻击中,由于清洗中心位置有限,上游 ISP 成为了瓶颈,因此大部分攻击流量根本无法到达清洗中心。

由于设备成本高昂,广泛部署清洗硬件并不划算。如果您是一家 DNS 提供商,您实际遭受攻击的频率有多高?您如何才能证明在每个数据中心都投资昂贵的缓解硬件是合理的?即使您是一家传统的 DDoS 服务供应商,通常也只有在客户遭受攻击时才会启用服务,因此,容量远超以往遇到的最大攻击规模是没有意义的。任何超出此范围的投资似乎都是浪费,但事实证明,这种结论最终将对传统模式造成致命打击。

未来并非装在盒子里。

从 Cloudflare 创立之初,我们就将基础设施视为类似于谷歌的数据库架构。早期,传统的 DDoS 防护硬件供应商曾试图说服我们使用他们的技术。我们甚至考虑过自行搭建巨型服务器,专门用于流量清洗。这在当时看来是一个极具吸引力的技术挑战,但我们很快意识到,这种模式永远无法扩展。

相反,我们最初采用的是一种非常简单的架构。Cloudflare 的第一批机架只有三个组件:路由器、交换机和服务器。如今,我们进一步简化了架构,通常完全去掉路由器,转而使用交换机,这些交换机也能处理足够的路由表,以便在数据中心服务的地理区域内路由数据包。

我们没有采用负载均衡器或专用缓解硬件(这些设备在攻击中可能成为瓶颈),而是编写了一款软件,利用互联网的基础路由协议 BGP, 在地理位置上以及我们网络中的各个数据中心内进行负载分配 。我们模型的关键在于:每个机架上的每台服务器都能响应所有类型的请求。我们的软件会根据特定客户在特定时间的需求动态分配负载。这意味着在大规模攻击期间,我们会自动将负载分散到数万台服务器上。

石墨烯:一种结构简单的材料,强度却是最好的钢材的 100 倍(图片来源: 维基百科 

这也意味着我们可以以更具成本效益的方式继续投资我们的网络。如果法兰克福需要增加 10% 的容量,我们可以向其运送 10% 的服务器,而无需做出购买或自建另一台 Colossus Mega Scrubber™ 服务器这种阶跃式决策。

由于每个数据中心中每台服务器的每个核心都能帮助缓解攻击,这意味着随着我们每启用一个新的数据中心,我们就能更好地在攻击源头附近阻止攻击。换句话说,解决大规模分布式僵尸网络的方案就是建立一个大规模分布式网络 。这才是互联网的真正运作方式:分散力量,而不是将强大的防御能力集中在少数几个清洗点。

我们如何让 DDoS 防护几乎免费

资源的有效利用不仅体现在资本支出上,也体现在运营支出上。由于我们使用相同的设备和网络来提供 Cloudflare 的所有功能,因此我们很少需要为阻止攻击而产生额外的带宽成本。请稍等片刻,因为要理解这一点,您需要了解一些我们购买带宽的方式。

我们按月向传输服务提供商支付带宽费用,费用按入站流量与出站流量中较大值的95%分位数计算。入站流量是指发送到我们网络的流量,出站流量是指从我们网络发出的流量。

除了提供 DDoS 防护服务外,Cloudflare 还提供缓存等其他功能。缓存的本质在于,从缓存发出的流量应该始终大于流入的流量。在我们的案例中,正常情况下,我们的出站流量(流出流量)远大于入站流量(流入流量)。

大规模 DDoS 攻击会大幅提升我们的入站流量,但不会影响出站流量。然而,即使在规模非常大的攻击中,入站流量超过出站流量的情况也极其罕见。由于我们只需为入站流量和出站流量中较大的那个付费,而且出站流量总是远高于入站流量,因此我们实际上拥有大量的零成本带宽来应对攻击。

随着我们服务使用量的增加,我们抵御攻击的能力也相应提升。人们不禁好奇,无论攻击规模大小,我们是如何做到以固定费用提供 DDoS 防护的?答案在于,攻击并不会大幅增加我们最大的单位成本。而且,尽管传统服务提供商声称,提供免费的 DDoS 防护将耗费他们数百万美元,但我们却能够通过 “伽利略计划” 免费保护具有重要政治和艺术价值的网站免受大规模攻击,而无需为此付出巨额成本。

赢得军备竞赛

Cloudflare 是唯一一家从一开始就旨在缓解大规模 DDoS 攻击的 DNS 提供商。正如 DDoS 攻击本质上是分布式的,Cloudflare 的 DDoS 缓解系统也分布在我们庞大的全球网络中。

毫无疑问,我们正与攻击者展开一场军备竞赛。然而,我们在技术和经济上都占据了优势,足以赢得这场竞赛。与大多数传统服务提供商相比,攻击者拥有优势:服务提供商的成本很高,因为他们必须购买昂贵的设备和带宽,而攻击者的成本很低,因为他们可以使用被黑客入侵的设备。这就是为什么我们的制胜法宝在于能够将负载分散到我们大规模分布式通用硬件网络中的软件。通过保持低成本,我们能够持续高效地扩展容量,并始终领先于攻击。

如今,我们相信 Cloudflare 的攻击拦截能力比所有竞争对手公开宣称的拦截能力总和还要强大。而且我们还在持续扩张,几乎每周都会启用一个新的数据中心。对我们的客户来说,好消息是 Cloudflare 的设计使其能够随着攻击的增加而持续经济高效地扩展容量。任何服务都有其局限性,我们也会时刻警惕新的攻击,