VMware

Unofficial Tech Memo - Koji Komatsu

このblogは小松康二の個人的なメモですのでサポート外の設定や勘違い等が含まれている可能性があります

Previous Next
3

VMware ESXの大きな特徴の1つに、標準機能で柔軟なNICチーミングが実現できることがあげられる。

NICチーミングと言えば、冗長性の確保と負荷分散による帯域の有効活用の2つの目的があるが、自動での負荷分散については3つのアルゴリズムを選択できる。このアルゴリズムの選択と物理スイッチ側のLink Aggregationの設定には関連性がある。具体的には、IPハッシュベースの場合は物理スイッチ側でLink Aggregationが必須であり、MACハッシュベースおよびポートIDベースの場合にはLink Aggregation禁止となっている。特に後者は「禁止」という点が重要だ。(http://kb.vmware.com/kb/1001938)

禁止の理由は「リバースチーミング(Reverse Teaming)」と呼ばれる実装。これはポートIDベースやMACハッシュベースの場合にはLink Aggregationされていないことを前提に、マルチキャストとブロードキャストがチーミングされた複数のNICから重複して仮想マシンに到達することを防ぐために、仮想マシンが送信に使用している物理NIC以外からのパケットをドロップするという機能。これは物理ネットワークにおけるReverse Path Forwardingと呼ばれるマルチキャストの重複転送を防ぐ機能を参考にした機能で、万一Link Aggregationされていると、ドロップすべき物理NICからのみパケットが受信され、結局仮想マシンには届かないという事態が発生しうる。

ここまでは物理スイッチでLink Aggregationを有効にするか無効にするかというだけの話だが、それでは、同じ仮想スイッチ(同じNICチーミング)を使用する複数のポートグループで負荷分散のアルゴリズムを分けて併用したい場合はどうすればよいだろうか。本来は、Link Aggregation必須と禁止のグループが共存することはできないはずだが、一つだけ抜け穴がある。それは、リバースチーミングを無効にしてしまうこと。リバースチーミングのオフは、ESXの詳細設定(Advanced Settings)のNet.ReversePathFwdCheckを0に設定することで実現できる。もちろん、この場合にはアルゴリズムに関わらず物理スイッチ側ではLink Aggregationが必須になる。さもなければ、ブロードキャストやマルチキャストは、チーミングを構成する物理NICの枚数だけ複製され、重複して仮想マシンに届くことになる。

なお、この設定が正式サポートである可能性は低いと思われる。



Add a comment Leave a comment on this blog post.
Dec 27, 2008 4:23 AM Reply James

まぜる要件って、今までありましたでしょうか?今のところ遭遇してないので、とりあえず安心してましたが。

Dec 28, 2008 2:25 AM Reply kkomatsu in response to: James

コメントありがとうございます。
データストアのiSCSI/NFSをIPハッシュで通信しながら、仮想マシンの通信は特定のNICを明示的な指定で使い分けたい、しかも仮想スイッチを1つに抑えたいというケースで話題に上がったことは何度かあります。といっても、この方法をお勧めするわけではありませんが。。

Jan 6, 2009 6:25 AM Reply sysengvmw VMware in response to: kkomatsu

iSCSIで、そういうケースだとIP Hashでやらずに、VMKernel portを別セグで作った方がいいかもしれませんね。iSCSI/NFSの機能にもよるし、スケールしにくいけど。(from James)

Click to view kkomatsu's profile Member since: Jul 29, 2007

このblogは小松康二の個人的なメモですのでサポート外の設定や勘違い等が含まれている可能性があります

View kkomatsu's profile

Communities