为什么所有区域都必须连接到 OSPF 中的区域 0 骨干网?

网络工程 路由 ospf
2022-02-10 20:13:36

此问题是对Cisco 支持社区上提出的同一问题的文字转贴。答案是 Stack Exchange 独有的。


为什么区域 0 是 OSPF 的骨干区域?为什么所有其他区域都必须连接到它?

我一直在寻找为什么所有区域都必须连接到 OSPF 中的区域 0 的正确原因。我有一个小想法,但我不清楚整个概念。

如果 2 个区域不通过区域 0 连接(不连续),那么 OSPF 作为链路状态协议如何增加路由环路的可能性?

4个回答

OSPF 骨干网

为什么区域 0 是 OSPF 的骨干区域?为什么所有其他区域都必须连接到它?

这在RFC 3509, Section 1.2 1中有很好的解释

1.2 动机

在 OSPF 域中,区域拓扑受到限制,因此必须有一个骨干区域(区域 0),并且所有其他区域必须具有到骨干的物理或虚拟连接。这种星状拓扑的原因是 OSPF 区域间路由使用距离矢量方法,并且严格的区域层次结构允许避免“计数到无穷大”问题。OSPF 通过实施水平分割机制来防止区域间路由循环,允许 ABR 仅将源自区域内路由的 Summary-LSA 注入骨干网,并限制 ABR 的 SPF 计算仅考虑骨干区域内的 Summary-LSA链接状态数据库。

OSPF 通常被认为是一种链路状态协议有些人错过的是 OSPF同时使用 链路状态协议距离矢量协议算法。

  • 骨干网或非骨干网区域内的路由按照链路状态协议计算(参考Dijkstra 算法)。
  • 当 OSPF 必须通过骨干传输非骨干路由时,它使用一些距离矢量行为(即贝尔曼福特算法的一部分)将 Type3 LSA 度量传播到非骨干区域。

OSPF距离矢量行为的简单示例:

<-- Area 5 --><-- Area 0 --><--           Area 4           -->

R5-----------R1-----------R2------------R3---------------------R4
     Cost 3      Cost 5        Cost 7            Cost 12

               LSA-->          LSA-->
               Type3 LSA       Type3 LSA
               {From R1}       {From R2}
               R5 cost is 3    R5 cost is 8

考虑 R5 的 /32 Loopback 路由会发生什么。

  1. R5 发送包含 /32 Loopback 的 Type1 LSA
  2. R1(Area 5 ABR),连接到Area 0;它将Type1 LSA转换为Type3 LSA,成本为3。
  3. R2(区域 4 ABR)接收 R1 的 Type3 LSA(度量 3)并根据 R2 对 R1 的成本将度量更改为 R5 的环回现在 R2 的 R5 的 Type3 LSA 的成本为 8。这就是我上面提到的距离矢量行为。

要求所有非骨干路由通过骨干是一种环路预防机制。

在 ABR 连接非骨干 OSPF 区域

如果 2 个区域不通过区域 0 连接(不连续),那么 OSPF 作为链路状态协议如何增加路由环路的可能性?

正如我们在上面看到的,OSPF 使用距离矢量行为通过区域 0 主干发送路由。距离矢量协议具有众所周知的限制,例如计数到无穷大问题如果我们对它的行为没有限制,OSPF 将很容易受到同样的问题的影响。


1 RFC 3509 描述了 Cisco IOS 的 ABR 行为

选择区域 0 作为主干,数字 0 或 0.0.0.0 只是一个数字。

因为 OSPF 是链路状态,所以区域内的 LSDB 必须相同。这是为了保证 SPF 计算一致,防止路由环路。

如果运行单区域 OSPF 任何区域都可以使用,则不需要区域 0。

运行多区域 OSPF 时,必须使用 ABR。ABR 是在区域 0 和至少一个其他区域中具有邻接关系的路由器。

ABR 采用第 1 类和第 2 类 LSA,并在其他领域将它们宣布为第 3 类摘要 LSA。这不是对前缀的总结,而是对拓扑信息的总结。这实际上是距离矢量行为。

因为其他区域没有关于彼此的完整信息,所以所有区域间流量都必须通过区域 0。否则可能会出现路由环路,因为没有完整的拓扑。

由于这种设计,当其他区域中的链路上升/下降时,OSPF 不必运行完整的 SPF。这增加了可扩展性。

摘自 John Moy 的“OSPF:路由协议剖析”,他编写了大部分 OSPF 规范。

区域间路由信息的交换本质上是距离向量。使用距离向量,您拥有的冗余路径数量越多,您的收敛特性就越差。OSPF 要求所有区域都直接连接到主干,因此它将拓扑限制为简单的中心辐射型拓扑。这消除了冗余路径并防止其受到“计数到无穷大”的问题。

在多区域方法中,所有其他区域必须连接到区域 0(主干区域)。如果没有直接连接,您甚至可以使用 virtual-link 连接到区域 0。如果您没有将其他区域连接到区域 0 作为 LSA 1,请不要担心路由环路,并且在其他区域(包括 ABR)上生成的 2 信息不会作为 LSA 3 传递到其他区域。