今回は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の名前を取得します。
[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のインスタンス名を取得します。
[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.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.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を取得します。
[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>コマンドを実行します。
[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>コマンドを実行します。
[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の名前を取得します。
[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のインスタンス名を取得します。
[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.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.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
コメント