Problématique

Les réseaux avec des switchs ont souvent des liens redondants pour la tolérance aux pannes. Problème : Les boucles créent des tempêtes de broadcast (broadcast storm). Les trames tournent indéfiniment dans le réseau, saturant la bande passante.

Principe

Le Spanning Tree Protocol construit un arbre couvrant le réseau. Désactive logiquement certains liens pour éliminer les boucles. Maintient la redondance : les liens désactivés peuvent être réactivés en cas de panne.

Algorithme

Étape 1 : Élection du Root Bridge

Chaque switch a un Bridge ID (priorité + adresse MAC). Le switch avec le plus petit Bridge ID devient le Root Bridge. Par défaut, priorité = 32768 pour tous, donc la plus petite MAC gagne.

Étape 2 : Calcul des coûts

Chaque switch calcule le coût du chemin le plus court vers le Root Bridge. Coût basé sur la bande passante des liens :

10 Mbps   → Coût 100
100 Mbps  → Coût 19
1 Gbps    → Coût 4
10 Gbps   → Coût 2

Étape 3 : Sélection des ports

Pour chaque switch (sauf Root) :

  • Root Port (RP) : port avec le coût le plus faible vers le Root Bridge
  • Designated Port (DP) : sur chaque segment, le port du switch avec le meilleur coût vers Root
  • Blocked Port (BP) : tous les autres ports (pour éviter les boucles)

États des ports

  1. Blocking : n’écoute que les BPDU, ne transmet rien
  2. Listening : participe à l’élection, ne transfère pas de données (15s)
  3. Learning : apprend les adresses MAC, ne transfère pas encore (15s)
  4. Forwarding : transmet normalement les données
  5. Disabled : port administrativement désactivé

Temps de convergence standard : environ 50 secondes (20s + 15s + 15s)

BPDU (Bridge Protocol Data Unit)

Messages échangés entre switches toutes les 2 secondes. Contiennent :

  • Bridge ID de l’émetteur
  • Bridge ID du Root connu
  • Coût du chemin vers le Root
  • Port ID

Exemple

graph TD
    A[Switch A<br/>Priority: 32768<br/>MAC: 00:00:00:00:00:01<br/>ROOT BRIDGE]
    B[Switch B<br/>Priority: 32768<br/>MAC: 00:00:00:00:00:02]
    C[Switch C<br/>Priority: 32768<br/>MAC: 00:00:00:00:00:03]
    D[Switch D<br/>Priority: 32768<br/>MAC: 00:00:00:00:00:04]
    
    A -->|Coût: 4<br/>DP| B
    A -->|Coût: 4<br/>DP| C
    B -->|Coût: 4<br/>RP| A
    B -.->|Coût: 4<br/>BLOCKED| D
    C -->|Coût: 4<br/>RP| A
    C -->|Coût: 4<br/>DP| D
    D -->|Coût: 4<br/>RP| C
    D -.->|Coût: 4<br/>BLOCKED| B
    
    style A fill:#90EE90
    style B fill:#FFE4B5
    style C fill:#FFE4B5
    style D fill:#FFE4B5

Légende :

  • Switch A devient Root Bridge (plus petite MAC)
  • Liens en trait plein : actifs (Forwarding)
  • Liens en pointillés : bloqués (Blocking)
  • RP : Root Port, DP : Designated Port

Convergence après panne

Si un lien actif tombe :

  1. Détection de la panne (par absence de BPDU pendant 20s par défaut)
  2. Les switches recalculent l’arbre
  3. Un port bloqué peut passer en Forwarding si nécessaire
  4. Temps de convergence : environ 50 secondes

Variantes modernes

RSTP (Rapid Spanning Tree Protocol - 802.1w)

Améliore le temps de convergence : moins de 6 secondes au lieu de 50. Nouveaux états de ports :

  • Discarding : remplace Blocking, Listening et Disabled
  • Learning : identique
  • Forwarding : identique

Nouveaux rôles de ports :

  • Alternate Port : backup du Root Port
  • Backup Port : backup du Designated Port

MSTP (Multiple Spanning Tree Protocol - 802.1s)

Permet plusieurs instances de spanning tree. Un spanning tree différent par VLAN (ou groupe de VLANs). Meilleure utilisation de la bande passante (load balancing).

Configuration basique (Cisco)

Définir la priorité pour forcer un switch à devenir Root :

Switch(config)# spanning-tree vlan 1 priority 4096

Les valeurs de priorité doivent être des multiples de 4096. Plage : 0 à 61440.

Vérifier l’état :

Switch# show spanning-tree

Activer RSTP :

Switch(config)# spanning-tree mode rapid-pvst

Avantages et limites

Avantages :

  • Prévention automatique des boucles
  • Redondance maintenue
  • Aucune configuration minimale requise

Limites :

  • Temps de convergence lent (STP classique)
  • Sous-utilisation de la bande passante (liens bloqués)
  • Un seul arbre pour tous les VLANs (sauf PVST/MSTP)

Solutions alternatives modernes :

  • TRILL (Transparent Interconnection of Lots of Links)
  • SPB (Shortest Path Bridging)
  • Protocols de routage niveau 3 (OSPF, BGP dans les datacenters)