Cómo funciona el protocolo PIM

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 (todos los enrutadores PIM). El mensaje contiene temporizadores de espera, normalmente iguales a 3.5*Hello Timer, es decir, 105 segundos de forma predeterminada.
Cómo funciona el protocolo PIM
PIM utiliza dos modos de funcionamiento principales: modo denso y disperso. Comencemos con el modo Denso.
Árboles de distribución basados ​​en fuentes.
Se recomienda utilizar el modo denso en el caso de una gran cantidad de clientes de diferentes 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 se oculta este host según la versión de la tabla de enrutamiento unicast. Este mecanismo resuelve el problema del bucle que se produce durante la transmisión de multidifusión.
Cómo funciona el protocolo PIM
R3 reconocerá la fuente de multidifusión (IP de origen) del mensaje de multidifusión y verificará los dos flujos de R1 y R2 utilizando su tabla de unidifusión. La secuencia de la interfaz señalada por la tabla (R1 a R3) se transmitirá más y la secuencia de R2 se descartará, ya que para llegar a la fuente de multidifusión, es necesario enviar paquetes a través de S0/1.
La pregunta es, ¿qué pasa si tienes dos rutas equivalentes con la misma métrica? En este caso, el enrutador seleccionará el siguiente salto de estas rutas. Gana quien tenga la dirección IP más alta. Si necesita cambiar este comportamiento, puede utilizar 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 a aquel de quien se recibió el paquete. Otros enrutadores PIM repiten este proceso. La ruta que ha tomado un paquete de multidifusión desde el origen hasta los destinatarios finales forma un árbol llamado árbol de distribución basado en el origen, árbol de ruta más corta (SPT), árbol de origen. Tres nombres diferentes, elige cualquiera.
Cómo resolver el problema de que algunos enrutadores no abandonaron alguna transmisión de multidifusión y no hay nadie a quien enviársela, pero el enrutador ascendente se la envía. Para ello se inventó el mecanismo Prune.
Mensaje de poda.
Por ejemplo, R2 continuará enviando una multidifusión a R3, aunque R3, de acuerdo con la regla RPF, la descarta. ¿Por qué cargar el canal? R3 envía un mensaje de eliminación de PIM y R2, al recibir este mensaje, eliminará la interfaz S0/1 de la lista de interfaces salientes 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 Prune de un SPT (S,G) particular.

Después de recibir el mensaje de poda, R2 configura el temporizador de poda en 3 minutos. Después de tres minutos, comenzará a enviar tráfico nuevamente hasta que reciba otro mensaje Prune. Esto está en PIMv1.
Y en PIMv2 se agregó un temporizador de actualización de estado (60 segundos de forma predeterminada). Tan pronto como se envía un mensaje de poda desde R3, este temporizador se inicia en R3. Al expirar este temporizador, R3 enviará un mensaje de actualización de estado, que restablecerá el temporizador de poda de 3 minutos en R2 para este grupo.
Razones para enviar un mensaje Prune:

  • Cuando un paquete de multidifusión no supera la comprobación de RPF.
  • Cuando no hay clientes conectados localmente que hayan solicitado un grupo de multidifusión (Unión IGMP) y no hay vecinos PIM a quienes se pueda enviar tráfico de multidifusión (Interfaz sin poda).

Mensaje de injerto.
Imaginemos que R3 no quería tráfico de R2, envió Prune y recibió una multidifusión de R1. Pero de repente, el canal entre R1-R3 cayó y R3 quedó sin multidifusión. Puede esperar 3 minutos hasta que expire el temporizador de poda en R2. 3 minutos es una espera larga, por lo que, para no esperar, debe enviar un mensaje que sacará instantáneamente esta interfaz S0/1 del estado podado del R2. Este mensaje será un mensaje de injerto. Después de recibir el mensaje de Graft, R2 responderá con un Graft-ACK.
Anulación de poda.
Cómo funciona el protocolo PIM
Miremos este diagrama. R1 transmite multidifusión a un segmento con dos enrutadores. R3 recibe y transmite tráfico, R2 recibe, pero no tiene a quién transmitir tráfico. Envía un mensaje Prune al R1 en este segmento. R1 debería eliminar Fa0/0 de la lista y dejar de transmitir en este segmento, pero ¿qué pasará con R3? Y R3 está en el mismo segmento, también recibió este mensaje de Prune y entendió la tragedia de la situación. Antes de que R1 deje de transmitir, configura un temporizador de 3 segundos y dejará de transmitir después de 3 segundos. 3 segundos: este es exactamente el tiempo que tiene R3 para no perder su multidifusión. Por lo tanto, R3 envía un mensaje Pim Join para este grupo lo antes posible y R1 ya no piensa en detener la transmisión. Acerca de los mensajes para unirse a continuación.
Afirmar mensaje.
Cómo funciona el protocolo PIM
Imaginemos esta situación: dos enrutadores transmiten a una red a la vez. Reciben la misma transmisión desde la fuente y ambos la transmiten a la misma red detrás de la interfaz e0. Por lo tanto, deben determinar quién será el único locutor de esta red. Para ello se utilizan mensajes de afirmación. Cuando R2 y R3 detectan duplicación de tráfico de multidifusión, es decir, R2 y R3 reciben una multidifusión que ellos mismos transmiten, los enrutadores comprenden que algo anda mal aquí. En este caso, los enrutadores envían mensajes Assert, que incluyen la Distancia administrativa y la métrica de ruta con la que se llega a la fuente de multidifusión: 10.1.1.10. El ganador se determina de la siguiente manera:

  1. El que tiene menor AD.
  2. Si los AD son iguales, entonces quién tiene la métrica más baja.
  3. Si aquí hay igualdad, entonces el que tenga mayor IP en la red a la que transmiten esta multidifusión.

El ganador de esta votación se convierte en el enrutador designado. Pim Hello también se utiliza para seleccionar DR. Al principio del artículo, se mostró el mensaje PIM Hello, allí puede ver el campo DR. Gana el que tenga la dirección IP más alta en este enlace.
Signo útil:
Cómo funciona el protocolo PIM
Mesa MRRUTA.
Después de una mirada inicial a cómo funciona el protocolo PIM, debemos entender cómo trabajar con una tabla de enrutamiento de multidifusión. La tabla mroute almacena información sobre qué transmisiones se solicitaron a los clientes y qué transmisiones fluyen desde servidores de multidifusión.
Por ejemplo, cuando se recibe un informe de membresía IGMP o una unión PIM en alguna interfaz, se agrega un registro de tipo ( *, G ) a la tabla de enrutamiento:
Cómo funciona el protocolo PIM
Esta entrada significa que se recibió una solicitud de tráfico con la dirección 238.38.38.38. La bandera 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 de tipo (S,G) significa que tenemos un flujo multicast:
Cómo funciona el protocolo PIM
En el campo S - 192.168.1.11, hemos registrado la dirección IP de la fuente de multidifusión, es esto lo que será verificado por la regla RPF. Si hay problemas, lo primero que debe hacer es consultar la tabla de unidifusión para conocer la ruta a la fuente. En el campo Interfaz entrante, indica la interfaz a la que se recibe la multidifusión. En una tabla de enrutamiento de unidifusión, la ruta al origen debe hacer referencia a la interfaz especificada aquí. La interfaz saliente especifica dónde se redirigirá la multidifusión. Si está vacío, entonces el enrutador no ha recibido ninguna solicitud para este tráfico. Puede encontrar más información sobre todas las banderas. aquí.
PIM en modo disperso.
La estrategia del modo disperso es la opuesta a la del modo denso. Cuando el modo disperso recibe tráfico de multidifusión, solo enviará tráfico a través de aquellas interfaces donde hubo solicitudes para este flujo, por ejemplo, mensajes Pim Join o IGMP Report que solicitan este tráfico.
Elementos similares para SM y DM:

  • Las relaciones con los vecinos se construyen de la misma manera que en PIM DM.
  • La regla RPF funciona.
  • La selección de DR es similar.
  • El mecanismo de los mensajes Prune Overrides y Assert es similar.

Para controlar quién, dónde y qué tipo de tráfico de multidifusión se necesita en la red, se necesita un centro de información común. Nuestro centro será Rendezvous Point (RP). Cualquiera que quiera algún tipo de tráfico de multidifusión o alguien que haya comenzado a recibir tráfico de multidifusión desde la fuente, luego lo envía a RP.
Cuando el RP reciba tráfico multicast, lo enviará a aquellos enrutadores que previamente solicitaron este tráfico.
Cómo funciona el protocolo PIM
Imaginemos una topología donde 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 el RP? En este caso, se configura estáticamente y hablaremos de la configuración dinámica de RP más adelante.

dirección rp ip pim 3.3.3.3

RP buscará: ¿hubo información de alguien a quien le gustaría 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 y se deniega el registro. R1 no enviará multidifusión. Pero el host de origen de multidifusión lo enviará, de modo que R1, después de recibir Register-Stop, iniciará un temporizador de Register-Suppression igual a 60 segundos. 5 segundos antes de que expire este temporizador, R1 enviará un mensaje de registro vacío con un bit de registro nulo (es decir, sin un paquete de multidifusión encapsulado) hacia RP. RP, a su vez, actuará así:

  • Si no hubo destinatarios, responderá con un mensaje de Registrar-Detener.
  • Si aparecen destinatarios, no responderá de ninguna manera. R1, al no haber recibido una negativa a registrarse dentro de los 5 segundos, estará contento y enviará un mensaje de Registro con una multidifusión encapsulada a RP.

Parece que hemos descubierto cómo la multidifusión llega a RP, ahora intentemos responder la pregunta de cómo RP entrega tráfico a los destinatarios. Aquí es necesario introducir un nuevo concepto: el árbol de ruta raíz (RPT). RPT es un árbol con raíces en RP, que crece hacia los destinatarios y se ramifica en cada enrutador PIM-SM. RP lo crea al recibir mensajes PIM Join y agrega una nueva rama al árbol. Y lo mismo ocurre con todos los enrutadores descendentes. La regla general es la siguiente:

  • Cuando un enrutador PIM-SM recibe un mensaje de unión de PIM en cualquier interfaz que no sea la interfaz detrás de la cual está oculto 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.

Imaginemos que tenemos un cliente de multidifusión en el enrutador R5 para el grupo 228.8.8.8. Tan pronto como R5 recibe el Informe de membresía IGMP del host, R5 envía una unión PIM en dirección al RP y él mismo agrega una interfaz al árbol que mira al host. A continuación, R4 recibe PIM Join de R5, agrega la interfaz Gi0/1 al árbol y envía PIM Join en dirección a RP. Finalmente, RP (R3) recibe PIM Join y agrega Gi0/0 al árbol. De este modo, el destinatario de multidifusión queda registrado. Estamos construyendo un árbol con la raíz R3-Gi0/0 → R4-Gi0/1 → R5-Gi0/0.
Después de esto, se enviará una unión PIM al R1 y el 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 RP no enviará PIM Join y no enviará nada al R1.
Si de repente mientras se envía una multidifusión, el host deja de querer recibirla, tan pronto como RP reciba un PIM Prune en la interfaz Gi0/0, inmediatamente enviará un PIM Register-Stop directamente al R1, y luego un PIM Prune mensaje a través de la interfaz Gi0/1. La parada del registro PIM se envía mediante unidifusión a la dirección de donde proviene el registro PIM.
Como dijimos anteriormente, tan pronto como un enrutador envía una unión PIM a otro, por ejemplo de R5 a R4, se agrega un registro a R4:
Cómo funciona el protocolo PIM
Y se inicia un temporizador y R5 debe restablecer constantemente los mensajes de unión PIM de este temporizador; de lo contrario, R4 será excluido de la lista saliente. R5 enviará cada 60 mensajes de unión PIM.
Conmutación del árbol de ruta más corta.
Agregaremos una interfaz entre R1 y R5 y veremos cómo fluye el tráfico con esta topología.
Cómo funciona el protocolo PIM
Supongamos que el tráfico se envió y recibió de acuerdo con el esquema anterior 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 accede a la red 192.168.1.0/24 a través de la interfaz R5 Gi0/2. Ahora R5, al recibir multidifusión en la interfaz Gi0/1, entiende que la regla RPF no se cumple y sería más lógico recibir multidifusión en Gi0/2. Debería desconectarse de RPT y construir un árbol más corto llamado Árbol de ruta más corta (SPT). Para hacer esto, envía PIM Join al R0 a través de Gi2/1 y el R1 comienza a enviar una multidifusión también a través de Gi0/2. Ahora R5 necesita darse de baja de RPT para no recibir dos copias. Para hacer esto, envía a Prune un mensaje indicando la dirección IP de origen e insertando un bit especial: RPT-bit. Esto significa que no es necesario que me envíes tráfico, tengo un árbol mejor aquí. RP también envía mensajes PIM Prune al R1, pero no envía un mensaje Register-Stop. Otra característica: R5 ahora enviará continuamente PIM Prune a RP, mientras que R1 continúa enviando PIM Register a RP cada minuto. Hasta que no haya nuevas personas que quieran este tráfico, RP lo rechazará. R5 notifica a RP que continúa recibiendo multidifusión a través de SPT.
Búsqueda dinámica de RP.
RP automático.

Esta tecnología es propiedad de Cisco y no es particularmente popular, pero sigue viva. La operación Auto-RP consta de dos etapas principales:
1) RP envía mensajes RP-Announce a la dirección reservada: 224.0.1.39, declarándose RP para todos o para grupos específicos. Este mensaje se envía cada minuto.
2) Se requiere un agente de mapeo de RP, que enviará mensajes de descubrimiento de RP indicando para qué grupos se debe escuchar qué RP. Es a partir de este mensaje que los enrutadores PIM habituales determinarán el RP por sí mismos. El agente de mapeo puede ser el propio enrutador RP o un enrutador PIM independiente. 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:
Configuremos R3 como RP:

ip pim send-rp-announce 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 mediante Auto-RP:

oyente autorp ip pim

Una vez que configuremos R3, comenzará a enviar RP-Announce:
Cómo funciona el protocolo PIM
Y R2, después de configurar el agente de mapeo, comenzará a esperar el mensaje RP-Announce. Sólo cuando encuentre al menos un RP comenzará a enviar RP-Discovery:
Cómo funciona el protocolo PIM
De esta manera, tan pronto como los enrutadores normales (PIM RP Listener) reciban este mensaje, sabrán dónde buscar el RP.
Uno de los principales problemas con Auto-RP es que para recibir mensajes RP-Announce y RP-Discovery, necesita enviar PIM Join a las direcciones 224.0.1.39-40, y para enviar, necesita saber dónde está el Se encuentra RP. Problema clásico del huevo y la gallina. Para resolver este problema, se inventó el modo PIM Sparse-Dense. Si el enrutador no conoce RP, entonces opera en modo denso; si lo conoce, entonces en modo disperso. Cuando el modo PIM Sparse y el comando ip pim autorp listening están configurados en las interfaces de enrutadores normales, el enrutador funcionará en modo denso solo para multidifusión directamente desde el protocolo Auto-RP (224.0.1.39-40).
Enrutador BootStrap (BSR).
Esta función funciona de manera similar a Auto-RP. Cada RP envía un mensaje al agente de mapeo, que recopila información de mapeo y luego informa a todos los demás enrutadores. Describamos el proceso de manera similar a Auto-RP:
1) Una vez configuramos R3 como candidato a ser RP, con el comando:

ip pim rp-candidato loopback 0

Entonces R3 no hará nada; para comenzar a enviar mensajes especiales, primero necesita encontrar un agente de mapeo. Así, pasamos al segundo paso.
2) Configurar R2 como agente de mapeo:

ip pim bsr-bucle invertido candidato 0

R2 comienza a enviar mensajes PIM Bootstrap, donde se indica como agente de mapeo:
Cómo funciona el protocolo PIM
Este mensaje se envía a la dirección 224.0.013, que el protocolo PIM también utiliza para sus otros mensajes. Los envía en todas direcciones y por lo tanto no hay problema del huevo y la gallina como lo había en Auto-RP.
3) Tan pronto como el RP reciba un mensaje del enrutador BSR, enviará inmediatamente un mensaje de unidifusión a la dirección del enrutador BSR:
Cómo funciona el protocolo PIM
Después de lo cual, el BSR, habiendo recibido información sobre los RP, los enviará por multidifusión a la dirección 224.0.0.13, que es escuchada por todos los enrutadores PIM. Por lo tanto, un análogo del comando. oyente autorp ip pim para enrutadores normales que no están en BSR.
Anycast RP con protocolo de descubrimiento de origen de multidifusión (MSDP).
Auto-RP y BSR nos permiten distribuir la carga en RP de la siguiente manera: Cada grupo de multidifusión tiene solo un RP activo. No será posible distribuir la carga de un grupo de multidifusión entre varios RP. MSDP hace esto emitiendo a los enrutadores RP la misma dirección IP con una máscara de 255.255.255.255. MSDP aprende información utilizando uno de los métodos: estático, Auto-RP o BSR.
Cómo funciona el protocolo PIM
En la imagen tenemos una configuración 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 usa para todos los grupos. Con RP-Announce, ambos enrutadores se anuncian haciendo referencia a esta dirección. El agente de mapeo Auto-RP, una vez recibida la información, envía RP-Discovery sobre el RP con la dirección 172.16.1.1/32. Informamos a los enrutadores sobre la red 172.16.1.1/32 usando IGP y, en consecuencia. Por lo tanto, los enrutadores PIM solicitan o registran flujos desde el RP que se especifica como el siguiente salto en la ruta a la red 172.16.1.1/32. El protocolo MSDP en sí está diseñado para que los propios RP intercambien mensajes sobre información de multidifusión.
Considere esta topología:
Cómo funciona el protocolo PIM
Switch6 transmite tráfico a la dirección 238.38.38.38 y hasta ahora solo RP-R1 lo sabe. Switch7 y Switch8 solicitaron este grupo. Los enrutadores R5 y R4 enviarán PIM Join a R1 y R3, respectivamente. ¿Por qué? La ruta a 13.13.13.13 para R5 se referirá a R1 usando la métrica IGP, al igual que para R4.
RP-R1 conoce la transmisión y comenzará a transmitirla hacia R5, pero R4 no sabe nada al respecto, ya que R1 simplemente no la enviará. Por lo tanto, el MSDP es necesario. Lo configuramos en R1 y R5:

ip msdp peer 3.3.3.3 conexión-fuente Loopback1 en R1

ip msdp peer 1.1.1.1 conexión-fuente Loopback3 en R3

Levantarán una sesión entre ellos y al recibir cualquier flujo lo reportarán a su vecino RP.
Tan pronto como RP-R1 reciba una transmisión de Switch6, enviará inmediatamente un mensaje MSDP Source-Active de unidifusión, que contendrá información como (S, G): información sobre el origen y el destino de la multidifusión. Ahora que RP-R3 sabe que una fuente como Switch6, al recibir una solicitud de R4 para este flujo, enviará PIM Join hacia Switch6, guiado por la tabla de enrutamiento. En consecuencia, el R1 que haya recibido dicha unión PIM comenzará a enviar tráfico hacia el RP-R3.
MSDP se ejecuta sobre TCP, los RP se envían mensajes de mantenimiento entre sí para comprobar su actividad. El cronómetro es de 60 segundos.
La función de dividir a los pares MSDP en diferentes dominios aún no está clara, ya que los mensajes Keepalive y SA no indican membresía en ningún dominio. Además, en esta topología, probamos una configuración que indica diferentes dominios; no hubo diferencias en el rendimiento.
Si alguien puede aclararlo, estaré encantado de leerlo en los comentarios.

Fuente: habr.com

Añadir un comentario