【OSPF】DR、BDR的概念及深入探讨

1. DR、BDR的概念
 
MA(Multi-Access)多路访问网络有两种类型:广播型多路访问网络(BMA)及非广播型多路访问网络(NBMA)。以太网就是一种典型的广播型多路访问网络(见上图),连到这个MA网络的路由器接口都属于同一个广播域和逻辑子网。在MA网络中每台OSPF路由器需与其他的所有路由器建立OSPF全毗邻(FULL)的邻居关系,这意味着网络中共有n(n-1)/2个邻接关系,导致每台路由器不得不为维护这些邻居关系消耗更多的资源,而且当拓扑出现变更时,网络中的LSA泛洪可能会造成带宽的浪费和进一步的设备资源损耗。
为减少MA网络中的LSA泛洪及邻接关系数量,OSPF会在每一个MA网络中选举一个指定路由器 DR(Designated Router)和一个备用指定路由器BDR(Backup Designated Router)。MA网络中的路由器都只与DR、BDR建立全毗邻(FULL)的邻接关系,DRother之间不会建立全毗邻的OSPF邻接关系,而只是停滞在2way状态。说的通俗点,就是“大家共坐一个山头,现在选个大当家,再弄个二当家。其他的都是屌丝村民,所有的村民都只跟大当家和二当家结交好基友的关系,村民之间不许搞基……不许搞基……”
2. 选举过程
当一台OSPF路由器(的接口)激活后并去发现它的邻居路由器时,它将去检查网络中是否已经存在有效的DR和BDR路由器。如果DR和BDR路由器存在的话(网络中某台路由器发出的Hello消息中DR字段为其自身的RouterID),这台路由器将接受己经存在的DR和BDR路由器。
如果BDR路由器不存在,则执行一个选举过程,选出具有最高DR优先级的路由器作为BDR路由器(已经宣称自己是DR的路由器不能参与BDR的选举)。如果存在多台路由器具有相同的优先级,那么在数值上具有最高RouterID的路由器将被选中。如果没有有效的DR路由器存在,那么BDR路由器将被选举为DR路由器,然后再执行一个选取过程选取BDR路由器。
每台路由器的每一个多点访问接口都有一个路由器的DR优先级(范围是0-255,默认为1)。
3.要点总结
 
  • 如果在—个MA网络上只有惟—的一台具有DR选举资格的路由器,那么这台路由器将成为DR,而且在这个网络上没有BDR。其他所有的路由器都将只和这台DR路由器建立邻按关系。
  • 如果没有具有DR选举资格的路由器和一个MA网络相连(例如所有路由器的接口DR优先级都是0),那么这个网络上将没有DR或者BDR路由器,而且也不建立任何邻接关系。
  • DR、BDR的身份是非抢占的,也就是一旦网络中DR确立,则即使后来者的优先级比当前DR更高,也无法抢占DR的身份。当DR失效,BDR成为DR,同时再产生BDR。
  • DR与BDR、DR与Drother、BDR与Drother之间都是FULL状态,Drother之间是2way状态。所有的Drother都只和DR以及BDR建立全毗邻关系。
  • OSPF定义了一个Wait计时器,缺省等于Dead时间40s,当一个MA接口激活OSPF时,它会等待Wait计时器定义的时间,这个时间用于搜集MA网络中具有DR选举资格的路由器。这就是为什么我们在以太网接口上配置OSPF时,邻居关系的建立总是很慢,而在串行接口上配置OSPF,邻居关系很快就建立起来了,串行接口不选举DR、BDR,无需经过WAIT计时器。
  • DR、BDR是一个接口级别的概念。严格的说“这台路由器是DR” 这句话其实并不严谨,例如下图所示,
  • 在192.168.1.0/24这个MA网络中,R1的Fa0/0口最终被选举为DR的话,我们不会说R1就是DR,因为DR是接口级别的角色,只能说R1的Fa0/0口在直连的网络中是DR。并且R1的Fa0/1连接到另一个MA网络,那么在那个MA网络中,也要选举DR、BDR,至于R1的Fa0/1能否成为那个网络的DR,也是要看PK的结果。
4. 关于DR、BDR选举的深入探讨之一
1) 如果下图中两台路由器(的接口)同时激活OSPF,则在接口OSPF状态机的演进过程中,2way状态后会各自启动WAIT计时器,用于搜集MA网络中具有选举资格的OSPF路由器,在各自泛洪的Hello报文中,包含着他们自身的接口DR优先级、RouterID等信息。
40s后R1成为DR,R2成为BDR。此时大家发送出来的Hello消息中,DR字段填写的是R1的RouterID,BDR字段填写的是R2的RouterID。
 
2) 此后,如果R3也加入到了MA网络中,并且它的接口DR优先级比R1更高:R3的接口激活OSPF后,也会启动一个WAIT计时器,但是它会收到R1发送出来的Hello消息,该Hello消息中DR字段填写的正是R1自己的RouterID,这意味着“网络中有人宣称自己是老大”,因此R3将接受这个事实,它的WAIT计时器迅速超时。这就是所谓的DR的不可抢占性。
 
3) 但是我们考虑另一种情况:假设初始情况下R1、R2处于一个LAN中,R3自己处于另外一个LAN中,大家的接口IP都是同网段的,但是属于不通的LAN。例如三台路由器都连接在同一台交换机上,但是R1、R2属于一个VLAN,R3属于另一个VLAN。那么三台路由器的接口激活OSPF后,R1会成为LAN1的DR,而R3会成为LAN2的DR,也就是他们各自发送出来的Hello消息中,都宣称自己就是DR。现在假设两个LAN连接了起来,这就会有问题了,因为同一个LAN中,有两人宣称自己是老大,这就得重新干一架,重新DR选举。
5.关于DR、BDR选举的深入探讨之二
1) 在下图所示的场景中,R1、R2连接到同一个LAN。假设R1的接口在0时刻激活OSPF,而R2的接口在10时刻激活OSPF。虽然R1的接口先激活OSPF,但是它的WAIT计时器超时需要40s,而在该计时器超时之前R2的接口就已经启动了,因此它会收到R2发送的Hello消息并且知道R2的接口优先级比自己高,所以当绝对时间40s到期,R1的WAIT计时器超时,它发送的Hello消息中DR字段为R2的RouterID2.2.2.2,但此刻该LAN的DR还不算最终确立,因为R2的WAIT计时器还没超时,有点像:“别人宣称我是DR这不算数,我自己还没认呢”。因此当50s时刻到来时,R2的WAIT计时器超时,此时R2发送的Hello消息中DR字段就是自己的RouterID,LAN中的DR也就正式确立。
 
2) 现在再来看另一种情况。假设R3在绝对时间的45s时刻接口激活OSPF,会有什么样的情况发生?首先R1的接口率先激活,在其WAIT计时器超时之前发现了R2比自己的DR优先级高,因此它认为R2是DR,但是在R2的WAIT计时器超时之前它发现R3的DR优先级比自己更高,注意此刻R2的WAIT计时器还没超时,也就是说在绝对时刻50s之前,事儿都还没定。在50s时刻,R2的WAIT计时器超时,它认为R3是DR(当然R1也认为R3是DR),但此刻R3的WAIT计时器才开始没多久,只有等到它的计时器也超时并且宣称自己是DR时,这个MA的DR才算最终确立。
6. 闹着玩儿的实验:
 
  • R1、R2接口DR优先级设置为0,则R1、R2不建立FULL邻居关系
  • R1 接口优先级为0,R2为1,则R2成为DR,并且该MA网络中没有BDR
  • 在上一步的基础上,R1接口优先级改为100,对网络没有影响(DR非抢占)
  • 在上一步的基础上,R2(此时为DR)重启OSPF进程,则R1成为DR,R2成为BDR
7. 补充知识点
 
在实际的网络环境中,如若是三层以太网口运行OSPF且物理上为点对点连接,则OSPF仍然会在以太网上选举DR、BDR,因此在这种场景中,我们会将接口的OSPF网络类型改为Point-2-Point,以跳过DR、BDR选举过程,加快OSPF邻居建立。

发布者

小挨踢

一名89年出生的女网络工程师的博客,20180319小挨踢的博客来啦!

发表评论