「Dell PE860」がLinux仮想スイッチを実行するネットワークトポロジがありますbr0
。
「IBM ThinkCentre」からブロードキャストアドレスにイーサネットフレームを送信すると、
17:10:23.569021 00:a1:ff:01:02:05 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 34: 127.0.0.1 > 127.0.0.1: ip-proto-0 0
..これで、両方の仮想マシンでこのフレームを見ることができます。br0
MACアドレステーブルから不明なMACアドレスにEthernetフレームを送信してbr0
も正常に動作し、フレームが着信するすべてのポート(eth1
この例では)にフレームをフラッディングします。ただし、「IBM ThinkCentre」からマルチキャストフレームを送信する場合:
17:17:05.513283 00:a1:ff:01:02:05 > 01:33:44:55:66:77, ethertype IPv4 (0x0800), length 34: 127.0.0.1 > 127.0.0.1: ip-proto-0 0
..これにより、Linux仮想スイッチは何らかの理由ですべてのポート(フレームが出たポートを除く)にフラッディングしません。なぜこれが起こるのですか?私はスイッチがブロードキャストフレームを処理するのと同じ方法でマルチキャストフレームを処理したいと思います。
答え1
マルチキャストイーサネットフレーム転送を有効にするには、以下でマルチキャストリスニングを無効にする必要があります/sys/devices/virtual/net/<br_name>/bridge/multicast_snooping
。
答え2
マルチキャストは、マルチキャストグループに参加した花嫁ポートにのみ送信されます。したがって、クライアントがポートのマルチキャストデータに興味があり、igmp結合メッセージをブリッジに送信しない限り、マルチキャストフレームはポートに転送されません。
次の状況では、マルチキャストリスニングが無効になる可能性があります。/sys/devices/virtual/net/<br_name>/bridge/multicast_snooping