...
免責事項:これは英文の記事「Duplicate Multicast or Broadcast Packets are Received by a Virtual Machine When the Interface is Operating in Promiscuous Mode (59235) 」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。
次のような症状が確認されています。 無差別モードが仮想スイッチ ポートグループで [受け入れる] に設定され、仮想マシン ゲスト OS がその vNIC を無差別モードにする仮想マシン内でパケット キャプチャを実行すると、マルチキャスト パケットとブロードキャスト パケットが複数回受信される。vSwitch には NIC チーミングが構成され、ロード バランシング ポリシーは「発信元ポート ID に基づいたルート」、「発信元 MAC ハッシュに基づいたルート」、「明示的なフェイルオーバー順序を使用」または「物理 NIC 負荷に基づいたルート」のいずれかである無差別モードの仮想マシンで実行されているマルチキャスト アプリケーションおよびプロトコル(CARP など)で、受信パケットが重複しているために問題が発生する
NIC チーム環境で、仮想スイッチに複数のアップリンクが設定され、物理スイッチにポート チャネルまたは LACP が設定されていない場合、vSwitch は NIC チーム内の各 vSwitch アップリンク上で物理ネットワークからマルチキャストまたはブロードキャスト パケットを受信します。vSwitch が受信したトラフィックはすべて無差別モードで仮想ポートグループに転送されるため、仮想マシン ゲスト OS は複数のマルチキャスト パケットまたはブロードキャスト パケットを受信します。無差別モードの詳細については、「How promiscuous mode works at the virtual switch and portgroup levels 」を参照してください。
この問題を回避するには、/Net/ReversePathFwdCheckPromisc 設定を有効にする必要があります。 esxcli system settings advanced set -o /Net/ReversePathFwdCheckPromisc -i 1 設定が有効になっていることを確認するには、次のコマンドを実行します。 esxcli system settings advanced list -o /Net/ReversePathFwdCheckPromisc Path: /Net/ReversePathFwdCheckPromisc Type: integer Int Value: 1 Default Int Value: 0 Min Value: 0 Max Value: 1 String Value: Default String Value: Valid Characters: 説明: 仮想スイッチが無差別モードに設定されている場合、チーム環境内で重複するパケットをブロックします。 この設定は、無差別モードが有効になっているときに特定のクライアントに関連付けられていないアップリンクから受信したパケットを破棄し、重複したパケットがゲスト OS によって受信されるのを防ぎます。これは、ESXi ホスト上のすべての無差別モードの仮想マシンおよび vmkernel インターフェイスに影響します。設定を有効にするには、ゲスト OS によって無差別モードをオフにしてからオンに戻す必要があります。これには、ゲスト OS を再起動するか、/Net/ReversePathFwdCheckPromisc 設定を有効にして vMotion により別の ESXi ホストへ移行すれば十分です。設定を有効にするために ESXi ホストを再起動する必要はありません。/Net/ReversePathFwdCheckPromisc が有効になっていることを確認するには、次のコマンドを実行します。 1. 仮想マシン インターフェイスのポート番号を確認します。 net-stats -l | grep <VM name> 67108871 5 7 DvsPortset-1 00:0c:29:82:24:cf <VM name>.eth2 2. コマンド #1 の出力のポート番号を使用してポートグループの統計情報を確認します(太字の部分はフィルタが適用されていることを示します): vsish -e get /net/portsets/DvsPortset-1/ports/67108871/outputStats io chain stats { starts:8749231 resumes:0 inserts:0 removes:0 errors:0 pktsStarted:9011842 pktsPassed:4508858 pktsDropped:0 pktsCloned:9011785 pktsFiltered:4502984 pktsFaulted:0 pktsQueued:0 pktErrors:0 pktsInjected:0 functions: PRE_FILTER <VLAN_OutputProcessor@(etherswitch)#<None>:0x43014f8b6e10> pktsStarted:9011842 pktsPassed:9011842 pktsDropped:0 pktsFiltered:0 pktsQueued:0 pktsFaulted:0 pktsInjected:0 pktErrors:0 FILTER <Team_ReverseFilterPerList@(etherswitch)#<None>:0x43014f8b6b90> pktsStarted:9011842 pktsPassed:4508858 pktsDropped:0 pktsFiltered:4502984 pktsQueued:0 pktsFaulted:0 pktsInjected:0 pktErrors:0 TERMINAL <<VM Name>.eth2:0x0> pktsStarted:4508858 pktsPassed:0 pktsDropped:4508858 no client stats maintained } 上記の出力は、Team_ReverseFilter が vSwitch ポートに接続され、パケットをフィルタリングしていることを示します。