区域间路由防环机制

 

产生环路

 

我们可以看到这个路由的计算过程因为是一个简单的带宽叠加,很有可能会产生环路。就类似于我们的RIP,RIP是一个简单的跳数叠加。

 

OSPF是怎么去解决域间路由环路呢?首先我们来看,一个域间路由环路形成的场景:

 

OSPF 多区域防环 ospf区域间防环机制_OSPF

 

这里RTD连接着一条路由是192.168.1.0,然后我们来看一下它的区域划分:

 

  • RTD和RTE有区域3的邻居关系。
  • RTD和RTB有区域1的邻居关系。
  • RTB、RTA和RTC之间是区域0的邻居关系。
  • RTC和RTE是区域2的邻居关系。

 

这里我们思考一下一共有几个ABR?

 

有人可能会说有4个ABR,其实是不正确的。

 

我们之前已经反复讲过了,ABR是在非骨干区域内有full的邻居关系,在骨干区域内也有full的邻居关系

 

因此只有B和C符合这个要求,对于RTE来说,虽然接口处于不同的区域,但是并没有在区域0的邻居关系,因此D和E都不是一个DR。

 

并且我们可以看到这个拓扑的连接也是有问题的。

 

我们在这里假设,这里所有的路由器都能够去生成3类LSA,我们来看一下会有什么样的情况去出现?

 

  • RTD这个时候去连接了192.168.1.0,生成了一条3类LSA发送给RTB。
  • RTB收到了这条3类LSA之后,一样的作为ABR发送一条3类LSA给RTC。
  • RTC收到之后,一样会重新生成一条3类LSA,发送给RTE。
  • RTE此时又再次重新生成了一条3类LSA发送给RTD。

 

那么这条3类LSA是由RTE生成的,当RTD生成之后会认为这是一条新的3类LSA,和我之前发布的3类LSA是两个不同的LSA。

 

因为我的生成这个三类LSA的路由器是不一样的,并且Metric值也是不一样的,这个时候就会产生一个域间的路由环路

 

因此这个时候我们就要去避免路由环路的产生。

 

防环机制

 

  • 骨干区域与非骨干区域
  • 三类LSA传递规则

 

OSPF是怎么去避免域间路由环路的呢?

 

OSPF 多区域防环 ospf区域间防环机制_区域划分_02

 

  • 第一点,我的非骨干区域必须和骨干区域相连

 

不论是物理相连还是逻辑相连,总之都必须去相连。

 

  • 第二点,只有ABR才会去产生3LSA

 

上述例子,RTD和RTE并不是真正的ABR,并不会产生3类LSA,我们做一个补充。

 

  • 第三点,就是关于3LSA的传递规则

 

对于3类LSA,假如我们把这两个非骨干区域连接在一起,我们画一个直观的图看一下。

 

OSPF 多区域防环 ospf区域间防环机制_OSPF 多区域防环_03

 

此时一个路由器属于区域0,下面两个路由器是属于区域1和区域2的,然后我们将这两个ABR连接在了一起。

 

假如这个邻居关系是属于区域1的邻居关系,那么此时我可能会通过非骨干区域去传递一条3类LSA。那么路由器就会接收这个3类LSA,我会接收,但是并不会计算这个3类LSA。

 

这是3类LSA的传递规则。从非骨干区域收到的3LSAABR只接不计算。那么不计算当然也不会进行传递,这个就是3类LSA的传递规则。

 

注意:经过这三条规则就能保证我的域间环路是避免的。

 

思考

 

思考:只有一个区域时,区域号配置为非0会有什么问题

 

如果我们能保证始终是一个区域的话是没有关系的。但是如果添加了其他区域,我们网络在扩展,我们要配置多区域的时候,配置为非0区域的时候就会有麻烦。

 

这里就涉及了网络规划不科学的问题,并且牵扯出了一个特殊的机制,即虚连接。