A partir del éxito alcanzado por servicios de streaming como Netflix o Spotify, la mu­l­ti­di­fu­sión IP se ha co­n­ve­r­ti­do en un método de tra­n­s­fe­re­n­cia de datos in­di­s­pe­n­sa­ble para Internet y las redes do­mé­s­ti­cas. Este pro­ce­di­mie­n­to técnico permite al emisor enviar flujos de datos dirigidos a grupos de de­s­ti­na­ta­rios completos, lo que permite apro­ve­char de forma óptima estas ca­pa­ci­da­des de tra­n­s­po­r­te y en­ru­ta­mie­n­to. Sin este método de tra­n­s­fe­re­n­cia, el emisor tendría que enviar paquetes de datos por separado a cada di­s­po­si­ti­vo receptor, lo que re­que­ri­ría un enorme ancho de banda y pro­vo­ca­ría una so­bre­ca­r­ga en poco tiempo. Esto haría prá­c­ti­ca­me­n­te imposible mantener la di­s­po­ni­bi­li­dad del servicio de forma duradera.

Un protocolo que desempeña un papel fu­n­da­me­n­tal en la or­ga­ni­za­ción de los me­n­cio­na­dos grupos de re­ce­p­to­res de mu­l­ti­di­fu­sión en redes IPv4 es el Internet group ma­na­ge­me­nt protocol (IGMP).

¿Qué es Internet group ma­na­ge­me­nt protocol?

Internet group ma­na­ge­me­nt protocol es un protocolo de co­mu­ni­ca­ción de la familia TCP/IP que se de­sa­rro­lló en la Uni­ve­r­si­dad de Stanford y se es­pe­ci­fi­có por primera vez en 1989 en los host de ex­te­n­sio­nes RFC 1112. A esta primera versión del protocolo IGMPv1 le siguieron las re­vi­sio­nes IGMPv2 (RFC 2236) y IGMPv3 (RFC 3376; RFC 4604). Cada versión siempre es co­m­pa­ti­ble con las versiones an­te­rio­res y, por lo tanto, un di­s­po­si­ti­vo IGMPv3 también es co­m­pa­ti­ble au­to­má­ti­ca­me­n­te con la versión 1 y 2. Internet group ma­na­ge­me­nt protocol es re­s­po­n­sa­ble úni­ca­me­n­te de las redes IPv4, mientras que en las redes IPv6 se utiliza un protocolo muy parecido, el Multicast Listener Discovery (MLD).

La tarea fu­n­da­me­n­tal del IGMP es gestionar grupos dinámicos para las tra­n­s­mi­sio­nes de mu­l­ti­di­fu­sión IP, aunque esta gestión no se realiza desde el propio di­s­po­si­ti­vo de emisión, sino a través de los routers in­te­gra­dos. Por un lado, estos reciben las so­li­ci­tu­des de inclusión en un grupo de mu­l­ti­di­fu­sión de­te­r­mi­na­do de los di­s­po­si­ti­vos re­ce­p­to­res (o también de los routers su­bo­r­di­na­dos co­rre­s­po­n­die­n­tes). Por otro lado, reenvían los mensajes IGMP a los routers pri­n­ci­pa­les co­rre­s­po­n­die­n­tes cuando reciben paquetes de datos de mu­l­ti­di­fu­sión apro­pia­dos. La estación emisora no recibe ninguna in­fo­r­ma­ción sobre cuáles o cuántas son las es­ta­cio­nes de destino que alcanza un paquete enviado, ya que solamente reenvía un único paquete de datos a los routers pri­n­ci­pa­les.

De­fi­ni­ción

IGMP (Internet group ma­na­ge­me­nt protocol) es un protocolo de co­mu­ni­ca­ción de la familia de pro­to­co­los de Internet (TCP/IP). Se es­pe­ci­fi­có por primera vez en 1989 en RFC 1112 y está activo en la capa de red del modelo de re­fe­re­n­cia OSI. El protocolo IGMP es re­s­po­n­sa­ble de la or­ga­ni­za­ción de grupos de mu­l­ti­di­fu­sión que permiten el envío de flujos de datos IP a varios de­s­ti­na­ta­rios. De este modo, el Internet group ma­na­ge­me­nt protocol se aplica au­to­má­ti­ca­me­n­te en todos los hosts que soportan mu­l­ti­di­fu­sió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 en­cue­n­tran dentro del ámbito de re­s­po­n­sa­bi­li­dad del emisor del paquete. Sin embargo, como en todas las es­ta­cio­nes de la red im­pli­ca­das, (incluida la del receptor), este host de salida debe apoyar a las co­ne­xio­nes de mu­l­ti­di­fu­sión. La recepción de las so­li­ci­tu­des de los clientes para su inclusión en un grupo de mu­l­ti­di­fu­sión concreto, así como la no­ti­fi­ca­ción a los clientes en el caso de flujos de datos de mu­l­ti­di­fu­sión entrantes, la realizan los routers de red in­di­vi­dua­les ubicados entre el tra­n­s­mi­sor y el receptor.

Con este fin, el Internet group ma­na­ge­me­nt protocol ofrece, por una parte, funciones que permiten a una estación tra­n­s­mi­ti­r­le al router que tiene asignado que un cliente puede unirse a un grupo de mu­l­ti­di­fu­sión. Por otro lado, habilita a los routers para que recuerden las in­te­r­fa­ces salientes de aquellos di­s­po­si­ti­vos re­ce­p­to­res que deben recibir flujos de datos de mu­l­ti­di­fu­sión IP es­pe­cí­fi­cos para, a co­n­ti­nua­ción, poder enviar no­ti­fi­ca­cio­nes (informes) es­pe­cí­fi­cas en cuanto se reciben los datos co­rre­s­po­n­die­n­tes. Los grupos de mu­l­ti­di­fu­sión se ca­ra­c­te­ri­zan por sus di­re­c­cio­nes es­pe­cí­fi­cas en el rango 224.0.0.x. En la mayoría de los casos, el primer puerto de entrada de un di­s­po­si­ti­vo es el router doméstico que nos pro­po­r­cio­na 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 co­mu­ni­ca­ción termina en el router del tra­n­s­mi­sor de flujo de datos que, a su vez, duplica el paquete IP según sea necesario cuando tiene que tra­n­s­mi­tir a varias in­te­r­fa­ces de salida.

Nota

Si se incluye un segundo o tercer terminal en una red privada del mismo grupo de mu­l­ti­di­fu­sión, el router de Internet podrá aprobar la solicitud de adhesión de inmediato; con lo cual, los flujos de datos recibidos serán di­re­c­ta­me­n­te tra­n­s­mi­ti­dos. La tra­n­s­fe­re­n­cia de datos no terminará hasta que el último de estos di­s­po­si­ti­vos haya aba­n­do­na­do el grupo.

¿En qué difieren las versiones del IGMP?

Las tres versiones pu­bli­ca­das del Internet group ma­na­ge­me­nt protocol tienen muchas si­mi­li­tu­des. IGMPv2 y IGMPv3 ampliaron pri­n­ci­pa­l­me­n­te las funciones de su pre­de­ce­sor, mientras que las ca­ra­c­te­rí­s­ti­cas básicas como la dirección de grupo para consultas generales (0.0.0.0) se adoptaron sin cambios. Pero ¿en qué consiste exac­ta­me­n­te cada una de las am­plia­cio­nes?

IGMPv1: la base de los Internet group ma­na­ge­me­nt protocols

IGMPv1 fue la primera versión publicada del protocolo de co­mu­ni­ca­ción y se ca­ra­c­te­ri­za por tener algunas funciones básicas, muchas de las cuales también se en­cue­n­tran 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 so­li­ci­tu­des generadas au­to­má­ti­ca­me­n­te por el router es de 60 segundos. IGMPv1 permite a todos los host so­po­r­ta­dos adherirse a los grupos de mu­l­ti­di­fu­sión adecuados. Las so­li­ci­tu­des de adhesión se envían a modo de informes a las di­re­c­cio­nes de mu­l­ti­di­fu­sión IP co­rre­s­po­n­die­n­tes. A di­fe­re­n­cia de los pro­to­co­los si­guie­n­tes, 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 tra­n­s­po­r­tan 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 co­n­ti­nua­ció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 po­si­bi­li­da­des: “1” (para so­li­ci­tu­des de adhesión) y “2” (para no­ti­fi­ca­cio­nes sobre flujos de datos de mu­l­ti­di­fu­sión). Le siguen los bits 8 a 15, que no tienen ninguna función y solo están co­m­pue­s­tos de ceros. El primer bloque de 32 bits termina con una suma de control. Si se trata de un paquete de no­ti­fi­ca­ción IGMP, le seguirá la dirección de grupo de 32 bits. Sin embargo, a las so­li­ci­tu­des 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 uti­li­zar­se para las consultas mu­l­ti­di­fu­sión (regulado por el Multicast Routing Protocol).

IGMPv2: introduce el mensaje de abandono y un tipo de mensaje es­pe­cí­fi­co de cada grupo

La es­pe­ci­fi­ca­ció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 pu­bli­ca­ció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 so­li­ci­tu­des au­to­ma­ti­za­das 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 ace­le­ra­ció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 co­mu­ni­ca­ción: se puede de­te­r­mi­nar el estado de recepción de una dirección de mu­l­ti­di­fu­sión es­pe­cí­fi­ca a través de los mensajes es­pe­cí­fi­cos 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 rea­li­za­ron una serie de pequeños ajustes:

La línea de la cabecera tiene un comienzo similar al de primera versión del protocolo, sin es­pe­ci­fi­car el número de versión. Los códigos de tipos posibles son “0x11” (para so­li­ci­tu­des), “0x16” (para no­ti­fi­ca­cio­nes) y “0x17” (para mensajes de abandono). En cuanto a la co­m­pa­ti­bi­li­dad con versiones an­te­rio­res, también existe el código “0x12” para las no­ti­fi­ca­cio­nes IGMPv1. Los bits de 8 a 15 reciben una función es­pe­cí­fi­ca en IGMPv2 (al menos cuando se trata de so­li­ci­tu­des 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 es­pe­ci­fi­ca la regla de que el router con la dirección IP más baja de la subred se utiliza para las consultas mu­l­ti­di­fu­sión.

IGMPv3: in­cre­me­n­ta la seguridad gracias a las fuentes de mu­l­ti­di­fu­sión se­le­c­cio­na­bles es­pe­cí­fi­ca­me­n­te

IGMPv3, la tercera versión del Internet group ma­na­ge­me­nt protocol, está di­s­po­ni­ble desde octubre de 2002. En esta versión revisada del protocolo también se co­n­te­m­plan 0.0.0.0 y 224.0.0.1 como dirección de grupo y de destino re­s­pe­c­ti­va­me­n­te 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 se­le­c­cio­nar la fuente del flujo multicast es­pe­cí­fi­ca­me­n­te. La de­no­mi­na­da mu­l­ti­di­fu­sión de fuente es­pe­cí­fi­ca (source-specific multicast) reduce las demandas de la red eno­r­me­me­n­te y también garantiza más seguridad durante la tra­n­s­mi­sión debido a que no se utilizan fuentes de­s­co­no­ci­das o ar­bi­tra­rias.

En el IGMPv3, la cabecera IGMP también está integrada en paquetes IP (protocolo número 2), pero resulta co­n­si­de­ra­ble­me­n­te más compleja que en los dos pro­to­co­los an­te­rio­res; sobre todo, debido a la posible in­di­ca­ción de la dirección de origen. Además, existen di­fe­re­n­cias es­pe­cí­fi­cas entre las so­li­ci­tu­des y las no­ti­fi­ca­cio­nes. La línea de la cabecera para las so­li­ci­tu­des de grupos IGMPv3 tiene el siguiente aspecto:

Las dos primeras se­cue­n­cias 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 po­si­bi­li­dad de in­te­r­ca­m­biar con versiones de protocolo an­te­rio­res: Para ello, el host tiene a su di­s­po­si­ció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 es­pe­cí­fi­ca de la consulta IGMPv3 cuyos primeros 32 bits tienen la siguiente co­m­po­si­ción:

  • Res.: campo de 4 bits reservado que no tiene ninguna función y solo contiene ceros.
  • S (Suppress Router-Side Pro­ce­s­si­ng): bandera S, que configura los routers con el valor “1” e indica que deben suprimir las ac­tua­li­za­cio­nes normales cuando reciban una solicitud. Si el valor es “0”, el campo estará inactivo.
  • QRV (Querier’s Ro­bu­s­t­ne­ss Variable): 3 bits que pueden incluir el valor “variable de robustez”, que utilizan los host so­li­ci­ta­n­tes.
  • QQIC (Querier’s Query Interval Code): campo de 8 bits sobre el que se es­pe­ci­fi­ca el intervalo de so­li­ci­tu­des IGMPv3.
  • Número de di­re­c­cio­nes de origen: número de di­re­c­cio­nes de origen que se enumeran a co­n­ti­nua­ción.

A esta in­fo­r­ma­ción tan es­pe­cí­fi­ca le sigue la dirección de origen o un listado de cada una de las di­re­c­cio­nes de origen (de 32 bits cada una), siempre que deban definirse varias fuentes.

Consejo

En­co­n­tra­rás las di­fe­re­n­cias entre la cabecera del segundo tipo de mensaje (no­ti­fi­ca­cio­nes IGMPv3) y las cabeceras de las so­li­ci­tu­des IGMPv3 pre­se­n­ta­das en este artículo en el capítulo 4.2 del RFCs 3376 .

A di­fe­re­n­cia de su pre­de­ce­sor, IGMPv3 permite que un host se una a un grupo y abandone otro en una sola tra­n­sac­ción. IGMPv2 necesita para ello dos mensajes separados.

¿Dónde se aplica el Internet group ma­na­ge­me­nt protocol?

El papel del IGMP está cla­ra­me­n­te definido: el protocolo de co­mu­ni­ca­ción se utiliza siempre en aquellos casos en los que sean ne­ce­sa­rias las tra­n­s­mi­sio­nes de mu­l­ti­di­fu­sión en redes IPv4 como Internet. Algunos ámbitos de uso ha­bi­tua­les son las apli­ca­cio­nes en tiempo real que se ejecutan a través de co­ne­xio­nes mu­l­ti­pu­n­to; un ejemplo de ello pueden ser las he­rra­mie­n­tas para co­n­fe­re­n­cias web o los servicios de streaming en vivo. El objetivo no es servir a cada cliente de forma in­di­vi­dual con el flujo de datos que necesita, ya que esto podría conducir rá­pi­da­me­n­te a una so­bre­ca­r­ga del servidor de origen y de los nodos de red im­pli­ca­dos.

Nota

Muchos co­n­mu­ta­do­res y routers ofrecen la po­si­bi­li­dad de filtrar el tráfico de datos multicast en redes para optimizar el re­n­di­mie­n­to de la red. Para ello, los di­s­po­si­ti­vos recurren al llamado IGMP snooping, que también es posible gracias al Internet group ma­na­ge­me­nt protocol.

Ir al menú principal