目錄

簡介

必要條件

需求

採用元件

慣例

CEF轉發表

什麼是不一致？

不一致檢查器概述

排除CEF不一致問題

疑難排解指令

如何重置一致性檢查器

錯誤不一致

已知的問題

相關資訊

簡介

本檔案介紹適用於執行分散式思科快速轉送(CEF)形式的Cisco 7500和12000系列路由器的一致性檢查器。 Cisco IOS®軟體版本12.0(15)S和其他版本系列中引入的一致性檢查器設計為檢測線卡和路由處理器(RP)失去同步的轉送資訊時間。檢查器檢測到問題時，Cisco IOS會報告以下日誌消息：

%FIB-4-RPPREFIXINCONST2: RP missing prefix for

133.160.0.0/16 (present in routing table)

%FIB-4-RPPREFIXINCONST2: RP missing prefix for

133.160.0.0/16 (present in routing table)

%FIB-4-LCPREFIXINCONST2: Slot 1 missing prefix entry for 64.0.17.0/32

本文還提供有關CEF不一致的故障排除提示。

必要條件

需求

本文件沒有特定需求。

採用元件

本文中的資訊係根據以下軟體和硬體版本：

- Cisco IOS軟體版本12.0(15)S及更新版本

- Cisco 7500和1000系12000路由器

本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除（預設）的組態來啟動。如果您的網路正在作用，請確保您已瞭解任何指令可能造成的影響。

慣例

如需文件慣例的詳細資訊，請參閱思科技術提示慣例。

CEF轉發表

要瞭解一致性檢查器正在檢視的內容，您首先需要瞭解和定義CEF轉發表。

CEF描述一種高速交換機制，路由器使用該機制將封包從傳入介面轉送到傳出介面。CEF使用兩組資料結構或表，並將其儲存在路由器記憶體中：

- 轉發資訊庫(FIB) — 描述用於做出轉發決策的資訊資料庫。它在概念上類似於路由表或路由快取，但其實現方式有所不同。

- 鄰接 — 如果網路中的兩個節點能夠通過鏈路層中的單跳到達彼此，則稱其為相鄰節點。

出現以下情況之一時，將更新FIB表：

- 用於下一跳更改、刪除或超時的地址解析協定(ARP)快取條目。

- 字首的路由表條目更改或被刪除。

- 下一跳的路由表條目會更改或被刪除。

Cisco 7500和12000系列路由器支援分散式CEF(dCEF)，其中線卡使用與RP相同的FIB和鄰接表的本地儲存副本做出資料包轉發決策。RP和線卡之間的表必須保持同步。對RP表所做的任何更改都必須轉發到線卡。

進程間通訊(IPC)是支援分散式資料包轉發的路由器使用的協定。CEF更新被編碼為IPC消息中的外部資料表示(XDR)資訊元素。下圖說明了CEF資料結構分佈機制。

什麼是不一致？

不一致有兩種型別：

- 線路卡上缺少資訊，例如特定字首。

- 線卡上的資訊不同，例如下一跳IP地址不同。

router#show ip cef 24.20.84.32

24.16.0.0/13, version 833173, cached adjacency to POS6/0

0 packets, 0 bytes

Flow: AS 6172, mask 13

via 4.24.234.153, 0 dependencies, recursive

next hop 4.24.234.153, POS6/0 via 4.24.234.152/30

valid cached adjacency

router#execute-on all show ip cef 24.20.84.32

========= Line Card (Slot 1) =======

24.16.0.0/13, version 408935, cached adjacency 0.0.0.0

0 packets, 0 bytes

Flow: AS 6172, mask 13

via 157.130.213.1, 0 dependencies, recursive

next hop 157.130.213.1, POS1/0.500 via 157.130.213.0/30

valid cached adjacency

========= Line Card (Slot 2) =======

24.16.0.0/13, version 13719, cached adjacency 0.0.0.0

0 packets, 0 bytes

Flow: AS 6172, mask 13

via 157.130.213.1, 0 dependencies, recursive

next hop 157.130.213.1, POS1/0.500 via 157.130.213.0/30

valid cached adjacency

CEF不一致的一個指示是show cef linecard命令的「CEF-ver」列中的差異，如下面輸出所示。

7505-2A#show cef linecard

CEF table version 35, 11 routes

Slot CEF-ver    MsgSent    XDRSent  Window   LowQ   MedQ  HighQ Flags

1          0          0          0 LC wait      0      0      0 disabled

2         31         95        422      24      0      0      0 up, sync

3         34        105        544      24      0      0      0 up, sync

滿足以下條件時，RP和LC上的show ip cef summary命令的輸出應顯示相同數量的路由和鄰接關係：

- 所有線卡均處於「up， sync」狀態。

- RP和LC上的XDR隊列均為空(「RP上的show cef linecard中的「LowQ/MedQ/HighQ」列和線卡上的show cef linecard中的「要處理的RP消息」資料)。

注意：例外情況是Cisco 12000系列的引擎2 LC，其中封包交換ASIC(PSA)安裝額外的路由以實作ACL。

Cisco IOS軟體版本12.0(22)S包含CEF一致性檢查器v2（存在於Cisco IOS軟體版本12.1E中），允許您立即執行命令show ip cef inconsistency，以報告任何問題。

不一致檢查器概述

當RP和線卡上的路由資料庫發生更新時，可能會導致不一致，因為這些資料庫的分發機制屬於非同步性質。CEF支援獨立運行的被動和主動一致性檢查器。下表描述了這些檢查器。

檢測機制

運行於

說明

Lc-detect

線路卡

通過檢索其FIB表中找到的IP字首對線卡進行操作。如果缺少IP字首，線卡將無法轉發這些地址的資料包。然後Lc-detect將IP字首傳送到RP進行確認。如果RP檢測到它有相關的條目，則檢測不一致並顯示錯誤消息。此外，RP將訊號傳送回線卡，確認IP字首是不一致的。

Scan-lc

線路卡

通過檢視FIB表配置的時間段並將下一個n字首傳送到RP，線上卡上操作。RP會執行完全查詢。如果它發現缺少字首，則RP報告不一致。最後，RP將確認傳送回線卡。

Scan-rp

路由處理器

在RP上操作（與掃描lc相反），方法是：檢視FIB表配置的時間段，並將下一個n字首傳送到線卡。線卡會執行完全查詢。如果發現缺少字首，線卡將報告不一致，最後向RP發出訊號以進行確認。

掃描肋

路由處理器

在所有RP（甚至非分散式）上運行，並掃描RIB以確保字首條目出現在RP FIB表中。

使用以下命令配置啟用的一致性檢查器和相關變數。

- ip cef table consistency-check type [period] [count] — 控制檢查器的常規引數。

- ip cef table consistency-check — 啟用或禁用支援的型別，並控制掃描的掃描和字首週期（不用於lc-detect）。 預設情況下禁用一致性檢查器。

排除CEF不一致問題

不應出現不一致的情況，應對任何不一致的情況進行調查。進行故障排除時，請使用以下CEF debug和show命令。

輸出直譯器工具(僅供註冊客戶使用)支援某些show命令，此工具可讓您檢視show命令輸出的分析。

注意：發出debug指令之前，請先參閱有關Debug指令的重要資訊。

- show ip cef inconsistency records detail — 顯示檢測機制的統計資訊。還記錄了一些（目前有4個）已確認但不同不一致問題的詳細資訊。

- show ip cef inconsistency — 顯示狀態摘要。

Table consistency checkers (settle time 15s)

lc-detect: running

0/0/0 queries sent/ignored/received

scan-lc: running [100 prefixes checked every 60s]

0/0/1053 queries sent/ignored/received

scan-rp: running [100 prefixes checked every 60s]

1053/0/0 queries sent/ignored/received

scan-rib: running [1000 prefixes checked every 60s]

81/0/81 queries sent/ignored/received

Inconsistencies: 0 confirmed, 0/4 recorded

- show ip cef inconsistency records — 使用records關鍵字轉儲所有記錄的不一致情況。

- show ip cef inconsistency records detail and execute-on slot

router#exec slot 2 show ip cef inconsistency records detail

========= Line Card (Slot 2) =======

Table consistency checkers (settle time 65s)

lc-detect: running

0/0/0 queries sent/ignored/received

scan-lc: running [100 prefixes checked every 60s]

1289156/0/0 queries sent/ignored/received

scan-rp: running [100 prefixes checked every 60s]

0/0/1068308 queries sent/ignored/received

scan-rib: running [1000 prefixes checked every 60s]

0/0/0 queries sent/ignored/received

Inconsistencies: 340 confirmed, 1/4 recorded

Test table insert mode: normal

Test table remove mode: normal

-------- Inconsistency record 0 --------

Prefix entry for 192.168.3.10/32 present on RP, missing on slot 2

Detected at 00:01:46.736 by scan-rp

Event log entries relevant for 192.168.3.10:

+00:00:00.000: *.*.*.*/*          New FIB table           [OK]

0x403FA4E8 0x403FA530 0x4009C1FC 0x4009C1E8

+00:00:03.092: *.*.*.*/*          Flush ADJ table        [OK]

0x404000B0 0x4040EEC0 0x4040F100 0x40401F64 0x404021AC 0x4040229C

0x404029C8 0x4009C1FC 0x4009C1E8

+00:00:03.100: *.*.*.*/*          Flush FIB table        [OK]

0x404039D0 0x40401F4C 0x404021AC 0x4040229C 0x404029C8 0x4009C1FC

0x4009C1E8

+00:00:03.124: *.*.*.*/*          New FIB table          [OK]

0x404039D8 0x40401F4C 0x404021AC 0x4040229C 0x404029C8 0x4009C1FC

0x4009C1E8

First event occurred at 00:00:07.600 (2w5d ago)

Last event occurred at 00:00:10.724 (2w5d ago)

注意：對不一致記錄沒有SNMP訪問許可權。此功能可能會新增到即將發佈的Cisco IOS版本中。

疑難排解指令

- clear cef linecard — 如果線卡中缺少IP字首，請使用此命令線上卡FIB中重新安裝字首。

- clear ip route — 如果RP中缺少字首，請使用此命令在RP FIB中重新安裝字首。

當一致性檢查器發現問題時，需要下列命令輸出來準確地排除問題。

- show ip cef — 顯示RP上FIB中的條目。

- exec all show ip cef — 顯示線卡上的CEF FIB值。

- show tech cef — 提供CEF技術支援資訊。

- show ip cef inconsistency records detail — 顯示RP上的CEF FIB不一致詳細資訊。

- exec slot show ip cef inconsistency records detail — 顯示線卡上的CEF FIB不一致詳細資訊。

- no ip cef table consistency-check — 關閉檢查器。

- debug ip cef table consistency-checkers — 導致查詢和檢查事件被調試。

如何重置一致性檢查器

要清除CEF不一致，請使用clear ip cef inconsistency命令。要關閉一致性檢查器，請使用no ip cef table consistency-check命令。必須注意的是，關閉一致性檢查器並不能解決報告的問題。系統繼續運行並且存在不一致的情況，可能導致意外行為。

錯誤不一致

在極少數情況下，原始版本的CEF一致性檢查器可能會報告誤報。此問題是由以下時間臨時計時視窗引起的：更新CEF資料庫（尤其是在非常大的更新期間），以及將新資訊從RP分發到線卡。雖然誤報消息嚴重受速率限制，因此其危害大於對CPU的影響，但思科建議禁用CEF一致性檢查器，除非排除特定一致性問題。

為了將更新過程中字首的誤報率降至最低，可以調整結算時間，即對檢測施加的延遲。使用ip cef table consistency-check [settle-time]命令。此命令取決於事件日誌是否存在；否則，結算時間實際上為0。

選擇預設值65秒，以防止RP上缺失的鄰接字首（/32s ARP條目）的幻像檢測。ARP刪除在RP上分兩個階段進行：

1. 鄰接被標籤為不完整，鄰接字首被刪除。

2. 一分鐘鄰接行者會刪除鄰接並通知線卡執行相同操作。

當線路卡上存在鄰接字首，但RP上缺少該字首時，此過程將導致最長60秒的視窗。

註：在一致性檢查器的2.0版中，錯誤不一致問題已得到修復。

已知的問題

以下列出具有CEF一致性檢查器的已知思科錯誤。這份清單並非詳盡無遺。

- 思科錯誤ID CSCdt18447(僅限註冊客戶)CEF事件記錄器/一致性檢查器掛載CPU

- 思科錯誤ID CSCuk23390(僅限註冊客戶)lc-detect導致中斷級別的malloc失敗

- 思科錯誤ID CSCuk23290(僅供註冊客戶使用)CEF不一致事件記錄器可能會錯誤分配儲存

- 思科錯誤ID CSCdt04645(僅供註冊客戶使用)解決記憶體洩露問題（這影響可以執行分散式CEF的任何作業，包括lc-stat一致性檢查程式）。

相關資訊

- Cisco Express Forwarding相關錯誤訊息疑難排解

- 思科快速轉發技術支援頁

- 技術支援 - Cisco Systems