DR/BDR选举过程及作用详解

DR(Designated Router),指定路由器

BDR(Backup Designated Router),备份指定路由器

DROther(Designated Router Other),成员路由器

现在逐一分析这两个角色是什么与作用

  1. 在一个多路访问的网络环境下,路由器之间相互之间要建立邻接,假设说当前有x台路由器,那么将会建立x(x-1)/2个邻接关系,每台路由器会通告出x-1条LSA信息到与之存在邻接关系的邻居路由器上,再加上一个网络LSA,其计算结果可以得出,这个网络上会产生n2个LSA通告(这段大部分来自书籍,我算不出啊。。。)
  2. 多址网络本身的泛洪就显得非常混乱,某一台路由器向他邻接的路由器发送一个通告,同样的,那些路由器向他的邻接路由器发送这个通告的拷贝,这样一来网络上就出现了非常多且相同的通告拷贝
  3. DR发出的LSA描述了该多路访问网络中其他与之相连的路由器
  4. 管理这个多路访问网络上的LSA泛洪

每一个多路访问的网络环境,都会有一个DR,网络内所有路由器都只会与DR/BDR形成邻接关系,这与区域无关,只要是多路访问,就会存在DR,也就是说一台路由器如果有2个以上的接口,有可能A接口是一个网络的DR,而B接口所在的网络有可能他是DRother,简而言之,DR/BDR的角色是基于接口的,而不是指整个路由器

而关于DR的一个重要问题就是,在网络中只有一台 DR的话,如果他失效,那么所有的邻接关系都会失效,与此同时,所有路由器都要重新选举DR,并且重新与DR同步数据库,再重新建立邻接关系,当这个情况发生时,网络是瘫痪的,是无法传递数据包的

那么为了解决这个问题,在一个网络上除了DR,还要选举一台路由器当BDR,DR/BDR互为邻接关系,网络上所有路由器都会与DR/BDR建立邻接关系,这样一来,当DR失效时,BDR会晋升成为DR,因为DRother在之前就和BDR保持着邻接关系,所以这样一来的话可以把网络影响降到最低

DR/BDR的选举是通过一个接口状态机来触发的,为了整个处理进程可以执行,需要满足一些前提条件:

  1. 在每一个多点访问的接口上都会有一个优先级,他是一个由8位无符号整数组成的,范围是0~255,优先级高者成为DR,当接口优先级为0时,借口不参与DR/BDR的选举,也就是说这个接口永远不可能成为DR/BDR,虽然DR/BDR不能被抢占,但是,当你把DR或BDR接口的优先级设置为0时,这个接口会立刻放弃他的身份成为DRother
  2. Hello包中列出了始发接口的优先级,与可能成为DR/BDR的IP地址
  3. 当一个接口在多址网络上开始生效时,他会将发出的Hello包中的DR/BDR的字段设置为0.0.0.0,并且将wait time重置,时间为DealInterval,这个时间的作用就是,在这个时间内如果没有收到来自其他路由器接口的Hello包来参与竞选DR/BDR,则认为自己是DR
  4. 在多址网络中,接口会将已经存在的DR/BDR放进一个接口数据结构表中

下文详解DB/BDR的选举过程

  1. 路由器之间首先必须为2-way,也就是已经建立起了双向通信,接着路由器会在发出的Hello中的DR/BDR字段中,设置为始发接口的IP地址,以此宣称自己为DR/BDR,接着路由器将检查所有收到的Hello包,并列出具有选举资格的接口的列表(列入,优先级不为0,邻居状态为2-way等)
  2. 从具有选取资格的路由器列表中,创建一个没有被宣告为DR的所有路由的集合
  3. 如果在这个集合中,有一台或多台邻居路由器,并且他们在hello中的BDR字段设置了自己的接口IP,那么他们将进行比较,优先级高的,成为BDR,当优先级相同时,Router-id高的,成为BDR,注意,当BDR选举出来之后,BDR会自动成为DR,因为之前就说道了,当网络中没有DR时,BDR自动成为 ,这个动作并不会产生任何数据包来通知其他邻居,只是在这之后发出的所有Hello中,DR字段都是 DR接口的IP地址

总结来说,当一台OSPF路由器有效并发现了他的邻居时,他将检查现有的DR/BDR,如果存在,则接受现有的DR/BDR,如果不存在,将执行一个选举过程,先选出BDR,如果当前网络上不存在DR,则BDR路由器直接晋升为DR,然后再执行一个选举过程来选举BD人路由器

一旦DR/BDR路由器选举成功后,其他的路由器(DRother)将之和DR,BDR保持邻接关系,所有的路由器的Hello发送是以组播224.0.0.5的方式发送的,所以他可以跟踪他们的邻居路由,但是DRother只会将更新包发送至224.0.0.6,同样的也只有 DR,BDR会监听这个地址,反之,DR/BDR发送的更新包地址是224.0.0.5,这样所有的DRother都可以收到这个更新

在一个多路访问的网络环境下,如果只有一台路由器有资格参与选取那么这台路由器将成为DR,其他所有的路由器只会与DR保持邻接关系,那么如果没有任何一台路由器有选取资格,那么这个网络中将不会有任何一台路由器成为DR,所有的路由器之间都停留在2-way的状态

你可能感兴趣的:(OSPF,网络)