Cisco実機で学ぶBGP EVPN VXLAN(第2回):パケットキャプチャで見るL2通信の裏側

前回の記事では、BGP EVPN VXLANの基本的なL2ネットワークを構築し、各プロトコルが正常に動作していることを確認いたしました。

Cisco実機で学ぶBGP EVPN VXLAN(第1回):基本のL2ネットワーク構築編 - JBS Tech Blog

本記事では、その続きとして、クライアント間で通信が発生した際に、データがどのようにVXLANパケットとしてカプセル化され、ネットワーク上を転送されるのかを実証します。

Cisco IOS-XEに標準搭載されているmonitor capture機能を活用し、Leafスイッチを通過するパケットを直接確認することで、VXLANの動作メカニズムに対する理解を深めます。

検証環境の概要

本記事においても、第1回記事で構築したSpine-Leaf構成のEVPN-VXLANネットワークを使用します。本設定は記事掲載の目的で設計したものであり、実際の運用環境とは異なります。詳細なコンフィグは一回目の記事をご参照ください。

Spine: C9300-48S
Leaf × 2: C9300L-48P-4X
Client × 2: WS-C3750X-24T-S (VLAN 101)
OSバージョン: IOS-XE 17.18.01

VTEP IPアドレスおよびVNIは以下の設定に基づきます。

VTEP IP (Loopback1):
Leaf1: 192.168.0.1/32
Leaf2: 192.168.0.2/32
VNI: 10001
Client IP:
Client1: 192.168.101.1/24 (MAC: 00:00:5E:00:53:03 )
Client2: 192.168.101.2/24 (MAC: 00:00:5E:00:53:01)

パケットキャプチャの事前確認

キャプチャポイント

今回は、Client1からClient2への通信を想定し、Leaf2のSpine向けアップリンクインターフェース(GigabitEthernet1/0/1)でパケットをキャプチャします。

このポイントを取得することで、Leaf1からカプセル化されて送られてきたVXLANパケットがLeaf2に到着し、デカプセル化される直前の状態を確認することが可能です。

クライアントエントリー

キャプチャを行う前に、Leaf2にコンソールで接続して以下のコマンドを実行します。BGP EVPN経由でClient1のMAC/IPアドレスを正しく学習していることを確認します。

Leaf2#show l2vpn evpn mac
MAC Address    EVI   VLAN  ESI                      Ether Tag  Next Hop(s)
-------------- ----- ----- ------------------------ ---------- --------------- 
0000.5E00.5300 101   101   0000.0000.0000.0000.0000 0          Gi1/0/11:101 
0000.5E00.5301 101   101   0000.0000.0000.0000.0000 0          Gi1/0/11:101 
0000.5E00.5302 101   101   0000.0000.0000.0000.0000 0          192.168.0.1 
0000.5E00.5303 101   101   0000.0000.0000.0000.0000 0          192.168.0.1

Leaf2#show l2vpn evpn mac ip
IP Address                              EVI   VLAN  MAC Address    Next Hop(s)
--------------------------------------- ----- ----- -------------- -----------
192.168.101.1                           101   101   0000.5E00.5303 192.168.0.1
192.168.101.2                           101   101   0000.5E00.5301 Gi1/0/11:101

show l2vpn evpn mac ip の出力から、Leaf2は「192.168.101.1 (Client1) が 192.168.0.1 (Leaf1のVTEP IP) の向こうに存在することを認識している」ということが確認されます。

パケットキャプチャの設定

下記設定を使用します。

キャプチャセッションを作成する

bothを指定することで、インターフェースの送受信両方のパケットをキャプチャできます。

monitor capture cap interface GigabitEthernet1/0/1 both

キャプチャしたデータを保存するファイル名を指定する

monitor capture cap file location flash:cap01.pcap

キャプチャするトラフィック対象を指定する

今回はすべてのトラフィックを対象とします。

monitor capture cap match any

設定内容を確認する

Leaf2#show monitor capture cap parameter
monitor capture cap interface GigabitEthernet1/0/1 BOTH
monitor capture cap match any
monitor capture cap file location flash:cap01.pcap

パケットキャプチャの実行と通信テスト

キャプチャを開始する

以下のコマンドでキャプチャを開始します。

Leaf2#monitor capture cap start
Started capture point : cap
*Dec  4 11:11:58.020: %BUFCAP-6-ENABLE: Capture Point cap enabled.

疎通を確認する

Client1 (192.168.101.1) から Client2 (192.168.101.2) へPingを実行します。

Client1#ping 192.168.101.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.101.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/3/8 ms

キャプチャを停止する

以下のコマンドでキャプチャを停止します。

Leaf2#monitor capture cap stop
Capture statistics collected at software:
        Capture duration - 26 seconds
        Packets received - 44
        Packets dropped - 0
        Packets oversized - 0

Bytes dropped in asic - 0

Stopped capture point : cap
*Dec  4 14:47:53.530: %BUFCAP-6-DISABLE: Capture Point cap disabled.

キャプチャリストを出力する

show monitor capture file flash:cap01.pcap コマンドで、取得できたパケットのサマリーを確認します。

Leaf2#show monitor capture file flash:cap01.pcap (ICMPペアのみ抜粋)
Starting the packet display ........ Press Ctrl + Shift + 6 to exit

  ・・・ 
1 2.777996 192.168.101.1 -> 192.168.101.2 ICMP 164 Echo (ping) request id=0x0027, seq=1/256, ttl=255
2 2.780899 192.168.101.2 -> 192.168.101.1 ICMP 164 Echo (ping) reply id=0x0027, seq=1/256, ttl=255 (request in 1)

パケットの詳細

キャプチャしたファイル内の特定パケットの詳細を確認するには、次のコマンドを実行します。

show monitor capture file flash:<ファイル名>.pcap packet-number <パケット番号> detailed

ここでは、前章でキャプチャしたClient1から送信されたPing要求(ICMP Echo Request)に対応するパケット番号1と、その応答であるPing応答(ICMP Echo Reply)を含むパケット番号2のペアを確認します。

これらの通信往復パケットがどのようにカプセル化されているか(Ethernetフレーム、IPヘッダー、ICMPメッセージの構造)を確認することで、プロトコルスタックの階層をより明確に理解できます。

Ping要求パケットを出力する

(Client1 → Client2) の通信に対応する パケット番号1 の出力結果は以下のとおりです。(一部抜粋)

Leaf2#show monitor capture file flash:cap01.pcap packet-number 1 detailed
Starting the packet display ........ Press Ctrl + Shift + 6 to exit

Frame 1: 164 bytes on wire (1312 bits), 164 bytes captured (1312 bits) ...
    [Protocols in frame: eth:ethertype:ip:udp:vxlan:eth:ethertype:ip:icmp:data]
Ethernet II, Src: 00:00:5E:00:53:04 , Dst: 00:00:5E:00:53:05 
    Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 192.168.0.1, Dst: 192.168.0.2
    Source Address: 192.168.0.1 
    Destination Address: 192.168.0.2 
    Protocol: UDP (17)
User Datagram Protocol, Src Port: 65282, Dst Port: 4789
    Destination Port: 4789 
Virtual eXtensible Local Area Network
    VXLAN Network Identifier : 10001
Ethernet II, Src: 00:00:5E:00:53:03 , Dst: 00:00:5E:00:53:01 
    Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 192.168.101.1, Dst: 192.168.101.2
    Source Address: 192.168.101.1 
    Destination Address: 192.168.101.2 
    Protocol: ICMP (1)
Internet Control Message Protocol
    Type: 8 (Echo (ping) request)
   Code: 0

Ping要求パケットを確認する

上記で出力された詳細ログ(packet-number 1 detailed)の各行を、プロトコル階層の上(外側)から順に確認していきます。

Outer Ethernet Header(Underlayの物理転送)

出力の Ethernet II セクションを確認します。

Ethernet II, Src: 00:00:5E:00:53:04 , Dst: 00:00:5E:00:53:05 
    Type: IPv4 (0x0800)

Src: 00:00:5E:00:53:04...Dst: 00:00:5E:00:53:05と表示されており、送信元のSpineのMACから送信先Leaf2のMACへ転送されたことが分かります。これはUnderlayの物理的な経路を示しています。

Outer IP Header(VXLANトンネル)

最初の Internet Protocol Version 4 セクションを確認します。

Internet Protocol Version 4, Src: 192.168.0.1, Dst: 192.168.0.2
  Source Address: 192.168.0.1
  Destination Address: 192.168.0.2
    Protocol: UDP (17)

Src: 192.168.0.1, Dst: 192.168.0.2 とあり、送信元IPはLeaf1のVTEP IP、宛先IPはLeaf2のVTEP IPです。これがVXLANトンネルの両端を示しています。

UDP Header(VXLANのカプセル化識別)

User Datagram Protocol セクションを確認します。

User Datagram Protocol, Src Port: 65282, Dst Port: 4789
  Destination Port: 4789

Dst Port: 4789 と表示されています。宛先ポート4789はVXLANの標準ポートであり、このパケットがVXLANカプセル化されていることを示しています。

VXLAN Header(仮想ネットワーク識別)

Virtual eXtensible Local Area Network セクションを確認します。

Virtual eXtensible Local Area Network
  VXLAN Network Identifier : 10001

VXLAN Network Identifier (VNI): 10001 が含まれています。これにより、このパケットがどの仮想ネットワーク(今回の検証ではVLAN 101)に属するかが識別されます。

Inner Ethernet / IP / ICMP(元の通信データ)

ここから下が、カプセル化された中身(Payload)です。

Ethernet II, Src: 00:00:5E:00:53:03 , Dst: 00:00:5E:00:53:01 
    Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 192.168.101.1, Dst: 192.168.101.2
  Source Address: 192.168.101.1
  Destination Address: 192.168.101.2
    Protocol: ICMP (1)
Internet Control Message Protocol
  Type: 8 (Echo (ping) request)
    Code: 0
  • Inner Ethernet Header:
    • 2つ目の Ethernet II セクションで、Client1のMACからClient2のMACへの通信であることが分かります。
  • Inner IP Header:
    • 2つ目の Internet Protocol Version 4 セクションで、Client1 IP (192.168.101.1) からClient2 IP (192.168.101.2) への通信であることが分かります。
  • Inner ICMP Header:
    • Internet Control Message Protocol セクションの Type: 8 は、これがPing要求(Echo request)であることを示しています。

Ping応答パケットを出力する

同様に、(Client2 → Client1) の返答パケットも確認するので、詳細を出力させます。

 パケット番号2の出力結果は以下のとおりです。(一部抜粋)

Leaf2#show monitor capture file flash:cap01.pcap packet-number 2 detailed
Starting the packet display ........ Press Ctrl + Shift + 6 to exit

Ethernet II, Src: 00:00:5E:00:53:05 , Dst: 00:00:5E:00:53:04
    Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 192.168.0.2, Dst: 192.168.0.1 Source Address: 192.168.0.2 Destination Address: 192.168.0.1      Protocol: UDP (17) User Datagram Protocol, Src Port: 65408, Dst Port: 4789 Destination Port: 4789 Virtual eXtensible Local Area Network VXLAN Network Identifier (VNI): 10001 Ethernet II, Src: 00:00:5E:00:53:01 , Dst: 00:00:5E:00:53:03 Type: IPv4 (0x0800) Internet Protocol Version 4, Src: 192.168.101.2, Dst: 192.168.101.1 Source Address: 192.168.101.2 Destination Address: 192.168.101.1 Protocol: ICMP (1) Internet Control Message Protocol Type: 0 (Echo (ping) reply)
  Code: 0

Ping応答パケットを確認する

Packet 2の出力された結果の詳細を確認します。

Outer Ethernet Header(Underlayの物理転送)

出力の Ethernet II セクションを確認します。

Ethernet II, Src: 00:00:5E:00:53:05 , Dst: 00:00:5E:00:53:04 
    Type: IPv4 (0x0800)

Src: 00:00:5E:00:53:05 ... Dst: 00:00:5E:00:53:04 と表示され、Leaf2の物理MACからSpineの物理MACへ転送されたことが分かります。これはUnderlayの物理的な戻り経路を示しています。

Outer IP Header(VXLANトンネル)

Internet Protocol Version 4 の Src: 192.168.0.2, Dst: 192.168.0.1 を確認します。

Internet Protocol Version 4, Src: 192.168.0.2, Dst: 192.168.0.1
  Source Address: 192.168.0.2
  Destination Address: 192.168.0.1
    Protocol: UDP (17)

送信元がLeaf2、宛先がLeaf1となり、Ping要求とは逆方向に転送されていることが分かります。

UDP Header(VXLANのカプセル化識別)/VXLAN Header(仮想ネットワーク識別)
User Datagram Protocol, Src Port: 65408, Dst Port: 4789
  Destination Port: 4789
Virtual eXtensible Local Area Network
  VXLAN Network Identifier : 10001

Ping要求と同様に、Dst Port: 4789 VNI: 10001 が確認でき、同じVXLANトンネル・同じVNIを使用していることが分かります。

Inner Ethernet / IP / ICMP(元の通信データ)

戻りパケットも同様に中身(Payload)がカプセル化されています。

Ethernet II, Src: 00:00:5E:00:53:01 , Dst: 00:00:5E:00:53:03 
    Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 192.168.101.2, Dst: 192.168.101.1
  Source Address: 192.168.101.2
  Destination Address: 192.168.101.1
    Protocol: ICMP (1)
Internet Control Message Protocol
  Type: 0 (Echo (ping) reply)
    Code: 0
  • IP Header:
    • 送信元がClient2 (192.168.101.2)、宛先がClient1 (192.168.101.1) になっています。
  • ICMP Header:
    • Type: 0 (Echo (ping) reply) となっており、これがPing応答パケットであることを示しています。

まとめ

フロー図

上記パケット詳細を確認し、Client1(192.168.101.1)から Client2(192.168.101.2)への Ping 通信の処理フロー下記の図のように読み取ることができます。

本画像は記事掲載の目的で作成したものであり、実際の運用環境とは異なります。

通信ステップ

フロー図から、通信は以下のステップで進行していることがわかります。分解ステップから、「Encapsulates & Forwards」「Decapsulates & Forwards」が行われ、VXLAN トンネルを介して通信していることが確認できました。

Ping要求送信(Inner)

Client1から Ping 要求が送信されます。

カプセル化と転送(Leaf 1)

Leaf1(VTEP、IP:192.168.0.1)が受信したパケットを VXLAN カプセル化し、Underlayネットワークへ転送します。

Underlayネットワーク経由の転送

カプセル化されたパケットが Underlayネットワークを通過します。

カプセル化解除と転送(Leaf 2)

Leaf2(VTEP、IP:192.168.0.2)がパケットを受信し、VXLAN カプセル化を解除して Client2に転送します。

Ping応答送信(Inner)

Client2から Ping 応答が送信されます。

逆方向の処理

応答パケットは同様の手順で Leaf2 → Underlay → Leaf1 →  Client1 へ戻ります。

最後に

VXLANパケットのカプセル化からネットワーク上での転送、そしてデカプセル化に至るまでの具体的な動作を、実際のパケットキャプチャを用いて可視化・確認することができました。各プロトコルのヘッダ情報を丁寧に追うことで、仕組みより実践的な視点で理解できました。

ネットワーク設計やトラブルシューティングの現場では、単なる設定だけでなく、パケットレベルでの挙動理解が重要です。本記事の内容が、EVPN VXLANの理解や、現場でのデバッグ作業に役立つ一助となれば幸いです。

次回は、さらに一歩踏み込んでL3 EVPN(異なるVLAN間でのルーティング)について、構築手順や実際の通信動作を検証します。

執筆担当者プロフィール
鄭 秋怡

鄭 秋怡(日本ビジネスシステムズ株式会社)

CTS本部 SNIに所属の鄭です。エンタープライズのお客さまに向けて、ネットワークの設計、構築、検証などを経験してきました。現在はネットワーク機器メーカーのお客さま先に常駐し、技術支援を担当しています。

担当記事一覧