NSX-T 物理ネットワークと仮想ネットワーク間の通信のトラブルシューティング

今回は物理ネットワークとNSX-Tの仮想ネットワーク間の通信が失敗する際に、どこまでパケットが届いているかを調査する手順をまとめました。

 

検証結果

検証内容、構成

ESXi1にNSX Edge1をデプロイします。
ESXi1にデプロイしたNSX Edge1にTier-0 GWのSRを配置し、NSX-Tの仮想ネットワークに存在するR1と物理ネットワークに存在するR2間で通信できるようにします。

アンダーレイの物理スイッチではGeneveの通信をVLAN 100、物理ネットワークとNSX-Tの仮想ネットワーク間の通信をVLAN 200に収容します。

R1からR2へICMP Echoパケットを転送している状況で、以下の①~⑬においてパケットキャプチャを実施します。

 

ネットワーク機器のCLIの設定


vlan 100,200
!
interface GigabitEthernet1/0/1
switchport access vlan 100
switchport mode access
!
interface GigabitEthernet1/0/11
switchport trunk allowed vlan 100,200
switchport mode trunk
!
interface GigabitEthernet1/0/12
switchport access vlan 200
switchport mode access
            


interface GigabitEthernet2
 ip address 10.1.1.1 255.255.255.0
!
ip route 0.0.0.0 0.0.0.0 10.1.1.254
            


interface GigabitEthernet2
ip address 20.1.1.100 255.255.255.0
!
ip route 0.0.0.0 0.0.0.0 20.1.1.1
            

 

キャプチャポイント①

まずは、R1が送信したトラフィックがR1のvNICとvDSの間に存在する分散FWに届いているか確認します。

 

最初にnsxdp-cli vswitch insntace listコマンドを実行し、R1のvNICの名前を取得します。

ESXi1

[root@esxi1:~] nsxdp-cli vswitch instance list
DvsPortset-0 (NSX-vDS1)          50 39 f6 94 fd 3c 10 e9-a4 8c d1 52 de bd b4 2e
Total Ports:8836 Available:8806
  Client                         PortID          DVPortID                             MAC                  Uplink
  Management                     67108870                                             00:00:00:00:00:00    n/a
  vmnic0                         2214592523      1                                    00:00:00:00:00:00
  Shadow of vmnic0               67108876                                             00:50:56:50:98:d7    n/a
  vmk10                          67108899        e45ea600-5728-46c8-b013-62ea0eb581ff 00:50:56:67:ad:47    vmnic0
  vmk50                          67108900        7fd33d7d-c25e-49dd-9f8c-16861d5f9197 00:50:56:6e:91:b5    void
  vdr-vdrPort                    67108901        vdrPort                              02:50:56:56:44:52    vmnic0
  R1.eth1                        67108902        9e880e6a-9168-495e-9db9-bf352bbe0b07 00:50:56:b9:98:2c    vmnic0
            

 

次に、summarize-dvfilterコマンドを実行し、R1のvNICとvDS間に存在する分散FWのインスタンス名を取得します。

ESXi1

[root@esxi1:~] summarize-dvfilter| grep -A 2 R1
world 2103565 vmm0:R1 vcUuid:'50 39 56 48 7d 8f 78 0b-e7 a0 09 89 e1 fc 1d 13'
 port 134217758 R1
  vNic slot 2
   name: nic-2103565-eth0-vmware-sfw.2
--
 port 67108902 R1.eth1
  vNic slot 2
   name: nic-2103565-eth1-vmware-sfw.2
--
 port 134217756 R1
  vNic slot 2
   name: nic-2103565-eth2-vmware-sfw.2
            

 

最後に、nsxcliコマンドを使用してNSX-T専用のCLIに移動します。その後、start capture dvfilter <分散FWのインスタンス名> stage preコマンドを実行し、分散FWに着信したパケットをキャプチャします。

ESXi1(NSX-T CLI)

esxi1.local.com> start capture dvfilter nic-2103565-eth1-vmware-sfw.2 stage pre expression ipproto 0x01

01:05:38.924609 00:50:56:b9:98:2c > 02:50:56:56:44:52, ethertype IPv4 (0x0800), length 114: 10.1.1.1 > 20.1.1.100: ICMP echo request, id 21, seq 0, length 80
            

 

キャプチャポイント②

分散FWがvDSにパケットを転送しているか確認します。もしパケットが確認できない場合は、分散FWでパケットが破棄されていることになります。

 

分散FWで処理され、転送されたパケットはstart capture dvfilter <分散FWのインスタンス名> stage postコマンドでキャプチャ可能です。

ESXi1(NSX-T CLI)

esxi1.local.com> start capture dvfilter nic-2103565-eth1-vmware-sfw.2 stage post expression ipproto 0x01

01:05:59.497060 00:50:56:b9:98:2c > 02:50:56:56:44:52, ethertype IPv4 (0x0800), length 114: 10.1.1.1 > 20.1.1.100: ICMP echo request, id 22, seq 0, length 80
            

 

キャプチャポイント③

vDSからTier-1 GWのDRにパケットが転送されているか確認します。

 

最初に、ESXi1でget logical-switchesコマンドを実行し、R1のvNICが接続しているSegmentのVNIを確認します。

ESXi1(NSX-T CLI)

esxi1.local.com> get logical-switches
                  Logical Switches Summary
------------------------------------------------------------

                    Overlay Kernel Entry
============================================================
  VNI                    DVS name                 VIF num
 65536                   NSX-vDS1                    2
 65538                   NSX-vDS1                    1

                     Overlay LCP Entry
============================================================
  VNI              Logical Switch UUID              Name
 65537     1548cf7e-c69a-4813-839a-2c5794c1b533   transit-rl-a25aa19c-faf7-4598-9ea4-4239599e3495
 65538     221a7d12-c45b-4589-94c9-85401b1744ca   transit-bp-031757a6-06d8-44bb-9e06-1ba1ac0e78c1
 65536     aed9a131-8547-43a4-b747-72d21de2da77   Segment1

                     VLAN Backed Entry
============================================================
          Logical Switch UUID            VLAN ID
            

 

次にnsxdp-cli vswitch insntace listコマンドを実行し、VDRカーネルモジュールのポートIDを確認します。

ESXi1

[root@esxi1:~] nsxdp-cli vswitch instance list
DvsPortset-0 (NSX-vDS1)          50 39 f6 94 fd 3c 10 e9-a4 8c d1 52 de bd b4 2e
Total Ports:8836 Available:8806
  Client                         PortID          DVPortID                             MAC                  Uplink
  Management                     67108870                                             00:00:00:00:00:00    n/a
  vmnic0                         2214592523      1                                    00:00:00:00:00:00
  Shadow of vmnic0               67108876                                             00:50:56:50:98:d7    n/a
  vmk10                          67108899        e45ea600-5728-46c8-b013-62ea0eb581ff 00:50:56:67:ad:47    vmnic0
  vmk50                          67108900        7fd33d7d-c25e-49dd-9f8c-16861d5f9197 00:50:56:6e:91:b5    void
  vdr-vdrPort                    67108901        vdrPort                              02:50:56:56:44:52    vmnic0
  R1.eth1                        67108902        9e880e6a-9168-495e-9db9-bf352bbe0b07 00:50:56:b9:98:2c    vmnic0
            

 

Segment 1(VNI 65536)において、vDSからVDRカーネルモジュールに転送されたパケットを確認するために、--vni=65536オプションと--dir=1オプションを指定し、pktcap-uw --switchport <VDRカーネルモジュールのポートID>コマンドを実行します。

ESXi1

[root@esxi1:~] pktcap-uw --switchport 67108901 --vni=65536 --dir=1 -o - | tcpdump-uw -r - -nn
The switch port id is 0x04000025.
The vni is 65536.
pktcap: The output file is -.
pktcap: No server port specifed, select 46389 as the port.
pktcap: Local CID 2.
pktcap: Listen on port 46389.
reading from file -, link-type EN10MB (Ethernet)
pktcap: Accept...
pktcap: Vsock connection from port 1041 cid 2.

01:10:06.144160 IP 10.1.1.1 > 20.1.1.100: ICMP echo request, id 25, seq 0, length 80
            

 

キャプチャポイント④

Tier-1 GWのDRからvDSにパケットが転送されているか確認します。

 

Transit RL(VNI 65537)において、VDRカーネルモジュールからvDSに転送されたパケットを確認するために、--vni=65537オプションと--dir=0オプションを指定し、pktcap-uw --switchport <VDRカーネルモジュールのポートID>コマンドを実行します。

ESXi1

[root@esxi1:~] pktcap-uw --switchport 67108901 --vni=65537 --dir=0 -o - | tcpdump-uw -r - -nn
The switch port id is 0x04000025.
The vni is 65537.
pktcap: The output file is -.
pktcap: No server port specifed, select 46513 as the port.
pktcap: Local CID 2.
pktcap: Listen on port 46513.
pktcap: Accept...
reading from file -, link-type EN10MB (Ethernet)
pktcap: Vsock connection from port 1042 cid 2.

01:10:56.778859 IP 10.1.1.1 > 20.1.1.100: ICMP echo request, id 26, seq 0, length 80
            

 

キャプチャポイント⑤

vDSからTier-0 GWのDRにパケットが転送されているか確認します。

 

Transit RL(VNI 65537)において、vDSからVDRカーネルモジュールに転送されたパケットを確認するために、--vni=65537オプションと--dir=1オプションを指定し、pktcap-uw --switchport <VDRカーネルモジュールのポートID>コマンドを実行します。

ESXi1

[root@esxi1:~] pktcap-uw --switchport 67108901 --vni=65537 --dir=1 -o - | tcpdump-uw -r - -nn
The switch port id is 0x04000025.
The vni is 65537.
pktcap: The output file is -.
pktcap: No server port specifed, select 46565 as the port.
pktcap: Local CID 2.
pktcap: Listen on port 46565.
reading from file -, link-type EN10MB (Ethernet)
pktcap: Accept...
pktcap: Vsock connection from port 1043 cid 2.
01:11:29.920432 IP 10.1.1.1 > 20.1.1.100: ICMP echo request, id 27, seq 0, length 80
            

 

キャプチャポイント⑥

Tier-0 GWのDRからvDSにパケットが転送されているか確認します。

 

Transit BP(VNI 65538)において、VDRカーネルモジュールからvDSに転送されたパケットを確認するために、--vni=65538オプションと--dir=0オプションを指定し、pktcap-uw --switchport <VDRカーネルモジュールのポートID>コマンドを実行します。

ESXi1

[root@esxi1:~] pktcap-uw --switchport 67108901 --vni=65538 --dir=0 -o - | tcpdump-uw -r - -nn
The switch port id is 0x04000025.
The vni is 65538.
pktcap: The output file is -.
pktcap: No server port specifed, select 46621 as the port.
pktcap: Local CID 2.
pktcap: Listen on port 46621.
reading from file -, link-type EN10MB (Ethernet)
pktcap: Accept...
pktcap: Vsock connection from port 1044 cid 2.

01:12:13.997556 IP 10.1.1.1 > 20.1.1.100: ICMP echo request, id 28, seq 0, length 80
            

 

キャプチャポイント⑦

ESXi1のvmnic0から物理ネットワーク側にパケットが転送されているか確認します。

 

vmnic0から物理ネットワーク側に転送されるパケットのカプセル化前の状態を確認するために、--dir=1オプションと--stage=0オプションを指定し、pktcap-uw --uplink <vmnicの名前>コマンドを実行します。

ESXi1

[root@esxi1:~] pktcap-uw --uplink vmnic0 --dir=1 --stage=0 -o - | tcpdump-uw -r - -nn
The name of the uplink is vmnic0.
The Stage is Pre.
pktcap: The output file is -.
pktcap: No server port specifed, select 46697 as the port.
pktcap: Local CID 2.
pktcap: Listen on port 46697.
reading from file -, link-type EN10MB (Ethernet)
pktcap: Accept...
pktcap: Vsock connection from port 1045 cid 2.

01:13:03.817248 IP 10.1.1.1 > 20.1.1.100: ICMP echo request, id 29, seq 0, length 80
            

 

vmnic0から物理ネットワーク側に転送されるパケットのカプセル化後の状態を確認するために、--dir=1オプションと--stage=1オプションを指定し、pktcap-uw --uplink <vmnicの名前>コマンドを実行します。

ESXi1

[root@esxi1:~] pktcap-uw --uplink vmnic0 --dir=1 --stage=1 -o - | tcpdump-uw -r - -nn
The name of the uplink is vmnic0.
The Stage is Post.
pktcap: The output file is -.
pktcap: No server port specifed, select 46735 as the port.
pktcap: Local CID 2.
pktcap: Listen on port 46735.
reading from file -, link-type EN10MB (Ethernet)
pktcap: Accept...
pktcap: Vsock connection from port 1046 cid 2.

01:13:35.520540 IP 172.16.1.101.58594 > 172.16.1.121.6081: Geneve, Flags [C], vni 0x10002, options [8 bytes]: IP 10.1.1.1 > 20.1.1.100: ICMP echo request, id 30, seq 0, length 80
            

 

キャプチャポイント⑧

物理ネットワーク側からESXi1のvmnic1にGeneveパケットが着信しているか確認します。

 

物理ネットワーク側からvmnicに着信したパケットをキャプチャするために、--dir=0オプションを指定してpktcap-uw --uplink <vmnicの名前>コマンドを実行します。

ESXi1

[root@esxi1:~] pktcap-uw --uplink vmnic1 --dir=0 -o - | tcpdump-uw -r - -nn
The name of the uplink is vmnic1.
The Stage is Pre.
pktcap: The output file is -.
pktcap: No server port specifed, select 46773 as the port.
pktcap: Local CID 2.
pktcap: Listen on port 46773.
reading from file -, link-type EN10MB (Ethernet)
pktcap: Accept...
pktcap: Vsock connection from port 1047 cid 2.

01:14:10.632920 IP 172.16.1.101.58594 > 172.16.1.121.6081: Geneve, Flags [C], vni 0x10002, options [8 bytes]: IP 10.1.1.1 > 20.1.1.100: ICMP echo request, id 31, seq 0, length 80
            

 

キャプチャポイント⑨

NSX Edge1のfp-eth0にGeneveパケットが着信しているか確認します。

 

NSX Edgeではstart capture interface <インタフェース名 or ID>コマンドを使用することで、各種ポイントでパケットキャプチャ可能です。今回はfp-eth0に着信したパケットをキャプチャするために、direction inputオプションを指定してstart capture interface <インタフェース名 or ID>コマンドを実行します。

NSX Edge1

edge1> start capture interface fp-eth0 direction input
01:17:40.500493 00:50:56:67:ad:47 > 00:50:56:b9:6a:a1, ethertype IPv4 (0x0800), length 172: 172.16.1.101.58594 > 172.16.1.121.6081: Geneve, Flags [C], vni 0x10002, proto TEB (0x6558), options [8 bytes]: 02:50:56:56:44:52 > 02:50:56:56:53:00, ethertype IPv4 (0x0800), length 114: 10.1.1.1 > 20.1.1.100: ICMP echo request, id 33, seq 0, length 80
<base64>AFBWuWqhAFBWZ61HCABFAACeAABAAEAR31CsEAFlrBABeeTiF8EAimX6AkBlWAEAAgABBIABAQAEAAJQVlZTAAJQVlZEUggARQAAZABRAAD9AZzhCgEBARQBAWQIAMkZACEAAAAAAAAOI6bsq82rzavNq82rzavNq82rzavNq82rzavNq82rzavNq82rzavNq82rzavNq82rzavNq82rzavNq82rzavNq82rzQ==</base64>
            

 

キャプチャポイント⑩

N-VDSからTier-0 GWのSRにパケットが転送されているか確認します。

 

最初に、get logical-routersコマンドを実行し、Tier-0 GWのSRのUUIDを確認します。

ESXi1(NSX-T CLI)

edge1> get logical-routers
Logical Router
UUID                                   VRF  LR-ID  Name          Type                      Ports
736a80e3-23f6-5a2d-81d6-bbefb2786666   0    0                    TUNNEL                    3
e75612f1-c47a-497f-b747-692d2c1071c2   9    3076   SR-Tier-0_GW  SERVICE_ROUTER_TIER0      5
a25aa19c-faf7-4598-9ea4-4239599e3495   11   3073   DR-Tier-1_GW  DISTRIBUTED_ROUTER_TIER1  5
031757a6-06d8-44bb-9e06-1ba1ac0e78c1   12   3074   DR-Tier-0_GW  DISTRIBUTED_ROUTER_TIER0  4
            

 

次に、get logical-router <UUID> interfacesコマンドを実行し、Transit BPと接続しているTier-0 GWのSRのインタフェースのUUIDを確認します。

ESXi1(NSX-T CLI)

edge1> get logical-router e75612f1-c47a-497f-b747-692d2c1071c2 interfaces
Logical Router
UUID                                 VRF  LR-ID  Name          Type
031757a6-06d8-44bb-9e06-1ba1ac0e78c1 12   3074   DR-Tier-0_GW  DISTRIBUTED_ROUTER_TIER0
Interfaces (IPv6 DAD Status A-Assigned, D-Duplicate, T-Tentative)
    Interface     : 6cea79e6-2974-5b53-b968-02e3e866df71
    .
    <一部省略>
    .
Logical Router
UUID                                  VRF  LR-ID  Name          Type
e75612f1-c47a-497f-b747-692d2c1071c2  9    3076   SR-Tier-0_GW  SERVICE_ROUTER_TIER0
Interfaces (IPv6 DAD Status A-Assigned, D-Duplicate, T-Tentative)
    Interface     : d27fa42b-74da-5912-a5e1-be23dbddc665
    .
    <一部省略>
    .
    Interface     : c677d6f1-9dc1-40c6-9c61-0cbf45ff1efa
    Ifuid         : 327
    Name          : bp-sr0-port
    Fwd-mode      : IPV4_ONLY
    Internal name : downlink-327
    Mode          : lif
    Port-type     : backplane
    IP/Mask       : 169.254.0.2/24;fe80::50:56ff:fe56:5300/64(NA)
    MAC           : 02:50:56:56:53:00
    VNI           : 65538
    Access-VLAN   : None
    LS port       : bea48d48-20e0-47bf-a694-0b93f932a6b3
    Urpf-mode     : NONE
    DAD-mode      : LOOSE
    RA-mode       : RA_INVALID
    Admin         : up
    Op_state      : up
    MTU           : 1500
            

 

Transit BPにおいて、Tier-0 GWのSRに着信したパケットをキャプチャするために、direction inputオプションを指定してstart capture interface <インタフェース名 or ID>コマンドを実行します。

NSX Edge1

edge1> start capture interface c677d6f1-9dc1-40c6-9c61-0cbf45ff1efa direction input expression ipproto 0x01
01:22:31.454187 02:50:56:56:44:52 > 02:50:56:56:53:00, ethertype IPv4 (0x0800), length 114: 10.1.1.1 > 20.1.1.100: ICMP echo request, id 34, seq 0, length 80
<base64>AlBWVlMAAlBWVkRSCABFAABkAFIAAP0BnOAKAQEBFAEBZAgAWIsAIgAAAAAAAA4oF3WrzavNq82rzavNq82rzavNq82rzavNq82rzavNq82rzavNq82rzavNq82rzavNq82rzavNq82rzavNq82rzavN</base64>
            

 

キャプチャポイント⑪

Tier-0 GWのSRからN-VDSにパケットが転送されているか確認します。

 

最初に、get logical-router <UUID> interfacesコマンドを実行し、Tier-0 GWのSRのUplink用のインタフェースのUUIDを確認します。

ESXi1(NSX-T CLI)

edge1> get logical-router e75612f1-c47a-497f-b747-692d2c1071c2 interfaces
Logical Router
UUID                                 VRF  LR-ID  Name          Type
031757a6-06d8-44bb-9e06-1ba1ac0e78c1 12   3074   DR-Tier-0_GW  DISTRIBUTED_ROUTER_TIER0
Interfaces (IPv6 DAD Status A-Assigned, D-Duplicate, T-Tentative)
    Interface     : 6cea79e6-2974-5b53-b968-02e3e866df71
    .
    <一部省略>
    .
Logical Router
UUID                                  VRF  LR-ID  Name          Type
e75612f1-c47a-497f-b747-692d2c1071c2  9    3076   SR-Tier-0_GW  SERVICE_ROUTER_TIER0
Interfaces (IPv6 DAD Status A-Assigned, D-Duplicate, T-Tentative)
    Interface     : d27fa42b-74da-5912-a5e1-be23dbddc665
    .
    <一部両略>
    .
    Interface     : 8d96d39b-ff32-48d8-9857-52d660fff25b
    Ifuid         : 325
    Name          : Ext_Uplink1
    Fwd-mode      : IPV4_ONLY
    Internal name : uplink-325
    Mode          : lif
    Port-type     : uplink
    IP/Mask       : 20.1.1.1/24
    MAC           : 00:50:56:b9:a7:b2
    VLAN          : None
    Access-VLAN   : None
    LS port       : ed8c4670-1f7a-4039-ad9c-15f55c4d3553
    Urpf-mode     : STRICT_MODE
    DAD-mode      : LOOSE
    RA-mode       : SLAAC_DNS_TRHOUGH_RA(M=0, O=0)
    Admin         : up
    Op_state      : up
    MTU           : 1500
    .
    <一部両略>
            

 

Tier-0 GWのSRのUplinkから送信されたパケットをキャプチャするために、direction outputオプションを指定してstart capture interface <インタフェース名 or ID>コマンドを実行します。

NSX Edge1

edge1> start capture interface 8d96d39b-ff32-48d8-9857-52d660fff25b direction output expression ipproto 0x01
01:23:05.654790 00:50:56:b9:a7:b2 > 58:97:bd:b7:4f:29, ethertype IPv4 (0x0800), length 114: 10.1.1.1 > 20.1.1.100: ICMP echo request, id 35, seq 0, length 80
<base64>WJe9t08pAFBWuaeyCABFAABkAFMAAP0BnN8KAQEBFAEBZAgA0vEAIwAAAAAAAA4onQ2rzavNq82rzavNq82rzavNq82rzavNq82rzavNq82rzavNq82rzavNq82rzavNq82rzavNq82rzavNq82rzavN</base64>
            

 

キャプチャポイント⑫

NSX Edge1のfp-eth1からESXi1のvDSにパケットが転送されているか確認します。

 

NSX Edge1のfp-eth1から送信されたパケットをキャプチャするために、direction outputオプションを指定してstart capture interface <インタフェース名 or ID>コマンドを実行します。

NSX Edge1

edge1> start capture interface fp-eth1 direction output expression ipproto 0x01
01:24:14.743560 00:50:56:b9:a7:b2 > 58:97:bd:b7:4f:29, ethertype IPv4 (0x0800), length 114: 10.1.1.1 > 20.1.1.100: ICMP echo request, id 36, seq 0, length 80
<base64>WJe9t08pAFBWuaeyCABFAABkAFQAAP0BnN4KAQEBFAEBZAgAxRAAJAAAAAAAAA4pquyrzavNq82rzavNq82rzavNq82rzavNq82rzavNq82rzavNq82rzavNq82rzavNq82rzavNq82rzavNq82rzavN</base64>
            

 

キャプチャポイント⑬

ESXi1のvmnic1から物理ネットワーク側に転送されているか確認します。

 

vmnic1から物理ネットワーク側に転送されたパケットをキャプチャするために、--dir=1オプションを指定してpktcap-uw --uplink <vmnicの名前>コマンドを実行します。

ESXi1

[root@esxi1:~] pktcap-uw --uplink vmnic1 --dir=1 -o - | tcpdump-uw -r - -nn
The name of the uplink is vmnic1.
pktcap: The output file is -.
pktcap: No server port specifed, select 47716 as the port.
pktcap: Local CID 2.
pktcap: Listen on port 47716.
reading from file -, link-type EN10MB (Ethernet)
pktcap: Accept...
pktcap: Vsock connection from port 1051 cid 2.
01:27:08.836346 IP 10.1.1.1 > 20.1.1.100: ICMP echo request, id 40, seq 0, length 80
            

コメント

タイトルとURLをコピーしました