在OSPF中,有两个相当重要的概念:DR和BDR。我们先来看看什么叫DR,什么叫BDR,然后再来看看他们都是做什么的。
DR:designatedrouter 指定路由器。
BDR:backupdesignated router 备份指定路由器。
在一个LAN 连接中,OSPF将选举出一个路由器做为DR,再选举一个做为BDR,所有其他的和DR以及BDR相连的路由器形成完全邻接状态而且只传输LSA(链路状态通告)给DR和BDR。
换句话说,在一个OSPF的网络中,所有的路由器将被分为两类:指定路由器(DR/BDR)和非指定路由器(DROTHER)。所有的非指定路由器都要和指定路由器建立邻居关系,并且把自己的LAS发送给DR,而其他的OSPF路由器将不会相互之间建立邻居关系。也就是说,OSPF网络中,DR和BDR的LSDB(链路状态数据库)将会包含有整个网络的完整拓扑。|
DR从邻居处转发更新到另外一个邻居那里。DR的主要功能就是在一个LAN内的所有路由器拥有相同的数据库,而且把完整的数据库信息发送给新加入的路由器。路由器之间还会和LAN内的其他路由器(非DR/BDR,即DROTHERs)维持一种部分邻居关系(two-way adjacency)。OSPF 的邻接一旦形成以后,会交换LSA来同步LSDB,LSA将进行可靠的洪泛。
当选举DR/BDR的时候要比较hello包中的优先级priority(设置命令route(config-if)#ip ospf cost{priority} 0~255),优先级最高的为DR,次高的为BDR。不作修改默认端口上的优先级都为1,在优先级相同的情况下比较Router ID,RID最高者为DR,次高者为BDR,当你把相应端口优先级设为0时,OSPF路由器将不能再成为DR/BDR,只能为DROTHER。
在使用默认优先级的OSPF的DR选举中,所有的路由器之间会交换自己的ROUTER-ID来确定DR。ROUTER-ID可以手工指定。如果没有手工指定ROUTER-ID的话,那么路由器会先看自己有没有环回接口(Loopback),如果有环回接口,则使用环回接口上的IP地址作为自己的ROUTER-ID。如果没有环回接口的话,则会去比较自己所有物理接口上的IP地址,并从中选择最大的一个IP地址作为自己的ROUTER-ID来参与DR的选举。
那么,DR和BDR的选举就可以用以下的方式来决定:
1 如果有手工指定的ROUTER-ID,则使用该ROUTER-ID参与选举;
2 如果没有手工指定的ROUTER-ID,则看自己有没有Loopback接口,有则使用Loopback接口上的IP作为ROUTER-ID参与选举;
3 如果没有Loopback接口,则比较所有的物理接口,并使用其中最大的IP作为ROUTER-ID参与选举;
4 所有的OSPF路由器交换自己的ROUTER-ID,具有所有ROUTER-ID中最大一个的路由器将作为DR,具有次大ROUTER-ID的路由器则成为BDR。
原文地址:http://touchheart.blog.51cto.com/8265482/1695944