¿Qué es el espionaje multidifusión y por qué rompe UPnP / DLNA?

Tengo un server que, entre otras cosas, sirve medios sobre DLNA (UPnP) usando mediatomb . Los clientes usan Simple Service Discovery Protocol (SSDP) para ubicar el server en la networking.

Descubrí que las consultas M-SEARCH descubrimiento SSDP no respondían y, finalmente, seguí el problema hasta el hecho de que el server utilizaba una interfaz puenteada que tenía activada la detección multidifusión (porque los puentes lo tienen activado de manera pnetworkingeterminada).

Arreglé mi problema con

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

Sin embargo, aunque esto funciona en mi situación, no entiendo lo que está haciendo y si hay alguna implicación que desconozco. De ahí la pregunta …

¿Qué es el espionaje de multidifusión, por qué rompe SSDP, por qué se lo quiere y por qué está habilitado de forma pnetworkingeterminada en un puente, y qué problemas pueden causar al deshabilitarlo porque presumiblemente está habilitado de manera pnetworkingeterminada con una buena razón?

La multidifusión puede representar una gran carga para los enrutadores conmutadores (sin mencionar el aspecto de security con posibles ataques DoS). En un conmutador (o un puente de Linux), multidifusión snooping asientos en la capa de networking 2.5 y está destinado a aliviar la carga mediante:

  • fisgoneando el tráfico de la networking
  • identificar los canales de multidifusión a los que está suscrito cada puerto de conmutación
  • filtrando otro tráfico de multidifusión

Como suena, esta es siempre una característica deseable (a less que desee depurar el tráfico de multidifusión). Entonces, ¿por qué deshabilitar la intrusión multidifusión?

Porque te enfrentas es un error que encontré hace algunos años con Corosync y dos máquinas virtuales en dos hosts diferentes: el tráfico está bien hasta cierto punto donde todo el tráfico de multidifusión entrante parece ser eliminado por el host (aunque sus tablas iptable están completamente vacías) . AFAIK, esto era un error en un kernel 3.x y tuve que deshabilitar el espionaje multicast de la misma manera que tú. Si mi memory me sirve, estaba usando Debian (Wheezy o Jessie) en ese momento, pero este informe de errores RedHat describe exactamente el problema que tenía.

Como se explica en este informe de error, si tiene la posibilidad, es preferible:

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

que:

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