【VMWare ESXi】図解 NICチーミングの種類と動作概要

ESXi ホストは、NIC チーミングによって、複数の物理 NIC で外部の物理スイッチに接続できます。複数の NIC を束ねることで、負荷分散(ロードバランス)と、障害時の切り替え(フェールオーバ)ができるようになります。

この記事では、NIC チーミングのロードバランス方式と、フェールオーバの動き(リンク状態による検知とビーコンプローブ)を図で整理します。

この記事でわかること
  1. NIC チーミングのロードバランス方式と、それぞれの物理スイッチ側の条件
  2. リンクダウンによるフェールオーバの動き
  3. リンクダウンで検知できない障害と、ビーコンプローブ

仮想ネットワーク、仮想スイッチについては、次の記事を参考にしてください。

>> 参考記事:【VMware ESXi】図解 仮想ネットワーク・仮想スイッチの概要

ここでは、3つの物理 NIC を持つ ESXi ホストが、物理スイッチに接続されている構成で考えます。ESXi では物理 NIC を vmnic0、vmnic1 … と呼びますが、この記事では NIC1〜NIC3 と書きます。

ESXiホスト仮想スイッチVMNIC1NIC2NIC3物理スイッチ
図1 3つの物理 NIC で物理スイッチに接続した ESXi ホスト

ESXi ホストの仮想スイッチは、これらの物理 NIC(アップリンク)でチーミングを組み、通信の負荷分散と可用性(フェールオーバ)を実現します。

ロードバランス方式

仮想スイッチ(またはポートグループ)ごとに、通信をどの物理 NIC に流すかを決める方式を選びます。

発信元の仮想ポートに基づいたルート

仮想マシン(VM)の仮想 NIC がつながっている仮想スイッチのポート ID をもとに、使う物理 NIC を決めます。標準スイッチ(vSphere Standard Switch)の既定の方式です。物理スイッチ側で、チーミングのための設定は要りません。

次の図のように、VM がつながっているポートに応じて、使う物理 NIC が決まります。VM が同じポートにつながっている間は、同じ物理 NIC を使い続けます。

ESXiホスト仮想スイッチVMポートIDVMポートIDNIC1NIC2NIC3物理スイッチ
図2 ポート ID によって、使う物理 NIC が決まる

仮想スイッチはアップリンクの負荷を見ていないので、ポート ID と物理 NIC の割り当てと VM ごとの通信量によっては、物理スイッチへのアップリンクの負荷が偏ることがあります。

発信元 MAC ハッシュに基づいたルート

VM の仮想 NIC の MAC アドレスから計算したハッシュ値によって、使う物理 NIC を決めます。物理スイッチ側で、チーミングのための設定は要りません。

ESXiホスト仮想スイッチVMMACVMMACNIC1NIC2NIC3物理スイッチ
図3 MAC アドレスのハッシュによって、使う物理 NIC が決まる

こちらもアップリンクの負荷は見ていないので、MAC アドレスと物理 NIC の割り当てと VM ごとの通信量によっては、アップリンクの負荷が偏ることがあります。

IP ハッシュに基づいたルート

パケットごとに、送信元と宛先の IP アドレスから計算したハッシュ値によって、使う物理 NIC を決めます。

ポート ID や MAC アドレスの方式と違い、1台の VM でも宛先によって複数の物理 NIC を使います。そのため、物理スイッチ側では、それらのポートをリンクアグリゲーション(EtherChannel)にする必要があります。

ESXiホスト仮想スイッチVM送信元 IPVM送信元 IPNIC1NIC2NIC3物理スイッチリンクアグリゲーション宛先A宛先B宛先C宛先によって使う NIC が変わる
図4 IP ハッシュでは、宛先によって使う物理 NIC が変わる
項目IP ハッシュを使うときの条件
物理スイッチスタティックのリンクアグリゲーション(EtherChannel、モード on)を設定する。接続先は1台の物理スイッチか、スタックしたスイッチ
LACPLACP(ダイナミック)は分散仮想スイッチ(vSphere Distributed Switch)でだけ使える。標準スイッチはスタティックのみ
チームの NICスタンバイや未使用のアップリンクを設定しない(すべてアクティブにする)
障害検知「リンク状態のみ」を使う。ビーコンプローブとは組み合わせない

そのほかの方式

方式内容
明示的なフェールオーバー順序
(Use explicit failover order)
アクティブな NIC のうち、順番が一番上で正常なものだけを使う。負荷分散はしない
物理 NIC 負荷に基づいたルート
(Route based on physical NIC load)
分散仮想スイッチでだけ使える。30秒ごとにアップリンクの負荷を調べ、使用率が75%を超えていたら、通信量の多い VM を別のアップリンクに移す

NICチーミングによるフェールオーバ

リンクダウンによる切り替え

たとえば、VM が NIC1 を通って物理スイッチと通信しているとします(図1の状態)。

この状態で NIC1 のリンクがダウンすると、仮想スイッチはリンクダウンを検知し、NIC1 を使っていた通信をほかの NIC に切り替えます。

ESXiホスト仮想スイッチVMNIC1NIC2NIC3物理スイッチリンクダウン
図5 NIC1 のリンクダウンを検知して、NIC2 に切り替える

リンクダウンでは検知できない障害

では、ESXi から見てリンクダウンが起きない障害はどうでしょうか。たとえば、次のように NIC1 と NIC2・NIC3 がそれぞれ別の物理スイッチにつながっているとします。

ESXiホスト仮想スイッチVMNIC1NIC2NIC3物理スイッチA物理スイッチB
図6 NIC1 は物理スイッチA、NIC2・NIC3 は物理スイッチBにつながる構成

この構成で、物理スイッチAとBの間の接続がダウンしたとします。ESXi ホストから見ると、自分の NIC のリンクがダウンしたわけではないので、リンク状態だけではこの障害を検知できません。

その結果、物理スイッチAが孤立し、NIC1 を通る通信は上位に出られなくなります。

ESXiホスト仮想スイッチVMNIC1NIC2NIC3物理スイッチA物理スイッチB上位に出られない
図7 スイッチ間の障害で物理スイッチAが孤立する。NIC1 のリンクはアップのまま

ビーコンプローブで検知する

このようなケースに備えるのが、ビーコンプローブです。ESXi は、チーム内のすべての物理 NIC から1秒ごとにビーコンパケットを送り、ほかの NIC で受信できるかを確かめて、正常性を判断します。

今回の障害では、NIC2 と NIC3 の間ではビーコンが届くのに、NIC1 とは届かないため、ESXi は NIC1 を障害とみなし、ほかの NIC へフェールオーバします。

ESXiホスト仮想スイッチVMNIC1NIC2NIC3物理スイッチA物理スイッチBNIC2⇔NIC3:ビーコンが届くNIC1:届かない → 障害と判断
図8 NIC1 とビーコンが届かないので、NIC1 を障害とみなして切り替える
ビーコンプローブの条件
  • どの NIC が障害かを判断するために、チームには3つ以上の物理 NIC が必要で、それぞれ別の物理スイッチにつなぐことが前提です。
  • チームの NIC はアクティブ/アクティブか、アクティブ/スタンバイにします(未使用の NIC はビーコンに参加しません)。
  • IP ハッシュ(リンクアグリゲーション)とは組み合わせません。

まとめ

方式・機能NIC の選び方物理スイッチの設定
発信元の仮想ポートポート ID ごとに固定(標準スイッチの既定)不要
発信元 MAC ハッシュ仮想 NIC の MAC アドレスのハッシュ不要
IP ハッシュ送信元・宛先 IP アドレスのハッシュリンクアグリゲーションが必要
リンク状態のみNIC のリンクダウンで切り替え―
ビーコンプローブビーコンの送受信で、スイッチ先の障害も検知3つ以上の NIC を別々のスイッチに

コメント