2.B - Le commutateur Ethernet

Dans cette section, nous allons présenter, de manière plus détaillée, le fonctionnement interne du commutateur Ethernet (ou switch en anglais).

Le commutateur et le répéteur

Le commutateur est un équipement intermédiaire qui sert à relier plusieurs ordinateurs se trouvant dans le même réseau local. Le nombre d'ordinateurs peut varier de quelques unités (4, 5 ou 8) à quelques dizaines voir centaines de noeuds. C'est donc un équipement d'interconnexion sur lequel chaque noeud se branche à l'aide d'un câble Ethernet (connecteur RJ-45). Le commutateur dispose donc d'un ensemble de ports. Chaque port fait office de carte réseau pouvant envoyer ou recevoir un signal Ethernet. Chaque port peut accueillir un connecteur RJ-45 qui le relie soit à un ordinateur disposant d'une carte réseau, soit à un répéteur, soit à un autre commutateur.

Ainsi, les commutateurs et répéteurs sont des équipements intermédiaires qui permettent de relier plusieurs dizaines ou centaines d'ordinateurs pour constituer un réseau local à l'échelle d'une pièce ou d'un bâtiment sur des distances de quelques centaines de mètres.

Commutateurs

Le répéteur et le commutateur ont la même apparence extérieure mais ne jouent pas du tout le même rôle. Le répéteur (hub) est un équipement de niveau 1 OSI qui se contente de répéter le signal reçu sur un port sur tous les autres ports. Le commutateur est un équipement de niveau 2 OSI. Ainsi, il dispose d'un peu plus d'intelligence et en particulier peut lire et interpréter l'en-tête de la trame Ethernet et l'en-queue, c'est-à-dire le checksum.

Il peut donc faire la détection d'erreurs et éliminer les trames erronées. Le fait de pouvoir lire l'entête permet de récupérer les adresses MAC source et destination qui se trouvent dans l'en-tête de la trame Ethernet. Ainsi, Il va être en mesure de prendre des décisions d'acheminement en fonction d'une table de commutation, comme nous allons le voir dans la suite.

Principe de la commutation

La commutation est née dans les réseaux téléphoniques. Il s'agit de mettre en relation la personne appelant avec la personne appelée en établissant un circuit physique pour relier les deux extrémités de la communication. Dans les premiers réseaux téléphoniques, ce circuit était établi à la main par des opérateurs ou opératrices qui réalisaient les branchements en fonction de la demande d'appel. Aujourd'hui, le principe reste le même sauf que le circuit est établi de manière dynamique et automatique lors de la phase d'établissement de l'appel. Une fois le circuit établi, il est conservé pour toute la durée de la communication et garantit les ressources matérielles nécessaires jusqu'à la fermeture de la communication.

Dans les réseaux Ethernet, le principe de la commutation reste le même, à savoir la mise en relation directe d'un port d'entrée du commutateur avec un port de sortie pour permettre à une trame de circuler d'un émetteur à un récepteur. Mais aucun circuit n'est établi et aucune ressource n'est réservée de manière durable. Cette mise en relation est à la fois dynamique et temporaire voire éphémère. En effet, elle dépend des trames qui traversent le commutateur et la mise en relation change pour chaque trame, chaque trame ayant sa propre source et destination.

Pour déterminer le port de sortie pour chaque trame qui rentre dans le commutateur en fonction de l'adresse MAC destination présente dans la trame, une table d'acheminement interne au commutateur est nécessaire. Il s'agit de la Forwarding Data Base (FDB) en anglais. Cette table contient pour chaque port la liste des adresses MAC branchées sur ce port. Il peut y avoir plusieurs adresses MAC sur un port dans le cas où un autre équipement intermédiaire (répéteur ou commutateur) est branché sur ce port.

Commutation

La mise en relation au niveau de la matrice de commutation peut être plus ou moins complexe, plus ou moins coûteuse et nécessite de l'intelligence dans l'équipement. Elle est réalisée de manière électronique avec par exemple des portes logiques ou des transistors.

Au démarrage, après avoir allumé un commutateur Ethernet, sa table d'acheminement est vide. Elle se remplie au fur et à mesure, de manière dynamique, par analyse du trafic entrant (@MAC source). dans le commutateur. Pour chaque trame entrante, le commutateur lit l'adresse MAC source dans l'en-tête de la trame et va associer cette adresse au port d'arrivée de la trame. Il peut s'agir soit d'une nouvelle entrée dans la table si cette adresse MAC n'était pas encore connue, soit d'une mise à jour dans le cas où l'adresse MAC a changé de port suite à une modification des branchements, ce qui peut arriver fréquément.

À la réception d'une trame à destination d'une adresse MAC donnée :

  • Le commutateur va mettre en relation les deux ports concernés sous réserve que l'adresse MAC de destination existe dans la table.
  • Les trames à destination d'une adresse non présente dans la table sont répétées sur tous les ports sauf le port d'entrée.
  • Plusieurs trames peuvent être traitées simultanément selon les capacités du commutateur.

La mémoire du commutateur étant limitée :

  • Les entrées les plus anciennes sont effacées.
  • Un timer est associé à chaque entrée de la table qui est gérée comme un cache. Quand le timer expire, l'entrée est supprimée de la table.
  • Le timer est réinitialisé à chaque nouvelle trame entrante provenant de la même source.

L'algorithme simplifié du commutateur est donc le suivant :

Fonctionnement d'un switch

La décision de commutation, c'est-à-dire, pour une trame donnée, la mise en relation du port d'entrée avec le port de sortie, peut se faire plus ou moins rapidemment, du plus rapide au moins rapide :

  • Commutation en mode Cut through : le signal de la trame est ré-émis sur le port de sortie tout de suite dès que le port de sortie est connu soit juste après avoir lu l'adresse MAC destination dans l'en-tête de la trame et trouvé le port de sortie dans la table d'acheminement ; ce mode est le plus rapide.
  • Commutation en mode Fragment free : le signal de la trame est ré-émis sur le port de sortie juste après la réception des 64 premiers octets ; ce mode permet de s'assurer que la trame fait au moins 64 octets (taille minimale de la trame Ethernet) et donc qu'elle n'a pas subi de collision.
  • Commutation en mode Store & forward : le signal de la trame n'est ré-émis sur le port de sortie qu'après avoir reçu tous les octets de la trame et vérifié qu'elle ne contient pas d'erreur grâce au calcul de la somme de contrôle (FCS) ; ce mode permet de ne faire suivre que les trames qui ne contiennent pas d'erreur.

Modes de commutation

Le mode "Cut through" est le plus rapide. Il minimise le temps de traversée du commutateur (latence) mais ne permet pas d'éliminer les trames qui ont subi une collision ou une erreur. Le mode "Store & forward" est le plus lent (forte augmentation de la latence) mais il permet d'éliminer les trames erronées. Enfin, le mode "Fragment free" est intermédiaire. Il a un intérêt s'il y a un ou plusieurs répéteurs branchés sur le commutateur afin d'éliminer les trames qui ont subi une collisison.

Congestion et domaine de collisions

Du fait de son fonctionnement, le commutateur participe à la gestion du partage de la parole dans le réseau local. Il permet d'éviter des collisions puisqu'il ne transmet pas plusieurs trames simultanément sur une même liaison. En revanche, si un répéteur est branché sur l'un de ses ports, des collisions vont pouvoir se produire dans le domaine de collision constitué par le répéteur et tous les ordinateurs ou équipements branchés sur ce répéteur, y compris le commutateur. Le commutateur va donc devoir mettre en oeuvre le CSMA/CD sur ce port afin de détecter les collisions.

Du fait de son fonctionnement, le commutateur permet sur un même port de recevoir un signal d'une station tout en lui envoyant un autre signal simultanément. Autrement dit, le commutateur permet des communications full-duplex sur chaque liaison sauf sur les ports où il est branché à un répéteur qui devront être en half-duplex afin de permettre la détection de collision.

Si le commutateur diminue les domaines de collision, il peut néanmoins engendrer des pertes de trames suite à une congestion.
Dans les réseaux, une congestion est un encombrement voire une saturation du réseau qui provoque d'abord un ralentissement des communications puis, si elle n'est pas contrôlée, une perte d'informations (trames ou paquets). Une congestion dans un réseau ressemble à un embouteillage dans le trafic routier.

Dans un commutateur, une congestion risque de se produire si plusieurs ports d'entrée sont simultanément dirigés vers un même port de sortie de même débit que les ports d'entrée. Par exemple, trois stations peuvent transférer chacune un fichier à 100Mbits/s vers un serveur de fichiers qui lui aussi dispose d'une liaison à 100Mbits/s. Ainsi, 300Mbits/s rentrent dans le commutateur pour un flux de sortie limité à 100Mbits/s. Cette situation induit une saturation des files d'attente dans la mémoire du commutateur jusqu'à provoquer des pertes de trames dès lors que les files d'attentes sont pleines. Une solution partielle à ce problème consiste à attribuer plus de bande passante aux liens qui risquent d'être saturés. C'est ce que l'on appelle des uplink, c'est-à-dire des liens ayant un débit supérieur aux autres liens.

Gestion de la congestion

Par exemple, sur un commutateur à dix mégabits par seconde, tous les ports sont à dix mégabits par seconde sauf quelques ports qui sont à cent mégabits par seconde.

Pour éviter des congestions entre deux commutateurs, il est possible de mettre plusieurs câbles entre les deux commutateurs pour augmenter le débit. Dans l'exemple de la figure, quatre liens à cent mégabits par seconde entre les deux commutateurs vont permettre de supporter un débit maximum de quatre-cents mégabits par seconde. Cette technique s'appelle le trunking en anglais.

Critères de choix du commutateur

Le choix d'un commutateur peut s'avérer délicat car il en existe de toutes sortes, plus ou moins performants, à des prix pouvant aller de quelques dizaines d'euros à plusieurs milliers d'euros. Le prix du commutateur est fonction du nombre de ports, de débit de chaque port, de la capacité de stockage interne (mémoire), de la rapidité de commutation, de la puissance de calcul interne, des fonctionnalités du commutateur, etc.

Le choix le plus adapté dépend donc du réseau que l'on veut construire et nécessite de répondre aux questions ci-dessus qui permettent de trouver le meilleur compromis coût/performance.

  • Quelle est la bande passante globale nécessaire en fonction du trafic qui va circuler dans le réseau ?
  • Quelles performances sont visées ?
  • Quel est la rapidité de traitement du commutateur, c'est-à dire son temps de traversée ou temps de latence ? Cela dépend de l'architecture de la matrice de commutation.
  • Combien de ports sont nécessaires, pour quels coûts selon le débit nécessaire sur chacun des ports ?
  • Quelle taille mémoire en entrée/sortie pour chaque port mais aussi pour la table d'acheminement ?
  • Quelles fonctionnalités sont nécessaires ? Par exemple, doit-il permettre la création de réseaux locaux virtuels (VLAN) ?

Nous allons présenter dans la section 2.C le principe des réseaux locaux virtuels (VLAN) qui permettent de partitionner un seul réseau local physique en plusieurs réseaux locaux virtuels dans le but de rendre la gestion du réseau plus flexible, d'isoler certains trafics par rapport à d'autres et d'améliorer les performances du réseau.