Fonctionnement de STP

Raison de la création de STP


La raison de la création du protocole STP était l'apparition de boucles sur les commutateurs. Qu'est-ce qu'une boucle? La définition de boucle est la suivante:

Boucle de pontage (boucle de commutation) - un état du réseau dans lequel il y a un transfert sans fin de trames entre les commutateurs connectés au même segment de réseau.

De la définition, il devient clair que l'apparition d'une boucle crée de gros problèmes - elle conduit à une surcharge des commutateurs et à l'inopérabilité de ce segment de réseau. Comment naît une boucle? L'image ci-dessous montre la topologie dans laquelle une boucle se produira en l'absence de tout mécanisme de protection:

Mon image

L'apparition d'une boucle dans les conditions suivantes:

1. L'un des hôtes envoie une trame de diffusion:

  1. Par exemple, VPC5 envoie un paquet avec une adresse de destination de diffusion.
  2. Après avoir accepté ce paquet, Switch1 doit l'envoyer via tous les ports à l'exception du port d'où provient ce paquet. Le paquet passera par les ports Gi0 / 0, Gi1 / 0.
  3. Les commutateurs Switch2, Switch3 ayant accepté ce paquet devront également lui envoyer le paquet. Ainsi, Switch2, qui a reçu le paquet de Switch1, l'enverra à Switch3, et Switch3 l'enverra à Switch2.
  4. Ensuite, Switch2 a reçu un paquet de Switch3, l'envoyer à Switch1 et Switch3 a reçu un paquet de Switch2, l'envoyer également à Switch1. Ainsi, nous arrivons à l'étape 1) et cela continuera indéfiniment. De plus, tout est aggravé par le fait qu'à l'étape 4), Switch1 aura déjà deux instances de trame, car il les recevra de Switch2 et Switch3.

Les étapes 1) - 4) seront répétées à l'infini et sur les commutateurs, cela se produit en une fraction de seconde. De plus, la formation d'une boucle conduit au fait que la table des adresses de pavot sur les commutateurs changera constamment et que l'adresse de pavot de l'expéditeur du VPC5 sera constamment affectée à l'interface Gi0 / 0, Gi1 / 0 ou Gi0 / 2 (si à ce moment le VPC5 envoie autres packages). Un tel cycle entraînera un fonctionnement incorrect du réseau et de tous les commutateurs. Et l'envoi de paquets de diffusion pour les hôtes est une chose courante, par exemple, le protocole ARP.

2. Une boucle peut également se former sans envoyer de trame de diffusion.

  1. Par exemple, VPC5 envoie une trame avec une adresse mac de destination unicast.
  2. Il est possible que l'adresse MAC de destination ne se trouve pas dans la table d'adresses MAC du commutateur. Dans ce cas, le commutateur transmet le paquet via tous les ports, à l'exception du port à partir duquel il a reçu la trame. Et nous obtenons la même situation qu'avec la trame de diffusion.
  3. Ci-dessous, nous examinerons le protocole STP sur les commutateurs Cisco. Ils utilisent STP séparément pour chaque vlan, le protocole PVST +. Nous n'avons qu'un seul VLAN, donc la signification de cela ne change pas.

Bases de STP


Le principe de fonctionnement de ce protocole est basé sur le fait que tous les canaux redondants entre les commutateurs sont logiquement bloqués et que le trafic n'est pas transmis à travers eux. Pour construire une topologie sans canaux redondants, un arbre est construit (graphe mathématique). Pour construire un tel arbre, il faut d'abord déterminer la racine de l'arbre à partir duquel le graphe sera construit. Par conséquent, la première étape du protocole STP consiste à déterminer le commutateur racine (Root Switch). Pour déterminer le commutateur racine, les commutateurs échangent des messages BPDU. En général, le protocole STP utilise deux types de messages: BPDU - contient des informations sur les commutateurs et TCN - signale un changement de topologie. Examinons BPDU plus en détail. Nous parlerons plus en détail de TCN ci-dessous. Lorsque vous activez STP sur les commutateurs, les commutateurs commencent à envoyer des messages BPDU. Ces messages contiennent les informations suivantes:

Mon image

La trame BPDU a les champs suivants:

  • Identificateur de version du protocole STA (2 octets). Les commutateurs doivent prendre en charge la même version du protocole STA
  • Version du protocole STP (1 octet)
  • Type BPDU (1 octet). Il existe 2 types de BPDU - notification de configuration et de reconfiguration
  • Drapeaux (1 octet)
  • Identifiant du commutateur racine (8 octets)
  • Le coût de l'itinéraire vers le commutateur racine (Root Path Cost)
  • ID de l'expéditeur (ID de pont) (8 octets)
  • L'identifiant du port à partir duquel ce paquet a été envoyé (ID de port) (2 octets)
  • Durée de vie du message (2 octets). Mesuré en unités de 0,5 s, utilisé pour détecter les messages obsolètes
  • Durée de vie maximale des messages (2 octets). Si la trame BPDU a une durée de vie dépassant le maximum, alors la trame est ignorée par les commutateurs
  • Hello interval (2 bytes), l'intervalle auquel les paquets BPDU sont envoyés
  • Délai de changement d'état (2 octets). Durée minimale d'activation du commutateur

Les principaux domaines qui nécessitent une attention particulière sont les suivants:

  • ID de l'expéditeur (Bridge ID)
  • ID du pont racine
  • L'identifiant du port à partir duquel ce paquet a été envoyé (ID de port)
  • Le coût de l'itinéraire vers le commutateur racine (Root Path Cost)

Pour déterminer le commutateur racine, l'identifiant du commutateur est utilisé - Bridge ID. L'ID de pont est un nombre de 8 octets qui comprend la priorité du pont (priorité, 0 à 65535, par défaut 32768) et l'adresse MAC du périphérique. Le commutateur racine sélectionne le commutateur avec la priorité la plus faible, si les priorités sont égales, les adresses MAC sont comparées (en termes de caractères, la plus petite gagne).

Voici la sortie des informations d'ID de pont de Switch1 à partir de la première image. Priorité - 32769 (par défaut 32768 + Vlan Id), adresses MAC - Adresse 5000.0001.0000:

Mon image

Imaginez l'image, les commutateurs viennent d'être activés et commencent maintenant à créer une topologie sans boucle. Dès que les commutateurs démarrent, ils commencent à envoyer des BPDU, où ils informent tout le monde qu'ils sont la racine de l'arborescence. Dans les BPDU, en tant qu'ID de pont racine, les commutateurs indiquent leur propre ID de pont. Par exemple, Switch1 envoie des BPDU à Switch3 et Switch3 envoie à Switch1. BPDU de Switch1 à Switch3:

Mon image

BPDU de Switch3 à Switch1:

Mon image

Comme vous pouvez le voir à partir de l'identifiant racine, les deux commutateurs se disent que c'est lui qui est le commutateur racine.

Choisir un commutateur racine


Tant que la topologie STP n'est pas construite, le trafic normal n'est pas transmis en raison des états de port spéciaux, qui seront discutés ci-dessous. Ainsi, Switch3 obtient BPDU de Switch1 et examine ce message. Switch3 regarde dans le champ Root Bridge ID et voit qu'un ID Root Bridge ID différent est indiqué ici que dans le message envoyé par Switch3 lui-même. Il compare l'ID de pont racine dans ce message avec son ID de pont racine et constate que bien que la priorité soit la même, l'adresse MAC de ce commutateur (Switch1) est meilleure (moins) qu'elle ne l'a fait. Par conséquent, Switch3 reçoit l'ID de pont racine de Switch1 et arrête d'envoyer ses BPDU, mais écoute uniquement les BPDU de Switch1. Le port sur lequel le meilleur BPDU a été reçu devient le port racine. Switch1 a également reçu un BPDU de Switch3, effectue une comparaison, mais dans ce cas, le comportement de Switch1 ne change pas, car le BPDU reçu contient un ID de pont racine pire que Switch1. Ainsi, entre Switch1 et Switch3, un commutateur racine a été défini. De la même manière, le commutateur racine est sélectionné entre Switch1 et Switch2. Les ports Gi0 / 0 sur Switch2 et Switch3 deviennent Port racine - le port qui mène au commutateur racine. Par ce port, Switch2 et Switch3 acceptent les BPDU de Root Bridge. Voyons maintenant ce qu'il adviendra du canal entre Switch2 et Switch3.

Blocage des canaux redondants


Comme nous le voyons dans la topologie, le canal entre Switch2 et Switch3 doit être bloqué pour empêcher la formation de boucles. Comment STP gère-t-il cela?

Une fois que Root Bridge est sélectionné, Switch2 et Switch3 cessent d'envoyer des BPDU via les ports racine, mais ils reçoivent les BPDU reçus de Root Bridge via tous leurs autres ports actifs, ne modifiant que les champs suivants dans les données BPDU:

  • ID de l'expéditeur (Bridge ID) - remplacé par votre ID.
  • L'identifiant du port à partir duquel ce paquet a été envoyé (ID de port) - change à l'identifiant du port à partir duquel le BPDU sera envoyé.
  • Le coût de l'itinéraire vers le commutateur racine (Root Path Cost) - le coût de l'itinéraire est calculé par rapport au commutateur lui-même.

Ainsi, Switch2 reçoit le BPDU suivant de Switch3:

Mon image
Et Switch3 de Switch2 reçoit un tel BPDU:

Mon image

Après avoir échangé de telles BPDU, Switch2 et Switch3 se rendent compte que la topologie est redondante. Pourquoi les commutateurs comprennent-ils que la topologie est redondante? Switch2 et Switch3 signalent le même pont racine dans leurs BPDU. Cela signifie qu'il existe deux façons de créer un pont racine, par rapport à Switch3, via Switch1 et Switch2, et c'est la redondance même contre laquelle nous nous battons. Il existe également deux méthodes pour Switch2 - via Switch1 et Switch3. Pour se débarrasser de cette redondance
vous devez bloquer le canal entre Switch3 et Switch2. Comment ça se passe?

Le choix sur quel commutateur bloquer le port est le suivant:

  • Coût du chemin racine plus petit.
  • ID de pont plus petit.
  • ID de port plus petit.

Dans ce schéma, Root Path Cost joue un rôle plus important que Bridge ID. Je pensais que ce choix est similaire au choix du commutateur racine et j'ai été surpris que, par exemple, dans cette topologie, le port du commutateur avec la pire priorité ne soit pas bloqué:

Mon image

Ici, comme il s'est avéré, le port Gi 0/1 sur le commutateur Sw2 est bloqué. Dans ce vote, le Root Path Cost devient décisif. Revenons à notre topologie. Étant donné que le chemin d'accès à Root Bridge est le même, Switch2 gagne dans ce choix, car sa priorité est égale, les ID de pont sont comparés. Switch2 a 50: 00: 00: 02: 00: 00, Switch3 a 50: 00: 00: 03: 00: 00. Switch2 a une meilleure adresse MAC (moins). Une fois le choix effectué, Switch3 arrête de transmettre tous les paquets via ce port - Gi1 / 0, y compris BPDU, mais écoute uniquement BPDU à partir de Switch2. Cet état de port dans STP est appelé blocage (BLK). Le port Gi1 / 0 sur Switch2 fonctionne normalement et transfère divers paquets si nécessaire, mais Switch3 les rejette immédiatement, écoutant uniquement les BPDU. Ainsi, dans cet exemple, nous avons construit une topologie sans canaux redondants. Le seul canal redondant entre Switch2 et Switch3 a été bloqué en commutant le port Gi1 / 0 de Switch3 dans un état de blocage spécial - BLK. Nous allons maintenant examiner plus en détail les mécanismes de STP.

États du port


Nous avons dit ci-dessus que, par exemple, le port Gi1 / 0 sur Switch3 passe dans un état de blocage spécial - Blocage. Les états de port suivants existent dans STP:

Blocage - blocage. Dans cet état, aucune trame n'est transmise via le port. Utilisé pour éviter la redondance de la topologie.

Écouter - écouter. Comme nous l'avons dit ci-dessus, avant que le commutateur racine ne soit toujours sélectionné, les ports sont dans un état spécial où seules les BPDU sont transmises, les trames de données ne sont pas transmises et ne sont pas acceptées dans ce cas. L'état d'écoute ne passe pas au suivant même si le pont racine est défini. Cet état de port dure pour le temporisateur Forward delay, qui, par défaut, est 15. Pourquoi dois-je toujours attendre 15 secondes? Cela est dû à la prudence du protocole STP afin que le pont racine incorrect ne soit pas sélectionné accidentellement. Après cette période, le port passe à l'état suivant - Apprentissage.

Apprentissage - formation. Dans cet état, le port écoute et envoie des BPDU, mais n'envoie pas d'informations avec des données. La différence entre cet état et l'écoute est que les trames avec les données qui arrivent au port sont étudiées et les informations d'adresse MAC sont entrées dans la table d'adresses MAC du commutateur. La transition vers l'état suivant nécessite également un temporisateur de retard vers l'avant.

Transfert - Transfert. Il s'agit de l'état normal du port où les BPDU et les trames avec des données normales sont envoyées. Ainsi, si nous parcourons le schéma lorsque les commutateurs viennent de démarrer, nous obtenons le schéma suivant:

  1. Le commutateur met tous ses ports connectés en état d'écoute et commence à envoyer des BPDU où il se déclare être le commutateur racine. Pendant cette période, le commutateur reste root s'il ne reçoit pas le meilleur BPDU ou sélectionne le commutateur root. Cela dure 15 secondes.
  2. Une fois qu'il entre dans l'état d'apprentissage et apprend les adresses MAC. 15 secondes
  3. Détermine les ports à définir pour le transfert et ceux à bloquer.

Rôles de port


En plus des états de port, STP doit également définir les ports leurs rôles. Cette opération est effectuée de manière à déterminer sur quel port BPDU doit être attendu le commutateur racine et via quels ports transmettre les copies de BPDU reçues du commutateur racine. Les rôles de port sont les suivants:

Port racine - le port racine du commutateur. Lors du choix d'un commutateur racine, le port racine est également déterminé. Il s'agit du port par lequel le commutateur racine est connecté. Par exemple, dans notre topologie, les ports Gi0 / 0 sur Switch2 et Switch3 sont les ports racine. Via ces ports, Switch2 et Switch3 n'envoient pas de BPDU, mais les écoutent uniquement depuis Root Bridge. La question se pose - comment le port racine est-il sélectionné? Pourquoi le port Gi1 / 0 n'est-il pas sélectionné? Après tout, pouvez-vous également communiquer avec le commutateur via celui-ci? Pour déterminer le port racine dans STP, une métrique est utilisée qui indique le coût du chemin racine (le coût de la route vers le commutateur racine) dans le champ BPDU. Ce coût est déterminé par la vitesse du canal.

Switch1 dans son BPDU dans le champ Root Path Cost définit 0, car il est lui-même Root Bridge. Mais lorsque Switch2, lorsqu'il envoie le BPDU à Switch3, il modifie ce champ. Il définit le coût du chemin racine égal au coût du canal entre lui-même et Switch1. Dans l'image BPDU de Switch2 et Switch3, vous pouvez voir que dans ce champ, le coût du chemin racine est 4, car le canal entre Switch1 et Switch2 est de 1 Gbps. Si le nombre de commutateurs est supérieur, chaque commutateur suivant ajoutera le coût du chemin racine. Tableau des coûts du chemin racine.

Port désigné - Le port attribué sur le segment. Pour chaque segment de réseau, un port doit être responsable de la connexion de ce segment au réseau. Relativement parlant, un segment de réseau peut signifier un câble qui relie ce segment. Par exemple, les ports Gi0 / 2 sur Switch1, Switch3 connectent des segments de réseau individuels auxquels seul ce câble mène. De plus, par exemple, les ports sur le pont racine ne peuvent pas être bloqués et tous sont des ports désignés sur le segment. Après cette explication, vous pouvez donner des définitions plus strictes pour les ports affectés:
Port désigné - Un port de pont non racine entre les segments de réseau qui reçoit le trafic du segment correspondant. Chaque segment de réseau ne peut avoir qu'un seul port affecté. Le commutateur racine a tous les ports attribués.

Il est également important de noter que le port Gi1 / 0 sur Switch2 est également attribué, malgré le fait que ce canal de communication est bloqué sur Switch3. Relativement parlant, Switch2 n'a aucune information indiquant que le port est bloqué à l'autre extrémité.

Port non désigné - Un port de segment non attribué. Port non désigné - Un port qui n'est pas un racine ou un port désigné. La transmission de trames de données via un tel port est interdite. Dans notre exemple, le port Gi1 / 0 n'est pas affecté.

Port désactivé - un port qui est à l'état désactivé.

Minuteurs et convergence STP


Une fois que STP a terminé la construction d'une topologie sans boucle, la question demeure: comment détecter les modifications du réseau et comment y répondre? Les messages BPDU utilisés par STP sont envoyés par Root Bridge toutes les 2 secondes, par défaut. Ce temporisateur est appelé Hello Timer. Les autres commutateurs, après avoir reçu ce message via leur port racine, le transmettent davantage via tous les ports affectés. Il a été expliqué plus en détail les changements qui se produisent dans les BPDU lors du transfert de ses commutateurs. Si pendant le temps défini par le minuteur Max Age (par défaut - 20 secondes), le commutateur n'a reçu aucune BPDU du commutateur racine, cet événement est traité comme une perte de communication avec le pont racine. Afin de décrire plus correctement la convergence du protocole, il est nécessaire de changer notre topologie et de placer des concentrateurs entre les commutateurs. Nous avons ajouté des concentrateurs de sorte que lorsque l'un des commutateurs échoue ou que la liaison échoue, les autres commutateurs ne déterminent pas cela par la suppression du lien, mais utilisent des minuteries:

image

Avant de commencer, il est également important de vous en dire plus sur un autre type de message STP - TCN. Le TCN est envoyé par les commutateurs en cas de changement de topologie - dès que la topologie a changé sur n'importe quel commutateur, par exemple, l'état de l'interface a changé. TCN est envoyé par le commutateur uniquement via le port racine. Dès que le commutateur racine reçoit TCN, il modifie immédiatement le paramètre de stockage des adresses MAC dans le tableau de 300 secondes à 15 (pour lequel il sera discuté ci-dessous) et dans la prochaine BPDU, Root Switch met le drapeau - TCA (Topology Change Acknledgement), qui envoyé au commutateur qui a envoyé le TCN pour notifier sa réception. Dès que le TCN atteint le pont racine, il envoie un BPDU spécial qui contient l'indicateur TCN sur toutes les autres interfaces vers d'autres commutateurs. L'image montre la structure de TCN:

image

TCN a été inclus dans STP afin que les commutateurs non root puissent notifier un changement dans le réseau. Ils ne peuvent pas le faire avec des BPDU ordinaires, car les commutateurs non root n'envoient pas de BPDU. Comme vous pouvez le voir, la structure TCN ne contient aucune information sur ce qui a changé exactement et où, mais indique simplement que quelque part quelque chose a changé. Passons maintenant à la question de la convergence STP.

Voyons ce qui se passe si nous désactivons l'interface Gi0 / 1 sur Switch1 et voyons avec quels mécanismes l'arborescence STP est reconstruite. Switch2 cessera de recevoir des BPDU de Switch1 et ne recevra pas de BPDU de Switch3, car ce port est bloqué sur Switch3. Switch2 prendra 20 secondes (Max Age Timer) pour comprendre la perte de connexion avec le pont racine. Jusqu'à ce moment, Gi0 / 0 sur Switch2 sera en état de transfert avec le rôle de port racine. Dès que le Max Age Timer expire et que Switch2 comprend la perte de communication, il reconstruira l'arborescence STP et, comme c'est généralement le cas pour STP, commencera à se considérer comme un pont racine. Il enverra un nouveau BPDU, où il s'indiquera comme un pont racine à travers tous les ports actifs, y compris Switch3. Mais le minuteur Max Age qui a expiré sur Switch2 a également expiré sur Switch3 pour l'interface Gi1 / 0. Ce port n'a pas reçu de BPDU pendant 20 secondes et ce port passera à l'état LISTENING et enverra un BPDU indiquant Root Bridge - Switch1. Dès que Switch2 accepte ce BPDU, il cessera de se considérer comme un pont racine et sélectionnera Gi1 / 0 comme port racine. À ce stade, Switch2 enverra également TCN via Gi1 / 0, car il s'agit du nouveau port racine.Cela conduira au fait que le temps de stockage des adresses MAC sur les commutateurs sera réduit de 300 secondes à 15. Mais cela ne restaurera pas complètement le réseau, vous devez attendre que le port Gi1 / 0 sur Switch3 passe à l'écoute puis à l'apprentissage. Cela prendra un temps égal à deux périodes de temporisation de délai avant - 15 + 15 = 30 secondes. Ce que nous obtenons est que lorsque la connexion est perdue, Switch2 attend que le minuteur Max Age = 20 secondes expire, re-sélectionne Root Bridge via une autre interface et attend encore 30 secondes jusqu'à ce que le port précédemment bloqué passe en état de transfert. Au total, nous obtenons que la connexion entre VPC5 et VPC6 sera interrompue pendant 50 secondes. Comme mentionné par plusieurs phrases ci-dessus, lors du changement du port racine de Gi0 / 0 à Gi1 / 0 sur Switch2, TCN a été envoyé. Si cela ne s'est pas produit, toutes les adresses MAC apprises via le port Gi 0/0,resterait attaché à Gi0 / 0. Par exemple, l'adresse MAC de VPC5 et VPC7 malgré le fait que STP termine la convergence en 50 secondes, la connexion entre VPC6 et VPC5, VPC7 ne serait pas restaurée, car tous les paquets destinés à VPC5, VPC7 ont été envoyés via Gi0 / 0. Il serait nécessaire d'attendre non pas 50 secondes, mais 300 secondes jusqu'à ce que la table d'adresses MAC soit reconstruite. En utilisant TCN, la durée de stockage est passée de 300 secondes à 15 et tandis que l'interface Gi1 / 0 sur Switch3 a passé le statut d'écoute, les données d'apprentissage et d'adresse MAC seront mises à jour.le temps de stockage est passé de 300 secondes à 15 et tandis que l'interface Gi1 / 0 sur Switch3 a passé les états d'écoute, les données d'adresse d'apprentissage et MAC seront mises à jour.le temps de stockage est passé de 300 secondes à 15 et tandis que l'interface Gi1 / 0 sur Switch3 a passé les états d'écoute, les données d'adresse d'apprentissage et MAC seront mises à jour.

La question est également intéressante, que se passe-t-il si nous réactivons l'interface Gi0 / 1 sur Switch1? Lorsque l'interface Gi0 / 1 est activée, elle passe, comme il convient, à l'état d'écoute et commence à envoyer des BPDU. Dès que Switch2 reçoit un BPDU sur le port Gi0 / 0, il sélectionne immédiatement son port racine, car ici le coût sera le plus petit et commencera à envoyer du trafic via l'interface Gi0 / 0, mais nous devons attendre que l'interface Gi0 / 1 passe l'état d'écoute, d'apprentissage à la transmission. . Et le délai ne sera plus de 50 secondes, mais de 30.

Le protocole STP a également pensé différentes technologies pour optimiser et sécuriser le fonctionnement du protocole STP. Je ne les examinerai pas plus en détail dans cet article, des documents les concernant peuvent être trouvés en abondance sur divers sites.

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


All Articles