CCNP SWITCH 9: Protegiendo la topología de Spanning-tree Protegiendo contra BPDUs inexperados Root Guard
Controla donde pueden encontrarse y conectarse los Root Bridge candidatos. Básicamente un switch aprende el Bridge ID del Root Bridge actual. Si otro switch anuncia una BPDU superior o con mejor Bridge ID en un puerto donde está configurado Root Guard, el switch local no permite que el nuevo n uevo switch sea el Root Bridge. Mientras se sigan recibiendo BPDUs con mejor Bridge Id el puerto se mantendrá en el estado root-inconsistent de STP. No se envía ni recibe datos en este estado solo escucha BPDUs. Cuando deja de recibir sus BPDUs entonces pasa por los estados de STP normales hasta el Forwarding. Root Guard designa que un puerto solo puede enviar o re-enviar BPDUs, pero no puede usarse para recibir BPDUs. Por lo que previene de que un puerto sea Root Port por donde normalmente se reciben BPDUs desde el Root Bridge. Para configurarlo se debe hacer en cada puerto con el siguiente comando: Switch(config-if)# spanning-tree guard root
Para ver que puertos están es estado root-inconsistent podemos usar este comando: Switch# show spanning-tree inconsistentports
BPDU Guard
Protege la integridad de los puertos que tiene activado PortFast. Si se recibe una BPDU en un puerto donde está configurado con BPDU Guard ese puerto se pone inmediatamente en estado errdisable. Si se deja de recibir las BPDUs el puerto sigue en el estado errdisable. The puerto se pone en shutdown y DEBE ser activado manualmente o automáticamente usando una comando errdisable recovery. Podemos configurarlo de forma global que solo afectará a los puertos que estén con PortFast: Switch(config)# spanning-tree portfast bpduguard default
También se puede activar o desactivar (en caso de que esté globalmente activado) en cada puerto con el comando: Switch(config-if)# [no] spanning-tree bpduguard enable
Protección contra pérdida repentina de BPDUs Loop Guard
Mantiene la pista de la actividad de BPDUs en puertos nondesignated. Mientras se reciben BPDUs se permite que el puerto funcione normalmente, pero cuando se dejan de recibir las BPDUs, Loop Guard, pasa el puerto al estado de loop-inconsistent. El puerto sigue bloqueado en este punto para prevenir bucles y que siga como nondesignated. Cua ndo se vuelven a recibir BPDUs por el puerto, Loop Guard hace que el puerto pase por los estados de STP hasta que quede en Forwarding. Por defecto Loop Guard está desactivado en todos los puertos y lo podemos activar globalmente con el siguiente comando: Switch(config)# spanning-tree loopguard default
Y para activarlo o desactivarlo en un puerto concreto podemos usar el comando: Switch(config-if)# [no] spanning-tree guard loop
Aunque Loop Guard se activa en un puerto solo bloquea la Vlan por donde se dejan de recibir BPDU no el puerto completo. UDLD
(UDLD) monitoriza un puerto para ver si realmente es bidireccional. El switch envía una trama espacial de Capa 2 UDLD identificando su puerto a intervalos regulares que se puede configurar pero por defecto son 15 segundos. UDLD espera que el switch del otro extremo responda esas tramas por el mismo enlace con su propia identificación añadida. Si la comunicación se mantiene el enlace se considera bidireccional si no se considera unidireccional. Unidirectional Link Detection
Hay dos modos de operación: •
•
Modo Normal: cuando se detecta un enlace unidireccional el puerto continua normal y UDLD simplemente marca el puerto con estado indeterminado y genera un mensaje de syslog. Modo Agresivo: cuando se detecta un enlace unidireccional se envían mensajes UDLD cada segundo durante 8 segundos, si ninguno de esos mensajes se responden el puerto se pasa al estado errdisabled.
UDLD puede configurarse de forma global (aunque solo afecta a los puertos de fibra): Switch(config)# udld {enable | aggressive | message time seconds}
También podemos configurarlo por cada puerto: Switch(config-if)# udld {enable | aggressive | disable}
Para modo normal usaremos enable y para modo agresivo aggressive. y podemos indicar el intervalo de los mensajes.
Usando el filtro de BPDUs para desactivar STP en un puerto. Siempre se debe usar STP para evitar bucles, pero en ciertos casos se puede necesitar evitar el envío o proceso de BPDUs en uno o varios puertos para ello podemos usar el filtro de BPDUs que deshabilita el STP en dichos puertos. Por defecto, evidentemente, está desactivado este filtro, pero podemos activarlo globalmente que SOLO afectará a los puertos configurados como PortFast: Switch(config)# spanning-tree portfast bpdufilter default
o activar o desactivar ciertos puertos concretos: Switch(config-if)# spanning-tree bpdufilter {enable | disable }
Solución de problemas con la protección de STP Muestra un listado con los puertos que están etiquetados en estado inconsistente: Switch# show spanning-tree inconsistentports
Para ver información detallada de las razones del estado inconsistente de un puerto: Switch# show spanning-tree interface type mod/num [detail ]
Muestra los estados globales de BPDU Guard, BPDU filter y Loop Guard Switch# show spanning-tree summary
Muestra el estado UDLD de uno o todos los puertos: Switch# show udld [type mod/num]
Vuelve a habilitar los puertos que UDLD en modo agresivo puso en errdisable: Switch# udld reset