マルチテナント環境では、部門や顧客ごとにHyper-Vのネットワークを分離する必要がある。Hyper-V 2.0ではこのネットワークの分離にVLAN(仮想LAN)を利用していたが、VLANはその規模が大きくなると管理が複雑になる。また、VLAN IDが不足するなどの拡張性の問題も発生してくる。

 Hyper-V 3.0では、ネットワーク分離を実現するため、VLANとは別にネットワークの仮想化をサポートしている。Hyper-Vのネットワークの仮想化では、仮想マシンのIPアドレスを2つの方法で仮想化する。「IPアドレス書き換え方式」と「GRE方式」である。

 IPアドレス書き換え方式の仕組みを図1に示す。IPアドレス書き換え方式では、カスタマーアドレス(CA)とプロバイダーアドレス(PA)の2つのアドレスを使用する。CAは仮想マシンで使用するアドレスであり、テナントが別であれば、図1左下にある仮想マシンAと仮想マシンBのように重複していても構わない。

図6●仮想ネットワークにおける「IPアドレス書き換え方式」の仕組み
図1●仮想ネットワークにおける「IPアドレス書き換え方式」の仕組み
[画像のクリックで拡大表示]

 PAはHyper-Vホストが使用するアドレスである。Hyper-Vホストは複数のPAを持ち、CAごとに一意となるPAをマッピングしている。例えば仮想マシンAから仮想マシンCへアクセスする場合、ユーザーは仮想マシンCのCAを使ってアクセスすればよい。するとホストEがパケットのIPヘッダーにある「仮想マシンCのCA」を「マッピングされたPA」へ書き換えたうえでネットワークへ送信する。このパケットを受信したホストFは、IPヘッダーのPAをCAへ書き戻し、仮想マシンCへ送信するようになっている。

 もう一つのGRE(Generic Routing Encapsulation)方式の仕組みは図2の通りである。GRE方式では、IPアドレス書き換え方式と同様にCAとPAのIPアドレスを使用するが、もう一つ、GREヘッダーも使用する。GREヘッダーには、テナントごとのIDが埋め込まれている。GRE方式では、各仮想マシンはそれぞれCAを持ち、Hyper-Vホストは1つだけPAを持つ。

図7●仮想ネットワークにおける「GRE(Generic Routing Encapsulation)方式」の仕組み
図2●仮想ネットワークにおける「GRE(Generic Routing Encapsulation)方式」の仕組み
[画像のクリックで拡大表示]

 例えば図2で、仮想マシンAから仮想マシンCへアクセスする場合、ユーザーは仮想マシンCのCAでアクセスする。するとホストEはパケットのIPヘッダーのCAを送信先のHyper-VホストのPAへ書き換え、さらにそのテナントのIDを含むGREヘッダーを付与して送信する。このパケットを受信したホストFは、GREヘッダーを参照して、IPヘッダーのPAをCAへ書き戻し、仮想マシンCへパケットを送信する。つまり、GREヘッダーによって、ネットワークが分離されていることになる。

 GRE方式は、取り扱うPAの数が少なくなるため、ネットワークインフラへの負荷が軽減される。ただし、ネットワーク上の機器(スイッチやネットワークアプライアンス)がGREに対応している必要がある。