**** 留意事項 *****
こちらのブログの内容はDECN(Dell EMC Community Network)に投稿されたブログの再掲です。
DECNが近い将来に廃止となるためこちらに移行させていただいております。
内容についてはオリジナルの執筆当時のものとなりますので最新ではない場合がありますがご容赦ください。
** 知っている人にとっては当たり前の内容です**
ESXiは多くの場合、冗長構成をとるために二つ以上のNICを利用し、それぞれ単一、もしくは別個の物理スイッチに接続されていると思います。
ESXiの物理NICはuplinkまたはvmnicとよばれ、ESXi内部にある仮想スイッチ(vSwitch)につながっています。
vSwitchはL2SWとしての役割をするため、物理スイッチをESXiの接続はスイッチ間接続となります。
図1:ネットワークトポロジ
vSwitchが物理スイッチと同等の動作をすると仮定した場合、この構成はループに相当します。
L2レベルでループがある場合は、ブロードキャストストームなどの問題が発生するためにSpanning Tree Protocol(STP)を設定する必要(最近では必ずしもそうとは言い切れないようですが。。。)があります。
ではvSwitchの場合でもSpanning Treeに参加する(ネットワークは専門外なので表現が間違っていたらすみません。。。)必要があるのでしょうか?
表題からもわかるように答えはNoです。
L2ネットワークでBPDUと呼ばれるパケットをやり取りすることでSpanning Treeが構成されますが、実際に、vSwitchではこのBPDUをDropしますので、vSwitchのUplinkがBlockされることはありません。
ではなぜ、vSwitchではトポロジ的にLoopであるにもかかわらずSpanning Treeが不要なのでしょうか?Loopによる問題は発生しないのでしょうか?
実はvSwitchはFloodingが必要な通信に対して特殊な動作をします。
その特殊動作のため、トポロジ的にLoopであっても問題は発生せず、Spanning Treeに参加する必要がないのです。
たとえば、ARPなどの外部からのブロードキャストフレームをuplink経由でvSwitchが受け取った場合、vSwitchに接続されるVMに対してはフレームを転送しますが、ほかのUplinkに対してはフレームを転送しません。
下図ではUplink1からBroadcast Packetを受信した際の動作を示しています。
Broadcast Packetは仮想スイッチに接続されるVMに対して転送されますが、uplink2へは転送されません。
図2:外部からのBroadcast PacketはほかのUplinkへ転送されない
またUnknown Unicast(フレームの宛先MACアドレスがMACアドレステーブルにない場合)を外部からUplink経由で受け取った場合、普通の物理L2SWであればFloodingして宛先を探すことになりますが、vSwitchの場合は宛先MACアドレスに一致するVMがいない場合はそのパケットをドロップし、他のUplinkからFloodingすることはありません。
このような動作をするはvSwitchがあくまで仮想マシンのための通信であって、その他のNodeとの通信を転送する必要がないためだと思われます。
その結果、STPによりBlockされるポートがないため、帯域を損なうことがありません。
言うまでもないことかもしれませんが、ESXi上で稼働するVM起因のBroadcastやUnknown UnicastはちゃんとUplinkへ転送されますのでVMの動作に問題が出ることはありません。
図3:仮想マシン(内部)からのBroadcastやUnknown UnicastはUplinkへ転送される
より詳しく知りたい方は以下の資料が参考になります。
参考資料:
Networking for VMware Administrators (書籍)
Best Practices for Virtual Networking(PDF)