1 DR的選舉機制算法
MA網絡上要同時選舉DR/BDR,DR與BDR,DR與DRother、BDR與Drother造成FULL,Drother之間造成2-way。網絡
MA網絡能夠沒有BDR,可是必須有DRide
DR的選舉是依靠hello報文,交互hello報文完成DR/BDR的選舉(有說法在2-way狀態後才進行選舉,路由器是進入2-way狀態後纔開始進行DR/BDR選舉,由於這個狀態下每臺路由器的鄰居ID都包含全部其餘的路由器,這體現公平性,實際實驗中華爲設備並無)。學習
2 DR的選舉算法spa
三個集合:blog
DR集合:經過hello報文學習到的全部DR路由器;接口
BDR集合:經過hello報文學習到的全部BDR路由器;路由
DRother集合:沒有被選舉的DR/BDR的路由器(要求優先級不爲0)it
2.1 DR的選舉規則class
若是 DR集合爲非空,則從中選擇最好的路由器成爲DR;
不然 DR集合爲空,將當前BDR提高爲DR;
若是BDR集合也爲空,則先從DRother集合中選出BDR,再將其提高爲DR。
2.2 BDR的選舉規則
若是BDR集合爲非空,則從中選擇最好的路由器爲BDR;
若是BDR集合爲空,則從DRother集合中選擇最好的路由器爲BDR
2.3 DR/BDR的選舉過程
說明:生成鄰居表並在接口維持三個集合:
DR集合{},BDR集合{},DRother集合{},這裏DRother指非DR非BDR且有資格成爲DR/BDR的路由器。
判斷狀態:OSPF接口開啓後,在hello報文中的DR/BDR字段都爲0,此時DR/BDR未知,同時wait timer啓動,時長4倍hello間隔,若是收到的hello報文裏的DR/BDR字段爲非空,則wait timer計時器中止,接受當前DR/BDR;若是wait計時超時後仍未學習到DR/BDR,則開始DR/BDR選舉。
選舉狀態:
先從DRother集合選BDR,再把BDR提高爲DR,而後再選擇BDR。
每臺路由器根據本身收到的鄰居hello報文得知DRother集合,而後獨立選擇DR/BDR,其餘路由器也同理。相同算法算出來的DR/BDR相同。
3 DR的選舉實驗
單臺路由器啓動,證實華爲不是在2-way後才進行DR/BDR選舉
單臺路由器啓動,在4倍hello後直接選舉出了DR。