仮想化時代のネットワークとは?-IDF 2009から読み解く


 米国のサンフランシスコで開催された米Intelの開発者セミナー「IDF(Intel Developer Forum) 2009」では、仮想化に対応したネットワークに関するいくつかのセッションが行われた。ネットワークは、仮想化において単なるLAN回線だけでなく、iSCSIやFCoEなどストレージネットワークとしても重視されている。今回は、IDFのセッションから、Intelが仮想化におけるネットワークをどう進化させていくのかを読み解いていく。


Computeの仮想化は一定のレベルに達した

Xeon 5500番台(Nehalem世代)に搭載されている仮想化のハードウェア支援により、仮想化のオーバーヘッドは小さくなった
仮想化には向かないといわれていたデータベースも、Xeon 5500ベースなら高いパフォーマンスで動作する

 今回のIDF 2009、そして9月始めに開催されたVMwareのカンファレンス「VMworld 2009」を見ると、CPUやメモリなどサーバーリソースに関する仮想化は一定レベルの性能に達したように思われる。つまり、ハイパーバイザーはある程度のレベルに達したと考えられているようだ。

 もちろん、さらなるCPUコアの増加、トラステッドコンピューティングへの対応、サーバーの高信頼性を実現するためのリカバリーの仕組み(ハードとソフトの両方とも)の確立など、仮想化においてサポートする必要がある機能はまだまだある。しかし、VT-x(CPUの仮想化機能)やEPT(仮想化におけるメモリマッピング機能)などがサポートされることで、ハイパーバイザーのオーバーヘッドが非常に小さくなっているのも事実だ。

 このようにComputeの仮想化がある程度のレベルに達していることを考えれば、次に向かうのは、仮想化に対応したネットワークとストレージだろう。仮想化において、ストレージはサーバー内部に直接接続されたDAS(Direct Attached Storage)ではなく、ネットワークで接続された外部ストレージが使われる。外部ストレージを使用することで、サーバー間を仮想マシンが移動するLive MigrationやVMotionなどの機能がサポートできるからだ。

 このため、ストレージとサーバーを接続するネットワークは、LANだけでなく、外部ストレージとのインターフェイスや仮想化にチューニングされたネットワークに進化していく必要があるのだ。


VT-dとVT-cがキーポイント

 ソフトウェアで仮想的なNICやスイッチを実現しているハイパーバイザーは、オーバーヘッドが高くなってしまう。そのため、仮想マシンからNICにダイレクトにアクセスした方が高いパフォーマンスを得られるが、そのNICを仮想化せずに使うため、特定の仮想マシンが占有するNICとなってしまう。つまり、仮想環境でありながら、物理環境を持つことになる。

VT-dを使えば、ハイパーバイザーをパスして、デバイスを直接仮想マシンから利用できる
VMDqの仕組み。NIC側でTCP/IPパケットの送受信を入れ替えて、効率よく通信できるようにする
VT-cのVMDqを利用すれば、ネットワークの効率性が90%までアップする

 この問題を解決するため、IntelはXeon 5500番台以降のチップセットに、I/Oデバイスを仮想マシンに直接割り当てるVT-dという機能を搭載した。このVT-dは、NICの直接接続だけでなく、ほかのI/Oデバイスにも使用される。

 また、Intelは仮想化に対応したNICに、VT-cという機能を提供している。VT-dは、チップセット側に入る機能だが、VT-cはNIC側に入る機能だ。

 VT-cは、大きく分けて、I/O Acceleration Technology(I/OAT)、Virtual Machine Device Queues(VMDq)、Single Root I/O Virtualization(SR-IOV)、の3つの機能で構成されている。

 I/OATは、複雑なTCP/IPプロトコルの処理をNICで行えるようにしたものだ。これにより、CPU側でTCP/IPプロトコル処理を行う必要がなくなるため、ネットワークを頻繁に利用してもCPUに負荷がかからなくなる。

 VMDqは、複数の仮想マシンからのアクセスをNIC側で調整し、送信する順番をNIC側で並べ替えることで、効率のいい通信を行えるようにしている。

 SR-IOVは、NICのTCP/IP関連の機能ではなく、NIC自身を仮想化するためのテクノロジーだ。VT-dにより、仮想マシンからNIC自身を占有することができる。

 VT-dによりハイパーバイザー上でソフトウェアエミュレーションによるNICやスイッチの機能をパスできるため、仮想マシンからNICへのアクセスのパフォーマンスはアップする。しかし、物理化を行うため、複数の仮想マシンからVT-d機能を使用したNICはアクセスできなくなる。そこで、NIC自身を仮想化する機能を入れて利用しようというのがSR-IOV(PCI Expressカードのみ)だ。つまり、10GbpsのNICを複数の仮想的なNICとして利用できるようにして、仮想マシンからはVT-dにより直接アクセスできるようにしている。Intelでは、SR-IOVを利用して、ネットワークカード側で仮想化されたNICを利用することをVirtual Machine Direct Connect(VMDc)といっている。

 仮想化に対応したハードウェア機能をNICに追加することで、仮想環境におけるネットワークのパフォーマンスを最大限にアップすることができる。これにより、1枚のNICを利用しながら、複数の仮想マシンからアクセスできるようになる。さらに、ハイパーバイザー上でネットワークのソフトウェアエミュレーションをパスしているため、高速なアクセスが行える。CPUにも負荷をかけない。


SR-IOVを使えば、1枚のNICを複数の仮想マシンからアクセスすることが可能だSR-IOVを使ったときのストレージI/Oのパフォーマンス

 現在、VT-cという規格は、Intel製のネットワークチップやネットワークカードしかサポートしていない。ただ、それぞれの機能は、別の名称でほかのネットワークチップベンダーがサポートしている。例えば、I/OATに関しては、TCP/IP Off Load(TOE)でほぼ同じ機能を実現している。このため、Intelのチップセットでないと、これらの仮想化機能が使えないというわけではない。ただ、VT-cというようなパッケージでハイパーバイザーがサポートしているといえば非常に分かりやすい。

 なお、VT-cの機能は、VMwareのESX、Windows Server 2008 R2のHyper-V、Xenなどのハイパーバイザーでサポートされている。


2010年は10Gbpsが当たり前になる

82599ネットワークチップを使うことで、FCoEやiSCSIを1枚のNICで扱うことが可能
FCoEやiSCSIなどが1枚のNICでサポートされる

 Intelでは、2010年にリリースされるWestmere世代のサーバー用マザーボードには、Intel 82599というネットワークチップを搭載しようと計画している。82599ネットワークチップは、10Gbpsをデュアルポート搭載している。

 さらに、以前の82598ネットワークチップに比べ、動作に必要な部品が82599ネットワークチップに統合されているため、部品点数が少なくなっている。これにより、10Gbpsをサポートしても、それほどコストがかからなくなっている。Intelでは、現在のGigabit Ethernetをサポートするのとほぼ同じぐらいのコストで10Gbps環境が構築できると説明している。

 また、82599ネットワークチップは、iSCSI、FCoE、通常のLANなどを一緒に扱うことができるUnified Network ソリューションとなっている。このため、ファイバーチャネルのストレージとiSCSIのストレージを同じNICで扱うことができる。

 これにより、1つのサーバーでファイバーチャネルとiSCSIの2つのストレージを簡単に扱うことが可能になっていてる。


 仮想化は、Nehalem世代(Xeon 5500番台)の登場により、CPUやメモリといったComputeの仮想化では、ある程度の性能が出るようになってきた。このため、VT-dやVT-cを使って、外部のネットワークストレージをどうパフォーマンスよく利用するのかというのが、次のテーマになってきている。仮想化はストレージネットワークを利用するため、どうしてもCPUの負荷が少なく、高いパフォーマンスでネットワークを利用できるかが重要になってくる。VT-dとVT-cは、仮想化において重要なテクノロジーとなるだろう。



関連情報
(山本 雅史)
2009/10/5 00:00