O conjunto de documentação deste produto faz o possível para usar uma linguagem imparcial. Para os fins deste conjunto de documentação, a imparcialidade é definida como uma linguagem que não implica em discriminação baseada em idade, deficiência, gênero, identidade racial, identidade étnica, orientação sexual, status socioeconômico e interseccionalidade. Pode haver exceções na documentação devido à linguagem codificada nas interfaces de usuário do software do produto, linguagem usada com base na documentação de RFP ou linguagem usada por um produto de terceiros referenciado. Saiba mais sobre como a Cisco está usando a linguagem inclusiva.
A Cisco traduziu este documento com a ajuda de tecnologias de tradução automática e humana para oferecer conteúdo de suporte aos seus usuários no seu próprio idioma, independentemente da localização. Observe que mesmo a melhor tradução automática não será tão precisa quanto as realizadas por um tradutor profissional. A Cisco Systems, Inc. não se responsabiliza pela precisão destas traduções e recomenda que o documento original em inglês (link fornecido) seja sempre consultado.
Este documento explica como resolver problemas de utilização elevada da CPU em um roteador devido ao processo do ENGINE de SNMP que é executado no roteador, especialmente em roteadores de baixa qualidade.
Os leitores deste documento devem estar cientes destes tópicos:
SNMP
Cisco IOS
As informações neste documento são baseadas em roteadores que executam o Cisco IOS® Software.
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.
Às vezes, mensagens como essa podem aparecer no console do roteador:
%SNMP-3-CPUHOG: Processing [chars] of [chars]
Significa que o agente SNMP no dispositivo levou muito tempo para processar uma solicitação.
Você pode determinar a causa do alto uso da CPU em um roteador pelo resultado do comando exibir cpu do processo.
O exemplo a seguir mostra a saída do comando show process cpu.
cacuk#show process cpu CPU utilization for five seconds: 0%/0%; one minute: 0%; five minutes: 0%
PID | Tempo de execução (ms) | Chamado | uSecs | 5Sec | 1min | 5Min | TTY | Processo |
---|---|---|---|---|---|---|---|---|
1 | 68 | 258816 | 0 | 0.00% | 0.00% | 0.00% | 0 | Medidor de carga |
2 | 0 | 1 | 0 | 0.00% | 0.00% | 0.00% | 0 | OSPF Hello |
3 | 788132 | 131480 | 5994 | 0.00% | 0.00% | 0.00% | 0 | Verificar preenchimentos |
4 | 0 | 1 | 0 | 0.00% | 0.00% | 0.00% | 0 | Gerenciador de Chunk |
5 | 56 | 131 | 427 | 0.00% | 0.00% | 0.00% | 0 | Gerenciador do conjunto |
69 | 202700 | 421730 | 480 | 0.00% | 0.01% | 0.00% | 0 | IP SNMP |
71 | 1193648 | 211250 | 5650 | 0.00% | 0.19% | 0.15% | 0 | SNMP ENGINE |
O comando debug snmp verifica quais IDs de Objeto (OIDs) ou Base de Informações de Gerenciamento (MIBs) estão sendo consultados no momento.
Observação: a execução de uma depuração em uma rede de produção pode sobrecarregar o roteador.
Existem duas causas prováveis para a utilização elevada de CPU em relação ao protocolo SNMP:
Rota grande e/ou tabelas ARP sendo pesquisadas pela estação NMS
Eleição de determinados MIBs
A estação de gerenciamento de rede consulta os roteadores de toda a tabela de rotas para aprender sobre outras redes. Ele usa essas informações para localizar outros roteadores e consultá-los sobre seu conhecimento de redes ao redor deles. Dessa forma, a estação de gerenciamento pode aprender a topologia de toda a rede.
O roteador armazena a tabela de rotas em um formato hash, mais propício para pesquisas rápidas de rotas. No entanto, as respostas SNMP para a rota devem ser retornadas em ordem lexicográfica por RFC1213. Portanto, para cada solicitação de SNMP que o roteador receber, a tabela de hash deve ser organizada lexicograficamente para poder criar um PDU de resposta de SNMP. Quanto maior a tabela de rotas, mais intensa é a CPU.
O SNMP é um processo de baixa prioridade no que diz respeito ao programador da CPU, portanto, outro processo que requer recursos da CPU tem prioridade. Portanto, embora os picos de CPU ocorram nesse cenário, eles não devem afetar o desempenho.
Para evitar problemas de desempenho, force o roteador a encerrar prematuramente consultas para a tabela de rotas a partir do servidor do sistema de gerenciamento de redes. Configure o roteador para responder com uma mensagem completa assim que receber o início de uma solicitação para a tabela de rotas, como a seguir:
snmp-server view cutdown iso included !--- ISO is used as a starting point as it is the snmp 'root'. snmp-server view cutdown 1.3.6.1.2.1.4.21 excluded snmp-server view cutdown 1.3.6.1.2.1.4.22 excluded snmp-server view cutdown 1.3.6.1.2.1.3 excluded snmp-server view cutdown 1.3.6.1.6.3.15 excluded !--- The additional object snmpUsmMIB is excluded. snmp-server view cutdown 1.3.6.1.6.3.16 excluded !--- The additional object snmpVacmMIB is excluded. snmp-server view cutdown 1.3.6.1.6.3.18 excluded !--- The additional object snmpCommunityMIB is excluded. snmp-server community public view cutdown RO snmp-server community private view cutdown RW
Cuidado: No exemplo acima, snmpUsmMIB é excluído, snmpVacmMIB é excluído e snmpCommunityMIB é excluído. Juntos esses objetos podem ser utilizados para obter informações sobre usuários configurados e séries de comunidade para obter acesso administrativo para o dispositivo. Recomenda-se que esses objetos sejam excluídos da visualização em qualquer dispositivo que possa ser acessado por usuários públicos.
Essa configuração bloqueia as solicitações para a recuperação da tabela de rota (ipRouteTable) e da tabela de Address Resolution Protocol (ARP) (ipNetToMediaTable), mas aprova todas as outras solicitações. Se você tiver versões mais antigas do software Cisco IOS®, ele não reconhecerá o objeto MIB ipRouteTable, então use a seguinte configuração:
snmp-server view cutdown iso included !--- ISO is used as a starting point as it is the snmp 'root'. snmp-server view cutdown 1.3.6.1.2.1.4.21 excluded snmp-server view cutdown 1.3.6.1.2.1.4.22 excluded snmp-server view cutdown at excluded snmp-server view cutdown 1.3.6.1.6.3.15 excluded !--- The additional object snmpUsmMIB is excluded. snmp-server view cutdown 1.3.6.1.6.3.16 excluded !--- The additional object snmpVacmMIB is excluded. snmp-server view cutdown 1.3.6.1.6.3.18 excluded !--- The additional object snmpCommunityMIB is excluded. snmp-server community public view cutdown RO snmp-server community private view cutdown RW
Cuidado: No exemplo acima, snmpUsmMIB é excluído, snmpVacmMIB é excluído e snmpCommunityMIB é excluído. Juntos esses objetos podem ser utilizados para obter informações sobre usuários configurados e séries de comunidade para obter acesso administrativo para o dispositivo. Recomenda-se que esses objetos sejam excluídos da visualização em qualquer dispositivo que possa ser acessado por usuários públicos.
Em ambos os exemplos, você pode substituir suas próprias strings de comunidade.
O resultado dessas configurações é que o roteador não retorna mais a tabela ARP ou a tabela de rotas IP quando consultado. Isso impede que as descobertas da rede SNMP criem estacas de CPU no roteador em questão, mas também remove um grau de capacidade de gerenciamento do roteador.
Roteadores que anteriormente não estavam exibindo picos de CPU podem começar a fazer isso caso haja uma alteração na tabela de roteamento. A quantidade de ciclos necessários para responder às solicitações da tabela de IP Routing é uma função do número de rotas na tabela de roteamento. Se o número de rotas aumentar, a utilização da CPU também aumenta.
Uma alteração foi feita no código do Cisco IOS para permitir que o SNMP consulte a tabela Cisco Express Forwarding (CEF) para entradas de roteamento se a comutação CEF for usada. Isso melhora significativamente a situação. Com o CEF ativado, o agente SNMP responde a uma operação get-next/get-bulk para o roteamento ou tabelas ARP com informações da Base de Informações de Encaminhamento (FIB). O FIB é armazenado em ordem lexicográfica e nenhuma classificação é necessária. Sem o CEF habilitado, o agente SNMP responde com informações do Routing Information Base (RIB), que deve ser classificado em ordem lexicográfica, causando alta CPU.
Siga o link de ID de bug abaixo e consulte as informações detalhadas sobre o bug.
CSCdk54265 (somente clientes registrados) - O HOG da CPU é gerado quando a tabela de roteamento de polling via SNMP da estação de gerenciamento de rede.
Os aplicativos de gerenciamento de rede frequentemente recuperam informações de dispositivos que usam SNMP. Um exemplo seria o Resource Manager Essentials (RME), um aplicativo no conjunto de produtos CiscoWorks 2000. O RME pode recuperar informações da flash definidas no CISCO-FLASH-MIB. Se o dispositivo tiver um disco flash ATA, ele pode fazer com que a utilização da CPU salte.
Siga o link de ID de bug abaixo e consulte as informações detalhadas sobre o bug.
CSCdt97325 (apenas clientes registrados)
Para verificar e aplicar a solução, siga estas etapas:
Verifique se o dispositivo tem uma placa flash ATA em um de seus slots:
Router#show disk1: ******** ATA Flash Card Geometry/Format Info ******** ATA CARD GEOMETRY Number of Heads: 12 Number of Cylinders 906 Sectors per Cylinder 63 Sector Size 512 Total Sectors 684936 ATA CARD FORMAT Number of FAT Sectors 84 Sectors Per Cluster 32 Number of Clusters 21372 Number of Data Sectors 684117 Base Root Sector 169 Base FAT Sector 1 Base Data Sector 201 Router#
Se não tiver certeza ou se não obtiver a saída do comando show diskX, execute o comando show tech e procure o disco.
Depois de saber que você tem um disco Flash ATA, você pode aplicar a seguinte solução para evitar as consultas SNMP no FLASH-MIB:
Router(config)#snmp-server viewiso included !--- ISO is used as a starting point as it is the snmp 'root'. Router(config)#snmp-server viewciscoFlashMIB excluded !--- The additional object snmpUsmMIB is excluded. Router(config)#snmp-server view1.3.6.1.6.3.15 excluded !--- The additional object snmpVacmMIB is excluded. Router(config)#snmp-server view1.3.6.1.6.3.16 excluded !--- The additional object snmpCommunityMIB is excluded. Router(config)#snmp-server view1.3.6.1.6.3.18 excluded Router(config)#snmp-server communityview Router(config)#snmp-server communityro view Router(config)#exit Router#rw
Observação: escolha a mesma palavra em cada linha para <any_word> na configuração acima.
Cuidado: No exemplo acima, snmpUsmMIB é excluído, snmpVacmMIB é excluído e snmpCommunityMIB é excluído. Juntos esses objetos podem ser utilizados para obter informações sobre usuários configurados e séries de comunidade para obter acesso administrativo para o dispositivo. Recomenda-se que esses objetos sejam excluídos da visualização em qualquer dispositivo que possa ser acessado por usuários públicos.
Verifique se está corretamente implementado:
Router#show run ... snmp-server viewiso included !--- ISO is used as a starting point as it is the snmp 'root'. snmp-server viewciscoFlashMIB excluded snmp-server view !--- The additional object snmpUsmMIB is excluded. snmp-server viewinternet.6.3.15 excluded internet.6.3.16 excluded !--- The additional object snmpVacmMIB is excluded. snmp-server viewinternet.6.3.18 excluded !--- The additional object snmpCommunityMIB is excluded. snmp-server communityview RW snmp-server community view RO
Observação: <any_word>, <write_community_string> e <read_community_string> são as que estão na configuração.
Cuidado: No exemplo acima, snmpUsmMIB é excluído, snmpVacmMIB é excluído e snmpCommunityMIB é excluído. Juntos esses objetos podem ser utilizados para obter informações sobre usuários configurados e séries de comunidade para obter acesso administrativo para o dispositivo. Recomenda-se que esses objetos sejam excluídos da visualização em qualquer dispositivo que possa ser acessado por usuários públicos.
Emita o comando show proc cpu para verificar se o CPU-Util para SNMP cai e procure o processo IP_SNMP.
Observação: o bug CSCdt97325 também foi corrigido em algumas versões posteriores do Cisco IOS, portanto, verifique o bug para obter detalhes.
Outros bugs relacionados à eleição de MIBs:
Siga os links de ID de bug da Cisco abaixo e consulte informações detalhadas sobre bugs.
CSCdm67427 (somente clientes registrados) - A pesquisa na subinterface ATM retorna a mensagem CPU HOG do dispositivo.
CSCdu63734 (somente clientes registrados) - A MIB Flash faz muitas chamadas para o ifs.
CSCdu48652 (somente clientes registrados) - A consulta de MIB em Flash interrompe as chamadas de voz no 7200.
CSCds53368 (somente clientes registrados) - Problemas com o objeto ciscoFlashPartitionEntry em CISCO-FLASH-MIB.
CSCdu55091 (somente clientes registrados) - 2500 snmpgetnext para determinados objetos SNMP causa o rastreamento de volta.
CSCdx54836 (somente clientes registrados) - A pesquisa de SNMP em MIB Flash causa alta utilização de cpu no switch.
Revisão | Data de publicação | Comentários |
---|---|---|
1.0 |
27-Feb-2014 |
Versão inicial |