什么是“任意播”,它有什么帮助?


85

直到几秒钟前,当我读到“ 什么是一些很酷或有用的服务器/网络技巧? ” 时,我才从未听说过任何广播。

维基百科上的“ Anycast ”文章非常正式,并没有真正引起人们对其使用方式的心理印象。

有人可以用一些非正式的句子解释什么是“任意播送”,如何配置(从一般意义上来说),以及它的好处是什么(使它更容易实现)?

Answers:


88

任播是一种网络技术,其中从多个位置通告相同的IP前缀。然后,网络根据路由协议成本以及可能的广告服务器的“运行状况”,决定将用户请求路由至哪个位置。

任播有几个好处。首先,在稳定状态下,任播服务(DNS是一个很好的例子)的用户将始终连接到“最近的”(从路由协议角度而言)DNS服务器。这样可以减少延迟,并提供一定级别的负载平衡(假设您的使用者在您的网络中均匀分布)。

另一个优点是易于配置管理。您不必在服务器/工作站的部署位置(亚洲,美洲,欧洲)配置不同的DNS服务器,而是在每个位置都配置一个IP地址。

根据任播的实现方式,它还可以提供一定程度的高可用性。如果任播路由的广告以某种健康检查为条件(例如,在此示例中,例如,对一个众所周知的域的DNS查询),则只要服务器发生故障,就可以删除其路由。一旦网络重新融合,用户请求将被无缝转发到下一个最接近的DNS实例,而无需任何手动干预或重新配置。

最后一个优势是水平缩放;如果您发现一台服务器负载过大,只需将另一台服务器部署在可以容纳过载服务器请求的一部分的位置即可。同样,由于不需要客户端配置,因此可以很快完成。


与单播相比,任播是否使用更多带宽?假设我们有一千个服务器共享相同的IP地址,当我们向该地址发送数据包时它占用的带宽是否比单播更多?
Pacerier,2014年

5
否-发送到任播地址的流量只会到达广告该地址的一个位置。您可能正在考虑多播,其中将发送到多播组地址的数据包发送到对该组感兴趣的所有主机。
Murali Suriar 2014年

通过域名解决“ 不是不必根据部署服务器/工作站的位置来配置不同的DNS服务器 ”的问题是否可以解决?那么,只要简单地复制已经在做的域名,任播的意义何在?
Pacerier's

1
@Pacerier-您无法使用域名来查找DNS服务器-这是循环依赖项。示例:配置dns.foo.com。作为您的DNS服务器。我将请求发送到dns.foo.com的哪个IP地址?我知道,我将在DNS中进行查找。等
Murali Suriar

32

在理解“任播”时经常使我困惑的一件事是,尽管它是一个高级术语,但在实际实现中,通常可以归结为两个示例:

  1. 使用BGP的路由器通过多个AS路径通告相同的IP块,这是将用户定向到“较近”站点的一种粗略方法。同时,它仅通过从有问题的站点撤回路由就可以向其他站点提供几乎透明的故障转移。尽管显然它引起了许多后端数据同步问题,但它几乎对任何协议都有用。

  2. 从您自己的网络中的多个点播发相同的服务IP(通过静态路由OSPFEIGRP或其他方式)。如果路由的权重不同,它将充当故障转移机制。如果对路由进行平均加权,则可以利用大多数名牌供应商路由器的按分组或按流负载均衡功能。您必须小心应用层协议对此感到满意,这就是为什么您几乎总是听说它与DNS一起使用的原因请求始终是一个数据包,而所有内容都是无状态的。就个人而言,我认为这是将DNS和适当的负载平衡器结合使用几乎总是一个更好的解决方案时,应用程序层对网络层的入侵。


+1提及一个数据包和无状态性
nponeccop 2014年

3
DNS的问题是可以使用Google或其他远程解析器,而离解析器最近的服务器可能与用户不同。当然,这仅适用于非DNS使用的任何广播都是有效的(例如tcp anycast或其他使用)。
akostadinov 2014年

@cagenut,如果按包进行负载平衡(由于权重均匀或其他原因),HTTP会中断吗?
Pacerier '16

16

主要用于基于UDP的服务,例如DNS。基本上,您宣布从全球多个数据中心发出的相同路由。这样,您的客户端将基于BGP路由发送到“最佳”和“最近”的数据中心。我将“最佳”和“最接近”用引号引起来,因为网络提供商可以玩游戏并以不同的方式路由来自某些网络的流量。通常,通过任播可以达到最佳效果,但这不是保证。

例如,将您的DNS服务器列为1.2.3.4和1.2.3.5。您的路由器会宣布多个数据中心中1.2.3 / 24的路由。如果您在日本并且在那里有数据中心,那么您很可能最终会在那里。如果您在美国,则会将您发送到美国数据中心。同样,它基于BGP路由而不是实际的地理路由,但这通常是问题所在。


1
那么如何避免冲突?
Pacerier,2014年

我不确定冲突是什么意思。BGP确实不允许冲突。它只是选择一条路线。任播的一个(通常被忽略的)问题是合法的。从技术上讲,任意播都包含不同的专利。没有人强制执行此操作,但是不同的流量类型(CDN,DNS,TCP与UDP)涵盖了不同的专利。本段应包含IANAL。
2016年

那么,您是说那些ip2location服务不正确?因为没有IP的正式位置,并且可以在任何地方(取决于您与哪台BGP计算机交谈)?
Pacerier,

9

根据我的原始回复,我在博客上发布了另外两篇文章,标题为:Anycast DNS-第3部分,使用RIP和Anycast DNS-第3部分,使用RIP(续)。后者有更多详细信息,但在www.netlinxinc.com/netlinx-blog.html上,您将找到有关如何使用RIP为Anycast DNS配置Cisco路由器和基于开源Quagga主机的路由软件的实际方法。

我目前正在撰写该系列的第四篇文章。这将提供有关如何使用OSPF部署Anycast DNS的方法。在本系列的最后一部分中,我将展示使用BGP部署Anycast DNS的方法。

Anycast DNS-第1部分,概述

Anycast DNS-第2部分,使用静态路由

Anycast DNS-第3部分,使用RIP

Anycast DNS-第3部分,使用RIP(续)


真的,由于存在任何广播,全球互联网上的其他人可能具有与您的ISP提供给您的公共IP相同的公共IP吗?
Pacerier's

仅ISP能够部署任播服务器不是真的吗?
Pacerier,

实际上,您将需要拥有多个 ISP才能进行任播。
Pacerier,

4

鉴于目前主要是DNS ...

非正式地,它允许您使用相同的地址在世界各地的多个位置设置相同的服务,从而使您的服务更具弹性,并具有更好的网络访问/延迟/速度。当有人查询该地址时,他们会获得最接近/最佳的路线。

从服务器角度来看:

如果单播是您要去一个人,多播是要去几个人,广播是要去所有的人,那么任播就是精神分裂症,具有多种个性,最适合每个人的个性与他们联系。嗯 这不是最好的比喻。


3

DNS的一个真正有趣的用途是Anycast。您可以在不同的物理和网络位置中放置5个不同的DNS服务器,但共享一个(或有时同时为主和辅助DNS)地址。根据源位置,它们会被路由到最近的节点。这样可以实现一些流量平衡,并且在DNS服务器死机时提供冗余。


但是DNS系统是否已不提供冗余?
Pacerier's

2

据我的一位同事称,它还可以用作缓解DoS攻击的技术,因为人们只能攻击“最近的”任播IP地址,因此,如果在美国有很多僵尸网络,那么您的欧元站点就是大多数情况下不受影响,因为它们实际上无法向其发送数据包。

如果它们很明显地来自不太可能在B​​GP中作为正确路由在BGP中宣告的某个地方(例如,当ASN指示为N American时进入欧洲的数据包),也可以使用它作为一种(天真地)过滤欺骗数据包的方法。块)。


1
好吧,即使在这种简单的情况下,也只能阻止AS路径的人转到该服务器-例如,您可以阻止从Comcast到达您的人,但不能阻止从AT&T到达您的人。如果您已经为故障转移“正确地”设置了它(跟踪L7服务,当它出现故障时停止通知),那么处理DoS攻击实际上要复杂得多,因为它会破坏一台服务器,然后在它转移到下一台服务器时公告已被删除...
James Cape 2010年

@JamesCape,有趣,但是当他们移到下一个时,dos失败了,因为人们无法正确连接?
和平者

@Pacerier在最简单的情况下,您只是在没有智能的情况下到处宣传相同的IP,是的。但是,如果由于服务没有响应而试图变得聪明并在美国撤回广告,那么剩下的唯一广告将是欧洲的广告。因此,所有美国僵尸都将命中下一台可用的服务器,并杀死该服务器。
詹姆斯·开普

2

还需要注意的是,对于某些无法在重置或长时间对话后存活的TCP连接,Anycast的质量或可靠性都不高。

使用BGP的任播IP告诉Internet,有2条,3条或3条以上的路径指向特定的HOST,但是实际上它们不是同一台主机,它们是跨多个数据中心发布的主机的精确副本,以实现较低的延迟连接。

例如,我有3台服务器执行198.251.86.133的301非www重定向,如果您对此主机执行ping操作,您有时可能会收到DUPLICATE响应,甚至可能会掉线,具体取决于您所在的位置,因为我的服务器是美国东部,美国-West和EUR。对于短时间的连接(例如浏览器缓存的301),这可以通过最近的数据中心中的本地服务器做出快速响应。

从冗余的角度来看,任何广播都没有内置的冗余,您仍然需要每个站点独立的冗余,因为IP(在典型情况下)始终指向这些数据中心。


重新“ ping”;不能ping UDP连接吗?
Pacerier,

Re“因为IP在典型情况下将始终指向那些数据中心”;你确定吗?如果该服务器停电,他们将开始指向下一个最近的服务器,不是吗?
Pacerier,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.