首先,我会质疑其他一些人认为 OSPF 收敛速度比 BGP 快的断言,但稍后会对此进行更多讨论。先回答OP问题。
你两个都想要。
iBGP 旨在在路由器上的环回接口之间运行,并且它不会(至少没有调整和转动一些旋钮)改变它所通告的路由的任何属性(包括下一跳)。
那么这有什么影响呢?
让我们将您的边界路由器称为路由器 A 和路由器 B,并将您的三个接入路由器称为路由器 1、路由器 2 和路由器 3。
路由器 A 和 B 从您的上游获取完整的 Internet 馈送,并将下一跳设置为互连链路上的上游接口地址。当这些路由再次通过 iBGP 传递时,除非您进行调整,否则路由器 1、2 和 3 接收的路由的下一跳仍然是该互连链路远端的 IP 地址。
路由器将执行递归查找以找到该 IP 地址的路径,然后在路由安装在转发表中时使用该下一跳。“但是,”你说,“我会使用 next-hop self。” 请参阅下一段了解这是如何工作的。
“但是,”您也可能会说,“我只是将默认设置发布到路由器 1、2 和 3。” 好的,但是默认路由必须来自某个地方……如果它是一个已经存在的默认路由(比如静态路由),它将有一个可以使用的下一跳。如果它是生成的默认值......它可能会使用 iBGP 会话运行的环回地址作为下一跳。同样,这不会被视为接口,也不会被视为路由器 1、2 和 3 中的直接连接路由,因此它们仍然需要进行递归查找才能找到它。
因此,您需要某种 IGP 运行,例如 OSPF、IS-IS 或 EIGRP,或者甚至只是大量的后台管理静态数据,以实现递归查找的可达性。
“但是,”你又说,“我将在接口地址而不是环回上运行 iBGP 会话。好的,但现在你的 BGP 对等会话依赖于“启动”工作的接口。因此,例如,如果路由器 1 和路由器 A 之间的接口发生故障,那么在该接口上运行的 iBGP 对等会话也会发生故障。但是路由器 1 仍然能够向路由器 A 发送流量,它只需要通过路由器 B 来完成。所以,您希望 iBGP 会话保持正常运行,即使这些接口出现故障,因为您的最终下一跳仍在那边,并且那边仍然可以通过另一条路径到达...OSPF(我使用 OSPF,但您可以子 IS- IS 和 EIGRP 在任何您看到 OSPF 的地方)将找出其他内部路径,并在递归查找中正确构建转发表。
所以,是的,您可能可以调整足够多的旋钮并在没有任何 IGP 设置的情况下获得纯 iBGP 设置...
帮自己一个忙,如果您是纯粹的思科商店,请打开 OSPF、IS-IS 或什至 EIGRP(但请考虑您是否真的想接受供应商锁定,如果您这样做...考虑未来的潜在决定使用不同供应商的设备......即使只是为了让思科对你的定价保持诚实)。为路由器之间的所有接口打开它,并使用被动设置在上游连接上进行设置,也可能在使用被动设置的接入路由器的下游连接上进行设置。然后在环回之间设置 iBGP 对等互连。考虑路由反射器(可能在路由器 A 和 B 上)以减少所需的配置工作……从大约 5 个路由器开始这样做是有意义的。
这确实是最明智的方法。
现在,协议收敛速度。
由于这些协议的常见用例,大多数人认为 BGP 很慢而 OSPF(或其他任何东西)很快。人们通常将完整的 Internet 或至少其中的很大一部分拉入 BGP,而仅处理 OSPF 中的内部路由(10 到 100 条,可能是数千条路由)。因此,让我们假设您将一半的 Internet 路由拉入 BGP...尝试构建一个包含 250,000 多个路由的 OSPF 区域,然后让我知道这对您来说是怎样的。让我们看看它是否比 BGP 收敛得更快……或者除非你的路由器上有一个非常强大的控制平面。
在给定情况下,BGP 可以频繁地收敛或重新收敛,比 OSPF 和其他更快,至少取决于您如何衡量它。如果在广播网络中包含 OSPF 的邻居发现,则 BGP 几乎肯定会在类似的路由组合中获胜。
另一个区别是 BGP 将在完成(重新)收敛之前开始将路由放入路由和转发表中,这可能是一个好处,而 OSPF 实现几乎肯定会等到最后才开始将路由放入路由和转发表. 有时,收敛部分路由集会很有用。有时不是。