O que é snooping multicast e por que ele quebra o UPnP / DLNA?

4

Eu tenho um servidor que, entre outras coisas, serve mídia sobre DLNA (UPnP) usando mediatomb . Os clientes usam o Simple Service Discovery Protocol (SSDP) para localizar o servidor na rede.

Descobri que as consultas M-SEARCH do SSDP não estavam sendo respondidas e, eventualmente, rastreou o problema até o fato de que o servidor estava usando uma interface em ponte que tinha espionagem multicast ativada (porque pontes isso habilitado por padrão).

Corrigi meu problema com

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

No entanto, embora isso funcione na minha situação, não entendo o que está fazendo e se há implicações que desconheço. Daí a questão ....

O que é snooping multicast, por que ele quebra o SSDP, por que ele seria desejado e por que ele é habilitado por padrão em uma bridge, e quais problemas podem ser causados por desativá-lo, porque é presumivelmente habilitado por padrão por um bom motivo? / p>     

por starfry 11.09.2017 / 21:23

1 resposta

4

O multicast pode representar uma carga pesada para os roteadores de switch (sem mencionar o aspecto de segurança com possíveis ataques DoS). Em um switch (ou uma ponte Linux), o snooping Multicast fica na camada de rede 2.5 e destina-se a aliviar a carga:

  • bisbilhotando o tráfego de rede
  • identificando os canais multicast com os quais cada porta de switch está inscrita
  • filtrando outro tráfego multicast

Como parece, este é sempre um recurso desejável (a menos que você queira depurar o tráfego multicast). Então, por que desabilitar a espionagem de multicast?

Porque você está enfrentando é um bug que encontrei alguns anos atrás com o Corosync e duas VMs em dois hosts diferentes: o tráfego está OK até um certo ponto em que todo o tráfego multicast de entrada parece ser descartado pelo host (embora seu iptable as tabelas estão completamente vazias). AFAIK, este foi um bug em um kernel 3.x e eu tive que desabilitar a transmissão multicast da mesma forma que você. Se minha memória me serve, eu estava usando Debian (Wheezy ou Jessie) na época, mas esse relatório de erros RedHat descreve exatamente o problema que tive.

Como explicado neste relatório de bug, se você tiver a possibilidade, é preferível:

echo 1 > /sys/devices/virtual/net/br0/bridge/multicast_querier

do que:

echo 0 > /sys/devices/virtual/net/br0/bridge/multicast_snooping
    
por 12.09.2017 / 13:45