Comment un commutateur apprend-il les adresses Mac ?

1. Introduction

Comment un commutateur apprend-il les adresses MAC ? Il s’agit d’un concept fondamental pour tous ceux qui se préparent à l’examen CCNA. Un commutateur est décrit comme un appareil intelligent, mais que se passe-t-il exactement lorsqu’il reçoit une trame ?

Découvrons-le ensemble à l’aide d’un exemple simple.

Diagramme topologique montrant comment un commutateur apprend les adresses MAC des appareils connectés

Dans le schéma ci-dessus, trois appareils sont connectés à un commutateur appelé SW1.
Chaque appareil possède une adresse MAC simplifiée :

  • PC1 → Adresse MAC AAA
  • PC2 → Adresse MAC BBB
  • PC3 → Adresse MAC CCC

Pour comprendre comment le commutateur apprend les adresses MAC, supposons que PC1 veuille envoyer une trame à PC3.

Diagramme montrant comment un commutateur apprend les adresses MAC en lisant le MAC source d'une trame Ethernet.

PC1 créera une trame Ethernet avec :

  • Source MAC: AAA (sa propre adresse)
  • Destination MAC: CCC (l’adresse MAC du PC3)

Lorsque cette trame arrive au commutateur sur le port G0/1, le commutateur lit l’en-tête Ethernet et constate que le MAC AAA a été reçu sur l’interface G0/1.

Le commutateur apprend l'adresse MAC AAA sur le port G0/1 et met à jour sa table d'adresses MAC.

À ce stade, le commutateur vérifie sa table d’adresses MAC.

Cette table stocke les adresses MAC et les ports auxquels elles sont associées.

Ce tableau est en fait une liste qui indique au commutateur :

« Cette adresse MAC est connectée à ce port.

Mais pour l’instant, la table est vide et l’interrupteur n’a encore rien appris !

Que fait-il donc ?

Il lit la trame Ethernet envoyée par PC1 et regarde l’adresse MAC source: c’est AAA.
Et comme c’est la première fois que le switch voit cette adresse MAC, il dit :

« Ok, je ne connais pas encore celui-là… mais je viens de le recevoir sur G0/1, alors je m’en souviendrai ! ».

Le commutateur ajoute donc une entrée à sa table :

Adresse MAC AAA → G0/1

C’est exactement de cette manière qu’un commutateur apprend les adresses MAC: en associant le MAC source des trames entrantes au port sur lequel elles arrivent.

De cette façon, le commutateur peut apprendre l’adresse mac, il recherche l’adresse mac source dans l’en-tête Ethernet et vérifie si le commutateur connaît déjà son adresse.

Le commutateur n’a pas besoin qu’on lui dise où se trouvent les appareils, il le découvre en regardant l’adresse MAC source. C’est la clé pour comprendre comment un commutateur apprend les adresses MAC de manière dynamique.

Comment un commutateur apprend-il les adresses MAC en enregistrant le MAC source dans la table d'adresses MAC ?

Mais le commutateur doit maintenant envoyer la trame à sa destination et c’est une autre histoire.

Tout d’abord, le commutateur consulte à nouveau sa table d’adresses MAC, cette fois à la recherche de l’adresse MAC de destination, qui est CCC (c’est-à-dire PC3).

Et c’est là que le bât blesse :

Le commutateur ne sait pas encore où se trouve CCC.
Il n’y a pas d’entrée pour lui dans la table.

Que fait-il donc ?

Eh bien, lorsqu’un commutateur ne sait pas où envoyer une trame, il ne suppose pas qu’il inonde la trame.

Cela signifie que le commutateur envoie la trame hors de tous les autres ports, à l’exception de celui d’où elle provient.

À ce moment-là, l’interrupteur dit en fait :

« Je ne sais pas où se trouve le CCC, alors je vais demander à tout le monde. Voyons qui répondra. »

Comment un commutateur apprend-il les adresses MAC lorsque la destination est inconnue en inondant la trame sur tous les ports ?

À ce stade, PC2 et PC3 reçoivent tous deux la trame Ethernet.

PC2 regarde la trame, vérifie l’adresse MAC de destination et réfléchit :

« Hmm… c’est pour CCC, mais mon adresse MAC est BBB, ce n’est pas pour moi. »
PC2 laisse donc tomber la trame.

PC3 répondra parce qu’il voit que l’adresse MAC de destination de la trame correspond à la sienne.

Lorsque le PC3 répondra, la nouvelle trame Ethernet aura :

  • Source MAC: CCC
  • MAC de destination: AAA
Le commutateur reçoit une nouvelle trame Ethernet avec l'adresse MAC source CCC sur le port G0/3 et met à jour sa table MAC.

Le commutateur reçoit cette nouvelle trame sur G0/3.

Il examine l’adresse MAC source, qui est CCC, et réfléchit :

« D’accord, je ne connais pas encore ce MAC… mais je viens de l’obtenir sur G0/3, laissez-moi l’enregistrer dans ma table d’adresses MAC ».

Le commutateur ajoute une nouvelle entrée à sa table d’adresses MAC :

Adresse MAC CCC → G0/3

La table des adresses MAC est mise à jour avec CCC sur G0/3 car le commutateur continue d'apprendre les adresses MAC de manière dynamique.

Maintenant, le commutateur sait :

  • PC1 (AAA) est sur Gi0/1
  • PC3 (CCC) est sur Gi0/3

Ainsi, lorsque le commutateur voit que l’adresse MAC de destination est AAA, il vérifie sa table et constate que AAA est lié à G0/1.

La trame Ethernet est transmise au PC1 via ce port.

Comment un commutateur apprend les adresses MAC et transmet les trames à l'aide de sa table d'adresses MAC

💡 Ce qu’il faut retenir, c’est que le commutateur se souviendra de l’adresse MAC source et l’associera au port sur lequel il a reçu la trame Ethernet.

Voyons maintenant quelques commandes Cisco CLI pour voir comment le commutateur construit sa table d’adresses MAC.

2. Observation de l’apprentissage MAC via Cisco CLI

Dans cet exemple, nous utiliserons des adresses MAC réelles pour PC1, PC2 et PC3.

Diagramme topologique utilisé pour observer comment un commutateur apprend les adresses MAC via Cisco CLI

Tout d’abord, nous devons nous assurer que toutes les interfaces sont opérationnelles.

Nous pouvons le vérifier à l’aide de cette commande :

SW1#show interfaces status

Port      Name               Status       Vlan       Duplex  Speed Type 
Gi0/1                        connected    1            auto   auto unknown
Gi0/2                        connected    1            auto   auto unknown
Gi0/3                        connected    1            auto   auto unknown

Bien, toutes les interfaces sont en place !

Jetons ensuite un coup d’œil à la table d’adresses MAC actuelle :

SW1# show mac address-table dynamic
Vlan    Mac Address       Type        Ports
----    -----------       --------    -----

Comme vous pouvez le constater, la table des adresses MAC est vide.

Aucun trafic n’a encore été observé, le commutateur n’a donc rien appris.

Passons maintenant au processus d’apprentissage de l’adresse MAC à l’aide de la CLI.

Depuis PC1, j’essaie d’envoyer un ping à PC3.
Cela crée une trame Ethernet avec :

  • Source MAC : PC1 MAC
  • Destination MAC : PC3 MAC

Comme vous le verrez, le commutateur est sur le point d’apprendre l’adresse MAC de PC1 à partir de cette première trame.

Le commutateur apprend l'adresse MAC de PC1 sur G0/1 dans le processus d'apprentissage MAC.

Nous pouvons maintenant vérifier sur le CLI que le commutateur a appris l’adresse MAC de PC1 sur G0/1 en utilisant la commande suivante

SW1# show mac address-table dynamic 
          Mac Address Table
-------------------------------------------

Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
   1    0011.22aa.33bb    DYNAMIC     Gi0/1
Total Mac Addresses for this criterion: 1

Ici, l’adresse MAC de PC1 est apprise 0011.22aa.33bb sur l’interface G0/1.

À ce stade, le commutateur ne sait toujours pas où se trouve (PC3 MAC), il inonde la trame de tous les ports sauf celui d’où elle provient.

Comment un commutateur inonde une trame pour apprendre une adresse MAC inconnue dans une communication Ethernet.

PC3 reçoit la trame et renvoie une réponse.
Cette réponse permettra au commutateur d’apprendre également l’adresse MAC de PC3.

Comment un commutateur apprend les adresses MAC à partir des trames de réponse dans la communication Ethernet

Vérifions la mise à jour de la table des adresses MAC :

SW1# show mac address-table dynamic  
          Mac Address Table
-------------------------------------------

Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
   1    0011.22aa.33bb    DYNAMIC     Gi0/1
   1    0077.88ee.99ff    DYNAMIC     Gi0/3
Total Mac Addresses for this criterion: 2

Comme vous pouvez le voir, le commutateur a maintenant appris l’adresse mac de PC3 qui est 0077.88ee.99ff.

Le commutateur pourra désormais transmettre la réponse directement à PC1 en utilisant l’interface G0/1.

Le commutateur transmet une trame d'adresse MAC apprise à PC1 sur la base de la table MAC.

Gardez à l’esprit :
Sur un réseau de production, vous ne pourrez pas voir les adresses MAC apprises une par une comme ceci.

Comme l’échange de ping est très rapide, le commutateur apprend les deux adresses presque instantanément.

Le point essentiel à retenir sur la manière dont un commutateur apprend les adresses MAC est que les commutateurs sont des dispositifs intelligents qui se souviennent de l’adresse MAC source de la trame reçue sur une interface.

3. Comprendre le vieillissement des MAC et la gestion des tables

Le commutateur ne conserve pas les adresses MAC pour toujours dans sa table d’adresses MAC.

Chaque adresse MAC apprise est mémorisée pendant 300 secondes (soit 5 minutes) par défaut.
C’est ce que nous appelons le temps de vieillissement.

Vous pouvez le vérifier à l’aide de la commande suivante :

SW1# show mac address-table aging-time 
Global Aging Time:  300
Vlan    Aging Time
----    ----------

⏱️ Par défaut, le temps de vieillissement est fixé à 300 secondes, mais vous pouvez le modifier si nécessaire en fonction de votre environnement réseau.

4. Filtrage de la table des adresses MAC

Imaginez maintenant que vous ayez une table d’adresses MAC avec plus de 100 entrées d’adresses MAC,
. Vous voulez seulement vérifier où se trouve une adresse MAC spécifique, par exemple : 0077.88ee.99ff.

Vous n’avez pas besoin de tout faire défiler, vous pouvez utiliser des filtres pour réduire votre recherche.

Pour filtrer par adresse MAC, vous pouvez utiliser :

SW1# show mac address-table dynamic address 0077.88ee.99ff 
          Mac Address Table
-------------------------------------------

Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
   1    0077.88ee.99ff    DYNAMIC     Gi0/3
Total Mac Addresses for this criterion: 1

Vous pouvez également filtrer directement par interface :

SW1# show mac address-table dynamic interface Gi0/1 
          Mac Address Table
-------------------------------------------

Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
   1    0011.22aa.33bb    DYNAMIC     Gi0/1
Total Mac Addresses for this criterion: 1

Savoir comment un commutateur apprend les adresses MAC signifie également savoir comment les effacer pour le dépannage.

Cette commande permet de supprimer toutes les entrées MAC dynamiques de la table :

SW1# clear mac address-table dynamic 

Si vous exécutez à nouveau show mac address-table dynamic juste après,
vous verrez que la table est maintenant complètement vide :

SW1# show mac address-table dynamic 
          Mac Address Table
-------------------------------------------

Vlan    Mac Address       Type        Ports
----    -----------       --------    -----

5. Apprentissage de plusieurs adresses MAC sur un port

Maintenant que nous avons compris les bases de l’apprentissage des adresses MAC par interface par un commutateur, explorons un cas plus avancé : l’apprentissage de plusieurs MAC sur un seul port.

Jusqu’à présent, nous avons vu que le commutateur apprenait une adresse MAC par port !

Mais saviez-vous qu’un commutateur peut apprendre plusieurs adresses MAC sur le même port ?

Prenons un exemple simple.

Un commutateur apprend plusieurs adresses MAC sur un port par le biais d'une liaison montante vers un autre commutateur.

Imaginez que SW1 soit connecté à un autre commutateur comme SW2.

Examinons maintenant la table des adresses MAC de SW1 :

SW1# show mac address-table dynamic   
          Mac Address Table
-------------------------------------------

Vlan    Mac Address       Type        Ports
----    -----------       --------    -----  
   1    fa16.3e12.a1b2    DYNAMIC     Gi0/1   ← PC1  
   1    fa16.3e23.c3d4    DYNAMIC     Gi0/2   ← PC2  
   1    fa16.3e34.e5f6    DYNAMIC     Gi0/0   ← PC3  
   1    fa16.3e45.789a    DYNAMIC     Gi0/0   ← PC4  
Total Mac Addresses for this criterion: 4

Vous pouvez voir que deux adresses MAC ont été apprises sur la même interface : g0/3

C’est parce que PC3 et PC4 sont tous deux connectés à SW2 et que SW2 est connecté à SW1 sur g0/3.

Puisque SW1 peut atteindre PC3 et PC4 en utilisant G0/3, nous pouvons avoir plusieurs adresses mac apprises sur une interface.

Examinons maintenant la table des adresses MAC de SW2 dans la direction opposée :

SW2# show mac address-table dynamic     
          Mac Address Table
-------------------------------------------

Vlan    Mac Address       Type        Ports  
----    -----------       --------    -----  
   1    fa16.3e12.a1b2    DYNAMIC     Gi0/0   ← PC1  
   1    fa16.3e23.c3d4    DYNAMIC     Gi0/0   ← PC2  
   1    fa16.3e34.e5f6    DYNAMIC     Gi0/1   ← PC3  
   1    fa16.3e45.789a    DYNAMIC     Gi0/2   ← PC4  
Total Mac Addresses for this criterion: 4

Même idée ici !

SW2 voit à la fois PC1 et PC2 derrière Gi0/3 parce que SW2 est connecté à SW1 à travers ce port.

« Pour atteindre PC1 ou PC2, je dois faire sortir la trame de Gi0/3.

6. Résumé

Maintenant que vous avez vu comment un commutateur apprend les adresses MAC, mettons en lumière quelques idées fausses courantes.

Un petit récapitulatif des choses les plus importantes à retenir pour votre CCNA ! 🙂

Erreur couranteCe qu’il faut vraiment savoir
Le commutateur apprend l’adresse MAC de destination🚫 Faux – il n’apprend que l’adresse MAC de la source
Un port ne peut avoir qu’une seule adresse MAC🚫 Faux – un seul port peut apprendre plusieurs MAC, en particulier les liaisons montantes.
La table d’adresses MAC conserve des entrées pour toujours🚫 Faux – les entrées expirent après le délai de vieillissement (par défaut : 300 secondes)
L’inondation signifie que le commutateur est cassé ou mal configuré.🚫 Faux – l’inondation est normale lorsque le MAC de destination est inconnu.