Ce document explique comment le protocole CGMP (Cisco Group Management Protocol) fonctionne sur les commutateurs Cisco Catalyst et les routeurs Cisco IOS® en ce qui concerne la reconstruction des entrées de multidiffusion pour CGMP après une modification de la topologie Spanning Tree.
Cisco recommande de posséder des connaissances sur ces sujets :
Fonctionnement de base des commutateurs, des routeurs et de la multidiffusion
Fonctionnement de base du protocole Spanning Tree, CGMP et IGMP (Internet Group Management Protocol)
Les informations contenues dans ce document sont basées sur les versions de matériel et de logiciel suivantes :
Catalyst 3550 version 12.1(9)EA1c
Catalyst 2900/3500XL version 12.0(5)WC3b
Catalyst 4000 Supervisor Engine III version 12.1(11b)EW
Catalyst 4000 Supervisor Engine I/II version 7.2(2)
Catalyst 6500 Supervisor Engine Logiciel Cisco IOS Version 12.1(11b)EX
Catalyst 6500 Catalyst OS (CatOS) version 7.2(2)
Catalyst 5500 CatOS version 4.5(13a)
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.
Pour plus d'informations sur les conventions utilisées dans ce document, reportez-vous à Conventions relatives aux conseils techniques Cisco.
Cette section décrit étape par étape ce qui se produit et quels problèmes peuvent survenir lorsqu'une modification de topologie Spanning Tree est détectée sur un VLAN où CGMP est utilisé afin de limiter le trafic de multidiffusion de l'inondation sur tous les ports. Comme le montre cet exemple, le réseau traité dans ce document se compose d’un routeur, d’un commutateur et de quatre PC :
port 1 - PC récepteur 1
port 2 - PC récepteur 2
port 3 - PC récepteur 3
port 4 : pas de récepteur PC 4
port 5 : autre commutateur (aucun récepteur ni routeur sur ce commutateur)
port 48 : routeur Cisco IOS exécutant IGMP et CGMP
Pour les besoins de ce document, il est supposé que les PC récepteurs utilisent IGMP et que le commutateur exécute CGMP. Le routeur Cisco IOS exécute IGMP et CGMP, qui reçoit un flux de multidiffusion d'un serveur vidéo sur une interface différente. Cette interface envoie au groupe de multidiffusion IP 239.100.100.100.
Une fois que tous les périphériques sont démarrés et que les PC récepteurs ont envoyé leurs messages de jointure IGMP pour le groupe 239.100.100.100, ils sont tous ajoutés par CGMP au groupe de couche 2 correspondant représenté par l'adresse MAC 01-00-5e-64-64-64.
Cette liste indique quels ports, mis en évidence en gras, du commutateur reçoivent le flux de multidiffusion qui passe par le routeur Cisco IOS.
port 1 - PC récepteur 1
port 2 - PC récepteur 2
port 3 - PC récepteur 3
port 4 : pas de récepteur PC 4
port 5 : autre commutateur (aucun récepteur ni routeur sur ce commutateur)
port 48 : routeur Cisco IOS qui exécute IGMP et CGMP
Remarque : Le routeur Cisco IOS est également ajouté au groupe de multidiffusion, mais comme il est source, il ne reçoit pas ses propres paquets.
À chaque intervalle de requête, le routeur Cisco IOS envoie une requête générale IGMP (qui est envoyée au groupe de multidiffusion 224.0.0.1, et donc diffusée à tous les autres composants). Dans ce cas, tous les récepteurs commencent à créer un rapport IGMP pour le groupe 239.100.100.100. Les récepteurs renvoient ce rapport au groupe de multidiffusion IP 239.100.100.100, avec l'adresse MAC de couche 2 01-00-5E-64-64-64. Comme cette adresse est envoyée à l'adresse du groupe, tous les destinataires reçoivent les rapports envoyés par d'autres destinataires ainsi que le rapport renvoyé par le premier destinataire. Cela déclenche l'annulation du rapport des autres PC récepteurs pour ce groupe. Cela signifie qu'un seul message de jointure CGMP est envoyé pour ce groupe avec l'adresse MAC source du PC qui a été le premier à répondre. Cela dure longtemps et tous les PC récepteurs reçoivent la diffusion vidéo.
À ce stade, l’autre commutateur déclenche une modification de topologie dans le réseau. Conformément à la spécification CGMP lors de la réception de la modification de topologie, le commutateur efface toutes les entrées de multidiffusion qu'il a apprises via le CGMP. Le trafic de multidiffusion du routeur est diffusé sur tous les ports du commutateur.
Cette liste indique quels ports, mis en évidence en gras, sur le commutateur reçoivent le flux de multidiffusion qui passe par le routeur Cisco IOS :
port 1 - PC récepteur 1
port 2 - PC récepteur 2
port 3 - PC récepteur 3
port 4 : pas de récepteur PC 4
port 5 : autre commutateur (aucun récepteur ni routeur sur ce commutateur)
port 48 : routeur Cisco IOS qui exécute IGMP et CGMP
Comme le trafic est inondé vers tous les ports, les PC récepteurs ne remarquent aucune différence et continuent de recevoir la diffusion vidéo. Cependant, comme le trafic est inondé vers tous les ports, PC 4, qui n'est pas un récepteur, et l'autre commutateur reçoivent maintenant également le flux de multidiffusion, bien qu'ils ne l'aient pas demandé. Cette opération se poursuit jusqu’à ce que le routeur Cisco IOS envoie à nouveau sa requête générale IGMP périodique. La valeur par défaut pour cette opération est de 60 secondes sur les routeurs Cisco IOS (configurés avec un intervalle de requête IGMP IP).
Lorsque le routeur Cisco IOS envoie sa première requête générale IGMP, tous les PC récepteurs commencent à créer leur rapport IGMP pour le groupe 239.100.100.100.100. L'un d'eux (dans ce document, c'est PC 3) est le premier à renvoyer son rapport IGMP. Comme aucune entrée de multidiffusion n'est encore construite sur le commutateur, elle est reçue par tous les PC et les autres PC récepteurs annulent leur rapport IGMP. Le routeur Cisco IOS reçoit le rapport et envoie le message de jointure CGMP suivant avec l’adresse source du PC récepteur 3.
Le commutateur crée à nouveau une entrée de multidiffusion pour le groupe 01-00-5e-64-64-64 et y ajoute le port 3, car il s'agit de l'adresse source dans le paquet de jointure CGMP. Le port 5 étant le port du routeur de multidiffusion, il est également ajouté au groupe de multidiffusion. Par conséquent, seul le récepteur PC3 reçoit le flux vidéo, tandis que le flux vidéo sur PC1 et PC2 reste immobile.
Cette liste indique quels ports, mis en évidence en gras, sur le commutateur reçoivent le flux de multidiffusion qui passe par le routeur Cisco IOS :
port 1 - PC récepteur 1
port 2 - PC récepteur 2
port 3 - PC récepteur 3
port 4 : pas de récepteur PC 4
port 5 : autre commutateur (aucun récepteur ni routeur sur ce commutateur)
port 48 : routeur Cisco IOS exécutant IGMP et CGMP
À la fin d'un intervalle de requête IGMP, le routeur Cisco IOS envoie une autre requête générale IGMP. À la réception de la requête, tous les PC récepteurs créent un rapport pour le groupe 239.100.100.100. Cette fois, cependant, les rapports des autres PC ne sont reçus que par le PC récepteur 3 et le routeur Cisco IOS. (Le port du routeur est automatiquement ajouté à chaque groupe de multidiffusion.)
Puisque les récepteurs PC1 et PC2 ne voient pas de rapport d'aucun autre récepteur, ils envoient tous deux leurs rapports. Le routeur Cisco IOS envoie ensuite un message de jointure CGMP avec l'adresse MAC source des PC respectifs. Par conséquent, ils sont ajoutés et commencent à recevoir le flux de multidiffusion via le routeur Cisco IOS.
Cette liste indique quels ports, mis en évidence en gras, sur le commutateur reçoivent le flux de multidiffusion qui passe par le routeur Cisco IOS :
port 1 - PC récepteur 1
port 2 - PC récepteur 2
port 3 - PC récepteur 3
port 4 : pas de récepteur PC 4
port 5 : autre commutateur (aucun récepteur ni routeur sur ce commutateur)
port 48 : routeur Cisco IOS exécutant IGMP et CGMP
La configuration est revenue à l'état stable initial et tout fonctionne à nouveau correctement. Voici une ventilation de ce qui s'est produit :
Une modification de topologie se produit.
Conseil : Lorsque portfast n'est pas activé dans un port hôte, chaque fois qu'un hôte est redémarré ou connecté/déconnecté du port, une modification de l'état des liaisons déclenche une notification de modification de topologie dans le VLAN. Si le débogage de CGMP est activé au moment de la modification de topologie, ce message de débogage s'affiche :
CGMP SHIM: got short age timer
L'inondation commence sur tous les ports.
La première requête générale IGMP est envoyée.
L'inondation s'arrête.
Tous les récepteurs ne reçoivent pas le flux de multidiffusion.
La deuxième requête générale IGMP est envoyée.
Tous les récepteurs sont ajoutés et reçoivent à nouveau le flux de multidiffusion.
Étant donné que la perte d'un flux de multidiffusion d'un PC pendant une minute (l'intervalle d'interrogation IGMP par défaut) n'est pas toujours acceptable, des améliorations ont été apportées aux routeurs et aux commutateurs qui exécutent CGMP.
Étant donné que les routeurs sont des périphériques de couche 3 et qu’ils ne connaissent donc généralement pas les modifications de Spanning Tree et de topologie qui se produisent, les commutateurs du réseau doivent alerter le routeur de cette modification de topologie. Un message de congé global IGMP est défini afin de gérer ceci.
Ce message de sortie globale IGMP est une sortie IGMP qu'un commutateur peut transmettre, demandant de quitter le groupe 0.0.0.0.
Afin de s'assurer que le routeur n'est pas surchargé avec les messages de sortie globale IGMP, seul le commutateur racine dans un domaine Spanning Tree est responsable de l'envoi de ce message de sortie globale IGMP lorsque la modification de topologie est terminée.
Lorsque le routeur reçoit ce message de sortie globale IGMP sur une interface qui exécute le logiciel Cisco IOS, il reconnaît qu'une modification de topologie Spanning Tree s'est produite sur cette interface et prend les mesures suivantes pour tenter de limiter la perte de trafic de multidiffusion pour les récepteurs de multidiffusion :
Envoie des messages de jointure par lots CGMP après réception du message de congé global IGMP. Le routeur envoie un message de jointure CGMP avec sa propre adresse MAC comme adresse source utilisateur pour chaque groupe de multidiffusion qu'il a dans son cache IGMP pour cette interface. En envoyant ces messages d'auto-jointure CGMP, les commutateurs CGMP créent automatiquement une entrée pour chaque groupe avec uniquement le port du routeur.
Cette liste indique le réseau utilisé dans ce document, après la jonction par lots CGMP. Seul le routeur Cisco IOS a été ajouté au groupe de multidiffusion, comme indiqué en gras.
Remarque : Bien que dans les exemples précédents de ce document, les ports qui reçoivent le trafic du routeur de multidiffusion aient été affichés en gras, cet exemple montre tous les ports qui sont ajoutés sur le commutateur au groupe de multidiffusion.
port 1 - PC récepteur 1
port 2 - PC récepteur 2
port 3 - PC récepteur 3
port 4 : pas de récepteur PC 4
port 5 : autre commutateur (aucun récepteur ni routeur sur ce commutateur)
port 48 : routeur Cisco IOS exécutant IGMP et CGMP
Envoie une requête générale IGMP. Tous les récepteurs reçoivent cette requête générale IGMP et créent un rapport pour chaque groupe auquel ils ont adhéré. Puisque le commutateur CGMP a déjà créé une entrée de multidiffusion pour chacun des groupes avec uniquement le routeur comme récepteur, tous les rapports sont envoyés uniquement au routeur. Le routeur envoie les messages de jointure CGMP suivants pour ajouter tous les récepteurs aux groupes correspondants.
Une fois que tous les récepteurs ont renvoyé leur rapport IGMP et que le routeur a envoyé les messages de jointure CGMP correspondants, tous les récepteurs doivent avoir été ajoutés au groupe de multidiffusion.
Après 10 secondes (temps de réponse maximum IGMP par défaut), une autre requête générale IGMP est envoyée pour s'assurer que tous les récepteurs sont ajoutés. Cette étape est répétée plusieurs fois pour s'assurer que tous les récepteurs rerejoignent le groupe de multidiffusion.
Tous les ports qui auraient dû être ajoutés au groupe de multidiffusion ont été, comme indiqué en gras dans cet exemple :
port 1 - PC récepteur 1
port 2 - PC récepteur 2
port 3 - PC récepteur 3
port 4 : pas de récepteur PC 4
port 5 : autre commutateur (aucun récepteur ni routeur sur ce commutateur)
port 48 : routeur Cisco IOS exécutant IGMP et CGMP
Dans la gamme des commutateurs Catalyst, leur comportement diffère. Chaque commutateur compatible CGMP fonctionne comme décrit dans la section CGMP et modifications de topologie de ce document. Cependant, les améliorations apportées au CGMP ne sont pas mises en oeuvre sur toutes les plates-formes. Ce tableau répertorie les commutateurs Catalyst et leur réaction à CGMP :
Commutateur CGMP | Routeur CGMP | Envoie un congé global lorsque la racine du protocole STP (Spanning Tree Protocol) | |
---|---|---|---|
Catalyst 6500 exécutant le logiciel Cisco IOS | n | O | O |
Catalyst 6500 exécutant CatOS | n | n | n |
Catalyst 5500, Catalyst 2926/2926G | O | n | O |
Catalyst 4000 Supervisor Engine I/II, Catalyst 2948G/2980G, Catalyst 4912G | O | n | O |
Supervisor Engine III/IV Catalyst 4000/4500 | n | O | O |
Catalyst 2900XL/3500XL | O | n | O |
Catalyst 2940 | n | n | n |
Catalyst 2950 | n | n | n |
Catalyst 2970 | n | n | n |
Catalyst 3550 | n | O | O |
Catalyst 3750 | n | O | O |
Remarque : sur le Catalyst 4000/4500 avec un Supervisor Engine III/IV, le comportement en ce qui concerne les modifications de topologie et CGMP est configurable. Émettez cette commande afin de configurer le Catalyst 4000 pour envoyer ou ne pas envoyer un message de sortie globale IGMP quand il n'est pas la racine Spanning Tree :
ip igmp snooping tcn query solicit
Remarque : Émettez cette forme « no » de la commande afin de la désactiver :
no ip igmp snooping tcn query solicit