直到几秒钟前,当我读到“什么是一些很酷或有用的服务器/网络技巧?”时,我才从未听说过任何播客。并没有真正让人联想到如何使用它。

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

#1 楼

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

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

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

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

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

评论


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

–起搏器
14年5月13日在6:34



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

– Murali Suriar
2014年5月17日上午10:10

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

–起搏器
17年9月8日在5:26

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

– Murali Suriar
17年9月8日在10:20

#2 楼

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


使用BGP的路由器通过多个AS路径发布同一IP块,作为将用户定向到“较近”站点的一种粗略方法。同时,它仅通过从出现问题的站点撤回路由就可以向其他站点提供几乎透明的故障转移。尽管几乎会引起很多后端数据同步问题,但这对几乎所有协议都是有用的。
从您自己的网络中的多个点(通过静态路由,OSPF,EIGRP或其他方式)对相同的服务IP进行广告。如果路由的权重不同,它将充当故障转移机制。如果对路由进行平均加权,则可以利用大多数名牌供应商路由器的按分组或按流负载均衡功能。您必须小心应用层协议对此感到满意,这就是为什么您几乎总是听说它与DNS一起使用的情况,其中请求始终是一个数据包,而所有内容都是无状态的。就我个人而言,我认为这是将DNS和适当的负载平衡器结合使用几乎总是更好的解决方案,这是应用程序层对网络层的恶意入侵。


评论


+1表示一个数据包和无状态

– nponeccop
2014-2-17在8:13

DNS的问题是,可以使用Google或其他远程解析器,而离解析器最近的服务器可能不同于用户。当然,这仅对非DNS使用情况有效(例如tcp anycast或其他用法)。

–akostadinov
2014年7月11日9:27



@cagenut,在按数据包进行负载平衡的情况下(由于权重均匀或其他原因),HTTP会中断吗?

–起搏器
16年4月14日在21:03

#3 楼

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

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

评论


那么如何避免冲突?

–起搏器
2014年5月13日下午6:36

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

– diq
16年1月31日在21:01



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

–起搏器
18 Mar 11 '18 at 14:15

#4 楼

根据最初的答复,我在博客上发布了另外两篇文章,分别为: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吗?

–起搏器
17年9月8日在5:31

只有ISP能够部署任意播服务器,这不是真的吗?

–起搏器
18 Mar 11 '18 at 14:59

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

–起搏器
18年3月11日在17:12

#5 楼

鉴于目前主要是DNS ...

通过允许您在全球多个位置设置相同的服务,它可以使您的服务更具弹性,并具有更好的网络访问/延迟/速度。使用相同的地址。当某人查询该地址时,他们会获得最接近/最佳的路由。

从服务器的角度来看:

如果单播将成为一个人,多播就是广播,然后广播就是所有人。那么,任意广播就是精神分裂症,具有多种个性,最适合每个人的个性与他们联系在一起。嗯这不是最好的比喻。

#6 楼

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

评论


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

–起搏器
17年9月8日在5:36

#7 楼

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

如果显然是来自不太可能的地方,也可以使用它作为一种方法(有点天真)来过滤欺骗的数据包在BGP中作为正确的路由进行通告(例如,当ASN指示N American阻止时,数据包进入欧洲)。

评论


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

–詹姆斯·开普(James Cape)
10 Nov 22 '23:18



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

–起搏器
18年3月11日在15:10

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

–詹姆斯·开普(James Cape)
18年3月13日在21:34

#8 楼

还需要注意的是,Anycast对于某些无法通过重置或长时间对话幸存的TCP连接而言不是很好或不可靠。

Anycast IP使用BGP告诉互联网,其中有2、3或到特定主机的更多路径,但是实际上它们不是同一主机,它们是跨多个数据中心发布的主机的精确副本,以实现较低的延迟连接。例如,我有3台服务器对于198.251.86.133的301非www重定向,如果您ping通此主机,由于我的服务器是美国东部,美国西部和欧元,您有时可能会收到DUPLICATE响应,甚至可能会掉线,具体取决于您所在的位置。对于短时间的连接(例如浏览器缓存的301连接),这可以通过最近的数据中心中的本地服务器做出快速响应。

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

评论


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

–起搏器
18年3月11日在15:14

Re“因为IP在典型情况下将始终指向那些数据中心”;你确定吗?如果该服务器停电,他们将开始指向下一个最近的服务器,不是吗?

–起搏器
18 Mar 11 '18 at 15:14