VMware ESXiの分散仮想スイッチ(VDS)でトラフィックシェーピングを実装する方法を説明します。このページではVDS(分散仮想スイッチ)に対するネットワークポリシーを使用する方法とvSphere Network I/O Controlを使用する方法の2通りを紹介します。
前提
参照資料
- vSphere公式Docs – トラフィック シェーピング ポリシー
- vSphere公式Docs – vSphere Distributed Switch での Network I/O Control の有効化
- vSphere公式Docs – 仮想マシン トラフィックのバンド幅割り当て
- vSphere公式Docs – 仮想マシンに対するバンド幅の割り当てについて
動作確認済環境
最新のvCenter, ESXiは必要ありません。比較的古いバージョンのvCenter, ESXiでも動作します。
- vCenter 7.0U3f (7.0.3-20051473)
- ESXi 7.0U3f (7.0.3-20036589)
構成図
2台の仮想マシンを1つの分散ポートグループで相互に接続します。分散ポートグループの作成方法は本ページでは省略します。分散ポートグループの作成方法は「分散仮想スイッチ(VDS)の基本操作01」「分散仮想スイッチ(VDS)の基本操作02」を参照ください。
ネットワークポリシーによる制御
帯域制御の設定
ポートグループ名を選択した状態にし、「アクション」「設定の編集」の順に押下します。
「トラフィックシェーピング」を選択し、「入力方向トラフィックシェーピング」と「出力方向トラフィックシェーピング」をそれぞれ無効から有効に切り替えます。
「平均バンド幅(kbit/s)」「ピークバンド幅(kbit/s)」「バーストサイズ(KB)」は、それぞれデフォルト設定の「100000」「100000」「102400」とします。このような設定にすれば100Mbpsの帯域に制限されます。
動作確認
動作確認用に、ある程度大きなファイルを作成します。以下は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 ~]#
動作確認完了後、次の検証シナリオに備えてトラフィックシェーピング設定を初期状態に戻します。
vSphere Network I/O Controlによる制御
仮想マシン トラフィックのバンド幅の予約
vSphere Network I/O ControlはvSphere環境において、用途毎にトラフィックのバンド幅を決定する仕組みです。制御対象はvMotionやiSCSIなどのシステムトラフィックだけでなく仮想マシンのトラフィックも含まれます。仮想マシンのトラフィックは、
- 分散ポートグループをリソースプールに含める方法
- 仮想NIC単位で制御する方法
の2通りの制御が可能です。このページでは仮想マシンのトラフィック制御方法についてのみ説明します。
さて、「VDS(分散仮想スイッチ)名」「構成」「ネットワークリソースプール」の順に画面遷移すると、以下のような警告が表示されます。
ネットワーク リソース プールを作成するには、仮想マシン システム トラフィックのバンド幅予約を まず設定する必要があります。
まずは「仮想マシン システム トラフィックのバンド幅」を予約しましょう。「VDS(分散仮想スイッチ)名」「構成」「システムトラフィック」の順に画面遷移します。「仮想マシントラフィック」を選択した状態で、「編集」を押下します。
「予約」「制限」の値を入力し、「OK」を押下します。
予約可能な上限は、物理アダプタの最低速度の75%です。物理アダプタと紐づかないVDS(分散仮想スイッチ)では以下の設定はできません。
方法1 リソースプールによる制御
リソースプールの定義
以下のようなリソースプールの定義をします。ネットワークリソースプールは「予約」のみを定義でき「制限」は定義できません。
リソースプール名 | 予約 |
---|---|
resource_400m | 400Mbps |
resource_100m | 100Mbps |
「VDS(分散仮想スイッチ)名」「構成」「ネットワークリソースプール」の順に画面遷移し、「追加」を押下します。
「名前」「予約割り当て」を入力し、「OK」を押下します。
同様の操作を繰り返し、「resource_100m」も作成します。以下スクリーンショットのように2つのリソースプールが作成された事を確認します。
リソースプールと分散ポートグループの紐付け
以下のようにリソースプールと分散ポートグループの紐付けます。
リソースプール名 | 分散ポートグループ |
---|---|
resource_400m | vds01-pg01 |
resource_100m | vds01-pg02 |
「分散ポートグループ名」を選択した状態で、「アクション」「設定の編集」の順に押下します。
「全般」タブで「ネットワークリソースプール」を変更し、「OK」を押下します。
分散ポートグループvds01-pg02についても、同様の操作をします。
方法2 仮想NIC単位の制御
設定
「仮想マシン名」を選択した状態で、右クリックメニュー「設定の編集」の順に押下します。
「ネットワークアダプタ」を展開し、「予約」「制限」を定義します。その後、「OK」を押下します。
動作確認
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