br0 导致多播连接在 5 分钟后断开

br0 导致多播连接在 5 分钟后断开

我在路由器(Linux 机器)上设置了这些接口:

br0: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST>  mtu 1500
        inet 192.168.0.3  netmask 255.255.255.0  broadcast 192.168.0.255

bridge name bridge id       STP enabled interfaces
br0     8000.00156d8591ec   no      eth0
                            wlan0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::7271:bcff:feb1:d9cf  prefixlen 64  scopeid 0x20<link>

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.200.44.147  netmask 255.255.255.128  broadcast 10.200.44.255

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::215:6dff:fe85:91ec  prefixlen 64  scopeid 0x20<link>

br0 有两个接口(eth0 - 本地家庭网络和 wlan0 - 无线家庭网络)。 eth1 是互联网连接接口,不是 br0 的一部分。

我使用 mumudvb 通过 IP 组 239.100.0.1 (udp/1234) 发送多播 IPTV,并使用 VLC 播放器在 LAN 上的另一台计算机上接收此多播流量。

当我将其配置为通过 eth0 发送多播时,在家庭 LAN 上一切正常,但我无法从路由器本身加入多播组。

这就是为什么我将其配置为通过 br0 发送多播(更有意义 - 然后我可以从 LAN eth0 以及路由器本身加入多播组),但加入后大约 5 分钟后,LAN 多播连接断开(不发送任何 IGMP 消息) )。但我可以再次加入,并且在接下来的 5 分钟内它会再次工作,然后退出。

为什么通过 br0 发送多播时会丢包,而直接通过 eth0 发送时不会丢包?我是否缺少桥接器上的某些配置?在此期间哪些内容可能会过期?例如,桥接器禁用了 STP,但它不应该影响这一点吗?

当我从路由器本身加入 br0 多播组时,它不会丢失。仅当从通过 eth0 连接到 br0 的机器订阅时。

答案1

当使用br0进行组播时,需要启用IGMP查询器。启用后,IGMP 协议版本将从 v3 更改为 v2,并且它将开始发出成员身份查询并且不再丢弃。

从我在 Google 上搜索的内容来看,似乎没有可以在网桥上启用查询器的实用程序,必须通过/sys以下方式完成:

$ echo -n 1 > /sys/devices/virtual/net/br0/bridge/multicast_querier

答案2

IPTV 经常丢弃 5 分钟,因为您没有来自网络的 IGMP 查询,然后您没有发送报告

解决方案是使用 scapy 通过 python 进程发送常规 IGMP 查询(不要忘记使用正确的 IPTV VLAN...)

这个对我有用 !

答案3

echo 0 > /sys/devices/virtual/net/br0/bridge/multicast_snooping

相关内容