Principes PIM

Le protocole PIM est un ensemble de protocoles pour transmettre la multidiffusion sur un réseau entre des routeurs. Les relations de voisinage sont établies de la même manière que dans le cas des protocoles de routage dynamique. PIMv2 envoie des messages Hello toutes les 30 secondes à l'adresse de multidiffusion réservée 224.0.0.13 (All-PIM-Routers). Le message contient des temporisations de mise en attente - généralement 3,5 * Hello Timer, soit 105 secondes par défaut.
Mon image
PIM utilise deux modes de fonctionnement principaux: le mode dense et le mode clairsemé. Commençons par le mode dense.
Arbres de distribution basés sur la source.
Il est conseillé d'utiliser le mode en mode dense dans le cas d'un grand nombre de clients de divers groupes de multidiffusion. Lorsqu'un routeur reçoit du trafic multicast, la première chose qu'il fait est de le vérifier pour la règle RPF. RPF - cette règle est utilisée pour vérifier la source d'une multidiffusion avec une table de routage unicast. Il est nécessaire que le trafic soit arrivé à l'interface derrière laquelle cet hôte est caché selon la version de la table de routage unicast. Ce mécanisme résout le problème de l'occurrence de boucle pendant la transmission multicast.
Mon image
R3 du message de multidiffusion reconnaîtra la source de la multidiffusion (source IP) et vérifiera les deux flux de R1 et R2 de sa table de monodiffusion. Le flux de l'interface indiquée par la table (R1 à R3) sera transmis plus loin, et le flux de R2 sera abandonné, car pour arriver à la source de la multidiffusion, il est nécessaire d'envoyer des paquets via S0 / 1.
La question est, que se passe-t-il si vous avez deux itinéraires équivalents avec la même métrique? Dans ce cas, le routeur choisira le tronçon suivant pour ces routes. Qui a une adresse IP plus élevée, il a gagné. Si vous devez modifier ce comportement, vous pouvez utiliser ECMP. Plus de détails ici .
Après avoir vérifié la règle RPF, le routeur envoie un paquet de multidiffusion à tous ses voisins PIM, à l'exception de celui de qui le paquet a été reçu. D'autres routeurs PIM répètent ce processus. Le chemin que le paquet de multidiffusion a transmis de la source aux destinataires finaux forme un arbre appelé - arbre de distribution basé sur la source, arbre du chemin le plus court (SPT), arbre source. Trois noms différents, choisissez-en un.
Comment résoudre le problème avec le fait que certains routeurs n'ont pas abandonné de flux de multidiffusion et qu'il n'y a personne à qui l'envoyer et que le routeur de niveau supérieur l'envoie. Pour cela, le mécanisme Prune a été inventé.
Message de taille.
Par exemple, R2 continuera d'envoyer la multidiffusion R3, bien que R3 selon la règle de RPF le supprime. Pourquoi charger la chaîne? R3 envoie un message d'élagage PIM et R2, à la réception de ce message, supprime l'interface S0 / 1 de la liste des interfaces sortantes pour ce flux, la liste des interfaces à partir desquelles ce trafic doit être envoyé.
Voici une définition plus formelle d'un message PIM Prune:
Le message PIM Prune est envoyé par un routeur à un second routeur pour que le second routeur supprime la liaison sur laquelle le Prune est reçu d'un SPT particulier (S, G).

Après avoir reçu le message Prune, R2 règle la minuterie Prune sur 3 minutes. Après trois minutes, il recommence à envoyer du trafic jusqu'à ce qu'il reçoive le prochain message Prune. C'est dans PIMv1.
Et dans PIMv2, le temporisateur de rafraîchissement d'état est ajouté (par défaut 60 secondes). Dès qu'un message Prune a été envoyé depuis R3, ce temporisateur démarre sur R3. Après l'expiration de ce temporisateur, R3 enverra un message d'actualisation d'état qui réinitialisera le temporisateur d'élagage de 3 minutes à R2 pour ce groupe.
Raisons pour envoyer un message Prune:
  • Lorsqu'un paquet de multidiffusion a échoué une vérification RPF.
  • Lorsqu'il n'y a aucun client connecté localement qui a demandé un groupe de multidiffusion (jointure IGMP) et qu'il n'y a aucun voisin PIM à qui le trafic de multidiffusion (interface non-élagage) peut être envoyé.

Message de greffe.
Imaginez que R3 ne voulait pas de trafic de R2, a envoyé Prune et a reçu la multidiffusion de R1. Mais tout à coup, le canal est tombé entre R1-R3 et R3 a été laissé sans multidiffusion. Vous pouvez attendre 3 minutes jusqu'à ce que Prune Timer expire sur R2. 3 minutes pour attendre longtemps, afin de ne pas attendre, vous devez envoyer un message qui affiche instantanément cette interface S0 / 1 sur R2 à partir de l'état élagué. Ce message sera un message Graft. Après avoir reçu le message Graft, R2 enverra un Graft-ACK en réponse.
Prune Override.
Mon image
Regardons ce schéma. R1 diffuse la multidiffusion dans un segment avec deux routeurs. R3 reçoit et diffuse le trafic, R2 reçoit, mais il n'a personne pour diffuser le trafic. Il envoie un message Prune à R1 dans ce segment. R1 devrait supprimer Fa0 / 0 de la liste et arrêter la diffusion dans ce segment, mais qu'adviendra-t-il de R3? Et R3 est dans le même segment, il a également reçu ce message de Prune et a réalisé la tragédie de la situation. Avant que R1 arrête la diffusion, il règle la minuterie sur 3 secondes et arrête la diffusion après 3 secondes. 3 secondes - juste autant de temps pour R3, afin de ne pas perdre votre multidiffusion. Par conséquent, R3, dès que possible, envoie un message Pim Join pour ce groupe et R1 ne pense plus à arrêter la diffusion. Rejoignez les articles ci-dessous.
Affirmer le message.
Mon image
Imaginez cette situation: deux routeurs diffusent sur le même réseau à la fois. Ils reçoivent le même flux de la source et les deux le diffusent sur le même réseau derrière l'interface e0. Par conséquent, ils doivent déterminer qui sera le seul diffuseur unique pour ce réseau. Des messages d'assertion sont utilisés à cet effet. Lorsque R2 et R3 détectent la duplication du trafic de multidiffusion, c'est-à-dire la multidiffusion qu'ils diffusent sur R2 et R3, qu'ils diffusent eux-mêmes, les routeurs comprennent que quelque chose ne va pas ici. Dans ce cas, les routeurs envoient des messages d'assertion, qui incluent la distance administrative et la métrique de route par laquelle la source de multidiffusion est atteinte - 10.1.1.10. Le gagnant est déterminé comme suit:
  1. Celui avec AD inférieur.
  2. Si AD est égal, alors qui a la métrique inférieure.
  3. S'il y a égalité, alors celui avec une IP plus élevée dans le réseau vers lequel ils diffusent cette multidiffusion.

Gagner ce vote, le routeur devient le routeur désigné. Pim Hello est également utilisé pour sélectionner DR. Au début de l'article, un message PIM Hello a été affiché, vous pouvez remarquer le champ DR. Le gagnant est celui avec une adresse IP plus élevée sur ce lien.
Assiette utile:
Mon image
Table MROUTE.
Après l'examen initial du fonctionnement du protocole PIM, nous devons trouver comment travailler avec la table de routage de multidiffusion. La table mroute stocke des informations sur les flux demandés par les clients et sur les flux provenant des serveurs de multidiffusion.
Par exemple, lors de la réception d'un rapport d'adhésion IGMP ou d'une jointure PIM sur une interface, une entrée du type (*, G) est ajoutée à la table de routage:
Mon image
Cette entrée signifie qu'une demande de trafic a été reçue avec l'adresse 238.38.38.38. L'indicateur DC signifie que la multidiffusion fonctionnera en mode dense et C signifie que le destinataire est directement connecté au routeur, c'est-à-dire que le routeur a reçu le rapport d'adhésion IGMP et la jointure PIM.
S'il y a un enregistrement comme (S, G) signifie que nous avons un flux de multidiffusion:
Mon image
Dans le champ S - 192.168.1.11, nous avons enregistré l'adresse IP de la source multicast, elle sera vérifiée par la règle RPF. En cas de problème, la première chose à faire est de vérifier la table Unicast pour l'itinéraire vers la source. Dans le champ Interface entrante, indique l'interface à laquelle la multidiffusion arrive. Dans la table de routage unicast, la route vers la source doit se référer à l'interface spécifiée ici. L'interface sortante indique où la multidiffusion sera redirigée. S'il est vide, il n'y a eu aucune demande pour ce trafic vers le routeur. Vous trouverez plus d'informations sur tous les drapeaux ici .
Mode PIM clairsemé.
La stratégie en mode clairsemé est l'opposé du mode dense. Lorsque le mode clairsemé reçoit du trafic de multidiffusion, il n'enverra le trafic que via les interfaces où il y a eu des demandes pour ce flux, par exemple, les messages Pim Join ou IGMP Report demandant ce trafic.
Éléments similaires pour SM et DM:
  • Les relations de voisinage se construisent de la même manière que dans PIM DM.
  • La règle RPF fonctionne.
  • Le choix de DR est similaire.
  • Le moteur Prune Overrides et les messages Assert sont similaires.

Pour contrôler qui a besoin où, où et quel trafic de multidiffusion est nécessaire sur le réseau, un centre d'information commun est nécessaire. Un tel centre, nous aurons Rendezvous Point (RP). Toute personne qui souhaite une sorte de trafic de multidiffusion ou quelqu'un a commencé à recevoir du trafic de multidiffusion de la source, puis il l'envoie au RP.
Lorsque le RP reçoit du trafic de multidiffusion, il l'enverra aux routeurs qui ont précédemment demandé ce trafic.
Mon image
Imaginez une telle topologie où RP est R3. Dès que R1 reçoit du trafic de S1, il encapsule ce paquet de multidiffusion dans un message de registre PIM unicast et l'envoie à RP. Comment sait-il qui est RP? Dans ce cas, il est configuré de manière statique, et nous parlerons de l'optimisation RP dynamique plus tard.
ip pim rp-address 3.3.3.3

RP va regarder - y avait-il des informations de quelqu'un qui aimerait recevoir ce trafic? Supposons que ce ne soit pas le cas. Ensuite, RP enverra à R1 un message PIM Register-Stop, ce qui signifie que personne n'a besoin de cette multidiffusion, l'enregistrement est refusé. R1 n'enverra pas de multidiffusion. Mais la source de multidiffusion l'enverra, donc R1, après avoir reçu Register-Stop, démarrera le temporisateur de suppression de registre, qui est de 60 secondes. 5 secondes avant l'expiration du temporisateur, R1 enverra un message de registre vide avec un bit de registre nul (c'est-à-dire sans paquet de multidiffusion encapsulé) du côté RP. RP à son tour agira comme ceci:
  • S'il n'y avait pas et aucun destinataire, il répondra par un message Register-Stop.
  • Si les destinataires sont apparus, il ne lui répondra en aucune façon. R1, n'ayant pas reçu de refus d'enregistrement dans les 5 secondes, sera ravi et enverra à Register un message avec la multidiffusion encapsulée à RP.

Alors que la multidiffusion atteint le RP, elle semble être réglée, essayons maintenant de répondre à la question de savoir comment le RP achemine le trafic vers les destinataires. Ici, vous devez introduire un nouveau concept - l'arbre du chemin racine (RPT). Un RPT est un arbre dont la racine dans le RP croît vers les destinataires se ramifiant sur chaque routeur PIM-SM. RP le crée en recevant des messages PIM Join et ajoute une nouvelle branche à l'arborescence. Et il en va de même pour chaque routeur en aval. La règle générale ressemble à ceci:
  • Lorsqu'un routeur PIM-SM reçoit un message PIM Join sur n'importe quelle interface, à l'exception de l'interface derrière laquelle le RP est masqué, il ajoute une nouvelle branche à l'arborescence.
  • Une branche est également ajoutée lorsque le routeur PIM-SM reçoit un rapport d'appartenance IGMP d'un hôte directement connecté.

Imaginez que nous ayons un client de multidiffusion sur le routeur R5 pour le groupe 228.8.8.8. Dès que R5 reçoit un rapport d'appartenance IGMP de l'hôte, R5 envoie une jointure PIM en direction de RP, et il ajoute lui-même une interface regardant l'hôte dans l'arborescence. Ensuite, R4 reçoit une jointure PIM de R5, ajoute l'interface Gi0 / 1 à l'arborescence et envoie la jointure PIM en direction de RP. Enfin, RP (R3) reçoit une jointure PIM et ajoute Gi0 / 0 à l'arborescence. Ainsi, l'enregistrement du destinataire de multidiffusion est obtenu. Nous construisons un arbre avec la racine R3-Gi0 / 0 → R4-Gi0 / 1 → R5-Gi0 / 0.
Après cela, PIM Join sera envoyé à R1 et R1 commencera à envoyer du trafic de multidiffusion. Il est important de noter que si l'hôte a demandé du trafic avant le début de la diffusion multidiffusion, le RP n'enverra pas de jointure PIM et n'enverra rien du tout au côté R1.
Si soudainement pendant qu'une multidiffusion est envoyée, l'hôte cesse de vouloir la recevoir, dès que le RP reçoit PIM Prune sur l'interface Gi0 / 0, alors il envoie immédiatement le PIM Register-Stop directement à R1, puis le message PIM Prune via l'interface Gi0 / 1. L'arrêt du registre PIM est envoyé par monodiffusion à l'adresse à partir de laquelle le registre PIM est arrivé.
Comme nous l'avons dit précédemment, dès que le routeur envoie une jointure PIM à un autre, par exemple, R5 sur R4, alors une entrée est ajoutée à R4:
Mon image
Et le minuteur démarre que pour réinitialiser ce minuteur, R5 doit constamment PIM Join messages constamment, sinon R4 sera exclu de la liste sortante. R5 enverra tous les 60 messages PIM Join.
Commutation d'arbre sur le chemin le plus court.
Nous allons ajouter une interface entre R1 et R5, voir comment le trafic circulera avec cette topologie.
Mon image
Disons que le trafic a été envoyé et reçu selon l'ancien schéma R1-R2-R3-R4-R5 et ici nous avons connecté et configuré l'interface entre R1 et R5.
Tout d'abord, nous devons reconstruire la table de routage unicast sur R5 et maintenant le réseau 192.168.1.0/24 est atteint via l'interface R5 Gi0 / 2. Maintenant, lorsque R5 reçoit une multidiffusion sur l'interface Gi0 / 1, il comprend que la règle RPF n'est pas satisfaite et il serait plus logique de recevoir une multidiffusion sur Gi0 / 2. Il doit se déconnecter du RPT et construire une arborescence plus courte appelée la Shortest-Path Tree (SPT). Pour ce faire, via Gi0 / 2, il envoie une jointure PIM à R1 et R1 commence également à envoyer des multidiffusions via Gi0 / 2. Maintenant, R5 doit se désinscrire du RPT, afin de ne pas obtenir deux copies. Pour ce faire, il envoie un message Prune indiquant l'adresse IP de la source et insérant un bit spécial - RPT-bit. Cela signifie que je n'ai pas besoin d'envoyer de trafic, j'ai un meilleur arbre ici. Le RP envoie également des messages du côté R1 PIM Prune, mais n'envoie pas de message Register-Stop. Autre caractéristique: R5 enverra désormais constamment PIM Prune à RP, car R1 continue d'envoyer PIM Register à RP toutes les minutes. RP jusqu'à ce que de nouvelles personnes souhaitent que ce trafic le refuse. R5 informe le RP qu'il continue de recevoir la multidiffusion via SPT.
Recherche RP dynamique.
Auto-RP
Cette technologie est propriétaire de Cisco et n'est pas particulièrement populaire, mais toujours vivante. Auto-RP comprend deux étapes principales:
1) RP envoie des messages RP-Announce à l'adresse réservée - 224.0.1.39, se déclarant RP pour tous ou pour certains groupes. Ce message est envoyé toutes les minutes.
2) Un agent de mappage RP est requis qui enverra des messages RP-Discovery indiquant pour quels groupes quel RP écouter. C'est à partir de ce message que les routeurs PIM ordinaires détermineront eux-mêmes le RP. L'agent de mappage peut être le routeur RP lui-même ou tout routeur PIM distinct. RP-Discovery est envoyé à l'adresse 224.0.1.40 avec un minuteur d'une minute.
Regardons le processus plus en détail:
Définissez R3 comme RP:
ip pim send-rp-announce loopback 0 portée 10

R2 comme agent de mappage:
ip pim send-rp-discovery loopback 0 portée 10

Et sur tous les autres, nous nous attendrons à RP via Auto-RP:
écouteur autorp ip pim

Une fois que nous aurons configuré R3, il commencera à envoyer RP-Announce:
Mon image
Et R2, après avoir configuré l'agent de mappage, il attendra le message RP-Announce. Ce n'est que lorsqu'il trouve au moins un RP qu'il commencera à envoyer RP-Discovery:
Mon image
Ainsi, dès que les routeurs réguliers (écouteur RP PIM) recevront ce message, ils sauront où chercher le RP.
L'un des principaux problèmes d'Auto-RP est que pour recevoir les messages RP-Announce et RP-Discovery, vous devez envoyer PIM Join aux adresses 224.0.1.39-40 et pour envoyer, vous devez savoir où se trouve le RP. Le problème classique du poulet et des œufs. Pour résoudre ce problème, le PIM Sparse-Dense-Mode a été inventé. Si le routeur ne connaît pas RP, alors il fonctionne en mode dense, s'il le sait, alors en mode clairsemé. Lorsque PIM Sparse-mode et la commande ip pim autorp listener sont configurés sur les interfaces des routeurs ordinaires, le routeur fonctionnera en mode dense uniquement pour le protocole multicast directement Auto-RP (224.0.1.39-40).
Routeur BootStrap (BSR).
Cette fonction fonctionne de manière similaire à Auto-RP. Chaque RP envoie un message d'agent de mappage, qui recueille des informations de mappage puis en informe tous les autres routeurs. Nous décrivons le processus de manière similaire à Auto-RP:
1) Une fois que nous avons configuré R3 en tant que candidat pour être RP, la commande:
ip pim rp-candidate loopback 0

Que R3 ne fasse rien, afin de commencer à envoyer des messages spéciaux, il a besoin, pour commencer, de trouver un agent de mappage. Ainsi, nous passons à la deuxième étape.
2) Configurez R2 comme agent de mappage:
ip pim bsr-candidate loopback 0

R2 commence à envoyer des messages d'amorçage PIM, où il s'indique comme agent de mappage:
Mon image
Ce message est envoyé à l'adresse 224.0.013, que le protocole PIM utilise pour ses autres messages. Il les envoie dans toutes les directions et donc il n'y a pas de problème de poulet et d'oeufs, comme c'était le cas en Auto-RP.
3) Dès que le RP reçoit un message du BSR du routeur, il enverra immédiatement un message unicast à l'adresse du BSR du routeur:
Mon image
Après cela, lorsque le BSR reçoit des informations sur le RP, il les envoie avec la multidiffusion à l'adresse 224.0.0.13, que tous les routeurs PIM écoutent. Par conséquent, il n'y a pas d'analogue de la commande ip pim autorp listener pour les routeurs ordinaires dans BSR.
Anycast RP avec MSDP (Multicast Source Discovery Protocol).
Auto-RP et BSR nous permettent de répartir la charge sur le RP comme suit: Chaque groupe de multidiffusion n'a qu'un seul RP actif. Il ne fonctionnera pas pour rendre la distribution de charge pour un groupe de multidiffusion multiple RP. MSDP le fait en émettant aux routeurs RP la même adresse IP avec un masque de 255.255.255.255. MSDP reconnaît les informations en utilisant l'une des méthodes: statique, Auto-RP ou BSR.
Mon image
Dans l'image, nous avons une configuration Auto-RP avec MSDP. Les deux RP sont configurés avec l'adresse IP 172.16.1.1/32 sur l'interface Loopback 1 et sont utilisés pour tous les groupes. Lorsque RP-Announce, les deux routeurs parlent d'eux-mêmes, se référant à cette adresse. Après avoir reçu des informations, l'agent de mappage Auto-RP envoie RP-Discovery sur le RP avec l'adresse 172.16.1.1/32. À propos du réseau 172.16.1.1/32, nous indiquons aux routeurs utilisant IGP et, respectivement. Ainsi, les routeurs PIM demandent ou enregistrent des flux du RP indiqué comme prochain bond sur la route vers le réseau 172.16.1.1/32. Le protocole MSDP lui-même est conçu pour que les RP eux-mêmes échangent des messages d'informations de multidiffusion.
Considérez la topologie suivante:
Mon image
Switch6 diffuse le trafic à l'adresse 238.38.38.38 et jusqu'à présent, seul le RP-R1 en a connaissance. Ici, Switch7 et Switch8 ont demandé ce groupe. Les routeurs R5 et R4 enverront PIM Join à R1 et R3, respectivement. Pourquoi? La route jusqu'au 13.13.13.13 sur R5 fera référence à R1 selon la métrique IGP, comme sur R4.
RP-R1 connaît le flux et commence à le diffuser en direction de R5, mais R4 n'en sait rien, car R1 ne l'enverra pas. Par conséquent, MSDP est requis. Nous le configurons sur R1 et R5:
ip msdp peer 3.3.3.3 connect-source Loopback1 sur R1

ip msdp peer 1.1.1.1 connect-source Loopback3 sur R3

Ils lèveront une session entre eux et à la réception de n'importe quel flux le rapporteront à leur voisin RP.
RP-R1 dès qu'il reçoit le flux de Switch6, il enverra immédiatement Unicast MSDP Source-Active un message contenant des informations comme (S, G) - des informations sur la source et la destination de la multidiffusion. Maintenant, lorsque RP-R3 saura qu'une source telle que Switch6, il enverra une jointure PIM vers Switch6 lors de la réception d'une demande de R4 pour ce flux, en étant guidé par la table de routage. Par conséquent, R1 ayant reçu une telle jointure PIM, commencera à envoyer du trafic vers RP-R3.
MSDP s'exécute sur TCP, les RP s'envoient des messages persistants pour vérifier la viabilité. La minuterie est de 60 secondes.
La fonction de division des homologues MSDP en différents domaines reste incompréhensible, car les messages Keepalive et SA n'indiquent pas l'appartenance à un domaine. De plus, dans cette topologie, la configuration a été testée avec l'indication de divers domaines - il n'y avait aucune différence de fonctionnement.
Si quelqu'un peut clarifier, lire avec plaisir dans les commentaires.

Sur ce, je pense que pour terminer l'article. Vous trouverez ci-dessous des documents et des liens utiles qui ont été utilisés:
  1. CCIE Routing and Switching v5.0 Official Cert Guide, Volume 2, Fifth Edition, Narbik Kocharians, Terry Vinson.
  2. Des réseaux pour les plus petits. Partie neuf. Multidiffusion

Source: https://habr.com/ru/post/fr450582/


All Articles