本文轉自:https://blog.51cto.com/4625416/1678913 

進入ExStart狀態后,廣播和NBMA型網絡要等待4倍的Hello時間,確定DR和BDR。然后建立鄰接關系,並交互鏈路狀態通告,以使用LSDB達到一致,進而完成路由表的計算和生成。

 

1 狀態的變化

wKiom1W2K4uC3JGqAAB-Jw03qf4590.jpg

ExStart:主從關系是在此狀態下形成的(router ID大的為主)。確定主從關系目的是確定DD交換過程中的序列號(LS Sequence Number,后面會有介紹),以保證DD包傳輸的可靠性,初始DD序列號是在此狀態下決定的。鄰居狀態變成此狀態以后,路由器開始向鄰居發送DD報文。在此狀態下發送的DD報文不包含鏈路狀態描述,只是確定主從關系。

Exchange:此狀態下路由器相互發送包含鏈路狀態信息摘要的DD報文,描述本地LSDB的內容。

Loading:相互發送LS Request報文請求LSA,發送LS Update通告LSA。

Full:兩路由器的LSDB已經同步。

 

即:確定主從關系->交互DD->相互發送LS R和LS U->達到同步,也就是說建立鄰接關系的最終目的是達到LSDB的同步。

 

 

下面重點說明兩個狀態的變換過程

wKiom1W2LSuS8q8dAAEQrodnBtE093.jpg

從比主多發一個DD包,確認主的最后一個DD包,保證絕對可靠

I位:1是第一個DD包

M位: more bit  1指還有DD包,0表示最后一個DD包

MS位:表示主從 1為主,0為從

 

wKiom1W2LV6ixJ7vAACLoz5P-qk544.jpg

1. 鄰居狀態變為Loading之后,RTA開始向RTB發送LS request報文,請求那些在Exchange狀態下通過DD報文發現的,而且在本地LSDB中沒有的鏈路狀態信息。

2. RTB收到LS Request報文之后,向RTA發送LS Update報文,在LS Update報文中,包含了那些被請求的鏈路狀態的詳細信息。

3. RTA向RTB發送LS Ack報文,確保信息傳輸的可靠性。 LS Ack報文用於泛洪對已接收LSA的確認。 鄰居狀態變成Full,表示達到完全鄰接狀態。

 

通過抓包可知,實際包的傳遞是交叉進行

wKiom1W2LgOD1EqFAAG8kxx1ql4285.jpg