1. 在与一个或多个邻居之间的双向通信建立起来之后,(路由器)对每个邻居(发送来)的Hello包中的优先级、DR和BDR域进行检查。列出所有能够参加选举的路由器(也就是说,路由器的优先级高于0并且此路由器的邻居状态至少为“双向”);所有路由器都宣称自己为DR(将它们自己的接口地址置于Hello包的DR域中);而且所有路由器都宣称自己为BDR(将它们自己的接口地址置于Hello包的BDR域中)。进行计算的路由器也要将自身包括在此列表内,除非它被禁止参加选举。
2. 从(以上)备选路由器列表中,创造一个子集,此子集包含所有未宣称为DR的路由器(宣称自己为DR的路由器无法被选举为BDR).
3. 如果此子集中的一或多个邻居将它(们)自身的接口地址置于BDR域中,这些邻居中拥有最高优先级的路由器将被宣告为BDR。如果出现平局(路由器优先级相等),拥有最高Router ID的邻居将被选举出来。
4. 如果此子集中没有任何路由器被宣告为BDR,拥有最高优先级的邻居将被宣告为BDR。如果出现平局,拥有最高Router ID的邻居将被选举出来。
5. 如果一或多个备选路由器将它(们)自身的接口地址置于DR域中,拥有最高优先级的邻居将被宣告为DR。如果出现平局,拥有最高Router ID的邻居将被选举出来。
6. 如果没有任何路由器宣告自己为DR,则新选举出来的BDR将成为DR。
7. 如果进行计算的路由器是新选举出来的DR或者BDR,或者如果它不再是DR或者BDR,重复步骤2到6。
简而言之,当一个OSPF路由器启动并开始搜索邻居时,它先搜寻活动的DR和BDR。如果DR和BDR存在,路由器就接受它们。如果没有BDR,就进行一次选举将拥有最高优先级的路由器选举为BDR。如果多于一台路由器拥有相同的优先级,那么拥有最高路由器ID的路由器将胜出。如果没有活动的DR,BDR将被提升为DR然后再进行一次BDR的选举
本文来自CSDN博客,转载请标明出处: http://blog.csdn.net/lotusr5/archive/2006/10/03/1319768.aspx