Le protocole Spanning Tree
0
commentaires
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 (section4).
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, 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 ».
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
|
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
(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
6 à 200 secondes
(config)#spanning-tree [vlan
vlan-id] forward-time seconds
4 à 200 secondes
4 à 200 secondes
(config)#spanning-tree
[vlan vlan-id] hello-time seconds
1 à 10 secondes
1 à 10 secondes
0 commentaires:
Enregistrer un commentaire