Auto-négociation (ethernet)

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

L'auto-négociation est un mécanisme Ethernet via lequel deux équipements connectés choisissent des paramètres de communications communs, tel que la vitesse et le mode duplex. Via ce mécanisme, les terminaux connectés s'échangent dans un premier temps leurs aptitudes et sélectionnent ensuite le mode de transmission le plus rapide supporté par eux deux.

D'un point de vue modèle OSI, l'auto-négociation réside dans la couche physique. Elle fut initialement définie dans la norme IEEE 802.3u en 1995. Elle a été décrite dans la partie consacrée à Fast Ethernet mais est également rétro-compatible avec le 10BASE-T. Néanmoins, son implémentation était optionnelle et une partie des spécifications ouverte à interprétation. Ces portions furent supprimées dans la version IEEE 802.3 de 1998. En 1999, le protocole de négociation fut significativement étendu par la norme IEEE 802.3, spécifiant le protocole Gigabit Ethernet, rendant le mécanisme d'auto-négociation obligatoire pour du Gigabit Ethernet en 1000BASE-T sur cuivre.

Description Générale[modifier | modifier le code]

Le mécanisme d'auto-négociation peut être utilisé par des terminaux capables de transmettre des données à différentes vitesses (10 Mbit/s ou 100 Mbit/s par exemple), ou différents modes duplex (half-duplex et full duplex), et/ou différents standards à la même vitesse (bien qu'en pratique seulement un standard par vitesse est supporté). Chaque terminal annonce toutes ses aptitudes techniques, donc, ses principaux modes de communication. Les deux terminaux choisissent le meilleur mode qu'ils ont en commun, en sélectionnant la vitesse la plus élevée (100Mb/s) et en préférant le mode full-duplex au mode half-duplex pour une même vitesse.

La "détection parallèle" est utilisée lorsqu'un terminal supportant l'auto-négociation est connecté à un second ne le supportant pas ou l'ayant désactivée logiciellement. Dans ces conditions, le terminal supportant l'auto-négociation peut déterminer la vitesse de l'autre équipement et sélectionne la même vitesse que lui. Ce mécanisme ne permettant pas de déterminer le support du mode full-duplex dans ce cas, le mode half-duplex est choisi. Si le terminal sans auto-négociation est configuré en full-duplex, une incohérence de mode duplex en résultera. L'impact généralement observé dans ce cas une connexion fonctionnelle mais à une vitesse très faible.

La norme pour le 1000BASE-T (4 paire Cat5) et 1000BASE-TX (2 paire Cat6) nécessite que le mécanisme d'auto-négociation soit toujours présent et activé. À part la vitesse et le mode de duplex, l'auto-négociation est utilisée pour communiquer le type de port (port unique ou multi-port) ainsi que les paramètres maître/esclave (si configuré manuellement ou non, si le terminal est maître ou esclave si c'est le cas, et le bit "master-slave seed" sinon).

Les signaux électriques[modifier | modifier le code]

Une séquence d'impulsions normales du lien normal, utilisé par les terminaux 10BASE-T pour établir l'intégrité du lien.

L'auto-négociation est fondée sur des impulsions similaires à celles utilisées par les terminaux 10BASE-T pour détecter la présence d'autres équipements connectés au lien. Elles sont émises par un équipement lorsqu'il n'émet ou ne reçoit aucune donnée. Il s'agit d'impulsions électriques uni-polaires, uniquement positives, d'une durée de 100ns, générées à un intervalle de 16.8 ms (avec une tolérance de 8ms). Ces impulsions sont appelées impulsions de test d'intégrité du lien (link integrity test/LIT) dans la terminologie de la norme 10BASE-T, et son connues sous le nom d'impulsions normales du lien (normal link pulses/NLP) dans la spécification du mécanisme de l'auto-négociation.

Un équipement détecte une panne du lien (soit du média de transmission, soit de l'équipement distant), si ni aucun paquet ni aucune impulsions ne sont reçus en 50-150ms. La présence d'un lien valide est signalé par la réception d'un paquet valide ou de deux impulsions LIT. Afin que ceci fonctionne, les équipements émettent des impulsions LIT même s'ils n'en reçoivent aucune.


Trois train d'impulsion 'fast link', utilisé par des équipements avec auto-négociation pour annoncer leurs aptitudes..

L'auto-négociation utilise des impulsions similaires. Elles sont toujours unipolaires, uniquement positives et d'une durée de 100ns, mais chacune d'elle est remplacée par un train de, au maximum, 33 impulsions. un tel train est appelé fast link pulse (FLP) burst. La durée entre le début de chaque burst est identique à la durée entre deux impulsions de lien normal, soit 16ms avec une tolérance de 8ms.

Les burst d'impulsions fast link sont réalisés comme suit  : il y a 17 impulsions espacées de 125 µs (avec une tolérance de 14 µs). Entre deux couples d'impulsion consécutifs, une autre pulsation peut ou non être présente. Cette présence d'impulsion représente un 1 logique, l'absence, un 0 logique. Ainsi, chaque burst représente un mot logique de 16 bits. Ce mot est appelé link code word (LCW). Les 17 impulsions sont toujours présentes et sont utilisées comme horloge, alors que les 16 autres impulsions peuvent être présentes ou non et représentent les informations transmises. Les bits du LOW sont numérotés de 0 à 15, où le bit 0 correspond à la première impulsion possible et le bit 15 à la dernière.

Comment un LWO est encodé dans un burst fast link pulse

Un burst fast link pulse n'est pas reconnu comme une impulsion de lien normal. Donc, un équipement 10BASE-T recevant un tel burst d'un équipement utilisant l'auto-négociation détectera une panne du lien. Un lien avec un équipement utilisant l'auto-négociation pourra quand même s'établir via le mécanisme parallel device function: l'équipement 10BASE-T gardera ses impulsions de lien normal ou transmettra des paquets. L'équipement avec auto-négociation, en les recevant, basculera en mode 10BASE-T half-duplex. Une incohérence de duplex en résultera si l'équipement 10BASE-T fonctionne en mode full-duplex.

Priorité des modes[modifier | modifier le code]

En fonction des aptitudes reçues des autres équipements, tous les équipements décident du meilleur mode possible supporté par tous les terminaux. La priorité des modes définie dans l'édition de 2002 de la norme 802.3 est la suivante :

  • 1000BASE-T full duplex
  • 1000BASE-T half duplex
  • 100BASE-T2 full duplex
  • 100BASE-TX full duplex
  • 100BASE-T2 half duplex
  • 100BASE-T4
  • 100BASE-TX half duplex
  • 10BASE-T full duplex
  • 10BASE-T half duplex

En d'autres termes, parmi les modes supportés simultanément par tous les terminaux, chacun sélectionne le plus haut placé dans cette liste.

Incohérence duplex[modifier | modifier le code]

Une incohérence de duplex apparaît lorsque deux équipements inter-connectés sont configurés avec des modes de duplex différents. Ceci peut arriver par exemple si l'un d'eux est configuré avec l'auto-négociation alors que le second a son mode fixé en full-duplex (sans auto-négociation). Dans ces conditions l'équipement utilisant l'auto-négociation détecte correctement la vitesse à utiliser mais est incapable de détecter le mode de duplex correct. Ceci a pour conséquence qu'il utilise la bonne vitesse mais utilise le mode half-duplex.

Lorsqu'un terminal opère en full-duplex alors que le second utilise du half-duplex, la connexion fonctionne mais à une vitesse très faible dès que les deux équipements tentent d'émettre des trames aux mêmes instants. Cela vient du fait que des données peuvent être envoyées dans les deux sens et simultanément dans le mode "full-duplex" mais que dans une seule direction à la fois en mode half-duplex. Ainsi, un équipement full-duplex pourra transmettre des données tout en en recevant. Si l'autre équipement fonctionne en half-duplex, il ne s'attendra pas à recevoir des données (vu qu'il en émet au même moment) ; ainsi, il détectera une collision et tentera de re-émettre la trame qu'il émettait. Suivant le timing, l'équipement half duplex pourrait détecter une collision tardive, qu'il interprétera comme une erreur 'hard' plutôt qu'une conséquence normale de CSMA/CD et ne tentera pas de ré-émettre la trame. De l'autre côté, le terminal full-duplex ne détecte pas de collision et ne ré-émet pas de trame, même si l'autre équipement a écarté le paquet en raison d'une collision détecté. Néanmoins, l'équipement full-duplex, ne s'attendant pas à recevoir une trame tronquée par le mécanisme de détection de collision, remontera une erreur de séquence de contrôle (Frame Check Sequence/FCS) de trame. Cette combinaison de collisions tardives reportée du côté "half-duplex" et les erreurs FCS reporté par le côté "Full Duplex" peut être symptomatique d'une incohérence de mode duplex.

Cette perte de paquet arrive lorsque les équipements émettent simultanément. Ceci peut arriver même lorsque le lien est utilisé dans un seul sens, d'un point de vue utilisateur. Un flux TCP nécessite que tous les paquets émis soient 'reconnus' par l'équipement récepteur. Même si des données sont émises que dans un seul sens, des collisions peuvent être générées via des paquets d'accusé de réception allant dans le sens opposé.