El protocolo PIM es un conjunto de protocolos para transmitir multidifusión en una red entre enrutadores. Las relaciones de vecindad se construyen de la misma manera que en el caso de los protocolos de enrutamiento dinámico. PIMv2 envía mensajes de saludo cada 30 segundos a la dirección de multidifusión reservada 224.0.0.13 (All-PIM-Routers). El mensaje contiene Temporizadores de retención, generalmente 3.5 * Hello Timer, es decir, 105 segundos por defecto.

PIM utiliza dos modos principales de operación: modo denso y disperso. Comencemos con el modo Denso.
Árboles de distribución basados en la fuente.Se recomienda utilizar el modo de modo denso en el caso de una gran cantidad de clientes de varios grupos de multidifusión. Cuando un enrutador recibe tráfico de multidifusión, lo primero que hace es verificar la regla RPF. RPF: esta regla se utiliza para verificar el origen de una multidifusión con una tabla de enrutamiento de unidifusión. Es necesario que el tráfico llegue a la interfaz detrás de la cual este host está oculto según la versión de la tabla de enrutamiento de unidifusión. Este mecanismo resuelve el problema de la aparición de bucles durante la transmisión multidifusión.

R3 del mensaje de multidifusión reconocerá la fuente de la multidifusión (IP de origen) y verificará las dos secuencias de R1 y R2 de su tabla de unidifusión. El flujo de la interfaz indicada por la tabla (R1 a R3) se transmitirá más, y el flujo de R2 se eliminará, porque para llegar al origen de la multidifusión, es necesario enviar paquetes a través de S0 / 1.
La pregunta es, ¿qué sucede si tiene dos rutas equivalentes con la misma métrica? En este caso, el enrutador elegirá el siguiente salto para estas rutas. Quien tiene una dirección IP más alta, ganó. Si necesita cambiar este comportamiento, puede usar ECMP. Más detalles
aquí .
Después de verificar la regla RPF, el enrutador envía un paquete de multidifusión a todos sus vecinos PIM, excepto el que recibió el paquete. Otros enrutadores PIM repiten este proceso. La ruta que un paquete de multidifusión ha pasado de la fuente a los destinatarios finales forma un árbol llamado: árbol de distribución basado en la fuente, árbol de la ruta más corta (SPT), árbol de la fuente. Tres nombres diferentes, elija cualquiera.
Cómo resolver el problema con el hecho de que algunos enrutadores no renunciaron a un flujo de multidifusión y no hay nadie a quien enviarlo, y el enrutador de nivel superior lo envía. Para esto, se inventó el mecanismo Prune.
Mensaje de poda.Por ejemplo, R2 continuará enviando multidifusión R3, aunque R3 por la regla de RPF lo descarta. ¿Por qué cargar el canal? R3 envía un mensaje de poda PIM y R2, al recibir este mensaje, elimina la interfaz S0 / 1 de la lista de interfaces de salida para este flujo, la lista de interfaces desde las cuales se debe enviar este tráfico.
La siguiente es una definición más formal de un mensaje PIM Prune:
El mensaje PIM Prune es enviado por un enrutador a un segundo enrutador para hacer que el segundo enrutador elimine el enlace en el que se recibe la poda de un SPT particular (S, G).
Después de recibir el mensaje de poda, R2 establece el temporizador de poda en 3 minutos. Después de tres minutos, comenzará a enviar tráfico nuevamente hasta que reciba el siguiente mensaje de Poda. Esto está en PIMv1.
Y en PIMv2 se agrega el temporizador de actualización de estado (por defecto 60 segundos). Tan pronto como se haya enviado un mensaje de poda desde R3, este temporizador comienza en R3. Después de que este temporizador caduque, R3 enviará un mensaje de Actualización de estado que restablecerá el Temporizador de poda de 3 minutos a R2 para este grupo.
Razones para enviar un mensaje de Prune:
- Cuando un paquete de multidifusión falla una comprobación de RPF.
- Cuando no hay clientes conectados localmente que solicitaron un grupo de multidifusión (IGMP Join) y no hay vecinos PIM a los que se pueda enviar tráfico de multidifusión (interfaz sin poda).
Mensaje de injerto.Imagine que R3 no quería tráfico de R2, envió Prune y recibió multidifusión de R1. Pero de repente, el canal cayó entre R1-R3 y R3 se quedó sin multidifusión. Puede esperar 3 minutos hasta que Primer Timer expire en R2. 3 minutos para esperar mucho tiempo, para no esperar, debe enviar un mensaje que muestre instantáneamente esta interfaz S0 / 1 en R2 desde el estado recortado. Este mensaje será un mensaje de injerto. Después de recibir el mensaje de Graft, R2 enviará un Graft-ACK en respuesta.
Poda de anulación.
Veamos este esquema. R1 transmite multidifusión en un segmento con dos enrutadores. R3 recibe y transmite tráfico, R2 recibe, pero no tiene a nadie para transmitir tráfico. Envía un mensaje de poda a R1 en este segmento. R1 debería eliminar Fa0 / 0 de la lista y detener la transmisión en este segmento, pero ¿qué pasará con R3? Y R3 está en el mismo segmento, también recibió este mensaje de Prune y se dio cuenta de la tragedia de la situación. Antes de que R1 deje de transmitir, establece el temporizador en 3 segundos y detiene la transmisión después de 3 segundos. 3 segundos: tanto tiempo para R3, para no perder su multidifusión. Por lo tanto, R3, tan pronto como sea posible, envía un mensaje Pim Join para este grupo y R1 ya no piensa en dejar de transmitir. Acerca de las publicaciones de Join a continuación.
Afirmar mensaje.
Imagine esta situación: dos enrutadores transmiten a la misma red a la vez. Reciben el mismo flujo de la fuente y ambos lo transmiten a la misma red detrás de la interfaz e0. Por lo tanto, deben determinar quién será la única emisora para esta red. Se utilizan mensajes de afirmación para esto. Cuando R2 y R3 detectan la duplicación del tráfico de multidifusión, es decir, la multidifusión que transmiten en R2 y R3, que ellos mismos transmiten, los enrutadores entienden que algo está mal aquí. En este caso, los enrutadores envían mensajes de afirmación, que incluyen la distancia administrativa y la métrica de ruta por la cual se alcanza el origen de multidifusión - 10.1.1.10. El ganador se determina de la siguiente manera:
- El que tiene menor AD.
- Si AD son iguales, entonces quién tiene la métrica más baja.
- Si hay igualdad, entonces el que tiene una IP más alta en la red a la que transmiten esta multidifusión.
Al ganar este voto, el enrutador se convierte en el enrutador designado. Pim Hello también se usa para seleccionar DR. Al comienzo del artículo, se mostró un mensaje de saludo PIM, allí puede ver el campo DR. El ganador es el que tiene una dirección IP más alta en este enlace.
Placa útil:
Mesa MROUTE.Después de la revisión inicial de la operación del protocolo PIM, necesitamos descubrir cómo trabajar con la tabla de enrutamiento de multidifusión. La tabla de enrutamiento almacena información sobre qué flujos fueron solicitados por los clientes y qué flujos fluyen desde los servidores de multidifusión.
Por ejemplo, al recibir un Informe de membresía IGMP o Unirse a PIM en alguna interfaz, se agrega una entrada del tipo (*, G) a la tabla de enrutamiento:

Esta entrada significa que se recibió una solicitud de tráfico con la dirección 238.38.38.38. El indicador DC significa que la multidifusión funcionará en modo Denso y C significa que el destinatario está conectado directamente al enrutador, es decir, el enrutador recibió el Informe de membresía IGMP y la Unión PIM.
Si hay un registro como (S, G) significa que tenemos una transmisión de multidifusión:

En el campo S - 192.168.1.11, hemos registrado la dirección IP de la fuente de multidifusión, será verificada por la regla RPF. En caso de problemas, lo primero que debe hacer es verificar la tabla Unicast para la ruta a la fuente. En el campo Interfaz entrante indica la interfaz a la que llega la multidifusión. En la tabla de enrutamiento de unidifusión, la ruta a la fuente debe hacer referencia a la interfaz especificada aquí. La interfaz de salida indica dónde se redirigirá la multidifusión. Si está vacío, no hubo solicitudes de este tráfico al enrutador. Puede encontrar más información sobre todas las banderas
aquí .
PIM en modo disperso.La estrategia en modo disperso es lo opuesto al modo denso. Cuando el modo Sparse recibe tráfico de multidifusión, enviará tráfico solo a través de aquellas interfaces en las que hubo solicitudes para esta secuencia, por ejemplo, mensajes de Informe PIM Join o IGMP solicitando este tráfico.
Elementos similares para SM y DM:
- Las relaciones de vecindad se construyen de la misma manera que en PIM DM.
- La regla RPF funciona.
- La elección de DR es similar.
- El motor Prune Overrides y los mensajes Assert son similares.
Para controlar quién necesita dónde, dónde y qué tráfico de multidifusión se necesita en la red, se necesita un centro de información común. Tal centro tendremos Rendezvous Point (RP). Cualquiera que quiera algún tipo de tráfico de multidifusión o alguien comenzó a recibir tráfico de multidifusión de la fuente, luego lo envía al RP.
Cuando el RP recibe tráfico de multidifusión, lo enviará a los enrutadores que previamente solicitaron este tráfico.

Imagine una topología en la que RP es R3. Tan pronto como R1 recibe tráfico de S1, encapsula este paquete de multidifusión en un mensaje de registro PIM de unidifusión y lo envía a RP. ¿Cómo sabe quién es RP? En este caso, está configurado estáticamente, y hablaremos sobre el ajuste dinámico de RP más adelante.
ip pim rp-address 3.3.3.3
RP buscará: ¿hubo alguna información de alguien que quisiera recibir este tráfico? Supongamos que no lo fue. Luego, RP enviará a R1 un mensaje PIM Register-Stop, lo que significa que nadie necesita esta multidifusión, el registro es denegado. R1 no enviará multidifusiones. Pero la fuente de multidifusión lo enviará, por lo que R1, después de recibir Register-Stop, iniciará el temporizador de registro-supresión, que es de 60 segundos. 5 segundos antes de que expire el temporizador, R1 enviará un mensaje de registro vacío con un bit de registro nulo (es decir, sin un paquete de multidifusión encapsulado) al lado RP. RP a su vez actuará así:
- Si no hubo y no hubo destinatarios, responderá con un mensaje de Registro-Detención.
- Si aparecieron los destinatarios, entonces no le responderá de ninguna manera. R1, después de no haber recibido un rechazo para su registro dentro de los 5 segundos, estará encantado y enviará a Registrar un mensaje con la multidifusión encapsulada a RP.
A medida que la multidifusión alcanza el RP, parece estar resuelto, ahora intentemos responder a la pregunta de cómo el RP lleva el tráfico a los destinatarios. Aquí debe introducir un nuevo concepto: árbol de ruta raíz (RPT). Un RPT es un árbol con una raíz en el RP que crece hacia los destinatarios que se bifurcan en cada enrutador PIM-SM. RP lo crea al recibir mensajes de unión PIM y agrega una nueva rama al árbol. Y también lo hace cada enrutador aguas abajo. La regla general se ve así:
- Cuando un enrutador PIM-SM recibe un mensaje de unión PIM en cualquier interfaz, excepto la interfaz detrás de la cual se oculta el RP, agrega una nueva rama al árbol.
- También se agrega una rama cuando el enrutador PIM-SM recibe un informe de membresía IGMP de un host conectado directamente.
Imagine que tenemos un cliente de multidifusión en el enrutador R5 para el grupo 228.8.8.8. Tan pronto como R5 recibe un informe de membresía IGMP del host, R5 envía una unión PIM en la dirección de RP, y agrega una interfaz que mira al host en el árbol. A continuación, R4 recibe una unión PIM de R5, agrega la interfaz Gi0 / 1 al árbol y envía la unión PIM en la dirección de RP. Finalmente, RP (R3) recibe una unión PIM y agrega Gi0 / 0 al árbol. De este modo, se obtiene el registro del destinatario de multidifusión. Estamos construyendo un árbol con la raíz R3-Gi0 / 0 → R4-Gi0 / 1 → R5-Gi0 / 0.
Después de eso, PIM Join se enviará a R1 y R1 comenzará a enviar tráfico de multidifusión. Es importante tener en cuenta que si el host solicitó tráfico antes de que comenzara la transmisión de multidifusión, entonces el RP no enviará PIM Join y no enviará nada al lado R1.
Si de repente, mientras se envía una multidifusión, el host deja de querer recibirla, tan pronto como el RP recibe PIM Prune en la interfaz Gi0 / 0, inmediatamente envía el PIM Register-Stop directamente a R1, y luego el mensaje PIM Prune a través de la interfaz Gi0 / 1. Unicast envía la detención del registro PIM a la dirección desde la que llegó el registro PIM.
Como dijimos antes, tan pronto como el enrutador envía una unión PIM a otra, por ejemplo, R5 en R4, se agrega una entrada a R4:

Y el temporizador inicia que para restablecer este temporizador, R5 debe enviar mensajes PIM constantemente, de lo contrario, R4 se excluirá de la lista saliente. R5 enviará cada 60 mensajes PIM Join.
Conmutación de árbol de ruta más corta.Agregaremos una interfaz entre R1 y R5, veremos cómo fluirá el tráfico con esta topología.

Digamos que el tráfico fue enviado y recibido de acuerdo con el antiguo esquema R1-R2-R3-R4-R5 y aquí conectamos y configuramos la interfaz entre R1 y R5.
En primer lugar, tenemos que reconstruir la tabla de enrutamiento de unidifusión en R5 y ahora se alcanza la red 192.168.1.0/24 a través de la interfaz R5 Gi0 / 2. Ahora, cuando R5 recibe una multidifusión en la interfaz Gi0 / 1, comprende que la regla RPF no se cumple y que sería más lógico recibir una multidifusión en Gi0 / 2. Debería desconectarse del RPT y construir un árbol más corto llamado Árbol de ruta más corta (SPT). Para hacer esto, a través de Gi0 / 2, envía una unión PIM a R1 y R1 comienza a enviar multidifusiones a través de Gi0 / 2 también. Ahora R5 debe darse de baja del RPT, para no obtener dos copias. Para hacer esto, envía un mensaje de Prune que indica la dirección IP de la fuente e inserta un bit especial: RPT-bit. Esto significa que no necesito enviar tráfico, tengo un mejor árbol aquí. El RP también envía mensajes al lado R1 PIM Prune, pero no envía un mensaje de Registro-Detención. Otra característica: R5 ahora enviará constantemente PIM Prune a RP, ya que R1 continúa enviando PIM Register a RP cada minuto. RP hasta que haya nuevas personas que deseen que este tráfico lo rechace. R5 notifica al RP que continúa recibiendo multidifusión a través de SPT.
Búsqueda dinámica de RP.
RP automáticoEsta tecnología es propiedad de Cisco y no es particularmente popular, pero sigue viva. Auto-RP consta de dos pasos principales:
1) RP envía mensajes de anuncio de RP a la dirección reservada - 224.0.1.39, declarándose RP para todos o para ciertos grupos. Este mensaje se envía cada minuto.
2) Se requiere un agente de mapeo de RP que enviará mensajes de RP-Discovery que indiquen para qué grupos qué RP escuchar. Es a partir de este mensaje que los enrutadores PIM ordinarios determinarán el RP por sí mismos. El Mapping Agent puede ser el enrutador RP o cualquier enrutador PIM separado. RP-Discovery se envía a la dirección 224.0.1.40 con un temporizador de un minuto.
Veamos el proceso con más detalle:
Establecer R3 como RP:
ip pim send-rp -nounce loopback 0 alcance 10
R2 como agente de mapeo:
ip pim send-rp-discovery loopback 0 alcance 10
Y en todos los demás, esperaremos RP a través de Auto-RP:
ip pim autorp oyente
Una vez que configuremos R3, comenzará a enviar RP-Announce:

Y R2, después de configurar el agente de mapeo, esperará el mensaje RP-Announce. Solo cuando encuentre al menos un RP comenzará a enviar RP-Discovery:

Por lo tanto, tan pronto como los enrutadores regulares (PIM RP Listener) reciban este mensaje, sabrán dónde buscar el RP.
Uno de los principales problemas de Auto-RP es que para recibir mensajes de RP-Announce y RP-Discovery, debe enviar PIM Join a las direcciones 224.0.1.39-40, y para enviar, necesita saber dónde está el RP. El clásico problema del pollo y los huevos. Para resolver este problema, se inventó el PIM Sparse-Dense-Mode. Si el enrutador no conoce RP, entonces funciona en modo denso, si lo sabe, entonces en modo disperso. Cuando PIM Sparse-mode y el comando de escucha ip pim autorp se configuran en las interfaces de los enrutadores comunes, el enrutador funcionará en modo denso solo para el protocolo multicast directamente Auto-RP (224.0.1.39-40).
BootStrap Router (BSR).Esta función funciona de manera similar a Auto-RP. Cada RP envía un mensaje de agente de mapeo, que recopila información de mapeo y luego le dice a todos los otros enrutadores. Describimos el proceso de manera similar a Auto-RP:
1) Una vez que configuramos R3 como candidato para ser un RP, el comando:
ip pim rp-candidato loopback 0
Que R3 no hará nada, para comenzar a enviar mensajes especiales, él, para empezar, necesita encontrar un agente de mapeo. Así, pasamos al segundo paso.
2) Configure R2 como agente de mapeo:
ip pim bsr-candidato loopback 0
R2 comienza a enviar mensajes PIM Bootstrap, donde se indica a sí mismo como un agente de mapeo:

Este mensaje se envía a la dirección 224.0.013, que el protocolo PIM utiliza para sus otros mensajes. Los envía en todas las direcciones y, por lo tanto, no hay problema de pollo y huevos, como fue el caso en Auto-RP.
3) Tan pronto como el RP reciba un mensaje del BSR del enrutador, enviará inmediatamente un mensaje de unidifusión a la dirección del BSR del enrutador:

Después de eso, cuando el BSR recibe información sobre el RP, lo enviará con multidifusión a la dirección 224.0.0.13, que todos los enrutadores PIM escuchan. Por lo tanto, no existe un análogo del
comando de escucha ip pim autorp para enrutadores regulares en BSR.
Anycast RP con Multicast Source Discovery Protocol (MSDP).Auto-RP y BSR nos permiten distribuir la carga en el RP de la siguiente manera: cada grupo de multidifusión tiene solo un RP activo. No funcionará hacer que la distribución de carga para un grupo de multidifusión sea RP múltiple. MSDP hace esto emitiendo enrutadores RP la misma dirección IP con una máscara de 255.255.255.255. MSDP reconoce la información utilizando uno de los métodos: estático, Auto-RP o BSR.

En la imagen tenemos una configuración de Auto-RP con MSDP. Ambos RP están configurados con la dirección IP 172.16.1.1/32 en la interfaz Loopback 1 y se utilizan para todos los grupos. Cuando RP-Announce, ambos enrutadores hablan de sí mismos, refiriéndose a esta dirección. Una vez recibida la información, el agente de mapeo Auto-RP envía RP-Discovery sobre el RP con la dirección 172.16.1.1/32. Sobre la red 172.16.1.1/32, les decimos a los enrutadores que usan IGP y, respectivamente. Por lo tanto, los enrutadores PIM solicitan o registran flujos desde el RP indicado como siguiente salto en la ruta a la red 172.16.1.1/32. El protocolo MSDP en sí está diseñado para que los RP intercambien mensajes de información de multidifusión.
Considere la siguiente topología:

El Switch6 transmite tráfico a la dirección 238.38.38.38 y hasta ahora solo RP-R1 lo sabe. Aquí Switch7 y Switch8 solicitaron este grupo. Los enrutadores R5 y R4 enviarán PIM Join a R1 y R3, respectivamente. Por qué La ruta hasta el 13.13.13.13 en R5 se referirá a R1 de acuerdo con la métrica IGP, como en R4.
RP-R1 conoce la transmisión y comienza a transmitirla hacia R5, pero R4 no sabe nada al respecto, ya que R1 simplemente no la enviará. Por lo tanto, se requiere MSDP. Lo configuramos en R1 y R5:
ip msdp peer 3.3.3.3 connect-source Loopback1 en R1
ip msdp peer 1.1.1.1 connect-source Loopback3 en R3
Levantarán una sesión entre ellos y al recibir cualquier transmisión lo informarán a su vecino RP.
RP-R1 tan pronto como reciba la transmisión del Switch6, enviará inmediatamente Unicast MSDP Source-Active un mensaje que contendrá información como (S, G): información sobre el origen y el destino de la multidifusión. Ahora, cuando RP-R3 sepa que una fuente como Switch6, enviará una unión PIM hacia Switch6 cuando reciba una solicitud de R4 para este flujo, guiándose por la tabla de enrutamiento. Por lo tanto, después de que R1 haya recibido dicha unión PIM, comenzará a enviar tráfico hacia RP-R3.
MSDP se ejecuta sobre TCP, los RP se envían mensajes de mantenimiento para verificar la viabilidad. El temporizador es de 60 segundos.
La función de dividir pares de MSDP en diferentes dominios sigue siendo incomprensible, ya que los mensajes Keepalive y SA no indican pertenecer a ningún dominio. Además, en esta topología, la configuración se probó con la indicación de varios dominios; no hubo diferencias en la operación.Si alguien puede aclarar, lea con gusto los comentarios.Sobre esto pienso terminar el artículo. A continuación hay materiales útiles y enlaces que se utilizaron:- CCIE Routing and Switching v5.0 Official Cert Guide, Volume 2, Fifth Edition, Narbik Kocharians, Terry Vinson.
- Redes para los más pequeños. Parte nueve. Multidifusión