vSphere 5.0 の Network I/O Control その1 | IAサーバーの仮想化メモ

vSphere 5.0 の Network I/O Control その1

最近10Gbpsのネットワークが仮想化環境で使われるようになってきているようです。

仮想化環境で10Gbネットワークを使うと、1つの物理NICの上を、さまざまなトラフィックが流れることになります。
例えばVMware環境の場合、仮想マシンのトラフィック、vMotionのトラフィック、NFSのトラフィック、などなど。
1Gbネットワークの場合は、物理NICの数が多いため、これらのトラフィックに対して専用の物理NICを割り当てるようなネットワーク設計が可能です。
ところが10Gbネットワークになると、1Gbネットワークの場合と比べて物理NICの数が少なくなるため、複数のトラフィックが混在するようなネットワーク設計が多くなることが予想されます。

そこで、VMwareはNetwork I/O Controlと呼ばれる帯域制御の仕組みを実装しています。

一言で言えば、「ネットワークに輻輳が発生した際、あらかじめ設定した優先順位に応じて、各トラフィックの帯域を制御する仕組み」になります。
「輻輳が発生した際」、「あらかじめ設定した優先順位」といった点がポイントです。
輻輳が発生していない場合は、特に帯域を制御する必要はないため、各トラフィックが必要な分だけ帯域を使うことができます。
しかしながら、輻輳が発生した場合は、ネットワークの交通整理を行って、優先順位の高いトラフィックに対して優先的に帯域を与えるように帯域制御を行います。

Network I/O Control は、vSphere 4.1から登場した機能です。
vSphere 5.0では、いくつか機能拡張が行われています。
最も大きい機能拡張は、ネットワークのリソースプールを自由に定義できるようになった」という点でしょう。
vSphere 4.1では、以下の6種類のネットワークリソースプールがシステム上で定義されており、優先順位はこの6種類に対してのみ設定可能でした。

・NFSトラフィック
・iSCSIトラフィック
・vMotionトラフィック
・管理トラフィック
・FTトラフィック
・VMトラフィック

したがって、仮想マシンのトラフィックは全て「VMトラフィック」として扱われ、仮想マシンの重要度に応じて帯域を制御する、といった運用はできませんでした。

vSphere 5.0では、上記のようなシステムで定義済みのトラフィックに加えて、ユーザーが自由にネットワークリソースプールを定義することができます。
そして、定義したリソースプールは、仮想スイッチ上のポートグループと紐付けることが可能です。
これにより、輻輳が発生した場合に、ネットワークI/Oが重要な仮想マシン群に対して優先的に帯域を割り当て、それほどネットワークI/Oが重要ではない仮想マシンには帯域を制限する、といった設計が可能になりました。

このようなNetowork I/O Control の機能拡張を利用することで、
「ネットワークリソースによって仮想マシンのサービスレベルを定義する」、といったことがクラウド環境で実現できるかもしれません。
VMwareも、クラウド環境を意識して、このような機能拡張を行ったのではないかと思います。

とはいえ、Network I/O Control も万能ではありません。
他の機能と同様に、いくつか制限事項が存在します。
次回以降のエントリーで、もう少し細かく見ていきたいと思います。