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