Le protocole Spanning Tree

Posted by IT NISRO 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 ».

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

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



0 commentaires:

Enregistrer un commentaire

Membres

Formulaire de contact

Nom

E-mail *

Message *