創建鄰接的過程:AB開始都是DOWN狀態。
A向B發送一個hello包,告訴B我的router-id是172.16.1.1,我沒有已知鄰居;B收到了hello包,知道A是自己的鄰居,將172.16.1.1加入到自己的鄰居表,進入初始化(init)狀態,B向A發hello包,告訴A我的router-id是172.16.1.2,我已知的鄰居是A,A收到B的hello包,將172.16.1.1加入到自己的鄰居表,B成爲A的鄰接路由器,(如果是一個MA網絡的話,AB都知道了雙方的router-id後,會協商DR,BDR,因爲B的router-id大所以B就會成爲DR)A向B發hello包,告訴B我的router-id是172.16.1.1,我的鄰居是B,B收到hello包,A成爲B的鄰接路由器。
路由器發現階段的步驟:
seq序列號
I(init)=1,是1類的DBD,裏面沒有LSA,所以體積很小。就是協商主從,在後續的同步LSA中,誰佔主動,誰佔被動,而且根據誰的序列號統一LSDB中的LSA的序列號。I=0表示已經協商完畢。
M(more)=1,表示後面還有更多的DBD發過來,=0的時候表示這是我最後一個DBD的報文。
MS(master)=1,表示我認爲我應該佔主動,對比的原則是誰的router-id大誰做主。對比完後,小的一方會把自己的ms設置爲0。
A進入EX-start(預啓動狀態),A先給B發送DBD報文,因爲router-id是1.1,因爲先要協商主從,所以第一個DBD報文,不包含具體的LSA,;B收到A發來的DBD報文,進入EX-start狀態,發現他的router-id比自己的小,發DBD報文給A,告訴A你不是主,我纔是主,因爲我的router-id比你大,所以I=1;A收到B的DBD報文,知道B是主,(因爲已經協商好了誰是主從的問題,A將自己下一個要發的DBD報文的I位置爲0,以爲自己的不是主所以ms也置爲0)A進入exchange(交換2類DBD的狀態,2類DBD包括LSA),A給B發送DBD說這是我的鏈路狀態數據庫的彙總信息,,B收到A發來的DBD報文,進入exchange狀態,發彙總信息給A,,因爲自己是主所以ms位置爲1。
路由發現階段步驟:
B向A發送DBD,告訴A這是他的彙總信息,因爲M=0,所以告訴A這是我的最後一個DBD,A收到B的DBD,A會收集自己所需要的完整的LSA,A 進入loading狀態,A給B發送彙總信息,告訴B自己已經沒有DBD了,然後B已經有了完整的LSA所以A進入full狀態;因爲A需要維護一個LSA的列表,所以向B發送一個LSR,對B說我需要你完整的關於172.16.10.0網絡的信息,B收到後給A回去 LSU,告訴A這是172.16.10.0網絡的信息,A收到後進入full狀態,A回覆給B一個ACK的消息,告訴B已收到。雙方開始進入路由的收斂。