目录

简介

先决条件

要求

使用的组件

规则

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不一致的故障排除提示。

先决条件

要求

本文档没有任何特定的要求。

使用的组件

本文档中的信息基于以下软件和硬件版本：

- 思科IOS软件版本12.0(15)S及更高版本

- Cisco 7500 和 12000 系列路由器

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您使用的是真实网络，请确保您已经了解所有命令的潜在影响。

规则

有关文件规则的更多信息请参见“ Cisco技术提示规则”。

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向线路卡发送确认。

扫描RP

路由处理器

在RP（与scan-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上缺少对邻接前缀（ARP条目/32秒）的幻像检测。ARP删除在RP上分两个阶段进行：

1. 邻接被标记为不完整，并且邻接前缀被删除。

2. 一分钟的邻接沃克删除邻接并通知线卡执行相同操作。

当邻接前缀在线卡上存在，但RP上缺少时，此过程会导致最多60秒的窗口。

注意：在一致性检查器的2.0版中，错误不一致问题已得到解决。

已知问题

以下列出使用CEF一致性检查器的已知思科错误。此列表并非详尽无遗。

- Cisco Bug ID CSCdt18447(仅注册客户)CEF事件记录器/一致性检查器占用CPU

- Cisco Bug ID CSCuk23390(仅注册客户)lc-detect导致malloc在中断级别失败

- Cisco Bug ID CSCuk23290(仅注册客户)CEF不一致事件记录器可能错误分配存储

- Cisco Bug ID CSCdt04645(仅限注册客户)解决内存泄漏问题（这会影响任何可运行分布式CEF的程序，包括lc-stat一致性检查器进程）。

相关信息

- Cisco 快速转发相关错误消息故障排除

- 思科快速转发技术支持页

- 技术支持 - Cisco Systems