默认优先级值是多少 ospf_OSPF路由器100%称为DR Other的唯一方法:DR优先级为0

概述

很多小伙伴学习完OSPF中的DR/BDR选取规则以后,感觉很简单,不过在做实验的时候,会发现有的时候选取的DR/BDR并不是自己预期的,又会感觉很迷惑:难道是自己学习的选取规则有问题吗?

其实不是的,DR/BDR的选取,还有一个重要的知识点:DR/BDR是不可抢占的!不过在学习新知识点之前,我们先来复习一下DR/BDR的选择规则!

DR/BDR的选举规则

我们都知道DR/BDR是一个路由器接口的属性,它只能表示某个路由器在某个网段上是什么角色,并不能代表整个路由器,所以DR/BDR的选取是针对某个网段的。

例如在下面的多点接入拓扑中,有四台路由器在同一个网段10.1.1.0/24里,在这个网段上会选取DR、BDR。

a8a9c4ccdc05d69ec5daf8f9e2940fe3.png

一个网段

四台路由器在初始的情况下,都会认为自己是DR/BDR, 在它们发送的报文中,也会把DR和BDR的标记置位。

当一台路由器收到比自己DR优先级更大的报文时,就会停止申明自己的DR/BDR,转为声明DR优先级更大的路由器为DR/BDR。

1c319ed8eb3aa36c1bda61939a2a25ae.png

根据DR优先级选取

如果一台路由器收到的报文,DR优先级是相同的,就会比较Router ID,如果对方的Router ID比自己更大,也会声明对方是DR/BDR。

98ac57a2efc93d67b376c87a2b2d1bb0.png

根据Router ID选取

上面就是DR/BDR的选择规则:

  • 先比较DR优先级,最大的路由器会被选取为DR/BDR;
  • 如果DR优先级相同,则会根据Router ID来选取DR/BDR;

DR/BDR选取的不可抢占性

如果事情都按照DR/BDR的选取规则来,则小伙伴就不会有疑问了,整个世界也就清静了。不过在我们查看DR和BDR的角色时,经常会看到成为DR/BDR的路由器并不是我们期望的。例如下图,有3个路由器,初始情况下,R3的DR优先级为30,值最大的,所以它会被选择为这个网段上的DR;R2的优先级次之,它会选择为这个网段上的BDR。

7f2ab3043eadf119cc2f9a1de6f59bae.png

DR/BDR

此时如果在网络上,再添加一台路由器R2,DR优先级是50,这时会有什么反应呢?会不会R2成为新的DR,R3变成BDR呢?

974bc8020aa21ed8210a8c5378b59ae3.png

新增一台路由器R2

事实上这时时候,网络上什么都不会变化,R3仍然作为DR存在,R1作为BDR存在!如果此时查看路由器的状态,你就会觉得DR/BDR的选择规则是错误的!

fac8bb1f365f8184a6c969a532a98e4e.png

网络没有变化

其实上面所说的DR/BDR的选择规则并没有错误,出现这种情况的原因是DR/BDR的选取还需要遵循另外一个规则:DR/BDR的选取是终身的,不会被抢占!

意思就是说,在一个网段上,选取出DR/BDR以后,那在它Fail之前,就会一直是DR/BDR,不会被后来的高优先级的路由器取代!

为什么要这么做呢?OSPF的这种做法其实是符合实际网络的使用要求:稳定压倒一切。

切换DR/BDR时,需要重新通告LSA,网络会有短暂的流量不通,这在实际工作中,是不允许的。如果有高优先级的路由器加入网络,就切换DR/BDR,会有可能造成网络的震荡。比如新加入的OSPF路由器不稳定,一会UP,一会Down,那整个网络就没有办法使用了。

所以OSPF在设计的时候,就考虑到了这一点,DR/BDR选取以后,就不会发生改变了!

我们在实验室遇到这种情况,不用担心,直接把所有路由器的OSPF进程清除,让它们重新选取就可以了!但在实际网络中,是不能随便清除OSPF进程的!

并且很多时候,我们遇到DR/BDR不是我们期望路由器的情况,是我们的敲命令的动作慢了。初始情况下,一台路由器会等待40秒(默认)的时间,才会选取DR/BDR。如果高DR优先级的路由器在40秒以后才加入网络,就没有机会成为DR/BDR了

DR优先级为0的路由器,不参与DR/BDR的选取

经过上面的描述,小伙伴应该能够明白了,即使路由器的DR优先级最大,也不一定能成为DR/BDR。而想让一台OSPF路由器永远的成某个为网段的DR/BDR,通过修改DR优先级和Router ID是行不通的。其实想让路由器永远成为DR,有且只有一种方法:将其它OSPF路由器的DR优先级设置为0

当路由器的DR优先级被设置为0以后,它就不会参与这个网段上DR/BDR的选取了,它的角色永远就是DR Other。

bb99f8f6aeb8f53ce85a1141d9e8853a.png

DR优先级设置为0

当然这种做法的风险就是如果DR路由器Fail以后,整个网络就瘫痪了,没有办法转发报文。因为DR Other只能和DR交换路由信息,DR Other之间是不交换路由信息的。

总结

经过上面的描述,各位小伙伴应该对DR/BDR的选取机制和不可抢占的原因了解了吧?我在做一下简单的总结:

  • 在同一个网段上,会选择DR优先级最高的路由器作为DR;
  • 如果DR优先级相同,则会选取Router ID最大的路由器作为BDR;
  • DR/BDR选取以后,就不能被抢占,永久生效,直到路由器Fail。

如果小伙伴还有疑问,欢迎留言讨论,也非常高兴关注我,一起讨论网络问题!

最后给大家推荐一下我们的OSPF专栏,专门讲解OSPF各个知识点的!


版权声明:本文为weixin_39736007原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。