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