{"id":90,"date":"2026-08-30T19:55:28","date_gmt":"2026-08-30T17:55:28","guid":{"rendered":"https:\/\/asfy.fr\/index.php\/tutoriels\/spanning-tree-protocol-stp-eviter-les-boucles-reseau\/"},"modified":"2026-08-30T21:56:37","modified_gmt":"2026-08-30T19:56:37","slug":"spanning-tree-protocol-stp-eviter-les-boucles-reseau","status":"publish","type":"sv_tutoriel","link":"https:\/\/asfy.fr\/index.php\/tutoriels\/spanning-tree-protocol-stp-eviter-les-boucles-reseau\/","title":{"rendered":"Spanning Tree Protocol (STP) : \u00e9viter les boucles r\u00e9seau"},"content":{"rendered":"<p>Sur un r\u00e9seau avec des liens redondants entre switches, une boucle peut provoquer une temp\u00eate de diffusion (broadcast storm) capable de saturer tout le r\u00e9seau en quelques secondes. Le Spanning Tree Protocol (STP) existe pr\u00e9cis\u00e9ment pour \u00e9viter ce sc\u00e9nario.<\/p>\n<figure class=\"sv-diagram\">\n<svg viewBox=\"0 0 480 260\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" role=\"img\" aria-label=\"Topologie en boucle avec un lien bloqu\u00e9 par STP\">\n  <line x1=\"150\" y1=\"65\" x2=\"330\" y2=\"65\" stroke=\"#1f1f1f\" stroke-width=\"2\"\/>\n  <line x1=\"330\" y1=\"90\" x2=\"260\" y2=\"185\" stroke=\"#1f1f1f\" stroke-width=\"2\"\/>\n  <line x1=\"180\" y1=\"185\" x2=\"150\" y2=\"90\" stroke=\"#e0533d\" stroke-width=\"2.5\" stroke-dasharray=\"6,5\"\/>\n  <text x=\"240\" y=\"55\" font-size=\"12\" text-anchor=\"middle\" fill=\"#555\">lien actif<\/text>\n  <text x=\"120\" y=\"145\" font-size=\"12\" text-anchor=\"middle\" fill=\"#e0533d\" transform=\"rotate(-58 120 145)\">bloqu\u00e9 (STP)<\/text>\n  <rect x=\"50\" y=\"40\" width=\"100\" height=\"50\" rx=\"8\" fill=\"#fff\" stroke=\"#e0533d\" stroke-width=\"2\"\/>\n  <text x=\"100\" y=\"60\" font-size=\"12\" text-anchor=\"middle\" fill=\"#1f1f1f\" font-weight=\"600\">Switch A<\/text>\n  <text x=\"100\" y=\"76\" font-size=\"10\" text-anchor=\"middle\" fill=\"#e0533d\">Root Bridge<\/text>\n  <rect x=\"330\" y=\"40\" width=\"100\" height=\"50\" rx=\"8\" fill=\"#fff\" stroke=\"#1f1f1f\" stroke-width=\"2\"\/>\n  <text x=\"380\" y=\"70\" font-size=\"12\" text-anchor=\"middle\" fill=\"#1f1f1f\" font-weight=\"600\">Switch B<\/text>\n  <rect x=\"130\" y=\"185\" width=\"100\" height=\"50\" rx=\"8\" fill=\"#fff\" stroke=\"#1f1f1f\" stroke-width=\"2\"\/>\n  <text x=\"180\" y=\"215\" font-size=\"12\" text-anchor=\"middle\" fill=\"#1f1f1f\" font-weight=\"600\">Switch C<\/text>\n<\/svg><figcaption>Topologie en triangle : STP bloque un des trois liens pour supprimer la boucle, tout en gardant un chemin de secours en cas de panne.<\/figcaption><\/figure>\n<h2>Le probl\u00e8me que r\u00e9sout STP<\/h2>\n<p>Relier deux switches par plusieurs c\u00e2bles am\u00e9liore la disponibilit\u00e9 (si un lien tombe, l&rsquo;autre prend le relais) mais cr\u00e9e aussi une boucle physique. Sans protection, une trame de diffusion envoy\u00e9e sur cette boucle est dupliqu\u00e9e ind\u00e9finiment, saturant la bande passante et faisant grimper le CPU des \u00e9quipements jusqu&rsquo;au blocage complet du r\u00e9seau.<\/p>\n<h2>Le principe de STP<\/h2>\n<p>STP construit un arbre logique sans boucle \u00e0 partir de la topologie physique : il \u00e9lit un <strong>pont racine<\/strong> (root bridge), calcule le chemin le plus court vers celui-ci depuis chaque switch, et place les ports redondants en \u00e9tat <strong>blocking<\/strong> pour ne pas les utiliser tant que le chemin actif fonctionne.<\/p>\n<h2>Les \u00e9tats d&rsquo;un port STP<\/h2>\n<ul>\n<li><strong>Blocking<\/strong> \u2014 ne transmet pas de trafic, \u00e9coute uniquement les BPDU (messages de contr\u00f4le STP).<\/li>\n<li><strong>Listening<\/strong> \u2014 \u00e9tape transitoire, le port commence \u00e0 participer \u00e0 l&rsquo;\u00e9lection.<\/li>\n<li><strong>Learning<\/strong> \u2014 le switch apprend les adresses MAC vues sur ce port, sans transmettre de trafic utilisateur.<\/li>\n<li><strong>Forwarding<\/strong> \u2014 le port transmet normalement le trafic.<\/li>\n<\/ul>\n<p>Cette transition compl\u00e8te prend jusqu&rsquo;\u00e0 30-50 secondes en STP classique (802.1D) \u2014 c&rsquo;est ce d\u00e9lai que les versions plus r\u00e9centes comme Rapid STP (802.1w) r\u00e9duisent drastiquement, \u00e0 quelques secondes seulement.<\/p>\n<h2>Voir l&rsquo;\u00e9tat de STP sur un switch Cisco<\/h2>\n<pre>Switch# show spanning-tree<\/pre>\n<p>Cette commande affiche le pont racine \u00e9lu, le r\u00f4le et l&rsquo;\u00e9tat de chaque port, ainsi que la priorit\u00e9 configur\u00e9e.<\/p>\n<h2>Un point de vigilance : la priorit\u00e9 du pont racine<\/h2>\n<pre>Switch(config)# spanning-tree vlan 10 priority 4096<\/pre>\n<p>Sur un r\u00e9seau avec plusieurs switches, il est recommand\u00e9 de choisir explicitement quel \u00e9quipement doit \u00eatre le pont racine (g\u00e9n\u00e9ralement le switch c\u0153ur de r\u00e9seau) plut\u00f4t que de laisser l&rsquo;\u00e9lection se faire au hasard sur la seule adresse MAC \u2014 un mauvais choix peut cr\u00e9er des chemins de trafic sous-optimaux.<\/p>\n<h2>Portfast : acc\u00e9l\u00e9rer la connexion des postes utilisateurs<\/h2>\n<p>Pour un port reli\u00e9 \u00e0 un simple poste de travail (pas \u00e0 un autre switch), l&rsquo;attente de 30 secondes avant transmission est inutile et g\u00eanante. La commande <code>spanning-tree portfast<\/code> sur ce port fait basculer directement en forwarding, tout en gardant la protection STP active en cas de mauvais branchement accidentel.<\/p>\n<h2>Commandes utiles : application et supervision<\/h2>\n<h3>Configuration<\/h3>\n<p>Configurer STP correctement va au-del\u00e0 d&rsquo;activer le protocole : il s&rsquo;agit de choisir le bon mode, de d\u00e9signer explicitement le pont racine, et d&rsquo;ajouter des protections compl\u00e9mentaires sur les ports d&rsquo;acc\u00e8s.<\/p>\n<h4>Choisir le mode STP<\/h4>\n<p>Trois variantes principales existent sur les \u00e9quipements Cisco :<\/p>\n<ul>\n<li><strong>PVST+<\/strong> \u2014 le mode STP classique (802.1D) par instance de VLAN ; convergence lente (30-50s).<\/li>\n<li><strong>Rapid-PVST+<\/strong> \u2014 bas\u00e9 sur 802.1w, convergence en quelques secondes ; c&rsquo;est le mode recommand\u00e9 par d\u00e9faut aujourd&rsquo;hui, avec une instance STP ind\u00e9pendante par VLAN.<\/li>\n<li><strong>MST (Multiple Spanning Tree)<\/strong> \u2014 regroupe plusieurs VLANs dans une m\u00eame instance STP, r\u00e9duisant la charge CPU sur les r\u00e9seaux avec un grand nombre de VLANs ; plus complexe \u00e0 mettre en place.<\/li>\n<\/ul>\n<pre>Switch(config)# spanning-tree mode rapid-pvst<\/pre>\n<h4>D\u00e9signer explicitement le pont racine<\/h4>\n<p>Plut\u00f4t que de calculer une priorit\u00e9 manuellement, Cisco propose une commande d\u00e9di\u00e9e qui ajuste automatiquement la priorit\u00e9 du switch pour qu&rsquo;il devienne pont racine (ou racine de secours) sur un VLAN donn\u00e9 :<\/p>\n<pre>Switch(config)# spanning-tree vlan 10 root primary\nSwitch(config)# spanning-tree vlan 10 root secondary<\/pre>\n<p>Sur le switch d\u00e9sign\u00e9 comme racine de secours, cette commande d\u00e9finit une priorit\u00e9 suffisamment basse pour qu&rsquo;il prenne le relais automatiquement si le pont racine principal tombe en panne. La m\u00e9thode manuelle reste possible pour un contr\u00f4le plus fin :<\/p>\n<pre>Switch(config)# spanning-tree vlan 10 priority 4096<\/pre>\n<h4>PortFast : acc\u00e9l\u00e9rer les ports utilisateurs<\/h4>\n<p>\u00c0 activer uniquement sur un port reli\u00e9 \u00e0 un poste de travail, jamais sur un port reli\u00e9 \u00e0 un autre switch \u2014 sous peine de cr\u00e9er une boucle non d\u00e9tect\u00e9e le temps que STP s&rsquo;en aper\u00e7oive.<\/p>\n<pre>Switch(config)# interface gi0\/5\nSwitch(config-if)# spanning-tree portfast<\/pre>\n<h4>BPDU Guard : prot\u00e9ger les ports PortFast<\/h4>\n<p>Compl\u00e8te PortFast en d\u00e9sactivant automatiquement (err-disable) tout port qui re\u00e7oit une BPDU alors qu&rsquo;il est configur\u00e9 en PortFast \u2014 un signe qu&rsquo;un switch non autoris\u00e9 (ou mal branch\u00e9) a \u00e9t\u00e9 connect\u00e9 \u00e0 cet endroit.<\/p>\n<pre>Switch(config-if)# spanning-tree bpduguard enable<\/pre>\n<p>Pour l&rsquo;activer globalement sur tous les ports PortFast du switch plut\u00f4t qu&rsquo;interface par interface :<\/p>\n<pre>Switch(config)# spanning-tree portfast bpduguard default<\/pre>\n<h4>Root Guard : prot\u00e9ger la position du pont racine<\/h4>\n<p>\u00c0 placer sur les ports orient\u00e9s vers des switches qui ne doivent jamais devenir pont racine (typiquement les liens vers des switches d&rsquo;acc\u00e8s). Si une BPDU de meilleure priorit\u00e9 est re\u00e7ue sur ce port, il passe en \u00e9tat \u00ab\u00a0root-inconsistent\u00a0\u00bb plut\u00f4t que de laisser le nouveau venu prendre la racine.<\/p>\n<pre>Switch(config-if)# spanning-tree guard root<\/pre>\n<h4>Loop Guard : une protection compl\u00e9mentaire \u00e0 UDLD<\/h4>\n<p>Emp\u00eache un port de passer en forwarding s&rsquo;il cesse de recevoir des BPDU sans qu&rsquo;il s&rsquo;agisse d&rsquo;une d\u00e9connexion normale \u2014 un sc\u00e9nario proche de celui que couvre UDLD, mais au niveau de STP directement.<\/p>\n<pre>Switch(config-if)# spanning-tree guard loop<\/pre>\n<h3>Supervision (monitoring)<\/h3>\n<p>Chaque commande de supervision STP r\u00e9pond \u00e0 une question diff\u00e9rente : quel est l&rsquo;\u00e9tat global, que se passe-t-il sur ce VLAN pr\u00e9cis, ce port a-t-il un probl\u00e8me ?<\/p>\n<h4>show spanning-tree : la vue d&rsquo;ensemble<\/h4>\n<pre>Switch# show spanning-tree<\/pre>\n<p>Affiche, pour chaque VLAN, les informations cl\u00e9s \u00e0 surveiller :<\/p>\n<ul>\n<li><strong>Root ID<\/strong> \u2014 la priorit\u00e9 et l&rsquo;adresse MAC du pont racine actuel du VLAN.<\/li>\n<li><strong>Bridge ID<\/strong> \u2014 les m\u00eames informations pour le switch local, \u00e0 comparer au Root ID pour savoir s&rsquo;il est lui-m\u00eame la racine.<\/li>\n<li><strong>Port roles<\/strong> \u2014 Root (chemin vers la racine), Designated (port qui transmet normalement), Alternate ou Backup (ports de secours en attente).<\/li>\n<li><strong>Port states<\/strong> \u2014 Blocking, Listening, Learning, Forwarding pour chaque interface.<\/li>\n<\/ul>\n<h4>show spanning-tree vlan X : cibler un VLAN pr\u00e9cis<\/h4>\n<pre>Switch# show spanning-tree vlan 10<\/pre>\n<p>M\u00eame contenu que la commande g\u00e9n\u00e9rale, mais filtr\u00e9 sur un seul VLAN \u2014 plus rapide \u00e0 lire sur un switch qui en g\u00e8re des dizaines.<\/p>\n<h4>show spanning-tree summary : l&rsquo;\u00e9tat des protections<\/h4>\n<pre>Switch# show spanning-tree summary<\/pre>\n<p>Indique le mode STP actif, et surtout si PortFast, BPDU Guard, BPDU Filter, Loop Guard et Root Guard sont activ\u00e9s par d\u00e9faut sur le switch \u2014 une v\u00e9rification rapide pour confirmer que les protections attendues sont bien en place.<\/p>\n<h4>show spanning-tree interface X detail : le d\u00e9tail d&rsquo;un port<\/h4>\n<pre>Switch# show spanning-tree interface gi0\/5 detail<\/pre>\n<p>Donne, pour un port pr\u00e9cis, le nombre de BPDU envoy\u00e9es\/re\u00e7ues, le nombre de transitions vers l&rsquo;\u00e9tat forwarding (un chiffre \u00e9lev\u00e9 indique une instabilit\u00e9 \u00e0 investiguer), et le r\u00f4le\/\u00e9tat actuel du port.<\/p>\n<h4>show spanning-tree root : identifier rapidement la racine<\/h4>\n<pre>Switch# show spanning-tree root<\/pre>\n<p>Affiche uniquement les informations du pont racine pour chaque VLAN (priorit\u00e9, adresse MAC, co\u00fbt du chemin depuis ce switch) \u2014 pratique pour v\u00e9rifier rapidement que c&rsquo;est bien l&rsquo;\u00e9quipement attendu qui a \u00e9t\u00e9 \u00e9lu.<\/p>\n<h4>show spanning-tree inconsistentports : rep\u00e9rer les ports bloqu\u00e9s par une protection<\/h4>\n<pre>Switch# show spanning-tree inconsistentports<\/pre>\n<p>Liste les ports actuellement bloqu\u00e9s par Root Guard ou Loop Guard suite \u00e0 une anomalie d\u00e9tect\u00e9e \u2014 le premier r\u00e9flexe en cas de port qui semble down sans raison apparente apr\u00e8s une intervention sur le c\u00e2blage.<\/p>\n<p><strong>Besoin d&rsquo;aide pour s\u00e9curiser la topologie de votre r\u00e9seau ?<\/strong> <a href=\"\/index.php\/contact\/\">Contactez-nous<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pourquoi les boucles r\u00e9seau sont dangereuses, comment STP les \u00e9vite, les \u00e9tats de port (blocking, listening, learning, forwarding) et les commandes Cisco essentielles.<\/p>\n","protected":false},"featured_media":0,"template":"","sv_tuto_categorie":[23],"class_list":["post-90","sv_tutoriel","type-sv_tutoriel","status-publish","hentry","sv_tuto_categorie-reseau"],"_links":{"self":[{"href":"https:\/\/asfy.fr\/index.php\/wp-json\/wp\/v2\/sv_tutoriel\/90","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/asfy.fr\/index.php\/wp-json\/wp\/v2\/sv_tutoriel"}],"about":[{"href":"https:\/\/asfy.fr\/index.php\/wp-json\/wp\/v2\/types\/sv_tutoriel"}],"version-history":[{"count":3,"href":"https:\/\/asfy.fr\/index.php\/wp-json\/wp\/v2\/sv_tutoriel\/90\/revisions"}],"predecessor-version":[{"id":132,"href":"https:\/\/asfy.fr\/index.php\/wp-json\/wp\/v2\/sv_tutoriel\/90\/revisions\/132"}],"wp:attachment":[{"href":"https:\/\/asfy.fr\/index.php\/wp-json\/wp\/v2\/media?parent=90"}],"wp:term":[{"taxonomy":"sv_tuto_categorie","embeddable":true,"href":"https:\/\/asfy.fr\/index.php\/wp-json\/wp\/v2\/sv_tuto_categorie?post=90"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}