본 제품에 대한 문서 세트는 편견 없는 언어를 사용하기 위해 노력합니다. 본 설명서 세트의 목적상, 편견 없는 언어는 나이, 장애, 성별, 인종 정체성, 민족 정체성, 성적 지향성, 사회 경제적 지위 및 교차성에 기초한 차별을 의미하지 않는 언어로 정의됩니다. 제품 소프트웨어의 사용자 인터페이스에서 하드코딩된 언어, RFP 설명서에 기초한 언어 또는 참조된 서드파티 제품에서 사용하는 언어로 인해 설명서에 예외가 있을 수 있습니다. 시스코에서 어떤 방식으로 포용적인 언어를 사용하고 있는지 자세히 알아보세요.
Cisco는 전 세계 사용자에게 다양한 언어로 지원 콘텐츠를 제공하기 위해 기계 번역 기술과 수작업 번역을 병행하여 이 문서를 번역했습니다. 아무리 품질이 높은 기계 번역이라도 전문 번역가의 번역 결과물만큼 정확하지는 않습니다. Cisco Systems, Inc.는 이 같은 번역에 대해 어떠한 책임도 지지 않으며 항상 원본 영문 문서(링크 제공됨)를 참조할 것을 권장합니다.
이 문서에서는 라우터에서 실행되는 SNMP ENGINE 프로세스, 특히 로우엔드 라우터에서 실행되어 라우터에서 높은 CPU 사용률을 해결하는 방법에 대해 설명합니다.
이 문서의 독자는 다음 주제에 대해 알고 있어야 합니다.
SNMP
Cisco IOS
이 문서의 정보는 Cisco IOS® 소프트웨어를 실행하는 라우터를 기반으로 합니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다.이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다.현재 네트워크가 작동 중인 경우, 모든 명령어의 잠재적인 영향을 미리 숙지하시기 바랍니다.
문서 규칙에 대한 자세한 내용은 Cisco 기술 팁 표기 규칙을 참조하십시오.
다음과 같은 메시지가 라우터 콘솔에 표시될 수 있습니다.
%SNMP-3-CPUHOG: Processing [chars] of [chars]
이는 디바이스의 SNMP 에이전트가 요청을 처리하는 데 너무 많은 시간이 소요되었음을 의미합니다.
show process cpu 명령의 출력을 사용하여 라우터에서 CPU 사용량이 많은 원인을 확인할 수 있습니다.
다음 예는 show process cpu 명령의 출력을 보여줍니다.
cacuk#show process cpu CPU utilization for five seconds: 0%/0%; one minute: 0%; five minutes: 0%
PID | 런타임(ms) | 호출됨 | 초 | 5초 | 1분 | 5분 | TTY | 프로세스 |
---|---|---|---|---|---|---|---|---|
1 | 68 | 258816 | 0 | 0.00% | 0.00% | 0.00% | 0 | 로드 미터 |
2 | 0 | 1 | 0 | 0.00% | 0.00% | 0.00% | 0 | OSPF Hello |
3 | 788132 | 131480 | 5994 | 0.00% | 0.00% | 0.00% | 0 | 힙을 확인합니다. |
4 | 0 | 1 | 0 | 0.00% | 0.00% | 0.00% | 0 | 청크 관리자 |
5 | 56 | 131 | 427 | 0.00% | 0.00% | 0.00% | 0 | 풀 관리자 |
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 엔진 |
debug snmp 명령은 쿼리 시점에 어떤 OID(Object ID) 또는 MIB(Management Information Base)를 쿼리하는지 확인합니다.
참고: 프로덕션 네트워크에서 디버그를 실행하면 라우터가 마비될 수 있습니다.
SNMP(Simple Network Management Protocol)와 관련하여 CPU 사용률이 높은 데는 두 가지 가능한 원인이 있습니다.
NMS 스테이션에서 폴링하는 대형 경로 및/또는 ARP 테이블
특정 MIB 폴링
네트워크 관리 스테이션은 라우터에 전체 경로 테이블을 쿼리하여 다른 네트워크에 대해 학습합니다.이 정보를 사용하여 다른 라우터를 찾고 주변의 네트워크에 대한 지식을 쿼리합니다.이러한 방식으로 관리 스테이션은 전체 네트워크의 토폴로지를 학습할 수 있습니다.
라우터는 경로 테이블을 해시된 형식으로 저장하므로 빠른 경로 검색에 도움이 됩니다.그러나 경로에 대한 SNMP 응답은 RFC1213에 따라 사전순으로 반환되어야 합니다. 따라서 라우터가 수신하는 각 SNMP 요청에 대해 해시 테이블을 사전순으로 정렬해야 SNMP 응답 PDU를 구축할 수 있습니다.경로 테이블이 클수록 CPU가 정렬을 더 많이 사용합니다.
SNMP는 CPU 스케줄러에서 우선순위가 낮은 프로세스이므로 CPU 리소스가 필요한 다른 프로세스가 우선권을 갖습니다.따라서 이 시나리오에서는 CPU 급증이 발생하지만 성능에 영향을 미치지 않아야 합니다.
성능 문제를 방지하려면 라우터가 네트워크 관리 시스템 서버에서 경로 테이블에 대한 쿼리를 중간에 종료하도록 합니다.라우터가 경로 테이블에 대한 요청의 시작을 수신하는 즉시 완전한 메시지로 응답하도록 구성합니다.
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
주의: 위 예에서 snmpUsmMIB는 제외되고 snmpVacmMIB는 제외되며 snmpCommunityMIB는 제외됩니다.이러한 개체를 함께 사용하여 구성된 사용자 및 커뮤니티 문자열에 대한 정보를 얻어 디바이스에 대한 관리 액세스를 얻을 수 있습니다.공용 사용자가 액세스할 수 있는 모든 디바이스에서 이러한 객체를 제외하는 것이 좋습니다.
이 컨피그레이션은 경로 테이블(ipRouteTable) 및 ARP(Address Resolution Protocol) 테이블(ipNetToMediaTable)을 검색하기 위한 요청을 차단하지만 다른 모든 요청은 허용합니다.이전 버전의 Cisco IOS® Software가 있는 경우 MIB 개체 ipRouteTable을 인식하지 못하므로 대신 다음 컨피그레이션을 사용하십시오.
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
주의: 위 예에서 snmpUsmMIB는 제외되고 snmpVacmMIB는 제외되며 snmpCommunityMIB는 제외됩니다.이러한 개체를 함께 사용하여 구성된 사용자 및 커뮤니티 문자열에 대한 정보를 얻어 디바이스에 대한 관리 액세스를 얻을 수 있습니다.공용 사용자가 액세스할 수 있는 모든 디바이스에서 이러한 객체를 제외하는 것이 좋습니다.
이 두 가지 예에서 자신의 커뮤니티 문자열로 대체할 수 있습니다.
이러한 컨피그레이션의 결과는 라우터가 쿼리할 때 더 이상 ARP 테이블 또는 IP 경로 테이블을 반환하지 않는다는 것입니다.이렇게 하면 SNMP 네트워크 검색에서 문제가 있는 라우터에 CPU 스파이크를 생성하지 않지만 라우터에서 관리 용이성도 떨어집니다.
이전에 CPU 스파이크를 표시하지 않았던 라우터가 라우팅 테이블에 변경이 있을 경우 이를 시작할 수 있습니다.IP 경로 테이블 요청에 응답하는 데 필요한 주기 양은 라우팅 테이블에 있는 경로 수의 함수입니다.경로 수가 증가하면 CPU 사용량도 증가합니다.
CEF 스위칭이 사용되는 경우 SNMP가 Cisco CEF(Express Forwarding) 테이블에 라우팅 항목을 쿼리할 수 있도록 Cisco IOS 코드가 변경되었습니다.이를 통해 상황이 크게 개선됩니다.CEF를 활성화하면 SNMP 에이전트는 FIB(Forwarding Information Base)의 정보를 사용하여 라우팅 또는 ARP 테이블에 대한 get-next/get-bulk 작업에 응답합니다. FIB는 사전사전순으로 저장되며 정렬할 필요가 없습니다.CEF가 활성화되지 않은 경우 SNMP 에이전트는 RIB(Routing Information Base)의 정보로 응답합니다. RIB는 CPU가 높은 사전 순서로 정렬되어야 합니다.
아래의 버그 ID 링크를 따라 자세한 버그 정보를 확인하십시오.
CSCdk54265(등록된 고객만 해당) - 네트워크 관리 스테이션에서 SNMP를 통해 라우팅 테이블을 폴링할 때 CPU HOG가 생성됩니다.
네트워크 관리 애플리케이션은 SNMP를 사용하여 디바이스에서 정보를 자주 검색합니다.예를 들어 CiscoWorks 2000 제품 제품군 내의 애플리케이션인 RME(Resource Manager Essentials)가 있습니다.RME는 CISCO-FLASH-MIB에 정의된 플래시 정보를 검색할 수 있습니다.디바이스에 ATA 플래시 디스크가 있는 경우 CPU 사용률이 증가할 수 있습니다.
아래의 버그 ID 링크를 따라 자세한 버그 정보를 확인하십시오.
CSCdt97325(등록된 고객만 해당)
해결 방법을 확인하고 적용하려면 다음 단계를 수행합니다.
디바이스에 슬롯 중 하나에 ATA 플래시 카드가 있는지 확인합니다.
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#
확실하지 않거나 show diskX 명령에 대한 출력을 받지 못한 경우 show tech 명령을 실행하고 디스크를 검색합니다.
ATA 플래시 디스크가 있다는 것을 알게 되면 다음 해결 방법을 적용하여 FLASH-MIB에서 SNMP 쿼리를 방지할 수 있습니다.
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
참고: 위의 구성에서 <any_word>의 모든 행에서 동일한 단어를 선택합니다.
주의: 위 예에서 snmpUsmMIB는 제외되고 snmpVacmMIB는 제외되며 snmpCommunityMIB는 제외됩니다.이러한 개체를 함께 사용하여 구성된 사용자 및 커뮤니티 문자열에 대한 정보를 얻어 디바이스에 대한 관리 액세스를 얻을 수 있습니다.공용 사용자가 액세스할 수 있는 모든 디바이스에서 이러한 객체를 제외하는 것이 좋습니다.
올바르게 구현되었는지 확인합니다.
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
참고: <any_word>, <write_community_string> 및 <read_community_string>은 구성에 있는 것입니다.
주의: 위 예에서 snmpUsmMIB는 제외되고 snmpVacmMIB는 제외되며 snmpCommunityMIB는 제외됩니다.이러한 개체를 함께 사용하여 구성된 사용자 및 커뮤니티 문자열에 대한 정보를 얻어 디바이스에 대한 관리 액세스를 얻을 수 있습니다.공용 사용자가 액세스할 수 있는 모든 디바이스에서 이러한 객체를 제외하는 것이 좋습니다.
show proc cpu 명령을 실행하여 SNMP용 CPU-Util이 다운되었는지 확인하고 IP_SNMP 프로세스를 찾습니다.
참고: 버그 CSCdt97325는 일부 이후 Cisco IOS 릴리스에서도 수정되었습니다. 따라서 버그에 대한 자세한 내용은 확인하십시오.
폴링 MIB와 관련된 기타 버그:
아래의 Cisco 버그 ID 링크를 참조하여 자세한 버그 정보를 확인하십시오.
CSCdm67427(등록된 고객만 해당) - ATM 하위 인터페이스를 폴링하면 디바이스에서 CPU HOG 메시지가 반환됩니다.
CSCdu63734(등록된 고객만 해당) - 플래시 MIB는 ifs에 대한 통화를 너무 많이 수행합니다.
CSCdu48652(등록된 고객만 해당) - Flash MIB 쿼리가 7200에서 음성 통화를 정지합니다.
CSCds53368(등록된 고객만 해당) - CISCO-FLASH-MIB의 ciscoFlashPartitionEntry 개체에 문제가 있습니다.
CSCdu55091(등록된 고객만 해당) - 특정 SNMP 객체에 대해 2500snmpgetnext를 수행하면 추적이 다시 발생합니다.
CSCdx54836(등록된 고객만 해당) - 플래시 MIB에서 SNMP 폴링을 수행하면 스위치의 CPU 사용률이 높습니다.