インターフェイスが無差別モードで動作しているときに、重複するマルチキャスト パケットまたはブロードキャスト パケットが仮想マシンによって受信される
search cancel

インターフェイスが無差別モードで動作しているときに、重複するマルチキャスト パケットまたはブロードキャスト パケットが仮想マシンによって受信される

book

Article ID: 319884

calendar_today

Updated On: 03-05-2025

Products

VMware vSphere ESXi

Issue/Introduction

次のような症状が確認されています。
  • 無差別モードが仮想スイッチ ポートグループで [受け入れる] に設定され、仮想マシン ゲスト OS がその vNIC を無差別モードにする
  • 仮想マシン内でパケット キャプチャを実行すると、マルチキャスト パケットとブロードキャスト パケットが複数回受信される。
  • vSwitch には NIC チーミングが構成され、ロード バランシング ポリシーは「発信元ポート ID に基づいたルート」、「発信元 MAC ハッシュに基づいたルート」、「明示的なフェイルオーバー順序を使用」または「物理 NIC 負荷に基づいたルート」のいずれかである
  • 無差別モードの仮想マシンで実行されているマルチキャスト アプリケーションおよびプロトコル(CARP など)で、受信パケットが重複しているために問題が発生する


Symptoms:
免責事項:これは英文の記事「Duplicate Multicast or Broadcast Packets are Received by a Virtual Machine When the Interface is Operating in Promiscuous Mode (329011) 」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。

Cause

NIC チーム環境で、仮想スイッチに複数のアップリンクが設定され、物理スイッチにポート チャネルまたは LACP が設定されていない場合、vSwitch は NIC チーム内の各 vSwitch アップリンク上で物理ネットワークからマルチキャストまたはブロードキャスト パケットを受信します。vSwitch が受信したトラフィックはすべて無差別モードで仮想ポートグループに転送されるため、仮想マシン ゲスト OS は複数のマルチキャスト パケットまたはブロードキャスト パケットを受信します。

無差別モードの詳細については、「How promiscuous mode works at the virtual switch and portgroup levels(324553) 」を参照してください。

Resolution

この問題を回避するには、/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 ポートに接続され、パケットをフィルタリングしていることを示します。

Note:vDS 6.6 以上の場合、フィルタ名は「Team_ReverseFilterPerList」から「vswith-reverse」に変更されています。