Este documento descreve o verificador de consistência agora disponível para os Cisco 7500 e 12000 Series Routers que executam a forma distribuída do Cisco Express Forwarding (CEF). O verificador de consistência, apresentado na versão 12.0(15)S do software Cisco IOS® e em outras versões, foi feito para detectar quando as informações de encaminhamento nas placas de linha e no processador de rotas (RP) perdem a sincronização. O Cisco IOS relata as seguintes mensagens de log quando o verificador detecta um problema:
%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
Este documento também fornece dicas de Troubleshooting para inconsistências CEF.
Não existem requisitos específicos para este documento.
As informações neste documento são baseadas nestas versões de software e hardware:
Software Cisco IOS versão 12.0(15)S e posterior
Cisco 7500 e 12000 Series Routers
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.
For more information on document conventions, refer to the Cisco Technical Tips Conventions.
Para entender o que o verificador de consistência está revisando, é necessário antes entender e definir as tabelas de encaminhamento CEF.
O CEF descreve um mecanismo de comutação de alta velocidade que um roteador usa para encaminhar pacotes da interface de entrada para a interface de saída. O CEF usa dois conjuntos de estruturas de dados ou tabelas, armazenados na memória do roteador.
FIB (Forwarding Information Base, base de informações de encaminhamento) - Descreve um banco de dados de informações usado para tomar decisões de encaminhamento. Ele é conceitualmente semelhante a uma tabela de roteamento ou a um cache de roteamento, embora sua implementação seja diferente.
Adjacência - Dois nós na rede são considerados adjacentes se puderem alcançar um ao outro através de um único salto através de uma camada de link.
A tabela FIB é atualizada quando ocorre uma das situações a seguir:
A entrada do cache do Protocolo de resolução de endereços (ARP) do próximo salto é alterada, removida ou expira.
A entrada da tabela de roteamento para o prefixo é alterada ou removida.
A entrada da tabela de roteamento para alterações no nó seguinte é removida.
Os Cisco 7500 e 12000 Series Routers suportam CEF distribuído (dCEF), em que as placas de linha tomam as decisões de encaminhamento de pacote utilizando cópias armazenadas localmente do mesmo FIB e tabelas de adjacência como o RP. As tabelas entre o RP e as placas de linha devem permanecer sincronizadas. Toda alteração às tabelas do RP deve ser encaminhada às placas de ingresso.
O IPC (Comunicação interprocessos) é o protocolo usado pelos roteadores que suportam encaminhamento de pacote distribuído. As atualizações de CEF são codificadas como elementos de informação XDR (eXternal Data Representation) dentro de mensagens de IPC. O diagrama a seguir ilustra o mecanismo de distribuição da estrutura de dados do CEF.
Existem dois tipos de inconsistências:
Informações ausentes, como um prefixo específico, em uma placa de linha.
Informações diferentes, como endereços IP distintos de nós seguintes, na placa de ingresso.
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
Uma indicação de inconsistência de CEF é uma diferença na coluna "CEF-ver" do comando show cef linecard, como mostrado na seguinte saída.
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
A saída do comando show ip cef summary no RP e no LC deve mostrar o mesmo número de rotas e adjacências quando as seguintes condições forem verdadeiras:
Todas as placas de linha estão no estado "up, sync".
As filas de XDR do RP e do LC estão vazias [as colunas "LowQ/MedQ/HighQ" do comando show cef linecard do RP, e os dados "RP messages to be processed" (Mensagens do RP a serem processadas) do comando show cef linecard da placa de linha].
Observação: uma exceção são os Cisco 12000 Series Engine 2 LCs, onde o Packet Switching ASIC (PSA) instala rotas adicionais para implementar ACLs.
O Cisco IOS Software Release 12.0(22)S contém os verificadores de consistência CEF v2 (presente no Cisco IOS Software Release 12.1E), que permite executar o comando show ip cef inconsistency agora para relatar qualquer problema.
À medida que ocorrem atualizações nos bancos de dados de roteamento no RP e nas placas de linha, podem ocorrer inconsistências devido à natureza assíncrona do mecanismo de distribuição para esses bancos de dados. O CEF oferece suporte a verificadores de consistência passivos e ativos executados independentemente. A tabela a seguir descreve esses verificadores.
Mecanismo de detecção | Opera em | Descrição |
---|---|---|
Lc-detect | Placa de linha | Opera na placa de linha recuperando prefixos IP ausentes de sua tabela FIB. Se os prefixos IP estiverem ausentes, a placa de linha não poderá encaminhar pacotes para esses endereços. Lc-detecta e envia prefixos IP ao RP para confirmação. Se o RP detectar que possui a entrada relevante, uma inconsistência será detectada e uma mensagem de erro será exibida. Da mesma forma, o RP envia um sinal de volta para a placa de linha, confirmando que o prefixo IP é uma inconsistência. |
Scan-lc | Placa de linha | Opera na placa de linha, procurando na tabela FIB um período configurado e enviando os próximos prefixos n para o RP. O RP faz uma pesquisa exata. Se o prefixo estiver ausente, o RP relata uma inconsistência. Finalmente, o RP envia uma confirmação de volta para a placa de linha. |
Scan-rp | Processador de rota | Opere no RP (oposto do scan-lc), examinando a tabela FIB para identificar o período configurado e enviando os próximos n prefixos para a placa de linha. A placa realiza uma consulta exata. Se achar que o prefixo está faltando, a placa de linha informa uma inconsistência e, finalmente, sinaliza o RP para confirmação. |
Scan-rib | Processador de rota | Opera em todos os RPs (mesmo não distribuídos) e verifica o RIB para garantir que as entradas de prefixo estejam presentes na tabela RP FIB. |
Use os comandos a seguir para configurar os verificadores de consistência habilitados e as variáveis relacionadas.
ip cef table consistency-check type [period] [count] - controla parâmetros gerais dos verificadores.
ip cef table consistency-check - Habilita ou desabilita os tipos suportados e controla o período das varreduras e os prefixos varridos (não para lc-detect). O verificador de consistência está desabilitado por padrão.
As inconsistências nunca devem acontecer e devem sempre ser investigadas. Utilize os comandos CEF debug e show ao Troubleshoot.
A Output Interpreter Tool (somente clientes registrados) oferece suporte a determinados comandos show, o que permite exibir uma análise da saída do comando show.
Observação: antes de emitir comandos debug, consulte Informações importantes sobre comandos debug.
show ip cef inconsistency records detail Exibe estatísticas sobre os mecanismos de detecção. Também grava informações detalhadas para várias (no momento, 4) inconsistências confirmadas, embora diferentes.
show ip cef inconsistency - Exibe um resumo do estado.
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 - Use a palavra-chave registros para descartar as inconsistências registradas.
show ip cef inconsistency record detail e 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)
Observação: não há acesso SNMP aos registros de inconsistência. Esse recurso pode ser adicionado a uma próxima versão do Cisco IOS.
clear cef linecard - Se um prefixo IP estiver faltando em uma placa de linha, use este comando para reinstalar o prefixo na placa de linha FIB.
clear ip route - Se houver um prefixo ausente no RP, use esse comando para reinstalar o prefixo no FIB do RP.
Quando o verificador de consistência encontrar um problema, as seguintes saídas de comando são necessárias para solucionar o problema com precisão.
show ip cef - Exibe as entradas no FIB no RP.
exec all show ip cef Exibe valores FIB CEF em placas de linha.
show tech cef - Fornece informações para suporte técnico sobre CEF.
show ip cef inconsistency records detail ? Exibe detalhes de inconsistência de FIB CEF no RP.
exec slot show ip cef inconsistency records detail – Exibe detalhes de inconsistência de CEF FIB nas placas de linha.
no ip cef table consistency-check - Desliga os verificadores.
debug ip cef table consistency-checkers - Faz com que a consulta e os eventos de verificação sejam depurados.
Para limpar a inconsistência do CEF, use o comando clear ip cef inconsistency. Para desativar o verificador de consistência, use o comando no ip cef table consistency-check. É importante observar que a desativação do verificador de inconsistência não corrige os problemas reportados. O sistema continua a ser executado com as inconsistências, potencialmente levando a um comportamento inesperado.
Em condições raras, a versão original do verificador de consistência do CEF pode relatar um falso positivo. Esse problema é causado por janelas provisórias de tempo durante a atualização de bancos de dados CEF (especialmente durante atualizações muito grandes) e a distribuição de novas informações do RP para as placas de linha. Embora as mensagens falsas positivas sejam muito limitadas em taxa - e, portanto, mais incômodas do que um impacto na CPU - a Cisco recomenda desativar o verificador de consistência do CEF, a menos que solucione um problema de consistência específico.
Para minimizar as chances de falsos positivos para prefixos no processo de atualização, você pode ajustar o tempo de acerto, que é o atraso imposto à detecção. Utilize o comando ip cef table consistency-check [settle-time]. Este comando baseia-se na presença de um registro de eventos; caso contrário, a hora de acerto é efetivamente 0.
Um valor padrão de 65 segundos foi selecionado para evitar a detecção indevida de prefixos adjacentes (/32s para entradas ARP) ausentes no RP. Uma exclusão de ARP ocorre em dois estágios no RP:
A adjacência é marcada como incompleta e o prefixo de adjacência é excluído.
O caminhador da adjacência de um minuto exclui a adjacência e informa as placas de linha para fazerem o mesmo.
Esse processo leva a uma janela de até 60 segundos quando o prefixo de adjacência está presente em placas de linha, mas ausente no RP.
Observação: na versão 2.0 do verificador de consistência, o problema de inconsistências falsas foi corrigido.
A seguir há uma lista dos bugs conhecidos da Cisco com o verificador de consistência CEF. Esta lista não se destina a ser exaustiva.
ID de bug da Cisco CSCdt18447 (somente clientes registrados) verificador de eventos CEF/verificadores de consistência na CPU em alta
O ID de bug Cisco CSCuk23390 (somente clientes registrados) lc-detect provoca falha de malloc no nível de interrupção
ID de erro da Cisco CSCuk23290 (somente clientes registrados) O gravador de eventos de inconsistência CEF pode alocar de forma incorreta o armazenamento
ID de bug Cisco CSCdt04645 ( somente usuários registrados) Resolve um problema com um vazamento de memória (que afeta qualquer coisa que possa executar CEF distribuído, incluindo o processo verificador de consistência lc-stat).
Revisão | Data de publicação | Comentários |
---|---|---|
1.0 |
10-Aug-2005 |
Versão inicial |