iBGP 和 IGP 的关系

网络工程 路由 bgp ospf
2021-07-31 17:11:51

假设 AS100 是一个多宿主 AS,连接到 AS200 和 AS300。它有两个 eBGP 边界路由器 - B1 连接到 AS200,B2 连接到 AS300。AS100内部的IGP是OSPF。

如果 B1 知道 AS200,B2 知道 AS300,并且 AS100 中运行着 IGP 协议,那为什么还有人需要内部 BGP (iBGP)?

我认为这就是 OSPF 的重点——它告诉 AS 内的每个路由器有关可访问网络和正确路径的信息,因此来自任何网络对的两台主机都可以通信。所以如果 B1 知道 AS200,我认为 IGP 只是介入并告诉 AS100 中的其他人,包括 B2,关于 AS100 的网络。

但是出于某种原因,B1 和 B2 之间仍然需要 iBGP 才能使 thigs 充分工作。是因为 B2 需要知道与 B1 完全相同的事情,反之亦然,而 IGP 没有告诉 B2 B1 知道的所有事情(不知道为什么)?

如果您能以最直接的方式解释它,我将不胜感激。

2个回答

并非总是需要 iBGP。许多带有 eBGP 的网络在没有它的情况下运行良好。

在两种情况下,iBGP 很重要。

您是交通服务提供商。这意味着您允许流量通过您的 AS。在您的示例中,您允许 AS 200 通过您到达 AS 300。在这种情况下,B1 需要知道 B2 的路由,以便将它们通告给 AS 200,反之亦然。运行 OSPF 的内部路由器不需要知道所有这些路由。所以 B1 使用 iBGP 与 B2 对话。

您有多个边界路由器,它们需要确定最佳路径。许多人都有一条默认路线将流量吸引到您的边缘,但是您可能有多个运营商可供选择。B1 需要知道 B2 的路由,以便它可以将流量转发到 B2,如果这是一条更好的路径。

这个较早的 SE 问题也可能对您有所帮助。

有几本关于 BGP 设计的好书,阅读它们会对您有所帮助。寻找 Halabi、Stewart 或 Zhang 的书。

除了 Ron 解释的内容之外,您还应该了解每个路由协议都维护自己的表,该表与路由器用于转发流量的路由表是分开的。运行 eBGP 的路由器共享其 BGP 表可能很有用,如果它们在同一个 AS 中,则需要 iBGP 来执行此操作。

运行 BGP 和 OSPF 的路由器不会在路由协议之间共享路由,除非您专门将这些路由从一种路由协议重新分配到另一种路由协议。这会带来问题,因为每个路由协议的度量、属性和管理距离都不同。BGP 维护了很多 OSPF 没有的信息。如果您在路由器 1 上获得 eBGP 路由,将这些路由重新分配到 OSPF,并将它们发送到路由器 2(也运行 BGP),然后将它们重新分配回 BGP,则您已经丢失了路由器 1 收到的所有 BGP 属性。

维护从一个 BGP 路由器到另一个 BGP 路由器的 BGP 属性的唯一方法是让它们与 BGP 通信,并且在与 iBGP 相同的 AS 中。