ネットワークセグメンテーション機能の概要

# はじめに
この記事は、[Nutanix Advent Calendar 2020](https://adventar.org/calendars/4998) 12月16日の分として作成しました。本記事の内容はこの日付の情報に基づいています。本記事で解説しているネットワークセグメンテーション機能は**AOS 5.18**で提供されているものに基づいています。AOSのバージョンによっては、一部の機能が提供されていないなどの差異がありますのでご注意ください。

Nutanixはデフォルトでは、複数のNICをチーミングやボンディングによって束ねる比較的シンプルな物理ネットワーク構成をとります。大部分のケースではこのようなネットワーク構成で問題ないのですが、セキュリティポリシーやネットワーク設計のポリシーとして、仮想マシンが利用するネットワーク、ストレージ通信で利用されるネットワーク、管理用ネットワークを分離したいケースもあります。

Nutanixではそのようなユースケースに対応するために、ネットワークセグメンテーションと呼ばれる通信の分離機能を提供しています。

本記事では、ネットワークセグメンテーション機能の概要をご紹介します。

#Nutanixでの通信の種別
Nutanixでネットワークを流れる通信は、以下のように大別することができます。[^1]

<dl>
  <dt>ゲスト仮想マシンの通信</dt>
  <dd>ゲスト仮想マシンが利用するネットワークの通信です</dd>
  <dt>管理通信</dt>
  <dd>アドミニストレーションや管理のための通信です。例えばPrismへのアクセスやCVMへのSSH接続、リモートのsyslog、SNMPなどです</dd>
  <dt>ストレージ通信(バックプレーン通信)</dt>
  <dd>Nutanixクラスター内の通信で、クラスターの機能を提供するための通信です。CVM-CVM間やCVM-host間の通信になります。例えば、ストレージのRFに基づくレプリケーションの通信やホスト管理、HAのための通信などです。Nutanixではこの通信を<strong>バックプレーン通信</strong>と呼んでいます</dd>
  <dt>特定のサービス用途の通信</dt>
  <dd>Nutanixが提供するサービスで利用される通信です。例えばVolumesで利用されるiSCSI通信やAsyc DR、NearSync DR、Metro Availabilityなどの災害対策機能で利用されるサイト間のデータ転送の通信などです。</dd>
</dl> 

#標準のネットワーク構成
Nutanixの工場出荷時のネットワーク構成は下図のようになります。
![工場出荷時のネットワーク構成](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83432/2a2efbb3-07ce-e099-ee82-30d6b8e7f808.png)


CVMはeth0とeth1の2つの仮想ネットワークインターフェースを持ちます。eth0は初期構築時に構成される外部仮想スイッチに接続されています。外部仮想スイッチにはアップリンクとしてチーミング/ボンディングされた物理NICが構成されており、外部ネットワークと接続されています。eth1インターフェースは内部仮想スイッチと接続されており、CVMとハイパーバイザー間の通信に使用されます。
この構成では、管理通信やバックプレーン通信などの、CVM-CVM間やCVMが外部と通信する全てのトラフィックがeth0インターフェースを使用します。

各仮想スイッチはハイパーバイザーによって以下のように命名されています。

|  | 内部仮想スイッチ | 外部仮想スイッチ |
|:-:|:-:|:-:|
| AHV     | virbr0         | br0            |
| ESXi    | ｖSwitchNutanix | vSwitch0       |
| Hyper-V | InternalSwitch | ExternalSwitch |

ゲスト仮想マシンの通信をCVMの通信と分けることも可能です。例えば下図のようにネットワークを構成することも可能です。

![ゲストVMを分離したNW構成](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83432/43821bf3-0006-257a-0fcd-1bc0f0118d86.png)


#ネットワークセグメンテーション機能
ネットワークセグメンテーション機能は管理通信とバックプレーン通信を独立したネットワークに分離する機能です。併せて、特定のサービス用途の通信を分離することも可能です。
ネットワークセグメンテーションでは以下の2種類の構成をサポートしています。

- VLANによる分離(論理的なセグメンテーション)
- 物理的な分離(物理的なセグメンテーション)

##VLANによる分離
管理通信とバックプレーン通信を異なるVLANに割り当てることでネットワークを分離します。CVMにバックプレーン通信のために新しいネットワークインターフェースeth2を作成し、IPアドレスを付与します。ハイパーバイザーにもバックプレーン通信用のインターフェースが割り当てられます。下図のようなネットワーク構成になります。

![VLANによるNW分離](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83432/47a01a45-2c34-0520-bffd-e51f5a22b0a1.png)


管理通信とバックブレーン通信のそれぞれには、ユニークなVLANが割り当てられますが、同じ外部仮想スイッチを共用します。このため物理アップリンクや外部の物理スイッチについても共用する形になります。

VLANによる分離はPrismから設定を行うことが可能です。ハイパーバイザーへの手動での個別設定は必要ありません。

##物理的な分離
管理通信とバックプレーン通信を異なるVLANに割り当て、さらに異なる外部仮想スイッチ、異なるアップリンクの物理NICに割り当てる構成です。管理通信とバックプレーン通信を完全に物理的に分離することができます。下図のようなネットワーク構成になります。

![物理的なNW分離](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83432/a371b6b9-788c-74f7-9b3f-00b6f3527052.png)

VLANによる分離と同様に、Prismからバックプレーン通信用のCVMのvNICを構成します。しかし、物理的な分離の場合はPrismの設定を行う前に、手動で個別にハイパーバイザーの外部仮想スイッチやアップリンクの設定を行っておく必要があります。

##特定のサービス用途の通信の分離
Nutanixが提供するサービスで利用される通信を他の通信と分離することができます。AOS 5.18では以下の2つのサービスのトラフィックを分離することができます。
-　Volumesで利用されるiSCSI通信
-　Asyc DR、NearSync DR、Metro Availabilityなどの災害対策機能で利用されるサイト間のデータ転送の通信

物理的な分離と同様に、手動で個別にハイパーバイザーの外部仮想スイッチやアップリンクの設定を行い、その後にPrismからCVMの特定サービス用途のvNICを構成します。1つのサービス用途に対して1つの専用の仮想ネットワークが必要となります。

![特定サービス用途通信の分離](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83432/5884da13-5b18-1509-fbc9-016b827fbd45.png)



#制限・制約事項
ネットワークセグメンテーション機能には以下の制限、制約があります。

- VLANによる分離は、AHV、ESXi、Hyper-Vの各ハイパーバイザーでサポートされていますが、物理的な分離はAHV、ESXiのみでサポートされています
- 特定サービス用途通信の分離はAHV、ESXiのみでサポートされています
- AOS5.11.1以降のリリースでは、複数のハイパーバイザーが混在したクラスターではネットワークセグメンテーションを使用することができません
- Volumes用途でネットワークセグメンテーション機能を有効にしている場合、仮想マシンをリカバリした際に、その仮想マシンへのボリュームグループの接続はリカバリされません
- Nutanix FilesのFSVMは、Volumes用途でネットワークセグメンテーション機能を有効にしていた場合でも、引き続きeth0インターフェースを使用します
- CVM上に手動でeth2インターフェースを作成したばあいはサポート外の構成となります
- 物理的な分離を構成しているクラスターにノードを追加する場合、事前に追加ノードに手動で外部仮想スイッチの追加などを行い、ネットワーク構成をクラスター内のノードの構成に合わせる必要があります

# 終わりに
ネットワークセグメンテーション機能の概要をご紹介しました。Nutanixの一番の特徴であるシンプルさとは相反するところもあり、また留意すべき制約もあるので、どんな時でも無条件でお勧めする機能ではありません。しかし要件的にこの機能が必須となるケースもありますので、その際にはしっかり設計した上でご活用ください。

[^1]: 正確には、RDMA利用時のStargate-Stargate間の通信というのもあるのですが、限定的な用途なので本項では割愛します。