我有一台服务器,除其他外,它使用mediatomb
.客户使用简单服务发现协议(SSDP) 来定位网络上的服务器。
我发现 SSDP 发现M-SEARCH
查询没有得到响应,并最终跟踪问题的事实,即服务器使用的是桥接接口,该接口具有组播侦听启用(因为网桥默认启用此功能)。
我解决了我的问题
echo 0 > /sys/devices/virtual/net/br0/bridge/multicast_snooping
然而,尽管这在我的情况下有效,但我不明白它在做什么,以及是否有任何我不知道的含义。因此问题....
什么是多播监听,为什么它会破坏 SSDP,为什么需要它以及为什么它在网桥上默认启用,以及禁用它可能会导致什么问题,因为它可能是默认启用的并且有充分的理由?
答案1
多播可能会给交换机路由器带来沉重的负载(更不用说潜在 DoS 攻击的安全方面)。在交换机(或 Linux 网桥)上,组播侦听位于网络层 2.5,旨在通过以下方式减轻负载:
- 窥探网络流量
- 识别每个交换机端口订阅的多播通道
- 过滤其他多播流量
听起来,这始终是一个理想的功能(除非您想调试多播流量)。那么为什么要禁用多播监听呢?
因为您面临的是几年前我在使用 Corosync 和两个不同主机上的两个虚拟机时遇到的一个错误:流量正常,直到某个点所有传入的多播流量似乎都被主机丢弃(尽管其iptable
表完全为空)。 AFAIK,这是 3.x 内核中的一个错误,我必须像你一样禁用多播监听。如果我没记错的话,我当时使用的是 Debian(Wheezy 或 Jessie),但是这个红帽错误报告准确描述了我遇到的问题。
正如此错误报告中所解释的,如果有可能,最好:
echo 1 > /sys/devices/virtual/net/br0/bridge/multicast_querier
比:
echo 0 > /sys/devices/virtual/net/br0/bridge/multicast_snooping