マルチキャストフレームはLinuxブリッジから削除されます。

マルチキャストフレームはLinuxブリッジから削除されます。

libvirt次のように作成された.VMインターフェイスを使用してx86ホストで実行される仮想マシンがあります。

<interface type='bridge'>
      <mac address='52:54:00:d0:18:eb'/>
      <source bridge='intfe2'/>
      <target dev='vnet4'/>
      <model type='virtio'/>
      <alias name='net4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
    </interface>

intfe2=ホストに存在するLinuxブリッジは次のとおりです。

# brctl show intfe2
bridge name     bridge id               STP enabled     interfaces
intfe2          8000.90e2bab68ff8       no              enp2s0f0
                                                        vnet4

これで、仮想マシン内のインターフェイスにLACPが設定され、ホストvnet4インターフェイスを使用して物理ルータにも同じ設定が設定されます。enp2s0f0

ホストの両方のインターフェイスでマルチキャストフレームが表示されることがわかります。

# tcpdump -ni vnet4 -e
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vnet4, link-type EN10MB (Ethernet), capture size 262144 bytes
15:56:48.160017 34:30:b4:59:06:00 > 01:80:c2:00:00:02, ethertype Slow Protocols (0x8809), length 124: LACPv1, length 110
15:56:49.162163 34:30:b4:59:06:00 > 01:80:c2:00:00:02, ethertype Slow Protocols (0x8809), length 124: LACPv1, length 110

# tcpdump -ni enp2s0f0 -e
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp2s0f0, link-type EN10MB (Ethernet), capture size 262144 bytes
15:57:46.173002 ac:4b:c8:89:d7:c1 > 01:80:c2:00:00:02, ethertype Slow Protocols (0x8809), length 124: LACPv1, length 110
15:57:47.171282 ac:4b:c8:89:d7:c1 > 01:80:c2:00:00:02, ethertype Slow Protocols (0x8809), length 124: LACPv1, length 110
15:57:48.171252 ac:4b:c8:89:d7:c1 > 01:80:c2:00:00:02, ethertype Slow Protocols (0x8809), length 124: LACPv1, length 110

私はUbuntu Xenialを実行しています。

# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.2 LTS
Release:        16.04
Codename:       xenial

私の質問は次のとおりです

  1. なぜ浸水しないのですか?
  2. LinuxブリッジはL2マルチキャストフレームの配信を防止しますか?

次の一部のリンクからLinux仮想スイッチのマルチキャストフレーム私は次のようにIGMPスヌーピングを無効にしました。

echo "0" > /sys/devices/virtual/net/intfe2/bridge/multicast_snooping

次の値を切り替えることもできます。/sys/devices/virtual/net/intfe2/bridge/multicast_querier

どんなアドバイス?

ベストアンサー1

私が考えている問題は、基本的にLinuxブリッジが01:80:c2:00:00:00から01:80:c2:00:00:0fの範囲のターゲットMACアドレスにフレームを渡さないということです。 。 IEEEは、MACブリッジによって転送されるべきではないプロトコルのためにこのアドレスブロックを予約します。 LLDP、LACP、xSTP、およびその他のプロトコルはこの範囲内です。

IEEEには素晴らしい記事があります。標準グループMACアドレス:チュートリアルガイド。必要に応じて、ブリッジカーネルモジュールを再コンパイルしてこれらのフレームの配信を許可することができますが、そうするときに発生するリスクはあなた自身の責任です!を編集して設定する必要が<source_path>/net/bridge/br_private.hあります。ドライバをコンパイルして再読み込みし、次を実行します。#defineBR_GROUPFWD_RESTRICTED0x0u

echo 255 > /sys/class/net/<bridge_name>/bridge/group_fwd_mask

これにより、LLDPを通過できるだけでなく、スパニングツリーフレームも許可できます。したがって、ブリッジングループを導入しないでください。

おすすめ記事