我对 BGP 与 OSPF 中的路由表大小感到困惑。我的理解是,在路由器运行 OSPF 的 AS 中,每个路由器都拥有网络的全貌,因此每个路由器都有一个条目和到达它的度量。如果 AS 中的路由器运行 BGP,每个路由器将只知道它的邻居;因此,它将有更少的条目。
这个假设正确吗?如果是,您能否提供一个示例来说明这是如何发生的,以及为什么总是如此?
我对 BGP 与 OSPF 中的路由表大小感到困惑。我的理解是,在路由器运行 OSPF 的 AS 中,每个路由器都拥有网络的全貌,因此每个路由器都有一个条目和到达它的度量。如果 AS 中的路由器运行 BGP,每个路由器将只知道它的邻居;因此,它将有更少的条目。
这个假设正确吗?如果是,您能否提供一个示例来说明这是如何发生的,以及为什么总是如此?
不要将路由协议表与路由表混淆。每个路由协议都维护自己的一组表,这些表与路由表不同。路由表将包含路由协议表中的最佳路由。
BGP 和 OSPF 服务于不同的目的。OSPF 将始终位于单个 AS 内。BGP 主要用于自治系统之间的路由(eBGP)。BGP 可以在 AS (iBGP) 内使用,但 iBGP 有一些限制和规则。例如,iBGP 对等体不能通告从另一个 iBGP 对等体学到的路由,因此 iBGP 必须保持全网状或使用某种缓解措施(路由反射器或联盟)。
OSPF 维护其所在的整个 OSPF 区域的完整图片,并且仅维护该区域,而不一定是可能由多个区域组成的整个 AS。
BGP 将拥有每个邻居的条目、每个邻居向其通告的前缀以及 BGP 属性,这些属性可能会占用大量空间。
OSPF 只会在您的自治系统中交换路由。基本上,OSPF 知道您所有的 vlan 和所有路由器接口。
BGP 交换来自其他 AS 的路由:如何从 google、twitter、colt、level3 到达网络...
在您的 AS 内,您可能有多个 BGP 路由器,它们了解那些外部网络。但不知何故,他们必须交换信息。例如,您的路由器 A 可能直接连接到 colt 网络,而路由器 B 可以更轻松地访问 google。
(非常)旧的方法是重新分配 OSPF 内的所有外部路由。现在这不是一个好的做法,因为 OSPF 是为更快的收敛而设计的,并且不会随着那么多路由进行扩展。OSPF 会淹没所有更改,无法以与 BGP 相同的方式应用“策略”,并且不支持抑制 (AFAIK)。
当前的最佳实践是在所有路由器 (iBGP) 之间建立内部 BGP 会话:在内部路由器之间交换外部路由。
希望它有所帮助。