¿Cómo aprende un switch las direcciones Mac?

1. Introducción

¿Cómo aprende un switch las direcciones MAC? Es un concepto básico para cualquiera que se esté preparando para el examen CCNA. Un switch se describe como un dispositivo inteligente, pero ¿qué ocurre exactamente cuando recibe una trama?

Averigüémoslo juntos con un ejemplo sencillo.

Diagrama de topología que muestra cómo un conmutador aprende las direcciones MAC de los dispositivos conectados

En el diagrama anterior, tenemos tres dispositivos conectados a un switch llamado SW1.
Cada dispositivo tiene una dirección MAC simplificada:

  • PC1 → Dirección MAC AAA
  • PC2 → Dirección MAC BBB
  • PC3 → Dirección MAC CCC

Para entender cómo el switch aprende las direcciones MAC, digamos que PC1 quiere enviar una trama a PC3.

Diagrama que muestra cómo un conmutador aprende las direcciones MAC leyendo la MAC de origen de una trama Ethernet.

PC1 creará una trama Ethernet con:

  • MAC de origen: AAA (su propia dirección)
  • MAC de destino: CCC (la dirección MAC de PC3)

Cuando esta trama llega al switch por el puerto G0/1, el switch lee la cabecera Ethernet y ve que se ha recibido MAC AAA en la interfaz G0/1.

El switch aprende la dirección MAC AAA en el puerto G0/1 y actualiza su tabla de direcciones MAC

En este punto, el switch comprueba su tabla de direcciones MAC.

Esta tabla almacena las direcciones MAC y los puertos a los que están asociadas.

Esta tabla es básicamente una lista que le dice al conmutador:

“Esta dirección MAC está conectada a este puerto”.

Pero por ahora, la mesa está vacía y el interruptor aún no ha aprendido nada.

¿Y qué hace?

Lee la trama Ethernet enviada por PC1 y mira la dirección MAC de origen: es AAA.
Y como es la primera vez que el switch ve esta dirección MAC, dice:

“Vale, este aún no me lo sé… pero acabo de recibirlo en G0/1, ¡así que lo recordaré!”.

Entonces el switch añade una entrada a su tabla:

Dirección MAC AAA → G0/1

Así es exactamente como un switch aprende las direcciones MAC: asociando la MAC de origen de las tramas entrantes con el puerto al que llegan.

De esta manera el switch puede aprender la dirección mac, el switch busca la dirección mac de origen en la cabecera ethernet y verificará si el switch ya conoce su dirección.

El switch no necesita que le digan dónde están los dispositivos, lo averigua mirando la dirección MAC de origen, esa es la clave para entender cómo aprende un switch las direcciones MAC dinámicamente.

¿Cómo aprende un switch las direcciones MAC guardando la MAC de origen en la tabla de direcciones MAC?

Pero ahora el conmutador tiene que enviar la trama a su destino y eso es otra historia.

En primer lugar, el switch comprobará de nuevo su tabla de direcciones MAC, esta vez buscando la dirección MAC de destino, que es CCC (es decir, PC3).

Y aquí está el problema:

El switch aún no sabe dónde está CCC.
No hay ninguna entrada para él en la tabla.

¿Y qué hace?

Bueno, cuando un switch no sabe dónde enviar una trama, no adivina que inunda la trama.

Esto significa que el conmutador enviará la trama fuera de todos los demás puertos excepto del que procede.

En ese momento, el interruptor está diciendo básicamente:

“No sé dónde está CCC, así que preguntaré a todo el mundo. A ver quién contesta”.

¿Cómo aprende un switch las direcciones MAC cuando el destino es desconocido inundando la trama a todos los puertos?

En este punto, tanto PC2 como PC3 reciben la trama Ethernet.

PC2 mira la trama, comprueba la dirección MAC de destino y piensa:

“Hmm… esto es para CCC, pero mi dirección MAC es BBB, no es para mí.”
Así que PC2 simplemente tira la trama.

PC3 responderá porque ve que la dirección MAC de destino de la trama coincide con la suya.

Cuando PC3 responda, la nueva trama Ethernet tendrá:

  • Fuente MAC: CCC
  • MAC de destino: AAA
El switch recibe una nueva trama Ethernet con dirección MAC de origen CCC en el puerto G0/3 y actualiza su tabla MAC

El switch recibe esta nueva trama en G0/3.

Echa un vistazo a la dirección MAC de origen que es CCC y piensa:

“Muy bien, aún no conozco esta MAC… pero acabo de recibirla en G0/3 déjame guardarla en mi tabla de direcciones MAC”.

El switch añade una nueva entrada a su tabla de direcciones MAC:

Dirección MAC CCC → G0/3

Tabla de direcciones MAC actualizada con CCC en G0/3 ya que el switch continúa aprendiendo direcciones MAC dinámicamente.

Ahora el interruptor sabe :

  • PC1 (AAA) está en GIO/1
  • PC3 (CCC) está en Gi0/3

Así que cuando el switch ve que la dirección MAC de destino es AAA, comprueba su tabla, encuentra que AAA está enlazado a G0/1.

La trama Ethernet se reenvía a PC1 a través de ese puerto.

Cómo aprende un switch las direcciones MAC y reenvía las tramas utilizando su tabla de direcciones MAC.

💡 Lo que hay que recordar es que el switch recordará la dirección MAC de origen y la asociará con el puerto donde recibió la trama Ethernet.

Ahora vamos a echar un vistazo a algunos comandos de la CLI de Cisco para ver cómo el switch construye su tabla de direcciones MAC

2. Observación del aprendizaje MAC a través de la CLI de Cisco

En este ejemplo, utilizaremos direcciones MAC reales para PC1, PC2 y PC3.

Diagrama de topología utilizado para observar cómo un switch aprende direcciones MAC a través de la CLI de Cisco.

En primer lugar, debemos asegurarnos de que todas las interfaces están activas.

Podemos comprobarlo con este comando:

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, todas las interfaces están activas.

A continuación, echemos un vistazo a la tabla de direcciones MAC actual:

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

Como puede ver, la tabla de direcciones MAC está vacía.

Aún no se ha visto tráfico, por lo que el conmutador no ha aprendido nada.

Ahora vamos a repasar el proceso de aprendizaje de direcciones MAC usando la CLI.

Desde PC1, intento hacer ping a PC3.
Esto crea una trama Ethernet con:

  • Fuente MAC: PC1 MAC
  • MAC de destino: PC3 MAC

Como verás, el switch está a punto de aprender la dirección MAC de PC1 de esta primera trama.

Switch aprendiendo la dirección MAC de PC1 en G0/1 en proceso de aprendizaje MAC

Ahora podemos verificar en el CLI que el switch ha aprendido la dirección MAC de PC1 en G0/1 usando este comando a continuación

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

Aquí estamos, la dirección MAC de PC1 se aprende 0011.22aa.33bb en la interfaz G0/1.

En este punto el switch todavía no sabe dónde está (PC3 MAC), inunda la trama fuera de cada puerto excepto del que vino.

Cómo un switch inunda una trama para aprender una dirección MAC desconocida en una comunicación Ethernet

PC3 recibe la trama y devuelve una respuesta.
Esa respuesta permitirá al switch aprender también la dirección MAC de PC3.

Cómo aprende un switch las direcciones MAC de las tramas de respuesta en la comunicación Ethernet

Comprobemos la tabla de direcciones MAC actualizada:

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

Como puedes ver, el switch ha aprendido la dirección mac de PC3 que es 0077.88ee.99ff

El switch podrá ahora reenviar la respuesta directamente a PC1 utilizando la interfaz G0/1.

El conmutador reenvía una trama de dirección MAC aprendida a PC1 basándose en la tabla MAC

Ten en cuenta:
En una red de producción, no podrás ver las direcciones MAC que se aprenden una a una de esta manera.

Como el intercambio de ping se produce muy rápido, el switch aprende ambas direcciones casi al instante.

El punto clave que hay que recordar sobre cómo aprende un switch las direcciones MAC es que los switches son dispositivos inteligentes que recuerdan la dirección MAC de origen de la trama recibida en una interfaz.

3. Comprender el envejecimiento de MAC y la gestión de tablas

El switch no guarda las direcciones MAC para siempre en su tabla de direcciones mac.

Cada dirección MAC que aprende se recuerda durante 300 segundos (es decir, 5 minutos) por defecto.
Esto es lo que llamamos el Tiempo de Envejecimiento.

Puede comprobarlo con el siguiente comando:

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

⏱️ Por defecto, el tiempo de envejecimiento está fijado en 300 segundos, pero puedes cambiarlo si es necesario en función de tu entorno de red.

4. Filtrado de la tabla de direcciones MAC

Ahora imagina que tienes una tabla de direcciones MAC con más de 100 entradas de direcciones MAC,
Sólo quieres comprobar dónde se encuentra una dirección MAC específica, por ejemplo: 0077.88ee.99ff.

No es necesario desplazarse por todo lo que podemos utilizar filtros para reducirlo.

Para filtrar por dirección MAC, puede utilizar:

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

También puede filtrar directamente por interfaz:

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

Saber cómo aprende un switch las direcciones MAC también significa entender cómo borrarlas para solucionar problemas.

Puede eliminar todas las entradas MAC dinámicas de la tabla con este comando:

SW1# clear mac address-table dynamic 

Si vuelves a ejecutar show mac address-table dynamic justo después,
verás que la tabla está ahora completamente vacía:

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

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

5. Aprendizaje de múltiples direcciones MAC en un puerto

Ahora que entendemos lo básico de cómo un switch aprende direcciones MAC por interfaz, vamos a explorar un caso más avanzado: aprender múltiples MACs en un único puerto.

Hasta ahora, hemos visto que el switch aprende una dirección MAC por puerto.

Pero, ¿sabías que un switch puede aprender varias direcciones MAC en el mismo puerto?

Pongamos un ejemplo sencillo.

Switch aprende múltiples direcciones MAC en un puerto a través de uplink a otro switch

Imagina que SW1 está conectado a otro switch como SW2.

Ahora echemos un vistazo a la tabla de direcciones 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

Puede ver que se han aprendido dos direcciones MAC en la misma interfaz: g0/3

Esto se debe a que tanto PC3 como PC4 están conectados a SW2 y SW2 está conectado a SW1 en g0/3.

Como SW1 puede alcanzar PC3 y PC4 usando G0/3, podemos tener múltiples direcciones mac aprendidas en una interfaz.

Ahora veamos en la dirección opuesta la tabla de direcciones MAC de SW2:

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

La misma idea.

SW2 ve tanto PC1 como PC2 detrás de Gi0/3 porque SW2 está conectado a SW1 a través de ese puerto.

“Para llegar a PC1 o PC2, necesito reenviar la trama fuera de Gi0/3”.

6. Resumen

Ahora que ya has visto cómo aprende un switch las direcciones MAC, vamos a destacar algunos conceptos erróneos comunes.

¡Una rápida recapitulación de las cosas más importantes que debe recordar absolutamente para su CCNA ! 🙂

Error comúnLo que realmente necesita saber
El switch aprende la dirección MAC de destino🚫 Falso – sólo aprende la dirección MAC de origen
Un puerto sólo puede tener una dirección MAC🚫 Falso – un solo puerto puede aprender múltiples MACs, especialmente los enlaces ascendentes.
La tabla de direcciones MAC mantiene las entradas para siempre🚫 Falso – las entradas caducan después del tiempo de caducidad (por defecto: 300 segundos)
La inundación significa que el interruptor está roto o mal configurado🚫 Falso – la inundación es normal cuando la MAC de destino es desconocida