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

网络工程 路由 ospf
2021-07-18 14:13:03

这个问题是思科支持社区提出的同一问题的字面转贴答案是 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使用两种 链路状态协议距离向量协议算法。

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 环回路由会发生什么。

  1. R5 发送包含 /32 环回的 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(主干区域)。如果没有直接连接,您甚至可以使用虚拟链接连接到区域 0。如果您没有将其他区域作为 LSA 1 连接到区域 0,则不必担心路由循环,并且在其他区域(包括 ABR)上生成的 2 信息不会作为 LSA 3 传递到其他区域。