IGMP: ¿qué se esconde detrás del Internet group management protocol?

A partir del éxito alcanzado por servicios de streaming como Netflix o Spotify, la multidifusión IP se ha convertido en un método de transferencia de datos indispensable para Internet y las redes domésticas. Este procedimiento técnico permite al emisor enviar flujos de datos dirigidos a grupos de destinatarios completos, lo que permite aprovechar de forma óptima estas capacidades de transporte y enrutamiento. Sin este método de transferencia, el emisor tendría que enviar paquetes de datos por separado a cada dispositivo receptor, lo que requeriría un enorme ancho de banda y provocaría una sobrecarga en poco tiempo. Esto haría prácticamente imposible mantener la disponibilidad del servicio de forma duradera.

Un protocolo que desempeña un papel fundamental en la organización de los mencionados grupos de receptores de multidifusión en redes IPv4 es el Internet group management protocol (IGMP).

¿Qué es Internet group management protocol?

Internet group management protocol es un protocolo de comunicación de la familia TCP/IP que se desarrolló en la Universidad de Stanford y se especificó por primera vez en 1989 en los host de extensiones RFC 1112. A esta primera versión del protocolo IGMPv1 le siguieron las revisiones IGMPv2 (RFC 2236) y IGMPv3 (RFC 3376; RFC 4604). Cada versión siempre es compatible con las versiones anteriores y, por lo tanto, un dispositivo IGMPv3 también es compatible automáticamente con la versión 1 y 2. Internet group management protocol es responsable únicamente de las redes IPv4, mientras que en las redes IPv6 se utiliza un protocolo muy parecido, el Multicast Listener Discovery (MLD).

La tarea fundamental del IGMP es gestionar grupos dinámicos para las transmisiones de multidifusión IP, aunque esta gestión no se realiza desde el propio dispositivo de emisión, sino a través de los routers integrados. Por un lado, estos reciben las solicitudes de inclusión en un grupo de multidifusión determinado de los dispositivos receptores (o también de los routers subordinados correspondientes). Por otro lado, reenvían los mensajes IGMP a los routers principales correspondientes cuando reciben paquetes de datos de multidifusión apropiados. La estación emisora no recibe ninguna información sobre cuáles o cuántas son las estaciones de destino que alcanza un paquete enviado, ya que solamente reenvía un único paquete de datos a los routers principales.

Definición

IGMP (Internet group management protocol) es un protocolo de comunicación de la familia de protocolos de Internet (TCP/IP). Se especificó por primera vez en 1989 en RFC 1112 y está activo en la capa de red del modelo de referencia OSI. El protocolo IGMP es responsable de la organización de grupos de multidifusión que permiten el envío de flujos de datos IP a varios destinatarios. De este modo, el Internet group management protocol se aplica automáticamente en todos los hosts que soportan multidifusión IP.

¿Cómo funciona el IGMP?

Como ya hemos comentado, la gestión de los grupos a través del IGMP no es una de las funciones que se encuentran dentro del ámbito de responsabilidad del emisor del paquete. Sin embargo, como en todas las estaciones de la red implicadas, (incluida la del receptor), este host de salida debe apoyar a las conexiones de multidifusión. La recepción de las solicitudes de los clientes para su inclusión en un grupo de multidifusión concreto, así como la notificación a los clientes en el caso de flujos de datos de multidifusión entrantes, la realizan los routers de red individuales ubicados entre el transmisor y el receptor.

Con este fin, el Internet group management protocol ofrece, por una parte, funciones que permiten a una estación transmitirle al router que tiene asignado que un cliente puede unirse a un grupo de multidifusión. Por otro lado, habilita a los routers para que recuerden las interfaces salientes de aquellos dispositivos receptores que deben recibir flujos de datos de multidifusión IP específicos para, a continuación, poder enviar notificaciones (informes) específicas en cuanto se reciben los datos correspondientes. Los grupos de multidifusión se caracterizan por sus direcciones específicas en el rango 224.0.0.x. En la mayoría de los casos, el primer puerto de entrada de un dispositivo es el router doméstico que nos proporciona acceso a Internet, recibe la solicitud de adhesión y la transmite al siguiente nodo de la red, que suele ser el router del proveedor de servicios de Internet. Esta cadena de comunicación termina en el router del transmisor de flujo de datos que, a su vez, duplica el paquete IP según sea necesario cuando tiene que transmitir a varias interfaces de salida.

Nota

Si se incluye un segundo o tercer terminal en una red privada del mismo grupo de multidifusión, el router de Internet podrá aprobar la solicitud de adhesión de inmediato; con lo cual, los flujos de datos recibidos serán directamente transmitidos. La transferencia de datos no terminará hasta que el último de estos dispositivos haya abandonado el grupo.

¿En qué difieren las versiones del IGMP?

Las tres versiones publicadas del Internet group management protocol tienen muchas similitudes. IGMPv2 y IGMPv3 ampliaron principalmente las funciones de su predecesor, mientras que las características básicas como la dirección de grupo para consultas generales (0.0.0.0) se adoptaron sin cambios. Pero ¿en qué consiste exactamente cada una de las ampliaciones?

IGMPv1: la base de los Internet group management protocols

IGMPv1 fue la primera versión publicada del protocolo de comunicación y se caracteriza por tener algunas funciones básicas, muchas de las cuales también se encuentran en las versiones más recientes. Así, en la IGMPv1 ya se definió 0.0.0.0 como dirección de grupo, así como 224.0.0.1 como dirección de destino para consultas generales del IGMP. El intervalo estándar de estas solicitudes generadas automáticamente por el router es de 60 segundos. IGMPv1 permite a todos los host soportados adherirse a los grupos de multidifusión adecuados. Las solicitudes de adhesión se envían a modo de informes a las direcciones de multidifusión IP correspondientes. A diferencia de los protocolos siguientes, al IGMPv1, sin embargo, le falta una función que permita a los host abandonar grupos por su propia cuenta: al superar un límite de tiempo se elimina a ese host de los grupos a los que ha accedido.

Todos los mensajes IGMP se transportan en paquetes IP sencillos con el número de protocolo IP 2 (Hex: 0x02). La cabecera IGMP de la primera versión del protocolo es como se muestra a continuación:

La cabecera IGMP tiene una longitud total de 64 bits. Los primeros 8 bits siempre indican, en primer lugar, la versión de protocolo IGMPv1, así como el tipo de mensaje. Para este campo (tipo) existen dos posibilidades: “1” (para solicitudes de adhesión) y “2” (para notificaciones sobre flujos de datos de multidifusión). Le siguen los bits 8 a 15, que no tienen ninguna función y solo están compuestos de ceros. El primer bloque de 32 bits termina con una suma de control. Si se trata de un paquete de notificación IGMP, le seguirá la dirección de grupo de 32 bits. Sin embargo, a las solicitudes de adhesión va unida una sección que solo contiene ceros (dirección de grupo 0.0.0.0).

La versión original de la línea del protocolo no determina en sí misma qué router debe utilizarse para las consultas multidifusión (regulado por el Multicast Routing Protocol).

IGMPv2: introduce el mensaje de abandono y un tipo de mensaje específico de cada grupo

La especificación IGMPv2 se remonta a 1997, es decir, la primera revisión de la norma tuvo lugar unos 8 años después de la primera publicación del protocolo. Mientras que la dirección de los grupos (0.0.0.0) y la de destino (224.0.0.1) para las solicitudes automatizadas no sufrieron ningún cambio, la duración del intervalo estándar aumentó a 125 segundos. Sin embargo, la novedad principal de IGMPv2 es la aceleración del proceso de cierre de sesión: el límite de tiempo requerido en la primera versión del protocolo se sustituye por un proceso de cierre de sesión iniciado por un host mediante un mensaje de “abandono”. Como destino para este tipo de mensaje se definió la dirección 224.0.0.2.

Otra novedad de la segunda versión del protocolo de comunicación: se puede determinar el estado de recepción de una dirección de multidifusión específica a través de los mensajes específicos de grupo.

Asimismo, los mensajes IGMPv2 se envían en paquetes IP sencillos con el número 2 de protocolo IP. En la cabecera IGMP sí se realizaron una serie de pequeños ajustes:

La línea de la cabecera tiene un comienzo similar al de primera versión del protocolo, sin especificar el número de versión. Los códigos de tipos posibles son “0x11” (para solicitudes), “0x16” (para notificaciones) y “0x17” (para mensajes de abandono). En cuanto a la compatibilidad con versiones anteriores, también existe el código “0x12” para las notificaciones IGMPv1. Los bits de 8 a 15 reciben una función específica en IGMPv2 (al menos cuando se trata de solicitudes de adhesión) y definen el tiempo de respuesta máximo admisible. A ello le sigue la suma de control (16 bits) y la dirección de grupo (32 bits) que, a su vez, tiene la forma típica de protocolo 0.0.0.0 para consultas generales.

IGMPv2 especifica la regla de que el router con la dirección IP más baja de la subred se utiliza para las consultas multidifusión.

IGMPv3: incrementa la seguridad gracias a las fuentes de multidifusión seleccionables específicamente

IGMPv3, la tercera versión del Internet group management protocol, está disponible desde octubre de 2002. En esta versión revisada del protocolo también se contemplan 0.0.0.0 y 224.0.0.1 como dirección de grupo y de destino respectivamente para consultas generales. Con respecto al intervalo estándar, la versión del protocolo, con 125 segundos, está basada en la versión anterior. Una novedad es la opción de seleccionar la fuente del flujo multicast específicamente. La denominada multidifusión de fuente específica (source-specific multicast) reduce las demandas de la red enormemente y también garantiza más seguridad durante la transmisión debido a que no se utilizan fuentes desconocidas o arbitrarias.

En el IGMPv3, la cabecera IGMP también está integrada en paquetes IP (protocolo número 2), pero resulta considerablemente más compleja que en los dos protocolos anteriores; sobre todo, debido a la posible indicación de la dirección de origen. Además, existen diferencias específicas entre las solicitudes y las notificaciones. La línea de la cabecera para las solicitudes de grupos IGMPv3 tiene el siguiente aspecto:

Las dos primeras secuencias de 32 bits son idénticas a las de la cabecera IGMPv2: tipo, tiempo de respuesta máximo, suma de control y dirección de grupo. IGMPv3 también ofrece, en este punto, la posibilidad de intercambiar con versiones de protocolo anteriores: Para ello, el host tiene a su disposición el código “0x12” para la versión 1 y el “0x16” para la versión 2. Después de la dirección de grupo comienza la parte de la cabecera específica de la consulta IGMPv3 cuyos primeros 32 bits tienen la siguiente composición:

  • Res.: campo de 4 bits reservado que no tiene ninguna función y solo contiene ceros.
  • S (Suppress Router-Side Processing): bandera S, que configura los routers con el valor “1” e indica que deben suprimir las actualizaciones normales cuando reciban una solicitud. Si el valor es “0”, el campo estará inactivo.
  • QRV (Querier’s Robustness Variable): 3 bits que pueden incluir el valor “variable de robustez”, que utilizan los host solicitantes.
  • QQIC (Querier’s Query Interval Code): campo de 8 bits sobre el que se especifica el intervalo de solicitudes IGMPv3.
  • Número de direcciones de origen: número de direcciones de origen que se enumeran a continuación.

A esta información tan específica le sigue la dirección de origen o un listado de cada una de las direcciones de origen (de 32 bits cada una), siempre que deban definirse varias fuentes.

Consejo

Encontrarás las diferencias entre la cabecera del segundo tipo de mensaje (notificaciones IGMPv3) y las cabeceras de las solicitudes IGMPv3 presentadas en este artículo en el capítulo 4.2 del RFCs 3376 .

A diferencia de su predecesor, IGMPv3 permite que un host se una a un grupo y abandone otro en una sola transacción. IGMPv2 necesita para ello dos mensajes separados.

¿Dónde se aplica el Internet group management protocol?

El papel del IGMP está claramente definido: el protocolo de comunicación se utiliza siempre en aquellos casos en los que sean necesarias las transmisiones de multidifusión en redes IPv4 como Internet. Algunos ámbitos de uso habituales son las aplicaciones en tiempo real que se ejecutan a través de conexiones multipunto; un ejemplo de ello pueden ser las herramientas para conferencias web o los servicios de streaming en vivo. El objetivo no es servir a cada cliente de forma individual con el flujo de datos que necesita, ya que esto podría conducir rápidamente a una sobrecarga del servidor de origen y de los nodos de red implicados.

Nota

Muchos conmutadores y routers ofrecen la posibilidad de filtrar el tráfico de datos multicast en redes para optimizar el rendimiento de la red. Para ello, los dispositivos recurren al llamado IGMP snooping, que también es posible gracias al Internet group management protocol.

Utilizamos cookies propias y de terceros para mejorar nuestros servicios y mostrarle publicidad relacionada con sus preferencias mediante el análisis de sus hábitos de navegación. Si continua navegando, consideramos que acepta su uso. Puede obtener más información, o bien conocer cómo cambiar la configuración de su navegador en nuestra. Política de Cookies.