redzilla
Capa 2

El switch por dentro: MAC, VLANs y STP

El switch parece una caja tonta con luces, pero adentro pasa de todo: tablas MAC, etiquetas VLAN, un árbol que evita loops y enlaces que se suman. Abramos la caja.

≈ 14 min de lectura

Un lunes a las 8:30 me llamaron de un colegio: “se murió la red completa, seguro se quemó el switch”. El culpable era un cable de dos metros que alguien, con la mejor intención, enchufó entre dos salidas de pared “para que no quedara colgando”. Ese cable creó un loop, el loop una tormenta de broadcast, y la tormenta dejó sin clases a 800 alumnos. Para entender por qué dos metros de cobre pueden tumbar un edificio entero —y por qué casi nunca lo logran— hay que abrir el switch y mirar qué pasa adentro. Spoiler: no hay magia. Hay una tabla, unas etiquetas y un árbol.

Cómo aprende un switch (sin magia)

Piensa en el conserje de un edificio que no conoce a nadie el primer día. Cada vez que un residente le deja una carta para despachar, el conserje mira el remitente y anota: “la señora Pérez vive en el 402”. No pregunta, no adivina: aprende mirando de dónde vienen las cosas. Un switch hace exactamente eso con cada trama que entra: lee la MAC de origen y apunta en su tabla “esta MAC vive detrás de este puerto”.

Cuando llega una trama con destino conocido, la reenvía solo por el puerto donde vive esa MAC. ¿Y si el destino no está en la tabla? El conserje grita en el hall: la trama se inunda (flooding) por todos los puertos menos por el que entró. Quien responda quedará anotado, y la próxima vez el envío será directo. Los broadcast (destino ff:ff:ff:ff:ff:ff) se inundan siempre, por definición. Y como los residentes se mudan, las entradas de la tabla caducan: el aging por defecto es de 300 segundos sin ver tráfico de esa MAC.

sw-acceso-1 — show mac address-table
Vlan    Mac Address        Type      Ports
----    -----------        ----      -----
  10    b4:96:91:1a:2f:03  DYNAMIC   Gi1/0/07
  10    f4:39:09:55:c0:11  DYNAMIC   Gi1/0/12
  20    00:11:32:8b:44:9e  DYNAMIC   Gi1/0/24
Total Mac Addresses for this criterion: 3
Para ubicar físicamente un equipo perdido: busca su MAC en la tabla del switch y ya sabes el puerto exacto. Si solo tienes la MAC y no sabes qué es, el buscador de fabricante OUI te dice quién lo fabricó, y el kit de MAC te normaliza el formato cuando el switch la muestra con puntos y tu inventario con dos puntos.

La trama: un sobre con 20 bytes invisibles

El sobre que viaja por el cable tiene un formato fijo: MAC destino (6 bytes), MAC origen (6), EtherType (2, dice qué hay adentro: IPv4, IPv6, ARP…), el payload (46 a 1500 bytes) y el FCS (4 bytes de checksum al final). Mínimo legal: 64 bytes. Máximo clásico: 1518.

Pero el cable cobra más de lo que Wireshark te muestra. Antes de cada trama van 8 bytes de preámbulo + SFD (una claqueta que sincroniza los relojes) y después vienen 12 bytes de IFG, el silencio obligatorio entre tramas. Son 20 bytes por trama que ninguna captura enseña, pero que ocupan cable igual. Con tramas pequeñas, ese impuesto duele.

Trama Ethernet a escala con la etiqueta 802.1Q insertada entre MAC origen y EtherType, más el preámbulo y el IFG invisibles la etiqueta VLAN se inserta aquí (+4 B) 8 B 6 B 6 B 4 B 46–1500 B 4 B 12 B PREÁMBULO+SFD MAC DESTINO MAC ORIGEN 802.1Q ETHERTYPE 2 B PAYLOAD FCS IFG Preámbulo + IFG = 20 B extra por trama: no salen en Wireshark, pero ocupan cable.
La trama a escala (payload comprimido). Los campos punteados son los 20 B “invisibles”; la etiqueta 802.1Q se inserta dentro de la trama.

Esos 20 bytes explican el número más citado —y menos entendido— del switching: cuántas tramas por segundo aguanta un enlace. Hagamos la cuenta a 1 Gbps con tramas mínimas:

  1. La trama mínima legal mide 64 bytes: 6 (destino) + 6 (origen) + 2 (EtherType) + 46 (payload) + 4 (FCS).
  2. Súmale el impuesto invisible: 8 de preámbulo+SFD y 12 de IFG. En el cable ocupa 64 + 20 = 84 bytes.
  3. Pásalo a bits: 84 × 8 = 672 bits por trama.
  4. Divide la tasa de línea: 1.000.000.000 ÷ 672 = 1.488.095 tramas/s ≈ 1,49 Mpps. Ese es el techo teórico de un puerto gigabit con tráfico de tramas pequeñas (piensa VoIP o ataques).
  5. Contraste: con tramas de 1518 B son 1.538 × 8 = 12.304 bits, o sea apenas 81.274 pps. Mismo enlace, 18 veces menos paquetes: por eso un firewall se especifica en pps, no solo en Gbps.

¿Quieres jugar con otros tamaños y velocidades sin sacar la calculadora? La calculadora de trama Ethernet y PPS hace exactamente esta cuenta de 1G a 100G, con y sin etiqueta VLAN.

VLAN 802.1Q: paredes virtuales dentro del mismo equipo

Una VLAN convierte un switch físico en varios switches lógicos: cámaras por un lado, invitados por otro, y ninguno ve los broadcast del vecino. El mecanismo es ridículamente simple: una etiqueta de 4 bytes que se inserta dentro de la trama, entre la MAC de origen y el EtherType (mírala en el diagrama de arriba). Dos bytes de TPID (0x8100, “ojo, esto viene etiquetado”) y dos bytes que cargan el PCP (3 bits de prioridad, valores 0 a 7), el bit DEI y el VLAN ID de 12 bits: 4096 valores, de los cuales 4094 son usables (el 0 y el 4095 están reservados).

Volvamos al edificio. Un puerto access es la puerta de una oficina: todo lo que sale de ahí pertenece a esa oficina, así que nadie anda con credencial adentro — el switch le pone la etiqueta al entrar al pasillo y se la quita al entregar. Un puerto trunk es el pasillo compartido del correo interno: por ahí circulan sobres de todas las oficinas y cada uno viaja con su sticker puesto, porque sin sticker nadie sabría a cuál oficina pertenece. Access = un puerto, una VLAN, sin etiqueta. Trunk = muchas VLANs, todas etiquetadas.

Los 3 bits de PCP (802.1p) son el “frágil” del sobre: marcan la voz con prioridad 5 o 6 para que el switch la despache antes que la descarga de Windows Update. Y cuando un proveedor de servicios transporta tus VLANs por su red, usa Q-in-Q (802.1ad): mete tu trama, etiqueta incluida, dentro de otra etiqueta suya (S-TAG, TPID 0x88a8). Sobre dentro de sobre: tú sigues viendo tus 4094 VLANs intactas y el proveedor te mueve como un solo cliente. La trama máxima crece a 1522 B con una etiqueta y 1526 B con dos. Puedes desarmar cualquier etiqueta bit a bit con el decodificador VLAN y armar el doble etiquetado con la herramienta Q-in-Q.

En un trunk 802.1Q, la VLAN nativa viaja sin etiqueta. Si las dos puntas no coinciden en cuál es, el tráfico salta silenciosamente de una VLAN a otra — sin error, sin log, solo cosas raras. Fija la nativa explícitamente en ambos lados.

STP: el árbol que apaga la tormenta

Ahora sí, el cable del colegio. En capa 2 no existe TTL: una trama puede circular para siempre. Si conectas dos switches con dos cables (o enchufas una pared con otra), cada broadcast que entra al anillo se reenvía, vuelve, se reenvía de nuevo… y como cada switch lo inunda por todos los puertos, la cosa no solo gira: se multiplica. En segundos, los enlaces se saturan con copias del mismo ARP —recuerda el techo: hasta 1,49 millones de tramas por segundo en cada puerto gigabit—, las CPU se ahogan y las tablas MAC enloquecen viendo la misma MAC de origen entrar por dos puertos a la vez (MAC flapping). Eso es una tormenta de broadcast, y no se arregla sola: se arregla cortando el loop.

Spanning Tree (STP/RSTP) corta el loop por ti, a propósito y con criterio. Primero los switches eligen un root bridge: gana el menor bridge ID, que es la prioridad (0 a 61440 en saltos de 4096, default 32768) seguida de la MAC. A igual prioridad, gana la MAC más baja — que suele ser el switch más viejo del rack, no el mejor. Después, cada switch calcula su camino más barato hacia el root sumando el costo de cada enlace, deja ese puerto como root port, y todo enlace redundante queda con un puerto bloqueado: sigue ahí, escuchando BPDUs, listo para activarse si el camino principal muere.

VelocidadCosto short (802.1D-1998)Costo long (802.1t)
10 Mbps1002.000.000
100 Mbps19200.000
1 Gbps420.000
10 Gbps22.000
25 Gbps800
40 Gbps500
100 Gbps200

La escala short original se quedó sin números sobre 10 Gbps (todo vale “casi lo mismo”), así que 802.1t definió la escala long: 20.000.000.000.000 dividido por la velocidad en bps. De ahí salen los valores que conviene memorizar: 1G = 20.000 y 10G = 2.000. Atención en redes mixtas: si un switch habla short y otro long, las decisiones de camino pueden ser absurdas. La calculadora de costo STP te suma rutas completas en ambas escalas y te dice quién gana como root.

Triángulo de tres switches donde STP elige a SW1 como root bridge y bloquea el puerto de SW3 hacia SW2 SW1 · ROOT prio 4096 · MAC …:01 SW2 prio 32768 · MAC …:22 SW3 prio 32768 · MAC …:33 1G · costo 20.000 1G · costo 20.000 1G · costo 20.000 DP DP RP RP DP BLOQUEADO (ALT) Empate de costo al root (20.000): en SW2–SW3 bloquea el bridge ID más alto → SW3.
STP en el triángulo clásico: SW1 gana como root por prioridad 4096; SW3 bloquea su puerto hacia SW2 y el loop queda cortado.
El clásico: alguien lleva un switch “de escritorio” a una sala de reuniones y lo conecta con dos cables “para que quede firme”. Si tus puertos de acceso no tienen BPDU guard (o peor, alguien apagó STP “porque hacía lenta la red”), acabas de comprar una tormenta de broadcast con paro de operaciones incluido. Nunca desactives STP; configura BPDU guard en todo puerto de usuario y deja que el root bridge lo decidas tú con la prioridad, no el azar con la MAC más vieja.

LAG: sumar enlaces, con letra pequeña

Cuando un enlace no da abasto, la reacción natural es poner otro al lado y agruparlos con LAG/LACP (802.1AX, el ex 802.3ad). Funciona, STP los ve como un solo enlace lógico y no bloquea nada. Pero la letra pequeña importa: el switch decide por cuál miembro va cada trama con un hash de las MACs, IPs o puertos de origen y destino. Todas las tramas de un mismo flujo dan el mismo hash y viajan por el mismo miembro — si no, llegarían desordenadas. Consecuencia directa: 4×1G son 4 Gbps agregados, pero un solo flujo jamás pasa de 1 Gbps. El respaldo nocturno del NAS por una sola sesión TCP no se entera de que existen los otros tres cables.

Hay otra trampa menos conocida: el hash no reparte entre miembros, reparte entre buckets, y los buckets suelen ser una potencia de 2 (8 es típico). Con 2 o 4 miembros el reparto es exacto. Con 3 miembros, 8 buckets se reparten 3, 3 y 2: dos miembros reciben el 37,5 % de los flujos cada uno y el tercero solo el 25 %. Con muchos flujos parecidos, ese desbalance se nota. La calculadora de LAG te muestra el reparto exacto y el límite por flujo para cualquier combinación.

Hash de un LAG repartiendo 8 buckets entre 3 miembros: dos miembros reciben 3 buckets y uno recibe 2 hash(MAC/IP org+dst) mod 8 0 1 2 3 4 5 6 7 miembro 1 · 3/8 = 37,5 % miembro 2 · 3/8 = 37,5 % miembro 3 · 2/8 = 25 % Cada flujo cae en un bucket y viaja por UN miembro: 4×1G nunca es 4G para un solo flujo.
Con 3 miembros y 8 buckets el reparto es 3/3/2: el miembro 3 recibe solo el 25 % de los flujos. Potencias de 2 reparten parejo.

Multicast en L2: 32 IPs, una sola MAC

Última pieza de la caja: cuando una cámara transmite a un grupo multicast IPv4, la trama no lleva la MAC de nadie en particular. Se construye una MAC especial: el prefijo 01:00:5e más los 23 bits bajos de la IP del grupo. Y aquí hay un detalle precioso: una IP multicast tiene 28 bits de grupo (los primeros 4 son fijos, 1110), pero solo 23 caben en la MAC. Se pierden 5 bits, así que 2⁵ = 32 direcciones IP distintas comparten la misma MAC. Por ejemplo, 224.1.1.1, 225.1.1.1 y 239.129.1.1 aterrizan todas en 01:00:5e:01:01:01.

Moraleja: filtrar multicast por MAC en capa 2 nunca es exacto — el switch (vía IGMP snooping) puede entregarte tráfico de un grupo “vecino” que colisiona en la misma MAC, y el descarte fino lo hace la IP del receptor. En IPv6 el mapeo es más generoso: prefijo 33:33 más los últimos 32 bits de la dirección. El conversor multicast IP ↔ MAC te muestra la MAC resultante y las 31 IPs que chocan con la tuya, útil cuando el streaming de la TV corporativa aparece en la VLAN equivocada.

Abre tu propia caja

Ya sabes qué hay adentro: una tabla que aprende mirando remitentes, etiquetas de 4 bytes que levantan paredes, un árbol que corta loops y hashes que reparten flujos. Ahora entra a tu switch: mira la tabla MAC, verifica quién es tu root bridge (y decide si merece serlo), y calcula los pps reales de tus enlaces con la calculadora de trama antes de que el próximo cable de dos metros lo haga por ti.

Herramientas para practicar