データプレーンCPU負荷が高い時のトラブルシューティング

Printer Friendly Page

※この記事は以下の記事の日本語訳です。
How to Troubleshoot High Dataplane CPU
https://live.paloaltonetworks.com/t5/Featured-Articles/How-to-Troubleshoot-High-Dataplane-CPU/ta-p/7...

 

データプレーンCPU負荷が高騰、高い状況が継続、負荷が徐々に増える要因として、新しいサービス、リソース、追加ネットワーク セグメント、ホスト接続の追加など様々な要素があります。これらの要素に加えて、パケットレート、パケットバッファー使用率、毎秒当たりの新規セッションの接続率の高騰により、データプレーンCPUがクリティカル レベルに到達してしまいます。

 

データプレーンCPUの高負荷トラブルシューティングを学ぶために、この文章では、データプレーンCPUの実際の負荷状況を確認して、ネットワークに何らかの影響を及ぼす可能性について判断する手助けを示します。

 
データプレーンCPUの高負荷を理解することはとても重要です。データプレーンCPUの高使用率は即時の関心事ではないかもしれませんが、何が起因してCPUが高くなっているのか、可能性について理解しておくことは正しい対応をするために手助けとなるでしょう。

 

対処する前に特定化が必要な、いくつかの要因があります。

  • 一部の、全体のもしくはファイアウォールを通過しない通信が影響しているか
  • ユーザーは遅延を体感できているか、もしそうであれば、その遅延は全体の通信か特定のアプリケーションのみか
  • 問題が報告されたとき、それらの報告は特定の時間帯か、定期な間隔、それとも完全にランダムに発生しているか

 

データプレーン高CPU負荷を識別する方法

 

show running resource-monitor

コマンドはデータプレーンCPUの使用率をレビューするのに使われます。時間オプションを追加することによって、レビューしたい時間帯を反映させます。 

  • 'second'は直近60秒の1秒当たりのCPU使用率を表示します。
  • 'minute'は直近60分の1分当たりのCPU使用率を表示します。
  • 時間オプションを指定しなければ、秒単位、分単位を一度に表示します。

 

> show running resource-monitor 
> day Per-day monitoring statistics
> hour Per-hour monitoring statistics
> ingress-backlogs show statistics
> minute Per-minute monitoring statistics
> second Per-second monitoring statistics
> week Per-week monitoring statistics

 

実際の表示はこれと似ていますが、ご使用になられているシステムのデータプレーンとコアの数によって若干表示が異なります。

 

 

> show running resource-monitor 

DP dp0:

Resource monitoring sampling data (per second):

最初のパートは、データプレーン上で動作しているプロセスが利用するCPU負荷率です。

CPU load sampling by group:
flow_lookup : 0%
flow_fastpath : 0%
flow_slowpath : 0%
flow_forwarding : 0%
flow_mgmt : 0%
flow_ctrl : 1%
nac_result : 0%
flow_np : 0%
dfa_result : 0%
module_internal : 0%
aho_result : 0%
zip_result : 0%
pktlog_forwarding : 0%
lwm : 0%
flow_host : 1%

この出力のパートは、データプレーンの個々のコアの負荷率です。使用率が定量的に75%を越えている場合、
調査する必要があるかもしれません。

CPU load (%) during last 60 seconds:
core 0 1 2 3 4 5 6 7 8 9 10 11
0 39 47 38 46 73 81 73 81 82 88 83
0 39 46 38 45 73 82 73 82 82 89 82
0 39 46 39 45 73 81 73 81 83 88 83
0 38 52 37 50 71 81 71 80 82 98 82
0 40 46 39 45 74 82 74 82 83 89 83
0 40 50 39 49 74 85 74 84 83 90 83
0 39 46 38 45 72 81 72 81 81 88 81
0 42 52 41 50 75 86 75 86 84 91 84
0 42 76 79 85 75 10075 100100100 85  >>> CPU高負荷を示している例です。
0 44 51 43 50 78 85 78 86 86 91 86
0 42 51 41 50 76 86 76 86 85 92 85
0 43 53 43 52 77 89 77 89 86 93 86
0 38 46 37 45 71 81 72 81 81 88 81
0 42 50 41 50 76 85 76 85 85 90 85
... 以下省略
                  
このセクションはセッションテーブルの使用率を示します。プラットフォームがサポートする最大アクティブ
セッション数に対する比率です。80%を越える場合は調査する必要性があるかもしれません。

Resource utilization (%) during last 60 seconds:
session:
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

次の3つのセクションは、パケットバッファーの使用率です。
パケットバッファーはコアやプロセスで処理中待ちで、継続するパケットを失わないために使用されます。
80%を越える場合は調査する必要性があるかもしれません。

packet buffer:
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
 
packet descriptor:
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
 

packet descriptor (on-chip):
  2   2   2   2   2   2   2   2   2   2   2   2   2   2   2
  2   2   2   2   2   2   2   2   2   2   2   2   2   2   2
  2   2   2   2   2   2   2   2   2   2   2   2   2   2   2
  2   2   2   2   2   2   2   2   2   2   2   2   2   2   2

 

なぜリソースモニターのいくつかの値が、閾値より越えているのかを識別するのに助けるいくつかのコマンドがあります。

 

show session info

幾つのセッションがサポートされているかに関する全ての情報表示です。幾つのアクティブセッションがあり、パケットレート、新しいセッション確立レート、スループットが表示されます。いずれかの値が以上に高い場合、データプレーンCPU負荷が上がる原因の可能性があります。

 

> show session info

target-dp: *.dp0
--------------------------------------------------------------------------------
Number of sessions supported: 262142
Number of active sessions: 3 < 数字がsupported sessions数を越えている場合、
Number of active TCP sessions: 0 筐体の上限値に到達しています。
Number of active UDP sessions: 1
Number of active ICMP sessions: 0
Number of active BCAST sessions: 0
Number of active MCAST sessions: 0
Number of active predict sessions: 0
Session table utilization: 0%
Number of sessions created since bootup: 332481
Packet rate: 28/s 異常な、突然の高パケットレートはDoSアタックを指示してるかもしれません。
Throughput: 13 kbps
New connection establish rate: 0 cps
--------------------------------------------------------------------------------
Session timeout
もしtimeouts値が極端に短かったり、猶予がある場合、システムはリソース不足になる可能性も。

TCP default timeout: 3600 secs
TCP session timeout before SYN-ACK received: 5 secs
TCP session timeout before 3-way handshaking: 10 secs
TCP half-closed session timeout: 120 secs
TCP session timeout in TIME_WAIT: 15 secs
TCP session timeout for unverified RST: 30 secs
UDP default timeout: 30 secs
ICMP default timeout: 6 secs
other IP default timeout: 30 secs
Captive Portal session timeout: 30 secs
Session timeout in discard state:
TCP: 90 secs, UDP: 60 secs, other IP protocols: 60 secs
--------------------------------------------------------------------------------
Session accelerated aging: True
もしaccelerated agingが未設定で、いくつかのセッションが不必要に長くアクティブのままテーブル
上で滞留するとリソースを消耗しがちです。

Accelerated aging threshold: 80% of utilization
Scaling factor: 2 X
--------------------------------------------------------------------------------
Session setup
トラブルシューティングで以下のいくつかの設定が未設定にしてそのままにしておくと、
それらの設定は破棄すべき不正パケットの検査に追加のリソースを消耗します。

TCP - reject non-SYN first packet: True
Hardware session offloading: True
IPv6 firewalling: True
Strict TCP/IP checksum: True
ICMP Unreachable Packet Rate: 200 pps
--------------------------------------------------------------------------------
Application trickling scan parameters:
Timeout to determine application trickling: 10 secs
Resource utilization threshold to start scan: 80%
Scan scaling factor over regular aging: 8
--------------------------------------------------------------------------------
Session behavior when resource limit is reached: drop
ファイアウォールが限界のリソース枯渇した時のファイアウォールの振る舞いを示します。
--------------------------------------------------------------------------------
Pcap token bucket rate : 10485760
--------------------------------------------------------------------------------
Max pending queued mcast packets per session : 0
--------------------------------------------------------------------------------
 

 

debug dataplane pool statistics

システムに使われている全てのバッファーステータスを返します。

 

  • 左側の数字は現在未使用のバッファー数です。
  • 右側の数字はバッファーの最大値です。
  • もし左側の数字が0になると、バッファーが空になっています。

 

> debug dataplane pool statistics


Hardware Pools
[ 0] Packet Buffers : 57223/57344 0x8000000030c00000
[ 1] Work Queue Entries : 229315/229376 0x8000000037c00000
[ 2] Output Buffers : 1007/1024 0x800000000fc00000
[ 3] DFA Result : 3995/4000 0x8000000039800000
[ 4] Timer Buffers : 4096/4096 0x8000000039be8000
[ 5] PAN_FPA_LWM_POOL : 1024/1024 0x800000000fd00000
[ 6] ZIP Commands : 1023/1024 0x800000000fd40000
[ 7] PAN_FPA_BLAST_PO : 1024/1024 0x800000000ff40000

Software Pools
[ 0] software packet buffer 0 ( 512): 32767/32768 0x8000000043b2a680
[ 1] software packet buffer 1 ( 1024): 32768/32768 0x8000000044b4a780
[ 2] software packet buffer 2 ( 2048): 81920/81920 0x8000000046b6a880
[ 3] software packet buffer 3 (33280): 20480/20480 0x8000000050bba980
[ 4] software packet buffer 4 (66048): 304/304 0x80000000795cea80
[ 5] Shared Pool 24 ( 24): 560000/560000 0x800000007a8f6780
[ 6] Shared Pool 32 ( 32): 530000/530000 0x800000007b7eaa80
[ 7] Shared Pool 40 ( 40): 70000/70000 0x800000007ca1cf00
[ 8] Shared Pool 192 ( 192): 1269999/1270000 0x800000007cd0cf80
[ 9] Shared Pool 256 ( 256): 140000/140000 0x800000008ba70880
[10] ZIP Results ( 184): 1024/1024 0x80000000a1827300
[11] CTD AV Block ( 1024): 32/32 0x80000000be43d380
[12] Regex Results (11544): 8000/8000 0x80000000be466100
[13] SSH Handshake State ( 6512): 64/64 0x80000000c580c680
[14] SSH State ( 3248): 512/512 0x80000000c5872480
[15] TCP host connections ( 176): 15/16 0x80000000c5a08e80

 

show counter global filter delta yes

コマンド発行した間の差分情報を表示します。グローバルカウンターの一定期間、現在と、前回分の差分で、異常な数の破棄されたパケット数などを表示させるかもしれません。

 

> show counter global filter delta yes

Global counters:
Elapsed time since last sampling: 2.981 seconds

name value rate severity category aspect description
--------------------------------------------------------------------------------
pkt_recv 89 29 info packet pktproc Packets received
pkt_recv_zero 87 29 info packet pktproc Packets received from QoS 0
pkt_sent 3 1 info packet pktproc Packets transmitted
session_allocated 1 0 info session resource Sessions allocated
session_freed 1 0 info session resource Sessions freed
session_installed 1 0 info session resource Sessions installed
flow_arp_pkt_rcv 83 27 info flow arp ARP packets received
flow_host_pkt_rcv 2 0 info flow mgmt Packets received from control plane
flow_host_pkt_xmt 2 0 info flow mgmt Packets transmitted to control plane
flow_host_service_allow 2 0 info flow mgmt Device management session allowed
appid_ident_by_icmp 1 0 info appid pktproc Application identified by icmp type
dfa_sw 2 0 info dfa pktproc The total number of dfa match using software
aho_sw 1 0 info aho pktproc The total usage of software for AHO
ctd_pkt_slowpath 2 0 info ctd pktproc Packets processed by slowpath
pkt_flow_np 87 29 info packet resource Packets entered module flow stage np
pkt_flow_host 2 0 info packet resource Packets entered module flow stage host
--------------------------------------------------------------------------------
Total counters shown: 16
--------------------------------------------------------------------------------

 

show system statistics session

コマンドは、パケットレートや、データプレーンを通過するスループットを自動更新でライブ表示します。

 

System Statistics: ('q' to quit, 'h' for help) 

Device is up : 0 day 2 hours 34 mins 57 sec
Packet rate : 32/s
Throughput : 92 Kbps
Total active sessions : 14
Active TCP sessions : 8
Active UDP sessions : 4
Active ICMP sessions : 2

'a'を押すと、'top 20 applications'に切り替わります。's'で元の表示に戻ります。

Top 20 Application Statistics: ('q' to quit, 'h' for help)

Virtual System: vsys1
application sessions packets bytes
-------------------------------- ---------- ------------ ------------
ssl 349 47051 53368023
firefox-update 4 32503 31679603
google-base 57 19879 17687367
ms-update 30 2513 2413399
tor 1 715 710161
web-browsing 60 1140 588357
ping 2920 5840 572320
windows-push-notifications 57 819 266737
apt-get 6 662 260149
dns 728 1484 185056
dhcp 124 248 86800
ms-spynet 3 71 45382
ocsp 9 215 33311
google-update 2 28 8624
ntp 45 90 8100
ipv6 2 64 5248
sip 5 5 2283
ldap 8 9 2241
insufficient-data 5 13 780
icmp 6 6 520

 


さらに重要なことは、どのようなタイプの通信、設定の複雑性もCPU負荷に影響します。それ上に、通信パターンを分析し、CPU負荷に影響を及ぼすようなアプリケーションを理解することが重要です。

 

著者: Aditi Pasupulati