欢迎来到速度周!本周的每一天,我们都将讨论Cloudflare正在做的让每个人都能更快地上网的一些事情。
Cloudflare在75个国家的180个城市(直至19年9月11日,这一数字已经增长为90多个国家的193个城市)建立了庞大的数据中心网络。人们想到Cloudflare的一个点就是,它是一个全球系统,可以安全快速且可靠地将数据从地球上的任意点A传到任意点B。
为了实现这一目标,我们建立了Argo。Argo使用实时全球网络信息来绕过网络限制,电缆断线,数据包丢失以及互联网上的其他问题。Argo使Cloudflare所依赖的网络——互联网 ——在世界各地的每一次跳转中都更快,更可靠,更安全。
我们在两年前推出了Argo,现在它承载了Cloudflare 22%的流量。平均每天,Argo为互联网用户节省的用于等待内容加载的时间累计起来相当于112年!
随着Cloudflare和我们的流量的增长,我们现在有必要构建自己的私有主干网络,为Cloudflare(数据中心)节点之间的关键连接进一步提升安全性、可靠性和速度。
今天,我们将介绍Cloudflare全球私有主干网。它已经运行了一段时间,通过私有光纤连接Cloudflare的不同节点。
这个私有骨干网使所有Cloudflare客户受益,并与Argo结合使用。Argo可以根据每个数据中心选择互联网上可用的最佳链接,并自动充分利用Cloudflare全球私有主干网。
让我们揭开Argo的表面,并解释我们的骨干网络如何进一步为我们的客户提升性能。
什么是Argo?
Argo就像互联网上的Waze(一款导航应用)。Cloudflare每天都在我们的网络和互联网上传递数千亿的请求。由于我们的网络,我们的客户及其最终用户在全球范围内分布较好(均匀),因此所有这些遍布我们基础架构的请求都可以很好地描绘出互联网的不同部分在任何特定时间的表现。
就像Waze会检查来自真实司机的真实数据,为你提供准确、不拥堵(有时也非正统)的穿越城市的路线一样,Argo智能路由使用Cloudflare从每个请求中收集的时间数据,来选择更快、更高效的互联网路线。
实际上,Cloudflare的网络覆盖范围很广。某一特定区域的某些互联网链接可能会阻塞并导致性能低下(字面上的交通阻塞)。通过了解这种情况,并使用其他网络位置和供应商,Argo可以让流量从起点到终点的路由路径变得不那么直接,但速度更快。
这些好处并不只停留于理论之上:启用Argo智能路由可以**平均减少33%**的HTTP第一个字节到达时间(TTFB)。
我们引以为傲的另一件事是:我们一直专注于让它易于使用。只需在控制面板中单击一下,即可实现更好,更智能的路由,充分利用Cloudflare的网络、数据和工程专业知识,使您的流量更快。通过高级分析,您可以准确了解Argo在世界各地的表现。
您可以在我们最初的发布博客文章中阅读更多有关Argo如何工作的内容。
到目前为止,我们一直在功能层面上讨论Argo:启用它,它会让请求更快地通过互联网到达您的源服务器。它是如何工作的?Argo依靠一些东西来实现它的神奇功能:Cloudflare的网络、关于网络流量如何转移的最新性能数据,以及机器学习路由算法。
Cloudflare的全球网络
Cloudflare在全球范围内维护着一个数据中心网络,我们的网络继续大幅增长。如今,我们在75个国家/地区拥有180多(现在是193)个数据中心。自2017年5月推出Argo以来,我们另外增加了69个(截止至2019年5月13日)数据中心。
除了添加新的位点,Cloudflare还不断与网络合作伙伴合作,为我们的网络位点添加连接选项。单个Cloudflare数据中心可以与十几个网络对等连接,连接到多个互联网交换机(IX),连接到多个网络传输提供商(例如Telia,GTT等),以及现在,连接到我们自己的物理主干网。一个给定的目的地可以从同一位置通过多个不同的链接到达;这些链路中的每一个都具有不同的性能和可靠性特征。
增加网络覆盖范围对于提高Argo的速度非常重要。额外的网络位点和供应商意味着Argo有更多的选择来绕过网络中断和拥塞。每次我们添加一个新的网络位点,我们都会以指数形式地增加任何给定请求可用的路由选项的数量。
通过更好的路由提升性能
Argo需要依赖我们建立的庞大的全球网络才能完成他的任务。但是,如果它没有足够的智能来真正利用我们所有的数据中心和它们之间的电缆来更快地传输流量,它就不会有什么用。
Argo结合了多种机器学习技术来构建路由,测试它们,并取消性能不符合我们预期的路由。
路由的生成基于使用“离线”优化技术的数据:Argo的路由构造算法通过输入数据集(定时数据)和固定优化目标(“最小化TTFB”),输出它认为满足此约束的路由。
路由的取消是通过一种不知道路由构建算法的独立途径进行的。这两个系统被有意设计成对抗性的,这使得Argo在寻找更好的互联网路由方面更具积极性,同时也能适应快速变化的网络条件。
Argo的智能性的一个具体例子是,当它离开一个给定的数据中心时,它能够区分多个潜在的连接选项。我们称之为“过境选择”。
正如我们上面讨论的,我们的一些数据中心可能有十几个不同的、可行的选项来达到给定的目标IP地址。这就好比你订阅了家里所有可用的ISP(互联网服务提供商),你可以选择任意一个来用于访问你想要连接的每个网站。
通过传输选项,Argo可以同时指定:
到源途中的网络位置的导航点。
数据包从源到目的地途中的每个导航点上特定的传输提供商或链接。
将此类比为Waze,Argo在没有确定传输(路径)的情况下给出方向,就像告诉某人开车去一个路标(从旧金山到纽约,经过盐湖城),而没有指明实际要去盐湖城或纽约的路。通过传输选择,我们可以给出完整的转弯指示——从旧金山I-80道离开,在这里左转,通过SR-201进入盐湖城地区(因为I-80在盐湖城附近很拥挤),等等。这使我们能够更精确地绕过互联网上的问题。
传输选择需要数据中心间数据平面(实际上跨网络移动数据的组件)中的逻辑,以便在每个位置上区分不同的(网络)提供商和可用链接。一些有趣的网络自动化和广告技术使我们能够更准确地判断选择哪个链接来转移流量。
在不修改Argo数据平面的情况下,这些选项可以被我们的边缘路由抽象出来,并将传输的选择留给BGP(边界网关协议)。我们计划未来更公开地讨论路由技术。
我们能够直接测量传输选择对Argo客户流量的影响。从全球平均水平来看,**相比标准的BGP导出路由,传输选择能给客户带来额外16%的TTFB延迟优势。**这无疑是巨大的!
我们考虑的一件事是:当Argo将流量从一个位点(或提供商)转移到另一个位点(或提供商)时,其本身就可以通过诱导需求(由于性能提高而增加额外的数据量)和改变流量特征来改变网络环境。能力越大,复杂性越大。
添加Cloudflare全球私有骨干网络
鉴于我们每个数据中心的传输和连接选项的多样性,以及我们能够在它们之间进行智能的选择,为什么我们还要花费时间和精力去建立一个自己的主干网络呢?简而言之:运营我们自己的私有骨干网使我们能够更好地控制端到端的性能和管理容量。
当我们购买传输或使用合作伙伴(对等网)进行连接时,我们依赖于该供应商来管理连接的稳定性,并确保它保持通畅和可用。一些网络会比另一些网络好,并且这种情况一直在变化。
举个例子,这是我们一个传输提供商网络在我们两个数据中心(芝加哥和纽瓦克市)之间抖动(最大最小延迟的时间差)的测量结果:
图中6小时内的平均抖动为4ms,平均往返延迟为27ms。一定程度的延迟是我们需要学会适应的;光速是一个难以克服的物理常数,而网络协议是建立在具有高或低延迟的链路上的。
另一方面,抖动是“不好的”,因为它是不可预测的,并且当抖动上升时,基于抖动构建的网络协议和应用程序通常会快速减少。链接上的抖动通常是由连接两端路由硬件中更多的缓冲、排队和资源竞争引起的。举例来说,在高延迟下进行网络上的VoIP通话是令人讨厌但仍可控的。尽管通话双方都会注意到“延迟”,但通话质量不会受到影响。而抖动会导致对话出现混乱,(双方语音的)数据包在彼此之前到达,不可预知的故障会使人无法理解通话内容。
以下同样是芝加哥和纽瓦克之间的抖动图表,不同的是,这次经过的是Cloudflare全球私有主干网络:
这次好多了!这里我们看到抖动测量值为536μs(微秒),几乎比传输提供商同样在这两个网站间测量的抖动值要好8倍(即为此前测量值的1/8)。
我们控制端到端的光纤和Argo智能路由的结合,使我们能够充分挖掘Cloudflare骨干网的潜力。Argo的路由系统能够准确地知道主干网的可用容量,并能够管理它试图推送的额外数据的数量。通过控制通道的两端和通道本身,我们可以保证某些性能特性,并将这些期望构建到路由模型中。同样的原则不适用于我们无法控制的传输供应商和网络。
延迟,不见了!
我们的私有骨干网是另一个可以提高我们在互联网上性能的可用的工具。结合Argo的尖端机器学习和我们的大型网络上各点之间的直接光纤连接,我们可以用可预测的、卓越的性能路由客户流量。
我们很高兴能看到骨干网及其影响持续扩大。
作为一名产品经理,我个人认为Argo的构建非常有趣。我们通过加速客户的网站、API和网络来让他们更开心。客户只需点击一下鼠标就可以启用Argo,并能立即看到好处。在幕后,对物理和虚拟基础设施的巨额投资开始加速从源头到目的地的流量。
从工程的角度来看,我们每周的目标是可以直接得到衡量的——我们是否通过做额外的工程工作让我们的客户更快?当我们将一个新的优化程序发送到Argo,并立即看到我们的图表向上和向右移动时,我们就知道我们已经完成了自身的工作。
构建我们的物理私有骨干网是我们针对速度需求方面所做的最新事情。
欢迎来到速度周!