![互联网路由(BGP)是否完全自动化?](https://linux22.com/image/527107/%E4%BA%92%E8%81%94%E7%BD%91%E8%B7%AF%E7%94%B1%EF%BC%88BGP%EF%BC%89%E6%98%AF%E5%90%A6%E5%AE%8C%E5%85%A8%E8%87%AA%E5%8A%A8%E5%8C%96%EF%BC%9F.png)
如果互联网上的所有路由表同时被删除,路由器是否能够自动重新发现它们?
我正在与一位同事争论,他说 RIPE 路由表至关重要,但我记得读过,如果路由表消失,BGP 协议将允许路由器通过查询邻居来重新发现节点之间的工作路由,而邻居又会查询邻居,直到检测到工作路由。然后该路由将用于重新填充路由表。一段时间后,所有路由都将恢复(不一定是最佳路由)。
那是对的吗?
答案1
实际上,没有一个单一的互联网路由表,一切都取决于您所在的位置以及您的连接情况。路由是聚合的,路径可能有所不同等。
为了便于讨论,假设所有互联网路由器都丢失了路由表,则重建路由表不会花费大量时间,因为路由表中仍会存在来自网络的广告。这主要取决于路由器 CPU 来处理大量的路由表更新。
不存在“RIPE 路由表”之类的东西,RIPE/ARIN 等维护 whois 记录。这些不是路由条目,只是所有权记录,尽管一些 ISP(例如 Level3)使用这些记录来构建用于阻止随机公告的前缀过滤器。
该过程结束时,所有路线都将恢复为其(理论上)最佳路线(如今,最佳路线是一个非常宽泛的短语,涉及网络中立、运输成本等)。
答案2
由于没有中央控制,BGP 路由器可以自动重建其表。每个路由器都会向其邻居通告可通过自身访问的 IP 前缀,并接受来自其邻居的类似通告。
假设 A、B、C 是 3 个 BGP 路由器。初始时 A 的路由表为 (B,C),B 的路由表为 (A,C),C 的路由表为 (A,B)。现在我们删除它们的路由表。
A()---B()---C()
A 将向 B 发送其 IP 前缀。B 将向 C 发送其自身和 A 的 IP 前缀(因为其路由表中有这些前缀),因此现在 C 拥有完整的路由表
A()---> B(A)---> C(A,B)
C 将向 B 发送其 IP 前缀。B 将向 A 发送其自身和 C 的 IP 前缀,因此现在 A 再次拥有完整的路由表
A (B,C) <--- B (A,C) <--- C (A,B)
通过上述过程,B 也重建了一张完整的表。
相同的程序适用于所有互联网路由器,最终它们可以随时重建其表而无需任何中央协调。如果您想要更多详细信息,可以搜索“路径向量协议”,其优点是无需中央协调即可运行,并且可以扩展到非常多的节点(例如路由器)。
RIPE 的作用是将 IP 前缀分配给自治系统。此后,它在互联网路由中不再发挥任何积极作用。
答案3
即使他们有能力,他们也不会这么做。互联网不是技术问题,而是生意。如果有人不支付您需要将数据包从 A 点传送到 B 点,但您并没有这样做。如果没有适当的配置,路由器将不知道要接受哪些路由。
如果您连接到英国的 Level3 而我连接到日本的 AT&T,那么即使 TW Telecom 拥有从英国的 Level3 到日本的 AT&T 的优质路由,流量也不会走那条路由,因为没有人付钱给 TW Telecom 来承载这些流量。
必须配置路由器才能知道接受哪些路由。