OSPF詳解二之OSPF鄰接關係剖析

OSPF鄰接關係創建過程剖析網絡

    在OSPF網絡中,爲了交換路由信息,鄰居設備之間首先要創建鄰接關係,鄰居(Neighbors)關係和鄰接(Adjacencies)關係是兩個不一樣的概念。ide

    鄰居關係:OSPF設備啓動後,會經過OSPF接口向外發送Hello報文,收到Hello報文的OSPF設備會檢查報文中所定義的參數,若是雙方一致就會造成鄰居關係,兩端設備互爲鄰居。ui

    鄰接關係:造成鄰居關係後,若是兩端設備成功交換DD報文和LSA,才創建鄰接關係。spa

    

OSPF狀態機3d

  OSPF共有8種狀態機,分別是:Down、Attempt、Init、2-way、Exstart、Exchange、Loading、Full。router

  一、Down:鄰居會話的初始階段,代表沒有在鄰居失效時間間隔內收到來自鄰居路由器的Hello數據包。blog

  二、Attempt:該狀態僅發生在NBMA網絡中,代表對端在鄰居失效時間間隔(dead interval)超時後仍然沒有回覆Hello報文。此時路由器依然每發送輪詢Hello報文的時間間隔(poll interval)向對端發送Hello報文。接口

  三、Init:收到Hello報文後狀態爲Init。ci

  四、2-way:收到的Hello報文中包含有本身的Router ID,則狀態爲2-way;若是不須要造成鄰接關係則鄰居狀態機就停留在此狀態,不然進入Exstart狀態。路由

  五、Exstart:開始協商主從關係,並肯定DD的序列號,此時狀態爲Exstart。

  六、Exchange:主從關係協商完畢後開始交換DD報文,此時狀態爲Exchange。

  七、Loading:DD報文交換完成即Exchange done,此時狀態爲Loading。

  八、Full:LSR重傳列表爲空,此時狀態爲Full。


OSPF鄰接關係創建過程圖解:

wKiom1lE1quA-pK3AAEMTpVCuGs377.jpg

注:此圖爲網圖,諒解博主懶病犯了。哈哈。。

鄰接關係創建過程詳解(Broadcast類型):【對比着圖更容易理解哦】 

  一、在Down狀態下路由器發出第一個hello包。當R2收到一個Hello包,而且在這個hello包中看不到自已的ID,則將自已和鄰居的關係轉到Init狀態。Init是一個one way 狀態,當R1和R2都認識對方後就會進入2-Way狀態。

  二、當收到包含本身router-id的hello包時,將本身和鄰居的狀態置爲2-way。在Two Way時,將選舉DB/BDR(MA網絡)。進入Two way狀態後(即從Exstart開始),表示這兩個路由器已經創建了鄰居關係了。但最終能不能鄰接關係要看最後是否是FULL。

  三、Exstart:Exstart交互的是firstDBD,主要是用於選舉主從關係(router-id大的爲主),肯定接下來DD報文的序列號(用主的序列號),爲lsdb同步作準備。

   進入Exstart狀態後,R1和R2分別向對方發送firstDBD報文,並將I位置爲1,表明是第一個DBD報文;M位置爲1,表明不是最後一個DBD報文;MS位置爲1,最初會本身認爲本身是主。當收到對方的first DBD報文後,經過router-id選舉出主從,由主來決定seq的值。

   根據上圖中能看到第二個DBD報文中包含seq值,第一個報文的seq值爲n+1,以此類推。當主發送以此DBD報文,從必須給予一次回覆,這是因爲OSPF是基於IP的,沒有確認機制,須要seq作隱式確認,保證了可靠性。

  四、Exchange: Exchange是經過DBD交換LSA的頭部信息。

  五、Loading:等待收到M位爲0的DD報文時,才進入loading。

   進入Loading以後,R1開始向R2發送LS request報文,請求那些在Exchange狀態下經過DD報文發現的,並且在本地LSDB中沒有的鏈路狀態信息。R2收到LS Request報文以後,向R1發送LS Update報文,在LS Update報文中,包含了那些被請求的鏈路狀態的詳細信息。R1收到LS Update報文以後,R1向R2發送LS Ack報文,確保信息傳輸的可靠性。

  六、FULL:lsdb同步完成,鄰接關係的完整創建。


OSPF報文類型

OSPF共有5類報文,分別爲Hello、DD、LSR、LSU、LSAck,如下爲博主實驗抓包現像剖析內容及做用。

Hello報文:創建和維持鄰居關係

    wKiom1lE196QP5cXAAEpi_SP5QY446.jpg

DBD報文:分爲first DBD報文和DBD報文。

  一、First DBD報文不攜帶LSA頭部,經過firstDBD確認主從關係,主的做用只是爲了控制序列號的同步。主從選舉方式爲Router-ID高的將成爲主。

    wKioL1lE2GHCiuiZAAFBOl1NZ-U271.jpg

    二、DBD報文只攜帶LAS的頭部信息,沒有攜帶LAS的具體信息。承載完整LAS是LASUpdate包。

    wKiom1lE2I3xIDhzAADlUx_xXL0359.jpg

LS Resquest報文:是不攜帶LAS頭部的,只經過(公告ID,LSA L類型,linkID)來請求具體的條目。

    wKiom1lE2Oyx7abbAAE90lNyCnU548.jpg

LS Update報文:含有真正LSA完整信息的,用來回應LSRequest。

    wKiom1lE2QHjHmmfAADuw6a6ZCw229.jpg

LSAck報文:對LSU的確認

    wKioL1lE2R6z9px-AAF-YwJQvtk537.jpg


路由更新

當鄰接關係創建完成後,後面發生路由更新,路由器之間的處理流程:

註釋:在廣播型網絡中,DRothers只和DR、BDR造成鄰接關係,所以更新數據包將發送到組播地址224.0.0.6,相應的DR路由器也將以組播方式發送包含LSA的更新包到網絡上全部與之創建關係的路由器,此時的組播地址爲224.0.0.5。接着,全部路由將從全部其餘的接口上泛洪擴散LSA。雖然BDR路由器也使用組播方式收到和記錄了來自DRothers路由器的LSA通告,可是它不會再重複泛洪擴散或者確認這些LSA,除非DR路由器失效了它纔會這麼作。

      在NBMA網絡上存在一樣的DR/BDR的功能特性,只是LSA是以單播方式從DRothers路由器發送給DR和BDR的,而且DR路由器也是以單播方式發送該LSA的拷貝到全部與之創建鄰接關係的鄰居路由器的。

第一步:

更新路由器以組播方式(224.0.0.6)向DR、BDR發送更新數據包

wKioL1lKKTTRIaoPAABN-kEJsRM101.jpg

第二步:

DR經過組播方式(224.0.0.5)向每個與之創建鄰接關係的路由器發送包含LSA的更新包

wKioL1lKKZrBIwV6AABT5NWJPuk251.jpg

第三步:

全部路由將從全部其餘的接口上泛洪擴散LSA

wKiom1lKKeTyxNZOAABNpZR1YK8345.jpg


若鄰居關係創建不起來,出現的疑難雜症

若鄰居關係沒法創建,固然從創建鄰居關係的過程分析,到2-way狀態就能夠證實鄰居關係已經創建,中間通常出現問題會停留在init狀態。Hello報文可能影響的因素有以下幾點:

一、路由器ID

二、接口的區域ID

三、接口的地址掩碼(MA網絡):Broadcast、NBMA、P2MP都會檢查掩碼

四、接口的認證:認證後面分出來細講,請關注

五、接口的hello時間和dead時間:dead時間是hello時間的4倍

六、option字段:E位和N位,E位置爲1,表明普通區域,;N位置爲1,表明NSSA區域

根據hello報文解析:

wKiom1lFDD7gUEwOAAEDzvfiKVM380.jpg

從上面圖中能夠看到箭頭位置都會影響到鄰居關係的創建,因爲鄰居關係的創建中只會涉及到hello報文,因此基本上可能影響到的都歸納了。



若出現鄰接關係創建不了的緣由呢?

一、MTU值不一致

     華爲默認是不檢查MTU的,在DD報文中查看MTU值爲0。抓包能夠看到,箭頭標識:

wKioL1lFDgrycKasAAC415baKhY526.jpg

     從抓包能夠看到接口MTU值爲0,但接口MTU值默認爲1500,這裏設爲0,表明不檢測MTU。從ensp中查看路由器接口能夠看到,截圖以下:

wKiom1lFDpOS3hmyAAEMt8Kn6No660.jpg

若華爲設備須要OSPF鄰接關係創建檢查MTU值,怎麼辦?

在接口下開啓ospf mtu-enable便可,注意兩端接口都需開啓哦。

開啓以後,再抓包查看:

wKioL1lFD2qT7Lk4AAFX-tinl4k536.jpg

發現DD報文中接口MTU值爲1500了。

若開啓接口MTU檢查後,MTU值不同的話OSPF鄰接關係將沒法創建,卡在exstart狀態下。由於OSPF沒有定義任何分片方式,只能依賴IP包分片。若是沒規定MTU一致性的話,發送發的數據包(一般是LSU)一旦過大,超過接收方最大能接收的數據包大小,就會在接收方這裏丟包。


二、NBMA類型下沒有寫broadcast;(現實環境中幀中繼的環境已經少之又少了)


下一章 OSPF詳解三之OSPF LSA詳解

相關文章
相關標籤/搜索