关于OSPF中的DR和BDR

DR(Designated Router):指定路由器
BDR(Backup Designated Router):备份指定路由器
DROther (Designated Router Other) :成员路由器
关于OSPF中的DR和BDR

为什么要设置DR?(为什么要有这一机制?)

  • 在OSPF协议中,保持链路状态数据库(LSDR)同步的LSA报文是在建立了邻接关系的路由器接口之间传递的,也就是说,要保持LSDB的同步,必须建立邻接关系。如果一个网段中有n台路由器,则在该网段中就会建立n*(n-1)/2条的邻接关系,这样在传送LSA的过程中需要占用一定的网络带宽。
  • 为了解决这一问题,OSPF采用了一个特殊的机制,即在同一网段中选举一台指定路由器(DR),使网段中的其他路由器都和它建立邻接关系,而其他的路由器彼此之间不用建立邻接关系,这样在一个网段中只要建立n-1条邻接关系就可以了。备份指定路由器(BDR)是指定路由器DR在网络中的备份路由器,它会在DR失效(关机或出现故障)后自动接替DR工作。
  • 假定网段中有5台路由器R1~R5,其中R1和R2分别被选举为DR和BDR,网段中的其他路由器,例如R3,只需要在DR之间两者交换LSA即可,最终形成统一的LSDB。也就是说,在同一个网段中LSDB的同步和更新是由DR来转发完成的。
  • 点到点网络、广播型网络和非广播多路访问NBMA网络(如X.25,帧中继等)都会选举DR和BDR。虽然在常见的局域网络中很少有这样的网络结构,但考虑到互联网的复杂性,令牌环、FDDI、X.25和帧中继这样的网络在一定范围内还是存在的,因此,讨论DR/BDR的选举还是有一定的意义。

DR和BDR的选举过程

  • 在选举DR和BDR的时候要比较各路由器端口的优先级(priority),优先级最高的为DR,次高的为BDR。可以用如下命令修改端口的优先级:
    Router(config-if)#ip ospf priority 0-255
  • 如果使用端口的默认优先级,则都为1.在优先级相同的情况下比较Router-ID,RID最高者为DR,次高者为BDR。若端口的优先级设为0时,则该路由器不能成为DR/BDR。
    Router-ID可以通过以下命令手工指定:
    Router(config)#router ospf 1
    Router(config-router)#router-id 1.1.1.1
  • 如果没有手工指定Router-ID的话,那么路由器会先看自己有没有环回接口(Loopback),如果有,则使用环回接口上的IP地址作为自己的Router-ID。如果没有,则比较自己所有物理接口上的IP地址,并从中选择一个IP地址作为自己的Router-ID来参与DR的选举。
  • 所有的OSPF路由器交换自己的Router-ID,在所有路由器中Router-ID值最大的路由器将作为DR,具有次大的Router-ID的路由器称为BDR。

需要注意的是
DR和BDR的选举不是针对区域进行的,而是针对一个网段进行的,如果一个区域有多个网段,那么就会有多个DR和BDR,每个网段都会有一个DR和BDR。
另外,按照OSPF的规则,率先运行OSPF进程的路由器被选举为DR的可能性最大,新加入的路由器即使RID比已选举为DR的RID高,也不会替换DR。因此,在有些时候DR并非RID最高的路由器。