it-swarm.cn

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

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

维基百科上的“ Anycast ”文章是相当正式的,并没有真正让人联想到如何使用它。

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

85
username

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

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

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

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

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

88
Murali Suriar

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

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

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

32
cagenut

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

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

16
diq

根据我的原始回复,我在博客上发布了另外两篇文章,标题为: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(续)

9
netlinxman

鉴于目前主要是DNS ...

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

从服务器角度来看:

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

4
Alex

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

3
dexedrine

还需要注意的是,对于某些TCP在重置或任何长时间的对话后都无法幸存的连接),Anycast的性能不好或不可靠。

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

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

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

2
Jacob Evans

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

如果欺骗性数据包显然来自不太可能在B​​GP中作为正确路由在BGP中宣告的某处(例如,当ASN指示为N American时进入欧洲的数据包),也有可能将其用作(有点天真)过滤欺骗性数据包的方法。块)。

2
MarkR