Saltar al contenido
sudoquest@root
Modelo OSI

Capa 2 · Enlace de datos

Tramas y direcciones MAC, qué hace un switch, VLAN y trunks, bucles y STP, y cómo se diagnostica una red local que no se comporta.

16 min de lectura

La capa 1 mueve bits; la capa 2 les da forma y los entrega dentro de la misma red local. Agrupa los bits en tramas, cada una con la dirección de quién la manda y de a quién va, y decide por qué cable tiene que salir para llegar. El protagonista de esta capa es el switch.

Aquí las averías ya no son un cable roto: el cable está perfecto y aun así nada funciona. Un puesto metido en la red de otro departamento, un enlace entre switches que no deja pasar a un grupo entero, un bucle que tumba la planta en segundos. Para encontrarlas hay que preguntarle al switch, y eso se hace con su consola.

Las siete capas del modelo OSI, con la capa 2 resaltada7Aplicacióndatos6Presentacióndatos5Sesióndatos4Transportesegmentos3Redpaquetes2Enlace de datostramas1Físicabits
La capa de enlace, justo encima de la física: trabaja con tramas y direcciones MAC dentro de la red local.

Tramas y direcciones MAC

Lo que viaja por la capa 2 es la trama: los datos de las capas de arriba, envueltos con un encabezado y un cierre. En Ethernet, que es lo que hay en casi cualquier red cableada, tiene esta forma:

Una trama Ethernet: MAC de destino (6 bytes), MAC de origen (6), la etiqueta 802.1Q (4 bytes, solo en los trunks), el tipo (2), los datos (de 46 a 1500 bytes) y el FCS (4), la comprobación de errores. MAC destino6 BMAC origen6 B802.1Q4 BTipo2 BDatos46–1500 BFCS4 Bsolo en trunkslo que mira el switchpara decidir por dónde salesi no cuadra:error CRC
Una trama Ethernet. La etiqueta 802.1Q solo aparece en los enlaces entre switches (trunks); el FCS permite detectar que la trama llegó dañada.
  • MAC de destino y de origen: a quién va y quién la manda.
  • Tipo: qué lleva dentro (por ejemplo, un paquete IP).
  • Datos: entre 46 y 1500 bytes.
  • FCS: un número calculado a partir de todo lo anterior. El que recibe lo vuelve a calcular; si no coincide, la trama llegó dañada y se tira. Esos son los errores CRC que aparecían en la consola de la capa 1: la capa 2 es la que los detecta, pero la causa suele estar en la 1.

Una dirección MAC tiene 48 bits y se escribe en hexadecimal, en seis bloques (3c:52:82:1a:9f:04) o, en los switches Cisco, en tres (3c52.821a.9f04). Viene grabada en cada tarjeta de red. La primera mitad identifica al fabricante; la segunda, a la tarjeta. Hay una MAC especial, ffff.ffff.ffff, la de difusión (broadcast): una trama dirigida a ella es para todos.

Qué hace un switch: aprender, reenviar, inundar

Un switch tiene una tabla MAC: por cada dirección que conoce, el puerto por el que se llega a ella. La rellena solo, mirando las tramas que le entran:

  1. Aprende: apunta la MAC de origen de cada trama junto al puerto por el que entró.
  2. Reenvía: busca la MAC de destino en su tabla y manda la trama solo por ese puerto.
  3. Inunda: si no conoce el destino (o es una difusión), la manda por todos los demás puertos. Quien no sea el destinatario la ignora; el que sí, responde, y el switch aprende dónde está.
Paso 1: A envía una trama a C. El switch apunta que A está en el puerto 1 y, como no sabe dónde está C, la inunda por los puertos 2 y 3.1 · A envía a Cswitch1A2B3Cno sabe dónde está C: inundatabla MACA → puerto 1 (nueva)Paso 2: C responde a A. El switch apunta que C está en el puerto 3 y, como ya sabe dónde está A, manda la respuesta solo por el puerto 1.2 · C responde a Aswitch1A2B3CA ya lo sabe: solo por el 1tabla MACA → puerto 1C → puerto 3 (nueva)Paso 3: A vuelve a enviar a C. El switch ya conoce a los dos: la trama sale solo por el puerto 3 y B ni se entera.3 · A envía a C otra vezswitch1A2B3Cya no inunda: B ni se enteratabla MACA → puerto 1C → puerto 3
Tres tramas y una tabla que se rellena sola. En cuanto el switch sabe dónde está cada uno, deja de inundar.

Las entradas caducan si no se ven en un tiempo (unos 5 minutos): así, si un equipo cambia de puerto, el switch acaba aprendiendo el nuevo. Así se consulta la tabla en un switch Cisco:

La tabla MAC: cada dirección, su VLAN y su puerto
SW-CORE# show mac address-table
          Mac Address Table
-------------------------------------------
Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
10    3c52.821a.9f04    DYNAMIC     Gi0/1
10    a4bb.6d02.113c    DYNAMIC     Gi0/2
20    0050.56b7.4e21    DYNAMIC     Gi0/5
30    00e0.4c3a.77d2    DYNAMIC     Gi0/24
Total Mac Addresses for this criterion: 4

Esa última línea dice algo útil: la MAC 00e0.4c3a.77d2 se ve por Gi0/24, que no es un puesto sino el enlace hacia otro switch. El equipo está “detrás” de ese puerto. Seguir una MAC de switch en switch es la forma de encontrar dónde está conectado algo.

Dominios de colisión y de difusión

Dos ideas que explican casi todo lo demás:

  • Dominio de colisión: los equipos que pueden “hablar a la vez” y pisarse. En un hub (capa 1) es todo el hub. En un switch, cada puerto es su propio dominio; y con el enlace en full duplex (lo normal hoy) ni siquiera hay colisiones.
  • Dominio de difusión: hasta dónde llega una trama de difusión. Un switch la inunda por todos sus puertos, así que todo el switch es un solo dominio de difusión. Solo un router (capa 3) o una VLAN lo parte.
Un hub con cuatro equipos: todo es un solo dominio de colisión y un solo dominio de difusión.Hubhub1 de colisión · 1 de difusiónUn switch con cuatro equipos: cada puerto es su propio dominio de colisión, pero todo sigue siendo un solo dominio de difusión.Switchswitch4 de colisión · 1 de difusiónUn switch con cuatro equipos en dos VLAN: siguen siendo cuatro dominios de colisión, y hay dos de difusión, uno por VLAN.Switch con dos VLANVLAN 10VLAN 20switch4 de colisión · 2 de difusión
El hub lo comparte todo. El switch separa las colisiones, pero no las difusiones. Las VLAN sí parten la difusión.

¿Por qué importa la difusión? Porque muchos protocolos la usan a diario (ARP, DHCP…), y cuantos más equipos compartan dominio, más ruido recibe cada uno. Y porque todo lo que está en el mismo dominio se ve entre sí: para separar departamentos no basta con el switch.

VLAN: varias redes en el mismo switch

Una VLAN (red local virtual) divide un switch, o varios, en redes separadas, como si fueran switches distintos. Cada VLAN es su propio dominio de difusión: los equipos de Ventas no reciben las difusiones de Contabilidad ni pueden hablar con ellos directamente. Para pasar de una VLAN a otra hace falta un router o un switch de capa 3.

Cada puerto de un switch es de uno de dos tipos:

  • Acceso (access): pertenece a una VLAN. Es donde se conectan los ordenadores, que no saben nada de VLAN: las tramas van sin etiqueta.
  • Trunk: lleva varias VLAN a la vez. Es el enlace entre switches. Para que el otro lado sepa de qué VLAN es cada trama, se le añade la etiqueta 802.1Q (4 bytes, con el número de VLAN).
Dos switches unidos por un trunk. Cada uno tiene tres equipos, uno en cada VLAN: 10 (Administración), 20 (Ventas) y 30 (Contabilidad). Por los puertos de acceso las tramas van sin etiqueta; por el trunk, cada trama lleva la etiqueta de su VLAN. trunk102030cada trama llevala etiqueta de su VLANswitch A102030acceso: una VLAN, sin etiquetaswitch B102030acceso: una VLAN, sin etiqueta10 · Administración20 · Ventas30 · Contabilidad
Dos switches y tres VLAN. Por el trunk viaja todo, y cada trama lleva su etiqueta; por los puertos de acceso, sin etiqueta.
Las VLAN y qué puertos de acceso tiene cada una
SW-CORE# show vlan brief
VLAN Name                             Status    Ports
---- -------------------------------- --------- ------------------------------
1    default                          active    Gi0/10, Gi0/11
10   ADMINISTRACION                   active    Gi0/1, Gi0/2, Gi0/3
20   VENTAS                           active    Gi0/4, Gi0/5
30   CONTABILIDAD                     active    Gi0/6, Gi0/7, Gi0/8

Que un puerto sea de acceso o trunk lo dice su modo: switchport mode access o switchport mode trunk. Si el puerto que une dos switches se queda en acceso, por él solo pasa una VLAN.

Un trunk no tiene por qué dejar pasar todas las VLAN: tiene una lista de VLAN permitidas, y lo que no está en la lista no cruza.

Un trunk que solo deja pasar la 10 y la 20
SW-CORE# show interfaces trunk
Port        Mode         Encapsulation  Status        Native vlan
Gi0/24      on           802.1q         trunking      1

Port        Vlans allowed on trunk
Gi0/24      10,20

Port        Vlans allowed and active in management domain
Gi0/24      10,20

Si en la planta de arriba hay gente de Contabilidad (VLAN 30), con ese trunk están aislados: su switch recibe sus tramas, pero no las puede mandar hacia abajo. Se configura así:

Añadir la VLAN 30 a la lista del trunk
SW-CORE(config-if)# switchport trunk allowed vlan add 30

Y un puerto de acceso se pone en su VLAN así, desde la configuración de ese puerto:

Pasar el puerto Gi0/5 a la VLAN 20
SW-P1(config)# interface GigabitEthernet0/5
SW-P1(config-if)# switchport mode access
SW-P1(config-if)# switchport access vlan 20

Bucles, tormentas y STP

Las tramas no tienen “fecha de caducidad” (los paquetes IP sí: el TTL). Si hay dos caminos entre dos puntos de la red, una difusión sale por uno, vuelve por el otro, el switch la inunda otra vez… y así sin fin, multiplicándose en cada vuelta. Es una tormenta de difusión: en segundos los enlaces se saturan, los switches no dan abasto y la red se cae entera.

Tener enlaces de reserva, sin embargo, es buena idea. Para eso existe STP (Spanning Tree Protocol, y su versión rápida, RSTP): los switches se ponen de acuerdo, intercambiando unos mensajes llamados BPDU, y bloquean los enlaces que sobran para que quede un solo camino. Si el principal cae, el bloqueado se activa.

Sin STP: dos switches unidos por dos cables forman un bucle. Una difusión da vueltas sin fin y se multiplica: una tormenta de difusión. Sin STPswitch Aswitch Bla difusión da vueltasy se multiplica: tormenta Con STP: uno de los dos enlaces queda bloqueado. Hay un solo camino activo y el otro queda de reserva, por si el primero cae. Con STPswitch Aswitch Bbloqueadoun solo camino activo;el otro, de reserva BPDU Guard: un switchito bajo una mesa, enchufado a dos tomas de la pared (puertos 5 y 7 del switch), cierra un bucle. El puerto de usuario 7 se apaga solo y queda en err-disabled. BPDU Guardswitchp5p7switchitoerr-disabledbajo una mesa, enchufadoa dos tomas: bucle. Elpuerto de usuario se apaga
Sin STP, un bucle es una tormenta. Con STP, el enlace que sobra queda bloqueado. Y en los puertos de usuario, BPDU Guard apaga el puerto si alguien cierra un bucle.

El caso más típico no es un fallo de diseño: es alguien que enchufa un switch pequeño bajo su mesa con dos cables a dos tomas de la pared, o un cable que va de una toma a otra. Para eso, en los puertos donde solo debería haber un ordenador (los de usuario) se activan dos cosas:

  • PortFast: el puerto se pone en marcha al instante, sin la espera de unos 30 segundos que hace STP (tiene sentido: ahí no hay switches).
  • BPDU Guard: si por ese puerto llega un BPDU (señal de que detrás hay un switch o un bucle), el puerto se apaga solo y queda en estado err-disabled. Un switchito sin gestión no manda BPDU propios, pero sí deja pasar los del switch: si cierra un bucle, el switch ve volver sus propios BPDU, y BPDU Guard corta.
Protección en todos los puertos de usuario
SW-P1(config)# interface range GigabitEthernet0/1 - 20
SW-P1(config-if-range)# spanning-tree portfast
SW-P1(config-if-range)# spanning-tree bpduguard enable

También se puede activar para todos los puertos con PortFast de una vez, con spanning-tree portfast default y spanning-tree portfast bpduguard default desde la configuración general.

Cuando hay un bucle, el switch lo cuenta en su registro (show logging): la misma MAC aparece una y otra vez por dos puertos distintos, porque la trama llega por los dos caminos.

Un bucle, y BPDU Guard cortándolo
SW-P1# show logging
%SW_MATM-4-MACFLAP_NOTIF: Host 3c52.821a.9f04 in vlan 20 is flapping between port Gi0/4 and port Gi0/12
%SW_MATM-4-MACFLAP_NOTIF: Host 3c52.821a.9f04 in vlan 20 is flapping between port Gi0/12 and port Gi0/4
%SPANTREE-2-BLOCK_BPDUGUARD: Received BPDU on port Gi0/12 with BPDU Guard enabled. Disabling port.
%PM-4-ERR_DISABLE: bpduguard error detected on Gi0/12, putting Gi0/12 in err-disable state

Dúplex: hablar por turnos o a la vez

Un enlace en half duplex funciona como un walkie-talkie: habla uno y luego el otro. En full duplex, los dos a la vez, sin colisiones. Hoy todo va en full, y los dos extremos lo acuerdan solos (autonegociación).

El problema aparece cuando un extremo se fuerza a mano (por ejemplo, a 100 Mb/s full) y el otro se deja en automático: el automático no recibe respuesta a la negociación y se pone, por norma, en half. El enlace “funciona”, pero mal: el lado en half ve colisiones tardías (late collisions) y el lado en full, errores CRC y runts (tramas cortadas). Va lento, sobre todo con archivos grandes.

Un puerto forzado a 100/full: el ordenador de enfrente, en automático, habrá caído a half
SW-P1# show interfaces status
Port      Name         Status       Vlan  Duplex  Speed Type
Gi0/6     conta-1      connected    30    a-full a-1000 10/100/1000BaseTX
Gi0/7     conta-2      err-disabled 30      auto   auto 10/100/1000BaseTX
Gi0/8     conta-3      connected    30      full    100 10/100/1000BaseTX
Gi0/24    troncal      connected    trunk a-full a-1000 10/100/1000BaseTX

En esa salida la a- significa “negociado”. Gi0/8 está forzado (full, 100, sin la a-). La solución es la simple: dejar los dos lados en automático (duplex auto y speed auto) o forzar los dos igual.

Con el gigabit en cobre hay una excepción: a 1000 Mb/s la negociación es obligatoria, así que un puerto forzado a speed 1000 no levanta el enlace (se queda en notconnect). Y en la columna Status, disabled es un puerto apagado a mano (shutdown; se enciende con no shutdown), y err-disabled, uno que ha apagado el propio switch.

Seguridad de puertos

Para que nadie enchufe cualquier cosa en una toma, un switch puede limitar qué MAC se aceptan en cada puerto (port security): por ejemplo, solo una, la primera que vea, y recordarla (sticky). Si aparece otra, se produce una violación y, por defecto, el puerto se apaga (err-disabled).

Pasa mucho en la vida real con algo tan inocente como cambiar el ordenador de un puesto: el nuevo trae otra MAC, el puerto se bloquea, y el usuario “no tiene red”.

Un puerto bloqueado: la MAC que recordaba no es la del ordenador nuevo
SW-P1# show port-security interface GigabitEthernet0/7
Port Security              : Enabled
Port Status                : Secure-shutdown
Violation Mode             : Shutdown
Maximum MAC Addresses      : 1
Total MAC Addresses        : 1
Sticky MAC Addresses       : 1
Last Source Address:Vlan   : 00e0.4c68.0a11:30
Security Violation Count   : 1

Para arreglarlo hay que olvidar la MAC vieja y reactivar el puerto: en un Cisco, clear port-security sticky interface GigabitEthernet0/7 y luego, en el puerto, shutdown y no shutdown. Si solo se reactiva sin limpiar, el puerto vuelve a bloquearse en cuanto el ordenador nuevo manda la primera trama.

Cómo se diagnostica la capa 2

Con la capa 1 descartada (cables, LEDs de enlace), el orden de siempre, de lo general a lo concreto:

  1. Los LEDs de actividad. Si parpadean todos como locos a la vez, en toda la planta, piensa en un bucle.
  2. show interfaces status: de un vistazo, qué puertos están conectados, en qué VLAN, con qué dúplex y velocidad, y cuáles están en err-disabled.
  3. show mac address-table: dónde está cada equipo, en qué VLAN y por qué puerto. Una MAC que salta entre dos puertos es un bucle.
  4. show vlan brief e show interfaces trunk: qué VLAN hay, qué puertos tiene cada una y qué VLAN deja pasar cada trunk.
  5. show logging: lo que el switch ha ido anotando (bucles, BPDU Guard, violaciones de seguridad).
  6. Capturar tráfico: ver las tramas que pasan por un puerto, con sus etiquetas. Una tormenta se reconoce al instante; una VLAN que no cruza un trunk, también.
  7. Seguir el cable (sonda de tonos) cuando hay que encontrar físicamente algo: la toma a la que va un puerto, o el cable que cierra un bucle.