如果網路中的網路節點能夠通過鏈路層的一跳到達彼此,則認為它們是相鄰的。本文提供如何對不完整鄰接進行故障排除的技巧,如介面上啟用Cisco Express Forwarding(CEF)時,show ip cef adjacency 命令的輸出所示。
Router#show ip cef adjacency serial 4/0/1 10.10.78.69 detail IP Distributed CEF with switching (Table Version 2707655) 130703 routes, 0 reresolve, 0 unresolved (0 old, 0 new), peak 39517 130703 leaves, 9081 nodes, 26227536 bytes, 2685255 inserts, 2554552 invalidations 949 load sharing elements, 318864 bytes, 71787 references universal per-destination load sharing algorithm, id 9E3B1A95 2 CEF resets, 23810 revisions of existing leaves Resolution Timer: Exponential (currently 1s, peak 16s) 22322 in-place/0 aborted modifications refcounts: 2175265 leaf, 1972988 node Table epoch: 0 (17 entries at this epoch) Adjacency Table has 112 adjacencies 4 IPv4 incomplete adjacencies
思科建議您瞭解以下主題:
本檔案中的資訊是根據Cisco IOS®軟體版本12.3(3)。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路正在作用,請確保您已瞭解任何指令可能造成的影響。
如需文件慣例的詳細資訊,請參閱思科技術提示慣例。
CEF描述一種非常高速的交換機制,路由器使用此機制將封包從傳入介面轉送到傳出介面。CEF使用兩組資料結構或表,並將其儲存在路由器記憶體中:
轉發資訊庫(FIB) — 取自國際標準化組織(ISO)的通用用法,FIB描述了用於做出轉發決策的資訊資料庫。它在概念上類似於路由表或路由快取,但在實現上卻與路由表非常不同。
鄰接表 — 如果網路中的兩個節點可以通過鏈路層使用單跳到達彼此,則認為它們是相鄰的。例如,當資料包到達路由器的一個介面時,路由器剝離資料鏈路層組幀並將封裝的資料包傳送到網路層。在網路層,檢查資料包的目的地址。如果目的地址不是路由器介面地址或所有主機的廣播地址,則必須對資料包進行路由。
資料庫中的每個路由條目至少必須包含兩項:
Destination address — 這是路由器可以到達的網路地址。路由器可能有多條路由通往同一地址。
指向目標的指標 — 此指標表示目標網路直接連線到路由器,或者表示直連網路上的另一台路由器指向目標的地址。該路由器是下一跳路由器,距離目的地近一跳。鄰接表示指向目標的指標。
此示例使用配置了IP地址為172.16.81.98的路由器(例如R1)的乙太網介面和將所有目的地指向相鄰路由器R2的乙太網介面的簡單預設靜態路由(IP地址為172.16.81.1作為下一跳)。一般來說,傳入介面上需要啟用CEF,才能交換封包。由於CEF對輸入做出轉發決策,因此請在輸入介面上使用no ip route-cache cef 命令禁用CEF。
注意:在快速交換中,Cisco IOS在交換資料包後構建一個快速交換快取條目。例如,到達過程交換介面並通過快速交換介面發出的資料包是快速交換的。在輸出介面上發出no ip route-cache 命令以禁用快速交換。這與CEF相反。
使用show ip route 命令檢視IP路由表的內容。
R1#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route Gateway of last resort is 172.16.81.1 to network 0.0.0.0 172.16.0.0/24 is subnetted, 1 subnets C 172.16.81.0 is directly connected, Ethernet0/0 S* 0.0.0.0/0 [1/0] via 172.16.81.1 !--- A simple default static route points all destinations to !--- a next-hop address of 172.16.81.1.
使用show ip arp或show arp命令顯示地址解析協定(ARP)表。
注意:ARP表中的「硬體地址」欄位顯示本地介面和下一跳介面的條目。
R1#show ip arp Protocol Address Age (min) Hardware Addr Type Interface Internet 172.16.81.98 - 0030.71d3.1000 ARPA Ethernet0/0 Internet 172.16.81.1 0 0060.471e.91d8 ARPA Ethernet0/0
使用show adjacency ethernet 0/0 detail和show adjacency ethernet 0/0 internal命令檢視鄰接表條目的內容。
R1#show adjacency ethernet 0/0 detail Protocol Interface Address IP Ethernet0/0 172.16.81.1(7) 0 packets, 0 bytes 0060471E91D8003071D310000800 ARP 03:57:08 Epoch: 1 R1#show adjacency ethernet 0/0 internal Protocol Interface Address IP Ethernet0/0 172.16.81.1(7) 0 packets, 0 bytes 0060471E91D8003071D310000800 ARP 03:57:00 Epoch: 1 Fast adjacency enabled IP redirect enabled IP mtu 1500 (0x48000082) Fixup disabled Adjacency pointer 0x62515AC0, refCount 7 Connection Id 0x0 Bucket 236
此輸出說明,在CEF中,鄰接是指控制結構,該控制結構儲存特定介面上IP地址的第2層資訊。它包含隨傳出介面的封裝協定而變化的重寫字串。鄰接是CEF等同於ARP條目。
下表介紹show adjacency [interface-type interface-number] internal命令中的關鍵欄位。
欄位 | 說明 |
---|---|
172.16.81.1(7) |
下一跳介面的IP地址。括弧中的值是指「refCount」或FIB條目指向此鄰接的次數。相同的值隨後出現在條目中。 |
0 packets, 0 bytes |
使用ip cef accounting 命令啟用資料包和位元組計數器。 |
0060471E91D8003071D310000800 |
前十二個字元是目標下一跳介面的MAC地址。接下來的十二個字元代表資料包源介面的MAC地址。(換句話說,本地路由器的出站介面)。 最後四個字元代表用於IP的公認的Ethertype值0x0800(使用高級研究專案代理(ARPA)封裝)。 |
003071D310000800 |
資料包的源介面的MAC地址和已知的Ethertype值0x0800(採用ARPA封裝)。(換句話說,本地路由器的出站介面)。 |
ARP 03:57:00 |
ARP指示如何發現條目。時間戳指示條目超時前要花費的時間。 |
Epoch: 1 |
CEF鄰接表紀元資訊。使用show ip cef epoch 命令顯示鄰接表和所有FIB表的紀元資訊。 |
Fast adjacency enabled |
當不在多個活動路徑上執行負載共用時,FIB條目會快取下一跳介面的鄰接關係。快速鄰接有助於加快資料包交換。 |
Adjacency pointer 0x62515AC0 |
|
refCount 7 |
當前儲存在路由器記憶體中的鄰接關係引用數。CEF表中的每個對應條目對應一個條目,再加上其他幾個條目,原因多種多樣(例如執行show adjacency命令的代碼對應一個)。 |
Connection Id 0x0 |
|
Bucket 236 |
鄰接型別 | 鄰接處理 |
空鄰接關係 | 目的地為Null0介面的資料包將被丟棄。這可以用作訪問過濾的一種有效形式。 |
融合鄰接 | 當路由器直接連線到多台主機時,路由器上的FIB表會維護子網的字首,而不是單個主機字首。子網字首指向全鄰接關係。當需要將資料包轉發到特定主機時,會收集特定字首的鄰接資料庫。 |
Punt鄰接 | 需要特殊處理的功能或尚未與CEF交換路徑一起支援的功能將轉發到下一個交換層進行處理。不支援的功能會被轉發到下一個更高的交換級別。 |
放棄鄰接關係 | 丟棄資料包。 |
Drop adjacency | 資料包將被丟棄,但會檢查字首。 |
快取的鄰接關係 | Cached Adjacency是接收到的鄰接資料包的確認更新。 |
鄰接關係通過間接手動配置或動態方式新增到表中,如果通過ARP等機制或使用路由協定(如BGP和OSPF)發現鄰接關係,則會形成鄰居關係。如果鄰接關係由FIB建立且未動態發現,則第2層編址資訊未知,鄰接關係被視為不完整。第2層資訊已知後,資料包會被轉發到路由處理器,並通過ARP確定鄰接關係。
ATM和幀中繼介面可配置為點對點或多點。鄰接關係型別的數目隨配置而異:
點對點介面(Point-to-point interface) — 對介面使用單一鄰接關係。
Multipoint interface -對每個主機IP地址使用唯一的鄰接關係或第2層重寫結構。完成鄰接的資訊來自IP ARP、靜態ATM或幀中繼對映語句,以及ATM和幀中繼上的逆向ARP。
Router#show adjacency serial 0 detail Protocol Interface Address IP Serial0 140.108.1.1(25) 0 packets, 0 bytes 18410800 FR-MAP never Epoch: 1 IP Serial0 140.108.1.2(5) 0 packets, 0 bytes 18510800 FR-MAP never Epoch: 1
當ATM介面支援介面上的多個永久虛擬電路(PVC)時,「不完整」錯誤指示可能顯示多達一分鐘,但不應持久。
注意:除常規鄰接外,CEF還支援五種需要特殊處理的鄰接型別。這些型別在思科快速轉發概述的需要特殊處理的鄰接型別部分中說明,不屬於本文檔的範圍。
不完全鄰接有兩個已知的原因:
路由器無法成功將ARP用於下一跳介面。
發出clear ip arp或clear adjacency 指令後,路由器會將鄰接關係標籤為不完整。然後它無法清除該條目。
在MPLS環境中,應該為標籤交換啟用IP CEF。介面級別命令ip route-cache cef
不完整的鄰接關係的症狀包括ping測試期間的隨機資料包丟棄。由於限制CEF將到達的封包傳送到CPU的速率而導致輸出捨棄。使用debug ip cef命令檢視由於不完整的鄰接而丟棄的CEF。
Router# *Oct 11 17:08:03.275: CEF-Drop: Stalled adjacency for 192.168.10.2 on Serial0/1/3 for destination 192.168.11.1 *Oct 11 17:08:03.275: CEF-Drop: Packet for 192.168.11.1 -- encapsulation *Oct 11 17:08:05.307: CEF-Drop: Stalled adjacency for 192.168.10.2 on Serial0/1/3 for destination 192.168.11.1 *Oct 11 17:08:05.307: CEF-Drop: Packet for 192.168.11.1 -- encapsulation
此外,請多次使用show cef drop命令,並為「Encap_fail」計數器查詢遞增值。有關詳細資訊,請參閱show cef命令。
當CEF找不到目的地首碼的有效鄰接關係時,它會將這些資料包傳送到CPU以進行ARP解析,然後完成鄰接關係。在極少數情況下,鄰接關係仍保持不完整狀態。例如,如果ARP表已列出特定主機,則將其推送到進程級別不會觸發ARP。
確定ARP條目是否存在,以解決此問題。使用以下命令並指定特定IP地址:
使用debug arp命令確認路由器傳送了ARP請求。
Router#ping 10.12.241.4 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.12.241.4, timeout is 2 seconds: ..... Success rate is 0 percent (0/5) Router# .Aug 21 18:59:07.175 PDT: IP ARP: creating incomplete entry for IP address:10.12.241.4 interface FastEthernet0/1 .Aug 21 18:59:07.177 PDT: IP ARP: sent req src 10.12.241.252 0006.529c.9801, dst 10.12.241.4 0000.0000.0000 FastEthernet0/1 .Aug 21 18:59:07.180 PDT: IP ARP throttled out the ARP Request for 10.12.241.4 .Aug 21 18:59:09.182 PDT: IP ARP: sent req src 10.12.241.252 0006.529c.9801, dst 10.12.241.4 0000.0000.0000 FastEthernet0/1 .Aug 21 18:59:09.183 PDT: IP ARP throttled out the ARP Request for 10.12.241.4
當ping過程嘗試傳送第一個資料包但未看到ARP條目時,它將發起ARP請求。它會繼續嘗試傳送資料包,然後在定義的等待時段後丟棄資料包。當收到ARP響應並使用後台進程完成ARP條目時,ping成功率為100%。
當鄰接資訊需要更改時,鄰接老化邏輯將分兩個階段刪除條目:
首先,將條目的狀態從「完成」更改為「不完整」。
Router#show adjacency Protocol Interface Address IP Serial0 10.10.10.2(2) (incomplete) IP Serial0 10.10.10.3(7) IP Ethernet0 172.16.81.1(7)
然後,在下一個一分鐘間隔內,鄰接訪問者進程「喚醒」並完成刪除。
Router#show adjacency Protocol Interface Address IP Serial0 10.10.10.3(7) IP Ethernet0 172.16.81.1(7)
在分散式CEF模式下,RP上的進程會通知線卡完成刪除。此序列說明存在最多60秒的視窗,以便存在臨時不完整鄰接關係。
在幀中繼介面上,配置靜態對映語句會提示CEF將主機字首條目新增到CEF表中。最初,CEF在建立條目之前沒有考慮PVC是否處於「活動」狀態。此問題已在Cisco錯誤ID CSCdr71258 (僅限註冊客戶)中解決。
此外,在連線到多協定標籤交換(MPLS)虛擬專用網路(VPN)路由轉發(VRF)例項並從該例項中刪除介面後,CEF會將鄰接設定為不完整。但是,幀中繼動態對映條目不會被清除。重新應用IP地址時,動態對映仍然存在。這將阻止鄰接關係完成。在刪除IP地址時(例如應用VRF時)發出clear frame-relay-inarp 命令以避免此問題。然後可以重新應用IP地址,並且重新建立動態對映後即完成鄰接關係。
修訂 | 發佈日期 | 意見 |
---|---|---|
1.0 |
07-Jun-2006 |
初始版本 |