OSPF鄰居建立過程

wKiom1R5gRHR844IAAFQ4qA_viE100.jpg

創建鄰接的過程:AB開始都是DOWN狀態。

AB發送一個hello包,告訴B我的router-id172.16.1.1,我沒有已知鄰居;B收到了hello包,知道A是自己的鄰居,將172.16.1.1加入到自己的鄰居表,進入初始化(init)狀態,BAhello包,告訴A我的router-id172.16.1.2,我已知的鄰居是AA收到Bhello包,將172.16.1.1加入到自己的鄰居表,B成爲A的鄰接路由器,(如果是一個MA網絡的話,AB都知道了雙方的router-id後,會協商DRBDR,因爲Brouter-id大所以B就會成爲DRABhello包,告訴B我的router-id172.16.1.1,我的鄰居是BB收到hello包,A成爲B的鄰接路由器。

 

wKioL1R5gamRK8uPAAF83dVCMI4366.jpg

路由器發現階段的步驟:

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,spacer.gif;B收到A發來的DBD報文,進入EX-start狀態,發現他的router-id比自己的小,發DBD報文給A,告訴A你不是主,我纔是主,因爲我的router-id比你大,所以I=1;A收到B的DBD報文,知道B是主,(因爲已經協商好了誰是主從的問題,A將自己下一個要發的DBD報文的I位置爲0,以爲自己的不是主所以ms也置爲0A進入exchange(交換2DBD的狀態,2DBD包括LSA),AB發送DBD說這是我的鏈路狀態數據庫的彙總信息,spacer.gifB收到A發來的DBD報文,進入exchange狀態,發彙總信息給Aspacer.gif,因爲自己是主所以ms位置爲1

wKiom1R5gTTDq6pcAAFDqEky4Rs137.jpg

路由發現階段步驟:

BA發送DBD,告訴A這是他的彙總信息,因爲M=0,所以告訴A這是我的最後一個DBDA收到BDBDA會收集自己所需要的完整的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已收到。雙方開始進入路由的收斂。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章