赞
踩
在OSPF中,有两个相当重要的概念:DR和BDR。我们先来看看什么叫DR,什么叫BDR,然后再来看看他们都是做什么的。
DR:designated router 指定路由器。
BDR:backup designated 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。
名词解释:Router ID(RID)1、所有物理端口ip地址最大者为RID,2、如有逻辑管理接口Loopback0,loopback1等,则逻辑端口ip为RID,有多个逻辑接口,ip大者为RID.
1、所有接口都为物理接口s0:192.168.1.1 atm3/0:192.168.2.1 e0:172.25.188.1 则RID为192.168.2.1
2、有逻辑接口s0:192.168.1.1 atm3/0:192.168.2.1 e0:172.25.188.1,loopback0:10.0.1.1 loopback1:172.25.189.1 则RID为172.25.189.1.
DR/BDR:在OSPF网络中,各路由器之间不直接两两发链路状态信息,而是通过选举DR/BDR,DR为主,BDR为备份DR,把链路状态信息发给DR/BDR,由DR在组播给所有非DR/BDR的DROTHER路由器。
OSPF(链路状态路由协议Link State routing protocol)也和EIGRP(混合Hybrid routing protocol介于距离矢量路由协议和链路状态路由协议之间)类似,维护着3张表:1、邻居表,2、拓扑表 3、路由表。有点区别的是EIGRP每样维护着三张表:Neighbor table-appletalk ,ipx,ip.Topology table-appletalk,ipx,ip,Routing table- appletalk,ipx,ip.
选举DR/BDR规则
当选举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.
链路状态信息的传播 (在本区域内,骨干区域0,区域有2的32次方个,所有常规区域必须和骨干区域直接相连,除非开隧道OSPF虚电路)
DR/BDR选举完成后,DROTHER就只和DR/BDR逻辑上形成邻居关系, DROTHER组播链路状态信息LSU到ALLDOTHER地址224.0.0.6,而只有DR/BDR监听该地址。而DR组播泛洪LSU的hello包到224.0.0.5,DROTHER监听该地址,以使所有非DR/BDR的OSPF路由器跟踪其它邻居的信息。
这样做的好处,减少OSPF网络中的链路状态更新包,减少泛洪,降低路由协议本身占用链路带宽,并有效的避免了距离矢量路由协议如RIP中的环路等问题。
如图,路由器 B C
A E
D
这里D就是一个DR指定路由器 ,OSPF协议指定一台路由器DR(Designated Router)来负责传递信息。所有的路由器都只将路由信息发送给DR,再由DR将路由信息发送给本网段内的其他路由器。两台不是DR的路由器(DROther)之间不再建立邻接关系,也不再交换任何路由信息。 A,B,C,E,发送路由信息给D ,A,B,C,E彼此之间没有邻接关系。。
我谈谈我对DR,BDR选举的理解:在广播或者NBMA环境下,一台路由器在配置了OSPF之后,会向外发送组播包,宣称自己是BDR,然后同样其他配置了OSPF路由协议的路由器也宣称自己是BDR,第一台路由器在收到这些包后,会与自己宣称的优先级,router-id进行比较,如果自己的优先级或者router-id大于自己收到的,那么在宣称自己是DR,如果自己的优先级或者router-id小于其中一个的话,就认为自己是BDR,那台高的就是DR,然后传递这些信息,如果自己的优先级或者router-id小于任何两台设备的话,自己就放弃DR,BDR的选举,传递真正的DR,BDR的信息
我来对上面的引用做一个总结:实际上网络上的路由器之间选举DR和BDR是同时进行的,首先所有路由器都在hello报文中宣称自己是DR(如果priority大于0的话),并对收到的hello报文进行比较,如果收到比自己的priority大的hello报文,那么该路由器在hello报文中宣称自己是BDR,并宣称比自己的priority大的路由器为DR,最终只有一个路由器宣称自己是DR,一个路由器宣称自己是BDR。
网络上新加入了一个路由器,如果已经存在DR、BDR,则不进行选举,默认接受。如果无BDR,将选举BDR。如果无DR,则将BDR变为DR并选举新的BDR。
DR是针对路由器的接口而言的,路由器的某个接口可能是DR,而另一个接口可能不是DR。也可以说成DR是按网段进行选举的,一个网段一个,因为路由器的每个接口都属于一个不同的网段,所以DR是针对路由器的接口而言的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。