仮想マシンのトラフィックシェーピング

スポンサーリンク

VMware ESXiの分散仮想スイッチ(VDS)でトラフィックシェーピングを実装する方法を説明します。このページではVDS(分散仮想スイッチ)に対するネットワークポリシーを使用する方法とvSphere Network I/O Controlを使用する方法の2通りを紹介します。

前提

参照資料

動作確認済環境

最新のvCenter, ESXiは必要ありません。比較的古いバージョンのvCenter, ESXiでも動作します。

  • vCenter 7.0U3f (7.0.3-20051473)
  • ESXi 7.0U3f (7.0.3-20036589)

構成図

2台の仮想マシンを1つの分散ポートグループで相互に接続します。分散ポートグループの作成方法は本ページでは省略します。分散ポートグループの作成方法は「分散仮想スイッチ(VDS)の基本操作01」「分散仮想スイッチ(VDS)の基本操作02」を参照ください。

構成図

ネットワークポリシーによる制御

帯域制御の設定

ポートグループ名を選択した状態にし、「アクション」「設定の編集」の順に押下します。

ネットワークポリシーによる帯域制御 01

「トラフィックシェーピング」を選択し、「入力方向トラフィックシェーピング」と「出力方向トラフィックシェーピング」をそれぞれ無効から有効に切り替えます。

「平均バンド幅(kbit/s)」「ピークバンド幅(kbit/s)」「バーストサイズ(KB)」は、それぞれデフォルト設定の「100000」「100000」「102400」とします。このような設定にすれば100Mbpsの帯域に制限されます。

ネットワークポリシーによる帯域制御 02

動作確認

動作確認用に、ある程度大きなファイルを作成します。以下は1Gのファイルを作成する操作例です。

dd if=/dev/zero of=1G.txt bs=1M count=1024

scpコマンドなどを用いてファイル転送をします。操作例は以下の通りです。

scp 1G.txt 192.168.1.11:~/

ファイル転送直後は以下のように出力されます。scpコマンドは13.0MB/sのようにByte単位で出力されますので、これをbpsに換算すると104Mbpsになります。

設定された100Mbpsを超過する転送速度になるのは、多少のバーストを許容する設定になっているためです。

[root@linux010 ~]# scp 1G.txt 192.168.1.11:~/
Warning: Permanently added '192.168.1.11' (ECDSA) to the list of known hosts.
1G.txt                                          3%   36MB  13.0MB/s   01:16 ETA

しばらく待つと、11.4MB/s(=912Mbps)になります。バーストを使い切ると、約100Mbpsの転送速度に落ち着きます。

[root@linux010 ~]# scp 1G.txt 192.168.1.11:~/
Warning: Permanently added '192.168.1.11' (ECDSA) to the list of known hosts.
1G.txt                                         33%  341MB  11.4MB/s   00:59 ETA
[root@linux020 ~]#

動作確認完了後、次の検証シナリオに備えてトラフィックシェーピング設定を初期状態に戻します。

ネットワークポリシーによる帯域制御 03

vSphere Network I/O Controlによる制御

仮想マシン トラフィックのバンド幅の予約

vSphere Network I/O ControlはvSphere環境において、用途毎にトラフィックのバンド幅を決定する仕組みです。制御対象はvMotionやiSCSIなどのシステムトラフィックだけでなく仮想マシンのトラフィックも含まれます。仮想マシンのトラフィックは、

  • 分散ポートグループをリソースプールに含める方法
  • 仮想NIC単位で制御する方法

の2通りの制御が可能です。このページでは仮想マシンのトラフィック制御方法についてのみ説明します。

さて、「VDS(分散仮想スイッチ)名」「構成」「ネットワークリソースプール」の順に画面遷移すると、以下のような警告が表示されます。

ネットワーク リソース プールを作成するには、仮想マシン システム トラフィックのバンド幅予約を
まず設定する必要があります。

仮想マシン システム トラフィックのバンド幅予約

まずは「仮想マシン システム トラフィックのバンド幅」を予約しましょう。「VDS(分散仮想スイッチ)名」「構成」「システムトラフィック」の順に画面遷移します。「仮想マシントラフィック」を選択した状態で、「編集」を押下します。

トラフィックのバンド幅予約 01

「予約」「制限」の値を入力し、「OK」を押下します。

予約可能な上限は、物理アダプタの最低速度の75%です。物理アダプタと紐づかないVDS(分散仮想スイッチ)では以下の設定はできません。

トラフィックのバンド幅予約 02

方法1 リソースプールによる制御

リソースプールの定義

以下のようなリソースプールの定義をします。ネットワークリソースプールは「予約」のみを定義でき「制限」は定義できません。

リソースプール名 予約
resource_400m 400Mbps
resource_100m 100Mbps

「VDS(分散仮想スイッチ)名」「構成」「ネットワークリソースプール」の順に画面遷移し、「追加」を押下します。

リソースプールの定義 01

「名前」「予約割り当て」を入力し、「OK」を押下します。

リソースプールの定義 02

同様の操作を繰り返し、「resource_100m」も作成します。以下スクリーンショットのように2つのリソースプールが作成された事を確認します。

リソースプールの定義 03

リソースプールと分散ポートグループの紐付け

以下のようにリソースプールと分散ポートグループの紐付けます。

リソースプール名 分散ポートグループ
resource_400m vds01-pg01
resource_100m vds01-pg02

「分散ポートグループ名」を選択した状態で、「アクション」「設定の編集」の順に押下します。

リソースプールと分散ポートグループの紐付け 01

「全般」タブで「ネットワークリソースプール」を変更し、「OK」を押下します。

分散ポートグループvds01-pg02についても、同様の操作をします。

リソースプールと分散ポートグループの紐付け 02

方法2 仮想NIC単位の制御

設定

「仮想マシン名」を選択した状態で、右クリックメニュー「設定の編集」の順に押下します。

仮想NIC単位の制御 01

「ネットワークアダプタ」を展開し、「予約」「制限」を定義します。その後、「OK」を押下します。

仮想NIC単位の制御 02

動作確認

scpコマンドなどを用いてファイル転送をします。23.7MB/s(=189.6Mbps)ですので、ほぼ理論値(200Mbps)の転送速度になる事が分かります。

[root@linux010 ~]# scp 1G.txt 192.168.1.11:~/
Warning: Permanently added '192.168.1.11' (ECDSA) to the list of known hosts.
1G.txt                                         32%  332MB  23.7MB/s   00:29 ETA
タイトルとURLをコピーしました