NSX-T DR経由の通信のトラブルシューティング

今回はNSX-TのDR経由の仮想マシン間の通信が失敗する際に、どこまでパケットが届いているかを調査する手順をまとめました。

 

検証結果

検証内容、構成

Tier-1 GWのDRにSegment 1とSegment 2を収容し、10.1.1.0/24と10.2.2.0/24間で通信できるようにします。

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

 

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


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 10.2.2.3 255.255.255.0
!
ip route 0.0.0.0 0.0.0.0 10.2.2.254
            

 

キャプチャポイント①

まずは、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:8802
  Client                         PortID          DVPortID                             MAC                  Uplink
  Management                     100663401                                            00:00:00:00:00:00    n/a
  vmnic0                         2248147050      1                                    00:00:00:00:00:00
  Shadow of vmnic0               100663403                                            00:50:56:50:98:d7    n/a
  vmk10                          100663404       d452743c-7a3f-423e-b8ac-ebd4b019d6c4 00:50:56:6e:11:02    vmnic0
  vmk50                          100663405       8e7abf1f-f706-4c70-9311-db8a49eb0028 00:50:56:68:41:6d    void
  vdr-vdrPort                    100663406       vdrPort                              02:50:56:56:44:52    vmnic0
  R1.eth1                        100663444       942286b1-b2f0-4d5c-b3b9-181b20cb7e74 00:50:56:b9:98:2c    vmnic0
  R3.eth1                        100663452       3ff8b8e4-23ba-434b-afaa-ed8f1b6f4534 00:50:56:b9:4e:1b    vmnic0
            

 

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

ESXi1

[root@esxi1:~] summarize-dvfilter| grep -A 2 R1
world 2116638 vmm0:R1 vcUuid:'50 39 56 48 7d 8f 78 0b-e7 a0 09 89 e1 fc 1d 13'
 port 67108894 R1
  vNic slot 2
   name: nic-2116638-eth0-vmware-sfw.2
--
 port 100663444 R1.eth1
  vNic slot 2
   name: nic-2116638-eth1-vmware-sfw.2
--
 port 67108892 R1
  vNic slot 2
   name: nic-2116638-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-2116638-eth1-vmware-sfw.2 stage pre expression ipproto 0x01

07:05:49.137026 00:50:56:b9:98:2c > 02:50:56:56:44:52, ethertype IPv4 (0x0800), length 114: 10.1.1.1 > 10.2.2.3: ICMP echo request, id 175, 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-2116638-eth1-vmware-sfw.2 stage post expression ipproto 0x01

07:06:23.296544 00:50:56:b9:98:2c > 02:50:56:56:44:52, ethertype IPv4 (0x0800), length 114: 10.1.1.1 > 10.2.2.3: ICMP echo request, id 176, seq 0, length 80
            

 

キャプチャポイント③

vDSからVDRカーネルモジュールにパケットが転送されているか確認します。

 

最初にnsxdp-cli vswitch insntace listコマンドを使用して、vDSのvdrPortと接続している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:8802
  Client                         PortID          DVPortID                             MAC                  Uplink
  Management                     100663401                                            00:00:00:00:00:00    n/a
  vmnic0                         2248147050      1                                    00:00:00:00:00:00
  Shadow of vmnic0               100663403                                            00:50:56:50:98:d7    n/a
  vmk10                          100663404       d452743c-7a3f-423e-b8ac-ebd4b019d6c4 00:50:56:6e:11:02    vmnic0
  vmk50                          100663405       8e7abf1f-f706-4c70-9311-db8a49eb0028 00:50:56:68:41:6d    void
  vdr-vdrPort                    100663406       vdrPort                              02:50:56:56:44:52    vmnic0
  R1.eth1                        100663444       942286b1-b2f0-4d5c-b3b9-181b20cb7e74 00:50:56:b9:98:2c    vmnic0
  R3.eth1                        100663452       3ff8b8e4-23ba-434b-afaa-ed8f1b6f4534 00:50:56:b9:4e:1b    vmnic0
            

 

vDSからVDRカーネルモジュールに転送されたパケットをキャプチャするために--dir=1オプションを指定し、pktcap-uw --switchport <VDRカーネルモジュールのポートID>コマンドを実行します。

ESXi1

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

07:06:59.904523 IP 10.1.1.1 > 10.2.2.3: ICMP echo request, id 177, seq 0, length 80
            

 

キャプチャポイント④

VDRカーネルモジュールからvDSにパケットが転送されているか確認します。

 

VDRカーネルモジュールからvDSに転送されたパケットをキャプチャするために--dir=0オプションを指定し、pktcap-uw --switchport <VDRカーネルモジュールのポートID>コマンドを実行します。

ESXi1

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

07:07:33.712839 IP 10.1.1.1 > 10.2.2.3: ICMP echo request, id 178, seq 0, length 80
            

 

キャプチャポイント⑤

vDSからR3に転送されたパケットが分散FWに着信しているか確認します。

 

最初にnsxdp-cli vswitch insntace listコマンドを使用して、R3の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:8802
  Client                         PortID          DVPortID                             MAC                  Uplink
  Management                     100663401                                            00:00:00:00:00:00    n/a
  vmnic0                         2248147050      1                                    00:00:00:00:00:00
  Shadow of vmnic0               100663403                                            00:50:56:50:98:d7    n/a
  vmk10                          100663404       d452743c-7a3f-423e-b8ac-ebd4b019d6c4 00:50:56:6e:11:02    vmnic0
  vmk50                          100663405       8e7abf1f-f706-4c70-9311-db8a49eb0028 00:50:56:68:41:6d    void
  vdr-vdrPort                    100663406       vdrPort                              02:50:56:56:44:52    vmnic0
  R1.eth1                        100663444       942286b1-b2f0-4d5c-b3b9-181b20cb7e74 00:50:56:b9:98:2c    vmnic0
  R3.eth1                        100663452       3ff8b8e4-23ba-434b-afaa-ed8f1b6f4534 00:50:56:b9:4e:1b    vmnic0
            

 

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

ESXi1

[root@esxi1:~] summarize-dvfilter | grep -A 2 R3
world 2116860 vmm0:R3 vcUuid:'50 39 07 4b fe 2c c7 27-37 a6 60 40 39 fa dd 1d'
 port 67108897 R3
  vNic slot 2
   name: nic-2116860-eth0-vmware-sfw.2
--
 port 100663452 R3.eth1
  vNic slot 2
   name: nic-2116860-eth1-vmware-sfw.2
--
 port 67109015 R3
  vNic slot 2
   name: nic-2116860-eth2-vmware-sfw.2
            

 

最後に、start capture dvfilter <分散FWのインスタンス名> stage preコマンドを使用して、分散FWに着信したパケットをキャプチャします。

ESXi1(NSX-T CLI)

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

07:08:45.745489 02:50:56:56:44:52 > 00:50:56:b9:4e:1b, ethertype IPv4 (0x0800), length 114: 10.1.1.1 > 10.2.2.3: ICMP echo request, id 179, seq 0, length 80
            

 

キャプチャポイント⑥

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

 

start capture dvfilter <分散FWのインスタンス名> stage postコマンドで分散FWが転送したパケットをキャプチャします。

ESXi1(NSX-T CLI)

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

07:09:15.749840 02:50:56:56:44:52 > 00:50:56:b9:4e:1b, ethertype IPv4 (0x0800), length 114: 10.1.1.1 > 10.2.2.3: ICMP echo request, id 180, seq 0, length 80
            

コメント

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