王导导首先我要确定ospf的确先选的bdr然后在来的dr,很多人有疑问是应为首先tcp/ip 一书中关于dr和dbr的选举少写的一段:如下
1,首先得弄明白卷一上说的“宣称”,“宣告”是两个截然不同的意思。宣称是说在hello包里的DR/BDR域里有自己接口的地址,表示参与DR或BDR的选举;宣告是表示某路由器已经被选举为了DR或BDR。
2,已经选举为了DR(也就是被宣告为了DR),不能参与BDR的选举,,但是但是但是已经选举为了BDR的路由器可以参与DR的选举。
3,DR/BDR的选举是一个循环的过程。
所以如下总结
1,首先当然是先列表出符合选举条件的路由器了(也就是优先级大于0且已已经是2-way状态的路由器),,然后所有的路由器既宣称自己为DR,也宣称自己为BDR,当然在hello包里的DR/BDR域里都记上自己接口的IP地址。
2,然后开始选举BDR,(当然这个是个循环过程了,如果这个时候已经有DR了,那么就排出这个DR,因为已经选举为了DR的不参与BDR的选举),所以划分一个排开DR的子集,这里就都是宣称自己为BDR的路由器,,然后优先级取胜出BDR(当然优先级相等,就RID了),如果没有宣称BDR的路由器(因为可能在hello字段BDR域里没有自己的接口地址,关于这点我也感觉和之前矛盾),那么就从中选举出优先级最大的路由器为BDR。
3,然后开始选举DR,还是划分宣称自己为DR的子集,当然这个时候之前选出来的BDR也参与到DR的选举中,再次通过优先级选举出DR,如果之前选举的BDR优先级最大,那么就在这次选举被覆盖掉,被选举为了DR(从而也保证优先级最大的为DR),如果没有宣称自己为DR的路由器,那么直接把这个BDR升级为DR。,然后再选举BDR。
in a word,如果段中有DR了,那么选举BDR,如果没有DR,那么之前选举的BDR升级为DR,再次选举BDR,,但是同样是按照之前的选举步骤来。
如上 所说是少了这么一段.其实加上这么一段后发现就对了吧~~哈哈~~~
还有个误到人的地方就是在ospf邻居在exstart状态时,开始选dr和bdr,这个时候出现了一个m/s(主从)位,很多人说优先级等同的情况下看router-id,大的是m就是主,也是dr,也是决定谁控制数据同步.其实我要说并不是的,ms就是简单的决定谁去控制数据同步,这个在我下的ospf 邻居关系里就有,而且那上面有个经典的话,dr也是可能成为salve的,也正好驳倒了router-id大的就是m,就是dr.前面其实有人把这个贴出来讲对了
(向以前我班里的学生道歉,当时我也是这么说的,不好意思,现在做个纠正)