Ethernet, "le métronome"


Cet article est la suite du premier de la série "La danse des protocoles", si vous ne l'avez pas lu, il est disponible ici

Comme une impression de déjà vu

Connaissez-vous l'Ethernet ? Protocole mythique des réseaux locaux, le mot "Ethernet" est aujourd'hui utilisé à tort et à travers dans des locutions toutes plus douloureuses les unes que les autres (un câble Ethernet, kézako ?).

C'est donc dans un effort de réduire le nombre de personnes racontant des ignominies que je vous propose d'étudier en détail l'Ethernet, son histoire et les équipements en charge de sa commutation.

Un peu d'histoire

L'histoire du protocole Ethernet commence au Xerox Palo Alto Research Center (le même centre à l'origine du concept d'interface graphique) en 1973. Robert Metcalfe, alors ingénieur chez Xerox, s'inspire d'ALOHAnet, un réseau de transmission d'informations de l'université d'Hawaii, pour déposer un brevet en 1975 avec David Boggs, Charles Thacker et Butler Lampson.

Quatre ans plus tard, Metcalfe fonde 3Com pour promouvoir l'utilisation des réseaux locaux. Convaincu de l'utilité qu'aurait Ethernet comme standard, il s'associe avec DEC, Intel et Xerox pour créer la première spécification d'Ethernet en 1980: Ethernet I (Ethernet à 10Mb/s) dont le surnom est "DIX" (pour DEC Intel Xerox). Cette norme sera révisée en 1982 sous le nom d'Ethernet II. En 1983, l'IEEE publie la norme 802.3 basée sur les spécifications DIX. Il est à noter que les deux technologies sont (heureusement) intercompatibles. A partir de cette date, seule l'IEEE formalisera les mises à jour de la norme.

Mais les années 80 n'ont pas non plus été de tout repos pour Ethernet. À l'époque, deux autres standards se disputent le terrain des réseaux locaux: le Token ring d'IBM et ARCnet de TWR-Matra (dont personne ne se souvient, comme quoi La Fontaine avait raison...). La bataille fut rude mais Ethernet a fini par triompher en raison de sa flexibilité topologique.

"Et depuis ?" vous me direz. La réalité est qu'Ethernet a très peu changé depuis (prise en compte de l'IPv6, augmentations du débit) sauf pour un point... son médium physique !

À l'origine, Ethernet était un protocole qui agissait sur une topologie en bus sur un câble coaxial, ce qui était peu pratique (bouchon adaptateur d’impédance, faible distance, ...). Aujourd'hui, l'Ethernet est utilisé sur deux médias différents: la fibre optique et le câble RJ45. Oui, le câble RJ45 et non Ethernet (vous croyiez que j'avais oublié ma question de l'introduction ? Que nenni, j'attendais juste l'acte 2 pour utiliser mon fusil de Tchekhov !), puisque le câble n'est que le médium qui transporte le protocole.

Le CSMA/CD, la "métronomie" d'antan

Autrefois, avant que l'Ethernet full duplex (technologie permettant à deux périphériques réseau d'utiliser le médium en même temps) ne soit popularisé, le médium physique ne pouvait être utilisé que par un seul équipement à la fois. Si toutefois deux équipements venaient à "parler" en même temps (et cela arrivait très fréquemment dans les gros réseaux), cela créait des collisions qui rendaient donc caduque la communication. Pour rémédier à cela, un algorithme visant à réémettre les trames impliquées dans des collisions a été développé, c'est le Carrier Sense Multiple Access / Collision Detect (CSMA/CD). Même si celui-ci n'est plus utilisé de nos jours, il est important de comprendre son fonctionnement de base car celui-ci est analogue au partage du canal en Wi-Fi.

Lors d'une transmission, celle-ci dure un temps \(\text{T}_t\) et met un temps de propagation \(\text{T}_p\) à arriver à destination.

Transmission

Transmission de trames

Si un autre équipement débute une émission alors que la première n’est pas encore achevée, les deux périphériques vont se retrouver à recevoir et émettre des trames en même temps, ce qui cause une collision.

Émission simultanée de deux équipements conduisant à une collision

Émission simultanée de deux équipements conduisant à une collision

Un algorithme relativement simple a alors été mis en place sur tout équipement réseau susceptible de rencontrer ce problème. Lorsqu'une collision est détectée, les équipements émetteurs arrêtent la transmission, émettent un signal de brouillage puis recommencent la transmission après un temps aléatoire. Dans l'éventualité où des collisions se produiraient trop souvent sur la même transmission, celle-ci sera alors abandonnée. L'algorithme entier est résumé ci-dessous

Algorithme complet du CSMA/CD

Algorithme complet du CSMA/CD

Histoire d'illustrer un peu mieux, prenons le cas où trois machines se trouvent sur le réseau

Communication de trois machines selon l’algorithme CSMA/CD

Communication de trois machines selon l’algorithme CSMA/CD

Cet algorithme marche bien pour de faibles débits (10 à 100 Mb/s) mais au delà le nombre de collisions serait trop importants et ce serait le chaos absolu !

Mark Kempf, le génie de la commutation

Une histoire de domaines

Avant d'introduire la commutation et les ponts, parlons un peu de la trame Ethernet pour nous permettre de mieux comprendre ce qui va suivre. La trame Ethernet doit être longue d'au moins 64 octets (pour la détection des collisions) et est constituée de 8 champs, 5 définissant l'entête de la trame et 2 l'enqueue.

La trame Ethernet

La trame Ethernet

Faisons le détails des champs:

  • Préambule: partie de l'entête utilisée pour la synchronisation de la trame
  • SFD: Start Frame Delimiter, partie de l'entête indiquant le début effectif de la trame
  • @Destination: partie de l'entête, adresse MAC de destination de la trame
  • @Source: partie de l'entête, adresse MAC source de la trame
  • Type: partie de l'entête indiquant le type de données transmise par la couche supérieure (IPv4, CDP, ...). C'est ce champ qui viole le principe d'indépendance des couches du modèle OSI.
  • LLC data: données de la sous-couche LLC (sous-couche de la couche 2)
  • PAD (padding): partie de l'enqueue, données sans signification insérées uniquement si le champ LLC data a une longueur insuffisante pour que les collisions puissent être détectées à coup sûr (temps d’émission supérieur à la tranche du canal)
  • CRC: Cyclic Redundancy Check, forme de FCS (Frame Check Sequence) de degré 32 faisant partie de l'enqueue

Avant que les ponts ne soient développés, la manière de connecter des ordinateurs en réseau était d'utiliser un hub. Le hub est un équipement de couche 1 dont la seule fonction est de répliquer le signal arrivant en entrée de l'un de ses ports sur tous ses autres ports. Ne faisant aucune distinction sur l'adresse de destination, les collisions étaient fréquentes avec ce matériel qui ne fonctionnait pas en full duplex.

Un hub crée un "domaine de collision" dans lequel tout équipement connecté est susceptible de faire l'expérience de collision de trames.

Pour remédier à cela, un ingénieur de la société DEC, Mark Kempf, eut l'idée de développer un pont (à 2 ports) dont le rôle serait de ne transmettre les trames en sortie que si celles-ci sont destinées au réseau de sortie. Avec cela, le concept de la commutation de trame basée sur l'adresse MAC de destination était né.

Une utilisation supplémentaires des ponts était de séparer deux domaines de collisions, créant ainsi un domaine de broadcast.

Un pont séparant deux domaines de collisions crées par des hubs

Un pont séparant deux domaines de collisions crées par des hubs

Les fonctions d'un pont

La fonction principale d'un pont est de transmettre ou non (on appelle cela sa fonction de filtrage) des trames sans en modifier le contenu (données LLC, adresses MAC). C'est donc un équipement de couche 2.

Ils permettent, d'une part, d'augmenter la bande passante de chaque domaine de collisions en limitant les trames transmises dessus et, d'autre part, d'augmenter de manière quasi infinie la taille d'un réseau local sans problèmes de collisions grâce à leur fonction de filtrage.

Le mécanisme d'apprentissage

Chaque pont possède une mémoire cache (mise à jour régulièrement) contenant une base de données constituée des adresses MAC, du numéro de port de connexion correspondant et de la date de dernier accès. Initialement, cette mémoire est vide et le pont écoute en mode promiscuous (il écoute tout) les trames transmises.

Pour une trame donnée, le pont enregistre son adresse MAC source, le port de réception (s'ils ne sont pas déjà enregistrés) et met à jour le champ correspondant à son moment d'arrivée. Il cherche alors dans sa base de données si l'adresse MAC de destination existe.

  • Si elle existe, il envoie la trame sur le port associé, ou la détruit si le port associé est le même que celui d’émission (trafic local). Ceci réalise sa fonction de filtrage.
  • Si elle n'existe pas, il envoie la trame sur tous les ports sauf celui de réception.

Apprentissage d'un pont

Apprentissage d'un pont

On peut dresser, en guise d'exemple, les étapes d'apprentissage et de commutation du pont:

Transmissions trame de ... vers ... Port de réception Ports d'émission Contenu mémoire cache du pont
M1 \(\to\) M2 P1 P2 et P3 M1 - Port 1
M2 \(\to\) M3 P1 P2 et P3 M2 - Port 1
M3 \(\to\) M1 P2 P1 M3 - Port 2
M3 \(\to\) M4 P2 P1 et P3 Mise à jour date M3
M4 \(\to\) M3 P2 Détruit M4 - Port 2
M1 \(\to\) M2 P1 Détruit Mise à jour date M1
M1 \(\to\) M5 P1 P2 et P3 Mise à jour date M1
M5 \(\to\) M1 P3 P1 M5 - Port 3

Table d'apprentissage d’un pont

Le full duplex

Grâce aux ponts de Kempf, puis aux switches modernes, une révolution était devenue possible : la communication bidirectionnelle simultanée, ou "full duplex".

Le principe du full duplex est simple et analogue à une autoroute. Plutôt que d'avoir une seule voie d'autoroute dont le sens alternerait pour faire passer les voitures, pourquoi ne pas construire une deux fois deux voies pour accommoder des voitures dans les deux sens ? c'est la même chose pour le full duplex, avoir deux équipements qui parlent en même temps sur le médium physique.

Alors, évidemment, cela implique quelques petits ajustements sur la topologie des réseaux. Fini l'Ethernet sur du câble coaxial où tout le monde partage le médium. Maintenant, les liaisons seront en point-à-point entre l'équipement et le pont (ou switch).

Cette transformation a eu des conséquences majeures : disparition du CSMA/CD (devenu inutile) et doublement du débit effectif (car communication bidirectionnelle), et suppression de toute la complexité liée à la gestion des collisions. Un switch à 24 ports peut désormais gérer 24 communications simultanées, chacune en full duplex.

Avec cette révolution, Ethernet avait trouvé sa forme moderne. Mais il restait encore un défi : comment faire communiquer efficacement tous ces réseaux locaux entre eux ? C'est là qu'intervient notre prochain protagoniste...

Conclusion

Notre voyage dans l'univers d'Ethernet touche à sa fin, et quel parcours !

Du métronome chaotique du CSMA/CD aux switches modernes orchestrant des dizaines de communications simultanées, Ethernet a su évoluer tout en gardant son essence de protocole de réseau local. Cette capacité d'adaptation explique pourquoi, 50 ans après sa création au Xerox PARC, ce protocole domine encore nos réseaux locaux et commence à chercher sa place au-delà.

La révolution de Mark Kempf avec le pont a été le tournant décisif pour la pérennité du protocole: transformer un médium partagé et conflictuel en une infrastructure point-à-point efficace. Le full duplex n'était alors qu'une conséquence logique de cette vision.

Ethernet a trouvé son rythme, son métronome parfait. Mais comment les réseaux locaux communiquent-ils entre eux ? Comment un paquet voyage-t-il d'un réseau à un autre ?

C'est là qu'intervient notre premier danseur...


Prochain épisode : IP, "le porteur universel" - Pourquoi ce protocole de couche 3 est devenu le standard de facto pour les communications.

Add a comment