Protocolo de administración de grupos de Internet

El Protocolo de administración de grupos de Internet ( IGMP ) es un protocolo que permite a los enrutadores IP determinar dinámicamentequégrupos de multidifusión tienen clientes en una subred .

Usando IGMP

IGMP es un protocolo asimétrico en el sentido de que el comportamiento especificado para los hosts difiere del de los enrutadores de multidifusión. Sin embargo, dado que un enrutador de multidifusión puede suscribirse a un grupo de multidifusión como un host, los enrutadores de multidifusión deben realizar ambas partes del protocolo.

IGMP es un protocolo que se ejecuta entre las máquinas host de la misma subred y los enrutadores de multidifusión de esta subred. Permite que una máquina host informe a uno de estos enrutadores de multidifusión sobre sus suscripciones actuales a grupos de multidifusión . Los enrutadores mantienen una lista de grupos de multidifusión para los que las máquinas host les han informado que están suscritas. Esta lista se mantiene para cada una de las subredes que un enrutador de multidifusión interconecta y permite que el enrutador determine los paquetes IP de multidifusión para retransmitir en estas subredes. Un paquete IP de multidifusión se retransmite en una subred si la dirección de destino de este paquete es la de uno de los grupos de multidifusión asociados con esta subred.

En IPv6 , las funciones de IGMP son asumidas por el protocolo Multicast Listener Discovery (MLD), que es uno de los subprotocolos de ICMPv6 . Funcionalmente, MLDv1 es equivalente a IGMPv2 y MLDv2 es similar a IGMPv3.

Una fuente de tráfico de multidifusión no es necesariamente miembro de un grupo, por lo que puede enviar un flujo al grupo sin señalización previa y sin admitir IGMP. En una interfaz, los enrutadores también pueden forzar una suscripción de tipo (*, G), es decir, independiente de la fuente, o incluso Any Source Multicast (ASM), o (S, G) ( Source-Specific Multicast , SSM) .

Cómo funciona IGMP

Existen varias versiones de IGMP y difieren en funcionalidad. Solo la versión 3 es del tipo SSM.

Todas las versiones de IGMP utilizan el protocolo IP número 2 y establecen el campo de tiempo de vida de los paquetes en 1, evitando así que se propaguen más allá de la subred a la que se refieren. Las versiones que se encuentran actualmente son las versiones 2 y 3.

IGMP v0

IGMPv0 se define en RFC  988, esta versión se considera obsoleta.

IGMP v1

IGMPv1 se describe en RFC  1112.

Hay dos tipos de mensajes en IGMPv1: consulta de membresía e informe de membresía .

Un enrutador que asegura la transmisión de paquetes multicast actúa como solicitante ( querier ), es decir, envía solicitudes a intervalos regulares (cada 60 segundos por defecto).

Los anfitriones responden enumerando los grupos a los que se suscriben en un informe. Para evitar una avalancha de respuestas simultáneas, los informes se envían con un retraso aleatorio (entre 0 y 10 segundos de forma predeterminada). Si durante este tiempo un anfitrión recibe un informe de otro anfitrión con respecto a ese grupo, se borra su mensaje de suscripción.

No se envía ningún informe para el grupo 224.0.0.1 ( Todos los hosts ).

La versión es 1. El tipo es 1 para la consulta y 2 para el informe.

Para las solicitudes, la dirección de destino es 224.0.0.1 ( Todos los hosts ). Para los informes, la dirección IP de destino es la misma que la del grupo al que se refiere.

Un anfitrión que desea unirse a un grupo envía un informe sin esperar una solicitud.

Limitaciones de IGMPv1

IGMP v2

RFC  2236 describe la versión 2 de IGMP. Esta es la versión más popular de IGMP entre los sistemas operativos generales, y es notablemente compatible con Windows 98 y el kernel de Linux 2.4.

Esto corrige algunas limitaciones de la versión 1, se agregan:

El campo Tipo abarca el campo de la versión IGMPv1 y permite un cierto nivel de compatibilidad con la versión 1.

El campo Max Resp Time indica el tiempo máximo que tiene un host para responder, en décimas de segundo. Los hosts utilizan un retraso aleatorio por debajo de este límite para la respuesta y, opcionalmente, eliminan los informes como en la versión 1. El retraso máximo es 100 (10 segundos) para una solicitud general y 10 (1 segundo) para una solicitud específica de grupo.

Los estados RFC que un host "  debe  " enviar un quit mensaje al salir de un grupo, esto implica que este mensaje no es obligatorio. Esto hace que las optimizaciones como el espionaje IGMP sean particularmente difíciles. Sin embargo, las implementaciones de protocolo siempre usan este mensaje.

Proceso para dejar un grupo

El mensaje para dejar un grupo se dirige a la dirección 224.0.0.2 ( Todos los enrutadores ). Cuando el enrutador solicitante recibe este mensaje, envía un mensaje de consulta específico al grupo izquierdo en respuesta para determinar si un miembro del host del grupo permanece en la subred. Si no se recibe respuesta, el enrutador considera que no hay más suscriptores al grupo. Este mensaje suele repetirse, por lo que la demora para que un grupo abandone un segmento es de entre 2 y 3 segundos por defecto.

Elección del solicitante

Cuando un enrutador recibe una solicitud de otro enrutador, compara la dirección IP de origen con la suya propia. El enrutador con la dirección más baja se selecciona como solicitante en el segmento. Cuando un enrutador recibe una solicitud tan alta, inicia un contador de 250 segundos durante el cual se abstiene de enviar solicitudes. Si no se recibe ningún mensaje de un solicitante con una IP más pequeña durante este período, las solicitudes se vuelven a emitir.

Interoperabilidad con IGMP v1Limitaciones de IGMPv2

Los únicos estados posibles son de tipo (*, G), es decir, no es posible que un host indique que desea recibir un grupo solo de una fuente determinada, ni excluir una fuente específica.

IGMP v3

La versión 3 ( RFC  3376) agrega la capacidad de especificar una suscripción grupal con una fuente en particular o de excluir ciertas fuentes. El RFC especifica que el campo ToS del paquete IP se establece en 0xc0 ( Control de internetwork ) y que  se utiliza la opción de alerta de enrutador ( RFC 2113).

IGMPv3 es compatible con Linux desde 2.6.7, Windows XP, Cisco IOS 12.1 (5) T y FreeBSD 8.0.

La eliminación de informes, cuya compatibilidad es obligatoria para las versiones 1 y 2, se eliminará en esta versión. Esto facilita el funcionamiento de IGMP Snooping y reduce la latencia cuando el último miembro deja un grupo ( salida rápida ).

Hay dos tipos de mensajes IGMPv3:

Los campos de tipo 0x12 (informe v1), 0x16 (informe v2) y 0x17 (salida v2) deben ser compatibles con una implementación de IGMP v3 para compatibilidad con versiones anteriores.

Consultas

Hay tres tipos de consultas:

La solicitud general se envía a la dirección 224.0.0.1 ( Todos los hosts ), mientras que las solicitudes de grupos se envían a la dirección del grupo en cuestión.

El campo Código de respuesta máxima se codifica de la siguiente manera:

El campo S, cuando se establece en 1, le dice a otros enrutadores que ignoren este mensaje al actualizar el temporizador.

El campo QQIC ( Querier's Query Interval Code ) representa el tiempo entre consultas. Los enrutadores que no solicitan coinciden con este valor.

El campo QRV ( Variable de robustez del interrogador ) es una indicación de la confiabilidad de la transmisión en la subred. Los informes y las consultas se envían en función del valor de este campo.

Informes

Los informes muestran los grupos y, opcionalmente, las fuentes a las que se suscriben los hosts. Se envían a la dirección 224.0.0.22 dedicada a IGMP v3. Son posibles dos modos:

Conceptualmente, los enrutadores mantienen una tabla compuesta por tuplas de la siguiente forma:

(dirección de multidifusión, temporizador de grupo, modo de filtrado, (lista de fuentes))

Cada fuente tiene la siguiente forma:

(dirección de origen, temporizador de origen)

Mensajes IGMP

Aquí está la lista de mensajes IGMP, así como su dirección de destino.

G representa la dirección del grupo en cuestión.

Versión IGMP Tipo de mensaje Versión / Tipo Dirección de destino
1 pedido 0x11 224.0.0.1
relación 0x12 GRAMO
2 pedido 0x11 224.0.0.1
solicitud G 0x11 GRAMO
relación 0x16 GRAMO
dejar 0x17 224.0.0.2
3 pedido 0x11 224.0.0.1
solicitud G 0x11 GRAMO
relación 0x22 224.0.0.22

Inspección IGMP

La técnica IGMP Snooping consiste, para un conmutador ethernet , en optimizar la difusión de tramas multidifusión observando el tráfico IGMP.

Notas y referencias

  1. (en) Steve Deering , "  Extensiones de anfitriones para multidifusión IP  " Request For Comments n o  988,Julio de 1986.
  2. (en) Steve Deering , "  Anfitrión Extensiones para multidifusión IP  " Request For Comments n o  1112,Agosto de 1989.
  3. (in) William Fenner, "  Protocolo de administración de grupos de Internet, versión 2  " Solicitud de comentarios n o  2236Noviembre de 1997.
  4. Network Magic: multidifusión, UDP e IGMP
  5. (en) "  Internet Group Management Protocol, versión 3  ," Petición de observaciones n o  3376,Octubre de 2002.
  6. (en) D. Katz, "  opción IP Router Alert  " Petición de observaciones n o  2113Febrero de 1997.

enlaces externos

Beau Williamson, desarrollo de redes de multidifusión IP , Cisco Press,1999, 568  p. ( ISBN  1-57870-077-9 , leer en línea )