Configuración y Optimización de Spanning Tree Protocol (STP) en Redes Cisco: Prevención de Bucles y Alta Disponibilidad
Este tutorial exhaustivo explora el Spanning Tree Protocol (STP) en redes Cisco, cubriendo desde sus fundamentos hasta la implementación de sus variantes modernas como PVST+ y Rapid PVST+. Aprenderás a configurar y optimizar STP para prevenir bucles de capa 2, asegurar la alta disponibilidad y mejorar la eficiencia de tu red. Incluye ejemplos prácticos y comandos clave para una comprensión profunda.
📖 Introducción a Spanning Tree Protocol (STP)
El Spanning Tree Protocol (STP), definido en el estándar IEEE 802.1D, es un protocolo fundamental en el diseño de redes conmutadas. Su propósito principal es prevenir los bucles de capa 2 (Layer 2 loops) que pueden ocurrir cuando hay múltiples rutas físicas entre dispositivos de red, como switches. Aunque estas rutas redundantes son deseables para la alta disponibilidad, sin un mecanismo de control, pueden provocar graves problemas como tormentas de broadcast, inestabilidad de la tabla MAC y un consumo excesivo de recursos.
STP funciona creando una topología lógica libre de bucles seleccionando una única ruta activa entre cualquier par de nodos de la red, mientras bloquea las rutas redundantes. Si la ruta activa falla, STP recalcula automáticamente la topología y habilita una de las rutas previamente bloqueadas, garantizando así la continuidad del servicio.
¿Por qué necesitamos STP? 🤔
Imagina una red con dos switches interconectados por dos enlaces Ethernet. Si un broadcast frame se envía por uno de los enlaces, el otro switch lo reenviará por el segundo enlace, y el primer switch lo reenviará de nuevo por el primer enlace, creando un bucle infinito. Esto genera:
- Tormentas de Broadcast: Los frames circulan interminablemente, consumiendo todo el ancho de banda disponible.
- Múltiples copias de frames: Un mismo frame puede llegar a un dispositivo final varias veces.
- Inestabilidad de la tabla MAC: Los switches ven un mismo dispositivo MAC apareciendo en múltiples puertos, causando que la tabla MAC se corrompa y se actualice constantemente, lo que lleva a un reenvío ineficiente o incorrecto de frames.
STP resuelve estos problemas detectando y bloqueando los enlaces redundantes para crear una topología lógica en árbol.
🛠️ Fundamentos de STP (802.1D)
El protocolo STP opera eligiendo un Switch Raíz (Root Bridge) y luego determinando los puertos de raíz y designados en los demás switches para formar la topología en árbol.
Conceptos Clave de STP
-
Switch Raíz (Root Bridge): Es el punto central de la topología STP. Todos los demás switches calculan sus rutas más cortas hacia el Root Bridge. La elección del Root Bridge se basa en el ID del Bridge (BID) más bajo. El BID se compone de:
- Prioridad del Bridge: Un valor configurable (por defecto 32768). Los valores válidos son múltiplos de 4096 (0, 4096, 8192, ..., 61440).
- Dirección MAC del Switch: Si las prioridades son iguales, el switch con la dirección MAC más baja será el Root Bridge.
-
Costo de Ruta (Path Cost): Es un valor asignado a cada enlace para determinar la distancia al Root Bridge. Los estándares de costo de ruta originales de 802.1D eran para velocidades más bajas, pero las implementaciones modernas utilizan costos de ruta más adaptados a las velocidades actuales (por ejemplo, 10 Gbps = 2, 1 Gbps = 4, 100 Mbps = 19, 10 Mbps = 100).
📌 **Nota:** Puedes modificar el costo de puerto manualmente para influir en la ruta preferida. -
Puertos STP y sus Estados: Los puertos en una topología STP pueden asumir diferentes roles y pasar por varios estados:
-
Roles de Puerto:
- Puerto Raíz (Root Port - RP): Es el puerto en un switch no-raíz que tiene la ruta de menor costo hacia el Root Bridge.
- Puerto Designado (Designated Port - DP): Es el puerto en un segmento de red que tiene el menor costo de ruta hacia el Root Bridge y es responsable de reenviar frames en ese segmento. Todos los puertos del Root Bridge son Designated Ports.
- Puerto No Designado / Bloqueado (Non-Designated / Blocking Port - BLK): Es un puerto que ha sido puesto en un estado de bloqueo para prevenir bucles. No reenvía frames de usuario, pero sí recibe BPDUs (Bridge Protocol Data Units).
-
Estados de Puerto (802.1D clásico):
- Blocking (Bloqueo): El puerto no reenvía frames ni aprende direcciones MAC. Recibe BPDUs. (Duración: 20 segundos de Max Age si se convierte en Root Port o Designated Port)
- Listening (Escucha): El puerto recibe BPDUs y procesa cambios de topología, pero no reenvía frames ni aprende direcciones MAC. (Duración: 15 segundos - Forward Delay)
- Learning (Aprendizaje): El puerto recibe BPDUs, aprende direcciones MAC para poblar la tabla MAC, pero aún no reenvía frames. (Duración: 15 segundos - Forward Delay)
- Forwarding (Reenvío): El puerto reenvía frames y aprende direcciones MAC. Es el estado operativo normal.
- Disabled (Deshabilitado): El puerto está administrativamente inactivo. No participa en STP.
💡 Consejo: El tiempo que STP tarda en converger (pasar de Blocking a Forwarding) es de 30-50 segundos (Max Age + 2 * Forward Delay). Esto puede ser lento para entornos donde la disponibilidad es crítica. -
Proceso de Elección del Root Bridge y Puertos
- Elección del Root Bridge: Todos los switches envían BPDUs. El switch con el BID más bajo (menor prioridad, luego menor MAC) es elegido como Root Bridge.
- Elección de Puertos Raíz: Cada switch no-raíz determina su Root Port. Este es el puerto que ofrece el camino de menor costo hacia el Root Bridge.
- Elección de Puertos Designados: En cada segmento de red compartido por dos o más switches, se elige un Designated Port. Este es el puerto del switch con el menor costo de ruta hacia el Root Bridge. Si los costos son iguales, se decide por el BID del switch emisor más bajo. Si aún son iguales, se decide por el ID de puerto más bajo.
- Puertos Bloqueados: Todos los demás puertos (no Root y no Designated) se ponen en estado de Blocking.
🚀 Variantes de STP en Cisco
Cisco ha desarrollado y adoptado varias mejoras y variantes de STP para superar las limitaciones del 802.1D clásico, especialmente la lenta convergencia y la falta de load balancing por VLAN.
PVST+ (Per-VLAN Spanning Tree Plus) - IEEE 802.1D con mejoras Cisco
PVST+ es la implementación predeterminada de STP en switches Cisco. A diferencia del 802.1D estándar que corre una sola instancia de STP para toda la red (Single Spanning Tree), PVST+ ejecuta una instancia separada de STP por cada VLAN activa. Esto permite:
- Balanceo de Carga por VLAN: Diferentes VLANs pueden usar diferentes Root Bridges y rutas, optimizando el uso de enlaces redundantes.
- Control granular: Configurar STP de forma independiente para cada VLAN.
Rapid PVST+ (Rapid Per-VLAN Spanning Tree Plus) - IEEE 802.1w con mejoras Cisco
Rapid PVST+ es la evolución de PVST+ y se basa en el estándar IEEE 802.1w (Rapid Spanning Tree Protocol - RSTP). Su principal ventaja es la convergencia mucho más rápida (generalmente en menos de 1 segundo, en lugar de 30-50 segundos). RSTP logra esto eliminando los estados Listening y Learning y reemplazándolos por:
- Discarding (Descarte): Similar a Blocking, no reenvía frames ni aprende MACs.
- Learning (Aprendizaje): Aprende MACs, pero no reenvía frames.
- Forwarding (Reenvío): Reenvía frames y aprende MACs.
Además, RSTP introduce nuevos roles de puerto y mecanismos de convergencia rápida:
- Puertos de Borde (Edge Ports / PortFast): Puertos conectados directamente a dispositivos finales (PCs, servidores). Pasan inmediatamente al estado Forwarding para esa VLAN, saltándose los estados de escucha/aprendizaje. Previene que el dispositivo final espere la convergencia de STP. Esencial para puertos de acceso.
- Puertos Raíz Alternativos (Alternate Ports): Son puertos bloqueados que actúan como respaldo para el Root Port designado. Pasan a Forwarding casi instantáneamente si el Root Port principal falla.
- Puertos de Backup (Backup Ports): Se usan en segmentos compartidos (hubs, no switches modernos) para respaldar al Designated Port.
- Mecanismos de Propuesta/Acuerdo: RSTP usa un handshake de propuesta y acuerdo entre switches para acelerar la transición de puertos.
MST (Multiple Spanning Tree) - IEEE 802.1s
MST permite mapear múltiples VLANs a una sola instancia de STP (MST Instance - MSTI). Esto reduce significativamente el número de instancias de STP que se ejecutan, disminuyendo la carga de CPU y el tráfico de BPDUs, especialmente en redes con cientos de VLANs. MST es compatible con RSTP para una convergencia rápida.
¿Cuándo usar MST?
MST es ideal para redes muy grandes con muchas VLANs donde se desea una gestión más eficiente de STP, consolidando grupos de VLANs con topologías similares bajo una misma instancia de STP.⚙️ Configuración Básica de STP en Cisco IOS
La configuración de STP en switches Cisco es relativamente sencilla, pero requiere comprender las implicaciones de cada comando.
Habilitar STP (Por Defecto)
En la mayoría de los switches Cisco, STP (en su variante PVST+ o Rapid PVST+) está habilitado por defecto. Puedes verificarlo con show spanning-tree summary.
Configurar el Modo STP
Por defecto, los switches Cisco suelen operar en modo PVST+. Para cambiar a Rapid PVST+ o MST:
Switch(config)# spanning-tree mode rapid-pvst
Switch(config)# spanning-tree mode mst
Configurar el Switch Raíz (Root Bridge) 👑
Es crucial controlar qué switch es el Root Bridge para cada VLAN o instancia de STP. Siempre debes elegir un switch central y potente como Root Bridge primario, y otro como Root Bridge secundario (backup). Esto asegura que el tráfico siga rutas predecibles y óptimas.
Hay dos maneras de influir en la elección del Root Bridge:
- Prioridad del Bridge: Establecer una prioridad más baja que la predeterminada (32768).
Switch(config)# spanning-tree vlan <VLAN_ID> priority <PRIORIDAD>
*Donde `<PRIORIDAD>` es un múltiplo de 4096 (0, 4096, 8192, etc.). Una prioridad de 0 es la más preferida.*
2. Comando root primary y root secondary: Cisco simplifica esto ajustando la prioridad automáticamente para ser Root o Backup.
// Para que este switch sea el Root Bridge PRIMARIO para la VLAN 10
Switch(config)# spanning-tree vlan 10 root primary
// Para que este switch sea el Root Bridge SECUNDARIO para la VLAN 10
Switch(config)# spanning-tree vlan 10 root secondary
<div class="callout note">📌 **Nota:** `root primary` establece la prioridad en 24576 (o 4096 si ya es el Root Bridge y su prioridad es mayor). `root secondary` establece la prioridad en 28672. Siempre elije un valor que sea menor que cualquier otro switch en la red.</div>
Configurar PortFast y BPDU Guard ✅
Estas son dos características esenciales para puertos de acceso conectados a dispositivos finales (PCs, impresoras, servidores).
- PortFast: Permite que un puerto pase inmediatamente al estado Forwarding, sin esperar los retrasos de STP. Esto es ideal para dispositivos finales que no participan en STP y necesitan conectividad instantánea.
Switch(config-if)# spanning-tree portfast
- BPDU Guard: Previene que un puerto configurado con PortFast reciba BPDUs. Si un puerto con
portfastybpduguardhabilitados recibe un BPDU, el puerto se desactiva (err-disabled) para prevenir posibles bucles introducidos por un dispositivo mal configurado o malicioso. Debes habilitarlo globalmente o por interfaz.
// Habilitar BPDU Guard globalmente (recomendado)
Switch(config)# spanning-tree portfast bpduguard default
// O por interfaz (menos común, solo si tienes excepciones)
Switch(config-if)# spanning-tree bpduguard enable
Configurar BPDU Filter (Usar con precaución) ⚠️
BPDU Filter evita que un puerto envíe o reciba BPDUs. Aunque puede parecer útil, desactiva completamente STP en ese puerto y puede introducir bucles si se usa incorrectamente. Generalmente, es mejor usar BPDU Guard.
- Globalmente (NO recomendado si quieres STP): Los puertos con PortFast no envían BPDUs, pero si reciben uno, PortFast se desactiva y el puerto funciona normalmente con STP.
Switch(config)# spanning-tree portfast bpdufilter default
- Por interfaz (SOLO en puertos que no deben participar en STP, ej. enlaces a ISPs): El puerto ignora y no envía BPDUs, sin importar el modo PortFast.
Switch(config-if)# spanning-tree bpdufilter enable
Configurar Root Guard y Loop Guard 🛡️
- Root Guard: Evita que un switch no deseado se convierta en Root Bridge para una VLAN específica. Si un puerto con Root Guard recibe un BPDU superior (con un BID más bajo que el Root Bridge actual), el puerto se pone en estado root-inconsistent (similar a blocking) y no reenviará tráfico. Útil en puertos que conectan a switches de acceso o de terceros.
Switch(config-if)# spanning-tree guard root
- Loop Guard: Protege contra bucles causados por la pérdida de BPDUs en enlaces punto a punto. Si un puerto de Designated Port o Root Port deja de recibir BPDUs, Loop Guard lo pone en estado loop-inconsistent (bloqueado) para evitar que se convierta en Designated Port y cree un bucle. Se aplica a puertos que esperan BPDUs.
Switch(config)# spanning-tree loopguard default
// O por interfaz
Switch(config-if)# spanning-tree guard loop
🔎 Verificación y Troubleshooting de STP
Es fundamental saber cómo verificar el estado de STP y solucionar problemas comunes.
Comandos de Verificación Clave
show spanning-tree: Muestra información detallada de STP para todas las VLANs, incluyendo el Root Bridge, las prioridades, los costos de ruta y el estado de los puertos.
Switch# show spanning-tree
show spanning-tree vlan <VLAN_ID>: Muestra información de STP para una VLAN específica.
Switch# show spanning-tree vlan 10
show spanning-tree summary: Proporciona un resumen rápido del estado de STP, incluyendo el modo STP, si PortFast y BPDU Guard están habilitados globalmente, y el número de puertos en cada estado.
Switch# show spanning-tree summary
show spanning-tree interface <interface_id> detail: Muestra información detallada de STP para una interfaz específica.
Switch# show spanning-tree interface gigabitethernet 0/1 detail
show spanning-tree bpduguard: Muestra el estado de BPDU Guard.
Ejemplos de Salida (show spanning-tree) 📋
Switch# show spanning-tree vlan 1
VLAN0001
Spanning tree enabled protocol rstp
Root ID Priority 24577
Address 000D.BCF5.1180
Cost 4
Port 1 (GigabitEthernet0/1)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
Address 001B.D511.98C0
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300
Interface Role Status Cost Prio.Nbr Type
---------------- ---- ------------ --------- -------- --------------------------------
Gi0/1 Root FWD 4 128.1 P2p
Gi0/2 Desg FWD 4 128.2 P2p
Gi0/3 Desg FWD 4 128.3 P2p Edge (PortFast)
En esta salida:
- El switch está en modo
rstp(Rapid PVST+). - El
Root IDmuestra la prioridad y MAC del Root Bridge. Nuestro switch no es el Root Bridge para VLAN 1. - El
Root PortesGigabitEthernet0/1, con un costo de 4. GigabitEthernet0/3es un puerto Edge (PortFast) y está en estado Forwarding.
Troubleshooting Común 🩹
| Problema Común | Posibles Causas | Soluciones |
|---|---|---|
| --- | --- | --- |
| Bucle de Capa 2 | STP deshabilitado, misconfiguración de PortFast, fallo de BPDU Guard, enlaces inesperados. | Verificar configuración de STP, PortFast y BPDU Guard. Aislar el bucle y corregir. |
Puertos err-disabled | BPDU Guard activado por recibir BPDUs en un puerto PortFast. | show interface status err-disabled. errdisable recovery cause bpduguard (global) o shutdown/no shutdown en la interfaz. |
| --- | --- | --- |
| Lenta Convergencia | STP clásico (802.1D) en lugar de Rapid PVST+. | Cambiar spanning-tree mode rapid-pvst. Ajustar forward-delay si es necesario (con precaución). |
| Switch Raíz Incorrecto | Prioridades STP no configuradas o mal configuradas. | spanning-tree vlan <VLAN_ID> root primary/secondary o spanning-tree vlan <VLAN_ID> priority <VALOR>. |
| --- | --- | --- |
| Pérdida de Conectividad | Puerto bloqueado por STP, Loop Guard activado. | show spanning-tree para verificar estados. Si loop-inconsistent, investigar por qué el puerto dejó de recibir BPDUs. |
🌟 Mejores Prácticas y Consejos para STP
Implementar STP de manera efectiva requiere seguir ciertas recomendaciones:
- Designar el Root Bridge: Siempre designa manualmente el Root Bridge primario y secundario para cada VLAN (o instancia de MST). Esto asegura una topología STP predecible y optimizada. El Root Bridge debe ser un switch potente y central en tu topología.
- Usar Rapid PVST+ o MST: Para la mayoría de las redes modernas, Rapid PVST+ es el estándar de facto por su rápida convergencia. Para entornos grandes con muchas VLANs, MST es una opción más eficiente.
- Configurar PortFast: Habilita PortFast en todos los puertos de acceso (puertos conectados a dispositivos finales) para evitar retrasos en la conexión de los dispositivos.
- Habilitar BPDU Guard: Combina PortFast con BPDU Guard en los puertos de acceso para proteger la red de bucles accidentales o malintencionados causados por la conexión de otro switch o dispositivo generador de BPDUs.
- Habilitar Root Guard: En los puertos que conectan a switches de acceso o de terceros, habilita Root Guard para asegurar que el Root Bridge de tu dominio STP no sea suplantado por un dispositivo no autorizado.
- Habilitar Loop Guard: En enlaces troncales (trunks) donde se esperan BPDUs, habilita Loop Guard para prevenir bucles en caso de fallos unidireccionales de enlace donde el switch deja de recibir BPDUs.
- Costos de Puerto: Si es necesario, ajusta los costos de puerto manualmente para influir en las rutas preferidas de STP. Por ejemplo, podrías querer que el tráfico utilice enlaces de mayor ancho de banda.
- Documentación: Documenta tu diseño de STP, incluyendo la ubicación del Root Bridge para cada VLAN y cualquier configuración especial de puertos. ¡Es vital para el troubleshooting futuro!
Conclusión ✨
El Spanning Tree Protocol, en sus diversas formas, sigue siendo una pieza fundamental para la estabilidad y disponibilidad de las redes conmutadas. Al comprender sus fundamentos y dominar su configuración en switches Cisco, puedes prevenir bucles catastróficos, optimizar la topología de tu red y asegurar una rápida recuperación ante fallos.
La elección entre PVST+, Rapid PVST+ y MST dependerá del tamaño y la complejidad de tu red, pero Rapid PVST+ es generalmente la opción más equilibrada y recomendada para la mayoría de los entornos modernos. Recuerda siempre aplicar las mejores prácticas para proteger tu red de los peligros de los bucles de capa 2.
Tutoriales relacionados
- Configuración Avanzada de OSPF en Cisco IOS: Área Múltiple, Autenticación y Summarizationintermediate18 min
- Implementación de VPNs IPsec Site-to-Site en Routers Cisco IOS: Conectando Oficinas de Forma Seguraintermediate20 min
- Configuración y Optimización de NTP en Redes Cisco: Sincronización Precisaintermediate18 min
- Configuración y Optimización de BGP en Cisco IOS: Interconexión de Redes a Gran Escalaintermediate15 min
- Seguridad en Redes Cisco: Implementación y Gestión de AAA con TACACS+ y RADIUSintermediate18 min
Comentarios (0)
Aún no hay comentarios. ¡Sé el primero!