IGMP Host Extensions for IP Multicasting RFC 1112

  • Slides: 19
Download presentation
IGMP • “Host Extensions for IP Multicasting”, RFC 1112, Agosto 1989. Define: – Modificaciones

IGMP • “Host Extensions for IP Multicasting”, RFC 1112, Agosto 1989. Define: – Modificaciones en los hosts. – Niveles de conformance. – IGMPv 1. • “Internet Group Management Protocol, Version 2”, RFC 2236, Noviembre 1997. Agrega: – Mecanismos para mejorar la eficiencia: • Control de la información de control emitida por los hosts. • Reacción más rápida de un router al quedar sin hosts interesados en recibir info para un grupo. – Mecanismo de elección de querier en redes multiacceso. • “Internet Group Management Protocol, Version 3”, draft-ietf-idmr-igmp-v 3 -00. txt, Noviembre 1997. Agrega: – Capacidad para que las aplicaciones incluyan o excluyan S de los grupos. – Un API correspondiente. IP Multicast 1999 - grigotti@exa. unicen. edu. ar 1

Multicast: requerimientos en los hosts • Tipos de compatibilidad de los hosts: – Conformance

Multicast: requerimientos en los hosts • Tipos de compatibilidad de los hosts: – Conformance a nivel 0: no soporta multicast – Conformance a nivel 1: soporta envío multicast – Conformance a nivel 2: soporta envío y recepción multicast – Extensiones necesarias • Interface de servicio IP • Módulo IP • Interface servicio módulo de red local • Módulo de red local NIVELES SUPERIORES (TCP, ETC) INTERFACE DE SERVICIO IP ICMP IGMP MODULO IP INTERFACE DE SERVICIO MODULO DE RED LOCAL ARP MODULO DE RED LOCAL IP Multicast 1999 - grigotti@exa. unicen. edu. ar 2

Multicast: requerimientos en los hosts • Extensiones para envío – Interface del servicio IP

Multicast: requerimientos en los hosts • Extensiones para envío – Interface del servicio IP • Se utiliza el “send” normal con dirección multicast (niveles 1 y 2) • Debe permitir especificar TTL (niveles 1 y 2) • Para hosts multihomed debe poder especificarse la interface (niveles 1 y 2) • Debe poder especificarse si se desea loopback de multicasts (en caso de que el host sea miembro de un grupo al que envía) (sólo nivel 2) Algoritmo de envío no multicast – Módulo IP • Debe reconocer direcciones multicast • En función de lo especificado vía interface, no realizar loopbacks – Interface del Módulo de red: sin cambios if dir_IP_destino es local enviar local a dir_IP_destino else enviar local a Router. To(dir_IP_destin 0) Algoritmo de envío multicast if (dir_IP_destino es local o dir_IP_destino es multicast) enviar local a dir_IP_destino else enviar local a Router. To(dir_IP_destino) – Módulo de red • Mapeo de direcciones multicast IP a direcciones multicast de la red (en caso de Ethernet, dir Eth multicast con los 23 últimos bits iguales a dirección IP) IP Multicast 1999 - grigotti@exa. unicen. edu. ar 3

Multicast: requerimientos en los hosts • Extensiones para recepción – Interface del servicio IP

Multicast: requerimientos en los hosts • Extensiones para recepción – Interface del servicio IP • Uso de receive normal • Join. Host. Grp(group_addr, interf) y Leave. Host. Grp(group_addr, interf) – Módulo IP • Lista de grupos por interface, cuenta de miembros de cada grupo • Notificación al Módulo de red de altas y bajas de grupos • Implementación de IGMP – Interface del Módulo de red • Join. Local. Group(IP_group_addr) y Leave. Local. Group(IP_group_addr) – Módulo de red • Filtro de datagrams (no pasa a nivel superior lo que envíz); el loopback se realiza a niveles IP o superior IP Multicast 1999 - grigotti@exa. unicen. edu. ar 4

IGMPv 1 • IGMP (Internet Group Managment Protocol, RFC 1112, Ago 1989): Protocolo utilizado

IGMPv 1 • IGMP (Internet Group Managment Protocol, RFC 1112, Ago 1989): Protocolo utilizado para propagar información de pertenencia a grupos entre hosts y routers entre sí • Encapsulado en IP (protocolo = 2), pero parte integral de IP • Formato de frame: VERS (4) TIPO (4) NO USADO (8) CHECKSUM (16) DIRECCION DE GRUPO (0 EN QUERY) (32) VERS: Versión del protocolo: en este caso, 1. TIPO: query (1) enviada por un router response (0) enviada por un host CHECKSUM: cubre todo el IGMP. Calculado como el de IP DIR. DE GRUPO: Dirección del grupo multicast. Cero en queries IP Multicast 1999 - grigotti@exa. unicen. edu. ar 5

IGMPv 1: operación • • Todos los hosts pertenecen al grupo 224. 0. 0.

IGMPv 1: operación • • Todos los hosts pertenecen al grupo 224. 0. 0. 1; los queries IGMP se envían con esta dirección; los reports a la dirección de grupo anunciada. Un host que se incorpora a un grupo, lo anuncia inmediatamente (report) Los routers polean periódicamente (1 minuto) a los hosts (query) Un host que recibe un query – Para cada grupo al que pertenece, genera un tiempo al azar (promedio 10 seg) – Cuando el tiempo se cumple, envía el report correspondiente al grupo – Si antes que se cumpla el tiempo recibe un report de otro host para el grupo, no envía el suyo. – Un host no anuncia su pertenencia al grupo 224. 0. 0. 1 – Si un host recibe un query y tiene un timer corriendo para algún grupo, no lo resetea Los routers sólo necesitan conocer los grupos que están activos en la red, pero no qué hosts pertenecen a cada grupo Si luego de varios queries un router no recibe response para un grupo, lo elimina de su tabla Los rotures intercambian información de grupos entre sí (pueden usar IGMP) IP Multicast 1999 - grigotti@exa. unicen. edu. ar 6

IGMPv 1 - Diagrama de estados (host) • Un host mantiene una tabla con

IGMPv 1 - Diagrama de estados (host) • Un host mantiene una tabla con una entrada por grupo E: join_group A: enviar report A: arrancar timer_rep Estados E: leave_group Non member E: leave_group A: parar timer_rep E: recepción query Delaying A: arrancar timer_rep member E: recepción report A: cancelar timer_rep E: timeout timer_rep A: enviar report - Non member: Estado inicial. Host no miembro. - Delaying member: Host miembro del grupo. Tiene un timer para envío de report - Idle member: Host miembro del grupo. Sin timer corriendo para report. Idle member Timers - timer_rep: timer para envío de report. Eventos join group: el host comienza a escuchar en la dirección de grupo (sólo para el primer proceso) leave group: el host abandona el grupo (no queda ningún proceso en el grupo) recepción_report: de otro host, para el mismo grupo recepción_query: query del router (general para cualquier grupo) timeout timer_rep: para el grupo Acciones enviar report: envío de report IGMP con dirección de grupo (a dirección del grupo). arrancar timer_rep: con un número al azar, para el grupo en al interfaz. cancelar timer_rep. IP Multicast 1999 - grigotti@exa. unicen. edu. ar 7

IGMPv 2 Frame IGMPv 2 • Encapsulado en IP, tipo de protocolo 2 •

IGMPv 2 Frame IGMPv 2 • Encapsulado en IP, tipo de protocolo 2 • Enviados con TTL=1 • Enviados con opción Router Alert • Formato: Tipo (8) MRT Checksum (8) (16) Dirección de grupo (32) Destinos de PDUS Tipo Query general Query específico Report Leave Dirección multicast ALL-SYSTEMS (01) a grupo específico ALL-ROUTERS(02) Tipo: Incluye versión y tipo de IGMPv 1 0 X 11: Query 0 X 12: Report v 1 0 X 16: Report v 2 0 X 17: Leave Group MRT: Tiempo máximo de respuesta para que los hosts respondan con report Utilizado sólo en Queries Checksum: igual que v 1 Dirección de grupo: Grupo al que va dirigido el mensaje IP Multicast 1999 - grigotti@exa. unicen. edu. ar 8

Opción Route Alert • Opción IP definida en “IP Route Alert Option”, RFC 2113,

Opción Route Alert • Opción IP definida en “IP Route Alert Option”, RFC 2113, febrero 1997. • Indica a un router examinar un datagram con más detalle. • El router podrá ejecutar sobre el datagram, funcionalidad adicional a la normal. • Permite incorporar nueva funcionalidad de ruteo: – Gradualmente. – Sin cambios en los protocolos. • Formato: 10010100 00000100 Valor opción (16) Copied flag: 1 (todos los fragmentos) Option class: 00 (control) Núm. Opción: 20 (decimal) Longitud: 4 Valor opción: 0 Router debe examinar el datagram 1 a 65535 Reservado IP Multicast 1999 - grigotti@exa. unicen. edu. ar 9

IGMPv 2: Operación de hosts • Inicialmente, al unirse a un grupo – emisión

IGMPv 2: Operación de hosts • Inicialmente, al unirse a un grupo – emisión de report no solicitado si es primer miembro del grupo (varios). • Recepción de un Query (general) – planificar envío de report en tiempo al azar para cada grupo (0, MRT) • Recepción de un Query específico – planificar envío de report para el grupo en tiempo al azar (0, MRT). • Recepción de un report para un grupo – cancelar envío si hay report por enviar para el grupo • Al salir de un grupo – Si supone ser el último host en el grupo, enviar un leave IP Multicast 1999 - grigotti@exa. unicen. edu. ar 10

IGMPv 2 - Operación de hosts. Detalle • Un host mantiene una tabla con

IGMPv 2 - Operación de hosts. Detalle • Un host mantiene una tabla con una entrada por grupo E: join_group Estados A: enviar report - Non member: Estado inicial. Host no miembro. A: arrancar timer_r - Delaying member: Host miembro del grupo. A: flag = 1 E: leave_group Tiene un timer para envío de report A: envia leave E: leave_group Non member - Idle member: Host miembro del grupo. (si flag = 1) A: parar timer_r Sin timer corriendo para report. A: enviar leave (si flag = 1) E: recepción query Delaying A: arrancar timer_r Idle member E: recepción report A: cancelar timer_r Timers A: flag = 0 - timer_r: timer para envío de report p/el grupo, al E: recepción query E: timeout timer_r recibir un query A: reset timer_r (si A: enviar report MRT < tiempo A: flag = 1 restante) Acciones - enviar report: envío de report IGMP con dirección de Eventos grupo (a dirección del grupo). V 1 o v 2 según estado - join group: el host comienza a escuchar en la interfaz. dirección de grupo (sólo para el primer proceso) - enviar leave: - leave group: el host abandona el grupo (no queda - flag=1 : si el host es el último que envió report p/el ningún proceso en el grupo) grupo. - recepción_report: de otro host, para el mismo grupo - flag=0 : si no lo es. (v 1 o v 2) - arrancar timer_r: con un número al azar, para el grupo - recepción_query: query del router en la interfaz. (0, MRT) o (0, URT). general para cualquier grupo - reset timer_r: rearrancar timer con nuevo valor. específico para un grupo (0, MRT) IP Multicast 1999 - grigotti@exa. unicen. edu. ar 11 - timeout: para el grupo - cancelar timer_r.

IGMPv 2 - Elección de Querier. Detalle Timers gen-query: indica cuándo transmitir el próximo

IGMPv 2 - Elección de Querier. Detalle Timers gen-query: indica cuándo transmitir el próximo query otro-querier-presente: indica cuando considerar que el querier anterior dejó de funcionar. Estado inicial A: enviar gen-query A: arrancar timer gen-query Querier E: timeout gen_query A: enviar gen_query A: arrancar timer gen_query Estados - Querier: El router transmite Queries en la red - No-Querier: No los transmite Eventos - timeout gen-query: vence tiempo de E: recepción query de router envío de query con menor dir. IP E: timeout otro_querier_presente A: arrancar timer - recibir query de router <ip: se recibe A: enviar gen_query otro_querier_presente un query de un router con prioridad A: arrancar timer gen_query para ser querier. - timeout otro_querier_presente: vence el No tiempo para mantener la información Querier de otro router actuando como querier E: recepción query de router con menor dir. IP A: arrancar timer otro_querier_presente Acciones - arrancar timer gen_query - arrancar timer otro_querier_presente - enviar gen-query (a dirección todos los sistemas, 224. 0. 0. 1) IP Multicast 1999 - grigotti@exa. unicen. edu. ar 12

IGMPv 2: Operación del router querier (no querier). • • (Q) Vencimiento de timer

IGMPv 2: Operación del router querier (no querier). • • (Q) Vencimiento de timer para envío de Query general – Envío de Query – Arranque de timer (Q/NQ) Recepción de un report para un grupo – Nueva entrada en tabla si el grupo no registrado – Arranque de timer para invalidar entrada (si no recibe reports) (Q) Recepción de Leave Group – Envío de varios queries específicos regularmente – Inhibir transición de Querier a no querier para el router – Eliminar la entrada si al fin del período no recibe report (NQ) Recepción de un Query específico para un grupo – Si el tiempo restante para la entrada es mayor que el que esperará el querier • Actualizar tiempo de vida (Last_Member_Quer_Count * MRT) IP Multicast 1999 - grigotti@exa. unicen. edu. ar 13

IGMPv 2: Operación del router querier. Detalle. Timers • rexmt: timer para retransmisión de

IGMPv 2: Operación del router querier. Detalle. Timers • rexmt: timer para retransmisión de queries específicos para un grupo. • host v 1: indica el tiempo de validez para considerar que aún (desde el último report v 1) hay routers v 1 operando en la red • timer_g: indica el tiempo de validez de la entrada para un grupo. (g*: indica el tiempo de validez de la entrada para un grupo luego de recibir un leave) Estados • Sin miembros: estado inicial, no hay aun hosts que hayan enviado reports. • Con miembros: Existe por lo menos un host que ha enviado un report para un grupo. • Con miembros v 1: Algún host corre v 1 y ha enviado un report de esta versión. • Chequeando miembos: El router ha recibido un leave-group y aún no ha escuchado un report para el grupo. Eventos • Recepción de reporte v 2: emitido para un grupo, por un host operando en v 2 • Recepción de reporte v 1: igual al anterior, pero host v 1. • Recepción de leave: recepción de leave group por parte de un host v 2. • Timeout de timer_g (o g*): invalida la entrada para un grupo al no recibir reports. • Timeout de rexmt timer: indica realizar retransmisión de un query específico para un grupo. • Timeout host v 1: indica ausencia de hosts v 1 operando en la red como miembros del grupo IP Multicast 1999 - grigotti@exa. unicen. edu. ar 14

IGMPv 2: Operación del router querier. Detalle. Acciones • Arrancar timer_g: Se arranca (o

IGMPv 2: Operación del router querier. Detalle. Acciones • Arrancar timer_g: Se arranca (o resetea) el timer que indica el tiempo de validez de la entrada para un grupo. Valor: [Group Membership Interval]. • Arrancar timer_g*: Se arranca (o resetea) el timer que indica el tiempo de validez de la entrada para un grupo. Este timer se utiliza en caso de recibir un leave (querier) o un query específico (no querier). Valor para querier: [Last Member Query Interval] * [Last Member Query Count] Valor no querier: [Max Response Time] (del paquete) * [Last Member Query Count] • Arrancar rexmt timer: arranque del timer para retransmitir un Query específico para un grupo. • Arrancar timer host v 1: arranca (y resetea) timer para hosts v 1. Valor [Group Membership Interval]. • Send Group-specific Query: envío de un query para un grupo específico (al recibir un leave para el grupo). El MRT del paquete es [Last Member Query Interval]. • Notify routing+: indica al protocolo de ruteo que hay miembros del grupo en la red • Notify-routing-: notifica que no hay más miembros del grupo. IP Multicast 1999 - grigotti@exa. unicen. edu. ar 15

IGMPv 2 - Operación del router querier. Detalle. E: recepción report v 1 A:

IGMPv 2 - Operación del router querier. Detalle. E: recepción report v 1 A: arrancar timer_g A: arrancar timer host v 1 A: notify routing + Sin miembros E: timeout timer_g* A: notify routing A: clear timer rexmt E: timeout timer_g E: recepción report v 2 A: notify routing - E: recepción leave A: arrancar timer_g* A: arrancar timer_g A: arrancar timer rexmt A: notify routing + A: enviar query GS Con Chequeo E: recepción report v 2 miembros A: arrancar timer_g E: recepción E: timeout timer rexmt report v 1 report v 2 E: recepción A: enviar query específico E: timeout A: arrancar timer_g report v 1 host v 1 timer_g A: arrancar timer rexmt host v 1 A: arrancar timer host v 1 Con miembros v 1 E: timeout timer_g A: notify routing E: recepción report v 1 E: recepción A: arrancar timer_g report v 2 A: arrancar timer_g host v 1 IP Multicast 1999 - grigotti@exa. unicen. edu. ar 16

IGMPv 2 - Operación de router no Querier. Detalle Sin miembros E: recepción report

IGMPv 2 - Operación de router no Querier. Detalle Sin miembros E: recepción report A: arrancar timer_g A: notify routing + E: timeout timer_g* A: notify routing - E: timeout timer_g E: recepción query GS A: notify routing - A: arrancar timer_g* Con miembros Chequeo miembros E: recepción report A: arrancar timer_g IP Multicast 1999 - grigotti@exa. unicen. edu. ar 17

Compatibilidad v 1/v 2 • Host v 2 operando en red con querier v

Compatibilidad v 1/v 2 • Host v 2 operando en red con querier v 1: – Host detecta querier v 1 por Queries con MRT = 0 (toma valor 100, 10 segs). – Vence por timer, no por último Query. – Host envía reports v 1, puede no enviar leave. • Router v 2 con router v 1: – Los routers v 2 deben ser explícitamente configurados para funcionar como v 1. • Router v 2 con host v 1: – El router debe detectar miembros v 1 en un grupo. – Debe ignorar leave group mientras haya hosts v 1. • Host v 2 con host v 1: – El host v 2 suprime reports debido tanto a reports v 2 como v 1. IP Multicast 1999 - grigotti@exa. unicen. edu. ar 18

IGMPv 2: Tiempos y valores por defecto • • • [Robustness Variable]: 2. Cantidad

IGMPv 2: Tiempos y valores por defecto • • • [Robustness Variable]: 2. Cantidad de reintentos menos 1. [Query Interval]: 125 segs. Intervalo entre dos queries generales emitidos por el querier. [Query Response Interval]: 10 segs. Tiempo máximo de espera en queries generales por reports. [Group Membership Interval]: [Robustness Variable] * [Query Interval] + [Query Response Interval]. Tiempo luego del cual, al no recibir reports, el querier decide que no hay mimembros del grupo. [Other Querier Present Interval]: [Robustness Variable] * [Query Interval] + [Query Response Interval] / 2. Tiempo transcurrido sin ecscuchar queries luego del cual un router supone que no hay querier. [Startup Query Interval]: [Query Interval] / 4. Tiempo entre queries generales enviados por un router en el inicio. [Startup Query Count]: Robustness Variable. Número de queries enviados en el inicio. [Last Member Query Interval]: 1 seg. MRT colocado en los queries específicos. Tiempo entre sucesivos queries específicos. [Last Member Query Count]: Robustness Variable. Número de queries específicos enviados al recibir un leave. [Unsolicited Report Interval]: 10 seg. Tiempo entre envíos sucesivos de un report inicial por parte de un host. [Verion 1 Router Present Timeout]: 400 seg. Tiempo que debe esperar un host, desde el último query v 1, para funcionar como v 2. IP Multicast 1999 - grigotti@exa. unicen. edu. ar 19