NSX トレースフローを使って接続のトラブルシューティングを行う

# はじめに
<!-- 発端や概要を記載 -->
VMware Cloud on AWS（VMC）では、SDDC バージョン 1.16 より NSX Manager の User Interface へのアクセスができるようになっています。
この NSX Manager UI から トレースフロー（Traceflow）という機能ができ、SDDC から、もしくは SDDC への通信のトラブルシューティングやネットワークトポロジーの確認が行えます。

今回は VMC から Traceflow を使ってみます。

# 目次
<!-- タイトルとアンカー名を編集 -->
1. [トレースフローとは](#トレースフローとは)
1. [VMCでトレースフローが利用できるようになった](#vmcでトレースフローが利用できるようになった)
1. [トレースフローを利用してみる](#トレースフローを利用してみる)
1. [まとめ](#まとめ)
1. [参考文献](#参考文献)

<!-- 各チャプター -->
# トレースフローとは

NSX-T には、仮想ネットワークの構築だけでなく、日々の運用を簡単にする様々な機能があります。その中の機能の一つとして、トレースフロー（Traceflow）があります。これを利用し、仮想ネットワーク上での疎通を確認することができます。

> トレースフローを使用すると、ネットワークにパケットを挿入し、ネットワーク全体のフローを監視できます。このフローにより、ネットワークを監視し、ボトルネックや中断などの問題を特定できます。
> トレースフローにより、パケットが宛先に到達するまでに経由する 1 つ以上のパスを特定できます。つまり、逆にパケットが途中でドロップされた場所を特定することができます。エンティティごとに入出力のパケット処理が報告されるため、パケットの受信時に問題が発生したのか、パケットの転送時に問題が発生したのかがわかります。
> NSX Manager インターフェイスには、設定したパラメータ（IP アドレス タイプ、トラフィック タイプ、送信元、宛先）に基づいてトレース ルートが視覚的に表示されます。このページでは、パラメータの編集、トレースフローの再トレース、新規作成を行うこともできます。
> *From [VMware NSX-T Data Center 製品のドキュメント](https://docs.vmware.com/jp/VMware-NSX-T-Data-Center/3.1/administration/GUID-A85621BC-1CFD-4703-846A-2B3D36E7ABAC.html)*

# VMCでトレースフローが利用できるようになった

以前は VMC ではネットワーク関連の変更・操作は全て VMC コンソール（VMware クラウドサービスポータル / CSP）で行う形となっていましたが、2021年10月にリリースされた SDDC 1.16 より NSX Manager UI にもアクセスできるようになりました。

これに伴い、NSX Manager UI からトレースフローが利用できるようになりました！

[（参考）VMware Cloud on AWS: What’s New in Oct 2021](https://blogs.vmware.com/cloud/2021/10/05/vmware-cloud-on-aws-whats-new-in-oct-2021/)

# トレースフローを利用してみる

では実際に VMC にてトレースフローを利用してみます。
まず VMC コンソールから **OPEN NSX MANAGER** をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/5a75be55-8b57-11b7-d778-d25f687f19de.png)

NSX Manager UI に遷移し、Overview の画面が表示されます。
ここで **Plan & Troubleshoot** タブをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/25bcbbf9-6dc9-6319-c53b-1ccd72bb8c5e.png)

左側のペインから **Traceflow** をクリックするとトレースフローの画面が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/7088fa0b-0c2e-cb43-671d-2959e7b1d692.png)

今回は VMC 上の Linux VM から Amazon FSx for NetApp ONTAP のファイルシステムを NFS マウントする際にネットワークタイムアウトになってしまった事を想定して、トレースフローを実施してみました。

**Source** については、Virtual Machine または Port/Interface をタイプとして選択でき、今回は Virtual Machineを選択しています。
VMC 上で稼働している VM の一覧から対象としたい VM がドロップダウンから選択できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/29f3b9b4-889d-03f6-2091-96e89de9cc2b.png)

仮想インターフェイスが複数ある場合は、対象のインターフェイスを指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/7e85a39a-c9ac-1184-187c-abe6e4eeb688.png)

**Destination** については、Virtual Machine または Port/Interface、IP - Mac をタイプとして選択できます。今回は SDDC の外にある AWS サービスとの疎通を確認したいので、IP - Mac を選択しています。
IP - Mac を選択した場合、Layer 2 と Layer 3 から選択ができます。今回は Layer 3 を選択しています。
IP Address には FSx for NetApp ONTAP の NFS IP アドレスを指定しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/9c9f1b36-9875-82bf-db16-f141309d90c8.png)

**Packet Information** は今回はデフォルトで表示される ICMP を使用します。TCP、UDP なども指定可能で特定のポートに対する疎通を確認する事ができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/7e8f1c4b-13ff-999a-445d-c3fc7053c407.png)

まとめると、今回はこの設定でトレースフローを実施します。**TRACE** ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/a60ebeca-7b25-8f57-1f98-cdeb98cdc2a6.png)

そうすると以下のようにゲートウェイファイアウォールで Drop している事がわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/443872ac-4171-1cd9-6882-4602a2af583b.png)

ゲートウェイファイアウォールにてルールを追加して **RETRACE** を実施すると、以下のようにトポロジが変わりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/2767bd55-ccee-24b1-1275-0ec2dcec0087.png)

Linux VM -> CGW (Tier-1) -> Tier-0 -> Transit Gateway（今回の場合、VTGW） -> VPC という経路で疎通がされている事が簡単に確認できます。

同様に、例えば Google Public DNS への DNS クエリをトレースする場合は以下のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/0ca4944d-ee49-b186-b17a-ee597773c1bf.png)

結果は以下の通りとなり、Linux VM -> CGW (Tier-1) -> Tier-0 -> Internet Gateway 経由で疎通がされている事が確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/441095/177f9747-0b30-51f4-fd6b-b51d4ea66575.png)


# まとめ
NSX のトレースフローを使う事により簡単にトラブルシューティングの実施、ネットワークトポロジの確認ができます。
VMware Cloud on AWS でも NSX Manager UI にもアクセスできるようになり、トレースフローが利用できるようになっています！


# 参考文献
- [VMware NSX-T Data Center 製品のドキュメント](https://docs.vmware.com/jp/VMware-NSX-T-Data-Center/3.1/administration/GUID-A85621BC-1CFD-4703-846A-2B3D36E7ABAC.html)
- [VMware Cloud on AWS: What’s New in Oct 2021](https://blogs.vmware.com/cloud/2021/10/05/vmware-cloud-on-aws-whats-new-in-oct-2021/)