Fonctionnement du switch et table MAC
Définition
Un switch ethernet est un pont multicouche qui travaille en couche 2 du modèle OSI. Il construit automatiquement une table d'adresses MAC qui associe chaque adresse source observée au port d'entrée de la trame. Quand une trame arrive, le switch consulte cette table pour l'adresse de destination et envoie la trame vers un seul port si la destination est connue, ou la diffuse sur tous les ports sauf celui d'entrée si elle est inconnue.
Contexte
Avant les switchs, les hubs diffusaient chaque bit sur tous les segments: un seul domaine de collision, moitié de bande passante par poste, collisions permanentes enhalf duplex. Le switch remplace le hub en offrant un domaine de collision par port et une commutation matérielle en silicium, à pleine vitesse sur chaque lien. Le commutateur ethernet standardisé par IEEE 802.1D est l'équipement de base de la couche accès d'un campus. C'est l'objet des thèmes 1.13 du blueprint Cisco 200-301: apprentissage et vieillissement MAC, commutation de trames, flooding, table MAC.
Comment le switch apprend
Chaque trame ethernet contient 6 octets d'adresse source et 6 octets de destination. L'adresse MAC est un identifiant de 48 bits: les 24 premiers bits (OUI) identifient le fabricant, les 24 derniers le numéro de carte. Le switch examine la source de toute trame entrante et écrit le couple dans sa table:
| Adresse source | Port | VLAN | Type |
|---|---|---|---|
| aabb.cc00.0100 | Gi1/0/1 | 10 | DYNAMIC |
| aabb.cc00.0200 | Gi1/0/5 | 20 | DYNAMIC |
Si l'entrée existe déjà avec le même port, le switch rafraîchit simplement l'horodatage. Les entrées dynamiques vieillissent: sur un Catalyst, le timer d'aging par défaut est de 300 secondes. Une entrée non rafraîchie est supprimée, ce qui permet à un poste déplacé physiquement d'être réappris sur son nouveau port sans redémarrer le switch.
Les trois décisions de commutation
Face à une trame entrante, le switch applique toujours l'une de ces décisions:
- Forward (filtrage positif): la destination est dans la table et sur un autre port que celui d'entrée. La trame sort uniquement vers ce port.
- Flood (inondation): la destination est absente de la table (unknown unicast), ou il s'agit d'une diffusion (broadcast FF:FF:FF:FF:FF:FF) ou d'un multicast non connu. La trame sort sur tous les ports du même VLAN sauf le port source.
- Filter / drop: la destination est apprise sur le port même où la trame est entrée. La trame est jetée, car le segment est déjà atteint.
Le flooding des unknown unicast explique pourquoi un ping entre deux PC jamais communiqués génère du trafic sur plusieurs ports: la première trame est inondée, la réponse du destinataire est apprise, et les trames suivantes sont commutées vers un port unique.
Chemins de données: store-and-forward et cut-through
- Store-and-forward: le switch bufferise la trame entière, vérifie le FCS (CRC), puis relaie. Latence d'environ 100 microsecondes sur un lien gigabit, et les trames erronées sont écartées. C'est le comportement par défaut des Catalyst modernes.
- Cut-through: le switch lit les 14 premiers octets (destinations) et commence à relayer immédiatement. Latence plus faible, mais les trames invalides peuvent être propagées.
- Fragment-free: variante qui lit les 64 premiers octets avant de relayer, pour écarter les collisions tardives.
Exemple concret
Sur un Catalyst 9200, PC-A (MAC aabb.cc00.0100) est sur Gi1/0/1, PC-B (aabb.cc00.0200) sur Gi1/0/5, VLAN 10. PC-A envoie un ping vers PC-B. La table MAC est vide:
Switch# show mac address-table vlan 10
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
10 aabb.cc00.0100 DYNAMIC Gi1/0/1
10 aabb.cc00.0200 DYNAMIC Gi1/0/5
Total Mac Addresses for this criterion: 2
Après la première requête ARP inondée, les deux entrées existent. Toute trame ultérieure entre PC-A et PC-B sort uniquement vers Gi1/0/5: les autres ports du VLAN 10 ne voient plus rien. La table accepte des dizaines de milliers d'entrées (par exemple 32 000 sur un C9200-48P) et se stocke dans une mémoire CAM consultée en un cycle matériel, ce qui permet une commutation sans latence logicielle.
Pièges fréquents
- Une table saturée par une attaque (flooding d'adresses MAC source) force le switch à diffuser à nouveau tout le trafic: c'est la raison d'être du port security.
- Le broadcast reste inondé par conception: un switch seul ne réduit pas le domaine de broadcast, il faut des VLANs ou un routeur.
- Une boucle physique fait exploser la table MAC et crée des tempêtes de broadcast: STP doit être actif.