簡介
本文描述開放最短路徑優先(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操作。對同一IP地址輸入命令traceroute
,並驗證它到達目的地所花費的時間不會超過一跳。
-
如果輸入命令,鄰居是否會響應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
令進行驗證。
-
show ip ospf
OSPF區域型別,例如stub或NSSA — 輸入命令進行驗證。
-
子網和子網掩碼 — 輸入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資料包的時間長於Dead計時器間隔時,此類鄰居的down狀態是暫時的;它們要麼前進到更高的狀態,要麼被從已知鄰居的表中刪除。這被稱為「被遺忘」。
通常,在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。使用and命令測試路由器之間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檢查。
相關資訊