• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

cjnotes

cjnotes is a personal Blog about virtualization maintained by CJ

  • About
  • VCF
  • HCX
  • vSAN
  • VMC on AWS
  • Cloud Services

ANS

VMware Avi Load Balancer のパケットキャプチャ方法

2025/12/23 By CJ コメントを書く

この投稿は、vExperts Advent Calendar 2025 の 23 日目です。

今回は VMware Avi Load Balancer (以降、ALB) 環境におけるパケットキャプチャの取得方法について紹介したいと思います。

イメージ図

本記事での想定シナリオとしては、上記の通り Client から Server へアクセスする通信 (nginx ページ表示) を下記 2 箇所にてパケットキャプチャを取得するイメージとなります。

 ・パケットキャプチャのポイント #1 : Virtual Service (VIP)
 ・パケットキャプチャのポイント #2 : Service Engine (SE)

テスト環境情報

本記事で動作を確認した環境情報は、下記の通りです。
注意 : 異なるバージョンなどにおいては、動作が異なる可能性があります。

 ・Avi Load Balancer 22.1.6
  # 現時点の推奨バージョンは KB.312808 の通り、30.2.6 となります。
 ・vCenter Server 8.0U3g
 ・ESXi 8.0U3e

1. Virtual Service (VIP) 側のパケットキャプチャ (UI)

ALB には “Traffic Capture” というデフォルトのパケットキャプチャ機能が用意されています。また、UI / CLI 両方のインタフェースから取得可能です。

“ALB controller の UI > Operations > Traffic Capture (Traffic Capture) > Virtual Service” の右側にある鉛筆マークをクリックして、パケットキャプチャのフィルター設定に進みます。
#本記事では、下記の項目を設定してあります。フィラター設定後に、[Start Capture] をクリックしてパケットキャプチャを開始します。

 ・対象となる Virtual Service (VIP) 選択 : test-1
 ・All Traffic 選択
 ・Duration 設定 : 0 (手動で停止するまで取得)

ちなみに、Client 環境は下記の通り /etc/hosts ファイルに test.example.com を追記してあります。

パケットキャプチャが開始され、UI 上では “Capture is Running” 状態となります。

この状態で、Client から Server へアクセスを行い、下記の通り “Welcome to nginx!” ページが表示されることを確認します。

その後、”Capture is Running” 左側にあるトグルボタンをクリックし、パケットキャプチャを停止します。

そうすると “Capture file is being prepared → Capture is Stopped” にステータスが更新され、パケットキャプチャが停止し、下記の通り取得したパケットキャプチャファイルがダウンロード可能となります。

圧縮ファイルを解凍すると .pcapng ファイルがあるので、該当ファイルを Wireshark などでオープンすると、下記の通り test.example.com へのパケットが流れたことが確認可能です。


2. Virtual Service (VIP) 側のパケットキャプチャ (CLI)

Avi Controller に SSH 接続後、admin ユーザーでログインした後、下記のコマンドにてパケットキャプチャを開始します。

主要コマンド
 [admin:10-91-9-181]: > debug virtualservice test-1 (対象の VIP 指定)
 [admin:10-91-9-181]: debugvirtualservice> capture (キャプチャが可能な状態となります)
 [admin:10-91-9-181]: debugvirtualservice> save (キャプチャが開始となります)

入力例 :

admin@10-91-9-181:~$ shell
Login: admin
Password: [admin ユーザーのパスワード入力]

[admin:10-91-9-181]: > debug virtualservice test-1
Updating an existing object. Currently, the object is:
+———————————-+—————————————————–+
| Field | Value |
+———————————-+—————————————————–+
| uuid | virtualservice-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
| name | test-1 |
| capture | False |
| capture_params | |
| pkt_size | 0 bytes |
| duration | 0 min |
| enable_ssl_session_key_capture | True |
| pcap_ng | True |
| capture_file_size | |
| absolute_size | 100 mb |
| percentage_size | 0 |
| file_count | 2 |
| debug_hm | DEBUG_VS_HM_NONE |
| objsync | |
| trigger_initial_sync | False |
| tenant_ref | admin |
| cloud_ref | Default-Cloud |
| resync_flows | False |
+———————————-+—————————————————–+
[admin:10-91-9-181]: debugvirtualservice>
[admin:10-91-9-181]: debugvirtualservice> capture
Overwriting the previously entered value for capture
[admin:10-91-9-181]: debugvirtualservice> save
+———————————-+—————————————————–+
| Field | Value |
+———————————-+—————————————————–+
| uuid | virtualservice-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
| name | test-1 |
| capture | True |
| capture_params | |
| pkt_size | 0 bytes |
| duration | 0 min |
| enable_ssl_session_key_capture | True |
| pcap_ng | True |
| capture_file_size | |
| absolute_size | 100 mb |
| percentage_size | 0 |
| file_count | 2 |
| debug_hm | DEBUG_VS_HM_NONE |
| objsync | |
| trigger_initial_sync | False |
| tenant_ref | admin |
| cloud_ref | Default-Cloud |
| resync_flows | False |
+———————————-+—————————————————–+
[admin:10-91-9-181]: >

この状態で、Client から Server へアクセスを行った後、下記コマンドにてパケットキャプチャを停止します。

 [admin:10-91-9-181]: > debug virtualservice test-1 (対象の VIP 指定)
 [admin:10-91-9-181]: debugvirtualservice> no capture (キャプチャを無効にします。)
 [admin:10-91-9-181]: debugvirtualservice> save (キャプチャを停止します)


3. Service Engine (SE) 側のパケットキャプチャ (UI)

通常 Troubleshooting の際に、まずは上記の Virtual Service (VIP) 側のパケットキャプチャを取得するケースが多いと思いますが、Virtual Service (VIP) 側にパケットが届いていない場合は Service Engine (SE) 側でパケットキャプチャを取得して、問題箇所の切り分けを実施するのは有効かと思います。

本記事では、下記の通り Service Engine (SE) が Active / Standby 構成となっており、片方 (Primary) の方のみを有効にしてあります。

また、Service Engine (SE) の Primary 対象は、”ALB controller の UI > Applications > Virtual Services > VIP 名 (例.test-1) の上にマウスオーバー”より確認可能です。

Service Engine (SE) も、”Traffic Capture” というデフォルトのパケットキャプチャ機能が用意されており、UI / CLI 両方のインタフェースから取得可能です。

“ALB controller の UI > Infrastructure > Cloud Resources > Service Engine > Traffic Capture > [START CAPTURE]” より、パケットキャプチャのフィルター設定に進みます。

 本記事では、下記のフィルターのみ設定をしてあります。
 ・Types of Packets Capture : Packet capture in pcap format for all packets

[START CAPTURE] を実行すると、”Capture in progress” の状態になります。Client から Server へのアクセスを実施した後、[STOP CAPTURE] ボタンをクリックすると、パケットキャプチャが停止し、下記の通り取得したパケットキャプチャファイルがダウンロード可能となります。

圧縮ファイルを解凍すると .pcap ファイルがあるので、該当ファイルを Wireshark などでオープンすると、下記の通り test.example.com へのパケットが流れたことが確認可能です。


4. Service Engine (SE) 側のパケットキャプチャ (CLI)

Avi Controller に SSH 接続後、admin ユーザーでログインした後、下記のコマンドにてパケットキャプチャを開始します。

主要コマンド
 [admin:10-91-9-181]: > debug serviceengine 10.91.9.182 (対象の Service Engine を指定)
 [admin:10-91-9-181]: debugserviceengine> capture_filters ip_proto ip_type_tcp (フィルターを設定)
 [admin:10-91-9-181]: debugserviceengine:capture_filters> save (フィルター設定を保存)
 [admin:10-91-9-181]: debugserviceengine> capture (キャプチャが可能な状態となります)
 [admin:10-91-9-181]: debugserviceengine> save (キャプチャが開始となります)

入力例 :

admin@10-91-9-181:~$ shell
Login: admin
Password: [admin ユーザーのパスワード入力]

admin:10-91-9-181: > debug serviceengine 10.91.9.182
Updating an existing object. Currently, the object is:
+—————————————-+——————————+
| Field | Value |
+—————————————-+——————————+
| uuid | se-005056b9dde4 |
| name | 10.91.9.182 |
| fault | |
| se_malloc_fail_type | 0 |
| se_malloc_fail_frequency | 0 |
| se_shm_malloc_fail_type | 0 |
| se_shm_malloc_fail_frequency | 0 |
| se_waf_alloc_fail_frequency | 0 |
| se_waf_learning_alloc_fail_frequency | 0 |
| se_mbuf_cl_sanity | False |
| capture_params | |
| pkt_size | 0 bytes |
| duration | 0 min |
| enable_ssl_session_key_capture | False |
| pcap_ng | True |
| capture_file_size | |
| absolute_size | 0 mb |
| percentage_size | 0 |
| file_count | 1 |
| enable_kdump | False |
| benchmark_layer | SE_BENCHMARK_LAYER_NONE |
| benchmark_action | SE_BENCHMARK_MODE_DROP |
| benchmark_option | SE_BENCHMARK_REFLECT_SWAP_L4 |
| benchmark_rss_hash | SE_BENCHMARK_DISABLE_HASH |
| enable_rpc_timing_profiler | False |
| tenant_ref | admin |
+—————————————-+——————————+
admin:10-91-9-181: debugserviceengine> capture_filters ip_proto ip_type_tcp
admin:10-91-9-181: debugserviceengine:capture_filters> save
admin:10-91-9-181: debugserviceengine> capture
Overwriting the previously entered value for capture
admin:10-91-9-181: debugserviceengine> save
+—————————————-+——————————+
| Field | Value |
+—————————————-+——————————+
| uuid | se-005056b9dde4 |
| name | 10.91.9.182 |
| fault | |
| se_malloc_fail_type | 0 |
| se_malloc_fail_frequency | 0 |
| se_shm_malloc_fail_type | 0 |
| se_shm_malloc_fail_frequency | 0 |
| se_waf_alloc_fail_frequency | 0 |
| se_waf_learning_alloc_fail_frequency | 0 |
| se_mbuf_cl_sanity | False |
| capture_params | |
| pkt_size | 0 bytes |
| duration | 0 min |
| enable_ssl_session_key_capture | False |
| pcap_ng | True |
| capture_file_size | |
| absolute_size | 0 mb |
| percentage_size | 0 |
| file_count | 1 |
| capture | True |
| capture_filters | |
| ip_proto | IP_TYPE_TCP |
| enable_kdump | False |
| benchmark_layer | SE_BENCHMARK_LAYER_NONE |
| benchmark_action | SE_BENCHMARK_MODE_DROP |
| benchmark_option | SE_BENCHMARK_REFLECT_SWAP_L4 |
| benchmark_rss_hash | SE_BENCHMARK_DISABLE_HASH |
| enable_rpc_timing_profiler | False |
| tenant_ref | admin |
+—————————————-+——————————+
admin:10-91-9-181: >

この状態で、Client から Server へアクセスを行った後、下記コマンドにてパケットキャプチャを停止します。

 [admin:10-91-9-181]: > debug serviceengine 10.91.9.182 (対象の Service Engine を指定)
 [admin:10-91-9-181]: debugserviceengine> no capture (キャプチャを無効にします。)
 [admin:10-91-9-181]: debugserviceengine> save (キャプチャを停止します)

以上、ALB 環境におけるパケットキャプチャの取得方法について、VIP および SE をターゲットに UI / CLI での操作方法を共有させていただきました。
これから ALB の利用をご検討いただいている方、そして既に ALB を運用いただいている方には、Troubleshooting 時などの参考情報になるかと思っており、本記事が少しでもお役に立てれば嬉しいです。

明日の Advent Calendar は、Toshihisa Noguchi さんです。
vExperts Advent Calendar 2025

[参考情報]
Capturing Virtual Service Traffic using CLI/UI
Capturing SE Traffic using UI/CLI
VMware Avi Load Balancer Release Notifications

カテゴリー: ANS, VCF タグ: Advent Calendar, packet capture, traffic capture, vExpert, トラフィックキャプチャ, パケットキャプチャ

最初のサイドバー

  • RSS
  • Twitter
vExpert Badge
vExpert Badge

© 2025 cjnotes All Rights Reserved.