簡介
本文描述開放最短路徑優先(OSPF)鄰居如何變得完全相鄰時的常見問題。
必要條件
需求
本文檔需要瞭解IP路由協定和OSPF路由協定的基本知識。要瞭解有關IP路由協定的詳細資訊,請參閱如何配置基本IP路由。有關OSPF的詳細資訊,請參閱開放最短路徑優先(OSPF)支援頁。
採用元件
本檔案中的資訊是根據列出的軟體和硬體版本:
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
慣例
如需文件慣例的詳細資訊,請參閱思科技術提示慣例。
背景資訊
在成功形成OSPF鄰接關係時,OSPF鄰居會達到FULL鄰居狀態。要檢查鄰接關係,請輸入 debug ip ospf adj
指令。輸入debug指令之前,請先參閱有關Debug指令的重要資訊。
相鄰
路由器是鄰居這一事實不足以保證鏈路狀態更新的交換;它們必須形成鄰接關係以交換鏈路狀態更新。鄰接是一種高級鄰居關係形式,由路由器形成,這些路由器在協商交換引數後交換路由資訊。當路由器在鏈路狀態資料庫中同步檢視時,它們會達到FULL鄰接狀態。
介面型別在鄰接關係的形成方式中起著主要作用。例如,點對點鏈路上的鄰居始終會嘗試變得鄰接,而連線到廣播介質(例如乙太網)的路由器只能與介面上的一小部分鄰居路由器相鄰。
一旦路由器與鄰居形成鄰接關係,它就會開始交換其鏈路狀態資料庫的完整副本。而鄰居則與路由器交換其鏈路狀態資料庫的完整副本。經過幾個鄰居狀態後,路由器將完全鄰接。
相鄰國家/地區
使用show ip ospf neighbor命令確定OSPF鄰居或鄰居的狀態。此命令的輸出顯示以下內容之一:
-
什麼都沒有
-
state =關閉
-
state = init
-
state = exstart
-
狀態=交換
-
狀態= 2-way
-
state =載入
有其他OSPF狀態,但此處顯示的狀態是在show ip ospf neighbor命令輸出中看到的最常見狀態。請參閱OSPF鄰居狀態,瞭解更多資訊以及所有OSPF鄰居狀態的說明。
未顯示狀態
如果 show ip ospf neighbor
命令完全不顯示任何內容 — 或者不顯示有關所關注的特定鄰居的資訊,則此路由器沒有收到來自該鄰居的任何「有效」OSPF HELLO。這表示OSPF沒有收到來自鄰居的任何HELLO資料包,或者收到的HELLO資料包未能通過非常基本的健全性檢查。
檢查以下專案:
-
本地路由器和相鄰路由器上的介面是否為up狀態,線路協定是否為up?輸入 show interface
命令檢查介面狀態。
-
檢查相鄰路由器之間的IP連線,如下所示:
-
鄰居是否響應 ping
指令?對分配給鄰居路由器上相關介面的IP地址執行Ping操作。輸入 traceroute
對同一個IP地址發出命令,並驗證它到達目的地的時間不會超過一跳。
-
如果您輸入 ping 224.0.0.5
指令?(224.0.0.5是將OSPF HELLO傳送到的IP地址。)
-
檢查可以禁止將IP資料包從一個鄰居轉發到另一個鄰居的任何入站訪問清單或其他裝置(如交換機)。
-
您的介面和鄰居/相鄰路由器的介面上是否都啟用了OSPF?輸入 show ip ospf interface
命令進行驗證。
-
OSPF是否配置為本地或鄰居/相鄰路由器介面的被動介面?輸入 show ip ospf interface
命令驗證HELLO資料包是否應該從介面發出。活動OSPF介面顯示類似於以下所示的行:
Router#show ip ospf interface
GigabitEthernet0/0 is up, line protocol is up
Internet Address 10.1.1.1/30, Area 0, Attached via Network Statement
Process ID 1, Router ID 10.1.1.1, Network Type BROADCAST, Cost: 1
Topology-MTID Cost Disabled Shutdown Topology Name
0 1 no no Base
Transmit Delay is 1 sec, State BDR, Priority 1
Designated Router (ID) 10.1.1.2, Interface address 10.1.1.2
Backup Designated router (ID) 10.1.1.1, Interface address 10.1.1.1
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
oob-resync timeout 40
Hello due in 00:00:05
Supports Link-local Signaling (LLS)
Cisco NSF helper support enabled
IETF NSF helper support enabled
Index 1/1/1, flood queue length 0
Next 0x0(0)/0x0(0)/0x0(0)
Last flood scan length is 1, maximum is 1
Last flood scan time is 1 msec, maximum is 1 msec
Neighbor Count is 1, Adjacent neighbor count is 1
Adjacent with neighbor 10.1.1.2 (Designated Router)
Suppress hello for 0 neighbor(s)
-
檢驗相鄰路由器是否具有不同的路由器ID。路由器ID用於標識OSPF網路中的每台路由器。使用相同路由器的路由器會忽略彼此傳送的HELLO,而不會成為相鄰路由器。第一行 show ip ospf
命令輸出會顯示每台路由器的當前路由器ID。
-
驗證鄰居介面上的以下HELLO引數是否匹配:
-
OSPF區域編號 — 輸入 show ip ospf interface interface-name
命令進行驗證。
-
OSPF區域型別,如stub或NSSA -輸入 show ip ospf
命令進行驗證。
-
子網和子網掩碼 — 輸入 show interface
命令進行驗證。
-
OSPF HELLO和Dead計時器值 — 輸入 show ip ospf interface interface-name
命令進行驗證。
-
如果問題出在點對點鏈路(例如PPP或高級資料鏈路控制[HDLC])上,並且此對路由器之間有多個並行鏈路,請驗證線路是否正確連線。假設您計畫將一台路由器的介面Serial0/0與鄰居的介面Serial0/0相連,將串列介面1/0與鄰居的介面Serial1/0相連,但您意外越過這些介面,將每台路由器的Serial0/0與另一台路由器的Serial1/0相連。其 ping
命令無法發現此類問題,但OSPF無法建立鄰接關係。使用Cisco Discovery Protocol(CDP)提供的資訊驗證裝置是否正確互連。輸入 show cdp neighbor interface-name
命令驗證遠端裝置的名稱和PortID是否與網路設計匹配。
注意:OSPF鄰接關係僅通過主網路形成,而不通過輔助網路。
如果所有這些檢查均經過驗證, show ip ospf neighbor
命令仍顯示任何內容,則您的問題不是很常見,您可以聯絡Cisco TAC尋求協助。
處於關閉狀態的鄰居
通過接收HELLO資料包動態發現的鄰居如果被OSPF進程刪除,則可能會回到down狀態。例如,當OSPF從鄰居收到HELLO資料包的時間超過失效計時器間隔時,此類鄰居的關閉狀態是瞬時的;它們要麼進入更高狀態,要麼從已知鄰居的表中刪除。這被稱為「被遺忘」。
通常,在down狀態中看到的鄰居會手動配置 neighbor
指令。手動配置的鄰居始終存在於OSPF鄰居表中。如果OSPF從未收到來自手動配置的鄰居的HELLO資料包,或者如果在上一個Dead計時器間隔內沒有收到來自鄰居的HELLO資料包,則手動配置的鄰居將列為down。
註: neighbor
命令只能針對以下網路型別的直連鄰居進行配置:
— 非廣播多路訪問(NBMA)網路 — 使用 ip ospf network non-broadcast
指令。
— 非廣播點對多點網路 — 使用 ip ospf network point-to-multipoint non-broadcast
指令。
如果鄰居處於down狀態,請確認該鄰居路由器已啟動、處於活動狀態且已在此介面上正確配置了OSPF。測試路由器之間的連線 ping
和 traceroute
指令。使用OSPF鄰居路由表 show ip ospf neighbor
命令,並執行本文檔前面的未顯示狀態部分中列出的相同配置驗證操作。
鄰居處於初始化狀態
init狀態表示路由器收到來自鄰居的HELLO資料包,但是尚未建立雙向通訊。Cisco路由器在其HELLO資料包的Neighbor欄位中包含處於init(或更高)狀態的所有鄰居的路由器ID。要與鄰居建立雙向通訊,路由器還必須收到鄰居HELLO資料包的Neighbor欄位中自己的路由器ID。有關更詳細的示例和說明,請參閱為什麼show ip ospf neighbor命令顯示處於初始狀態的鄰居?
處於雙向狀態的鄰居
2-way狀態表示路由器在鄰居HELLO資料包的Neighbor欄位中收到自己的路由器ID。從處於init狀態的鄰居收到資料庫描述符(DBD)資料包也會導致轉換為2向狀態。在廣播和非廣播多路訪問(NBMA)網路中,OSPF鄰居2路狀態不是引起注意的原因。有關2-way狀態的說明,請參閱為什麼show ip ospf neighbor命令顯示鄰居停滯在2-way狀態?
處於Exstart或Exchange狀態的鄰居
exstart或exchange狀態的OSPF鄰居嘗試交換DBD資料包。路由器與其鄰居形成主要和次要關係。鄰接必須持續超過此狀態。如果不匹配,則存在DBD交換問題,例如最大傳輸單元(MTU)不匹配或收到意外的DBD序列號。有關詳細資訊,請參閱為什麼OSPF鄰居停滯在Exstart/Exchange狀態?
鄰居處於載入狀態
在loading狀態下,路由器傳送鏈路狀態請求資料包。相鄰時,如果路由器收到過時的或丟失的鏈路狀態通告(LSA),它會傳送鏈路狀態請求資料包以請求LSA。沒有在此狀態之後進行轉換的鄰居可能會交換損壞的LSA。此問題通常伴有%OSPF-4-BADLSA控制檯消息。由於此問題不常見,請聯絡Cisco TAC以尋求協助。
OSPF鄰居問題的典型原因
下表列出了OSPF鄰居在嘗試建立鄰接關係時出現問題的原因,並列出了一些可用於驗證問題的命令。
鄰居鄰接問題的原因 |
用於診斷問題的命令 |
其中一台路由器上未配置OSPF。 |
show ip ospf |
OSPF在需要它的介面上未啟用。 |
show ip ospf interface |
OSPF HELLO或Dead計時器間隔值不匹配。 |
show ip ospf interface |
相鄰介面上的ip ospf network-type mismatch。 |
show ip ospf interface |
鄰居介面之間的MTU不匹配。 |
show interface <int-type><int-num> |
OSPF area-type在一個鄰居上為stub,但同一區域中的相鄰鄰居未配置為stub。 |
show running-config show ip ospf interface |
OSPF鄰居有重複的路由器ID。 |
show ip ospf show ip ospf interface |
OSPF在鄰居的輔助網路上配置,但在主網路上未配置。這是阻止在介面上啟用OSPF的非法配置。 |
show ip ospf interface show running-config |
OSPF HELLO由於資源不足而未處理,例如CPU利用率高或記憶體不足。 |
顯示記憶體摘要 show memory processor |
層故障會阻止接收OSPF HELLO。 |
顯示介面 |
注意:要避免OSPF鄰接關係建立時的MTU檢查,可以配置 ip ospf mtu-ignore
命令。但是,建議通過檢查介面配置來修復任何MTU不匹配,而不只是繞過MTU檢查。
相關資訊