根据此答案, Google DNS (8.8.8.8) 在全球范围内的延迟很低,因为它使用任播。
任播是如何实际实现的?也就是说,数据包如何路由到世界各地的不同计算机?
这不是意味着存在不同版本的路由表吗?如果是,谁控制这些路由表包含的内容?
根据此答案, Google DNS (8.8.8.8) 在全球范围内的延迟很低,因为它使用任播。
任播是如何实际实现的?也就是说,数据包如何路由到世界各地的不同计算机?
这不是意味着存在不同版本的路由表吗?如果是,谁控制这些路由表包含的内容?
这不是意味着存在不同版本的路由表吗?如果是,谁控制这些路由表包含的内容?
是的。每个路由器维护自己的路由表。任播只是从多个地方广播同一个网络。接收到同一网络的多个广告的路由器将根据路由协议的度量选择将哪个广告放置在其路由表中。这导致路由器使用最近的(从路由协议度量的角度来看)目的地。
例如,BGP 通过 AS_PATH 属性中的 AS 数量确定多个目的地中的哪一个最接近的主要方式。如果路由器收到五个8.8.0.0/16
网络通告,它将选择一个放置在其路由表中,然后将目的地为该8.8.8.8
网络的流量路由。如果具有该网络的站点出现故障,其路由表中的条目将被撤销,而下一个最近的目的地将被放置在其路由表中。
不同位置的不同路由器将各自独立确定哪个目的地最近。任播只是从多个站点向同一个网络做广告,并让每个路由器自行确定将流量发送到该网络的位置。
每个路由器都有自己的路由表。路由表是由路由器基于与其他路由器交换路由信息以及路由器所有者设置的策略而构建的。
ISP 之间的确切策略会有所不同,但作为一般规则,较短的 AS 路径优先于较长的 AS 路径,如果 AS 路径的长度相同,则较近的出口优先于较远的出口。
Google 与世界各地许多地方的其他网络互连。在这些位置中的每一个,它们都会通告 8.8.8.0/24 地址块。路由规则的制定使得到 8.8.8.0/24 块的流量通常被传送到靠近发件人的位置的谷歌网络。
一旦进入谷歌的网络,谷歌就可以将流量路由到附近的 DNS 服务器集群。
Anycast 的工作原理是宣布来自 Anycast 的所有位置的子网(大多数 /24,因为这是可接受的最小大小)。
最简单的解释来自:https : //downloads.isc.org/isc/pubs/tn/isc-tn-2003-1.txt这是 F-root(ISC,bind9 背后的家伙)任播架构。
或阅读维基百科关于任播的文章。