OSPF邻接形成过程
?
?
一、DOWN :
雙方?jīng)]有進(jìn)行任何交互活動。
二、INIT :
收到對方的hello包,但是還沒收到含有自己RID的hello包,即對方?jīng)]有收到自己的hello包。
這個時候發(fā)送 hello(224.0.0.5)中DR字段為全零,因為還沒有選出 DR。
怎么知道對端有沒有收到我的報文呢,通過 Neighbors Seen字段看。
Hello包的參數(shù):
1、自己RID 2、Area ID 3、hello-interval 4、hello-deadinterval 5、網(wǎng)絡(luò)掩碼 6、優(yōu)先級 7、DR/BDR 8、鄰居RID 9、認(rèn)證信息
只有hello包中的2、3、4、5、9字段一致,才能形成鄰居。如有一項不相同的丟棄。
hello 包 ttl 值是 1,在E1中每 10 秒發(fā)送一次。因為只是相鄰的兩臺路由器建立關(guān)系。Hello包無需穿越路由器到達(dá)非直連的路由器。
三、TWO-WAY:
兩個OSPF路由器都從對端發(fā)來的hello包中發(fā)現(xiàn)自己的RID。建立鄰鄰居關(guān)系。
廣播網(wǎng)絡(luò)這個階段選舉DR/BDR。
DR/BDR選舉步驟:
step1:根據(jù)ospf路由器的接口的優(yōu)先級選舉DR/BDR(每個接口默認(rèn)的優(yōu)先級都是1)其中優(yōu)先級最大的成為DR,次大的成為BDR,其它的都是DR-Other。如果有路由器的pri為0,表示放棄DR/BDR的選舉.
priority:1--255 (串口默認(rèn)沒有優(yōu)先級,因為它默認(rèn)是POINT_TO_POINT,不需要選舉DR/BDR的,可通過sh ip ospf int e0查看)
step2:如果接口的優(yōu)先級相同,將使用router-id來決定DR/BDR的選舉:其中router-id最大的成為DR,次大的成 為BDR,其他的都是DR-other。
先選舉BDR,再從BDR中選舉DR。
四、EXSTART :
預(yù)啟動狀態(tài),OSPF路由器建立主從關(guān)系,然后由主確定一個發(fā)送DD的序列號。
選主從原則:RID大的為主。
選主從原因:傳輸DD之前,先由主確定一個序列號,并且只能有主對序列號進(jìn)行修改。為確定唯一的DD序列號,讓數(shù)據(jù)可靠到達(dá)。因為 ip 是不可靠傳輸,采用確認(rèn)+超時重傳。
頭兩個 dd 報文為空,不包含 lsa 的數(shù)據(jù),用于協(xié)商序列號。這時候都認(rèn)為自己是主。
五、EXCHANGE:
交換狀態(tài)。DRother和DR 開始交換數(shù)據(jù),主先發(fā)送DBD報文,此報文只是一個index(如同一本書的目錄)不包含實際的路由數(shù)據(jù),從也發(fā)送報文,發(fā)送主沒有的。
DD包信息:
1、I-bit (intial-bit)
標(biāo)示位,如果置1,則只有1個DD包,如果是子DD包,則置0.
2、M-bit (more-bit)
如置1,表示該DD包不是最后一個。如置0,表示其為最后一個。DD包發(fā)送結(jié)束。
3、MS-bit (master/slave-bit)
如置1,表示該包為主發(fā)的包,置0表示從發(fā)的包。
4、DD sequence number
DD包序列號
六、LOADING:
裝入狀態(tài)。從DD 報文中查看那個是自己需要的路由數(shù)據(jù),發(fā)送LSR 請求發(fā)送數(shù)據(jù),對端發(fā)送LSU,此報文包含所需的全部數(shù)據(jù)。
LSR信息:
1、 link state type 。總共有11種,但是思科公司未實現(xiàn)全部。
常見:1)router lsa:LID為RID。描述路由器與OSPF區(qū)域接口的信息,只在本區(qū)域內(nèi)flooding。
2)network lsa:LID為DR連接該區(qū)域的接口IP。有DR產(chǎn)生,描述本區(qū)域的路由器信息。是保證在廣播網(wǎng)絡(luò)中只產(chǎn)生一個network lsa 。
3)network summary lsa:LID為目的網(wǎng)絡(luò)號。由ABR產(chǎn)生,描述其所知道的其他區(qū)域網(wǎng)絡(luò)。
4)asbr las:LID為asba的RID。由ASBR產(chǎn)生,描述自己的位置,使其他路由器可以找到并到達(dá)它。
5)as external lsa :LID為外部網(wǎng)絡(luò)號。由ASBR產(chǎn)生,描述到達(dá)外部網(wǎng)絡(luò)的路由信息。
6)nssa external lsa:LID為外部網(wǎng)絡(luò)號。由ASBR產(chǎn)生,描述nssa區(qū)的直連外部路由。它會被包含到第5類lsa中,以便可以被分發(fā)到支持第5類lsa的區(qū)域。
2、link id:
不同lsa的link id 不同。
3、 advertising router :
發(fā)送lsa的RID。
LSU信息:
數(shù)據(jù)鏈路更新包,LAS包含在LSU中。
LSA (數(shù)據(jù)鏈路通告,LSA是包含在LSU中的)的傳播更新規(guī)律 :
Step1:如果本路由器從來沒有收到過此LSA,那么路由器就將其加入LSDB,并且轉(zhuǎn)發(fā)/泛洪此LSA。
Step2: 如果本路由器,曾經(jīng)收到描述同一個網(wǎng)絡(luò)的LSA:
2-1: 如果LSA的序號,與自己已有的相同,則丟棄此LSA。
2-2: 如果LSA的序號,與自己的更新,則同step。
2-3: 如果LSA的序號,比自己的更舊,就將自己較新的LSA發(fā)送給源。
七、FULL:
收到LSU報文后發(fā)送確認(rèn),完成充滿狀態(tài)。
存在DR/BDR時,DR收到LSU后是不發(fā)送LSAck的。因為當(dāng)DR將LSU在該區(qū)域內(nèi)flooding,當(dāng)發(fā)送路由器偵聽到該LSA時,就認(rèn)為是一個確認(rèn)。
當(dāng)不存在DR/BDR時,接收路由器發(fā)送LSAck。
完成full狀態(tài),說明該區(qū)域中所有路由都擁有相同的LSDB了。
Full狀態(tài)是DR/BDR和DRother連接的正常狀態(tài)。而two-way狀態(tài)是DRother之間連接的正常狀態(tài)
從INIT--LOADING 是路由器第一次交換信息的時候才出現(xiàn),到了 full 以后,如果在有路由變化那么就只發(fā)送lsu
完成full狀態(tài)后。路由器使用spf算法,以自己為根,計算出到達(dá)已知網(wǎng)絡(luò)的最佳路徑。
補(bǔ)充:在廣播型網(wǎng)絡(luò),DRother路由器只能和DR&BDR形成full完全鄰接關(guān)系,(注意,DRother路由器之間形成two-way部分鄰接關(guān)系)所以更新報文將發(fā)送到224.0.0.6,相應(yīng)的DR以224.0.0.5泛洪LSA并且BDR只接收LSA,不會確認(rèn)和泛洪這些更新,除非DR失效 在NBMA型網(wǎng)絡(luò),LSA以單播方式發(fā)送到DR和BDR,并且DR以單播方式發(fā)送這些更新.
轉(zhuǎn)載于:https://blog.51cto.com/zjskobe/818448
總結(jié)
以上是生活随笔為你收集整理的OSPF邻接形成过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开源websocket
- 下一篇: MySQL中各种字段的取值范围