我有一个网络拓扑,其中“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
..然后我在两个虚拟机中都看到了这个框架。如果我将以太网帧发送到 MACbr0
地址表中未知的 MAC 地址,则该帧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 join 消息,否则不会将多播帧转发到该端口。
可以在以下情况下禁用多播侦听/sys/devices/virtual/net/<br_name>/bridge/multicast_snooping