IOS BGP 软重新配置入站和对等选项的影响

网络工程 思科 bgp 记忆
2021-07-27 02:57:55

这个场景是一个四台路由器在一个正方形的网络;每个都连接到不同的传输提供商,每个提供商都有完整的 BGP 表。

R1----R2
|     |
|     |
R3----R4

除了接收完整馈送的路由器之外,完整的 BGP 馈送如何影响环中路由器的内存需求?

这里的所有四个路由器都从不同的供应商那里获取完整的馈送,并且是 iBGP 网状的(你可以想象对角线连接 R1 和 R4,以及 R2 和 R3,我的 ASCII 艺术并不出色)。

iBGP 对等体相互发送所有 eBGP 路由,因此,R1 从上游 1 接收完整表。R2 接收来自 upstream2 的完整馈送。R2 将向 R1 发送其所有外部路由,反之亦然。对于任何通过上游 2 接收到的更好的路由,R1 将放入它的 FIB,并将流量发送到 R2。对于所有四个路由器和上游提供商,依此类推。现在,对于通过 upstream3 具有更好路径的流量,它将通过 R3 发送,即使它来自连接到 R1 的设备。这就是 BGP 的美妙之处。

让我们暂时使用 R1 和 R2 来保持简单,它们是第一次启动 BGP 对等互连;

  1. 当 R1 与 upstream1 的 BGP 会话第一次建立时,它接收来自 upstream1 的 BGP 更新,它处理路由并将它们从 BGP RIB 进展到 FIB。

  2. R1 上的所有这些路由现在都通过 iBGP 传递到 R2,R2 将它们全部从其 BGP RIB 推送到 FIB(这些是它目前仅有的外部路由)。

  3. R2 与上游 2 的会话出现并且上游 2 向 R2 发送 BGP 更新。此时,R2 是否比较其 BGP RIB 中的路由,保留更好的路由,丢弃比上游 1 更少的路由,并将替换后的更好的路由推送到 FIB(假设 FIB 中没有来自其他路由协议或来源)。此时,R2 的 BGP RIB 是否仍然只包含一个完整的 BGP 表,但它混合了两个上游提供商的表视图?正确吗?

  4. 现在反过来也会发生同样的情况,R2 向 R1 发送更新。R1 以相同的 BGP 视图结束。

我是否正确,除非soft-reconfiguration inbound配置了类似的东西,否则这个方块中的任何路由器都只能容纳一张完整的桌子?soft-reconfiguration inbound这里启用的内存要求会发生什么变化,每个路由器是否会保存 4 个完整的表并需要 4 倍的内存?

2个回答

Cisco 不断在 BGP 堆栈上工作以实现更好的性能,因此,不同版本之间的内存消耗应该有所不同。查看此文档了解详细信息:BGP – 从恐龙到赛车

也就是说,自从引入BGP 软重置增强功能以来,不鼓励使用入站软重新配置

长话短说,启用软重新配置入站后,IOS 首先为每个对等体保存收到的 NLRI 的本地副本,然后递归地将入口路由策略应用于它们以计算 BGP 实际 BGP RIB。

通过BGP 软重置增强,路由器能够要求其对等方重新发送整个 BGP 馈送,从而无需在内存中存储相同信息的多个副本。

此外,为了在第 2 点回答您的问题,Cisco IOS 中 BGP 信息的内存消耗不是线性的,因为单个 NLRI 与不同的下一跳/策略相关联,以实现最佳内存利用率。所以两个 FRT 消耗的能量是一个的两倍。

就像发送 BGP UPDATE 时打包 BGP 属性一样,它们以相当紧凑的格式存储在内存中,其中每个前缀仅包含对适用于该路由的属性的引用。AS 路径和​​应用于路由的社区通常是最大的属性,并且由于这些属性在大量路由中通常是相同的,因此只需存储一次 AS 路径然后再存储即可节省大量内存保留对此 AS 路径适用的所有路由的引用。确切的内存格式随 IOS/JUNOS 的不同版本而变化。

通过不同的 eBGP 会话接收到的相同前缀的路由可能会共享许多属性(尤其是当 eBGP 会话指向同一个上游时),因此它们可以在内存中非常有效地“打包”。

您对 BGP 行为的解释大部分是正确的。R1 已将其整个 BGP RIB 的内容发送到 R2。R2 的 eBGP 会话已启用,对于收到的每条路由,R2 会将其与其 BGP RIB(主要包含来自 R1 的路由)中的路由进行比较。当 R2 从其新的 eBGP 对等体中找到比 BGP RIB 中的前缀更好的前缀时,它将使用新的 eBGP 路由并将其通告给 R1。如果 R1 发现从 R2 接收的路由比它自己的路由(从其 eBGP 会话接收)更好,则 R2 将撤消它向 R2 宣布的路由。路由器只会宣布它们的最佳路由,如果最佳路由不是来自 eBGP 而是来自另一个 iBGP 邻居,它不会宣布它,除非您也有一些路由反射。

还有一种叫做“最佳外部”的东西,这意味着你总是宣布你最好的 eBGP 路由,不管它是否是你选择的最佳路径。最佳外部通过在出现问题时不必通过“BGP 路径搜索”来提高收敛时间。显然它消耗更多的内存。

我个人认为 BGP 软重置增强不是很大的增强。RAM 很便宜,因此在内存中保留与从邻居收到的路由完全相同的路由非常容易,尤其是在现代路由器上。JUNOS 甚至没有为您提供不存储它的选项——它总是保留 Adj-RIB-IN,但 JUNOS 是在 90 年代后期设计的,当时 RAM 充足,而不是在 80 年代 IOS 出现时设计的。如果设计路由器的人认为“让我们节省 RAM,因为我们有 BGP 软重置增强功能”,我想开枪打那个人 ;) 另一方面,如果您运行的网络与旧路由器内存不足如果您不启用软重新配置,我完全理解。

归根结底,这很难说,这取决于您的环境。