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.
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:
- 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:
- Aprende: apunta la MAC de origen de cada trama junto al puerto por el que entró.
- Reenvía: busca la MAC de destino en su tabla y manda la trama solo por ese puerto.
- 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á.
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:
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.
¿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).
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.
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í:
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:
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.
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.
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.
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.
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”.
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:
- Los LEDs de actividad. Si parpadean todos como locos a la vez, en toda la planta, piensa en un bucle.
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.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.show vlan briefeshow interfaces trunk: qué VLAN hay, qué puertos tiene cada una y qué VLAN deja pasar cada trunk.show logging: lo que el switch ha ido anotando (bucles, BPDU Guard, violaciones de seguridad).- 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.
- 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.