你混淆了几个概念。在你的例子中:
edge -R1 - R2 - R3 - R4 -edge
您可能会遇到 iBGP 问题,因为如果所有路由器都运行 iBGP,那么每个路由器都需要与其他所有路由器建立 iBGP 连接(至少是逻辑连接)。这并不意味着每个路由器都必须物理连接到每个其他路由器,但这确实意味着您需要一个 IGP 或静态路由,以便每个路由器知道如何到达每个其他路由器。例如,R1 知道如何到达 R2 直连接口,但如果没有 IGP 或静态路由的帮助,它不知道如何到达 R2 环回接口或 R3 和 R4。
即使您在所有路由器上运行 iBGP,您仍然需要一个 IGP,以便每个路由器都知道如何到达所有其他路由器,因为无法将 iBGP 学习到的路由通告给另一个 iBGP 发言者。例如,使用 iBGP,R3 可以将其与 R4 的链接告诉 R2,但 R2 无法将这条链接告诉 R1,因为它是由 R2 通过 iBGP 获知的。如果您运行 IGP,则 IGP 可以将 AS 中的所有路由告诉每个路由器。
是否在所有内部路由器上运行 iBGP 或在边缘路由器之间使用隧道实际上取决于您使用 eBGP 路由的原因。如果你没有将 eBGP 学习到的路由分发到你的 IGP 中(尝试配置静态路由,除了默认路由,对于 Internet 路由表来说真的是不可能的),那么 R2 和 R3 不知道将外部目的地的流量发送到哪里.
如果您只是需要冗余 Internet 连接并通过 BGP 将您的内部网络通告给邻居 AS,那么您可能不需要运行 iBGP 或在边缘路由器之间建立隧道。简单地在您的 AS 内通告默认路由可能就足够了,但您可以将 eBGP 学习的路由重新分配到您的 IGP 中(除非您有充分的理由,否则不建议这样做)。
如果您的 AS 想要选择最佳出口路由器,那么您可以将 eBGP 学习到的路由重新分配到 IGP(可能不是一个好主意,但可以这样做),或者您可以在所有路由器上运行 iBGP。
在传输 AS 的情况下(预计流量从 AS 的一侧进入并在 AS 的另一侧退出),那么,是的,您可能确实希望在您的 AS 中的所有路由器上使用 iBGP,或者您想要如果您不想用完整的 Internet 路由表加重内部路由器的负担,则可以在边缘路由器之间建立隧道。