Aller au contenu principal
reseauLa couche physique et l'accès au support

La couche physique et l'accès au support

Ce que ce chapitre apporte

  • Définir un domaine de collision et dire ce qui en fixe les frontières.
  • Décrire CSMA/CD, et expliquer pourquoi une collision se détecte plutôt qu'elle ne s'évite.
  • Relier la taille minimale d'une trame à la longueur maximale du câble.
  • Expliquer pourquoi le Wi-Fi emploie CSMA/CA, et ce que cela lui coûte.
  • Dire ce que le passage au commuté full-duplex a supprimé, et ce qu'il n'a pas supprimé.
  • Distinguer débit nominal et débit utile.

Un câble ne transporte qu'un signal à la fois. Deux machines qui parlent en même temps sur le même fil ne produisent pas deux messages mêlés mais une tension qui ne veut plus rien dire, et les deux messages sont perdus. Tout le protocole Ethernet est né de ce problème, et sa solution explique deux nombres qu'on apprend d'ordinaire par cœur sans les relier : la longueur maximale d'un câble, et la taille minimale d'une trame.

Le chapitre précédent a posé les couches et s'est arrêté au bas de la pile. Ce chapitre y descend : comment plusieurs machines se partagent un support unique, ce qui se passe quand elles s'y prennent mal, et pourquoi ce problème a presque disparu du filaire alors qu'il gouverne toujours le sans-fil.

Un support, plusieurs machines

Domaine de collision

Un domaine de collision est l'ensemble des machines qui partagent un même support, et dont les émissions simultanées se détruisent mutuellement.

Sur un concentrateur, toutes les machines branchées en forment un seul. Sur un commutateur, chaque port est un domaine à lui seul : c'est la différence la plus importante entre les deux équipements.

Le problème est physique et non protocolaire. Deux tensions appliquées au même conducteur s'additionnent, et le récepteur lit une troisième valeur qui ne correspond à aucun des deux messages. Rien ne permet de les séparer après coup.

0,1 µs par bit10 000 000 bauds10 bits, 1 µs en tout
Poste AZZ1011ZZZZPoste BZZZZ00ZZZZle filZZ1000ZZZZA commenceB croit le fil libre00,8 µs
  • Le trait pointillé à mi-hauteur est la haute impédance : la broche est repassée en entrée, elle ne force rien, et le fil reste disponible pour les autres. Une station bien élevée y passe tout le temps où elle n'émet pas.
  • Conflit électrique sur les bits 4, 5 : Poste A et Poste B forcent des niveaux opposés en même temps. La tension lue ne veut plus rien dire, du courant passe d'une sortie à l'autre, et les composants chauffent. C'est ce que l'écoute avant émission cherche à éviter, sans toujours y parvenir : un signal met du temps à parcourir le fil, et la ligne paraît libre à qui se trouve plus loin.
A émet depuis deux instants quand B se met à parler : le signal de A ne lui est pas encore parvenu. Les deux tensions se contredisent, et la figure signale le conflit.

Ce dessin contient toute la difficulté. B n'est pas fautif : il a écouté, il n'a rien entendu, il a émis. Le signal de A voyage, à environ deux cents millions de mètres par seconde, et pendant ce voyage le fil paraît libre à qui se trouve plus loin.

Écouter avant de parler ne suffit pas, à cause du temps de propagation
Toute la subtilité d'Ethernet tient là. Une machine qui écoute un support silencieux ne sait pas s'il est libre : elle sait seulement qu'aucun signal ne lui est encore parvenu.
Plus le câble est long, plus cette fenêtre d'ignorance est large, et plus les collisions deviennent probables. C'est pourquoi la longueur du réseau n'est pas un simple problème d'atténuation.

CSMA/CD

CSMA/CD

Carrier Sense Multiple Access with Collision Detection : écoute de la porteuse, accès multiple, détection de collision. Le protocole se déroule en cinq temps.

  1. Écouter. Si le support est occupé, attendre qu'il se libère.
  2. Émettre, tout en continuant d'écouter sa propre émission.
  3. Détecter : si ce qu'on lit sur le fil ne correspond pas à ce qu'on y a mis, il y a collision.
  4. Cesser immédiatement, et émettre une courte séquence de brouillage pour que tout le monde s'en aperçoive.
  5. Attendre une durée tirée au sort, puis reprendre au début.
La collision n'est pas une panne, c'est le fonctionnement normal
Un réseau partagé sain produit des collisions, et les résout en quelques microsecondes. Ce n'est pas un défaut à corriger : c'est le prix du partage, et le protocole est fait pour cela.
Ce qui est anormal, c'est leur proportion. Quelques pour cent des trames sont ordinaires, un tiers signale un support saturé, et des collisions tardives signalent tout autre chose : un câble trop long, un domaine mal découpé, ou une machine en semi-duplex face à une machine en full-duplex.

Deux nombres qui n'en font qu'un

La détection de collision impose une contrainte qu'on énonce rarement : une machine doit être encore en train d'émettre au moment où la collision lui revient. Si elle a fini, elle croira son message parti, alors qu'il a été détruit.

Cela relie deux grandeurs qu'on présente d'habitude séparément.

main.py
Sortie
>_ Prêt à exécuter…
La trame minimale de 64 octets et les 100 mètres du câble sont la même règle
Une trame doit durer au moins un aller-retour complet du réseau. Fixer 512 bits fixe donc une distance maximale, et fixer une distance maximale impose une taille minimale : les deux nombres sont deux façons d'écrire la même contrainte.
Cela explique aussi le bourrage : une trame dont les données ne remplissent pas 46 octets est complétée par des zéros. Elle n'a rien de plus à transporter, elle doit seulement durer assez longtemps.
La collision tardive, symptôme d'un réseau mal fait
Une collision détectée après les 64 premiers octets s'appelle une collision tardive, et elle n'est jamais normale. Elle signifie que la contrainte ci-dessus est violée.
Trois causes, dans l'ordre de fréquence : un câble ou un domaine trop long, un défaut de négociation où une extrémité est en full-duplex et l'autre en semi-duplex, ou un câble défectueux qui réfléchit le signal.
La deuxième est la plus courante et la plus déroutante : le lien fonctionne, les petites trames passent, et le débit s'effondre dès qu'un transfert sérieux commence. Le compteur de collisions tardives sur l'interface la désigne en une commande.

Pourquoi le Wi-Fi ne peut pas détecter

Une carte radio émet avec une puissance des millions de fois supérieure à celle qu'elle reçoit. Pendant qu'elle émet, elle n'entend qu'elle-même : elle ne peut pas écouter le support en même temps, donc elle ne peut pas détecter une collision.

CSMA/CA

Collision Avoidance au lieu de Collision Detection. Ne pouvant pas détecter, le Wi-Fi cherche à éviter, par trois mécanismes.

Attendre un délai aléatoire avant d'émettre, même quand le support est libre, pour que deux stations prêtes en même temps ne partent pas ensemble.

Acquitter chaque trame. L'émetteur ne sait pas si sa trame est passée : le récepteur doit le lui dire, trame par trame. Une trame non acquittée est retransmise.

Réserver le support, en option, par un court échange préalable qui annonce la durée de l'émission à venir.

Le problème de la station cachée n'a pas d'équivalent filaire
Deux postes peuvent tous deux entendre le point d'accès sans s'entendre l'un l'autre, parce qu'un mur les sépare. Chacun trouve le support libre, tous deux émettent, et le point d'accès reçoit une bouillie.
Écouter avant de parler ne sert alors à rien, puisque le support est réellement libre à l'endroit où l'on écoute. C'est la réservation préalable qui règle ce cas, et elle coûte deux échanges supplémentaires par trame.
Ce problème explique une part de la mauvaise réputation du Wi-Fi en milieu dense : ce n'est pas la portée qui manque, c'est le fait que les stations ne s'entendent pas entre elles.

Le coût de tout cela se mesure. Un réseau Wi-Fi annoncé à 300 mégabits par seconde délivre couramment moins de la moitié en débit utile, une fois retirés les acquittements, les délais d'attente, les en-têtes et les retransmissions. Ce n'est pas un défaut d'installation, c'est le protocole.

Ce que le commutateur a supprimé

Un port de commutateur en full-duplex n'a plus de collisions du tout
Deux machines ne se partagent plus un support : chacune a le sien, avec une paire pour émettre et une pour recevoir. Il n'y a plus de concurrence, donc plus de collision, donc plus de CSMA/CD.
C'est pourquoi le compteur de collisions d'un réseau commuté moderne doit rester à zéro. Une valeur non nulle n'y est pas un signe de charge, c'est un défaut de négociation.

Ce qui a disparu, ce sont les collisions. Ce qui n'a pas disparu, c'est la congestion : deux machines qui envoient chacune un gigabit par seconde vers un même serveur relié en gigabit produisent deux gigabits pour un lien qui n'en porte qu'un. Le commutateur met en file, la file déborde, et il jette.

Cette différence est essentielle pour le diagnostic. Une collision se voit sur le compteur de collisions ; une congestion se voit sur les compteurs de rejets et sur la latence, jamais sur les collisions.

Débit nominal et débit utile

Trois débits qu'on confond

Le débit nominal est celui du lien : 1 Gbit/s.

Le débit brut est ce qui circule vraiment, en-têtes compris, et il est plafonné par le nominal.

Le débit utile est ce qui reste une fois retirés les en-têtes, les acquittements, les délais entre trames et les retransmissions. C'est le seul que l'utilisateur perçoit.

Le chapitre précédent a montré la première cause d'écart, l'encapsulation. La seconde est le délai inter-trames : Ethernet impose un silence de 96 temps de bit entre deux trames, plus un préambule de 8 octets devant chacune. Sur des trames pleines, cela coûte un pour cent ; sur des trames minimales, beaucoup plus.

main.py
Sortie
>_ Prêt à exécuter…

Exercices type

Exercice 1 : un poste affiche 4 % de collisions sur son interface. Faut-il s'en inquiéter ?

Afficher la solution

La question est mal posée tant qu'on ne sait pas si le port est en semi-duplex ou en full-duplex.

En semi-duplex, sur un domaine partagé, 4 % de collisions est normal et sain. Le protocole les résout, et le débit n'en souffre presque pas.

En full-duplex, sur un port de commutateur, la valeur attendue est zéro. Toute collision y signale un défaut de négociation : une extrémité se croit en full-duplex, l'autre en semi-duplex. Le lien fonctionne, les petits échanges passent, et le débit s'effondre dès qu'un transfert commence.

La première chose à regarder n'est donc pas le taux mais le mode de duplex des deux côtés du lien.

Exercice 2 : pourquoi une trame Ethernet dont les données ne font que 20 octets est-elle complétée par des zéros ?

Afficher la solution

Parce qu'elle doit durer assez longtemps pour qu'une collision survenue à l'autre bout du réseau revienne avant la fin de son émission.

Une trame de 64 octets minimum, soit 512 bits, garantit cela sur la longueur maximale autorisée. Une trame plus courte pourrait être terminée avant que son émetteur n'apprenne qu'elle a été détruite, et il la croirait passée.

Le bourrage n'apporte donc aucune information : il achète du temps. C'est un vestige du semi-duplex, conservé par compatibilité alors que les collisions ont disparu des réseaux commutés.

Exercice 3 : un point d'accès Wi-Fi annoncé à 300 Mbit/s délivre 110 Mbit/s mesurés. L'installation est-elle défectueuse ?

Afficher la solution

Non, c'est l'ordre de grandeur attendu.

Le Wi-Fi paie l'acquittement de chaque trame, les délais d'attente aléatoires avant chaque émission, ses propres en-têtes, et les retransmissions dues aux interférences. Un tiers à une moitié du débit nominal en débit utile est la norme.

S'y ajoutent deux facteurs propres au partage. Le support est commun à toutes les stations : dix postes actifs se partagent le même débit. Et une station éloignée qui négocie une modulation lente occupe le support plus longtemps pour la même quantité de données, ce qui ralentit tout le monde, y compris les stations proches.

Chercher un défaut d'installation ici fait perdre du temps. La question utile est le nombre de stations actives et la qualité du lien de la plus mauvaise d'entre elles.

Exercice 4 : deux serveurs envoient chacun 800 Mbit/s vers un même serveur de sauvegarde relié en gigabit. Que se passe-t-il, et que montrent les compteurs ?

Afficher la solution

1,6 Gbit/s arrivent sur un lien qui en porte 1. Le commutateur met en file d'attente ce qu'il ne peut pas transmettre, la file se remplit, puis il jette.

Les compteurs le disent précisément. Les collisions restent à zéro, puisque chaque lien est en full-duplex et sans concurrence. Ce qui monte, ce sont les rejets en sortie sur le port du serveur de sauvegarde, et la latence des trames qui attendent dans la file.

Chercher des collisions ici ne mènerait nulle part : la congestion et la collision sont deux phénomènes distincts, avec deux compteurs distincts.

Les remèdes sont l'agrégation de plusieurs liens vers le serveur, un lien à dix gigabits, ou l'étalement des sauvegardes dans le temps.

Vérification rapideon peut se reprendre

1.Pourquoi écouter le support avant d'émettre ne suffit-il pas à éviter les collisions ?

2.Que relie la taille minimale de 64 octets d'une trame Ethernet ?

3.Pourquoi le Wi-Fi évite-t-il les collisions au lieu de les détecter ?

4.Sur un port de commutateur en full-duplex, quel taux de collisions attendre ?

5.Deux serveurs saturent un lien vers un troisième. Quel compteur monte ?

6.Une collision détectée après les 64 premiers octets…

La méthode

  1. Regarder le duplex des deux côtés avant d'interpréter le moindre taux de collisions.
  2. Distinguer collision et congestion : deux compteurs, deux causes, deux remèdes.
  3. Traiter toute collision tardive comme un défaut, jamais comme de la charge.
  4. Compter les stations actives avant d'accuser un point d'accès Wi-Fi.
  5. Comparer le débit utile au débit nominal en tenant compte de la taille des trames.
  6. Découper les domaines de collision en remplaçant tout concentrateur restant.

Synthèse

  • Un domaine de collision rassemble les machines dont les émissions se détruisent. Sur un commutateur, chaque port en est un.
  • Écouter avant d'émettre ne suffit pas : le signal voyage, et le support paraît libre à qui est plus loin.
  • CSMA/CD ne prévient pas la collision, il la détecte et la résout.
  • Une collision est normale sur un support partagé ; c'est sa proportion qui informe.
  • Les 64 octets de trame minimale et la longueur maximale du câble sont la même contrainte.
  • Le bourrage n'ajoute pas d'information : il achète du temps.
  • Une collision tardive signale un câble trop long ou un duplex mal négocié.
  • Le Wi-Fi ne peut pas détecter, faute de pouvoir écouter en émettant : il évite et acquitte.
  • La station cachée rend l'écoute inopérante, et n'a pas d'équivalent filaire.
  • Le full-duplex commuté supprime les collisions, pas la congestion.
  • Trois débits à ne pas confondre : nominal, brut, utile.