200 likes | 381 Views
IGMP. “Host Extensions for IP Multicasting”, RFC 1112, Agosto 1989. Define: Modificaciones en los hosts. Niveles de conformance. IGMPv1. “Internet Group Management Protocol, Version 2”, RFC 2236, Noviembre 1997. Agrega: Mecanismos para mejorar la eficiencia:
E N D
IGMP • “Host Extensions for IP Multicasting”, RFC 1112, Agosto 1989. Define: • Modificaciones en los hosts. • Niveles de conformance. • IGMPv1. • “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-v3-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
NIVELES SUPERIORES (TCP,ETC) INTERFACE DE SERVICIO IP ICMP IGMP MODULO IP INTERFACE DE SERVICIO MODULO DE RED LOCAL ARP MODULO DE RED LOCAL 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 IP Multicast 1999 - grigotti@exa.unicen.edu.ar
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) • 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 • 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) Algoritmo de envío no multicast if dir_IP_destino es local enviar local a dir_IP_destino else enviar local a RouterTo(dir_IP_destin0) 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 RouterTo(dir_IP_destino) IP Multicast 1999 - grigotti@exa.unicen.edu.ar
Multicast: requerimientos en los hosts • Extensiones para recepción • Interface del servicio IP • Uso de receive normal • JoinHostGrp(group_addr, interf) y LeaveHostGrp(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 • JoinLocalGroup(IP_group_addr) y LeaveLocalGroup(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
VERS (4) TIPO (4) NO USADO (8) CHECKSUM (16) DIRECCION DE GRUPO (0 EN QUERY) (32) IGMPv1 • IGMP (Internet Group Managment Protocol, RFC 1112, Ago 1989): Protocolo utilizado para propagar información de pertenencia a grupos entre hosts y routers y routers entre sí • Encapsulado en IP (protocolo = 2), pero parte integral de IP • Formato de frame: 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
IGMPv1: 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
E: join_group A: enviar report A: arrancar timer_rep E: leave_group Non member Idle member E: leave_group A: parar timer_rep E: recepción query A: arrancar timer_rep Delaying member E: recepción report A: cancelar timer_rep E: timeout timer_rep A: enviar report IGMPv1- Diagrama de estados (host) Estados - 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. • Un host mantiene una tabla con una entrada por grupo 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
Destinos de PDUS Tipo Dirección multicast Query general ALL-SYSTEMS (01) Query específico a grupo específico Report a grupo específico Leave ALL-ROUTERS(02) Tipo (8) MRT (8) Checksum (16) Dirección de grupo (32) IGMPv2 Frame IGMPv2 • Encapsulado en IP, tipo de protocolo 2 • Enviados con TTL=1 • Enviados con opción Router Alert • Formato: Tipo: Incluye versión y tipo de IGMPv1 0X11: Query 0X12: Report v1 0X16: Report v2 0X17: Leave Group MRT: Tiempo máximo de respuesta para que los hosts respondan con report Utilizado sólo en Queries Checksum: igual que v1 Dirección de grupo: Grupo al que va dirigido el mensaje IP Multicast 1999 - grigotti@exa.unicen.edu.ar
10010100 00000100 Valor opción (16) 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: 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
IGMPv2: 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
E: join_group A: enviar report A: arrancar timer_r A: flag = 1 E: leave_group A: envia leave (si flag = 1) E: leave_group A: parar timer_r A: enviar leave (si flag = 1) Non member Idle member E: recepción query A: arrancar timer_r Delaying member E: recepción report A: cancelar timer_r A: flag = 0 E: recepción query A: reset timer_r (si MRT < tiempo restante) E: timeout timer_r A: enviar report A: flag = 1 IGMPv2- Operación de hosts. Detalle Estados - 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. • Un host mantiene una tabla con una entrada por grupo Timers - timer_r: timer para envío de report p/el grupo, al recibir un query Acciones - enviar report: envío de report IGMP con dirección de grupo (a dirección del grupo). V1 o v2 según estado interfaz. - enviar leave: - flag=1 : si el host es el último que envió report p/el grupo. - flag=0 : si no lo es. - arrancar timer_r: con un número al azar, para el grupo en la interfaz.(0,MRT) o (0,URT). - reset timer_r: rearrancar timer con nuevo valor. (0,MRT) - cancelar timer_r . 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 (v1 o v2) - recepción_query: query del router general para cualquier grupo específico para un grupo - timeout: para el grupo IP Multicast 1999 - grigotti@exa.unicen.edu.ar
A: enviar gen-query A: arrancar timer gen-query E: timeout gen_query A: enviar gen_query A: arrancar timer gen_query Querier Estado inicial E: recepción query de router con menor dir. IP A: arrancar timer otro_querier_presente E: timeout otro_querier_presente A: enviar gen_query A: arrancar timer gen_query No Querier E: recepción query de router con menor dir. IP A: arrancar timer otro_querier_presente IGMPv2- 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. Estados - Querier: El router transmite Queries en la red - No-Querier: No los transmite Eventos - timeout gen-query: vence tiempo de envío de query - recibir query de router <ip: se recibe un query de un router con prioridad para ser querier. - timeout otro_querier_presente:vence el tiempo para mantener la información de otro router actuando como querier 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
IGMPv2: 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
IGMPv2: Operación del router querier. Detalle. Timers • rexmt: timer para retransmisión de queries específicos para un grupo. • host v1:indica el tiempo de validez para considerar que aún (desde el último report v1) hay routers v1 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 v1: Algún host corre v1 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 v2: emitido para un grupo, por un host operando en v2 • Recepción de reporte v1: igual al anterior, pero host v1. • Recepción de leave: recepción de leave group por parte de un host v2. • 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 v1: indica ausencia de hosts v1 operando en la red como miembros del grupo IP Multicast 1999 - grigotti@exa.unicen.edu.ar
IGMPv2: 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 v1: arranca (y resetea) timer para hosts v1. 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
Chequeo miembros Con miembros Sin miembros Con miembros v1 IGMPv2- Operación del router querier. Detalle. E: recepción report v1 A: arrancar timer_g A: arrancar timer host v1 A: notify routing + E: timeout timer_g* A: notify routing - A: clear timer rexmt E: timeout timer_g A: notify routing - E: recepción leave A: arrancar timer_g* A: arrancar timer rexmt A: enviar query GS E: recepción report v2 A: arrancar timer_g A: notify routing + E: recepción report v2 A: arrancar timer_g E: recepción report v1 A: arrancar timer_g A: arrancar timer host v1 E: recepción report v2 A: arrancar timer_g E: timeout timer rexmt A: enviar query específico A: arrancar timer rexmt E: recepción report v1 A: arrancar timer_g A: arrancar timer host v1 E: timeout host v1 E: timeout timer_g A: notify routing - E: recepción report v1 A: arrancar timer_g A: arrancar timer host v1 E: recepción report v2 A: arrancar timer_g IP Multicast 1999 - grigotti@exa.unicen.edu.ar
E: timeout timer_g* A: notify routing - E: timeout timer_g A: notify routing - Chequeo miembros E: recepción report A: arrancar timer_g A: notify routing + E: recepción query GS A: arrancar timer_g* Con miembros Sin miembros E: recepción report A: arrancar timer_g E: recepción report A: arrancar timer_g IGMPv2- Operación de router no Querier. Detalle IP Multicast 1999 - grigotti@exa.unicen.edu.ar
Compatibilidad v1/v2 • Host v2 operando en red con querier v1: • Host detecta querier v1 por Queries con MRT = 0 (toma valor 100, 10 segs). • Vence por timer, no por último Query. • Host envía reports v1, puede no enviar leave. • Router v2 con router v1: • Los routers v2 deben ser explícitamente configurados para funcionar como v1. • Router v2 con host v1: • El router debe detectar miembros v1 en un grupo. • Debe ignorar leave group mientras haya hosts v1. • Host v2 con host v1: • El host v2 suprime reports debido tanto a reports v2 como v1. IP Multicast 1999 - grigotti@exa.unicen.edu.ar
IGMPv2: 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 v1, para funcionar como v2. IP Multicast 1999 - grigotti@exa.unicen.edu.ar