ジュニパーピアリングルーターのルーティングエンジンのCPU負荷が高い原因


20

最近、ジュニパーピアリングルーターの2つでルーティングエンジンのCPU使用率が平均負荷の10〜20%から80 +%に増加しました。私はこれが何を引き起こしているのか(そしてこの高負荷を元に戻す方法)を解明しようとしています。

ルーターに関する情報:両方が同じJunOSバージョンを実行し、両方が同じ2つのピアリングIXP LANに接続され、多数(数百)の(ほぼ同一の)IPv4およびIPv6セッションを持っています。両方のルーターは、異なるIPトランジットプロバイダーへの接続を持ち、ネットワークの残りの部分にも同じ方法で接続されます。ルーティングエンジンのCPU負荷は80 +%で平坦ではなく、数分から数時間で通常レベルに戻りますが、これらの低下はそれほど頻繁ではありません。

私がチェックしたこと:

  • 増加が始まった時点では、構成の変更は行われていません
  • コントロールプレーンに向けられた非ユニキャストトラフィックの増加はありません
  • 転送されるトラフィックの量に(実質的な)変化はありません(増加しても問題ありません)
  • show system processes summaryrpdプロセスが高いCPU負荷を引き起こしていることを示します
  • 大量のBGP変更を引き起こす急速にフラッピングするBGPピアはありません

考えられる説明の1つは、IXPの両方のルーターの1つにピア(または複数)があり、多数のBGP更新の送信に接続されていることです。現在、トランジットセッションのBGPメッセージの数に関する統計しかありません(異常なアクティビティは表示されません)。ピアリングLANに数百のBGPセッションがある場合、グラフを作成する必要がある場合、問題のあるセッションを見つけるのはそれほど簡単ではありませんすべてのセッション。

私の質問は:

  • このルーティングエンジンのCPU負荷の増加の原因を見つけるために確認する必要がある他のことはありますか?
  • どのセッションがこれらの問題を引き起こしているのかを簡単に見つけるにはどうすればよいですか(仮定が正しい場合)。BGPトレースオプションを有効にすると大量のデータが生成されますが、実際の洞察が得られるかどうかはわかりません。

回答:


17

ジュニパーのナレッジセンターに役立つ情報が掲載されている場合があります。

RPDが高いCPUを消費している場合は、次のチェックを実行し、次のパラメーターを確認します。

  • インターフェイスを確認します。ルーターでインターフェイスがフラッピングしていないかどうかを確認します。これは、show logメッセージおよびshow interfaces ge-x / y / z拡張コマンドの出力を調べることで確認できます。フラッピングの原因をトラブルシューティングします。可能であれば、リンクアップとリンクダウンのホールドタイムを有効にすることを検討できます。

  • show logメッセージの出力を見て、インターフェイスまたはFPC / PICに関連するsyslogエラーメッセージがあるかどうかを確認します。

  • ルートを確認します。showroute summaryの出力を見て、ルーターが学習したルートの総数を確認します。上限に達しているかどうかを確認してください。

  • 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 krt queue」を追加したいと思います。
-ytti

show krt queueは、コントロールからデータプレーンへのルート更新を表示します。ほとんどの場合、キューに何も表示されません。フラップが発生すると、これはかなりの時間キューにとどまることができます
まろやか

PR836197により、文字通り時間内にある可能性があります:
ytti

これらの点のいくつかは言及するにはあまりにも明白でした(インターフェイスのフラッピング、ログのエラー)が、rtsockmonとタスクアカウンティングの提案は洞察に富んでいました。SNMPには多くのCPUサイクルが使用されているように見えるため、次は、これらのルーターをポーリングしているボックスとツールを特定します。
テウンヴィンク

1
それらがあまりにも明白だった場合は申し訳ありませんが、プラグインが面倒かどうかをユーザーに確認させるサポートのバックグラウンドから来ました!
アルタニックス

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秒のギャップで3回)。終了したら、忘れずにオフにしてください。

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のTraceoptionsで指定された/ 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

ベクトル攻撃の可能性があるもう1つの点は、不要な例外トラフィックからREを保護していないことです。ループバックの下にファイアウォールフィルターがあることを確認してください。

ルーターで過去のスクリプトを見て、高いCPUが発生し、rpdが私の視野に入ったかどうかはわかりませんが、これは見逃したくないかもしれません。

ログにRPD_MPLS_PATH_BANDWIDTH_CHANGEで多数のヒットがある場合は、非常に積極的な調整間隔を使用している可能性があります

「システムキューの表示」のドロップを確認します。これはカーネルキューです。いくつかの手がかりが表示される場合があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.