Que tenga multidifusión pasando por su caja de Linux mediante el uso de enrutamiento de unidifusión es una combinación de un par de circunstancias afortunadas.
El enrutamiento de multidifusión no es lo mismo que el enrutamiento de unidifusión. El enrutamiento de unidifusión se basa en que el tráfico se envía a una sola dirección, pero el tráfico de multidifusión se envía a una dirección de grupo que representa a los hosts que desean suscribirse al grupo de multidifusión.
Los hosts usan IGMP para decirle a un enrutador de multidifusión que desean unirse a un grupo de multidifusión, y el enrutador de multidifusión comenzará a enviar tráfico de multidifusión para ese grupo a la red de los hosts que lo soliciten.
Los conmutadores modernos utilizarán IGMP Snooping para determinar qué puertos de conmutador tienen hosts que solicitan unirse a un grupo de multidifusión en particular, y solo enviarán tráfico para ese grupo de multidifusión a los puertos de conmutador donde los hosts solicitaron unirse al grupo de multidifusión.
Linux, por sí mismo, no admite el enrutamiento de multidifusión y debe agregar algo al dispositivo Linux para admitir el enrutamiento de multidifusión. Consulte el siguiente diagrama:
Cuando la fuente de multidifusión comienza a enviar tráfico de multidifusión para un grupo de multidifusión, es probable que el conmutador no haya visto ninguna solicitud IGMP para unirse al grupo de multidifusión, por lo que el tráfico de multidifusión para ese grupo no llega a ninguna parte.
Cuando una de las PC en el mismo conmutador quiere unirse al grupo de multidifusión, enviará un mensaje IGMP Join, y el conmutador lo detectará y enviará el tráfico de multidifusión al puerto donde está conectada la PC solicitante.
Si una PC en el otro lado del enrutador Linux quiere unirse al grupo de multidifusión, no tiene suerte porque el tráfico de multidifusión no fluye hacia ese lado del enrutador Linux. El enrutador Linux ni siquiera se ha unido al grupo de multidifusión, por lo que el conmutador nunca le envía el tráfico de multidifusión.
Cuando ejecuta el enrutamiento de multidifusión en un enrutador, el enrutador responderá a la solicitud IGMP del host y el conmutador sabrá que es un enrutador de multidifusión y enviará tráfico de multidifusión al puerto del conmutador donde está conectado el enrutador de multidifusión. De manera simple, el enrutador no enviará el tráfico de multidifusión a otra interfaz a menos que haya un receptor activo en otra interfaz (esto depende de la versión de multidifusión, por ejemplo, PIM-DM comenzará a enviar, pero retrocederá si no se ven solicitudes IGMP) .
Con el enrutamiento de multidifusión habilitado en el enrutador, una PC conectada a la otra interfaz enviará un mensaje IGMP Join y el enrutador de Linux comenzará a enviar el tráfico de multidifusión para el grupo solicitado a la interfaz. El conmutador husmeará en la solicitud y enviará tráfico de multidifusión al puerto del conmutador donde está conectada la PC que solicitó unirse al grupo de multidifusión.
Se vuelve más complicado si necesita enrutar a través de múltiples enrutadores. IGMP se utiliza entre los hosts y el enrutador de multidifusión local. PIM (o algún otro protocolo de enrutamiento de multidifusión) se usa entre enrutadores de multidifusión.
Todo esto evita que el tráfico de multidifusión vaya a donde no se desea.
Existen complementos para Linux que lo ayudan a manejar correctamente IGMP y enrutamiento de multidifusión.