Couche liaison et commutation¶
Ethernet, switches et VLANs — le réseau local ou tout commence.
Le rôle de la couche liaison¶
La couche liaison connecte des machines directement reliees par un medium physique. Son travail : prendre un paquet IP et le livrer au prochain nœud sur le chemin — pas plus loin. Chaque saut dans le réseau est une opération de couche liaison.
Concretement, la couche liaison géré trois problèmes :
- L'adressage local : identifier les machines sur un même segment (adresses MAC)
- Le tramage : delimiter ou commence et ou finit chaque unite de données sur le medium
- La détection d'erreurs : vérifier que les bits n'ont pas été corrompus pendant le transfert
Tanenbaum consacre un chapitre entier à la couche liaison, et Perlman (Interconnections) en fait le cœur de son ouvrage — parce que c'est a cette couche que les décisions d'interconnexion se prennent.
Ethernet (IEEE 802.3)¶
Ethernet domine le réseau local depuis quarante ans. Conçu en 1973 chez Xerox PARC, normalise par l'IEEE en 1983, il a survecu en evoluant : de 10 Mbps sur cable coaxial partage a 400 Gbps sur fibre optique point-à-point.
La trame Ethernet¶
Chaque trame Ethernet contient :
| Champ | Taille | Rôle |
|---|---|---|
| Preambule | 7 octets | Synchronisation d'horloge |
| SFD | 1 octet | Start Frame Delimiter — début de trame |
| MAC destination | 6 octets | Adresse du destinataire |
| MAC source | 6 octets | Adresse de l'expéditeur |
| EtherType / Length | 2 octets | Type du payload (0x0800 = IPv4) |
| Payload | 46-1500 oct | Données (paquet IP en général) |
| FCS | 4 octets | Frame Check Sequence (CRC-32) |
La taille minimale de payload (46 octets) vient d'une contrainte historique : sur un Ethernet a 10 Mbps avec un cable de 2.5 km, la trame doit être assez longue pour que l'émetteur détecté une collision avant de finir d'émettre. Les trames plus courtes sont paddees a 46 octets.
La taille maximale (1500 octets) définit le MTU (Maximum Transmission Unit) standard d'Ethernet. On reviendra sur ses implications en performance au chapitre 06.
Adresses MAC¶
Une adresse MAC (Media Access Control) est un identifiant de 48 bits, généralement écrit en hexadecimal : 00:1A:2B:3C:4D:5E. Les 24 premiers bits identifient le fabricant (OUI — Organizationally Unique Identifier), les 24 suivants identifient l'interface.
L'adresse MAC FF:FF:FF:FF:FF:FF est l'adresse de broadcast — une trame envoyee a cette adresse est delivree a toutes les machines du segment.
Note
Les adresses MAC sont censees être uniques au monde, mais rien ne l'impose techniquement. Les machines virtuelles et les conteneurs utilisent des adresses MAC générées dynamiquement. Dans un datacenter virtualise, la gestion des adresses MAC devient un enjeu en soi.
Du hub au switch¶
Le hub : le passe¶
Un hub est un repeteur multiport. Il reçoit un signal sur un port et le retransmet sur tous les autres ports. Toutes les machines partagent la bande passante. Si deux machines emettent en même temps, il y a collision. Le protocole CSMA/CD (Carrier Sense Multiple Access with Collision Détection) géré ces collisions, mais au prix de la performance.
Avec un hub, un réseau de 10 machines sur un hub 100 Mbps partage 100 Mbps entre toutes — chaque machine a en moyenne 10 Mbps effectifs.
Le switch : le present¶
Un switch est un équipement de couche 2 intelligent. Il apprend quelles adresses MAC sont accessibles sur chaque port, et il transmet les trames uniquement vers le port de destination. Chaque paire de machines obtient la bande passante complète du lien.
graph TD
subgraph "Switch - table MAC"
S["Switch"]
end
A["PC A<br>MAC: AA:AA"] --port 1--> S
B["PC B<br>MAC: BB:BB"] --port 2--> S
C["PC C<br>MAC: CC:CC"] --port 3--> S
D["PC D<br>MAC: DD:DD"] --port 4--> S Le switch maintient une table d'adresses MAC (ou CAM table — Content Addressable Memory) qui associe chaque adresse MAC a un port.
Le processus d'apprentissage¶
Le switch apprend par observation. Quand il reçoit une trame, il note l'adresse MAC source et le port d'arrivee. Au fil du temps, sa table se remplit.
sequenceDiagram
participant A as PC A (port 1)
participant S as Switch
participant B as PC B (port 2)
participant C as PC C (port 3)
Note over S: Table MAC vide
A->>S: Trame vers MAC BB:BB
Note over S: Apprend AA:AA sur port 1<br>BB:BB inconnu → flood
S->>B: Trame (flood)
S->>C: Trame (flood)
B->>S: Reponse vers MAC AA:AA
Note over S: Apprend BB:BB sur port 2<br>AA:AA connu → port 1
S->>A: Trame (unicast) Trois comportements du switch :
| Situation | Action | Explication |
|---|---|---|
| MAC destination connue | Forward | Envoie sur le port associe |
| MAC destination inconnue | Flood | Envoie sur tous les ports sauf le port source |
| MAC destination = broadcast | Flood | Envoie sur tous les ports sauf le port source |
| MAC source = port source change | Update | Met à jour l'entree dans la table |
Les entrees de la table MAC expirent après un timeout (typiquement 300 secondes). Une machine qui ne communique pas pendant 5 minutes disparait de la table.
| Critère | Hub | Switch | Routeur |
|---|---|---|---|
| Couche | 1 (Physique) | 2 (Liaison) | 3 (Réseau) |
| Adressage | Aucun | MAC | IP |
| Domaine collision | Partage | Par port | Par interface |
| Domaine broadcast | Partage | Partage | Séparé |
| Bande passante | Partagee | Dédiée par port | Dédiée |
| Intelligence | Aucune | Table MAC | Table de routage |
Warning
Le flooding est le talon d'Achille du switch. Une tempête de broadcast (broadcast storm) — causee par une boucle dans le réseau — peut saturer tous les liens et paralyser le réseau entier. C'est pour cela que le Spanning Tree Protocol existe.
VLANs (IEEE 802.1Q)¶
Un VLAN (Virtual LAN) partitionne un switch physique en plusieurs réseaux logiques isoles. Les trames d'un VLAN ne sont pas transmises aux ports d'un autre VLAN, même si les machines sont sur le même switch physique.
Pourquoi les VLANs¶
Sans VLANs, toutes les machines d'un switch partagent le même domaine de broadcast. Un broadcast ARP emis par n'importe quelle machine est reçu par toutes les autres. Sur un réseau de 1000 machines, le trafic de broadcast devient significatif, et la sécurité est inexistante — n'importe quelle machine peut voir le trafic de toutes les autres.
Les VLANs résolvent ces trois problèmes :
- Segmentation : isoler les départements, les environnements (production/staging), les types de trafic
- Sécurité : le trafic entre VLANs doit passer par un routeur, ou un firewall peut l'inspecter
- Performance : réduire la taille du domaine de broadcast
Le tag 802.1Q¶
IEEE 802.1Q ajoute un tag de 4 octets dans l'en-tête Ethernet :
| Champ | Taille | Rôle |
|---|---|---|
| TPID | 2 oct | Tag Protocol ID (0x8100) |
| PCP | 3 bits | Priority Code Point (QoS) |
| DEI | 1 bit | Drop Eligible Indicator |
| VID | 12 bits | VLAN Identifier (0-4095) |
Le VID de 12 bits permet 4094 VLANs (0 et 4095 sont reserves). C'est suffisant pour la plupart des réseaux d'entreprise, mais pas pour les grands datacenters cloud — d'ou l'invention de VXLAN qui etend l'espace a 16 millions d'identifiants.
Trunking¶
Un trunk est un lien entre deux switches qui transporte les trames de plusieurs VLANs. Les trames sur un trunk portent le tag 802.1Q pour identifier leur VLAN d'appartenance. Les ports d'accès (connectes aux machines) transmettent des trames sans tag — le switch ajoute le tag à l'entree et le retire à la sortie.
graph LR
subgraph "Switch A"
A1["Port 1<br>VLAN 10<br>access"]
A2["Port 2<br>VLAN 20<br>access"]
AT["Port 24<br>trunk"]
end
subgraph "Switch B"
BT["Port 24<br>trunk"]
B1["Port 1<br>VLAN 10<br>access"]
B2["Port 2<br>VLAN 20<br>access"]
end
AT --"802.1Q tagged<br>VLAN 10 + 20"--> BT Spanning Tree Protocol (STP)¶
Le problème des boucles¶
Les réseaux d'entreprise deploient des liens redondants entre switches pour la haute disponibilité. Mais la redondance crée des boucles, et les boucles sont fatales en couche 2 : une trame de broadcast est relayee indéfiniment, consommant toute la bande passante.
Radia Perlman a invente le Spanning Tree Protocol (STP, IEEE 802.1D) pour résoudre ce problème. Son poeme restera dans l'histoire du networking :
I think that I shall never see / a graph more lovely than a tree.
Le fonctionnement¶
STP construit un arbre couvrant (spanning tree) qui élimine les boucles en desactivant certains liens redondants. L'algorithme procede en trois étapes :
- Election du root bridge : le switch avec le Bridge ID le plus bas (priorité + MAC) devient la racine
- Calcul des chemins : chaque switch calcule le chemin le plus court vers le root bridge
- Desactivation des liens : les ports qui ne font pas partie de l'arbre couvrant sont mis en état "blocking"
graph TD
R["Switch A<br>Root Bridge<br>Priority: 4096"]
B["Switch B<br>Priority: 8192"]
C["Switch C<br>Priority: 8192"]
R --"Root Port"--> B
R --"Root Port"--> C
B --"Blocked Port ✕"--> C Les états des ports STP :
| État | Transmet les données | Apprend les MAC | Écoute les BPDU |
|---|---|---|---|
| Blocking | Non | Non | Oui |
| Listening | Non | Non | Oui |
| Learning | Non | Oui | Oui |
| Forwarding | Oui | Oui | Oui |
| Disabled | Non | Non | Non |
Le coût du STP classique¶
STP classique a un défaut majeur : la convergence prend 30 a 50 secondes. Quand un lien tombe, le réseau est partiellement inaccessible pendant ce temps. RSTP (Rapid Spanning Tree Protocol, IEEE 802.1w) réduit la convergence a 1-3 secondes en introduisant des rôles de ports supplémentaires et des mécanismes de proposal/agreement.
Tip
Dans les datacenters modernes, on evite STP autant que possible. Les architectures leaf-spine utilisent ECMP (Equal-Cost Multi-Path) au niveau couche 3 pour la redondance, éliminant les boucles couche 2. Chaque rack est un domaine L2 isole, et le routage assure la connectivité entre racks. C'est plus prévisible, plus rapide en convergence, et plus facile à diagnostiquer.
ARP : le lien entre couche 2 et couche 3¶
Le protocole ARP (Address Résolution Protocol) fait le pont entre l'adresse IP (couche 3) et l'adresse MAC (couche 2). Quand une machine veut envoyer un paquet IP a une autre machine sur le même réseau local, elle doit connaître l'adresse MAC du destinataire pour construire la trame Ethernet.
Le mécanisme est simple :
- La machine envoie une requête ARP en broadcast : "Qui à l'adresse IP 192.168.1.10 ?"
- La machine qui possédé cette IP répond en unicast : "C'est moi, mon MAC est AA:BB:CC:DD:EE:FF"
- L'émetteur met à jour son cache ARP et envoie la trame
Le cache ARP evite de répéter ce processus à chaque paquet. Les entrees expirent typiquement après 20 minutes.
Warning
ARP n'a aucun mécanisme d'authentification. N'importe quelle machine peut répondre a une requête ARP avec une fausse adresse MAC — c'est l'attaque ARP spoofing. Dans un réseau non sécurisé, un attaquant peut intercepter tout le trafic local (man-in-the-middle). Les protections incluent Dynamic ARP Inspection (DAI) sur les switches et les entrees ARP statiques pour les équipements critiques.
Impact pour l'architecte¶
La couche liaison semble lointaine pour un architecte logiciel. Elle ne l'est pas.
VLANs et segmentation réseau : quand on deploie des microservices, la segmentation réseau est un pilier de la sécurité. Comprendre les VLANs et leurs limites (4094 maximum) explique pourquoi les solutions cloud utilisent des overlay networks (VXLAN) pour la multi-tenancy.
Broadcast domains : chaque domaine de broadcast est une zone de "bruit" réseau. Un domaine trop large dégradé les performances. C'est pourquoi les architectures cloud limitent strictement la taille des sous-réseaux.
MTU et performance : la taille maximale de la trame Ethernet (1500 octets de payload) impacte directement la performance des transferts de données. Les jumbo frames (MTU 9000) peuvent tripler le débit pour les transferts massifs, mais elles doivent être supportees sur tout le chemin — un seul équipement avec un MTU inférieur provoque de la fragmentation.
Convergence : quand STP reconverge, le réseau est perturbe pendant quelques secondes. Les applications doivent tolérer ces micro-coupures — un timeout TCP trop court transforme une reconvergence STP en cascade d'erreurs applicatives.
Chapitre suivant : Couche réseau et routage — IPv4, IPv6, OSPF, BGP et la mecanique du routage.