Spanning-Tree Protocol (STP) resuelve físicamente las topologías redundantes en topologías de árbol sin loop. El mayor problema con el STP es que algunos errores de hardware pueden hacerlo fallar. Este error crea forwarding loops (o STP loops). Los loops STP causan importantes interrupciones de red.
Este documento describe la función STP de protección contra loops que está diseñada para mejorar la estabilidad de las redes de Capa 2. Este documento también describe la detección de desviación de Bridge Protocol Data Unit (BPDU). La detección de desviación BPDU es una función de diagnóstico que genera mensajes de syslog cuando no se reciben BPDU a tiempo.
Este documento asume que el lector está familiarizado con el funcionamiento básico del STP. Consulte Comprensión y Configuración del Protocolo de árbol de extensión (STP) en los switches Catalyst para saber cómo funciona STP.
Este documento no tiene restricciones específicas en cuanto a versiones de software y de hardware.
CatOS
La función STP loop guard se introdujo en la versión CatOS 6.2.1 del software Catalyst para las plataformas Catalyst 4000 y Catalyst 5000 y en la versión 6.2.2 para la plataforma Catalyst 6000.
La función de detección de desviación BPDU se introdujo en la versión CatOS 6.2.1 del software Catalyst para las plataformas Catalyst 4000 y Catalyst 5000 y en la versión 6.2.2 para la plataforma Catalyst 6000.
Cisco IOS®
La función de protección contra loops STP se introdujo en Cisco IOS Software Release 12.1(12c)EW para los switches Catalyst 4500 y Cisco IOS Software Release 12.1(11b)EX para Catalyst 6500.
La función de detección de desviación BPDU no se soporta en los switches Catalyst que ejecutan el software del sistema Cisco IOS.
Internamente, el STP asigna a cada puerto de puente (o switch) una función que se basa en la configuración, la topología, la posición relativa del puerto en la topología y otras consideraciones. El rol del puerto define el comportamiento del puerto desde el punto de vista STP. Según el rol del puerto, el puerto envía o recibe BPDU STP y reenvía o bloquea el tráfico de datos. Esta lista proporciona un breve resumen de cada función de puerto STP:
Designado: se elige un puerto designado por link (segmento). El puerto designado es el puerto más cercano al bridge raíz. Este puerto envía BPDU en el link (segmento) y reenvía el tráfico hacia el bridge raíz. En una red convergente STP, cada puerto designado se encuentra en el estado de reenvío STP.
Raíz: el puente puede tener solamente un puerto raíz. El puerto raíz es el puerto que lleva al bridge raíz. En una red convergente STP, el puerto raíz se encuentra en el estado de reenvío STP.
Alternativo: los puertos alternativos llevan al puente raíz, pero no son puertos raíz. Los puertos alternativos mantienen el estado bloqueado del STP.
Copia de seguridad: se trata de un caso especial cuando dos o más puertos del mismo puente (switch) están conectados juntos, directamente o a través de medios compartidos. En este caso, se designa un puerto y los puertos restantes se bloquean. La función para este puerto es de respaldo.
La función de protección de loop del STP brinda protección adicional contra los loops de reenvío de Capa 2 (loops STP). Un loop de STP se crea cuando un puerto de bloqueo STP en las transiciones erróneas de una topología redundante al estado de reenvío. Esto sucede generalmente porque uno de los puertos de una topología redundante (no no necesariamente el puerto de bloqueo STP) recibe físicamente no más de BPDU de STP. En su operación, el STP está basado en la transmisión o en la recepción continua de las BPDU, según el rol del puerto. El puerto designado transmite los BPDU, y el puerto no designado recibe los BPDU.
Cuando uno de los puertos en una topología físicamente redundante deja de recibir BPDU, el STP considera a la topología como un loop libre. Finalmente, se designa el puerto de bloqueo del puerto de respaldo o alternativo y pasa al estado de reenvío. Esta situación crea un loop.
La función de protección de loop hace verificaciones adicionales. Si ya no se reciben las BPDU en un puerto no designado y el protector de loop está habilitado, ese puerto será desplazado a un estado de bloqueo incoherente con el loop en lugar de desplazarse a un estado de escuchar/aprender/reenviar. Sin la función de protección de loop, el puerto asumiría el rol de puerto designado. El puerto se desplaza al estado de reenvío de STP y crea un loop.
Cuando la protección contra loops bloquea un puerto inconsistente, se registra este mensaje:
CatOS
%SPANTREE-2-LOOPGUARDBLOCK: No BPDUs were received on port 3/2 in vlan 3. Moved to loop-inconsistent state.
IOS de Cisco
%SPANTREE-2-LOOPGUARD_BLOCK: Loop guard blocking port FastEthernet0/24 on VLAN0050.
Una vez que se recibe la BPDU en un puerto en un estado STP loop-inconsistent, el puerto pasa a otro estado STP. Según la BPDU recibida, esto significa que la recuperación es automática y que la intervención no es necesaria. Después de la recuperación, se registra este mensaje:
CatOS
%SPANTREE-2-LOOPGUARDUNBLOCK: port 3/2 restored in vlan 3.
IOS de Cisco
%SPANTREE-2-LOOPGUARD_UNBLOCK: Loop guard unblocking port FastEthernet0/24 on VLAN0050.
Considere este ejemplo para ilustrar este comportamiento:
El switch A es el switch raíz. El switch C no recibe BPDU del switch B debido a una falla de link unidireccional en el link entre el switch B y el switch C.
Sin protección contra loops, el puerto de bloqueo STP en el switch C pasa al estado de escucha STP cuando caduca el temporizador max_age, y luego pasa al estado de reenvío en dos veces el tiempo forward_delay. Esta situación crea un loop.
Con la protección contra loops habilitada, el puerto de bloqueo en el switch C pasa al estado STP loop-inconsistent cuando caduca el temporizador max_age. Un puerto en estado STP loop-inconsistent no pasa el tráfico de usuario, por lo que no se crea un loop. (El estado loop-inconsistent es igual efectivamente al estado de bloqueo.)
La función de protección contra loops se habilita por puerto. Sin embargo, mientras bloquee el puerto en el nivel STP, la protección contra loops bloquea los puertos inconsistentes por VLAN (debido al STP por VLAN). Es decir, si las BPDU no se reciben en el puerto troncal para una sola VLAN en particular, sólo esa VLAN se bloquea (se mueve al estado STP inconsistente en loop). Por la misma razón, si se habilita en una interfaz EtherChannel, todo el canal se bloquea para una VLAN determinada, no sólo un link (porque EtherChannel se considera un puerto lógico desde el punto de vista STP).
¿En qué puertos se debe habilitar la protección contra loops? La respuesta más obvia es en los puertos de bloqueo. Sin embargo, esto no es totalmente correcto. La protección contra loops se debe habilitar en los puertos no designados (más precisamente, en los puertos raíz y alternativos) para todas las combinaciones posibles de topologías activas. Siempre que la protección contra loop no sea una función por VLAN, el mismo puerto (tronco) podría ser designado para una VLAN y no designado para otra. También deben tenerse en cuenta los posibles escenarios de conmutación por fallo.
Tenga en cuenta este ejemplo:
De forma predeterminada, la protección contra loops está desactivada. Este comando se utiliza para habilitar la protección contra loops:
CatOS
set spantree guard loopConsole> (enable) set spantree guard loop 3/13 Enable loopguard will disable rootguard if it's currently enabled on the port(s). Do you want to continue (y/n) [n]? y Loopguard on port 3/13 is enabled.
IOS de Cisco
spanning-tree guard loop Router(config)#interface gigabitEthernet 1/1 Router(config-if)#spanning-tree guard loop
Con la versión 7.1(1) del software Catalyst (CatOS), la protección contra loops se puede habilitar globalmente en todos los puertos. Efectivamente, la protección contra loops está habilitada en todos los links punto a punto. El estado dúplex del link detecta el link punto a punto. Si el modo es dúplex completo, el link se considera de punto a punto. Todavía es posible configurar o anular los parámetros globales por puerto.
Ejecute este comando para habilitar la protección contra loops globalmente:
CatOS
Console> (enable) set spantree global-default loopguard enable
IOS de Cisco
Router(config)#spanning-tree loopguard default
Ejecute este comando para inhabilitar la protección contra loops:
CatOS
Console> (enable) set spantree guard none
IOS de Cisco
Router(config-if)#no spanning-tree guard loop
Ejecute este comando para inhabilitar globalmente la protección contra loops:
CatOS
Console> (enable) set spantree global-default loopguard disable
IOS de Cisco
Router(config)#no spanning-tree loopguard default
Ejecute este comando para verificar el estado de la protección contra loops:
CatOS
show spantree guardConsole> (enable) show spantree guard 3/13 Port VLAN Port-State Guard Type ------------------------ ---- ------------- ---------- 3/13 2 forwarding loop Console> (enable)
IOS de Cisco
show spanning-tree Router#show spanning-tree summary Switch is in pvst mode Root bridge for: none EtherChannel misconfig guard is enabled Extended system ID is disabled Portfast Default is disabled PortFast BPDU Guard Default is disabled Portfast BPDU Filter Default is disabled Loopguard Default is enabled UplinkFast is disabled BackboneFast is disabled Pathcost method used is short Name Blocking Listening Learning Forwarding STP Active ---------------------- -------- --------- -------- ---------- ---------- Total 0 0 0 0 0
La protección contra loops y la funcionalidad de detección de enlaces unidireccionales (UDLD) se solapan, en parte en el sentido de que ambas protegen contra las fallas de STP causadas por los enlaces unidireccionales. Sin embargo, estas dos funciones difieren en cuanto a funcionalidad y a cómo abordan el problema. Esta tabla describe la protección contra loops y la funcionalidad UDLD:
Funcionalidad | Protección de loop | UDLD |
---|---|---|
Configuración | Por puerto | Por puerto |
Granularidad de la acción | Por VLAN | Por puerto |
Autorecover | Yes | Sí, con la función err-disable timeout |
Protección contra fallas STP causadas por links unidireccionales | Sí, cuando está habilitado en todos los puertos raíz y alternativos en la topología redundante | Sí, cuando está habilitado en todos los links en la topología redundante |
Protección contra fallas STP causadas por problemas en el software (el switch designado no envía BPDU) | Yes | No |
Protección contra los cables errados. | No | Yes |
Según las diversas consideraciones de diseño, puede elegir UDLD o la función de protección contra loops. En cuanto al STP, la diferencia más notable entre las dos funciones es la ausencia de protección en el UDLD frente a las fallas STP causadas por problemas en el software. Como resultado, el switch designado no envía BPDU. Sin embargo, este tipo de falla es (por orden de magnitud) más raro que las fallas causadas por links unidireccionales. En cambio, la UDLD podría ser más flexible en el caso de links unidireccionales en EtherChannel. En este caso, UDLD inhabilita sólo los links fallidos, y el canal debe permanecer funcional con los links que permanecen. En tal falla, la protección contra loops lo pone en estado loop-inconsistent para bloquear todo el canal.
Además, la protección contra loop no funciona en links compartidos o en aquellas situaciones en las que el link ha sido unidireccional desde la activación del link. En el último caso, el puerto nunca recibe BPDU y se designa. Debido a que este comportamiento podría ser normal, este caso en particular no está cubierto por la protección contra loops. El UDLD proporciona protección contra tal escenario.
Como se describe, se proporciona el nivel más alto de protección cuando se habilita UDLD y la protección contra loops.
Protección de raíz
El protector de raíz se excluye mutuamente con el protector de loop. La protección de raíz se utiliza en los puertos designados y no permite que el puerto se convierta en no designado. La protección contra loops funciona en puertos no designados y no permite que el puerto se designe a través de la expiración de max_age. El protector de raíz no puede estar habilitado en el mismo puerto que el protector de loop. Cuando la protección contra loops está configurada en el puerto, inhabilita la protección raíz configurada en el mismo puerto.
link ascendente rápido y Estructura básica rápida
Tanto el link ascendente rápido como la estructura básica rápida son transparentes para el protector de loop. Cuando la estructura básica omite max_age en el momento de la reconvergencia, no activa la protección contra loops. Para obtener más información sobre uplink fast y backbone fast, consulte estos documentos:
Comprensión y Configuración de la Función UplinkFast de Cisco
Comprensión y configuración de Backbone Fast en switches Catalyst
PortFast y Protección BPDU y VLAN dinámica
La protección contra loops no se puede habilitar para los puertos en los que portfast está habilitado. Dado que la protección BPDU funciona en los puertos habilitados para portfast, se aplican algunas restricciones a la protección BPDU. La protección contra loops no se puede habilitar en los puertos VLAN dinámicos porque estos puertos tienen portfast activado.
links compartidos
La protección contra loops no se debe habilitar en los links compartidos. Si habilita la protección contra loops en links compartidos, el tráfico de hosts conectados a segmentos compartidos podría estar bloqueado.
Árbol de expansión múltiple (MST)
La protección contra loops funciona correctamente en el entorno MST.
BPDU detección de desviación
La protección contra loops debe funcionar correctamente con la detección de desviación BPDU.
El funcionamiento de STP depende en gran medida de que reciba a tiempo los BPDU. En cada mensaje hello_time (2 segundos de forma predeterminada), el puente raíz envía BPDU. Los puentes que son raíz no vuelven a generar BPDU para cada mensaje hello_time, pero reciben BPDU retrasados del puente raíz. Por lo tanto, cada bridge que no sea root debe recibir BPDU en cada VLAN para cada mensaje hello_time. En algunos casos, las BPDU se pierden o la CPU del puente está demasiado ocupada para retransmitir BPDU de manera oportuna. Estos problemas, así como otros problemas, pueden hacer que las BPDU lleguen tarde (si llegan). Este problema puede comprometer la estabilidad de la topología del árbol de expansión.
La detección de desviación BPDU permite al switch realizar un seguimiento de las BPDU que llegan tarde y notificar al administrador con mensajes de syslog. Para cada puerto en el que una BPDU llega tarde (o se ha sesgado), la detección sesgada informa de la desviación más reciente y de la duración del sesgo (latencia). También notifica el retraso más largo de BPDU en este puerto particular.
Para proteger la CPU del puente de la sobrecarga, no se genera un mensaje syslog cada vez que se produce la desviación de BPDU. Los mensajes están limitados por tiempo a un mensaje cada 60 segundos. Sin embargo, si el retraso de BPDU excede la edad_máxima dividida por 2 (que equivale a 10 segundos de forma predeterminada), el mensaje se imprime inmediatamente.
Nota: La detección de desviación de BPDU es una función de diagnóstico. Al detectar la desviación de BPDU, envía un mensaje de syslog. La detección de desviación de BPDU no toma ninguna otra acción correctiva.
Este es un ejemplo de un mensaje de syslog generado por la detección de desviación de BPDU:
%SPANTREE-2-BPDU_SKEWING: BPDU skewed with a delay of 10 secs (max_age/2)
La detección de desviación de BPDU se configura por switch. La configuración predeterminada está desactivada. Ejecute este comando para habilitar la detección de desviación BPDU:
Cat6k> (enable) set spantree bpdu-skewing enable Spantree bpdu-skewing enabled on this switch.
Para ver la información de desviación de BPDU, utilice el comando show spantree bpdu-skiting <vlan>|<mod/port> , como se muestra en este ejemplo:
Cat6k> (enable) show spantree bpdu-skewing 1 Bpdu skewing statistics for vlan 1 Port Last Skew (ms) Worst Skew (ms) Worst Skew Time -------------- --------------- --------------- ------------------------- 3/12 4000 4100 Mon Nov 19 2001, 16:36:04
Revisión | Fecha de publicación | Comentarios |
---|---|---|
1.0 |
02-Dec-2013 |
Versión inicial |