ネットワーク NSX

新卒 SE 社員が贈る NSX のキソ︕第 4 回〜論理スイッチがもたらす NSX Data Center の オーバーレイネットワーク〜

読者の皆様こんにちは!2017 年 4 月に VMware に入社しました、新卒第 4 期生の馬場浩太と申します。
「新卒社員が贈る NSX のキソ!」も第 4 回となりました。ブログの第 1 回では、ネットワークを仮想化することで、ネットワーク機能を様々な物理環境の制約から解放し、運用負荷を軽減する、と説明しました。第 4 回は、 NSX Data Center の「ネットワークの仮想化」の本質である、論理スイッチをテーマに(図 1)、この仕組みを技術的に理解し、NSX スゴイ!使ってみたい!提案したい!と感じていただくことを目的としています。

図 1 論理スイッチ作成前のネットワーク図(仮想マシン同士は通信できていない)

さて、ネットワーク仮想化をすることで、その運用負荷が大幅に削減される?本当でしょうか?外資ベンダーはいつも都合のいいことばかり言いますので、疑ってかかることは重要です。ネットワークを仮想化する前の、仮想マシンを新規ネットワーク上に構築するオペレーションについて具体的に確認してみましょう。
【サーバ側】
・標準仮想スイッチ (vSS:vSphere Standard Switch)の場合、通信に関連するすべての ESXi ホストに対して、追加する VLAN のポートグループを作成し、仮想マシンを追加したポートグループに所属させる
・分散仮想スイッチ(vDS:vSphere Distributed Switch)の場合、追加する VLAN のポートグループを 1 つだけ作成し、仮想マシンを追加したポートグループに所属させる
【物理ネットワーク側】
・通信に関連するすべての物理スイッチに対して、VLAN を作成する
・通信に関連するすべてのトランクポートに対して、Allowed VLAN を設定する
・PVST+ など、VLAN 単位でスパニングツリーを構成している場合、追加する VLAN に応じてスパニングツリーの設定をする
【その他】
・ネットワーク担当者に連絡して動いてもらう

図 2 ネットワーク仮想化前に新規ネットワークを追加する場合のオペレーションの一例

なぜこのようなオペレーションが必要なのでしょうか?それは、物理ネットワーク機器が仮想マシンを認識しているからです。
「新卒 SE 社員が贈る vSphere のキソ!」第 2 回では、「仮想マシンに入っている OSはあたかも物理サーバ上で動作していると思い込んでいる」と紹介しました。当然、物理ネットワーク機器も、仮想マシンを 1 つの物理サーバ/物理マシンと思い込んでいます。彼らにとって、物理か仮想かは関係がないのです(図 3)。

図 3 物理ネットワーク機器の認識する通信は物理サーバではなく仮想マシン

具体的には、異なる ESXi ホスト上の仮想マシン同士が通信をする時、物理ネットワーク機器を通るパケットは、仮想マシンの MAC アドレス/IP アドレスを送信元/送信先とします(ESXi ホストを送信元/送信先とはしません!)。つまり、仮想の世界の通信にも関わらず、物理の世界にも影響を及ぼしているのです。
仮想マシンが増えれば増えるほど、物理ネットワーク機器が認識する仮想マシンの数も増えてしまいます。そして、それらが接続されるネットワークの数が増えれば増えるほど、物理ネットワーク機器へのオペレーションはますます複雑になり、新規ネットワークを追加するときにでさえ、物理機器への面倒な作業が不可欠となり、ネットワーク担当者に動いてもらう必要があるのです。

仮想の世界の通信は、仮想の世界で完結してしまいませんか?

このような、NSX Data Center のネットワークの仮想化を実現するのが論理スイッチです。VXLAN という技術を使うことで、vDS 上にある仮想マシンを、論理スイッチという仮想ネットワーク上に接続させることができます。NSX Data Center では、クラスタの集合であるトランスポートゾーンと呼ばれる単位で、論理スイッチを有効化します。
先ほど、どの仮想マシンがどの仮想マシンに通信したかを、物理ネットワーク機器が認識してしまう、と説明しました。すなわち、MAC アドレステーブルなどの各種テーブルや ACL(アクセスコントロールリスト)などの情報は、通常は仮想マシンの MAC アドレス/IP アドレスで照合されるというわけです。
NSX Data Center を導入した場合、仮想マシン間の通信は各 ESXi ホストが持つ VTEP と呼ばれるインターフェース間の通信への置き換えられ、物理ネットワーク機器が認識する通信は、仮想マシンではなく VTEP となります。したがって、物理ネットワーク機器の持つ各種テーブルや ACL などの情報は、VTEP の MAC アドレス/IP アドレスで照合されるようになります(図 4)。

図 4 物理ネットワーク機器の認識する通信は論理スイッチによりVTEP に

これによって何が変わるでしょうか?再び、仮想マシンを新規ネットワーク上に構築する場合を考えてみましょう。vSS や vDS の場合に必要なオペレーションが、論理スイッチの場合はどうなるでしょうか?
【サーバ側】
・vSS の場合、通信に関連するすべての ESXi ホストに対して、追加する VLAN のポートグループを作成し、仮想マシンを追加したポートグループに所属させる
・vDS の場合、追加する VLAN のポートグループを 1 つだけ作成し、仮想マシンを追加したポートグループに所属させる
→ ポートグループはもはや意識する必要がありません。作成した論理スイッチに、仮想マシンを接続するだけです。
【物理ネットワーク側】
・通信に関連するすべての物理スイッチに対して、VLAN を作成する
→ 必要ありません。物理ネットワーク機器が認識する VTEP に変化がないためです。
・通信に関連するすべてのトランクポートに対して、Allowed VLAN を設定する
→ 必要ありません。物理ネットワーク機器が認識する VTEP に変化がないためです。
・PVST+ など、VLAN 単位でスパニングツーを構成している場合、追加する VLAN に応じてスパニングツリーの設定をする
→ 必要ありません。物理ネットワーク機器が認識する VTEP に変化がないためです。
【その他】
・ネットワーク担当者に連絡して動いてもらう
→ 必要ありません。vCenter Server から新規ネットワークを作成できるためです。VTEP には影響がありませんので、物理ネットワーク機器にも影響はありません。

図 5 ネットワーク仮想化で新規ネットワーク作成の手間は大幅に削減

どうでしょう?あれだけ手間がかかっていた新規ネットワーク構築作業が、物理スイッチへのログインを一切することなく、vSphere Web Client 内だけで完結しました。不思議ですよね?これが NSX Data Center によるネットワーク仮想化のスゴさです。NSX Data Center の論理スイッチの本質は、このような仮想マシン間の通信を隠蔽する、というところにあります。これにより、仮想の世界でいくら新しいネットワークを作成しても、物理ネットワーク機器側からは VTEP 間の通信と認識され、その判断ができません。したがって、物理ネットワーク機器に手を加えず、サーバ側で自由にネットワークを払い出すことができるようになり、ネットワークの運用負荷が大幅に削減されるのです。NSX Data Center が構築する仮想ネットワーク、すなわちオーバーレイの世界にとって、VTEP 間の通信、すなわち仮想ネットワークを支えるアンダーレイの世界はどうだっていいのです。
最後にまとめとして、もう一度、皆様にこの言葉を捧げたいと思います。

仮想の世界の通信は、仮想の世界で完結してしまいませんか?

おわりに
いかがだったでしょうか?今回は論理スイッチについて説明いたしました。論理スイッチを作成することで、仮想マシン間は物理ネットワークの制約を受けず、自由に仮想ネットワーク上で L2 接続ができるようになります(図 6)。

図 6 論理スイッチ作成後のネットワーク図(仮想マシン同士は L2 で接続)

しかしながら、これは NSX Data Center の魅力のほんの一部でございます。NSX Data Center にはまだまだ紹介していない機能、それによってもたらされる価値がたくさんございます。例えば、今回はNSX Data Centerの論理スイッチという L2 の部分だけをお話しましたが、次回はこの論理スイッチ間の「ルーティング機能」を提供する分散論理ルータ、Edge ルータをご紹介します。

コラム ~VXLANについて~

お気づきになられた読者も多いかとは思いますが、NSX Data Center の論理スイッチでは、ESXi ホスト単位でトンネリングを行っています。これについて補足します。
スイッチは L2 レベル、すなわち MAC アドレスを見てパケットを判断し、適切なポートから他の機器へパケットを伝達します。ルータは L3 レベル、すなわち IP アドレスを見て、パケットを判断し、適切なポートから他の機器へパケットを伝達します。
この時、スイッチやルータは、図 7 のように、パケットの先頭にある情報しか見ません。つまり、もし図 7 のようにパケットの先頭に本来のものとは異なる MAC アドレス/IP アドレスが付与された場合、スイッチやルータは一番先頭にある MAC アドレス/IP アドレスしか見ませんので、本来のパケットの送信元/送信先を捻じ曲げることができます。これがカプセル化です。
NSX Data Center では、VTEP の MAC アドレス/IP アドレスで、本来のパケットをカプセル化します。パケットがカプセル化されたことを物理ネットワーク機器は判断できず、VTEP の MAC アドレス/IP アドレスを見て、送信先仮想マシンが存在するサーバの VTEP にそのままフォワーディング/ルーティングしますが、パケットを受け取った VTEP はカプセル化されたことを判断できます。すなわち L3 以上の VXLAN ヘッダを見ますので、そこでカプセルが外され、送信先仮想マシンが存在する ESXi カーネル上で本来のパケットを処理するわけです。実は、VTEP はトンネルの入り口や出口なのです。

図 7 物理ネットワーク機器が認識するパケットのヘッダの違い

さて、もう少し論理スイッチと VXLAN を深堀りしてみましょう。トンネリングをすることで、サーバ間のネットワークが何であれ、 1 本の仮想の専用線、L2 ネットワークで接続することができます。まさに、サーバ間の複雑なネットワークを、トンネルで束ねて隠してているイメージですね。この、複雑なネットワークをトンネルで束ねて隠し、同じ L2 ネットワークでつなぐことを「L2 延伸」と呼びます。L2 延伸をすることで、vMotion が必要とする L2 サービスを、安定的な標準化技術である L3 ネットワーク上で構成することが可能となります。そしてこれは、本ブログの最終回でお話しするような、複数のデータセンター間の仮想ネットワーク環境の構築や、VMware のビジョンでもあるクロスクラウドを実現するために必要な技術です。
L2 ネットワークを単に広げるのは簡単です。しかしながら、ある程度の規模の L2 ネットワークを、どのように安定的に構成・管理するかはネットワークエンジニアの長年の課題でした。ブロードキャスト範囲の増加、それによる帯域圧迫、ループを防ぐための STP、新たなソリューションが出たとしてもベンダー独自技術の習熟コストがかかってしまうなど、L2 ネットワークを「安定的に」広げるのは、案外難しいのです。
論理スイッチは、これらの課題に対する 1 つの答えと言えます。NSX Controller がVTEP とそれに紐づく仮想マシンのテーブルを持っているため、必要のない ESXi ホストにはブロードキャストは届きません。論理スイッチ上ではループは生じませんし、VXLAN は VMware 独自の技術でもありません。VMware の NSX Data Center は、ハイパーバイザーである ESXi と VXLAN を効果的に組み合わせることで、ネットワーク運用負荷の削減と、L2 延伸によるネットワークインフラの抽象化を実現するのです。
-VMware SE 馬場浩太