Juniper 피어링 라우터의 라우팅 엔진에서 높은 CPU로드의 원인


20

최근 주니퍼 피어링 라우터 2 개에서 라우팅 엔진 CPU 사용률이 평균로드의 ~ 10-20 %에서 80 + %로 증가했습니다. 나는 이것을 일으키는 원인을 알아 내려고 노력하고 있습니다 (그리고이 고부하를 되 돌리는 방법).

라우터에 대한 일부 정보 : 둘 다 동일한 JunOS 버전을 실행하고 둘 다 동일한 두 피어링 IXP LAN에 연결되며 많은 (수백) (거의 동일한) IPv4 및 IPv6 세션이 있습니다. 두 라우터 모두 다른 IP 전송 제공자에 연결되어 있으며 나머지 네트워크에 동일한 방식으로 연결되어 있습니다. 라우팅 엔진의 CPU로드는 80 % 이상으로 플랫 라인이 아니며 몇 분에서 몇 시간 동안 정상 수준으로 다시 떨어집니다.

내가 확인한 것들 :

  • 증가가 시작된 순간에 구성이 변경되지 않았습니다.
  • 제어 평면을 향한 유니 캐스트 트래픽이 증가하지 않습니다.
  • 전달되는 트래픽 양에 (실질적인) 변화는 없습니다 (증가조차도 중요하지는 않지만)
  • show system processes summaryrpd프로세스가 높은 CPU로드를 유발하고 있음을 나타냅니다.
  • BGP 피어가 급격히 증가하지 않아 BGP 변경이 많이 발생 함

내가 설명 할 수있는 한 가지 가능한 설명은 IXP의 두 라우터 중 하나의 피어 (또는 둘 이상)가 많은 수의 BGP 업데이트를 보내는 데 연결되어 있다는 것입니다. 현재 전송 세션에 대한 BGP 메시지 수에 대한 통계 만 있습니다 (비정상 활동 없음). 피어링 LAN에서 수백 개의 BGP 세션으로 인해 그래프를 작성해야하는 경우 문제가있는 세션을 찾기가 쉽지 않습니다. 모든 세션.

내 질문은 :

  • 라우팅 엔진에서 CPU 부하가 증가하는 원인을 찾기 위해 확인해야 할 다른 사항이 있습니까?
  • 어떤 세션이 이러한 문제를 일으키는 지 쉽게 알 수 있습니까 (내 가정이 옳은 경우)? BGP 추적 옵션을 사용하면 많은 양의 데이터가 생성되지만 실제 통찰력을 제공하는지 확실하지 않습니다.

답변:


17

Juniper Knowledge Center에 유용한 정보가있을 수 있습니다 .

RPD가 높은 CPU를 소비하는 경우 다음 점검을 수행하고 다음 매개 변수를 확인하십시오.

  • 인터페이스 확인 : 라우터에서 인터페이스가 튀어 나와 있는지 확인하십시오. 이것은 show log 메시지와 show 인터페이스 ge-x / y / z 광범위한 명령의 출력을보고 확인할 수 있습니다. 왜 펄럭이는지를 해결하십시오. 가능한 경우 링크 업 및 링크 다운에 대해 보류 시간을 활성화하는 것을 고려할 수 있습니다.

  • show log 메시지의 출력을보고 인터페이스 또는 FPC / PIC와 관련된 syslog 오류 메시지가 있는지 확인하십시오.

  • 경로 확인 : show route 요약의 출력을보고 라우터가 학습 한 총 경로 수를 확인하십시오. 최대 한도에 도달했는지 확인하십시오.

  • RPD 태스크를 점검하십시오. 프로세스를 바쁘게 유지하는 대상을 식별하십시오. 먼저 설정된 작업 계정을 활성화하여 확인할 수 있습니다. 중요 사항 :이 자체로 CPU로드 및 활용도가 증가 할 수 있습니다. 필요한 출력 수집이 완료되면 반드시 끄십시오. 그런 다음 show task accounting을 실행하고 CPU 시간이 높은 스레드를 찾으십시오.

    user@router> show task accounting
    Task                       Started    User Time  System Time  Longest Run
    Scheduler                   146051        1.085        0.090        0.000
    Memory                           1        0.000            0        0.000  <omit>
    BGP.128.0.0.4+179              268       13.975        0.087        0.328
    BGP.0.0.0.0+179      18375163 1w5d 23:16:57.823    48:52.877        0.142
    BGP RT Background              134        8.826        0.023        0.099
    

특정 접두사 또는 프로토콜과 관련된 스레드가 높은 CPU를 사용하는 이유를 알아보십시오.

  • 쉘 명령의 출력을보고 경로가 진동하는지 (또는 경로 변동) 여부를 확인할 수도 있습니다. %rtsockmon –t

  • RPD 메모리를 확인하십시오. 때때로 높은 메모리 사용률은 간접적으로 높은 CPU를 초래할 수 있습니다.


1
RPD는 약간 성가신 블랙 박스입니다. rtsockmon -t 및 show 태스크 계정에 대한 훌륭한 제안 외에도 잠재적으로 유용한 도구로 'show krt queue'를 추가하고 싶습니다.
ytti

show krt queue는 데이터 플레인에 대한 제어로가는 경로 업데이트를 보여줍니다. 대부분의 시간 동안 대기열에 아무것도 표시되지 않습니다. 플랩이이 꽤 많은 시간 동안 대기 상태를 유지 할 수 발생하면
mellowd

PR836197 때문에 문자 그대로 몇 시간 내에있을 수 있습니다. (
ytti

그 중 몇 가지 점은 언급하기에는 너무 명백했지만 (플 래핑 인터페이스, 로그 오류) rtsockmon 및 작업 계정 제안은 통찰력이있었습니다. SNMP에 많은 CPU 사이클이 사용되는 것처럼 보이므로 다음은 라우터를 폴링하는 박스와 툴을 파악하는 것입니다.
Teun Vink

1
그들이 너무 명백한 경우에 죄송합니다, 나는 사용자가 플러그 인이 번거로운 지 여부를 확인하게하는 지원 배경에서 왔습니다!
Artanix

2

이 스레드는 오래되었지만 완전성을 위해 알고 있습니다.

높은 CPU가 무작위로 발생하고이를 일으키는 프로세스를 확인할 수없는 경우 아래 스크립트를 작성할 수 있습니다.

이 스크립트를 사용하면 프로세스가 정상 또는 예상 임계 값보다 높을 때 프로세스를 광범위하게 캡처 할 것이므로 트래픽을 방해하지 않지만 MW는 여전히 권장됩니다. 그러나 나는 당신이 그것을 RPD로 좁힌 것을 봅니다.

snmp {
    health-monitor {
        interval 30;
        rising-threshold 60;
        falling-threshold 50;
    }
}

event-options {
    policy MONITOR-CPU {
        events snmpd_health_mon_thresh_cross;
        attributes-match {
            snmpd_health_mon_thresh_cross.event-name matches "Health Monitor.+CPU.+rising";
        }
        then {
            execute-commands {
                commands {
                    "show system processes extensive";
                }
                output-filename cpu-processes;
                destination local-flash;
                output-format text;
            }
        }                               
    }
    destinations {
        local-flash {
            archive-sites {
                /var/tmp;
            }
        }
    }
}

디스플레이 설정 출력>

set snmp health-monitor interval 30
set snmp health-monitor rising-threshold 60
set snmp health-monitor falling-threshold 50
set event-options policy MONITOR-CPU events snmpd_health_mon_thresh_cross
set event-options policy MONITOR-CPU attributes-match snmpd_health_mon_thresh_cross.event-name matches "Health Monitor.+CPU.+rising"
set event-options policy MONITOR-CPU then execute-commands commands "show system processes extensive"
set event-options policy MONITOR-CPU then execute-commands output-filename cpu-processes
set event-options policy MONITOR-CPU then execute-commands destination local-flash
set event-options policy MONITOR-CPU then execute-commands output-format text
set event-options destinations local-flash archive-sites /var/tmp

또한 ddos ​​메시지가보고되었는지 확인 했습니까? 다음 명령을 실행할 수 있습니다.

show ddos-protection protocols statistics brief
show ddos-protection statistics
show ddos-protection version

그런 다음 보이는 것에 따라 예를 들어 좁힐 수 있습니다.

show ddos-protection protocols ttl statistics
show ddos-protection protocols ttl violations
show ddos-protection protocols ttl flow-detection detail  */*this cm needs prior config*/*

주니퍼는 KB22637에 따라 이러한 유형의 문제에 대한 수집 목록도 제공합니다.

높은 CPU CLI 명령

set cli timestamp
show chassis routing-engine (multiple snapshots, atleast 5)
show system processes extensive (multiple snapshots atleast 5)
show system users
show system connections
show system statistics

작업 계정을 켜고 작업 계정 세부 정보 출력을 수집합니다 (30 초 간격으로 세 번). 완료 한 후에는 전원을 끄는 것을 잊지 마십시오.

set task accounting on 
show task accounting detail
set task accounting off

show task memory detail
show task memeory summary
show task io
show task history
show task statistics
show task job
show task jobs
show krt queue
show krt state

로그

추적 옵션 위의 1 단계에 지정된대로 / var / log 아카이브

user@router# show routing-options 
traceoptions { 
file routing-trace size 10m files 20 world-readable; 
flag task; 
flag state; 
flag timer; 
}

또한 버그가 발생하기 쉬운 이전 버전을 실행중인 경우 코드의 수명 지원을 확인할 수 있습니다.

http://www.juniper.net/support/eol/junos.html

벡터 공격이 될 수있는 또 다른 요점은 원치 않는 예외 트래픽으로부터 RE를 보호하지 않은 것입니다. 루프백 아래에 방화벽 필터가 있는지 확인하십시오.

라우터의 과거 스크립트에서 rpd가 내 관점에 올랐는지 확실하지 않은 높은 CPU를 일으키는 것을 보았지만 이것은 간과하고 싶지 않은 것입니다.

로그에 RPD_MPLS_PATH_BANDWIDTH_CHANGE로 많은 조회수가 표시되면 매우 적극적인 조정 간격을 사용하는 것일 수 있습니다.

"시스템 대기열 표시 :이 항목이 커널 대기열이며 일부 실마리가 나타날 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.