Pour mes étudiants

Qu’est-ce qu’un switch ?

Le switch ou commutateur est largement déployé dans les réseaux locaux des entreprises. C’est un hub évolué. En effet et contrairement au hub, le switch distribue les données uniquement à la machine destinataire et permet de connecter un nombre de machines sensiblement plus grand.

Pour cela, le switch établit et met à jour une table appelée dans le cas du protocole Ethernet, une table CAM (Content-Addressable Memory).Cette table est construite dynamiquement et associe numéros de ports aux adresses MAC. Il s’agit d’une correspondance entre les ports où diriger les trames destinées à une adresse MAC donnée et les adresses MAC source des trames reçues sur chaque port.   

Lorsque le switch reçoit une trame destinée à une adresse présente dans sa table, il renvoie la trame sur le port correspondant. Si l’adresse du destinataire est inconnue dans la table, alors la trame est transmise à tous les ports actifs du commutateur à l’exception du port de réception.

Le switch est habituellement représenté dans un schéma de principe comme ci-dessous.

Représentation du switch dans un schéma de principe

Comment un switch remplit sa table CAM ?

Prenons un exemple

Soit la topologie réseau (Topologie réseau 1) ci-dessous. Il s’agit de quatre PC branchés sur deux switchs SW1 et SW2. Les PC sont identifiés par leurs adresses MAC. 

Exemple de topologie réseau

Au démarrage les tables CAM des switchs sont vides. Ces tables se remplissent au fur et à mesure que des communications s’établissent entre les différents PC.   

Supposons quePC1 initie une trame à destination de PC3.

Voyons comment chaque switch construit dynamiquement sa table CAM.

Au départ, les tables sont vides.

Tables CAM vides
A la sortie de la carte réseau de PC1, la trame contient :
Exemples adresses MAC
Quand la trame arrive sur le port E0 de SW1, celui-ci :
  • lit l’adresse MAC source et l’insère dans sa table comme indiqué en figure 4. Le switch SW1 sait désormais que pour joindre la machine PC1 dont la carte réseau a l’adresse MAC 00:1B:44:11:3A:B7, il doit commuter les trames vers l’interface (port) E0. Il met donc en relation le port E0 et l’adresse MAC 00:1B:44:11:3A:B7 de la machine PC1 dans sa table CAM (Voir table CAM du switch SW1 de la figure 4).
  • lit ensuite l’adresse MAC de la machine destination (00:1B:44:11:3A:B9) et la compare à sa table mais comme la table est encore vide, il diffuse la trame sur tous ses ports actifs exceptés le port de réception E0.
  • lit l’adresse MAC source et l’insère dans sa table comme indiqué en figure 4. Le switch SW2 sait désormais que pour joindre la machine dont la carte réseau a l’adresse MAC 00:1B:44:11:3A:B7, il doit commuter les trames vers l’interface (ou port) E2. Il met donc en relation le port E2 et l’adresse MAC 00:1B:44:11:3A:B7 de la machine PC1 dans sa table CAM (Voir table CAM du switch SW2 de la figure 4).
  • lit ensuite l’adresse MAC de la machine destination (00:1B:44:11:3A:B9) et la compare à sa table mais comme la case correspondante est encore vide, il diffuse la trame sur tous ses ports actifs exceptés le port de réception E2.
Quand la trame arrive sur le port E2 de SW2, celui-ci :
  • lit l’adresse MAC source et l’insère dans sa table comme indiqué en figure 4. Le switch SW2 sait désormais que pour joindre la machine dont la carte réseau a l’adresse MAC 00:1B:44:11:3A:B7, il doit commuter les trames vers l’interface (ou port) E2. Il met donc en relation le port E2 et l’adresse MAC 00:1B:44:11:3A:B7 de la machine PC1 dans sa table CAM (Voir table CAM du switch SW2 de la figure 4).
  • lit ensuite l’adresse MAC de la machine destination (00:1B:44:11:3A:B9) et la compare à sa table mais comme la case correspondante est encore vide, il diffuse la trame sur tous ses ports actifs exceptés le port de réception E2.
La table CAM se remplit

La trame est reçue par toutes les machines connectées (PC1, PC2, PC3, PC4) . PC1, PC2 et PC4 lisent l’adresse MAC de destination et voyant quelle est différente des leurs rejettent la trame. Seule la machine PC3, voyant que l’adresse MAC de destination est la sienne, accepte la trame et lit le reste du message.

Supposons que PC3 initie une trame à destination de PC1.
A la sortie de la carte réseau de PC3, la trame contient :
  • Adresse MAC destination = 00:1B:44:11:3A:B7
  • Adresse MAC source         = 00:1B:44:11:3A:B9
Quand la trame arrive sur le port E0 de SW2, celui-ci :
  • lit l’adresse MAC source et l’insère dans sa table comme indiqué en figure 5. Le switch SW2 sait désormais que pour joindre la machine dont la carte réseau a l’adresse MAC 00:1B:44:11:3A:B9, il doit commuter les trames vers l’interface (port) E0.
  • lit ensuite l’adresse MAC de la machine destination (00:1B:44:11:3A:B7) et la compare à sa table mais comme la case correspondante est encore vide, il diffuse la trame sur tous les ports exceptés le port de réception E0.

La trame est reçue par toutes les machines connectées (PC1, PC2, PC3, PC4). PC2, PC3et PC4 lisent l’adresse MAC de destination et voyant quelle est différente des leurs rejettent la trame. Seule la machine PC1, voyant que l’adresse MAC de destination est la sienne, accepte la trame et lit le reste du message.

Les tables CAM se remplissent

De la même façon, les autres cases de chacune des tables CAM se remplissent au fur et à mesure que les machines communiquent. Une fois les tables remplies doivent être selon la figure 6.

Les tables CAM sont maintenant remplies

Maintenant que la table CAM est remplie, le fonctionnement devient simple. Par exemple, si le switch SW1 reçoit une trame destinée à la machine PC4  (Adresse MAC= 00:1B:44:11:3A:BA), il consulte sa table CAM et voit qu’il doit la commuter sur son port E2. Lorsque la trame arrive au port E2 du switch SW2, ce dernier consulte sa table CAM et voit qu’il doit la commuter sur son port E1.

Nous voyons qu’une fois la table CAM remplie, le switch n’envoie plus la trame à tous ses ports actifs mais commute la trame uniquement vers le port de destination.

Mise à jour de la table CAM

Nous venons de voir que :

  • La principale fonction du switch consiste à aiguiller les trames vers le port associé à l’adresse MAC de destination comme indiqué dans sa table CAM.
  • Lorsque le switch ne trouve pas l’adresse MAC destination dans sa table d’adresses MAC, il envoie la trame sur tous ses ports actifs, à l’exception de celui d’où provient la trame. C’est ce que l’on appelle généralement  unicast flooding. Il est à noter que l’unicast flooding n’est pas un broadcast, car l’adresse de destination dans la trame  est l’adresse MAC de la machine à laquelle est destinée  la trame et non l’adresse de broadcast FF.FF.FF.FF.FF.FF.
  • La table CAM du switch se construit de façon dynamique : Le switch apprend, au fur et à mesure que les trames passent, que telle machine est branchée à tel port.

Notons cependant  que la table CAM, en y ajoutant des informations en permanence, ne va pas cesser de grandir. Pour éviter cela, on fait appel à un mécanisme appelé TTL en rajoutant à la table CAM une autre colonne TTL comme indiqué dans la figure 7.

Exemple pour deux ports (ou deux interfaces).
Table CAM avec colonne TTL
Le TTL de la table CAM

Le TTL (Time To Live) est une durée de vie. En attribuant une durée de vie a une donnée de la table CAM, on considère qu’au-delà de cette durée, cette donnée n’est plus valable et est simplement enlevée de la table CAM. Le TTL vaut entre 0 et 255 secondes.

Quand une machine A envoie un paquet sur le port ou elle est connectée, la table CAM associe l’adresse MAC de cette machine à ce port et met le TTL à la valeur choisie (120 par exemple) et le décompteur se met en marche : 120-119-118-117-116…etc.

Si le décompteur arrive à zéro et la machine A ne s’est pas manifestée de nouveau, les données relatives a la machine A sont enlevées de la table CAM. Par contre, si la machine A se manifeste de nouveau avant que le décompteur n’arrive à zéro, la valeur du TTL est remise à la valeur max choisie (Dans notre exemple 120) et le décompteur se remet en marche de nouveau.

Reprenons maintenant le cas de la table CAM du switch SW1 de la topologie réseau 1 précédente et considérons un TTL de 120 s.

Comment est-ce que nous pouvons lire la table CAM de la figure 8 ?
Exemple table CAM avec valeurs TTL

Rappelons que la topologie réseau 1 donne les adresses MAC des machines PC1 et PC2 connectées au switch SW1 comme indiqué dans le tableau de la figure 9 :

A la lecture de la table CAM de la figure 8, nous voyons que le switch SW1 a des informations plus ou moins récentes, car les TTLs sont plus ou moins élevés.

Prenons le cas des deux premières lignes correspondantes aux deux machines PC1 et PC2 (Figure 10).

Exemple de TTL

Dans 81s, si les deux machines PC1 et PC2 n’ont pas parlé, la table CAM sera comme indiqué dans la figure 11 :

Mise à jour TTL

Si maintenant la machine PC1 envoie une trame, le switch sait que l’information (La machine PC1 est connectée au port E0) est une information récente et donc le TTL se remet à sa valeur max, soit, dans notre exemple, la valeur 120 (Figure 12).

Table CAM avec TTL mis à jour

Nous voyons que chaque ligne de la table CAM du switch se remplit ou se met à jour après chaque réception d’une trame. Une ligne qui n’aura pas reçu de trame depuis un temps supérieur à la valeur max fixée pour le TTL, est enlevée de la table CAM du switch.

Il est à noter aussi que :
  • La table CAM a une taille finie dépendant du type d’équipement et du constructeur. Cette taille peut atteindre le millier d’entrées.
  • La table CAM est effacée à chaque reboot du switch