NSX-T 3.1 の世界観を理解する ①


##はじめに
VMware の ネットワーク仮想化を行う NSX は非常に複雑である。解説のサイトや構築手順の情報は非常に多いが、なぜその設定が必要なのか、なんのためにあるのかが記述されているものは少なく、なんとなくぼやっと理解している方も多いのではないだろうか。本記事では設定項目を細かく解説することで、NSXの仕組みや構築を理解して進められるようになることを目的としている。
[VMware Hands on Lab](http://labs.hol.vmware.com/HOL/catalogs/lab/8545) の NSX-T の設定を見ながら本記事を確認していただくと、より理解しやすいと思われる。


##対象
NSX-Tが何を実現したいのかは理解しているが、設定項目や使われている用語がよくわからないという方
##書いてあること
設定の手順
パラメータを設定する意味
パラメータの存在意義
設定項目による違い

##書いていないこと
NSX-T で実現できること
デプロイの方法
発展的な内容

##前提知識
NSXの理解には標準仮想スイッチ、分散仮想スイッチの知識が必須である。
おすすめの記事（シリーズ）は以下である。若干古いが、アーキテクチャは大きく変わっていない。
　　[仮想スイッチのお作法～標準スイッチから分散スイッチへの道～](https://blogs.vmware.com/vmware-japan/2017/02/vds-1.html)


NSXの基本、なにができるのか、どう実現しているのかは以下の通りである。こちらも古いが、実現したいことは変わっていない。　
　　[マンガでわかるSDN講座](https://www.networld.co.jp/sp/vm_nsx/sdn_1.html)
　　[NSX-T を知るはじめの一歩](https://licensecounter.jp/engineer-voice/blog/articles/20190311_nsx-t.html)

NSX-Vをある程度知っている方は、以下の記事を読むと理解が深まるのでおすすめ。
　　[NSX-v と NSX-T コンポーネントの違い](https://licensecounter.jp/engineer-voice/blog/articles/20191205_nsx-v_nsx-t.html)
　　[VMware NSX-V v.s. NSX-T](https://qiita.com/testnin2/items/bc719780b3c7f1f36403)

実際のデプロイ手順はこのサイトが一番詳しいのではないか。
　　[Journey to NSX-T, “VCP-NV” and beyond… (NSX-T Installation Series)](https://shuttletitan.com/nsx-t/nsx-t-installation-series/journey-to-nsx-t-vcp-nv-and-beyond-nsx-t-installation-series/)

##構築全体の流れ
今回は ESXi ホストのみの環境を想定している。
1. NSX-T の機能を各ホストに追加する。（本記事）
2. セグメントを作成し、そこに仮想マシンを接続する。
3. Edge Cluster を展開
4. Tier1 Gateway を構成する。
5. Tier0 Gateway を展開する。
（本記事執筆時想定。）

##ESXi ホストへの NSX-T 機能の追加
NSX-Tではホストに機能を追加する際、トランスポートノードプロファイルというものを適用する。NSX-VではクラスタにNSXのVIBを入れる際は一律に設定など入れずに導入したような気がするが（間違ってたらすみません）、NSX-TではESXiに適用するプロファイルを事前構成する必要がある。
このプロファイルを作成するために、トランスポートゾーン、IP-Pool、アップリンクプロファイルを事前に作成する必要がある。本項目では、その設定について解説する。

###トランスポートゾーン
同一のトランスポートゾーンに参加すると、仮想的に同セグとして通信できる。逆に言えば異なるトランスポートゾーンに所属するホスト上の別セグメントの仮想マシンは、たとえ同一クラスタであっても物理ルータを経由しないと通信ができない。
トランスポートゾーンの設定項目はオーバーレイか、VLAN か。オーバーレイにすると、このトランスポートゾーンに追加したノードは TEP と呼ばれる vmkポート でカプセル化（後述）され、L3 の通信であっても実質L2 のものとして通信できるようになる。これによりヘアピンと呼ばれるような通信や、同一データセンター内での東西ネットワークによるルータへの負荷が軽減される。
一方、VLAN のトランスポートゾーンは VLAN アップリンクに使用される。VLAN を活用することで、N-vDS を配置できない物理のマシンなどと通信することができる。
NSX-V ではクラスタ単位で参加させていたが、NSX-T からはホスト単位で追加する事ができる。
	
	
###トランスポートノードプロファイル
上記のトランスポートゾーンにそのままホストやクラスタをピックアップして追加すればいい、と思われるかもしれないが、実際にはその他の設定項目を合わせたプロファイルをホストに適用する。これは同じトランスポートノードでも、ESXi、KVM、ベアメタルなどを追加するときハードウェアが異なったり、設定が異なったりするところをプロファイルで吸収するためであると思われる。なお、トランスポートノードプロファイルの設定項目は、追加するスイッチの情報とその名称のみである。
スクリーンショットは以下。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552541/db615dbf-43da-4009-4393-d81c1cfe5607.png)			
そもそも、なぜN-VDSとVDSを選ぶ必要があるのか。なぜプロファイルを作成する際にスイッチを作成しなければいけないのか。
これはオーバーレイネットワークを同一ポートグループ（NSX-Tではセグメントと呼ばれる）で実現をしていて、そのために仮想的なスイッチが必要となるためである。


ここで少し標準 / 分散仮想スイッチ(vSS / vDS)について復習しておく。
vSS でもvDSでも、ポートグループを作成することでネットワークを分離することができ、ポートグループごとに役割を分けるのが目的である。雑に言うとこの設定を各スイッチに対して個別で行わないといけないのが vSS、まとめて一括で管理できるのが vDS というものになる。

NSX の話に戻る。
N-vDS はその名の通り、vDS のようにホストを跨いで配置される。そして、N-vDS 上にポートグループ（セグメント）を作成し VM を接続すると、物理的に異なるセグメント上でも仮想的に同一セグメントとして通信することが可能になる。そしてこれまでは N-vDS でのみ以上のことが実現されていたが、NSX3.0 から vDS 7.0 でも実現できるようになった。
そのため、トランスポートノードプロファイルでは**タイプ**を選択する必要がある(現在ESXi ホストに適用するトランスポートノードプロファイルでは、vDS の利用が推奨になっている)。	
**モード**は応用的な部分なので、今回はパスする。
**名前**の項目はN-vDSとvDSで異なる。
N-vDS の場合は、設定した名称を持つ N-vDS が、トランスポートノードプロファイルを適用された各ホストに新たに配置されることになる。
vDS の場合は NSX-T の機能を付与したい vDS を選択する。

**トランスポートゾーン**ではトランスポートノードプロファイルを当てるホストを、どのトランスポートゾーンに追加するかを選択する。
複数選択し、複数のトランスポートゾーンに一括で追加することも可能である。
	
**IP 割り当て**ではオーバーレイネットワークで使用される IP アドレスを設定する。このため事前に IP アドレスプールを作成する必要がある。
この部分を少し詳しく解説するが、設定したIP Pool から IP が割り振られるのは、 TEP と呼ばれる **vmknic (vmkポート)** である。
話が少し飛ぶが、vSS vDS において vmknic の持つ IP は「ホストの IP 」として使用され、ホスト自身の管理や、vSAN のアドレスなどとして利用される。NSX-T の vmknic の場合も同様で、その先に特定の仮想マシンなどはいない、管理用のアドレスである。
このNSX-Tにおいては、N-vDS（もしくはvDS 7.0）上の vmknic に IP アドレスプールの IP が割り当てられ、そのIP にカプセリングされることで L3 の通信を L2 の世界で行うことが可能になる。こうすることで、異なるホスト上の別セグメントの通信が、物理ルータを経由する必要がなくなる
ここは NSX で何を実現したいのか、を理解していることが重要になるので、この辺りは上に記載したリンクなどを参考にしていただきたい。
	

**アップリンクプロファイル**は事前に作成し、選択する必要がある。トランスポートノードプロファイルの解説の途中だが、ここでアップリンクプロファイルの作成について説明する。

####アップリンクプロファイル

アップリンクプロファイルとは、TEP となるvmknic と 物理 nic である vmnic の関係性を定義するようなイメージでだ。
設定項目は以下。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552541/5a959949-6b1f-6d4a-3e31-0c9c13eb592d.png)

	
簡単な環境であればチーミングの部分のみ設定すれば問題ない（デフォルトでアップリンクプロファイルが存在するが、それもチーミングのみの設定がされている）。
ここで設定するのはvDS もしくは N-vDSのアップリンクポートのチーミングの設定である。選択可能項目は以下。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552541/b1ad272c-e7d4-ce8a-0704-04bed22acfea.png)


ポリシーの内容については document を参考にしていただきたい。
以下の通りActive / Standby のアップリンク名を入力し、ポリシーに準じた動きをさせる、という形になる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552541/c9fa2641-a359-7cd4-aa1f-e6f6530ab7ca.png)


上図ではUplink-01 を Active、Uplink-02 をStandbyとして、チーミングポリシーはフェイルオーバーの順序であるという設定だが、勘違いしやすいのは
このUplink-01、Uplink-02 は**具体的には何も指していないラベルである**、ということである。
ここでのUplink-01, 2というのは名前だけに過ぎない。
別の例として、以下のような設定においてはActiveが2つ、Standbyが2つ、ということを意味するに過ぎない。（01,03をActive、02, 04をStandby としても同じである。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552541/892ae4cf-3f88-68d0-6996-1844b6a6446a.png)

スクリーンショットには写っていないが、トランスポート VLAN という設定も存在する。vSphere においてホストの物理 NIC は IP アドレスなどを持っておらず、仮想マシンが通信するときは仮想マシンの持つ仮想 IP アドレスをそのまま物理の世界に投げている。NSX-T のオーバーレイネットワークの世界では、仮想マシンの仮想 IP アドレスが、TEP  である vmkポート の IP アドレスにカプセル化される。この vmk ポートにする設定するVLAN をここで設定する事ができる。設定した場合は物理側でこのVLAN を通せるようにしなければならない。

###トランスポートノードプロファイル の続き

ここまで説明してきたアップリンクプロファイルをトランスポートノードプロファイルで選択適用すると、チーミングポリシーアップリンクマッピングでは以下のように表示される。
vDSの場合は、アップリンクのポートグループが存在する（dvUplink Ports）ので、これをvDS側で事前設定しておき、そのポートグループをこのUplink-01-04に割り当てる。
これが先程の「具体的には何も指していない」が意味するところで、vDSのUplinkのポートグループをアサインするまでこのプロファイルのアップリンクに意味はない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552541/a7571d68-8ab7-1fa6-ae35-10526f094bbe.png)
	
N-vDS の場合は、このアップリンクのポートに物理nicをそのまま当てる形になるので、vmnic0 vmnic1 などを入力することになる。

以上がトランスポートノードプロファイルの作成と、設定項目の説明である。

ここで作成したトランスポートノードプロファイルを元に、ESXi ホストに NSX の設定を行っていく。

次回に続く。