题 什么是“任播”,它有什么用?


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

维基百科“任播“关于它的文章非常正式,并没有真正唤起人们如何使用它的精神图景。

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


78
2018-05-29 18:54






答案:


Anycast是一种网络技术,其中从多个位置通告相同的IP前缀。然后,网络基于路由协议成本以及可能的广告服务器的“健康”来决定将用户请求路由到哪个位置。

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

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

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

最后一个优点是水平缩放;如果您发现一台服务器负载过重,只需在一个位置部署另一台服务器,以便它可以承担一部分重载服务器的请求。同样,由于不需要客户端配置,因此可以非常快速地完成。


83
2018-05-29 19:22



与单播相比,任播是否使用更多带宽?想象一下,当我们发送数据包时,我们有一千台服务器都共享相同的IP地址 那 地址,与单播相比,它不会占用更多的带宽吗? - Pacerier
否 - 发送到任播地址的流量只会到达广告地址的一个位置。你可能在想 组播,将发送到组播组地址的数据包发送给对该组感兴趣的所有主机。 - Murali Suriar
不是“问题”而不必根据服务器/工作站的部署位置配置不同的DNS服务器“通过域名解决了吗?那么当它简单地复制域名已经在做什么时,任播的重点是什么? - Pacerier
@Pacerier - 您不能使用域名来查找您的DNS服务器 - 这是一个循环依赖。示例:configure dns.foo.com。作为您的DNS服务器。我将请求发送到dns.foo.com的IP地址是什么?我知道,我会在DNS中查找。等等 - Murali Suriar


在理解“任播”时经常让我困惑的一件事是,虽然它是一个高级术语,但在实际实现中,它通常归结为两个例子:

  1. 路由器使用 BGP 通过多个广告相同的IP块  路径是将用户引导到“更近”网站的粗略方式。同时,它通过从故障站点撤回路由,为其他站点提供几乎透明的故障转移。这对几乎任何协议都很有用,但显然会引发许多后端数据同步问题。

  2. 从您自己网络中的多个点广告相同的服务IP(通过 静态路由OSPFEIGRP, 管他呢)。如果路线是加权的 不同它充当故障转移机制。如果路线是加权的  它可以利用大多数名牌供应商路由器的每数据包或每流负载平衡功能。你必须要小心 应用层 协议对此很满意,这就是为什么你几乎总能听到它与之一起使用的原因 DNS 请求始终是一个数据包,一切都是无状态的。就个人而言,当DNS和适当的负载平衡器的组合几乎总是一个更好的解决方案时,我认为这是对网络层的应用程序层关注的hacky入侵。


31
2018-05-30 04:24



提及一个数据包和无状态的+1 - nponeccop
DNS的问题是,可以使用谷歌或其他一些远程解析器和最近的服务器解析器可能与用户不同。当然,这仅适用于非DNS使用的任播(例如tcp任播或其他用法)。 - akostadinov
@cagenut,在每个数据包负载平衡的情况下HTTP会中断吗(由于权重等等)? - Pacerier


主要用于DNS等基于UDP的服务。基本上,您在世界各地的多个数据中心宣布相同的路线。这样,您的客户端将根据BGP路由发送到“最佳”和“最接近”的数据中心。我把“最好”和“最接近”放在引号中,因为网络提供商可以玩游戏并以不同方式路由来自某些网络的流量。一般来说,任播的东西效果都不错,但这不是保证。

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


16
2018-05-29 19:01



如何避免冲突? - Pacerier
我不确定你的冲突是什么意思。 BGP并不真正允许冲突。它只是选择一条路线。任播的一个(经常被忽略的)问题是合法的。从技术上讲,任播都受到不同专利的保护。没有人强制执行此操作,但不同的专利涵盖了不同的流量类型(CDN,DNS,TCP与UDP)。本款应由IANAL承保。 - diq
那么你的意思是那些ip2location服务是不准确的?因为IP没有官方位置,它可能是 随地 取决于您与之通话的BGP计算机? - Pacerier


根据我原来的回复,我刚刚在我的博客上发了两篇文章,题目是: 任播DNS - 第3部分,使用RIP和Anycast DNS - 第3部分,使用RIP(续)。后者将详细介绍,但在www.netlinxinc.com/netlinx-blog.html上,您将找到有关如何使用RIP为Anycast DNS配置Cisco路由器和基于Open Source Quagga主机的路由软件的实际配方。

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

任播DNS - 第1部分,概述

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

任播DNS - 第3部分,使用RIP 

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


8
2018-05-31 16:32



因此,由于任播,全球互联网上的其他人可能拥有与您提供的ISP相同的公共IP吗? - Pacerier
是不是只有ISP能够部署任播服务器? - Pacerier
事实上,你需要拥有 多 互联网服务提供商做任播。 - Pacerier


鉴于此时主要是DNS ...

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

从服务器的角度来看:

如果单人是你去单人,多播是你去几个人,广播就是你去找所有人,那么任播都是schitzophrenic并且具有多种性格,其中最适合每个人的个性与他们联系。嗯。不是最好的比喻。


4
2018-05-29 19:19





任意播放的一个非常有趣的用途是DNS。您可以在各种物理和网络位置放置5个不同的DNS服务器,但共享一个(有时是主DNS和辅助DNS)地址。根据源的位置,它们将路由到最近的节点。这会进行一些流量平衡,如果DNS服务器死亡,它会提供冗余。


3
2018-05-29 19:03



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


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

如果它们显然来自不太可能在B​​GP中作为正确路由通告的某个地方(例如,当ASN指示N美国时进入欧洲的数据包),也可以将其用作(有点天真地)过滤欺骗数据包的方式。块)。


2
2018-05-31 17:16



好吧,即使在简单的情况下,只会阻止那些AS路径进入该服务器的人 - 例如。你可能会阻止那些从康卡斯特那里联系到你的人,而不是AT&T。如果你已经“正确”设置了故障转移(跟踪L7服务,停止宣布它何时发生故障),那么处理DoS攻击实际上要麻烦很多,因为它会核对一个服务器然后移动到下一个服务器上公告被删除...... - James Cape
@JamesCape,很有意思,但是当他们移动到下一个时,dos已经失败,因为人们无法正确连接? - Pacerier
@Pacerier在最简单的情况下,你只是在任何地方宣传相同的IP而没有任何情报,是的。但是,如果你试图变得聪明并在美国撤回广告,因为该服务没有响应,那么剩下的唯一广告将是欧洲的广告。因此,所有美国僵尸都将击中下一个可用的服务器,并杀死那个。 - James Cape


值得注意的是,对于某些无法在重置或任何长时间通话中存活的TCP连接,Anycast不是很好或不可靠。

任播IP,使用BGP,告诉互联网有 特定主机的2,3或更多路径但实际上这些都是 不是同一个主机它们是跨多个数据中心广告的主机的精确副本,以实现更低延迟的连接。

例如,我有3台服务器为198.251.86.133执行301非www重定向,如果您对此主机执行ping操作,您可能会偶尔获得DUPLICATE响应,甚至根据您所在的位置而丢弃,因为我的服务器是美国东部,美国 - 西,和欧元。对于短时间连接(如浏览器缓存的301),这可以使最近数据中心的本地服务器快速响应。

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


2
2017-10-13 12:58



重新“ping”;是不ping UDP连接? - Pacerier
重新“因为IP将(在典型情况下)总是指向那些数据中心”;你确定吗?如果该服务器停电,他们会开始指向下一个最近的服务器不是吗? - Pacerier