CCNP——路由器運行OSPF協議鄰居關係建立不起來的一些原因彙總

當路由器運行OSPF協議時,有時路由器之間無法建立起鄰接關係,這個時候就無法傳遞LSA,也就無法傳遞路由,生成路由表,所以在這裏分析一下OSPF無法建立起來鄰接關係的幾個原因:

  • hello time和dead time不匹配
  • 接口兩端掩碼不一致
    如果網絡類型是P2P,則掩碼不一致也可以建立鄰居關係,對於MA網絡
    這個時候會出現能ping通但是無法建立鄰居
  • 區域不一致
  • router-id衝突
  • 認證不一致
  • 建立鄰居的接口被配置成passive(被動接口)
  • 接口沒有激活OSPF
  • OSPF主IP地址不一致(不一致指的是要建立鄰接關係的兩個路由器的接口的IP地址不屬於同一個網段),一定建立不起來鄰居關係
  • 物理層或者鏈路層協議down
    相當於接口關閉,所以當對接口執行shutdown命令時,鄰居關係直接down掉
  • ospf的hello組播地址被ACL拒絕
  • hello中的option
  • 區域類型不匹配(特殊區域)
  • 兩端接口優先級全是0
    如果MA網絡中只有兩臺設備,而且兩臺設備的接口優先級全部都是0,那麼這兩臺設備就會卡在2-way狀態,無法建立鄰接關係
  • MTU不一致會卡在exstart狀態
    如果OSPF的接口MTU不一致,會影響LSDB的同步,LSDB同步的時候會選擇M/S(主/從)
    exstart狀態會選擇主從(即選舉DR和BDR)
    如果從的MTU小於主的,那麼主和從都會卡在exstart狀態
    如果從的MTU大於主的,那麼從會卡在exstart,主會卡在exchange狀態
    MTU建立鄰接關係的兩個接口,如果MTU不一致會導致建立不了鄰接關係
    卡在主從選舉的位置

下面我們來使用一個簡單的拓撲來驗證其中的幾個原因:

網絡拓撲

一、hello time和dead time不匹配

首先我們先來修改hello time(即路由器之間發送hello報文的時間間隔),我們先來看一下不修改的時候hello time的時間是多少
查看接口類型

我們從圖中可以看出:

  • 網絡類型是點對點網絡(P2P網絡)
  • hello time是10秒,dead time是40秒,wait time是40秒

注:dead time默認是hello time的4倍,我們在修改hello time的時候,dead time的時間默認情況下也會改變,比如:將hello time修改爲20秒的時候,dead time默認就變成了80秒

所以我們在一開始配置好OSPF以後,發現鄰居已經建立起來,並且可以征程傳路由,這個時候我們把其中一臺路由器的hello time的時間修改後,我們發現:鄰接關係會立即down掉此時,如果我們再將另一臺路由器的hello time修改到與前一臺一致,我們發現鄰居關係又重新建立起來

二、接口兩端掩碼不一致

P2P網絡

  • 刪除一中的配置,是路由器恢復到配置好OSPF的狀態,這個時候通過一中,查看接口信息的圖,我們可以知道現在是點對點的網絡類型
  • 然後我們先刪除掉先前配置在r1路由器上s1/0接口的IP地址,我們發現鄰接關係瞬間down掉,如上圖所示,接着我們重新配置IP地址,地址不變,只修改掩碼,我們發現鄰接狀態重新建立起來

下面我們來看一下MA的網絡類型的情況:
MA網絡
我們先恢復到最初的配置(即剛配置好OSPF建立起鄰接關係),然後將網絡類型由point-to-point類型改成broadcast類型,然後重複上述操作,發現:重新配置上IP地址後,依然無法回覆鄰接關係,然後重新把兩個路由器接口的IP地址的掩碼改回到一致,鄰接關係才又重新建立起來

三、MTU不一致會卡在exstart狀態

重新恢復到最初的配置,然後修改從路由器(BDR)的MTU值爲1000
修改
默認情況下MTU爲1500個字節,這個時候從路由器的MTU值就小於主路由器,接下來我們發現兩臺路由器均卡在了exstart狀態:
主從
如果此時再修改主路由器的MTU的值爲900,這時,從路由器的MTU值大於主路由器,接下來我們發現:從會卡在exstart狀態,主會卡在exchange狀態:
從
主

該實現涉及到的相關配置命令:

  • show ip ospf int s1/0 ——查看hello time和dead time
  • r2(config)#int s1/0
    r2(config-if)#ip ospf hello-interval 1-65535——該命令表示修改接口hello time的發送時間(單位:秒)
  • r2(config)#int s1/0
    r2(config-if)#ip ospf dead-interval 1-65535——該命令表示修改接口dead time的發送時間(單位:秒)
  • r2#clear ip ospf process—— 清空OSPF進程
  • r2(config)#router ospf 1
    r2(config-router)#passive-interface default——該命令表示所有運行了OSPF路由協議的接口都開啓passive
  • r2(config-router)#no passive-interface serial 1/0——該命令表示取消s1/0被動接口配置
  • r2(config)#int s1/0
    ip mtu 1400——該命令表示修改接口處MTU最大值爲1400個字節(值可以根據自己需要設定)
  • r2(config)#int lo0
    r2(config-if)#ip ospf network point-to-point——該命令表示修改接口處的網絡類型爲點對點網絡
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章