Vous êtes sur la page 1sur 4

Le protocole Spanning Tree

Par francois Dernière modification 05/07/2006 02:50 Francois Goffinet


Le protocole Spanning Tree (STP) est un protocole de couche 2 (liaison de données) conçu pour les
switches et les bridges. La spécification de STP est définie dans le document IEEE 802.1d. Sa
principale fonction est de s'assurer qu'il n'y a pas de boucles dans un contexte de liaisons
redondantes entre des matériels de couche 2. STP détecte et désactive des boucles de réseau et
fourrnit un mécanisme de liens de backup. Il permet de faire en sorte que des matériels compatibles
avec le standard ne fournissent qu'un seul chemin entre deux stations d'extrémité.
Spanning-Tree répond à la problématique de trames dupliquées dans un environnement de liaisons
redondantes (section 1). Le fonctionnement est basé sur la sélection d'un bridge Root et de calculs
des chemins les plus courts vers ce bridge (section 2). Les ports des bridges rencontrent cinq états
dont le "Blocking" qui ne transfère pas de trames de donnée et le "Forwarding" qui transfère les
trames de donnée (section 3). Quelques commandes essentielles sont à retenir, mais elles peuvent
être légèrement différentes sur les OS (section 4).

1. Problématique
Dans un contexte de liaisons redondantes sans STP deux problèmes peuvent survenir :
1. Des tempêtes de broadcast : lorsque des trames de broadcast sont envoyées (FF-FF-FF-FF-FF-
FF en destination), les switchs les renvoient par tous les ports. Les trames circulent en boucles et
sont multipliées. Les trames n'ayant pas de durée de vie (TTL comme les paquets IP), elles peuvent
tourner indéfiniment.

2. Une instabilité des tables MAC : quand une trame, même unicast, parvient aux switches
connectés en redondance, le port du switch associé à l'origine risque d'être erroné. Une boucle est
susceptible d'être créée.

Dans cet exemple, le PC1 envoie une trame au PC2. Les deux commutateurs recoivent la trame sur
leur port 0/2 et associent ce port à l'adresse mac de PC1. Si l'adrese de PC2 est inconnue, les deux
commutateurs transfèrent la trame à travers leur port 0/1. Les commutateurs recoivent
respectivement ces trames inversément et associent l'adresse MAC de PC1 au port 0/1. Ce
processus peut se répéter indéfiniment.

2. Fonctionnement de STP
Bien qu'une topologie physique puisse fournir de multiple chemins dans un contexte de redondance
et ainsi améliorer la fiabilité d'un réseau, STP crée un chemin sans boucle basé sur le chemin le plus
court. Ce chemin est établi en fonction de la somme des coûts de liens entre les switchs, ce coût
étant basé sur la vitesse d'un port. Aussi, un chemin sans boucle suppose que certains ports soient
bloqués et pas d'autres. STP échange régulièrement des informations (appelées des BPDU - Bridge
Protocol Data Unit) afin qu'une éventuelle modification de topologie puisse être adaptée sans
boucle.
1. Sélection d'un switch Root
Le switch Root sera le point central de l'arbre STP. Le switch qui aura l'ID la plus faible sera celui
qui sera élu Root. L'ID du switch comporte deux parties, d'une part, la priorité (2 octets) et, d'autre
part, l'adresse MAC (6 octets). La priorité 802.1d est d'une valeur de 32768 par défaut (ce sont des
multiples de 4096 sur 16 bits). par exemple, un switch avec une priorité par défaut de32768 (8000
Hex) et une adresse MAC 00 :A0 :C5:12:34:56, prendra l'ID 8000:00A0 :C512:3456. On peut
changer la priorité d'un switch avec la commande :
(config)#spanning-tree [vlan vlan-id] priority priority

Sur un switch Root, tous les ports sont des ports désignés, autrement dit, ils sont en état
« forwarding », il envoient et reçoivent le trafic.
2. Sélection d'un port Root pour les switch non-root.
Chaque switch non-root va sélectionner un port Root qui aura le chemin le plus court vers le switch
Root. Normalement, un port Root est en état « forwarding ».
Vitesse du lien Coût Plage de coût recommandée
4Mbps 250 100 to 1000
10Mbps 100 50 to 600
16Mbps 62 40 to 400
100Mbps 19 10 to 60
1Gbps 4 3 to 10
10Gbps 2 1 to 5
S'il s'agit d'un port d'accès [1], la commande de configuration est :
(config-if)#spanning-tree cost cost
S'il s'agit d'un port de tronc, la commande de configuration est :
(config-if)#spanning-tree vlan vlan-id cost cost
A noter aussi qu'en cas de coût égaux, c'est la priorité la plus faible (d'une valeur de 0 à 255) qui
emporte le choix (elle est de 128 par défaut) en déterminant l'ID du port composé de 2 octets
(priorité + numéro STP du port) :
Sur des ports d'accès :
(config-if)#spanning-tree port-priority priority
Sur des ports de tronc :
(config-if)#spanning-tree vlan vlan-id port-priority priority
3. Sélection d'un port désigné pour chaque segment
Pour chaque segment d'un Lan (domaine de collision), il y a un port désigné. Le port désigné est
celui qui a le chemin le plus court vers le bridge Root. Les ports désignés sont normalement en étant
« forwarding », autrement dit, envoient et reçoivent du trafic de données. Si plus d'un port sur un
même segment a le même coût vers le switch Root, le port du switch qui l'ID la plus faible est
choisi. Tous les autres sont des ports non-désignés en état « blocking ».
En bref,
1 switch Root par réseau dont tous les ports sont désignés
1 port Root par switch non-root
1 port désigné par domaine de collision
tous les autres ports sont non-désignés
Aussi, on peut résumer les liaisons :
Port <-> Port Etats <-> Etats Switch <-> Switch
Root <-> Désigné Forwarding <-> Forwarding Non-root <-> Root
Désigné <-> Root Forwarding <-> Forwarding Non-root <-> Non-root
Désigné <-> Non-désigné Forwarding <-> Blocking Non-root <-> Non-root
Une animation flash illustre le principe de fonctionnement de STP

3. Différents états STP


Cinq états de ports peuvent rencontrés sur un port STP. Chaque état comporte un délai. En voici les
propriétés.

L'age maximal de 20 secondes par défaut est le temps maximal avec que STP effectue de nouveaux
calculs quand une interface ne reçoit plus de BPDUs. Le temps de forwarding de 15 secondes par
défaut est le temps de passage d'un état "listening" à "learning" et de "learning" à "forwarding".
Aussi, la fréquence d'envoi de BPDUs Hello est de 2 secondes par défaut.
Etat « Blocking »
 Rejette toutes les trames de données venant du segment attaché
 Rejette toutes les trames de données venant d'un autre port de transfert
 N'intègre aucune emplacement de station dans sa MAC table (il n'y pas d'apprentissage)
 Reçoit les BPDUs et les transmet à son système
 N'envoie pas de BPDUs reçus de son système
 Répond à SNMP
Etat « Listening »
 Rejette toutes les trames de données venant du segment attaché
 Rejette toutes les trames de données venant d'un autre port de transfert
 N'intègre aucune emplacement de station dans sa MAC table (il n'y pas d'apprentissage)
 Reçoit les BPDUs et les transmet à son système
 Envoie les BPDUs reçus de son système
 Répond à SNMP
Etat « Learning »
 Rejette toutes les trames de données venant du segment attaché
 Rejette toutes les trames de données venant d'un autre port de transfert
 Intègre les emplacements de station dans sa MAC table (apprentissage)
 Reçoit les BPDUs et les transmet à son système
 Envoie les BPDUs reçus de son système
 Répond à SNMP
Etat « Forwarding »
 Commute toutes les trames de données venant du segment attaché
 Commute toutes les trames de données venant d'un autre port de transfert
 Intègre les emplacements de station dans sa MAC table (apprentissage)
 Reçoit les BPDUs et les transmet à son système
 Envoie les BPDUs reçus de son système
 Répond à SNMP
Etat « Disabled »
 Cet état est similaire à l'état « blocking » sauf que le port est considéré physiquement non
opérationnel (shut down ou problème physique).

4. Quelques commandes
Pour le diagnostic :
#show spanning-tree [?]
Désactivation de STP :
(config)#no spanning-tree vlan vlan-id
Ports Portfast :
La configuration d'une interface en "Portfast" (passage directe de l'état "blocking" à l'état
"forwarding" uniquement pour les segments qui ne connectent pas de switches) :
(config-if)#spanning-tree portfast
Priorité du switch :
(config)#spanning-tree [vlan vlan-id] priority priority
Coût et priorité d'un port :
(config-if)#spanning-tree [vlan vlan-id] cost cost
(config-if)#spanning-tree [vlan vlan-id] port-priority priority
Paramètres de timing :
(config)#spanning-tree [vlan vlan-id] max-age seconds
6 à 200 secondes
(config)#spanning-tree [vlan vlan-id] forward-time seconds
4 à 200 secondes
(config)#spanning-tree [vlan vlan-id] hello-time seconds
1 à 10 secondes

[1] Un port d'accès est un port qui n'est pas un port de tronc Vlan (VTP).
Pour un résumé succint, voir SPANNING TREE—AT-A-GLANCE

Vous aimerez peut-être aussi