Explorando

Desde un punto de vista de diseño, es necesario conocer los diferentes protocolos de control involucrados en la distribución de contenidos multicast. Los protocolos de control ayudan en la identificación de aquellos receptores interesados en la recepción de flujos de datos muticast y en la construcción del árbol de distribución asociado que permite que los datos fluyan desde fuentes a receptores.

 

Los protocolos de distribución multicast se pueden clasificar en dos grandes categorías:

 

 

  • Host-Router: con el objetivo de señalización entre el receptor y el router de primer salto o First Hop Router (FHR).

  • Router-Router: con el objetivo de señalizar entre routers y construir árboles de distribución multicast o Multicast Distribution Trees (MDT).

 

Multicast Listener Discovery (MLD) se enmarca dentro de la primera categoría, como protocolo de señalización cuyo objetivo es la identificación de receptores interesados en la recepción de grupos multicast.

 

Conceptos Generales de MLD

 

Como ya hemos dicho, MLD es un protocolo empleado entre el receptor y el FHR para señalizar la presencia de receptores interesados en escuchar un determinado grupo multicast, es decir, para descubrir receptores.

 

MLD permite que los dispositivos habilitados para multicast puedan identificar qué grupos multicast tienen receptores en cada uno sus enlaces directamente conectados. Desde un punto de vista técnico MLD supone una simplificación con respecto a versiones anteriores, ya que, en lugar de tratarse de un protocolo totalmente independiente, se integra dentro de ICMPv6 como un módulo adicional.

 

mcast-mld1-proto.png

 

Todos los paquetes de datos MLD se envían con dirección origen o Source Address (SA) correspondiente a la dirección link-local unicast del interfaz de salida y con el parámetro Hop Limit establecido a 1.

 

MLD cuenta con dos versiones disponibles, MLDv1 y MLDv2. La primera versión se especifica bajo la RFC 2710, mientras que la segunda se encuentra cubierta por la RFC 3810.

 

MLDv1 fue diseñado para entornos ASM, donde los receptores inicialmente se unen a un determinado grupo multicast G sin conocer cuáles pueden llegar a ser las fuentes. Con MLDv2, los receptores son capaces de señalizar al FHR su interés en la recepción de datos de un determinado grupo, y de modo opcional, pueden indicar de que fuente en concreto quieren recibir el flujo multicast. MLDv2 ha sido diseñado específicamente para ser compatible con la versión anterior.

 

 

Tipo

Estado

Versión

ASM

(*,G)

MLDv1

MLDv2

SSM

(S,G)

MLDv2

 

 

MLDv1

 

La primera versión de MLD se utiliza para que los receptores señalicen su interés en recibir datos correspondientes a un determinado grupo multicast sin ningún tipo de filtrado de fuente, es decir, se usa para unirse o join (*,G) y abandonar o leave (*,G) un determinado grupo multicast G.

 

Esta versión define tres tipos de mensajes Multicast Listener (ML): ML Query, ML Report y ML Done.

 

  • ML Query: para enviar consultas generales o General Queries sobre todos los grupos multicast o sobre un grupo multicast específico G a través de un subtipo denominado Multicast Address Specific (MAS) Query.

  • ML Report: para unirse a grupos; Join (*,G).

  • ML Done: para abandonar grupos; Leave (*,G).

 

 

Tipo ICMP

Mensaje ML

Funcionalidad

Destino IP

Campo Multicast Address

131

Report

Join Group

G

G

132

Done

Leave Group

FF02::2

G

130

General Query

General Query

FF02::2

::/0

130

MAS Query

Specific Query

G

G

 

 

El proceso MLD Querier Election sirve para asegurarse de que sólo exista un MLD Querier por segmento de red compartido. Cuando los routers habilitados para MLD pasan a estado operativo, comienzan a enviar ML Queries a través de los interfaces conectados al segmento de red compartido y el dispositivo con la dirección IP más baja numéricamente hablando se convierte en el MLD Querier. Los demás equipos con direcciones IP más altas se convierten del mismo modo en Non-queriers y dejan de enviar ML Queries, delegando su envío en el dispositivo elegido en el paso anterior.

 

mcast-mld1-querier-election.png

 

Una vez seleccionado el MLD Querier, los receptores interesados en la recepción de un determinado grupo multicast G pueden señalizar dicho interés al FHR mediante el envío de un mensaje ML Report indicando su interés en unirse al grupo G: Join (*,G).

 

El mensaje ML Report se envía con la dirección multicast G como dirección IP de destino del datagrama IP, especificando también el grupo multicast en el campo Multicast Address Field del mensaje MLD.

 

mcast-mld1-join.png

 

Cuando los receptores dejen de estar interesados en recibir información enviada a un determinado grupo multicast G, pueden señalizar dicha circunstancia al FHR mediante el envío de un mensaje ML Done con el objetivo de abandonar el grupo G: Leave (*,G).

 

El formato del mensaje MLD es muy similar al del caso anterior, con cambios en la dirección IP de destino, que en este caso es FF02::2.


mcast-mld1-leave.png


Una vez que el FHR recibe el mensaje Leave con la intención de abandonar el grupo multicast G de algún receptor, envía un ML MAS Query con el objetivo de averiguar si existen en ese mismo segmento de red más receptores interesados en seguir recibiendo información de ese determinado grupo.

 

Si se da el caso de que aún existen receptores interesados en la recepción de ese grupo multicast, enviarán (técnicamente sólo uno de ellos) un mensaje ML Report informando al FHR de este hecho para mantener el flujo de datos correspondiente a ese grupo en el segmento compartido.

 

La facilidad de supresión de mensajes ML Report habilitada en MLDv1 permite la supresión de todos los mensajes ML Report subsiguientes enviados por los receptores cuando escuchan que uno de los receptores en el mismo segmento de red compartido ya ha contestado al mensaje.

 

Las ML General Queries se envían periódicamente en el segmento de red compartido y no como respuesta a un cambio en el estado de los receptores.