# Réseau - Protocole STP/RSTP

<table id="bkmrk-difficult%C3%A9%2A-%3Cdescrip" style="border-collapse: collapse; width: 100%; height: 46.8px; border-width: 1px; border-style: hidden;"><colgroup><col style="width: 20%;"></col><col style="width: 80%;"></col></colgroup><tbody><tr style="height: 46.8px;"><td style="height: 46.8px; border: 1px groove rgb(52,73,94);">[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/ayCconfirme-png.png)](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/ayCconfirme-png.png)  
</td><td style="height: 46.8px; border-width: 1px; background-color: rgb(236,202,250); vertical-align: top;">Difficulté : Confirmé

Notions : Réseau, protocoles, résilience réseau.

</td></tr></tbody></table>

---

### <span style="text-decoration: underline; color: rgb(52,73,94);">**I. Introduction**</span>

Dans le cadre de la résilience d'une topologie réseau, il est essentiel de redonder des liens afin de palier à une rupture éventuelle.

Plusieurs topologies réseaux spécifiques existent. Dont les deux suivantes :

<table id="bkmrk-topologie-boucle-%28-r" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td style="border-style: hidden;"><div drawio-diagram="179"><img src="https://docs.labs404.fr/uploads/images/drawio/2026-07/drawing-1-1779183432-png.png" alt="drawing-1-1779183432.png"/></div>

</td><td style="border-style: hidden;"><div drawio-diagram="180"><img src="https://docs.labs404.fr/uploads/images/drawio/2026-07/drawing-1-1779183524-png.png" alt="drawing-1-1779183524.png"/></div>

</td></tr><tr><td class="align-left" style="border-style: hidden;">*Topologie Boucle ( ring )*</td><td class="align-left" style="border-style: hidden;">*Topologie meshée*</td></tr></tbody></table>

Cependant, ces boucles créent également deux problèmes majeurs :

- les tempêtes de broadcasts, dues au boucles réseaux présentes dans la topologie.
- Des instabilités dans les tables MAC.
- Des trames en doublons.

Ce qui peut mener à des dysfonctionnement applicatifs ( rupture de session ), des pertes de performances ( collision de paquets, réadressage MAC ) voire à un effondrement du réseau.

Pour éviter ces problèmes et rendre ce type de topologies possibles, le protocole <span style="color: rgb(132,63,161);">***STP***</span> ( **S**panning **T**ree **P**rotocol ) a été créé.

Cependant, dû à ses problèmes de lenteur de cicatrisation réseau ( 30-50 secondes de délai de convergence ), une version plus moderne en a été créée : le protocole <span style="color: rgb(132,63,161);">***RSTP***</span> ( **R**apid **S**panning **T**ree **P**rotocol ).

Celui-ci réduit les temps de cicatrisation entre 1 et 3 secondes et apporte quelques améliorations :

- Simplification des rôles des ports
- Meilleure stabilité
- rétrocompatible avec STP

---

### <span style="text-decoration: underline; color: rgb(52,73,94);">**II. Fonctionnement STP/RSTP**</span>

#### <span style="color: rgb(35,111,161);">**2.1 Principe général**</span>

Le fonctionnement de base du STP / RSTP est le suivant :

##### **<span style="color: rgb(53,152,219);">*2.1.1 Election de la passerelle racine ( root bridge )*</span>**

Chaque switch envoie une trame d'un type spécifique appelée <span style="color: rgb(132,63,161);">***BPDU***</span> ( **B**ridge **P**rotocol **D**ata **U**nit ).

Cette trame contient les informations de priorité, d'adresse MAC et de coût du chemin racine.

Une fois ces trames reçues, le switch ayant la ***<span style="color: rgb(132,63,161);">priorité</span>*** ave la valeur la plus basse devient le switch racine.

<p class="callout info">**Info** : En l'absence de priorité définies sur les switch, c'est la valeur des adresses MAC qui est prise en compte et fait office de valeur de priorité.</p>

Une fois ce processus d'élection achevé, les trames continuent à être envoyées de manière continue. Si un switch apparaît avec une priorité plus élevée, ce rôle lui sera transféré.

<p class="callout success">**Conseil** : C'est ce qui rend la résilience possible et l'architecture scalable. Si le root bridge tombe, celui avec la meilleure priorité disponible est automatiquement élue. Si un switch avec une meilleure priorité est ajouté à la topologie, il est également automatiquement élu et récupère le rôle de root bridge.</p>

##### ***<span style="color: rgb(53,152,219);">2.2.2 Détermination des ports racine ( root ports )</span>***

<div id="bkmrk-chaque-switch-non-ra">Chaque <span style="color: rgb(132,63,161);">***switch non-racine***</span> détermine ensuite son <span style="color: rgb(132,63,161);">***root port***</span>. Il s'agit du port qui a le chemin le plus court pour accéder à la racine.</div><div id="bkmrk-ce-chemin-est-calcul">Ce chemin est calculé en faisant la somme des <span style="color: rgb(132,63,161);">***coûts***</span> pour chaque chemin.</div><div id="bkmrk--10"></div><div id="bkmrk-le-co%C3%BBt-est-calcul%C3%A9-">Le coût est calculé en fonction de la rapidité des liens. Voici un tableau avec les valeurs de références.</div><div id="bkmrk--11"></div><div id="bkmrk-d%C3%A9bit-du-lien-co%C3%BBt-s"><table><thead><tr><td class="align-center" style="border-style: solid; background-color: rgb(194,224,244);">Débit du lien</td><td class="align-center" style="border-style: solid; background-color: rgb(194,224,244);">Coût STP (802.1t)</td></tr></thead><tbody><tr><td class="align-center" style="border-style: solid;">10 Mb/s</td><td class="align-center" style="border-style: solid;">2 000 000</td></tr><tr><td class="align-center" style="border-style: solid;">100 Mb/s</td><td class="align-center" style="border-style: solid;">200 000</td></tr><tr><td class="align-center" style="border-style: solid;">1 Gb/s</td><td class="align-center" style="border-style: solid;">20 000</td></tr><tr><td class="align-center" style="border-style: solid;">10 Gb/s</td><td class="align-center" style="border-style: solid;">2 000</td></tr><tr><td class="align-center" style="border-style: solid;">100 Gb/s</td><td class="align-center" style="border-style: solid;">200</td></tr><tr><td class="align-center" style="border-style: solid;">1 Tb/s</td><td class="align-center" style="border-style: solid;">20</td></tr></tbody></table>

</div><p class="callout info">**Info** : En cas d'égalité entre deux chemins, c'est le voisin avec le bridge ID le plus faible qui l'emporte. Si l'égalité persiste, c'est le Port ID le plus faible qui est choisi.</p>

<div id="bkmrk--12"></div><div id="bkmrk--13"></div><div id="bkmrk-ce-port-sera-donc-ta">Ce port sera donc tagué comme <span style="color: rgb(132,63,161);">***actif***</span>.</div><div id="bkmrk--14"></div><div id="bkmrk--15"></div><div id="bkmrk-exemple-%3A-switch-a-e">*Exemple :* Switch A est le Root Bridge. Switch B peut atteindre A via deux chemins :</div>- ***Chemin 1 : B → C → A***

<div id="bkmrk-b%E2%80%93c-%3A-1-gb%2Fs-%E2%86%92-co%C3%BBt-" style="padding-left: 40px;">- - *B–C : 1 Gb/s → coût 20 000*
    - *C–A : 1 Gb/s → coût 20 000*
    - ***Total = 40 000***

</div>- ***Chemin 2 : B → D → A***

<div id="bkmrk-b%E2%80%93d-%3A-10-gb%2Fs-%E2%86%92-co%C3%BBt" style="padding-left: 40px;">- - *B–D : 10 Gb/s → coût 2 000*
    - *D–A : 1 Gb/s → coût 20 000*
    - ***Total = 22 000***

</div>***Le Root Port de B sera le port vers D**, car 22 000 &lt; 40 000.*

<div id="bkmrk--16"></div>##### ***<span style="color: rgb(53,152,219);">2.2.3 Désignation des switches et ports désignés ( designated ports )</span>***

<div id="bkmrk--17"></div><div id="bkmrk--18"></div><div id="bkmrk--19"></div><div id="bkmrk--20"></div><div id="bkmrk--21"></div><div id="bkmrk-d%C3%A9signation-des-swit"></div><div id="bkmrk--22"></div><div id="bkmrk-sur-chaque-segment-d">Sur chaque segment de la topologie, un switch deviens <span style="color: rgb(132,63,161);">***Designated Bridge***</span> et ces ports non root participants à la topologie deviennent des <span style="color: rgb(132,63,161);">***designated ports***</span>. Ces switches et ces ports serviront de <span style="color: rgb(132,63,161);">***forwarders***</span> aux switches suivants sur la topologie, ceux qui sont plus loin que la racine.</div>##### <span style="color: rgb(53,152,219);">***2.2.4 Blocage des ports redondants ( Redundant ports )***</span>

Les ports participant à la topologie mais n'étant désignés ni comme <span style="color: rgb(132,63,161);">***root***</span>, ni comme<span style="color: rgb(132,63,161);"> ***designated***</span> seront alors bloqués et deviendrons des <span style="color: rgb(132,63,161);">***blocked ports***</span>. Ces ports pourront être activés en cas de dysfonctionnement de l'un des ports actif.

En attendant, ceux-ci :

- ne transfèrent plus le trafic,
- n'apprennent plus d'adresses MAC,
- n'écoutent plus de trafic, hormis les trames BPDU.

C'est comme cela que les switches de la topologie se prémunissent des boucles réseaux et c'est ce fonctionnement qui explique également les latences de cicatrisation.

On a donc 5 états possibles pour un port :

<div id="bkmrk-disabled-blocking-%282">1. **Disabled**
2. **Blocking** (20 seconds)
3. **Listening** (15 seconds)
4. **Learning** (15 seconds)
5. **Forwarding**

</div>#### <span style="color: rgb(35,111,161);">**2.2 Les améliorations de RSTP**</span>

Pour simplifier le fonctionnement du protocole et accélérer les temps de cicatrisation réseau, le RSTP va apporter quelques changements à ce fonctionnement.

- L'ajout d'un nouveau type de port dit <span style="color: rgb(132,63,161);">***edge port***</span> (PortFast), permettant de relier des équipements actifs ou des terminaux sans que cela ne déclenche un recalcul de topologie.

- Des négociations plus rapides lors des élections de switch et de détermination des status des ports basés sur un mécanisme de <span style="color: rgb(132,63,161);">***Proposal/Agreement :***</span>
    - Un switch propose un port comme Designated port.
    - Les voisins directs approuvent.
    - Les deux ports passent automatiquement en mode forward.

Pour vulgariser, lorsqu'un switch reçois un BPDU de son voisin, il peut décider :

- "Ce voisin a un meilleur chemin vers le root que moi" --&gt; Je deviens Root port
- "J'ai un meilleur chemin que lui" --&gt; Je deviens Designated Port

<details id="bkmrk-d%C3%A9tail-de-la-n%C3%A9gocia"><summary>Détail de la négociation</summary>

1. **Un switch reçois une BPDU "meilleure"** : Il comprend que son port doit devenir 'root port'.
2. **Il bloque temporairement tous ses 'designated ports'** : Ce qui évite les boucles.
3. **Il envoie un 'agreement' à son voisin** : Si il peut garantir que cela ne créée pas de boucle.
4. **Le voisin passe son port en forwarding** : Pas de délai d'attente comme en stp classique.
5. **Le switch débloque tous ses 'designated ports'** : La topologie converge ainsi en quelques milisecondes.

</details>Voici un comparatif des deux protocoles permettant de se faire un ordre d'idée

<div id="bkmrk-feature-stp-%28802.1d%29"><div tabindex="0"><table><thead><tr><td class="align-center" style="border-style: solid; background-color: rgb(194,224,244);">Fonctionnalité</td><td class="align-center" style="border-style: solid; background-color: rgb(194,224,244);">STP (802.1D)</td><td class="align-center" style="border-style: solid; background-color: rgb(194,224,244);">RSTP (802.1w)</td></tr></thead><tbody><tr><td class="align-center" style="border-style: solid;">Convergence</td><td class="align-center" style="border-style: solid;">30–50s</td><td class="align-center" style="border-style: solid;">1–3s</td></tr><tr><td class="align-center" style="border-style: solid;">Etat de ports</td><td class="align-center" style="border-style: solid;">5</td><td class="align-center" style="border-style: solid;">3</td></tr><tr><td class="align-center" style="border-style: solid;">Rôle de ports</td><td class="align-center" style="border-style: solid;">3</td><td class="align-center" style="border-style: solid;">4</td></tr><tr><td class="align-center" style="border-style: solid;">BPDU</td><td class="align-center" style="border-style: solid;">seul le root envoie</td><td class="align-center" style="border-style: solid;">tous les switchs envoient</td></tr><tr><td class="align-center" style="border-style: solid;">Détection de dysfonctionnement</td><td class="align-center" style="border-style: solid;">Lent</td><td class="align-center" style="border-style: solid;">Fast Handshake</td></tr><tr><td class="align-center" style="border-style: solid;">Edge ports</td><td class="align-center" style="border-style: solid;">Optionnel</td><td class="align-center" style="border-style: solid;">Concept Natif</td></tr></tbody></table>

</div></div>---

### <span style="text-decoration: underline; color: rgb(52,73,94);">**III. Caractéristiques des ports**</span>

#### <span style="color: rgb(35,111,161);">**3.1 Caractéristiques générales**</span>

Les ports peuvent être identifiés sur les switches de la façon suivante :

<table id="bkmrk-identification-sur-l" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col></colgroup><tbody><tr><td class="align-center" style="background-color: rgb(194,224,244);">**Identification sur le switch**</td><td class="align-center" style="background-color: rgb(194,224,244);">**Correspondance**</td><td class="align-center" style="background-color: rgb(194,224,244);">**Caractéristiques**</td></tr><tr><td>**RP**  
</td><td>Root Port</td><td>- Un seul par switch.
- Non applicable au root bridge.
- Représente le chemin le plus court vers le root bridge.

</td></tr><tr><td>**DP**</td><td>Designated Port</td><td>- Un par segment.
- Transmettent le trafic vers l'aval depuis le root bridge.

</td></tr><tr><td>**AP**</td><td>Alternate Port</td><td>- port de backup pour le root port.
- Si le RP est coupé, il prends le relai.

</td></tr><tr><td>**BP**

</td><td>Backup Port</td><td>- port de backup pour un designated port (sur le même switch).
- Rare dans les topologies réseaux modernes.

</td></tr><tr><td>**EP**

</td><td>Edge Port (PortFast)</td><td>- Ne participe pas à la topologie.
- Relie un équipement actif.

</td></tr></tbody></table>

En RSTP, un port peut avoir trois états fonctionnels ( Au lieu de 5 en STP ) :

- **Discarding** : Ne forwarde pas le trafic, n'apprends pas les MAC.
- **Learning** : Apprends les MAC address.
- **Forwarding** : Forwarde le traffic, port actif.

Les ports ne participant pas à la topologie où les équipements actifs sont connectés sont les <span style="color: rgb(132,63,161);">***Edge Ports*** </span>(PortFast).

Pas de recalcul ou de changement d'état sur ces ports car ils ne participent pas à la topologie. Ils passent directement en mode <span style="color: rgb(132,63,161);">***forward***</span>. Cela permet d'annuler les délais pour les équipements actifs branchés dessus.

#### <span style="color: rgb(35,111,161);">**2.2 BPDU Guard &amp; Loop Guard**</span>

En plus de ce qui a été vu ci-dessus, il existe deux fonctionnalités supplémentaires applicables aux ports en STP/RSTP.

La première est le <span style="color: rgb(132,63,161);">***BPDU Guard***</span> : C'est une fonctionnalité qui sert à protéger les <span style="color: rgb(132,63,161);">***Edge Ports***</span> des trames BPDU non désirées.

Ces ports ne participant pas à la topologie, ils ne doivent pas traiter de trames BPDU.

Si toutefois, suite à une erreur de manipulation (mauvais branchement par exemple), ces ports reçoivent des trames BPDU, cela veut dire qu'un port RSTP a été branché sur un port ne participant pas à la topologie et donc naturellement non protégé contre les boucles réseaux.

Dans ce cas, le BPDU Guard va automatiquement couper le port pour prévenir la boucle. Le port passe alors en état <span style="color: rgb(132,63,161);">***Err-disable***</span>.

La seconde est <span style="color: rgb(132,63,161);">***Loop Guard***</span> : C'est une fonctionnalité qui sert à protéger les liens <span style="color: rgb(132,63,161);">***Trunk***</span> et les <span style="color: rgb(132,63,161);">***uplinks***</span> de boucles unidirectionnelles.

#### <span style="color: rgb(35,111,161);">**2.2 Rapid-PVST**</span>

Le rapid-PVST ou (**P**er **V**lan **S**panning **T**ree) est un RSTP appliqué par VLAN.

Ainsi si plusieurs VLAN co-existent au sein d'une même topologie physique, il est possible de définir une instance de RSTP par VLAN.

Chaque VLAN dispose ainsi de :

- Son Root Bridge,
- Ses chemins favoris,
- Ses propres root ports,
- Ses propres designated ports.

<p class="callout success">**Conseil** : Cela peut se révéler particulièrement intéressant dans de vastes structures dans lesquelles il est important voire crucial d'optimiser ses chemins réseaux et d'équilibrer la charges sur les différents liens. Ou dans le cas d'usages intensifs de bande passante sur des vlan concurrentiels ( voip / Vidéo )...   
</p>

Cependant pour des réseaux à très grande échelle, il sera préférable d'utiliser le protocole <span style="color: rgb(132,63,161);">***MSTP***</span>.

Il sera également bon de prendre en compte que vu que le Rapid-PVST est instancié par VLAN, il consomme également plus de CPU.

<div id="bkmrk--42">---

</div>### <span style="text-decoration: underline; color: rgb(52,73,94);">**IV. Les trames BPDU**</span>

Comme vu jusqu'ici, le RSTP repose sur l'utilisation de trames spéciales appelées BPDU.

Contrairement au STP classique où seul le root bridge envoie des trames, en RSTP, chaque switch envoie ces trames en plus de forwarder celles du root bridge. C'est cela qui permet des délais de cicatrisation si courts.

 Ces trames se déclinent en deux types.

#### <span style="color: rgb(35,111,161);">**4.1 Les Configuration BPDU**</span>

Il s'agit des paquest BPDU normaux, envoyés toutes les 2 secondes par le Root Bridge.

Celles-ci contiennent :

- l'ID du root Bridge
- Le coût du chemin vers le root
- l'ID du bridge émetteur
- l'ID du port émetteur
- les différents timers (Hello, Max Age, Forward Delay) si ceux-ci sont utilisés

Leur rôle est de maintenir la topologie. Elles servent également a élire ou ré-élire un root bridge et déterminer les root ports et designated ports.

#### <span style="color: rgb(35,111,161);">**4.2 Les TCN BPDU ( Topology Change Notification ) en STP**</span>

En STP classique, ce sont les trames spéciales envoyées par un switch qui détecte un changement dans la topologie.

( par exemple : Un port qui passe de forwarding à down ou inversement, un lien qui tombe, un switch ajouté ou retiré de la topologie, etc...)

Cela fonctionne de la façon suivante :

1. Un switch non-root détecte un changement de topologie.
2. Il envoie une TCN BPDU vers son root port.
3. Chaque switch intermédiaire accuse réception et relaie vers le root bridge.

Le root bridge active alors le <span style="color: rgb(132,63,161);">***Topology Change Flag***</span> dans ses configuration BPDU et diffuse cette information sur l'ensemble du réseau.

Chaque switch va alors réduire le temps le mise en cache des adresse MAC ( aging time) afin de les purger au plus vite.

<p class="callout info">**Info** : En RSTP, ces trames sont supprimées et leur mécaniques sont intégrées dans les BPDU normaux, ce qui est beaucoup plus rapide.</p>

#### <span style="color: rgb(35,111,161);">**4.3 Détection des changements en RSTP**</span>

En RSTP, plutôt que d'utiliser des trames dédiées sur un changement de topologie, le Change Flag est intégré dans les trames classiques. Et comme chaque switch émets ses propres trames en permanence en plus de forward celles du root bridge, l'information se diffuse donc bien plus rapidement.

Ainsi, lorsqu'un port change d'état ( Up / Down / Forwarding), le RSTP :

- Met immédiatement à jour son rôle (RP, DP, AP, ...)
- Envoie une BPDU avec le bit *<span style="color: rgb(132,63,161);">**Topology Change**</span>* activé
- Informe dirrectement ses voisins, et ce 
    - sans attendre le Max Age
    - sans envoyer de TCN BPDU à destination du root bridge
- Ses voisins mettent immédiatement à jour leurs tables MAC 
    - Rendant ainsi la propagation de l'information immédiate et bidirectionnelle.

La propagation devient ainsi locale plutôt que globale et les délais de cicatrisation sont ainsi réduits à leur minimum.

Un changement de topologie met désormais entre 1 et 3 secondes à être totalement oppérationnel.

<div id="bkmrk--39">---

</div>### <span style="text-decoration: underline; color: rgb(52,73,94);">**V. Bonnes pratiques**</span>

Il est important, compte tenu des mécanismes ci-dessus, de prendre en considération l'ensemble des fonctionnalités dans la construction d'une topologie à la fois résiliente et optimisée.

- Toujours définir un Root Bridge soi-même.
- Définir les priorité des switches manuellement pour définir des routes "préférées".
- Bien déclarer les ports ne participant pas à la topologie en Edge Ports.
- Sur ces ports, activer BPDU Guard pour éviter les erreurs de manipulation.
- Utiliser préférentiellement un mode 'Point-to-point' sur les trunk.
- Activer Loop Guard sur les trunks
- Eviter de mixer STP et RSTP.

<div id="bkmrk--49">---

</div>### <span style="text-decoration: underline; color: rgb(52,73,94);">**VI. Conclusion**</span>

Le protocole RSTP est primordial dans les architectures réseaux modernes critiques où le réseaux doit à tout prix être stable et fonctionnel. Rendant ainsi centraux les aspects de redondance et de convergence rapide.

Mais il fait entrer beaucoup de notions différentes complexes qu'il est essentiel de bien comprendre et maîtriser afin de rendre son infrastructure la plus optimisée possible.

<div id="bkmrk--54"></div><div id="bkmrk--55"></div>