Tabla de contenidos Traceroute

2.7 IGMP("Internet Group Management Protocol")

IGMP es un protocolo estándar con un número STD de 5 que incluye además a IP(ver IP("Internet Protocol")) e ICMP (ver ICMP("Internet Control Message Protocol")). Su status es recomendado y el RFC 1112 lo describe.

Note: IP e ICMP son requeridos.

IGMP se considera más bien como una extensión de ICMP y ocupa el mismo lugar en la pila de protocolos IP. (3)

Ver Multicasting para una introducción al multicasting.

2.7.1 Mensajes IGMP

Los mensajes ICMP se envían en datagramas IP. La cabecera IP siempre tendrá un número de protocolo igual a 2, indicando IGMP y un tipo de servicio cero(rutina). El campo de datos IP contendrá el mensaje IGMP de ocho bytes mostrado en Figura - Formato del mensaje ICMP.


Figura: Formato del mensaje ICMP

Donde:

Vers
4 bits que indican la versión IP. Siempre vale 1.
Type
Especifica que se trata de una consulta o de un informe.
1
Especifica una consulta enviada por un "router" multicast.
2
Especifica un informe enviado por un host.
Checksum
Un checksum de 16 bits calculado de igual forma que con ICMP.
Class D Address
Es cero para una solicitud, y es una dirección de grupo multicast válida para un informe.

2.7.2 Funcionamiento de IGMP

Los sistemas que participan en IGMP se clasifican en dos tipos: host y "routers" multicast.

Como se describió en Multicasting, con el fin de recibir datagramas de multicast, un host se debe unir a un grupo. Cuando un host es "multi-homed"(multipuerto), puede unirse a cualquier grupo por una o más de sus interfaces(redes a las que está conectado). Los mensajes multicast que recibe el host del mismo grupo en dos subredes distintas pueden ser distintos también. Por ejemplo, 244.0.0.1 es el grupo para "todos los host de esta subred", por lo que los mensajes recibidos en una subred siempre serán diferentes para este grupo que para los de otra subred. Puede haber múltiples procesos en un host a la escucha de mensajes para un grupo de multicast. Si es este el caso, los host se unen sólo una vez al grupo, y llevan la cuenta internamente de qué procesos están interesados en ese grupo.

Para unirse a un grupo, el host envía un informe acerca de una interfaz. El informe se dirige al grupo multicast interesado. Los "routers" multicast de la misma red reciben el informe y activan un flag para indicar que al menos un host de esa red es miembro de ese grupo. Todo host pertenece al grupo 224.0.0.1 de forma automática. Los "routers" multicast tienen que escuchar a todas las direcciones de multicast(todos los grupos) con el fin de detectar tales informes. Las alternativas serían el uso del broadcast para los informes o para configurar host con direcciones unicast para "routers" multicast.

Los "routers" multicast envían regularmente(el RFC 1112 menciona intervalos de 1 minuto) una consulta a la dirección de multicast "todos los hosts". Cada host que aún desee ser miembro de uno o más grupo replica una vez por cada grupo en el que esté interesado(nunca al grupo "todos los hosts", al que pertenece de modo automático). Cada respuesta se envía tras un intervalo de tiempo aleatorio para evitar aglomeraciones en el tráfico. Como a los "routers" no les importa cuántos hosts son miembro de un grupo y como todos los miembros de ese grupo pueden oír las respuestas de cada uno de los demás hosts, cualquier host que escuche a otro host proclamar su pertenencia a mismo grupo cancelará su respuesta para ahorrar recursos. Si ningún host responde dentro de un intervalo de tiempo dado, el "router" multicast decide que ningún host pertenece a ese grupo. Cuando un host o un "router" multicast recibe un datagrama multicast, su acción depende del valor TTL y de la dirección IP de destino.

0
Un datagrama enviado con un valor TTL de cero se restringe el host emisor.
1
Un datagrama con un TTL de uno alcanza todos los hosts de la subred que son miembros del grupo. Los "router" multicast decrementan el valor a cero, pero a diferencia de los datagramas unicast, no lo informan con un mensaje ICMP "Time Exceeded". La expiración de un datagrama multicast se considera un evento normal.
2+
Todos los hosts que sean miembros del grupo y todos los "routers" multicast reciben el datagrama. La acción de los "router" depende de la dirección del grupo multicast.
224.0.0.0 - 224.0.0.255
Este rango se emplea sólo para aplicaciones multicast que hagan uso de un único salto. Los "routers" multicast no retransmitirán datagramas con direcciones IP en este rango.
A primera vista puede parecer como si un no tuviera que molestarse en informar de la pertenencia a un grupo en este rango ya que los "router" no le retransmitirán los de otras subredes. Sin embargo, el informe indica además a otros host de la subred que el host informante es miembro del grupo. El único grupo del que nunca se da parte es el 224.0.0.1.
other
El "router" retransmite normalmente los datagramas con otros valores para la dirección de destino: el valor TTL se decrementa en al menos un segundo, como es habitual.
Esto permite a un host localizar al servidor más cercano que esté escuchando sobre un dirección multicast usando lo que se llama "expanding ring search"(búsqueda expansiva en anillo). El host envía un datagrama con un valor TTL de 1(misma subred) y espera una respuesta. Si no se recibe ninguno, prueba con un TTL de 2, luego de 3, etc. Al final encontrará al servidor más cercano. (4)

Tabla de contenidos ARP("Address Resolution Protocol")