任意播还是单播:每种情况下最好选择

许多人可能听说过Anycast。使用这种网络寻址和路由方法,可以将单个IP地址分配给网络上的多个服务器。这些服务器甚至可以位于彼此远离的数据中心中。 Anycast背后的想法是,根据请求源的位置,数据将发送到最近的服务器(根据网络拓扑,更准确地说是BGP路由协议)。因此,可以减少跳数和等待时间。



本质上,同一条路由是从世界各地的多个数据中心发布的。因此,基于BGP路由,数据中心会将客户端发送到“最佳”和“最近”的客户端。为什么选播?为什么使用Anycast而不是Unicast?





单播对于具有一台Web服务器且流量适中的站点确实非常有用。但是,如果服务有数百万个订户,则它通常使用许多Web服务器,每个服务器具有相同的IP地址。这些服务器在地理上分布以最佳地服务请求。



在这种情况下,Anycast将提高性能(流量以最小的延迟定向到用户),确保服务可靠性(由于冗余服务器)和负载平衡-路由到多台服务器将有效地在它们之间分配负载,从而提高站点速度。



运营商为客户提供基于Anycast和DNS的各种类型的负载平衡。客户端可以根据站点的地理位置指定将请求发送到的IP地址。这使得可以更灵活地分发用户请求。



假设有几个站点需要在这些站点之间分配负载(用户),例如,每天有100,000个请求的在线商店或受欢迎的博客。要限制用户进入特定站点的区域,可以使用“地理社区”选项。它允许您限制运营商在其中发布路由的区域。









Anycast与单播:区别



Anycast通常用于DNS(域名系统)和CDN(内容交付网络)等应用程序中,以实现提高网络性能的路由决策。内容交付网络使用Anycast,因为它们处理大量流量,在这种情况下,Anycast提供了许多优势(下面将详细介绍)。在DNS中,Anycast可以显着提高服务的可靠性和容错级别。





在Anycast IP中,使用BGP时,有到特定主机的多条路由。这些实际上是用于建立较低延迟连接的多个数据中心中主机的副本。



因此,在Anycast网络中,从不同位置播发相同的IP地址,并且网络根据路由的“成本”决定将用户的请求定向到何处。例如,BGP通常用于确定用于数据传输的最短路由。当用户发送Anycast请求时,BGP为网络上可用的Anycast服务器确定最佳路由。



任播优势

减少延迟 Anycast , . «» ( ) DNS-. Anycast . , .


, , , , .



IP, . Anycast //. 



, , , Anycast, , DNS. DNS - . Anycast , . 



Anycast . , , . , , . .

DoS- 

Anycast – DDoS. DDoS- Anycast, . 



DDoS- , , . Anycast , «» , . « », , .



Anycast . , Anycast, , . . 



, . , . , . , , , . . 



, 10 25 /. 100 IP- .



, Anycast — DNS. DNS-, DNS-. , , . DNS-. , , DNS- , , DNS- .



Anycast , , , . .



从客户端使用Anycast技术不需要任何特殊的服务器,网络或特殊组件。但是Anycast有其缺点。据信,其实现是一项复杂的任务,需要额外的设备,可靠的提供商和适当的流量路由。



从纯粹的来源到美丽的远方



虽然Anycast会根据最少的跳数路由用户,但这并不一定意味着最少的延迟。延迟是一种更复杂的指标,因为一个过渡可以包含十个以上。





示例:洲际通信可能涉及一个非常高的等待时间跳。



Anycast主要用于基于UDP的服务,例如DNS。用户请求基于BGP路由定向到“最佳”和“最近”的数据中心。





示例:具有Anycast DNS IP地址123.10.10.10的DNS客户端工作站,对使用同一Anycast IP地址部署的三个DNS名称服务器中最接近的DNS服务器执行DNS解析。如果路由器R1或服务器A发生故障,则DNS客户端数据包将通过R2和R3自动转发到下一个最近的DNS服务器。另外,到我们服务器A的路由将从路由表中删除,从而阻止进一步使用此名称服务器。



部署脚本



有两种通用方案可用于确定用户连接到哪个服务器:



  • 任播网络层将用户连接到最近的服务器。从用户到服务器的网络路径在这里很重要。
  • Anycast . , , , . . , .


CDN Anycast



现在让我们回到在内容交付网络中使用Anycast的方式。 Anycast无疑是一个有趣的网络概念,并且正在得到下一代CDN提供商的越来越多的接受。



CDN是服务器的分布式网络,以高可用性和低延迟向最终用户交付内容。如今,内容交付网络已成为众多在线多媒体服务的骨干网,在消费者中扮演越来越重要的角色,而消费者对慢速下载速度的容忍度也越来越低。视频和语音应用程序对网络抖动和延迟特别敏感。



CDN将所有服务器整合到一个网络中,并提供更快的内容加载速度。有时可以将用户的等待时间减少5-6秒。 CDN的目标是通过提供最接近最终用户的服务器中的内容来优化传递。这与Anycast非常相似,后者根据最终用户的位置选择最近的服务器。似乎每个CDN提供程序默认都将使用Anycast,但实际上并非如此。



使用HTTP / TCP等协议的应用程序依赖于已建立的连接。如果选择了新的Anycast节点(例如,如果服务器出现故障),则服务可能会中断。这就是为什么以前建议将Anycast用于UDP和DNS等无连接服务的原因。但是,Anycast对于面向连接的协议非常有效,例如TCP在Anycast模式下可以正常工作。



一些CDN提供程序使用基于Anycast的路由,其他一些则更喜欢基于DNS的路由:根据用户的DNS服务器所在的位置选择最近的服务器。



混合和多数据中心基础架构是Anycast的另一个用例。从提供商处获得的负载平衡IP地址使您可以在提供商数据中心中不同客户端服务的IP地址之间分配负载。借助任何设备寻址技术,它都可以为高流量,高弹性提供更好的性能,并有助于优化大量用户的响应时间。



在混合多数据中心基础结构中,您可以在服务器之间甚至在专用服务器上的虚拟机之间分配流量。



因此,有很多用于建筑基础设施的技术解决方案可供选择。您还可以使用组中的任何设备来配置多个数据中心之间的IP负载平衡,以优化站点性能。



您可以根据自己的规则分配流量,从而定义每个数据中心中每个分布式服务器的“权重”。当您具有分布式服务器暂存区并且服务的性能不一致时,此配置特别有用。这使您可以更频繁地分配流量以提高服务器性能。



要使用ping命令创建监视系统,可以配置探针。这使管理员可以定义自己的监视过程,并更清楚地了解基础结构中每个组件的运行状况。这样,可以定义可访问性标准。



有可能构建混合基础结构:有时将后勤部门留在公司网络中,并将前端部分转移到外包给提供商很方便。



可以添加SSL证书以实现负载平衡,传输数据的加密以及站点访问者与公司基础结构之间通信的安全性。对于数据中心之间的负载平衡,也可以使用SSL。



可以从您的ISP获得Anycast地址负载平衡服务。此功能将有助于改善用户根据位置与应用进行交互的方式。声明数据中心中可用的服务就足够了,流量将被重定向到最近的基础架构。如果有专用服务器,例如在法国或北美,则将客户端定向到网络上最近的服务器。



Anycast的一种用例是运营商在场点(PoP)的最佳选择。让我们举个例子... LinkedIn(在俄罗斯受阻)不仅致力于提高其产品(移动和Web应用程序)的性能和速度,而且还致力于改善网络基础架构以加快内容交付。对于这种动态内容交付,LinkedIn积极使用PoP(存在点)。任意播适用于将用户定向到最近的PoP。



原因是在Unycast情况下,LinkedIn上的每个PoP都有一个唯一的IP地址。然后,使用DNS根据用户的地理位置为用户分配PoP。问题在于,使用DNS时,美国大约30%的用户被重定向到次优的PoP。通过分阶段实施Anycast,次优PoP分配从31%下降到10%。





, Y — PoP. «» Anycast PoP.



Anycast



从理论上讲,Anycast网络很简单:为多个物理服务器分配了BGP用于确定路由的相同IP地址。但是,Anycast平台的实现和设计很复杂,Anycast容错网络对此尤为著名。更具挑战性的是对Anycast网络的有效监控,以快速识别和隔离故障。



如果服务使用第三方CDN提供程序来提供其内容,则对它们监视和验证网络性能非常重要。基于Anycast的CDN监视专注于测量端到端延迟和倒数第二跳性能,以了解哪个数据中心在为内容提供服务。分析HTTP服务器标头是确定数据来自何处的另一种方法。





示例:HTTP响应头,指示CDN服务器的位置。



例如,CloudFlare在HTTP响应消息中使用其自己的CF-Ray标头,其中包括对该请求所针对的数据中心的指示。对于Zendesk,西雅图地区的CF-Ray标头是CF-RAY:2a21675e65fd2a3d-SEA,而阿姆斯特丹的CF-Ray标头是2a216896b93a0c71-AMS。您还可以使用HTTP响应中的HTTP X标头来确定内容的位置。



其他寻址方法



还有其他用于将用户请求路由到特定网络端点的寻址方法:
单播

当今大多数互联网都使用这种方法。单播-单播传输,IP地址仅与网络上的一个特定节点关联。这称为一对一对应。 

Multicast

Multicast « » « ». . ( ). Multicast Anycast, , Anycast , .

Broadcast

, . , ( ).

Geocast

Geocast Multicast: . , . .



(Geo Router) . , , . .









单播,多播和广播。



使用Anycast技术可以提高DNS的可靠性,弹性和安全性。使用此技术,运营商可以为客户提供各种类型的基于DNS的负载平衡。在控制面板中,您可以根据地理位置指定将请求发送到的IP地址。这将使客户端能够更灵活地分发用户请求。



一些运营商使用POP路由监控:系统会自动分析最短的本地和全局路由的存在点,并将其重定向到延迟最小,零停机时间的地理位置。



目前,Anycast是构建高负载DNS服务的最稳定,最可靠的解决方案,而DNS服务对稳定性和可靠性有很高的要求。



.ru域支持35个Anycast DNS服务器,这些服务器分为20个节点,分布在五个Anycast云中。在这种情况下,使用基于地理的构造原理,即 地理广播。放置DNS节点时,计划将其移动到地理位置最分散的位置,靠近最活跃的用户,俄罗斯提供商最大程度地集中在该节点的站点,以及可用容量的可用性和与站点交互的便利性。



如何建立CDN?



CDN是一个服务器网络,可以加速向用户的内容交付。内容交付网络将所有服务器连接到一个网络中,并提供更快的内容加载速度。服务器到用户的距离在下载速度中起着重要作用。



CDN允许您使用最接近目标受众的服务器。这减少了等待时间,有助于加快所有访客的网站内容加载,这对于具有大文件或多媒体服务的网站而言尤其重要。典型的CDN应用是电子商务和娱乐。



CDN基础结构中创建的附加服务器网络尽可能靠近用户,这有助于更稳定,更快地传递数据。据统计,与没有CDN的站点相比,使用CDN可以将访问站点的延迟减少70%以上。



如何使用DNS创建CDN?使用您自己的Anycast解决方案设置CDN可能是一个非常昂贵的项目,但是有更便宜的选择。例如,您可以使用具有唯一IP地址的GeoDNS和常规服务器。借助GeoDNS服务,您可以创建一个地理位置CDN,根据访问者的真实位置(而不是DNS解析器的位置)做出决策。您可以将DNS区域配置为向来自美国的访问者显示美国服务器的IP地址,欧洲访问者将看到来自欧洲的IP地址。



使用GeoDNS,可以根据用户的IP地址返回不同的DNS响应。为此,DNS服务器被配置为根据请求中的原始IP地址返回不同的IP地址。通常,GeoIP数据库用于确定发出请求的区域。使用DNS进行地理定位可以让您从附近站点向用户发送内容。



GeoDNS定义了发出DNS请求的客户端的IP地址,或用于处理客户端请求的ISP递归DNS服务器的IP。国家/地区由客户的IP和GeoIP库确定。然后,客户端将获取最近的CDN服务器的IP地址。您可以在此处阅读有关设置GeoDNS的更多信息



任播还是GeoDNS?



虽然Anycast是一种在全球范围内交付内容的好方法,但它缺乏特异性。这就是GeoDNS的用武之地。此服务使您可以创建规则,以根据用户的位置将用户发送到唯一的端点。





示例:来自欧洲的用户被定向到另一个端点。



您也可以通过删除所有请求来拒绝对域的访问。特别是,这是一种切断入侵者的快速方法。



GeoDNS提供比Anycast更准确的答案。在Anycast的情况下,最短的路由由跃点数确定,而在GeoDNS中,最终用户的路由基于其物理位置。创建细化路由规则时,这可以减少延迟并提高准确性。



切换到域时,浏览器将与最近的DNS服务器联系,DNS服务器将根据域发布用于加载站点的IP地址。假设在线商店在美国和欧洲很流行,并且DNS服务器仅在欧洲。然后,来自美国的想要使用商店服务的用户将不得不向最近的服务器发送请求,并且由于距离很远,因此等待答案将花费很长的时间-网站无法快速加载。



当GeoDNS服务器位于美国时,用户将已经引用它。答案将很快,这将影响网站的加载速度。



在美国使用现有DNS服务器的情况下,当来自美国的用户访问该域时,他将联系最近的服务器,该服务器将提供所需的IP。用户将被定向到包含站点内容的服务器,但是由于包含内容的服务器很远,因此他不会很快收到它。



如果我们将带有缓存数据的CDN服务器放置在美国,则在加载后,客户端的浏览器将向最近的DNS服务器发送请求,DNS服务器将发回正确的IP地址。具有获得的IP的浏览器将地址最接近的CDN服务器和主服务器,并且CDN服务器将缓存的内容发送到浏览器。在加载缓存的内容时,将从主服务器接收到缺少加载整个站点的文件。结果,减少了站点加载时间,因为从主服务器发送的文件要少得多。



确定特定IP地址的确切位置并不总是一件容易的事:有许多因素在起作用,并且IP地址范围的所有者可能会决定在世界的另一端宣布该地址(然后您必须等待数据库更新以获取正确的位置)。有时,VPS提供商会为新加坡的VPS分配据信在美国的地址。



与使用Anycast地址不同,分发是在名称解析期间完成的,而不是在连接到缓存服务器的过程中完成的。如果递归服务器不支持EDNS客户端子网,那么将使用该递归服务器的位置,而不是将要连接到缓存服务器的用户的位置。



DNS中的客户端子网是DNS扩展(RFC7871),它定义了递归DNS服务器如何将客户端信息发送到DNS服务器,特别是GeoDNS服务器可用来更精确地定位客户端的网络信息。



大多数服务器使用其ISP的DNS服务器或地理位置更接近它们的DNS服务器,但是如果美国某人出于某种原因决定使用位于澳大利亚的DNS解析器,则很可能会获得IP。最接近澳大利亚的服务器地址。



如果要使用GeoDNS,了解这些功能很重要,因为在某些情况下,它可能会增加缓存服务器和客户端之间的距离。



简介:如果要将多个VPS组合成一个CDN,那么最好的部署选项是使​​用具有GeoDNS + Anycast功能的DNS服务器捆绑包。






All Articles