TOPOLOGÍA MULTICAST BÁSICO
TEORÍA MULTICAST
1- INTRODUCCIÓN
La
comunicación IP tradicional permite a un host enviar paquetes a un único
destino (transmisión unicast) o a todos los destinos (transmisión broadcast).
El multicast IP proporciona una tercera opción, que permite a un host enviar
paquetes a un subconjunto dentro de todos los hosts (grupo de transmisión).
Estos hosts se conocen como miembros de grupo.
Los paquetes entregados a un grupo de miembros están identificados por una única dirección de grupo multicast.
El entorno multicast consiste en servidores (emisores) y receptores. Cualquier host, independientemente de su pertenencia a un grupo, puede enviar paquetes a dicho grupo. Sin embargo, solamente los miembros de un grupo reciben los mensajes. La dirección multicast asignada a un grupo es la dirección de destino utilizada por los servidores, para enviar los datagramas que deben llegar a todos los miembros del grupo.
La pertenencia a un grupo multicast es dinámica, los hosts pueden unirse al grupo y / o abandonarlo en cualquier momento. No existen restricciones de localización o número de miembros en un grupo multicast. Un host puede ser miembro de más de un grupo multicast al mismo tiempo.
La actividad de un grupo multicast y los miembros que pertenezcan a él puede variar de un grupo a otro y de un momento a otro. Un grupo multicast puede estar activo durante un largo periodo de tiempo, o por el contrario, tener una corta duración. Un grupo que tenga miembros puede carecer de actividad.
Los routers que ejecutan algún protocolo de enrutamiento multicast, como PIM (Protocol-Independent Multicast), necesitan tablas de enrutamiento multicast para enrutar este tipo de datagramas. Estos routers utilizan el protocolo IGMP (Internet Group Management Protocol) para averiguar si están presentes miembros de algún grupo en alguna de sus redes directamente conectadas. Los hosts se unen a los grupos multicast mediante el envío de mensajes IGMP report.
Índice
1-
Introducción
1.1-
Multicast en equipos Cisco
2-
Bases del protocolo Multicast
2.1-
Árboles de Distribución Multicast
2.2- Enrutamiento
Multicast
2.2.1- RPF (Reverse
Path Forwarding)
3- IGMP (Internet Group
Management Protocol)
3.1-
IGMP
3.2-
IGMPv2
3.2.1-
Características de IGMPv2
3.2.2-
Suscripción a un grupo
3.2.3-
Elección de Consultor
3.2.4-
Manteniendo un grupo
3.2.5-
Abandonando un grupo
3.2.6-
Formato de paquetes IGMP
4- PIM SM (Protocol-Independent
Multicast Sparse Mode)
4.1- Descubrimiento de vecinos
4.2-
Enrutamiento SM
4.3-
Suscripción SM
4.4- Registro SM
4.5- SPT Switchover
4.6- Pruning SM
4.7- Mantenimiento de PIM SM
4.8-
Formato de paquetes PIM
4.8.1-
Cabeceras de paquetes PIM
4.8.2-
Mensajes de consulta PIM
4.8.3-
Mensajes PIM Join / Prune
4.8.4-
Mensajes PIM Register
4.8.5-
Mensajes PIM Register-Stop
4.8.6-
Mensajes PIM RP-Reachability
4.9-
Ejemplo del funcionamiento del PIM SM
4.10-
Configuración de PIM SM
Anexo
A
Anexo
B
Anexo
C
Anexo D |
1.1- Multicast en Equipos Cisco
El sistema operativo de Cisco soporta los siguientes protocolos para la implementación del enrutamiento multicast:
· IGMP (Internet Group Management Protocol) se utiliza
para la comunicación entre los hosts de una LAN y el/los router(s) en esa LAN
para esclarecer de que grupos multicast son miembros los hosts de la LAN. Existen
3 versiones de IGMP. En cuanto se habilita PIM en un router, inmediatamente se habilita IGMP para esuchar a los hosts.
· PIM (Protocol-Independent Multicast) se utiliza para
la comunicación entre routers para aclarar qué paquetes deben enrutarse entre
sí y hacia las LANs directamente conectadas. Existen tres variantes de este
protocolo: Dense Mode (DM), Sparse Mode (SM) y Sparse-Dense Mode.
· DVMRP (Distance Vector Multicast Routing Protocol) es
el protocolo utilizado en el MBONE (el backbone multicast en Internet).
· CGMP (Cisco Group Management Protocol) es un protocolo
alternativo a IGMP, utilizado en routers Cisco conectados a conmutadores
Catalyst para realizar similares funciones a las realizadas por IGMP.
2- BASES DEL PROTOCOLO MULTICAST
El funcionamiento de los protocolos Multicast (como DVMRP, MOSPF, PIM, etc.), en la transmisión y enrutamiento del tráfico, se basa, fundamentalmente, en dos puntos:
·
Árboles de Distribución Multicast: Estructuras
que definen el camino que recorre el tráfico multicast desde la fuente hasta
el/los receptor/es.
·
Enrutamiento Multicast: A
diferencia del enrutamiento unicast que utiliza la dirección de destino para
tomar la decisión de enrutamiento, el enrutamiento multicast utiliza la
dirección de la fuente para tomar dicha decisión. Para enrutar el tráfico
multicast utiliza la tabla multicast.
2.1- Árboles de Distribución Multicast
Existen dos tipos de árboles:
1-
“Shortest Path” o “Source Distribution Tree” (S, G): Es el
camino más corto, es decir, aquel con menor número de saltos. Utiliza más
memoria que la segunda opción (*, G), pero obtiene los caminos óptimos desde la
fuente a todos los receptores. Además, miniza el retardo.
2-
“Shared Distribution Tree” (*,G): Es el
camino derivado desde un punto compartido, a través del cual, fuentes y
receptores deben enviar / recibir datos multicast. Proporciona caminos
“sub-óptimos” (pueden no ser los más cortos y pueden introducir retardo) desde
la fuente a todos los receptores, pero requieren menos memoria para mantenerse.
La
notación (S, G) y (*, G) hace referencia a las entradas de la tabla de
enrutamiento multicast. Las entradas que comienzan por (S, G) pertenecen al
árbol de distribución del camino más corto, mientras que las entradas que
comienzan por (*, G) pertenecen al árbol de distribución de camino compartido.
Estas entradas hacen referencia a la fuente (S o *) y al grupo G.
La construcción de estos árboles de distribución depende del tipo de protocolo de enrutamiento multicast que se utilice. En nuestro laboratorio básico utilizamos el PIM SM (Protocol-Independent Multicast Sparse Mode). PIM utiliza la tabla de enrutamiento unicast del router (y por extensión cualquier protocolo de enrutamiento unicast), además de la tabla multicast, más las siguientes funciones:
La construcción de estos árboles de distribución depende del tipo de protocolo de enrutamiento multicast que se utilice. En nuestro laboratorio básico utilizamos el PIM SM (Protocol-Independent Multicast Sparse Mode). PIM utiliza la tabla de enrutamiento unicast del router (y por extensión cualquier protocolo de enrutamiento unicast), además de la tabla multicast, más las siguientes funciones:
·
Suscripción (Join): Los routers
añaden sus interfaces y/o envían mensajes PIM-JOIN para establecerse a sí mismos
como ramas del árbol cuando tengan receptores interesados.
·
Reducción (Prune): Los
routers reducen sus interfaces y/o envían mensajes PIM-PRUNE para retirarse a
sí mismos del árbol de distribución cuando dejen de tener receptores
interesados.
·
Reinserción (Graft): Los
routers envían mensajes PIM-GRAFT, cuando tienen una interfaz “reducida” y ya
han enviado mensajes PIM-PRUNE, pero reciben una petición de suscripción IGMP
de un host para un grupo ya “reducido”. Los routers deben restablecerse a sí
mismos como ramas del árbol de distribución puesto que tienen nuevos receptores
interesados.
- Afirmación (Assert): cuando tenemos fuentes redundadas. Por ejemplo si tenemos 2 routers en un segmento que pueden enviar el miso tráfico multicas y queremos que sea solo uno, este es el Assert, que es una elección entre los routers.
- Refresco (State Refresh): pregunta a los vecinos downstream si quieren cortar (prune) el tráfico multicast.
- Afirmación (Assert): cuando tenemos fuentes redundadas. Por ejemplo si tenemos 2 routers en un segmento que pueden enviar el miso tráfico multicas y queremos que sea solo uno, este es el Assert, que es una elección entre los routers.
- Refresco (State Refresh): pregunta a los vecinos downstream si quieren cortar (prune) el tráfico multicast.
2.2- Enrutamiento Multicast
El enrutamiento multicast se realiza en sentido inverso al enrutamiento unicast. El primero es relativo al origen del paquete mientras que el segundo es relativo al destino del paquete. La dirección de origen del paquete denota fuente conocida mientras que la dirección de destino denota grupo desconocido de receptores.
El enrutamiento multicast utiliza
“Reverse Path Forwarding” (RPF).
2.2.1- RPF (Reverse Path Forwarding)
Los routers enrutan paquetes multicast si los reciben por la interfaz de entrada perteneciente al árbol de distribución, es decir, enruta el paquete si viene por el camino adecuado, si no es así lo descarta. Para esta comprobación (RPF check), los routers comparan la dirección IP origen del paquete con las entradas de la tabla de enrutamiento multicast, y cuando encuentran la línea comprueban la interfaz de entrada. Si el RPF check tiene éxito, es decir, coinciden la interfaces de entrada de la petición con la interfaz de salida para llegar a la fuente, el paquete se enruta; si no se descarta. El paquete nunca se enruta por la interfaz por el que se ha recibido.
3- IGMP (Internet Group Management Protocol)
Los hosts IP utilizan IGMP para solicitar su suscripción a grupos multicast; esta solicitud se dirige a los routers multicast directamente conectados. IGMP forma parte del protocolo IP, y está definido en el RFC 1112: Extensiones de Hosts para Multicast IP.
Mandan un IGMP Report:
- IGMVv1/2 -> (*,G) soports solo suscripción a grupos específicos
- IGMPv3 -> (S,G) soporta suscripción a emisor (source) y grupo específico
224.0.0.1 - Todos los
sistemas en la subred.
224.0.0.2 - Todos los
routers en la subred.
224.0.1.39 - Anuncio RP de
Cisco. (Auto-RP)
224.0.1.40 - Descubrimiento
RP de Cisco. (Auto-RP)
El direccionamiento IPv4 para multicast usa la clase D:
- 224.0.0.0/4 (224.0.0.0 - 239.255.255.255)
- Tiene rangos reservados:
- Link-Local -> 224.0.0.0/24
- SSM (Source Specific Multicast) -> 232.0.0./8 (IGMPv3)
- Uso Administrativo -> 239.0.0.0/8
3.1-
IGMP
Este
protocolo se configura en cada interfaz. Para poder comprobar la versión
configurada podemos ejecutar desde modo enable la siguiente instrucción:
router# show ip igmp interface
Vla15 is up, line
protocol is up
Internet address is 100.100.25.1, subnet mask
is 255.255.255.0
IGMP is enabled on interface
Current IGMP version is 2
CGMP is
disabled on interface
IGMP query interval is 60 seconds
IGMP querier timeout is 120 seconds
IGMP max query response time is 10 seconds
Inbound IGMP access group is not set
Multicast routing is enabled on interface
Multicast TTL threshold is 0
Multicast designated router (DR) is 100.100.25.1
(this system)
IGMP querying router is 100.100.25.1 (this
system)
No multicast groups joined
3.2- IGMPv2
Como resultado de algunas de las
limitaciones de IGMPv1 apareció la segunda versión para intentar superarlas. La
mayor parte de los cambios se refieren a las latencias de suscripción y
abandono de los grupos de multicast, así como ambigüedades con las direcciones
en la especificación original del protocolo. Las principales características de
la v2 de IGMP son las siguientes:
3.2.1- CARACTERÍSTICAS DE IGMPv2
·
Preguntas específicas de grupo
A la versión 2 se ha añadido una
pregunta específica de grupo para permitir al router consultar la suscripción a
un solo grupo, en lugar de a todos. Esta es una forma optimizada para
averiguar, rápidamente, si queda algún miembro en un grupo sin consultar a
todos los grupos.
La
diferencia entre la pregunta específica y la general, es que esta última se
realiza a la dirección multicast de todos los hosts (224.0.0.1), mientras que
la pregunta de grupo específica para el grupo “G” se realiza a la dirección
multicast de dicho grupo.
·
Mensaje de abandono de grupo
Así mismo, en la versión 2 se ha
añadido un mensaje de abandono de grupo. Esto permite a los sistemas terminales
(hosts) notificar al router que abandonan el router, lo cual reduce la latencia
de abandono del grupo en el segmento, cuando el miembro “saliente” es el último
del grupo (en el segmento).
·
Elección de “Consultor o Querier"
En su segunda versión, IGMP tiene en
sí mismo un mecanismo de elección de “consultor”. La dirección IP más baja de
los routers configurados con IGMP será la elegida como “equipo consultor”. Todo
equipo configurado con IGMP arranca pensando que será el “consultor”, pero debe
abandonar ese rol inmediatamente si escucha, en su mismo segmento de red, una
“consulta” desde una dirección IP menor.
·
Tiempo de respuesta de intervalo de pregunta
Las preguntas generales especifican
el “Máximo Tiempo de Respuesta” que informa a los hosts del tiempo máximo en el
que deben responder.
3.2.2- Suscripción a un grupo
La suscripción a los grupos de
Multicast es asíncrona, es decir, los hosts no tienen que esperar la consulta
para suscribirse. Para unirse a un grupo basta con indicar su interés. Este
sistema reduce la latencia de suscripción en el ingreso de un host a un grupo,
cuando no hay otros miembros del grupo presentes en el segmento de red.
La suscripción de un miembro a un nuevo grupo implica el registro de ese nuevo grupo en el router. Para ver los grupos activos en el router podemos usar el siguiente comando:
router#show ip
igmp groups
IGMP Connected Group Membership
Group Address
Interface Uptime Expires
Last Reporter
225.20.180.31
Vlan180 5w1d 00:02:10
10.20.180.5
225. 20.180.16
Vlan180 5w1d 00:02:10
10.20.180.6
225.15.1.22
Vlan15 5w1d
00:02:11 10.15.1.6
224.0.1.40
Serial0/1 1w6d 00:02:42
100.100.30.20
224.0.1.40
Serial0/0.2 2w3d
00:02:12 100.100.10.2
224.0.1.40
Serial0/0 2w6d never 0.0.0.0
Podemos
ver algunos de los grupos activos en las interfaces especificadas. En la tabla
tenemos el tiempo que lleva activo (Uptime), el tiempo en el que expirará si no
hay más refrescos (Expires), y la última máquina que ha solicitado pertenecer
al grupo (Last Reporter).
3.2.3- Elección de consultor o querier
En IGMPv2 se ha establecido en el propio protocolo un proceso para determinar el router “consultor”. Como se ha explicado anteriormente: La dirección IP más baja de los routers configurados con IGMP será la elegida como “equipo consultor”. Todo equipo configurado con IGMP arranca pensando que será el “consultor”, pero debe ceder ese rol inmediatamente si escucha, en su mismo segmento de red, una “consulta” desde una dirección IP menor. Si el router elegido como router “consultor” no envía la consulta en el intervalo correspondiente, se consumirá un temporizador en los otros routers IGMPv2 y reiniciarán el proceso.
IGMPv2 también ha añadido el concepto de “Consultas a Grupos Específicos”. Esta funcionalidad se consigue enviando la consulta de suscripción IGMPv2 a las direcciones multicast de los grupos, en lugar de a la dirección multicast de todos los hosts (224.0.0.1), como es el caso de las consultas generales IGMPv2. Por defecto, las consultas de suscripción se envían cada 60 segundos.
Para conocer el router consultor en
una interfaz IGMP podemos utilizar el siguiente comando (extracto representado):
router# show ip igmp interface
Vla15 is up, line
protocol is up
Internet address is 100.100.25.1, subnet mask
is 255.255.255.0
IGMP is enabled on interface
Current IGMP version is 2
CGMP is disabled on interface
IGMP query interval is 60 seconds
IGMP querier timeout is 120 seconds
IGMP max query response time is 10 seconds
Inbound IGMP access group is not set
Multicast routing is enabled on interface
Multicast TTL threshold is 0
Multicast designated router (DR) is 100.100.25.1
(this system)
IGMP querying router is 100.100.25.1 (this system)
No multicast
groups joined
3.2.4- Mantenimiento de un grupo
Proceso de consulta-respuesta
En un segmento de red, el router multicast envía, periódicamente, consultas de suscripción a la dirección del grupo multicast de todos los hosts (224.0.0.1). Sólo responde un miembro por grupo a la consulta (el resto al escuchar la respuesta cancelan su propio mensaje). Esto permite ahorrar ancho de banda en la red y tiempo de proceso en los hosts. Este mecanismo se conoce como “Response Suppression”.
Mecanismo “Response Suppression”
Cuando un host recibe la consulta, comienza la cuenta atrás de un contador para cada grupo multicast al que pertenezca. Los contadores se inicializan con un número aleatorio dentro de un rango establecido. Cuando un contador alcanza cero, el host envía un mensaje de suscripción para el grupo asociado con el contador, para notificar al router que el grupo está aun activo. Sin embargo, si un host recibe o escucha un mensaje de suscripción antes de que su contador asociado a ese grupo alcance cero, cancela el contador y suprime su propio mensaje.
Cuando un host recibe la consulta, comienza la cuenta atrás de un contador para cada grupo multicast al que pertenezca. Los contadores se inicializan con un número aleatorio dentro de un rango establecido. Cuando un contador alcanza cero, el host envía un mensaje de suscripción para el grupo asociado con el contador, para notificar al router que el grupo está aun activo. Sin embargo, si un host recibe o escucha un mensaje de suscripción antes de que su contador asociado a ese grupo alcance cero, cancela el contador y suprime su propio mensaje.
3.2.5- Abandonando un grupo
El protocolo IGMPv2, a diferencia de
IGMPv1, incluye mensajes explícitos para abandonar un grupo. Cuando el router
consultor recibe un mensaje de abandono, responde enviando una consulta
específica al grupo para ver si todavía responden otros hosts que quieran
recibir tráfico de ese router. Este proceso ayuda a reducir la “latencia de abandono”.
3.2.6- Formato de
paquetes
La
estructura de los paquetes de IGMPv2 es la siguiente
·
Type
Se
asegura la compatibilidad hacia atrás con IGMPv1 mediante los valores 0x11 y
0x12 para la consulta de suscripción (v1 y v2) y la respuesta a suscripción v1
respectivamente.
·
Max.
Response Time
Este
campo permite al router consultor especificar exactamente el tiempo de
respuesta para esta pregunta. El valor (entre 1 y 10 segundos) lo utilizan los
hosts IGMPv2 como límite superior cuando eligen aleatoriamente el tiempo de su
respuesta.
·
Dirección
del grupo
Este
campo contiene la dirección IP del grupo multicast al que se refiera el mensaje, excepto en las
preguntas generales (para le elección de consultor), en las que contiene
0.0.0.0.
Multicast de Capa 2
IGMP Snooping
Con IGMP Snooping podemos restringir tráfico multicast en la capa 2 haciendo que el tráfico solo se entregue a través de los puertos que tienen al menos un miembro activo del tráfico multicast. Usa la información recogida en los IGMP Reports para construir la "forwarding table" de multicast.
IGMP Snooping nos ayuda a reducir el consumo de ancho de banda.
Solo distingue 2 tipos de puertos: host ports y multicast router ports. Los puertos multicast router se descubren automáticamente (discovery), aunque se pueden configurar manualmente (static). Sin embargo, con el comando "router-guard" podemos hacer que ese puerto no sea descubierto como multicast router port filtrando los mensajes.
IGMP Filter
Nos ofrece mayor control del tráfico multicast. IGMP Filtering solo gestiona los " IGMP Membership Join Reports" y cuando un filtro es aplicado, el Join Report es descartado y el puerto no entonces no tiene permitido el tráfico multicast.
Podemos configurar también el número de grupos multicast que son permitodos en un puerto:
(config-if)#ip igmp max-groups
IGMP Proxy
Habilita a host que no están directamente conectados a un router que envía multicast poder recibir el tráfico.
Documento de Cisco sobre IGMP Proxy
MLD
Multicast Listener Discovery es un protocolo similar a IGMP pero para IPv6. La versión 1 de MLD se compagina con la IGMPv2 y la MLDv2 se compagina con IGMPv3.
MLD Snooping provee de la misma funcionalidad que IGMP. Usa 3 tipos de mensajes:
- Multicast Listner Query
- General Query
- Multicast-Address-Specific Query
- Multicast Listener Report
- Multicast Done
PIM Snooping
Esta caracterísitica hace que los switches que tienen puertos conectados a routers que envían multicast cierre los puertos al tráfico de grupos multicast si no tiene ningún tráfico multicast.
Hay que tener habilitado IGMP Snooping en el switch. Esta deshabiliado por defecto.
SIN PIM SNOOPING |
El host hace un IGMP Join y los switches lo distribuyen por todos los puertos.
CON PIM SNOOPING |
El host hace un IGMP Join y los switches lo distribuyen solo por el puerto interesado.
Documento de Cisco sobre IGMP
PIM (Protocol Independent Multicast)
Es el protocolo usado entre los routers para señalizar cómo construir el árbol multicast. No construye su propia topología de la red, sino que usa la información de otros protocolos para comprobar que el árbol multicast se puede construir y no tiene bucles.
PIM controla cómo se construye el árbol y quien recibe el tráfico
Tenemos 3 modos de correr PIM:
- Sparse Mode -> El tráfico no se envía a no ser que el equipo lo solicite. Usa un RP (Rendesvouz Point) para procesar las suscripciones (join)
- Dense Mode -> Inunda toda la red. Usa un comportamiento "Flood-Prune". El tráfico llega a todos y los no interesados tienen que rechazarlo con un mensaje Prune. No es eficiente en gandes redes.
- Sparse-Dense Mode -> Los grupos que tienen asignado un RP corren bajo SM y el resto bajo DM.
4- PIM SM (Protocol-Independent Multicast Sparse Mode)
Las
principales características del PIM SM son las siguientes:
·
Modelo
explícito de suscripción.
El
PIM SM utiliza un modelo explícito por el cual los receptores envían mensajes
“PIM Join” a su “Rendezvous Point” (RP) designado. El RP es la raíz de un árbol compartido (Shared
Distribution Tree) por el que fluye el tráfico multicast.
·
El chequeo
RPF depende del tipo de árbol.
Si
el tráfico multicast recibido fluye por el árbol compartido (Shared Tree), el
chequeo RPF utilizará la dirección IP del RP. Sin embargo, si el tráfico
multicast recibido fluye por el camino más corto (SPT), el chequeo RPF
utilizará la dirección IP de la fuente. En la sección de enrutamiento PIM SM se
describen con más detalle ambas opciones.
·
Sólo un RP
puede estar activo para un grupo en un momento dado.
La
situación habitual es tener un solo RP para todos las grupos, sin embargo, es
posible configurar diferentes RPs para varios grupos. Esto puede hacerse
mediante listas de acceso. De esta forma, podemos colocar los RPs en diferentes
lugares y mejorar el flujo de tráfico especialmente si están próximos a las
fuentes. En la configuración de los routers podemos ver todo esto en las
siguientes líneas:
ip
pim rp-address 192.168.0.1 21 override
ip
pim rp-address 192.168.0.2 11 override
ip
pim rp-address 192.168.0.3 31 override
Donde
podemos ver las direcciones IP de los RPs, así como, el número de la lista de
acceso asociada. El último parámetro (override) es para que prevalezca la
configuración estática ante la automática, es caso de que esta exista
·
Configuración
de los RPs.
Los
puntos de encuentro (RP) pueden ser configurados estáticamente en cada router en la
red (pero deben coincidir para un correcto funcionamiento). Sin embargo, existe
la posibilidad de configurarlos automáticamente mediante Auto-RP o BSR (Bootstrap Router)
·
Enrutamiento.
El
enrutamiento multicast en una red “PIM Sparse Mode” se realiza buscando, en
primer lugar, una coincidencia (S, G) en la tabla, es decir, una línea en la
tabla de enrutamiento multicast en la que coincida fuente y grupo con los del paquete. Si no se encuentra una entrada (S, G), se enruta el datagrama
utilizando una entrada (*, G) en la tabla.
En un router podemos encontrar en la
tabla de enrutamiento multicast (accesible mediante el comando “show ip
mroute”), los dos tipos de entradas, un ejemplo de cada:
(100.100.1.99/32, 224.100.100.50),
00:01:34/00:01:25, flags: FT
Incoming interface: Vlan7, RPF nbr 0.0.0.0,
Registering
Outgoing interface list:
Serial0/1, 10.152.50.11, Forward/Sparse,
00:01:34/00:02:11
(*,224.100.100.50),
7w0d/00:02:59, RP 10.10.28.209, flags: SJC
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
Serial0/0.5, 10.100.10.12, Forward/Sparse,
1w6d/00:02:26
Vlan209, Forward/Sparse, 6w4d/00:02:22
Serial0/1, 10.152.30.11, Forward/Sparse,
3w2d/00:02:02
Para más información, consultar el Anexo C
donde se comenta con mayor detalle la tabla de enrutamiento multicast.
4.1-
Descubrimiento de Vecinos
Las consultas PIM se envían periódicamente
para descubrir la existencia de otros routers PIM en la red a la dirección multicast 224.0.0.13. Para redes
multiacceso (como Ethernet), estos mensajes de consulta se envían a la
dirección multicast de “todos los routers” (224.0.0.2). PIM es independiente y usa otra dirección.
En redes multiacceso, se elige un
“Designated Router” (DR), para cada segmento de red, de forma que los mensajes
de consulta puedan llegar a todos los equipos. En redes PIM Sparse Mode, el DR
es el responsable de enviar “Joins” (o mensajes de suscripción) de los hosts
hacia los RPs. Esta medida es necesaria cuando tenemos dos routers de primer
salto, es decir, dos routers que tienen acceso al segmento de red donde se
encuentran los hosts. En esta situación solo uno de los dos debe transmitir el
mensaje hacia el RP.
Para
elegir el DR, cada nodo PIM examina los mensajes de consulta PIM recibidos de
sus vecinos y compara sus direcciones IP con la dirección IP de su propia
interfaz. El vecino PIM con la dirección IP más alta es elegido como DR. Si no
se han recibido mensajes de consulta PIM del DR elegido, en un periodo de
tiempo (configurable), el proceso de elección de DR comienza de nuevo.
En un router podemos ver
sus vecinos mediante el comando “show ip pim neighbor”, con el
siguiente resultado:
PIM
Neighbor Table
Neighbor
Address Interface Uptime Expires
Mode
100.0.20.20 Serial0/1 1w6d 00:01:00
Sparse
100.0.20.11 Serial0/1 3w2d 00:01:07
Sparse
100.0.30.11 Serial0/1 3w2d 00:01:27
Sparse
100.0.50.11 Serial0/1 3w2d 00:01:13
Sparse
100.0.50.20 Serial0/1 3w2d 00:01:05
Sparse (DR)
10.152.40.20 Serial0/1 3w2d 00:01:05
Sparse
10.152.40.11 Serial0/1 3w2d 00:01:23
Sparse
100.0.10.2
Serial0/0.2 3w2d 00:01:29
Sparse (DR)
100.0.10.12
Serial0/0.5 4w3d 00:01:22
Sparse (DR)
100.0.29.101 Vlan18 4w3d 00:01:15
Sparse (DR)
Los campos que podemos ver son los
siguientes:
a)
Neighbor
Adress: Dirección IP del vecino PIM.
b)
Interface: La interfaz por la que se ha recibido la consulta PIM de su vecino.
c)
Uptime: El periodo de tiempo que ha estado activo.
d)
Expires: El periodo de tiempo tras el cual el vecino PIM no será considerado
activo. (Puesto a cero por la recepción
de otra consulta PIM).
e)
Mode: Modo PIM (Sparse, Dense, Sparse/Dense) utilizado por el vecino.
f)
(DR): Indica que el vecino PIM es el DR para el segmento de red.
4.2- Enrutamiento SM
En los equipos Cisco las interfaces son:
- Incoming Interface -> Upstrema. Es la interface por donde se llega a la fuente
- Outgoing Interface (OIL) -> Downstream. Las interfaces hacia los receptores
Primera Fase: Chequeo RPF
El primer paso en el enrutamiento IP es el chequeo RPF, que como hemos visto anteriormente depende del tipo de árbol de distribución. Cuando un datagrama multicast llega el router busca, en primer lugar, en la tabla de enrutamiento multicast una coincidencia (S, G), es decir, una línea en la tabla de enrutamiento multicast en la que coincida fuente y grupo con los del datagrama. Si la encuentra se trata de un árbol de camino más corto (Shortest-path). Si no la encuentra, busca una entrada (*, G) en la tabla, que si existiera, indicaría un árbol compartido (Shared). En función del tipo de árbol se realizan las siguientes acciones:
·
Shared Tree
(*, G): Se realiza el chequeo RPF con la dirección IP del punto de
reunión (RP). Para ello, comprueba en la tabla de enrutamiento unicast, que
para alcanzar esa dirección IP debe soltar el paquete por la interfaz por la
que ha recibido el datagrama multicast, es decir, lee la tabla al revés. Si se
realiza con éxito el datagrama pasa a la segunda fase, si no se descarta.
(NOTA: Esta comprobación también puede realizarse con el “Incoming Interface”
de la tabla multicast, el resultado será siempre el mismo). Solo para Sparse Mode. Elimina mucho tráfico inncesario.
·
Shortest-path
Tree (S, G): Se realiza el chequeo RPF con la dirección IP origen. El
mecanismo de comprobación es exactamente el mismo que en el caso anterior, lo
único que cambia es la dirección IP utilizada.
Una
vez se ha validado el datagrama mediante el chequeo RPF, debemos enviar el
paquete a su destino, es decir, realizar el enrutamiento propiamente dicho.
Segunda Fase: Envío de paquetes
multicast.
Una
vez más, en primer lugar, se busca una entrada en la tabla multicast del tipo
(S, G), y si no existe, se busca una del tipo (*, G). El datagrama se envía por
las interfaces señaladas como “Outgoing Interfaces” en la línea de la tabla
multicast correspondiente a ese grupo.
Las interfaces se colocan en la lista
de “Outgoing Interfaces” si y sólo si se cumple al menos una de las siguientes
condiciones:
a)
El router ha recibido un mensaje PIM Join para ese
grupo desde otro vecino PIM vía esa interfaz.
b)
Un host en esa interfaz se ha unido a un grupo (vía
IGMP).
c)
La interfaz del router ha sido configurada manualmente
para unirse al grupo.
NOTA: La
interfaz “Incoming” se incluye en el momento que se crea la entrada en la tabla
de enrutamiento multicast. En el caso del árbol de distribución compartido,
dicha interfaz contiene la interfaz directamente conectada del vecino PIM
anterior en el camino hacia el RP (en el propio RP el “Incoming Interface”
estará a “null”). Y en el caso del árbol de distribución del camino más corto,
contiene la interfaz directamente conectada del vecino PIM anterior en el
camino hacia la fuente.
4.3- Suscripción SM
El mecanismo de suscripción comienza
cuando algún router, en un de último salto del árbol de distribución compartido
(Shared Tree), desea recibir tráfico multicast perteneciente a un grupo G
(normalmente debido a un mensaje IGMP de unión enviado por un host a dicho
router). Para recibir tráfico multicast del grupo G, el router envía un mensaje
PIM Join (*, G) a su router superior, o vecino PIM, en el árbol hacia el RP (si
hay más de uno, escogerá el DR, como hemos visto anteriormente). Este es un mensaje multicast a todos los
routers (224.0.0.2), pero en el paquete se indica la dirección IP del vecino
PIM. De esta forma, todos los routers PIM en la red conocerán la unión, pero
sólo el vecino PIM indicado por la dirección IP realizará la suscripción.
Cuando un router PIM recibe un
mensaje de suscripción (*, G) para el grupo G, de uno de sus vecinos PIM por
debajo de él en el árbol, comprobará si en su tabla de enrutamiento multicast
ya existe una entrada (*, G).
a)
Si la entrada (*, G) existe, entonces la interfaz, por
la que se ha recibido el mensaje de suscripción, se coloca en la lista de
interfaces de salida (Outgoing List).
b)
Si la entrada (*, G) no existe, se crea. La interfaz
por la que se ha recibido el mensaje de suscripción se coloca en la lista de
interfaces de salida (Outgoing List), y se envía un mensaje de suscripción (*,
G) hacia el RP.
El
resultado final de todo este mecanismo es la creación de una entrada (*, G) en
todos los routers desde los routers de último salto hasta el RP, de forma que
el tráfico multicast del grupo G fluya por el árbol compartido hasta el router
de último salto.
4.4- Registro SM
El
mecanismo de registro permite a los routers, que constituyen el árbol de
distribución, actualizar sus tablas de enrutamiento multicast para conducir
correctamente dicho tráfico, desde las fuentes hasta los receptores.
Las fuentes no son necesariamente
receptores y viceversa. En el caso de un host fuente exclusivamente, se le
permite comenzar a enviar paquetes multicast sin necesidad de suscribirse a un
grupo vía IGMP. El mecanismo desencadenado por el envío de paquetes multicast
difiere ligeramente si los receptores se suscriben primero, o si son las fuentes
las que actúan primero (la diferencia puede apreciarse cuando el RP recibe
mensajes “Register”). Básicamente, el proceso es el siguiente:
·
El router
de primer salto envía “Registros” al RP.
En
PIM Sparse Mode, cuando un router de primer salto recibe el primer paquete
multicast de una fuente directamente conectada “S” para el grupo “G”, crea en
la tabla de enrutamiento multicast una entrada (*, G) y otra (S, G), marca esta
última como directamente conectada y “Registrándose” (flag “F”), y ambas como
“pruned” (flag “P”) porque la OIF está a null. (Nota: En un router Cisco no es
posible tener una entrada (S, G) sin una entrada (*, G)).
A
continuación, el router de primer salto encapsula el paquete original multicast
en un mensaje “PIM Register” y lo manda al RP de forma unicast. (A partir de
este momento, cualquier paquete multicast recibido desde la fuente directamente
conectada “S”, para el grupo “G”, serán también encapsulados en un mensaje
“Register” y mandados por unicast al RP. Esto continuará hasta que se recibe un
mensaje “Register Stop” (S, G) desde el RP.
Es necesario enviar el tráfico
multicast encapsulado al RP porque él es la raíz del árbol de distribución
compartido, por el que debe fluir el tráfico multicast. Si no se enviara
encapsulado, podría ser enrutado a otras ramas por otros equipos intermedios, y
entonces el tráfico multicast no pasaría por el RP en el camino compartido
(condición necesaria).
·
El RP
recibe mensajes “Register”.
Cuando
el RP recibe un mensaje “Register” lo desencapsula. En este punto, todo depende
de si el RP tiene una entrada (*, G) con el grupo al que se dirigen los
paquetes multicast (porque, por ejemplo, otra fuente haya transmitido al mismo
grupo), o no.
a)
Si existe la entrada (*, G) en el RP, (implica que hay
receptores en el árbol compartido), envía el paquete original por todas las
interfaces de salida (Outgoing List). Si todavía no lo ha creado, el RP genera
la entrada (S, G) y envía un mensaje Join (S, G) de vuelta hacia la fuente para
formar al camino más corto (SPT) con la fuente “S”. Y, como veremos más
adelante, terminará por recibir el tráfico multicast por el SPT y cancelará los
mensajes “Register”.
b)
Si no existe la entrada (*, G) en el RP (implica que
no hay receptores en el árbol compartido), descarta los paquetes multicast
hacia ese grupo. Además, al no necesitar tráfico (S, G), el RP envía un mensaje
PIM Prune hacia el router de primer salto (que no alcanzará su destino si
existen routers en el camino que no conozcan el grupo, y que por lo tanto
descartarán los paquetes). Por último, el RP envía al router de primer salto un
mensaje “Register Stop” para que detenga el envío de paquetes registrados
(encapsulados y enviados como unicast).
·
Router de
primer salto recibe un mensaje “Join (S, G)”.
Cuando
el router de primer salto recibe el mensaje Join (S, G) (enviado salto a salto
desde el RP), lo procesa y añade la interfaz por la que ha llegado el mensaje a
la lista de interfaces de salida (Outgoing List), para esa entrada. (Esa
entrada fue, originalmente, creada cuando el router de primer salto recibió el
primer paquete multicast de la fuente directamente conectada “S”, y se creó con
la OIF vacía, como siempre). Este proceso se realiza, salto a salto, en todos
los routers intermedios (si existen), de forma que se completa la construcción
del camino más corto (Shortest-Path Tree – SPT) desde la fuente hasta el RP.
A partir de este momento, el router
de primer salto comienza a enviar el tráfico multicast de la fuente “S” a
través del recientemente construido camino más corto (SPT), hacia la fuente.
Es importante tener en cuenta que el
tráfico multicast (S, G) fluye temporalmente hacia el RP mediante dos métodos
diferentes: encapsulado en mensajes “Register” (hasta que se reciba un mensaje
“Register-Stop”), y a través del camino más corto (SPT).
·
El RP
comienza a recibir tráfico (S, G) por el camino más corto (SPT).
Tan
pronto como el RP comienza a recibir tráfico multicast (S, G) natural (sin
encapsular en mensajes “Register”) a través del camino más corto, el RP marcará
el flag “T” en la entrada (S, G) para indicar que el tráfico fluye por el
camino más corto (SPT).
A
partir de este momento, cuando se reciba en el RP cualquier mensaje “Register”,
al estar el flag “T” activado para esa entrada (S, G), responderá al router de
primer salto con un mensaje PIM (S, G) Register-Stop. De esta forma se notifica
al router de primer salto que el tráfico multicast está siendo recibido sin
encapsular y por el camino más corto (SPT).
·
El router
de primer salto recibe el mensaje “Register-Stop”.
Cuando
el router de primer salto recibe el mensaje “Register-Stop” desactiva el flag
“Registering”, el F, en la entrada (S, G) y deja de encapsular el tráfico
multicast (S, G) en mensajes “Register”. Finalmente, el tráfico queda, únicamente,
circulando por el camino más corto hacia el RP.
4.5- SPT - Switchover.
En PIM SM la conmutación SPT (SPT
Switchover) se configura para conmutar al camino más corto. Para determinar el
momento de la conmutación se utilizan umbrales aplicados a los anchos de banda
de tráfico multicast. Los umbrales SPT se especifican en Kbps y mediante listas
de acceso se puede especificar los grupos a los que aplicar los umbrales. El
umbral por defecto es 0 Kbps, es decir, que todas y cada una de las fuentes se
conmutan al camino más corto. Si se configura un umbral “Infinito” en un grupo,
las fuentes no conmutarán nunca al camino más corto, y continuarán en el camino
compartido.
Cuando el umbral SPT de un grupo se
supera en un router de último salto, o de último salto, el siguiente paquete
recibido para ese grupo, a partir de ese momento, provocará el envío de un paquete (S, G) Join, salto a salto, hacia la
fuente del paquete. De esta forma, se construye el camino más corto desde la
fuente “S” hasta el router de último salto.
Ventajas: Se conmuta al camino más
corto (SPT), para utilizar el camino óptimo (normalmente) en la transmisión de
paquetes multicast. Dependiendo de la posición de la fuente respecto al RP,
esta conmutación puede reducir la latencia de red substancialmente.
Inconvenientes: En redes con un
número alto de fuentes, se debe poner más atención al estado de los routers. En
algunos casos, se configura un umbral infinito para forzar el camino compartido
cuando la latencia no es una prioridad.
Para configurar el umbral SPT en un
router Cisco, desde el modo de configuración basta con utilizar el comando “ip
pim spt-threshold umbral”.
Mecanismo
SPT-Switchover
Es importante tener en cuenta que
este mecanismo no consiste en comparar los tráficos de las fuentes
independientemente en un grupo con el umbral especificado. En su lugar, se
calcula el tráfico total de un grupo que fluye por el árbol compartido (Shared
Tree) en un segundo. Si este valor excede el umbral establecido, el siguiente
paquete recibido provoca la conmutación al camino más corto.
El mecanismo paso a paso es el
siguiente:
·
Una vez cada segundo, todo el tráfico dirigido al
grupo “G” (*, G) se compara con el umbral SPT. Si el tráfico de todo el grupo
supera el umbral, entonces se activa el flag “J” en la entrada (*, G) de la
tabla de enrutamiento multicast.
·
A medida que se recibe cada paquete multicast por el
camino compartido, el flag “J” se consulta en la entrada (*, G). Si el flag “J”
está activado:
a)
Se crea una nueva entrada (S, G) para la fuente del
paquete.
b)
Se envía a la fuente un mensaje (S, G) Join, para
unirse al camino más corto (SPT).
c)
Se activa el flag “J” en la entrada (S, G) para
denotar que esa entrada fue creada como resultado de una conmutación al camino
más corto (SPT) por superar el umbral SPT.
d)
Se desactiva el flag “J” en la entrada (*, G). (Que
será activado nuevamente en el segundo siguiente si el tráfico conjunto dentro
del grupo supera el umbral SPT).
·
Este mecanismo puede, en algunos casos, conmutar por
error fuentes con tráfico bajo al SPT. Sin embargo, el mecanismo RPT-Switchback
corrige esta situación y, eventualmente, solo las fuentes de alto tráfico serán
recibidas por el SPT, mientras que las fuentes de bajo tráfico permanecerán en
el camino compartido.
Mecanismo RPT-Switchback
Este mecanismo se utiliza para
conmutar las fuentes de vuelta al camino compartido (Shared Tree), cuando sus
tráficos caen por debajo del umbral SPT. A diferencia del mecanismo anterior,
el RPT-Switchback se realiza una vez cada minuto, (de esta forma se evita el
cambio cíclico, demasiado rápido, de las fuentes entre el camino compartido o
Shared Tree y el camino más corto, o Shortest-path Tree).
Para cada entrada (Si, G)
en la tabla de enrutamiento multicast que tenga activado el flag “J”, el
mecanismo calcula el volumen de tráfico para la fuente “Si”. Si el
volumen de tráfico cae por debajo del umbral SPT, se vuelve atrás para conmutar
al camino compartido. Este proceso lo realiza el router de último salto
mediante los siguientes pasos:
a)
Envía un mensaje de tipo Join / Prune (ver formato de
paquetes) que contenga un (*, G) Join, es decir, una solicitud de unión al
camino compartido, sin el bit (Si, G) RP-bit Prune, por el camino
compartido (Shared Tree). Esto provocará la reducción (prune), y por lo tanto
borrado, de las entradas (Si, G) en la tabla de enrutamiento
multicast, de forma que el tráfico vuelva a fluir por el RPT (Shared Tree) de
nuevo.
b)
El router que desata el proceso borra su entrada (Si,
G) de su tabla de enrutamiento multicast.
c)
Dicho router envía un mensaje (Si, G) Prune
por el camino más corto (SPT) para detener el tráfico que fluya por este árbol,
para que el proceso se repita en toda la rama.
4.6- Pruning SM.
El proceso de reducción o “pruning”
es el que se produce cuando el contador de tiempo de un grupo IGMP llega a
cero, o cuando el último host o usuario abandona el grupo “G”.
La interfaz del router que da acceso
a los usuarios de dicho grupo se retira de la entrada (*, G), y todas las
entradas (S, G) desaparecen de la tabla de enrutamiento multicast. Entonces:
a)
Si la lista de interfaces de salida (Outgoing
Interface List) se queda en “Null”, se envía un mensaje (*, G) Prune por el
camino compartido hacia el RP.
b)
En cualquier entrada (S, G) se deja agotar el contador
“Expires” (ver Anexo C) para que sea borrada de la tabla de enrutamiento
multicast.
Cuando
los routers, por encima en al árbol compartido, reciben el mensaje (*, G)
Prune, retiran las interfaces por las que han recibido el mensaje (hay que
comprobar interfaz y salto siguiente), de las “Outgoing Interfaces Lists” de
las entradas (*, G) de sus tablas de enrutamiento multicast.
a)
Si como resultado de retirar la interfaz la lista de
interfaces de salida de la entrada (*, G) se queda a “Null”, se envía en
mensaje (*, G) Prune por el árbol compartido (RPT) hacia el RP.
b)
En cualquier entrada (S, G) se deja agotar el contador
para que sea borrada de la tabla de enrutamiento multicast.
4.7- Mantenimiento de PIM SM.
En PIM SM, la información de
suscripción o abandono (Join / Prune) tiene un tiempo normal de expiración de 3
minutos. Si no se recibe periódicamente un mensaje tipo “Join / Prune” para
refrescar este estado, automáticamente, expira y se borra. Por lo tanto, un
router PIM envía, periódicamente, mensajes tipo “Join / Prune” a sus vecinos
PIM para mantener el estado de la información.
Cuando se recibe un mensaje “Join”
de un vecino PIM, el temporizador de expiración de la interfaz (en la “Outgoing
Interface List”) por la que se ha recibido, se reinicializan a 3 minutos. Si el
temporizador de expiración de la interfaz llega a cero, la interfaz se retira
de la “Outgoing Interface List”. Esto puede activar una reducción o Prune, si
al retirar la interfaz de la lista, esta se queda “Null”.
Cuando se recibe un mensaje Prune en
PIM Sparse Mode, la interfaz por la que se ha recibido se retira de la
“Outgoing Interface List”. La excepción es el caso especial de las reducciones,
o Prunes, (S, G)RP-bit, que se utilizan para reducir tráfico (S, G) de camino
compartido (Shared Tree). En este caso, se deben enviar reducciones (S,
G)RP-bit para refrescar el estado de reducido (prune) en el vecino hacia el RP.
Todas las entradas (S, G) tienen
unos temporizadores de expiración, que se reinicializan a 3 minutos por la
recepción de un paquete (S, G) recibido por el camino más corto (SPT). Si la
fuente deja de mandar, este tiempo de expiración se reduce a cero y la entrada
(S, G) se borra.
4.8- Formato de
paquetes PIM.
En este apartado vamos a ver la
estructura de los diferentes tipos de paquetes utilizados en las diferentes
funciones del protocolo PIM. Comenzaremos con la cabecera de los paquetes PIM,
que es común para todos ellos.
4.8.1- Cabeceras de paquetes PIM
4.8.2- Mensajes de consulta PIM
Estos mensajes se utilizan para
establecer o mantener el estado con los equipos vecinos. Se envían
periódicamente para indicar a los otros routers PIM de la red que este router
PIM está presente todavía.
4.8.3- Mensajes
PIM Join / Prune
Este es un sencillo formato de
paquete que contiene una lista de suscripciones (Joins) y reducciones (Prunes).
Cualquiera de las listas puede estar vacías, pero nunca las dos a la vez.
Listas de grupos
Las listas de grupos se utilizan en
los mensajes Join/Prune, así como en los mensajes Graft y Graft-Ack. Una lista
de grupos es una relación de grupos, cada entrada de la lista comienza por la
dirección IP de un grupo y su máscara para identificar al grupo multicast.
Cada entrada de la lista de grupos
contiene un conjunto de cero o más fuentes para suscribirse (Join) seguida por
un conjunto de cero o más fuentes para cancelar su suscripción (Prune). Estos
conjuntos o listas Join / Prune contienen una lista de direcciones de fuentes
codificadas.
Direcciones
de fuentes codificadas
Las
direcciones fuente contenidas en las listas Join y Prune están codificadas en
un formato especial como se puede apreciar en la figura anterior.
a)
S = Sparse Mode bit: Utilizado
por los routers en el camino más corto (SPT) para indicar que es un grupo
Sparse Mode, Lo cual le dice al receptor de este Join que debe enviar Joins
periódicos hacia la fuente.
b) W = Wildcard bit: Si este bit está a uno, indica que el
Join/Prune se aplica a la entrada (*, G), es decir, corresponde a un Join/Prune
del camino compartido. Si este bit está a cero, indica que se aplica a la
entrada (S, G), es decir, corresponde a un Join/Prune del camino más corto. Los
Joins y Prunes enviados a un RP deben tener este bit activado (a uno).
c) R = RP bit: Si este
bit está a uno, indica que esta información se debe enviar por el camino
compartido hacia el RP. Si este bit está a cero, la información debe enviarse
por el camino más corto hacia la fuente.
d) Lon. M: Longitud de la máscara en bits.
e) Dirección de fuente: Dirección IP de la fuente.
4.8.4- Mensajes PIM Register
Este tipo de mensajes los utiliza el
“Designated Router” (DR) para encapsular paquetes multicast y enviarlos al RP,
para que sean enrutados por el camino compartido.
El DR continua enviando al RP los
mensajes “Register” con paquetes multicast encapsulados hasta que recibe del RP
un mensaje “Register-Stop”.
4.8.5- Mensajes PIM Register-Stop
Este tipo de mensajes los utiliza el
“Rendevouz Point” (RP) para solicitar al “Designated Router” (DR) que detenga
el envío de mensajes “Register”. Estos mensajes se envían después de que el RP
forme parte del árbol de distribución junto con el DR, y además, después de
comenzar a recibir tráfico multicast “nativo”, es decir, sin encapsular en
mensajes “Register”.
4.8.6- Mensajes
PIM RP-Reachability
Este tipo de mensajes los envía el
RP periódicamente por el árbol compartido para informar a los routers,por
debajo de él en el árbol, que el RP está todavía activo y es alcanzable.
En cada uno de los routers en el
camino compartido por debajo del RP existe un contador que se refresca con
estos mensajes. Cuando este contador deje de refrescarse, el router conmutará a
un RP de backup.
4.9- Ejemplo del
funcionamiento del PIM SM.
El ejemplo que se muestra a
continuación repasa todos los conceptos de PIM SM explicados en los apartados
anteriores.
En las siguientes páginas,
describiremos los pasos y procesos que se producen en la suscripción de nuevos
receptores, registro de routers intermedios, generación de tráfico multicast
por las fuentes, conmutación entre los dos tipos de árboles de distribución,
etc.
·
“Receptor 1” se suscribe (Join) al grupo “G” enviando
un mensaje IGMP Host a su router de salida C.
·
Al recibir el mensaje IGMP, “C” crea una entrada (*,
G) en su tabla de enrutamiento multicast, que tenga la interfaz hacia “Receptor
1” en su “Outgoing List” (OIF).
·
A continuación, “C” envía un mensaje de suscripción
(*, G) Join hacia el punto de reunión (RP).
·
El punto de reunión, o “Rendezvous Point” (RP), recibe
el mensaje de suscripción de “C” (*, G) y crea su propia entrada (*, G), en su
tabla de enrutamiento multicast, que tendrá la interfaz hacia “C” en su
“Outgoing List” (OIF).
·
De esta forma, se ha construido el árbol compartido
para el grupo “G”
·
“Fuente 1” comienza a generar tráfico con destino al
grupo “G”. (Nota: no es necesario que “Fuente 1” se suscriba al grupo “G”
mediante un mensaje “IGMP Host Membership” antes de enviar tráfico al grupo
“G”).
·
A continuación, “A” encapsula los paquetes multicast
de “Fuente 1” en mensajes “PIM Register” y los envía como unicast al Rendezvous
Point (RP).
·
El punto de reunión (RP) recibe y desencapsula los
mensajes “Register”, de forma que puede apreciar que se trata de paquetes
dirigidos al grupo “G”, para el cual tiene una entrada (*, G).
·
El punto de reunión (RP) envía los paquetes
desencapsulados como multicast por el camino compartido.
·
Seguidamente, el RP envía un mensaje de suscripción
(Join) hacia la “Fuente 1” de forma que pueda empezar a recibir paquetes
“nativos” (desencapsulados) desde la “Fuente 1”.
·
Una vez que se comienza a recibir los datos de “Fuente
1” de forma nativa, el punto de reunión (RP) envía un mensaje “Register-Stop”
para notificar a “A” que ya no necesita el tráfico encapsulado en registros.
·
El tráfico excede el umbral SPT y “C” comienza el
proceso de conmutación al camino más corto (SPT) para la “Fuente 1”, mediante
el envío de un mensaje (S, G) Join hacia “A” por el camino más corto.
·
Para reducir el
tráfico de la “Fuente 1” procedente del camino compartido (puesto que lo está
recibiendo también por el camino más corto), “C” envía (S, G)RP-bit por el
camino compartido. (Nota: el bit RP indica a todos los routers en el camino que
esta reducción debe llegar por el RTP hasta el RP).
·
El “RP” recibe el (S, G) RP-bit Prune y retira la
interfaz (hacia “C”) en la OIF de la entrada (S, G). Esto detiene el flujo del
tráfico de “Fuente 1” por el camino compartido.
·
En este momento, la “Outgoing List” (OIF) del “RP”
está a “Null” (siempre y cuando no existan otras ramas en el árbol compartido
que quieran el tráfico de “Fuente 1”), y por lo tanto, no necesita más el
tráfico de “Fuente 1”. El “RP” responde enviando Prunes hacia “Fuente1”. Esto
detendrá el flujo de tráfico de “Fuente 1” hacia el “RP”.
·
El “Receptor 2” también se suscribe al grupo “G”
enviando un “IGMP Host message” a “E”.
·
A continuación, ”E” crea una entrada (*, G) que tendrá
en su “Outgoing Interface List” la interfaz hacia “Receptor 2”.
·
Seguidamente, “E” envía un (*, G) Join por el camino
compartido hacia el punto de encuentro (RP).
·
“C” recibe el mensaje (*, G) Join procedente de “E” y
añade la interfaz (hacia “E”) a la “Outgoing List” en ambas entradas (*, G) y
(S, G) en la tabla de enrutamiento multicast.
(Nota:
Puesto que “C” ya tenía la entrada (*, G), no es necesario enviar un mensaje
(*, G) Join hacia el “RP” de nuevo.)
·
El tráfico del grupo “G” comienza a fluir por “C” y
“E” hasta el “Receptor 2”.
·
“Fuente 2” comienza a generar tráfico multicast para
el grupo “G”.
(Nota:
De nuevo, no es necesario que “Fuente 2” se suscriba al grupo “G” mediante el
envío de un mensaje IGMP, antes de generar tráfico multicast para dicho grupo.)
·
Seguidamente, “D” encapsula los paquetes multicast en
mensajes PIM “Register” y los envía por unicast al punto de reunión (RP).
·
El punto de reunión (RP) recibe y desencapsula los
mensajes “Register”, de forma que puede apreciar que se trata de paquetes
dirigidos al grupo “G”, para el cual tiene una entrada (*, G).
·
El punto de reunión (RP) envía los paquetes
desencapsulados como multicast por el camino compartido.
·
En este momento, el “RP” envía un mensaje PIM Join
hacia “Fuente 2” de forma que pueda empezar a recibir paquetes “nativos”
(desencapsulados) desde “Fuente 2”.
·
Los datos procedentes de la “Fuente 2” comienzan a
llegar en estado nativo por el camino más corto (SPT), a través de “D”.
·
A continuación, el punto de reunión (RP) envía un
mensaje “Register-Stop” para notificar a “D” que ya no necesita el tráfico
multicast encapsulado en mensajes”Register”.
·
En este punto, ambos caminos, compartido (tráfico
“Fuente 2”) y más corto (tráfico “Fuente 1”) se están utilizando para entregar
paquetes multicast del grupo “G” a los receptores.
4.10-
Configuración de PIM SM.
Es muy fácil configurar multicast
con PIM Sparse Mode, los pasos necesarios son los siguientes:
·
Añadir a la configuración el comando global: “ip
multicast-routing”.
·
Añadir el comando “ip pim sparse-mode” en
cada interfaz de la configuración del router para habilitar el Multicast IP
utilizando PIM SM.
(ATENCIÓN:
Se debe utilizar con precaución si el comando anterior no se añade a todos las
interfaces del router. Se pueden producir problemas si algunos de las
interfaces no están corrinedo multicast. Esto es debido a que el mecanismo RPF
Check utiliza la tabla de enrutamiento unicast, para calcular la interfaz RPF.
Si la interfaz RPF no está corriendo multicast, se pueden producir “errores
RPF”).
·
Configurar la dirección IP del punto de reunión (RP)
utilizando el comando de configuración global “ip pim rp-address ”.
ANEXO A
A continuación podemos
ver en la siguiente tabla una relación de las diversas funciones o fases de los
protocolos y los mensajes utilizados en cada una de esas fases.
ANEXO B
Este anexo contiene varios diagramas
de flujo que ilustran la construcción de los árboles y la transmisión
multicast. La descripción de la construcción de los árboles está fraccionada en
dos partes tomando como punto de división el RP. En primer lugar podemos ver la
sección entre el receptor y el RP y a continuación, el tramo entre el RP y la
fuente (porque depende del primero). Por último, tenemos un ejemplo genérico de
la transmisión del tráfico multicast, una vez estén construidos los árboles de transmisión.
ANEXO C
Este anexo contiene una explicación
detallada del formato de la tabla de enrutamiento multicast de un router Cisco.
El formato de cada una de las entradas es el siguiente:
( Source / Mask_Bits, Group), Uptime / Expires, (RP), Flags
Incoming
Interface: interface, RPF nbr xxxx
Outgoing
Interface list:
Interface,
Next_hop, State / Mode, Uptime / Expires
Flags: D
- Dense Mode, S
- Sparse Mode, C
- Conectado, L - Local,
P - Pruned,
R - RP-bit activo, F
- Flag Register, T
- SPT-bit activo, J
- Join SPT.
Tiempos: Uptime - Tiempo que lleva la
entrada en la tabla.
Expires - Tiempo para borrar la
entrada si no llega un refresco antes
(máximo 3 minutos).
A
continuación, se muestra un ejemplo ilustrativo:
·
Entradas
(*, G) y (S, G)
(*, 225.1.2.3), 3w0d/00:02:59, RP 100.10.1.2, flags: SJ
Incoming interface: Null, RPF
nbr 0.0.0.0
Outgoing interface list:
Vlan209, Forward/Sparse,
3w0d/00:02:04
Serial0/1, 100.15.3.1,
Forward/Sparse, 1w6d/00:02:23
(100.10.1.1/32, 225.1.2.3), 1w6d/00:02:59, flags: CT
Incoming interface: Vlan209, RPF
nbr 0.0.0.0
Outgoing interface list:
Serial0/1, 100.15.3.1,
Forward/Sparse, 1w6d/00:02:23
(100.10.1.2/32, 225.1.2.3), 1w6d/00:02:59, flags: CT
Incoming interface: Vlan209, RPF
nbr 0.0.0.0
Outgoing interface list:
Serial0/1, 100.15.3.1, Forward/Sparse,
1w6d/00:02:2
Estas tres entradas corresponden al grupo 225.1.2.3. La primera es del tipo (*, G), es decir, de
“árbol compartido”, mientras que las dos siguientes son particularizaciones (S,
G) para dos fuentes diferentes, y por lo tanto, del tipo “camino más corto”.
La
primera entrada tiene activos los flags S (modo Sparse), J (Join SPT). El modo
Sparse es por el tipo de protocolo PIM utilizado. El flag “J” está activo
porque se ha superado el umbral SPT. El “Incoming Interface” está a null porque
la máquina es el propio RP del grupo.
En
la segunda y tercera entrada están activos los flags C (Conectado) y T
(SPT-bit). El flag “C” indica que la fuente está directamente conectada, y el
flag “T” indica que se trata del camino más corto (SPT). En el “Incoming
Interface” el vecino PIM está a cero porque la fuente está directamente
conectada.
ANEXO D
Existe un protocolo para intercambiar multicast entre AS. Es el MSDP, Multicast Source Discovery Protocol. Hace que los diferentes RP de los AS intercambien la información de emisores y receptores multicast. No elimina la necesidad de PIM.
Permite a los ISP usar sus RP internos sin descubrir su red.Establecen una sesión TCP.
Directamente propaga la fuentes activas. Cuando un RP recibe un PIM Register (S,G) informa a sus vecinos MSDP usando un mensaje SA (Source Active) permitiendo saber a los otros AS donde están las fuetnes.
ANEXO D
Existe un protocolo para intercambiar multicast entre AS. Es el MSDP, Multicast Source Discovery Protocol. Hace que los diferentes RP de los AS intercambien la información de emisores y receptores multicast. No elimina la necesidad de PIM.
Permite a los ISP usar sus RP internos sin descubrir su red.Establecen una sesión TCP.
Directamente propaga la fuentes activas. Cuando un RP recibe un PIM Register (S,G) informa a sus vecinos MSDP usando un mensaje SA (Source Active) permitiendo saber a los otros AS donde están las fuetnes.
LABORATORIO - TOPOLOGÍA MULTICAST BÁSICO
La empresa HEINCH tiene instalado un servicio de hilo musical para sus tiendas. la emisión del programa musical se hace desde Madrid a través de MULTICAST.
En este escenario básico vamos a configurar Multicast Sparse-Mode.
Para emular multicast, lo hacemos desde una máquina virtual con Ubuntu. En este Ubuntu hemos instalado el paquete "mcsender", que envía paquetes multicast. Para recibir los paquetes usamos también una maquina virtual Ubuntu pero esta vez con el "mcfirst", que se usa para recibir los paquetes multicast. A parte, tienen instalado el programa VLC para poder enviar y recibir audio y video por multicast. En el escritorio de Madrid podéis encontrar una archivo de audio y otro de video para hacer las pruebas.
Para el enrutamiento unicast configuramos OSPF.
Imágenes:
Password Ubuntu: reverse
CONFIGURACIONES BÁSICA
Para la configuración de las interfaces en Ubuntu, os remito a la explicación siguiente en el laboratorio de JCNIA. Solo tenéis que configurar la ip, la máscara y la puerta de enlace.
Los routers Cisco:
MADRID#
conf t
interface Loopback0
ip address 10.0.10.1 255.255.255.255
!
interface
Ethernet0/0
ip address 20.0.0.1 255.255.255.252
full-duplex
!
interface
Ethernet0/2
ip address 80.0.0.1 255.255.255.252
full-duplex
!
interface
Ethernet0/3
ip address 192.168.10.1 255.255.255.0
full-duplex
!
router ospf 1
router-id 10.0.10.1
log-adjacency-changes
network 10.0.10.1 0.0.0.0 area 0
network 20.0.0.0 0.0.0.3 area 0
network 80.0.0.0 0.0.0.3 area 0
network 192.168.10.0 0.0.0.255 area 0
BARNA
conf t
interface Loopback0
ip address 10.0.20.1 255.255.255.255
!
interface
Ethernet0/0
ip address 20.0.0.2 255.255.255.252
full-duplex
!
interface
Ethernet0/1
ip address 20.0.21.1 255.255.255.252
full-duplex
!
router ospf 1
router-id 10.0.20.1
log-adjacency-changes
network 10.0.20.1 0.0.0.0 area 0
network 20.0.0.0 0.0.0.3 area 0
network 20.0.21.0 0.0.0.3 area
0
!
TARRAGONA
conf t
interface Loopback0
ip address 10.0.21.1 255.255.255.255
!
interface
Ethernet0/0
ip address 20.0.21.2 255.255.255.252
full-duplex
!
interface
Ethernet0/3
ip address 192.168.21.1 255.255.255.0
full-duplex
!
router ospf 1
router-id 10.0.21.1
log-adjacency-changes
network 10.0.21.1 0.0.0.0 area 0
network 20.0.21.0 0.0.0.3 area 0
network 192.168.21.0 0.0.0.255
area 0
!
SEVILLA
conf t
interface Loopback0
ip address 10.0.80.1 255.255.255.255
!
interface
Ethernet0/0
ip address 80.0.0.2 255.255.255.252
full-duplex
!
interface
Ethernet0/3
ip address 192.168.80.1 255.255.255.0
full-duplex
!
router ospf 1
router-id 10.0.80.1
log-adjacency-changes
network 10.0.80.1 0.0.0.0 area 0
network 80.0.0.0 0.0.0.3 area 0
network 192.168.80.0 0.0.0.255
area 0
!
|
Lo primero que tenemos que hacer es habilitar MULTICAST en los routers que van a cursar este tipo de tráfico (aquí son todos, claro). Para ello:
router(config)#ip multicast-routing
Lo siguiente es configurar el protocolo PIM. Configuramos el Redevendouz Point, el RP.
router(config)#ip pim rp-address 10.0.10.1
Esto lo hacemos en todos los routers, incluido Madrid.
Comprobamos los Rp de PIM con "show ip pim rp" y no vemos nada. Esto es porque tenemos que configurar el modo en que actúa el protocolo PIM:
Configuramos el modo de PIM en las interfaces, que en nuestro caso es Sparse-Mode:
router(config-if)#ip pim sparse-mode
Esto lo hacemos en las interfaces de los routers que vayan a cursar tráfico multicast. En este laboratorio lo hacemos entonces en todas las interfaces que estén conectadas, tanto en WAN como en LAN, en todas.
Comprobamos los RP de los routers:
#show ip pim rp
Ahora vamos a comprobar la tabla de rutas multicast. Para hacerlo:
#show ip mroute
Miramos
el RPF y si nos fijamos es la WAN del Peer, pero en Madrid, al ser el
router que propaga al emisor aparece la dirección 0.0.0.0, pues es el
mismo el que sabe llegar al emisor (192.168.10.250)
El RPF (Reverse Path Forwarding) chequea que en base a la dirección ip de origen y la interface de entrada de la petición multicast, la interface de salida para llegar por unicast a esa ip de origen sea la misma interface por la que ha entrado. Si no se cumple, fallaŕa el RPF y descarta el paquete.
El RPF (Reverse Path Forwarding) chequea que en base a la dirección ip de origen y la interface de entrada de la petición multicast, la interface de salida para llegar por unicast a esa ip de origen sea la misma interface por la que ha entrado. Si no se cumple, fallaŕa el RPF y descarta el paquete.
Y ahora en MADRID-MULTICAST envíamos los paquetes multicast. Lo primero es saber que interface tenemos configurada. Abrimos un terminal y
Para abrir un terminal, vamos al símbolo de Ubuntu que está arriba a la izquierda y buscamos "terminal". Hacemos click para que se abra:
Ahora miramos que interface ethernet tenemos asignada. Escribimos ifconfig. Y con la "eth" que nos indique.¡Antes hemos configurado la ip! Si véis que no os coge la ip, activar y desactivar la interface en Ubuntu.
Y ahora envíamos tráfico multicast con "mcsender":
mcsender -t15 -ieth11 226.0.0.226:5004
La opción "-t" es para decirle el TTL (Time To Live). Aquí, el número de salto. Le pongo 15 por poner algo.
La opción "-i" es para decirle el interface.
Y luego le decimos la dirección ip y el puerto para multicast con la que va a emitir. En este caso será la 226.0.0.226 y el puerto el 5004.
Ahora miramos en el router de Madrid con el comando "sh ip mroute":
Sin embargo en la "outgoing interface" vemos que pone "Null". No hay nadie pidiendo ese tráfico. Y en los demás routers no se ve nada.
Ahora vamos a tanto a Sevilla como a Tarragona y miramos la interfaces y escribimos:
mcfirst -4 -I eth10 -t600 226.0.0.226 5004
Vamos a ver las rutas multicast:
Si por ejemplo nos llaman de Tarragona y nos dicen que se han quedado sin hilo musical, después de hacer todas las pruebas de comunicación a nivel de unicast, es decir, se hace ping de IPv4 entre el emisor y receptor, una prueba que podemos hacer es configurar un grupo igmp estático en el router de Tarragona. De esta manera emulamos un JOIN hacia la fuente emisora. Así, podemos comprobar si el problema del routing multicast está en LAN, en WAN o en origen.
Creamos un grupo estático en la interface WAN, la e0/0 con el comando:
TARRAGONA(config-if)#ip igmp static-group 226.0.0.226
MUy buen blog sobre multicast descargue las maquinas virtuales pero me pide el password?
ResponderEliminarYa lo encontré gracias, muy buen aporte
ResponderEliminarGracias Aquilesboy. ¡Un saludo!
Eliminar