OSPF的网络类型:
P2P型:一对路由器只加入到一个网络中
Broadcast型:例如 LAN
NBMA网络(非广播多路访问网络): 例如 帧中继网络
point-to-multipoint
point-to-multipoint NBMA
loopback
在P2P网络中没有DR和BDR的选举,DR和BDR的选举是在MA网络中进行的
OSPF为什么有多种网络类型?
因为OSPF路由协议是基于大型网络而设计的,大型网络的底层链路是不同的 OSPF的邻接关系
是通过组播来实现的,OSPF出现如此多的网络类型是为了适应底层的网络,例如 如果我们的底层网络是 LAN ,那么这种网络我们称之为MA网络,在默认情况下封装成为 Broadcast ,只有在MA网络中,才会进行DR和BDR的选举。
当多台OSPF路由器连接到同一个MA网络时,如果每两台路由器之间都相互交换LSA,那么该网段将充满着众多的LSA,为了减少LSA的数量,那么通过在MA网络中的多台路由器中选出一台核心路由器DR 网段中的所有OSPF路由器都和DR交换LSA,这样一来DR就拥有了所有的LSA,并且将所有的LSA转发给每一台路由器;DR就像是该网段LSA的中转站,所有的路由器都与该中转站互换LSA,如果DR失效后,那么就会造成LSA的丢失与不完整,所以在MA网络中除了要选举一个DR之外,还会选举出一个BDR作为DR的备份,BDR在DR不可用时,替代DR的工作。剩下的路由器称之为DROTHER。
用例子说明上述的问题
比如一期思科培训第一天开班,来参加所有培训的学生之间本身并不熟悉,由于大家都在同一屋檐下学习,为了集体的和谐和团结,现在所有的学员之间进行自我介绍,如果有培训班有10个人,那么每个人都需要把自己的个人信息,跟另外9个人说,那么同样的内容都要说9次,一个人说9次 10个人就要说90次,此时每一个学员才能知道另外9个人的个人信息。那么这样就比较麻烦,如果此时我们在10个人中选出一个班长DR和一个副班长BDR,学员只要把自己的信息告诉给班长和副班长,此时班长和副班长就知道班级中所有成员的个人信息,然后班长再站出来大声的把另外9个人的信息念出来,此时只要说一次学员信息,其他学员听到后就都知道其他每个人的信息了,但是如果班长DR由于某种原因没来上课,此时维护学员信息的任务就交给副班长BDR了。
我们搭建网络拓扑
在四台路由器之间配置IP地址并跑起OSPF路由协议
R1>en
R1#config
R1(config)#int lo 0
R1(config-if)#ip add 1.1.1.1 255.255.255.0
R1(config-if)#no shut
R1(config-if)#exit
R1(config)#int f1/0
R1(config-if)#ip add 12.1.1.1 255.255.255.0
R1(config-if)#no shut
R1(config-if)#exit
R1(config)#router ospf 100
R1(config-router)#router-id 1.1.1.1
R1(config-router)#net 12.1.1.0 0.0.0.255 area 0
R1(config-router)#net 1.1.1.0 0.0.0.255 area 0
R1(config)#
R2>en
R2#config
R2(config)#int lo 0
R2(config-if)#ip add 2.2.2.2 255.255.255.0
R2(config-if)#no shut
R2(config-if)#int f1/0
R2(config-if)#ip add 12.1.1.2 255.255.255.0
R2(config-if)#no shut
R2(config-if)#exit
R2(config)#router ospf 100
R2(config-router)#router-id 2.2.2.2
R2(config-router)#net 12.1.1.0 0.0.0.255 area 0
R2(config-router)#net 2.2.2.0 0.0.0.255 area 0
R2(config-router)#exit
R2(config)#
R1和R2之间的关系为 full 但是没有标记DR和BDR
R2和R1之间是full关系,但是和R3之间就选举出了DR和BDR,通过图上我们发现 R3是R2和R3之间的DR
R3分处两个MA网络中,R3在两个MA网络中所处的角色是不同的,R3对于R2来说是DR,但是对于R4来说是BDR,可见一个OSPF区域中的不同MA网络中,路由器所处的角色也是不相同的
那么在MA网络中 DR和BDR 的选举规则是什么呢?
1. 比较接口优先级
选举优先级高的接口成为DR,优先级的数字越大,则优先级越高,被选举为DR的机率就越大,次 优的优先级为BDR,优先级的取值范围为1-255 默认情况下端口优先级为1,如果优先级为0的话, 表示不会参加DR和BDR的选举
2. route-id的大小,如果在优先级都相同的情况下, route-id最大的成为DR,其次是BDR,数字越 大被选举为DR的机率就越大
3. 运行OSPF的路由器,谁先启动的OSPF谁就是DR,不管route-id 大小以及优先级大小
4. 已经选举出来的DR,不会因为BDR以及DROTHER的优先级以及route-id发生变化,而丢失DR角色
在R2和R3组成的MA网络中, DR为R3,那么我们修改R2的优先级,继续看DR和BDR的选举过程
r2(config)#int f2/0
r2(config-if)#ip ospf priority 255
成功将优先级修改为255
R3的接口优先级为默认值 1
此时我们看到,R2的接口优先级优于R3 此时我们继续查看DR角色
我们发现R3的DR角色并没有改变,可见DR选举之后就不能再被抢占了,此时我们让R2和R3重新协商OSPF邻居
同时清两台路由器的OSPF进程,让它们重新进行协商
此时我们看到 R3变成了 BDR,
所以我们证明了,接口优先级越大越优,DR角色不会被抢占,只有重新进行OSPF的协商才能重新选举DR和BDR角色
在本例第一个拓扑中
R4的 route-id 最大为4.4.4.4 ,但是我在宣告OSPF协议时候是从R1开始宣告的也就是R1的OSPF进程是最先启动的,所以 R1是DR R2是BDR R3和R4为DROTHER
所以就证明了,哪个路由器最先启动,哪个就是DR,而不管优先级以及route-id
因为所有路由器都能与DR和BDR交换LSA,所以所有的路由器与DR和BDR之间的关系都为邻接关系,而DROTHER之间无法互换LSA,所以它们之间是邻居关系
两台OSPF路由器能够形成邻居,但并不一定能相互交换LSA 只要能互换LSA关系则为邻接关系,邻居关系之间只交换HELLO包,但是邻接关系之间还会交换LSA
关于DR和BDR的选举就介绍到这里