Spanning Tree Protocol: 1 - Tradicional
• Spanning Tree Protocol: 1 - Tradicional
• Spanning Tree Protocol: 2 - Configuración
• Spanning Tree Protocol: 3 - Protegiendo la topología
• Spanning Tree Protocol: 4 - Avanzado
Bucles
Un switch Ethernet transparente debe funcionar de la siguiente manera:
• El switch debe escuchar las tramas que entran por los puertos para averiguar la MAC del dispositivo
en dicho puerto. Con esa MAC construye una tabla indicando en que puerto la ha escuchado.
• El switch está constantemente actualizando la tabla de MAC detectando nuevas MAC o que alguna
haya cambiado a otro puerto. El switch puede enviar tramas mirando la MAC destino en la tabla de
MACs que indica porque puerto debe enviarlas.
• Si una trama llega con la dirección broadcast como dirección destino, entonces debe enviar la trama a
todos los puertos disponibles a excepción del puerto por donde se recibió. De esta forma los broadcast
pueden alcanzar todas las redes de Capa 2. Un switch solo segmente dominios de colisión pero no
dominios de broadcast.
• Si una trama llega con una dirección de destino que no se encuentra en la tala de MACs se trata de
igual forma que el caso anterior (broadcast) y se envía a todos los puertos excepto por donde se
recibió. Una vez que el switch aprenda por que puerto debe enviar esa trama almacena las MAC en la
tabla. Este tipo de tramas se conoce como unknown unicast.
• Las tramas que cruzan el switch no se pueden modificar por el mismo por lo que el proceso es
transparente.
Comunicación Spannign-Tree: Bridge Protocol Data Units (BPDU)
Los switches envían mensajes de datos mediante bridge protocol data units (BPDU) por lo puertos usando la
MAC origen del propio puerto y como destino a una dirección multicast (de STP) 01-80-c2-00-00-00.
Existen 2 tipos de BPDU:
• BPDU de configuración, que se usa para el calculo de spanning-tree.
Protocol ID, Version, Message Type, Flags, Root Bridge ID, Root Path Cost
• BPDU de notificación de Cambio de Topología (Topology Change Notification (TCN) BPDU),
que se usa para anunciar cambios en la topología de la red.
Sender Bridge Id, Port ID, Message Age, Maximum Age, Hello time, Forward time
Eligiendo un Root Bridge
Para que la topología esté libre de bucles se debe tomar un punto de referencia que se llama root bridge (el
termino bridge "puente" se usa ya que esta tecnología se desarrollo para puentes pero se puede pensar como
un switch).
Para elegir al root bridge entre todos los switches se usa el bridge ID que todos los switches tienen, es único y
consiste en un valor de 8 bytes dividido en dos partes:
• Bridge Priority (2 bytes): es la prioridad de un switch en relación con el resto de switches. La
prioridad puede estar entre 0 y 65535 y por defecto está en 32768 (0x80000).
• MAC Address (6 bytes): la dirección MAC usada se obtiene del módulo de la supervisora, el
backplane o una lista de 1024 direcciones que son asignadas a cada supervisora o backplane
dependiendo del modelo de switch. Es una dirección única y almacenada internamente que no puede
ser modificada por el usuario.
Cuando un switch se inicia no conoce su entorno por lo que asume que él es el root bridge. Cada switch
empieza a enviar BPDUs con el root bridge ID igual que su bridge ID lo mismo que el sender bridge id que
sirve para indicar quien es el que envía el BPDU. Una vez que se ha elegido el root bridge la BPDUs de
configuración son enviadas solo por el root bridge y el resto de switches solo las reenvían añadiendo su
bridge ID al BPDU.
Los BPDUs recibidos se analizan para ver si el root bridge que se anuncia es mejor (es menor) que el que
tiene el switch, por lo que los nuevos BPDUs que envía anuncia este nuevo root bridge manteniendo el
sender bridge ID él mismo.
Cuando el proceso termina todos los switches implicados están de acuerdo en cual es el root bridge (solo
uno). Si un nuevo switch se conecta todo el proceso se vuelve a repetir hasta que se decida cual es el nuevo
root bridge. El proceso de elección del switch root bridge se repite cada 2 segundos (hello time) y los
empieza el root bridge actual.
Eligiendo un Root Ports
Una vez que se ha elegido el root bridge el resto de switches deben elegir su root port (solo debe haber uno
por switch) que es el puerto con menor coste hacia el root bridge (en caso de empate de mas de un puerto será
el puerto con menor path cost y el puerto con menor ID. El coste es un valor acumulativo de todos los enlaces
hasta llegar al root bridge. Cada enlace tiene un coste que se llama path cost y la suma de todos los costes de
todos los enlaces hasta llegar al root bridge se llama root path cost y es el que se envía en el BPDU.
Link Bandwidth STP Cost
4 Mbps 250
10 Mbps 100
16 Mbps 62
45 Mbps 39
100 Mbps 19
155 Mbps 14
622 Mbps 6
1 Gbps 4
10 Gbps 2
El coste de root path cost se determina de la siguiente manera:
1. El root bridge envía un BPDU con el root path cost a cero ya que todos sus puerto están directamente
conectados.
2. Cuando el siguiente switch recibe esta BPDU, suma al root path cost el coste del puerto por donde ha
recibido la BPDU (esto se realiza nada más recibir la BPDU).
3. Este switch vecino envía la BPDU con el nuevo valor del root path cost.
4. Y el proceso se repite según se vaya recibiendo la BPDU a los switches según vayan estando más
alejados del root bridge.
5. Es importante remarcar que el root path cost se incrementa cuando el switch recibe la BPDU y que si
calculamos el root path cost manualmente en un esquema tenerlo presente de sumar el coste cuando
entra en el switch nunca cuando sale.
Cada switch almacena el mejor root path cost que ha recibido, por lo que si recibe uno mejor del que tiene
almacenado guarda el nuevo y por tanto actualiza que su nuevo root port es el puerto por donde ha recibido el
menor root path cost.
Eligiendo los Designated Ports
Una vez que se tiene el root bridge y el root port del resto de switches, estos deben elegir los designated
ports (uno por cada segmento).
Si un un switch recibe una BPDU con menor root path cost asume que el puerto del switch vecino es el
designated port, por el contrario si la BPDU que recibe tiene un mayor root path cost asume que su puerto
(por donde recibe la BPDU) es el designated port.
Puede ocurrir que un switch reciba por varios puerto el mismo root cost path con lo cual hay un "empate" que
hay que romper para ello STP tiene 4 condiciones para romper este empate:
1. El root bridge ID más bajo.
2. El root path cost más bajo hacia el root bridge.
3. El bridge ID más bajo del emisor.
4. El port ID más bajo del emisor.
El papel que desempeñan los puertos de STP
Los puertos pueden desempeñar un papel según el tipo que sean:
• puerto Root (root port):
• Solo en switches (bridges) que no son root.
• Envía tráfico hacia el root bridge.
• Solo uno por switch.
• Pueden llenar la tabla MAC.
• Puerto Designado (designated port):
• Aparecen en switches (bridges) tanto root como no root.
• Todos los puertos del root bridge son puertos designados.
• Envían y reciben tramas desde el root bridge.
• Solo uno por segmento.
• Pueden llenar la tabla MAC.
• Puertos no designados (nondesignated port):
• No envían paquete (Blocking)
• No llenan la tabla MAC.
• Puerto deshabilitado (Disabled port):
• Un puerto que está en shutdown.
Estados de STP
Cuando el STP está activo un puerto empieza en estado desactivado (Disabled) y pasa por ciertos estados
hasta alcanzar el estado activo (Forwarding). Los estados son:
• Disabled: Los puertos están administrativamente shutdown o por una condición de error están en
estado Disabled. Este estado no forma parte de cambio de estados del STP.
• Blocking: Cuando un puerto se inicializa comienza en estado Blocking para prevenir bucles. En este
estado un puerto no puede ni recibir ni enviar nada ni aprende MACs solo recibe BPDUs para conocer
el estado de otros switches. Además los puertos que se eliminan de la redundancia para evitar un bucle
se ponen en este estado de Blocking.
• Listening: Un puerto pasa del estado Blocking al estado Listening si el switch cree que este puerto
puede ser un root o designated port y va camino de ser un puerto activo (Forwarding). En este estado
(Listening) no puedo enviar o recibir tramas, pero ahora puede enviar y recibir BPDUs con lo que este
switch participa activamente en el STP. Si el puerto pierde su estado de root o designated entonces
vuelve al estado de Blocking.
• Learning: Tras pasar en modo Listening durante un tiempo (llamado Forward Delay) el puerto puede
pasar al estado Learning. Aún el puerto sigue sin poder mandar o recibir tramas, sigue mandando
BPDUs pero ahora el switch aprende MACs que añade a la tabla de MACs (CAM). Este estado da un
poco de tiempo a que el switch se asiente.
• Forwarding: Tras otro tiempo de Forward Delay el puerto pasa del estado Learning a Forwarding.
En este estado el puerto es totalmente operativo, envía y recibe tramas, BPDUs y aprende MACs.
Para saber el estado de un puerto podemos usar el comando:
Switch#show spanning-tree interface type mod/port
O para encontrar problema el comando debug:
debug spanning-tree switch state
Temporizadores (timers) de STP
STP usa tres temporizadores (timers) para asegurarse que la red converge correctamente, son los siguientes:
• Hello Time: Es el intervalo de tiempo entre cada BPDU de configuración que envía el root bridge. El
Hello Time configurado en el root bridge determina el Hello Time de cada switch no root ya que estos
reenvían las BPDUs que recibe del root. Aunque los switches no root tienen un Hello Time
configurado localmente que se usa para temporizar los BPDUs TCN (cambio de topología). IEEE
802.1D especifica por defecto un Hello Time de 2 segundos.
• Forward Delay: El intervalo de tiempo que un switch espera en los estados Listening y Learning. Por
defecto son 15 segundos.
• Max Age: El intervalo de tiempo máximo que un switch almacena una BPDU antes de descartarla.
STP almacena la "mejor" copia de BPDU que ha recibido hasta que deja de recibir las BPDUs durante
el periodo de tiempo especificado por Max Age en cuyo momento asume un cambio de topología y
elimina el BPDU almacenado. Por defecto este valor es de 20 segundo.
NOTA: los valores por defecto de los temporizadores están basados en que se asume que el root bridge está
en el centro y de él cuelgan 6 switches.
CONSEJO: Los temporizadores STP se pueden configurar o ajustar desde la línea de comandos. Sin
embargo, los valores del temporizador nunca deben cambiarse de los valores predeterminados sin una
consideración cuidadosa. En tal caso, los valores deben cambiarse solo en el switch que es el Root Bridge.
Los valores del temporizador se anuncian en los campos dentro de la BPDU. El Root Bridge garantiza que
los valores del temporizador se propagan a todos los demás switches.
Cambios de topología
Para anunciar un cambio en la topología actual de la red, los switches envían una BPDU TCN. Un cambio de
topología ocurre cuando un switch pasa un puerto al estado Forwarding o cambia un puerto de los estados
Forwarding o Learning al estado Blocking (o lo que es lo mismo un puerto cambia a UP o DOWN. El switch
envía una BPDU TCN por su root port para que le llegue al root bridge. La BPDU TCN no lleva información
sobre el cambio en sí solo que se ha producido un cambio. El switch no envía la BPDU TCN si el puerto ha
sido configurado con el parámetro PortFast.
El switch continua enviando BPDUs TCN cada intervalo Hello Time. Cuando el root bridge recibe el BPDU
TCN envía la BPDU de configuración con el flag de TCN activo, lo cual hace que todos los switches acorten
sus tiempos de memorización de MACs (que por defecto es 300 segundos) al tiempo de Forward Delay (que
es por defecto 15 segundos).
Tipos de STP
• Common Spanning Tree (CST): es el estándar de IEEE 802.1Q que además de especificar como se
hacen los trunks, especifica una sola instancia de STP que engloba todas las VLANs. Esta instancia es
conocida como Common Spanning Tree (CST). Las BPDUs son enviadas por los enlaces Trunk
usando la VLAN nativa con tramas sin marcar. Teniendo una sola instancia para todas las VLANs
simplifica la configuración y la carga de la CPU del switch durante los cálculos de STP aunque tiene
por contra limitaciones.
• Per-VLAN Spanning Tree (PVST): Es la versión propietaria de Cisco que ofrece más flexibilidad al
usar una instancia por cada VLAN. Requiere el uso de Trunks ISL (Inter-Switch Link) por lo que en
networks con PVST y CST no hay comunicación. También permite balanceo de carga teniendo un
grupo de VLANs por un camino y otras VLANs por otro camino.
• Per-VLAN Spanning Tree Plus (PVST+): Es la versión mejorada de PVST que permite interactuar
switches con PVST y CST, lo que permite el uso en la misma red de PVST, PVST+ y CST.
PVST+ actúa como traductor entre grupos de switches CST y grupos de switches PVST. PVST+
puede comunicarse directamente con PVST mediante el uso de trunks ISL. Sin embargo, para
comunicarse con CST, intercambia BPDUs con CST como frames sin etiquetar a través de la VLAN
nativa. Las BPDU de otras instancias de STP (otras VLAN) se propagan a través de las partes de la
red CST mediante túneles. PVST+ envía estos BPDU mediante una dirección multicast única, de
modo que el CST los reenvía a los vecinos sin interpretarlos primero. Eventualmente, las BPDU
tunelizadas alcanzan otros switches PVST+ donde se entienden.
Ejemplo
Viendo el esquema y la siguiente tabla, podemos deducir que el Root Bridge es el SW4 ya que su Bridge ID
(32769-0cee.b80a.7500) es el más bajo:
Hello Max Fwd
Vlan Bridge ID Time Age Dly Protocol
---- ------------------------------- ---- --- --- --------
SW1 32769 (32768, 1) 0cee.b86b.7400 2 20 15 rstp
SW2 32769 (32768, 1) 0cee.b832.5600 2 20 15 rstp
SW3 32769 (32768, 1) 0cee.b832.9300 2 20 15 rstp
SW4 32769 (32768, 1) 0cee.b80a.7500 2 20 15 rstp
Según el esquema y sabiendo que el Root Bridge es el SW4, podemos deducir lo siguiente:
SW1 - Gi0/0 - designated path cost 4
SW1 - Gi0/1 - designated path cost 4
SW1 - Gi0/3 - designated path cost 0 = Root Port
SW2 - Gi0/0 - designated path cost 4 = Root Port
SW2 - Gi0/2 - designated path cost 8
SW2 - Gi1/0 - designated path cost 8
SW3 - Gi0/1 - designated path cost 4 = Root Port
SW3 - Gi0/2 - designated path cost 8
SW4 - Gi0/3 - designated path cost 0
SW4 - Gi1/0 - designated path cost 0
En el segmento SW2-SW3 el root cost path es el mismo (8), por lo que el desempate se efectúa ya que la
MAC de SW2 (0cee.b832.5600) es menor que la de SW3 (0cee.b832.9300):
SW1 - Gi0/0 - designated path cost 4 = Root
SW4 - Gi0/3 - designated path cost 0 = designated
SW1 - Gi0/0 - designated path cost 4 = designated
SW2 - Gi0/0 - designated path cost 4 = Root Port
SW1 - Gi0/1 - designated path cost 4 = designated
SW3 - Gi0/1 - designated path cost 4 = Root Port
SW2 - Gi0/2 - designated path cost 8 = designated
SW3 - Gi0/2 - designated path cost 8 = Blocked
Resumen
• Root Bridge se elige el de menor prioridad y se hay empate el de menor MAC.
• puerto Root (root port):
• Solo en switches (bridges) que no son root.
• Envía tráfico hacia el root bridge.
• Solo uno por switch.
• Pueden llenar la tabla MAC.
• Puerto Designado (designated port):
• Aparecen en switches (bridges) tanto root como no root.
• Todos los puertos del root bridge son puertos designados.
• Envían y reciben tramas desde el root bridge.
• Solo uno por segmento.
• Pueden llenar la tabla MAC.
• Puertos no designados (nondesignated port):
• No envían paquete (Blocking)
• No llenan la tabla MAC.
• Puerto deshabilitado (Disabled port):
• Un puerto que está en shutdown.
• Estados por los que pasa un puerto de switch:
• Disabled: Los puertos están administrativamente shutdown o Disabled. Nno forma parte del
STP.
• Blocking: Al inicio esta en Blocking para prevenir bucles. No recibe ni envie nada ni aprende
MACs solo recibe BPDUs.
• Listening: Pasa de Blocking a Listening si este puerto puede ser root o designated. No envia
ni recibe tramas, pero envia y recibe BPDUs, participa en STP. Si un puerto pierde su estado
de root o designated vuelve al estado de Blocking.
• Learning: Cuando expira Forward Delay pasa a Learning. No manda ni recibe tramas, manda
BPDUs, aprende MACs que añade a la tabla de MACs (CAM).
• Forwarding: Tras otro tiempo de Forward Delay el puerto pasa a Forwarding. Puerto es
totalmente operativo, envía y recibe tramas, BPDUs y aprende MACs.
• hello-time: Por defecto los BPDUs se envían cada 2 segundos. Valores permitidos de 1 a 10
segundos.
• forward-time: Por defecto el valor es 15 segundos. Valores permitidos de 4 a 30 segundos.
• max-age: Por defecto el valor es de 20 segundos. Permite valores de 6 a 40 segundos.
• Common Spanning Tree (CST): Estándar IEEE 802.1Q, una sola instancia de STP con todas las
VLANs. Las BPDUs son enviadas por los enlaces Trunk usando la VLAN nativa con tramas sin
marcar.
• Per-VLAN Spanning Tree (PVST): Propietaria de Cisco, usa una instancia por cada VLAN.
Requiere el uso de Trunks ISL (Inter-Switch Link), no hay comunicación entre PVST y CST. Permite
balanceo de carga.
• Per-VLAN Spanning Tree Plus (PVST+): Versión mejorada de PVST que permite interactuar entre
PVST y CST.
Spanning Tree Protocol: 2 - Configuración
• Spanning Tree Protocol: 1 - Tradicional
• Spanning Tree Protocol: 2 - Configuración
• Spanning Tree Protocol: 3 - Protegiendo la topología
• Spanning Tree Protocol: 4 - Avanzado
STP Root Bridge
Colocación del Root Bridge
Si dejamos la elección del Root Bridge por defecto (prioridad y MAC) puede que el resultado no sea el
óptimo e incluso sea el peor de todos, como por ejemplo se elija el switch más lento y/o viejo y que no pueda
con la carga del STP. Por eso si el switch más lento tiene la misma prioridad (por defecto TODOS la tienen)
pero MAC más baja, será elegido como Root Bridge lo cual no interesa.
Por eso el root bridge debe ser el switch más potente y que más centrado esté en la estructura de la red, nunca
un switch de acceso.
Otro punto a tener en cuenta es que pasa si el Root Bridge cae, pues que se elegirá a otro Root Bridge que
puede ser otra mala elección.
Configuración del Root Bridge.
Por eso para evitar sorpresas se deben hacer 2 cosas:
• Configurar un switch para que sea Root Bridge
• Configurar un switch como Root Bridge secundario, para el caso de que el primario falle.
Se puede configurar un switch para que sea Root Bridge con uno de estos dos métodos:
1. Configurar manualmente la prioridad (dando un valor más bajo) para que el switch sea elegido como
Root. Debemos conocer el valor de la prioridad de todos los switches en la vlan correspondiente para
poder asignarle un valor menos. Para poder cambiar la prioridad usamos el comando:
Switch(config)# spanning-tree vlan vlan-list priority bridge-priority
2. La prioridad (bridge-priority) por defecto es de 32768, pero podemos usar de 0 a 65535. Si el sistema
extendido de IDs de STP está activado, la prioridad por defecto sigue siendo 32768, pero el rango es
de 0 a 61440 y en múltiplos de 4096, ya que en la prioridad está incluida la vlan ID. Valores posibles:
0 4096 8192 12288 16384 20480 24576 28672 32768 36864 40960 45056 49152 53248 57344 61440
Forzar la elección de Root Bridge que cambia su prioridad asumiendo donde está respecto a otros
switches en la red. Usaremos el comando (macro):
Switch(config)# spanning-tree vlan vlan-list root {primary | secondary }
[diameter diameter]
Este comando es realmente una macro que ejecuta varios comandos y lo que hace es forzar (pero no
garantiza) a que un switch sea el Root Bridge.
Personalización de Spanning-Tree
Recordemos los 4 criterios en que STP basa su elección del Root Path:
1. El Bridge ID (prioridad y MAC) más bajo
2. El coste de Root Peth más bajo
3. El Bridge ID de origen más bajo
4. El puerto (el port ID) de origen más bajo
Ajustando el coste del Root Path
Podemos usar el siguiente comando para cambiar el coste de un puerto:
Switch(config-if)# spanning-tree [vlan vlan-list] cost cost
Si se especifica el parámetro vlan solo se cambia el coste del puerto para dicha vlan, si no se cambia el coste
para todas las vlans del puerto.
Personalizando el Port ID
El cuarto criterio del STP es el Port ID, el cual es de 16 bits, 8 bits para la prioridad y 8 para el número de
puerto. Para ver este valor podemos usar el comando:
Switch# show spanning-tree interface tipo mod/num
y nos fijamos en la columna Prio.Nbr (Prio = prioridad y Nbr = número de interface). El número de interface
no siempre coincide con el número de puerto físico especialmente en switches con módulos o slots.
Para cambiar la prioridad de un puerto:
Switch(config-if) spanning-tree [vlan vlan-list] port-priority port-priority.
El valor de port-priority va de 0 a 255 y por defecto es 128.
Personalizar la convergencia de Spanning-Tree
Modificando los contadores (Timers) de STP
STP usa 3 contadores (timers) para mantener la pista de los estados de los puertos y la comunicación entre
switches. Recalcar que estos contadores deben modificarse en el Root Bridge ya que este propaga los 3
contadores dentro de las BPDUs.
Modificando los contadores (timers) manualmente.
Podemos usar uno de estos comandos para modificar el contador que queramos:
Switch(config)# spanning-tree [vlan vlan-id] hello-time seconds
Switch(config)# spanning-tree [vlan vlan-id] forward-time seconds
Switch(config)# spanning-tree [vlan vlan-id] max-age seconds
El temporizador hello-time activa los mensajes periódicos de "hello" (realmente es la configuración BPDU)
que se envían desde el Root Bridge a otros switches. Este temporizador también establece el intervalo en el
que un switch espera escuchar un hello enviado desde sus switches vecinos. Por defecto los BPDUs de
configuración se envían cada 2 segundos. Se puede modificar el temporizador hello-timer con un valor de 1 a
10 segundos.
El temporizador forward-time determina la cantidad de tiempo que un puerto permanece en el estado de
Listening antes de pasar al estado de Learning, y el tiempo que permanece en el estado de Learning antes de
pasar al estado de Forwarding. Se puede modificar el temporizador forward-time con un valor de 4 a 30
segundos. Por defecto el valor es 15 segundos. Este temporizador se debe modificar solo bajo consideración
cuidadosa porque el valor depende del diámetro de la red y la propagación de BPDUs en todos los switches.
Un valor demasiado bajo permite que se formen bucles.
El temporizador max-age especifica el tiempo de vida de un BPDU almacenada que se ha recibido de un
switch vecino con un puerto designated. Supongamos que las BPDU se reciben en un puerto de switch
nondesignated cada 2 segundos, como se esperaba. Entonces ocurre un fallo (que no implique una caída
enlace físico), que impide que se envíen BPDU. El switch receptor espera hasta que el temporizador max-age
caduque para escuchar otras BPDUs. Si no se recibe ninguna, el puerto nondesignated pasa al estado de
escucha y el conmutador receptor genera BPDU de configuración. Este puerto se convierte en el puerto
designated para restaurar la conectividad en el segmento. Por defecto el valor es de 20 segundos. Permite
valores de 6 a 40 segundos.
NOTA: los contadores se pueden modificar por Vlan afectando solo a dicha vlan, si no se aplicarán a todas
las vlans.
Modificando los contadores (timers) automáticamente
Switch(config)# spanning-tree vlan vlan-id root {primary | secondary} [diameter
diameter [hello-time hello-time]]
Convergencia de enlace redundante
También tenemos los sigueintes métodos de convergencia de STP rápida en caso de que ocurra un fallo de
enlace:
• PortFast: habilita la conectividad rápidamente en switches de acceso donde el otro extremo son
servidores. Se salta los estados Listening y Learning.
• UplinkFast: Habilita la convergencia rápida en switches de acceso donde hay enlaces (uplinks)
redundantes contra switches de distribución.
• BackboneFast: habilita la convergencia rápida en la red core o backbone tras un cambio de topología.
PortFast: Nodos de la capa de Acceso.
La característica PortFast acorta el tiempo de los estados Listening y Learning a prácticamente nada. Cuando
el enlace de un servidor levanta el puerto del switch (configurado con PortFast) pasa al estado de Forwarding
inmediatamente. La detección de bucles vía STP sigue activa y en caso de que se detecte un bucle el puerto
es puesto en el estado Blocking. Las BPDU TCN (notificaciones de cambio de topología) no son enviadas en
un puerto con PortFast. Por defecto, PortFast está desactivado en todos los interfaces del switch.
Podemos activar PortFast globalmente en todos los puertos en modo acceso (que no sean trunk):
Switch(config)# spanning-tree portfast default
y Podemos activar o desactivar el PortFast a nivel de puerto:
Switch(config-if)# [no] spanning-tree portfast
UplinkFast: Uplinks de la capa de Acesso
La característica UplinkFast habilita que en switches de acceso con más de un uplink funcionando (uno como
Forwarding y otros Blocking) como Root Port, cuando el uplink principal (el Forwarding) cae uno de los
otros Uplinks pase de Blocking a Forwarding inmediatamente.
Para configurarlo lo hacemos de forma global para todos los puertos y para todas las Vlans:
Switch(config)# spanning-tree uplinkfast [max-update-rate pkts-per-second]
Este comando NO está permitido en el Root Bridge y además eleva la prioridad del switch a 49152 además el
coste de los puertos también se elevan a 3000, evitando así ser elegido ni como RootBridge ni los puertos
como Root Port. El switch envía tramas dummy multicast al destino 0100.0ccd0cdcd cada max-update-rate.
BackboneFast: Caminos redundantes de Backbone.
Es muy simple de configurar y opera acortando el contador Max Age cuando sea necesario. Aunque esta
función acorta el tiempo que un switch espera para detectar un fallo de Root Path, los puertos deben pasar por
el contador Forward Delay en los estados Listening y Learning, por lo que solo reduce el tiempo de
convergencia de 50 segundos a 30. Debe configurarse en todos los switches de la red.
Para configurar BackboneFast usamos el comando global:
Switch(config)# spanning-tree backbonefast
Para comprobar el estado del BackboneFast podemos ejecutar este comando:Switch# show spanning-tree
backbonefast BackboneFast is enabled
Monitorizando STP
Varios comandos para monitorizar el estado del STP.
Muestra todos los posibles parámetros de STP para todas las Vlans (detallado o no):
Switch# show spanning-tree [detail]
Muestra el número total de puertos de switch actualmente en cada uno de los estados de STP:
Switch# show spanning-tree [vlan vlan-id] summary
Busca el Root Bridge ID, el Root Port y el coste del Root Path:
Switch# show spanning-tree [vlan vlan-id] root
Muestra el Bridge ID y los contadores de STP en el switch actual:
Switch# show spanning-tree [vlan vlan-id] bridge
Muestra la actividad de STP en la interface especificada:
Switch# show spanning-tree interface type port
Muestra el estado de UplinkFast:
Switch# show spanning-tree uplinkfast
Muestra el estado de BackboneFast:
Switch# show spanning-tree backbonefast
Ejemplo
Según el esquema y sus valores pro defecto el RootBridge es el SW5, lo cual es una muy mala elección, los
segmentos cortados son SW1-Gi0/1(X)--SW3-Gi0/1(D) y SW3-Gi0/3(X)--SW4-Gi0/3(D). (Donde (X) es
puerto bloqueado y (D) puerto designado).
Si configuramos menor prioridad en el SW1 con el siguiente comando:
spanning-tree vlan 1-4094 priority 4096
Conseguimos que SW1 sea RootBridge y ahora los segmentos cortado son SW2-Gi0/2(D)--SW3-Gi0/2(X) y
SW3-Gi0/3(D)--SW4-Gi0/3(X). (Donde (X) es puerto bloqueado y (D) puerto designado).
Resumen
• La prioridad (bridge-priority) por defecto es de 32768, pero podemos usar de 0 a 65535. Si está
activado el sistema de ID extendido, los posible IDs son: 0 4096 8192 12288 16384 20480 24576
28672 32768 36864 40960 45056 49152 53248 57344 61440.
• El valor de port-priority va de 0 a 255 y por defecto es 128.
• hello-time: Por defecto los BPDUs se envían cada 2 segundos. Valores permitidos de 1 a 10
segundos.
• forward-time: Por defecto el valor es 15 segundos. Valores permitidos de 4 a 30 segundos.
• max-age: Por defecto el valor es de 20 segundos. Permite valores de 6 a 40 segundos.
• PortFast: habilita la conectividad rápidamente en switches de acceso donde el otro extremo son
servidores. Se salta los estados Listening y Learning.
• UplinkFast: Habilita la convergencia rápida en switches de acceso donde hay enlaces (uplinks)
redundantes contra switches de distribución.
• BackboneFast: habilita la convergencia rápida en la red core o backbone tras un cambio de topología.
Spanning Tree Protocol: 3 - Protegiendo la topología
• Spanning Tree Protocol: 1 - Tradicional
• Spanning Tree Protocol: 2 - Configuración
• Spanning Tree Protocol: 3 - Protegiendo la topología
• Spanning Tree Protocol: 4 - Avanzado
Protegiendo contra BPDUs inesperados
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 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 de forma automática.
Root Guard designa que un puerto solo puede enviar o re-enviar BPDUs, pero no puede usarse para recibir
BPDUs. Por lo que previene que un puerto sea Root Port por donde normalmente se reciben BPDUs desde el
Root Bridge.
Por defecto, Root Guard está desactivado en todos los interfaces del switch.
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
Se deb usar Root Guard en los puertos del switch donde nunca esperará encontrar un Root Bridge para una
VLAN. De hecho, Root Guard afecta a todo el puerto para que nunca se pueda permitir un Root Bridge en
ninguna VLAN en el puerto. Cuando se escucha un BPDU superior en el puerto, el puerto completo se
bloquea.
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. El puerto se pone en shutdown y DEBE ser
activado manualmente o automáticamente usando el comando errdisable recovery.
Por defecto, BPDU Guard está desactivado en todos los interfaces del switch.
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
Se debe usar BPDU Guard en todos los puertos del switch donde está habilitado STP PortFast. Esto evita
cualquier posibilidad de que se agregue un switch al puerto, ya sea intencionalmente o por error. Sobre todo
es conveniente configurar BPDU Guard en puertos de switch de capa de acceso.
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. Cuando 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
Por lo general la unión entre switches es bidireccional, pero en algún extraño caso puede pasar que falla el
circuito de transmisión (en un GBIC o SFP) lo cual para los switches es un enlace bidireccional, pero el
tráfico solo va en un sentido, lo que se conoce como enlace unidireccional.
UniDirectional Link Detection (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.
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 el switch envía mensajes UDLD cada
segundo durante 8 segundos, si ninguno de esos mensajes se responden, el puerto se pasa al estado
errdisabled con lo que deja de transmitir tráfico.
Por defecto, UDLD está desactivado en todos los interfaces del switch.
UDLD puede configurarse de forma global (aunque solo afecta a los puertos de fibra óptica):
Switch(config)# udld {enable | aggressive | message time seconds}
Para modo normal usaremos enable y para modo agresivo aggressive y podemos indicar el intervalo de los
mensajes.
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 disable para
desactivar UDLD en un interface de fibra óptica.
Una vez que el modo agresivo UDLD haya puesto un puerto de switch en el estado errdisable, se debe usar el
siguiente comando para volver a habilitarlo:
Switch# udld reset
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 tanto
globalmente como a nivel de interface.
Para activarlo globalmente aunque SOLO afectará a los puertos configurados como PortFast:
Switch(config)# spanning-tree portfast bpdufilter default
Con esto activamos el filtro de BPDUs en TODOS los puertos que estén configurados como PortFast, los
puertos que no estén configurados con PortFast no se activa el filtro de BPDUs.
Para activar o desactivar ciertos puertos concretos:
Switch(config-if)# spanning-tree bpdufilter {enable | disable}
Con esto activamos el filtro de BPDUs en el puerto que esté configurados como PortFast, los puertos que no
estén configurados con PortFast no se activa el filtro de BPDUs.
Es muy importante activar el filtro de BPDUs en puertos que sepamos que sean un dispositivo, que sea
imposible generar un bucle y NUNCA este dispositivo va a aceptar o enviar BPDUs, ya que si no, se
permitirá funcionar el STP con normalidad.
IMPORTANTE: Si se ven BPDUs el puerto pierde su estado de PortFast, BPDU filtering se deshabilita y
STP toma el control por defecto. Cuando el puerto se levanta (UP) envía 10 BPDUs, si escucha cualquier
BPDU durante ese periodo, PortFast y el filtro BPDU se deshabilitan.
NOTA: si se habilita BPDU Guard y BPDU Filtering en la misma interface, BPDU Guard no tiene efecto ya
que BPDU Filtering tiene preferencia.
Consejo: No confundir el filtrado de BPDU (BPDU Filter) con la función BPDU Guard. BPDU Guard se usa
para detectar BPDUs de entrada en puertos donde no se espera que se vean las BPDUs, por lo que se protege
la estabilidad del STP impidiendo que se procesen esas BPDU. Por contra, el filtrado de BPDU (BPDU
Filter) impide que todas las BPDU se reciban o se envíen en un puerto de switch, lo que desactiva
efectivamente el STP.
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
Resumen
• Root Guard: se aplica a puertos donde NO se espera un Root Bridge, bloquea el puerto pero se
reactiva automaticamente cuando deja de recibir la BPDU con mejor prioridad
• BPDU Guard: se aplica a todos los puertos donde el está activado PortFast, deshabilita la interfaz
portfast al recibir una BPDU, dejando la interfaz en errdisable. Previene de recibir BPDU.
• BPDU Filter: Previene de enviar y recibir BPDU. Para el spanning-tree en el interface.
• Loop Guard: se aplica a los puertos no designados (nondesignated) pero no hay problema en
aplicarlo a todos los puertos.
• UDLD: se aplica a todos los enlaces de fibra óptica entre switches, se dede configurar en ambos
extremos.
• Combinaciones permisibles en un puerto de switch:
• Loop Guard y UDLD
• Root Guard y UDLD
• Combinaciones NO permisibles en un puerto de switch:
• Loop Guard y Loop Guard
• Root Guard y BPDU Guard
Spanning Tree Protocol: 4 - Avanzado
• Spanning Tree Protocol: 1 - Tradicional
• Spanning Tree Protocol: 2 - Configuración
• Spanning Tree Protocol: 3 - Protegiendo la topología
• Spanning Tree Protocol: 4 - Avanzado
Protocolo Rapid Spanning Tree
Rapid Spanning Tree Protocol (RSTP) está definido por IEEE 802.1w.
Comportamiento de los puertos RSTP
El Root Bridge se elige de igual manera que con STP (802.1D) mirando el Bridge ID (prioridad + MAC) más
bajo. Los puertos en RSTP pueden ser:
• Root Port: El el único puerto de cada switch el cual tiene el mejor camino hacia el Root Bridge. Esto
es idéntico a STP (802.1D) así como que el Root Bridge no tiene puerto Root.
• Designated Port: El puerto de switch en un segmento de red que tiene el mejor coste (root path cost)
hacía el root.
• Alternate Port: Es un puerto que tiene un camino alternativo hacía el Root, un camino diferente del
que toma el Root Port, por lo que es menos deseable (por ejemplo dos uplinks de un switch de acceso
uno será el Root y el otro el Alternate).
• Backup Port: Es un puerto que provee de redundancia (pero menos deseable) a un segmento donde
ya hay otro enlace. (un switch puede o no tener un camino de backup).
RSTP define los estados de los puertos de acuerdo a lo que el puerto hace con las tramas entrantes. Los
estados son:
• Discarding: Las tramas entrantes son rechazadas (dropped), tampoco se aprenden MACs (en STP
802.1D sería una combinación de los estados Disabled, Blocking y Listening. El estado Listening no
se necesita porque RSTP puede negociar rápidamente un cambio de estado sin escuchar primero las
BPDUs).
• Learning: Se rechazan (dropped) las tramas entrantes, pero se aprenden MACs.
• Forwarding: Se envían las tramas entrantes de acuerdo con la MACs aprendidas (y que se aprenden).
BPDUs en RSTP
Ya que RSTP distingue sus BPDUs de los BPDUs de 802.1D pueden coexistir ambos. Cada puerto intenta
funcionar de acuerdo al BPDU que recibe, por ejemplo cuando se recibe en un puerto una BPDU 802.1D
(version 0) empieza a funcionar de acuerdo a las reglas de 802.1D.
Sin embargo, cada puerto tiene una medida que bloquea el protocolo en uso, en el caso de que se reciban
BPDU de 802.1D y RSTP dentro de un corto período de tiempo. Esto puede ocurrir si los switches en una red
se migran de un tipo de STP a otro. En lugar de alternar el tipo de STP durante una migración, el switch
mantiene el tipo de protocolo durante el temporizador de retardo de migración. Después de que este
temporizador caduque, el puerto puede cambiar los protocolos si es necesario.
Tipos de puerto
• Edge Port: es un puerto en el extremo de la red donde se conecta solo un servidor. Es lo mismo que
en STP un puerto PortFast. Por definición este tipo de puerto no puede formar un bucle por lo que
puede pasar directamente a Forwarding. Es importante tener en cuenta que si se recibe una BPDU en
un puerto Edge este puerto pierde su estado de Edge.
• Root Port: Es el puerto que tiene mejor coste hacia el raiz y solo puede haber un puerto Root en cada
switch (aunque puede haber caminos alternativos en otros puertos hacia el raiz, Alternate que pueden
ponerse en estado de Forwarding cuando el Root por cae).
• Point-to-Point Port: cualquier puerto que se conecta a otro switch y se convierte en Designated Port.
El estado del puerto lo decide un acuerdo rápido ente ambos switches en vez de que un temporizador
expire.
Sincronización
Para participar en la convergencia RSTP un switch debe decidir el estado de cada uno de sus puertos. Los
puertos que no son Edge empiezan en estado Discarding. Después de que los switches (cada uno con su
vecino) intercambian BPDUs se puede identificar el Root Bridge. Si un puerto recibe una BPDU superior de
un vecino ese puerto se convierte en Root Port.
Cambios de topología y RSTP
RSTP detecta un cambio de topología solo cuando un puerto que no es Edge (nonedge) pasa su estado a
Forwardingg. Esto puede parecer extraño ya que un fallo de un enlace no se usa como desencadenante.
Configuración RSTP
Para configurar un puerto como Edge usamos:
Switch(config-if)# spanning-tree portfast
Para forzar un puerto que actue como point-to-point usamos:
Switch(config-if)# spanning-tree link-type point-to-point
Rapid Per-VLAN spaning Tree Protocol
Para pasar a modo Rapid PVST+ (o RPVST+) usamos:
Switch(config)# spanning-tree mode rapid-pvst
Para designar y configurar un switch como root bridge primario usamos:
Switch(config)# spanning-tree vlan vlan-id root primary
Para designar y configurar un switch como root bridge secundario usamos:
Switch(config)# spanning-tree vlan vlan-id root secondary
Para verificar la configuración de un switch usamos:
Switch(config)# show spanning-tree vlan vlan-id
Multiple Spanning-Tree Protocol
MST se define en el estándar IEEE 802.1s. Se deben determinar el número de instancias a ejecutar (por
redundancia) y que vlans se configuran en cada instancia.
Regiones MST
MST es diferente de 802.1d y PVST+ aunque puede interoperar con ellos. Cada switch configurado con MST
debe saber que tipo de STP están ejecutando sus vecinos. Esto se hace configurando los switches en regiones
MST comunes, donde en cada switch en una región ejecuta MST con parámetros compatibles.
Por lo general en la mayoría de las redes, es suficiente una sola región MST, aunque se puede configurar más
de una región. Dentro de la región, todos los switches deben ejecutar la instancia de MST que está definida
por los siguientes atributos:
• Nombre de la configuración MST (32 caracteres). Region name.
• Número de revisión de la configuración MST (de 0 a 65535). Se debe configurar manualmente en
todos los switches el mismo número.
• Tabla con la relación entre instancia MST y la(s) vlan(s) (4096 entradas). Indica que instancia que
vlans contiene o que vlan está en que instancia.
Si dos o más switches tiene los mismos atributos están en la misma región, si no, están en regiones diferentes.
IST Instances
Dentro de una única región MST corre una instancia Internal Spanning Tree (IST) para que no haya bucle
entre los enlaces donde CST se une con la frontera de la región y todos los switches dentro de la región.
Debemos pensar en IST como un gran switch que se conecta a otro que usa CST.
Instancias MST
La idea detrás de MST es agrupar multiples VLANs a un número pequeño de instancias de STP. Dentro de
una región las instancias MST coexisten con IST. Cisco soporta un máximo de 16 instancias MST (MSTI)
dentro de una misma región, que van desde el 1 al 15 siendo la 0 utilizada por IST. Por defecto todas la
VLANs pertenecen a la instancia MST00, por lo que debemos explícitamente mapear las VLANs ala
instancia.
NOTA: en el esquema de arriba la región MST correo TRES instancias de MST, IST (0), MST1 (1) y MST2
(2).
Solo el IST (MSTI 0) puede enviar y recibir BPDUs MST. La información sobre cada uno de los otros MSTI
se adjunta a la BPDU del MST como un registro M. Por lo tanto, incluso si una región tiene las 16 instancias
activas, solo se necesita 1 BPDU para transmitir información STP sobre todas ellas.
Configuración MST
Para definir y configurar una región MST debemos seguir estos 7 pasos, de forma manual, en cada uno de los
switches que participen:
1. Activar MST en el switch:
Switch(config)# spanning-tree mode mst
2. Entrar en el modo de configuración de MST:
Switch(config)# spanning-tree mst configuration
Podemos ver como está actualmente la configuración con:
Switch(config)# show current
3. Asignar un nombre de configuración a la región (hasta 32 caracteres):
Switch(config-mst)# name name
4. Asignar un número de revisión de configuración (0 to 65,535):
Switch(config-mst)# revision version
Este número nos sirve a modo de seguimiento, por lo que cada vez que se haga un cambio en la
configuración se debe incrementar en 1 manualmente. Como la configuración dentro de una región
debe coincidir en TODOS los switches debemos replicar este incremento en todos los switches de la
misma región.
5. Mapear VLANs a una instancia MST:
Switch(config-mst)# instance instance-id vlan vlan-list
el parámetro instance-id (0 to 15) lleva información de la topología de las VLANs listadas, que
podemos incluirlas con rangos (usando el guión) o separadas por comas. Resaltar que por defecto
TODAS las VLANs van por la instancia 0, el IST.
6. Mostrar los cambios que hemos realizado, es importante para verificar la configuración:
Switch(config-mst)# show pending
7. Salir del modo de configuración de MST que inmediatamente aplica los cambios y los hace activos:
Switch(config-mst)# exit
O podemos cancelar los cambios con este comando:
Switch(config-mst)# abort
NOTA: Una vez activado y configurado MST, PVST+ se para y el switch cambia a RSTP. Un switch NO
puede operar a la vez MST y PVST+.
Comandos de configuración MST
Configura root bridge (macro):
Switch(config)# spanning-tree mst instance-id root {primary | secondary} [diameter
diameter]
Configura la prioridad del switch:
Switch(config)# spanning-tree mst instance-id priority bridge-priority
Configura el coste del puerto:
Switch(config)# spanning-tree mst instance-id cost cost
Configura la prioridad del puerto:
Switch(config)# spanning-tree mst instance-id port-priority port-priority
Configura los temporizadores:
Switch(config)# spanning-tree mst hello-time seconds
Switch(config)# spanning-tree mst forward-time seconds
Switch(config)# spanning-tree mst max-age seconds
Comandos de verificación MST
Switch# show spanning-tree mst
Switch# show spanning-tree mst Instancia
Switch# show spanning-tree mst Instancia detail
Switch# show spanning-tree mst interface tipo mod/num
Resumen
• Los puertos en RSTP pueden ser:
• Discarding: Las tramas entrantes son rechazadas (dropped), tampoco se aprenden MACs.
• Learning: Se rechazan (dropped) las tramas entrantes, pero se aprenden MACs.
• Forwarding: Se envían las tramas entrantes de acuerdo con la MACs aprendidas (y que se
aprenden).
• Los estados de los puertos en RSTP son:
• Edge Port: es un puerto en el extremo de la red donde se conecta solo un servidor. Es lo
mismo que en STP un puerto PortFast. No puede formar un bucle, pasa directamente a
Forwarding. Si se recibe una BPDU en un puerto Edge este puerto pierde su estado de Edge.
• Root Port: Es el puerto que tiene mejor coste hacia el raiz y solo puede haber un puerto Root
en cada switch.
• Point-to-Point Port: cualquier puerto que se conecta a otro switch y se convierte en
Designated Port. El estado del puerto lo decide un acuerdo rápido ente ambos switches en vez
de que un temporizador expire.

Spanning tree protocol

  • 1.
    Spanning Tree Protocol:1 - Tradicional • Spanning Tree Protocol: 1 - Tradicional • Spanning Tree Protocol: 2 - Configuración • Spanning Tree Protocol: 3 - Protegiendo la topología • Spanning Tree Protocol: 4 - Avanzado Bucles Un switch Ethernet transparente debe funcionar de la siguiente manera: • El switch debe escuchar las tramas que entran por los puertos para averiguar la MAC del dispositivo en dicho puerto. Con esa MAC construye una tabla indicando en que puerto la ha escuchado. • El switch está constantemente actualizando la tabla de MAC detectando nuevas MAC o que alguna haya cambiado a otro puerto. El switch puede enviar tramas mirando la MAC destino en la tabla de MACs que indica porque puerto debe enviarlas. • Si una trama llega con la dirección broadcast como dirección destino, entonces debe enviar la trama a todos los puertos disponibles a excepción del puerto por donde se recibió. De esta forma los broadcast pueden alcanzar todas las redes de Capa 2. Un switch solo segmente dominios de colisión pero no dominios de broadcast. • Si una trama llega con una dirección de destino que no se encuentra en la tala de MACs se trata de igual forma que el caso anterior (broadcast) y se envía a todos los puertos excepto por donde se recibió. Una vez que el switch aprenda por que puerto debe enviar esa trama almacena las MAC en la tabla. Este tipo de tramas se conoce como unknown unicast. • Las tramas que cruzan el switch no se pueden modificar por el mismo por lo que el proceso es transparente. Comunicación Spannign-Tree: Bridge Protocol Data Units (BPDU) Los switches envían mensajes de datos mediante bridge protocol data units (BPDU) por lo puertos usando la MAC origen del propio puerto y como destino a una dirección multicast (de STP) 01-80-c2-00-00-00. Existen 2 tipos de BPDU: • BPDU de configuración, que se usa para el calculo de spanning-tree. Protocol ID, Version, Message Type, Flags, Root Bridge ID, Root Path Cost • BPDU de notificación de Cambio de Topología (Topology Change Notification (TCN) BPDU), que se usa para anunciar cambios en la topología de la red. Sender Bridge Id, Port ID, Message Age, Maximum Age, Hello time, Forward time Eligiendo un Root Bridge Para que la topología esté libre de bucles se debe tomar un punto de referencia que se llama root bridge (el termino bridge "puente" se usa ya que esta tecnología se desarrollo para puentes pero se puede pensar como un switch). Para elegir al root bridge entre todos los switches se usa el bridge ID que todos los switches tienen, es único y consiste en un valor de 8 bytes dividido en dos partes: • Bridge Priority (2 bytes): es la prioridad de un switch en relación con el resto de switches. La prioridad puede estar entre 0 y 65535 y por defecto está en 32768 (0x80000). • MAC Address (6 bytes): la dirección MAC usada se obtiene del módulo de la supervisora, el backplane o una lista de 1024 direcciones que son asignadas a cada supervisora o backplane
  • 2.
    dependiendo del modelode switch. Es una dirección única y almacenada internamente que no puede ser modificada por el usuario. Cuando un switch se inicia no conoce su entorno por lo que asume que él es el root bridge. Cada switch empieza a enviar BPDUs con el root bridge ID igual que su bridge ID lo mismo que el sender bridge id que sirve para indicar quien es el que envía el BPDU. Una vez que se ha elegido el root bridge la BPDUs de configuración son enviadas solo por el root bridge y el resto de switches solo las reenvían añadiendo su bridge ID al BPDU. Los BPDUs recibidos se analizan para ver si el root bridge que se anuncia es mejor (es menor) que el que tiene el switch, por lo que los nuevos BPDUs que envía anuncia este nuevo root bridge manteniendo el sender bridge ID él mismo. Cuando el proceso termina todos los switches implicados están de acuerdo en cual es el root bridge (solo uno). Si un nuevo switch se conecta todo el proceso se vuelve a repetir hasta que se decida cual es el nuevo root bridge. El proceso de elección del switch root bridge se repite cada 2 segundos (hello time) y los empieza el root bridge actual. Eligiendo un Root Ports Una vez que se ha elegido el root bridge el resto de switches deben elegir su root port (solo debe haber uno por switch) que es el puerto con menor coste hacia el root bridge (en caso de empate de mas de un puerto será el puerto con menor path cost y el puerto con menor ID. El coste es un valor acumulativo de todos los enlaces hasta llegar al root bridge. Cada enlace tiene un coste que se llama path cost y la suma de todos los costes de todos los enlaces hasta llegar al root bridge se llama root path cost y es el que se envía en el BPDU. Link Bandwidth STP Cost 4 Mbps 250 10 Mbps 100 16 Mbps 62 45 Mbps 39 100 Mbps 19 155 Mbps 14 622 Mbps 6 1 Gbps 4 10 Gbps 2 El coste de root path cost se determina de la siguiente manera: 1. El root bridge envía un BPDU con el root path cost a cero ya que todos sus puerto están directamente conectados. 2. Cuando el siguiente switch recibe esta BPDU, suma al root path cost el coste del puerto por donde ha recibido la BPDU (esto se realiza nada más recibir la BPDU). 3. Este switch vecino envía la BPDU con el nuevo valor del root path cost. 4. Y el proceso se repite según se vaya recibiendo la BPDU a los switches según vayan estando más alejados del root bridge. 5. Es importante remarcar que el root path cost se incrementa cuando el switch recibe la BPDU y que si calculamos el root path cost manualmente en un esquema tenerlo presente de sumar el coste cuando entra en el switch nunca cuando sale.
  • 3.
    Cada switch almacenael mejor root path cost que ha recibido, por lo que si recibe uno mejor del que tiene almacenado guarda el nuevo y por tanto actualiza que su nuevo root port es el puerto por donde ha recibido el menor root path cost. Eligiendo los Designated Ports Una vez que se tiene el root bridge y el root port del resto de switches, estos deben elegir los designated ports (uno por cada segmento). Si un un switch recibe una BPDU con menor root path cost asume que el puerto del switch vecino es el designated port, por el contrario si la BPDU que recibe tiene un mayor root path cost asume que su puerto (por donde recibe la BPDU) es el designated port. Puede ocurrir que un switch reciba por varios puerto el mismo root cost path con lo cual hay un "empate" que hay que romper para ello STP tiene 4 condiciones para romper este empate: 1. El root bridge ID más bajo. 2. El root path cost más bajo hacia el root bridge. 3. El bridge ID más bajo del emisor. 4. El port ID más bajo del emisor. El papel que desempeñan los puertos de STP Los puertos pueden desempeñar un papel según el tipo que sean: • puerto Root (root port): • Solo en switches (bridges) que no son root. • Envía tráfico hacia el root bridge. • Solo uno por switch. • Pueden llenar la tabla MAC. • Puerto Designado (designated port): • Aparecen en switches (bridges) tanto root como no root. • Todos los puertos del root bridge son puertos designados. • Envían y reciben tramas desde el root bridge. • Solo uno por segmento. • Pueden llenar la tabla MAC. • Puertos no designados (nondesignated port): • No envían paquete (Blocking) • No llenan la tabla MAC. • Puerto deshabilitado (Disabled port): • Un puerto que está en shutdown. Estados de STP Cuando el STP está activo un puerto empieza en estado desactivado (Disabled) y pasa por ciertos estados hasta alcanzar el estado activo (Forwarding). Los estados son: • Disabled: Los puertos están administrativamente shutdown o por una condición de error están en estado Disabled. Este estado no forma parte de cambio de estados del STP. • Blocking: Cuando un puerto se inicializa comienza en estado Blocking para prevenir bucles. En este estado un puerto no puede ni recibir ni enviar nada ni aprende MACs solo recibe BPDUs para conocer
  • 4.
    el estado deotros switches. Además los puertos que se eliminan de la redundancia para evitar un bucle se ponen en este estado de Blocking. • Listening: Un puerto pasa del estado Blocking al estado Listening si el switch cree que este puerto puede ser un root o designated port y va camino de ser un puerto activo (Forwarding). En este estado (Listening) no puedo enviar o recibir tramas, pero ahora puede enviar y recibir BPDUs con lo que este switch participa activamente en el STP. Si el puerto pierde su estado de root o designated entonces vuelve al estado de Blocking. • Learning: Tras pasar en modo Listening durante un tiempo (llamado Forward Delay) el puerto puede pasar al estado Learning. Aún el puerto sigue sin poder mandar o recibir tramas, sigue mandando BPDUs pero ahora el switch aprende MACs que añade a la tabla de MACs (CAM). Este estado da un poco de tiempo a que el switch se asiente. • Forwarding: Tras otro tiempo de Forward Delay el puerto pasa del estado Learning a Forwarding. En este estado el puerto es totalmente operativo, envía y recibe tramas, BPDUs y aprende MACs. Para saber el estado de un puerto podemos usar el comando: Switch#show spanning-tree interface type mod/port O para encontrar problema el comando debug: debug spanning-tree switch state Temporizadores (timers) de STP STP usa tres temporizadores (timers) para asegurarse que la red converge correctamente, son los siguientes: • Hello Time: Es el intervalo de tiempo entre cada BPDU de configuración que envía el root bridge. El Hello Time configurado en el root bridge determina el Hello Time de cada switch no root ya que estos reenvían las BPDUs que recibe del root. Aunque los switches no root tienen un Hello Time configurado localmente que se usa para temporizar los BPDUs TCN (cambio de topología). IEEE 802.1D especifica por defecto un Hello Time de 2 segundos. • Forward Delay: El intervalo de tiempo que un switch espera en los estados Listening y Learning. Por defecto son 15 segundos. • Max Age: El intervalo de tiempo máximo que un switch almacena una BPDU antes de descartarla. STP almacena la "mejor" copia de BPDU que ha recibido hasta que deja de recibir las BPDUs durante el periodo de tiempo especificado por Max Age en cuyo momento asume un cambio de topología y elimina el BPDU almacenado. Por defecto este valor es de 20 segundo. NOTA: los valores por defecto de los temporizadores están basados en que se asume que el root bridge está en el centro y de él cuelgan 6 switches. CONSEJO: Los temporizadores STP se pueden configurar o ajustar desde la línea de comandos. Sin embargo, los valores del temporizador nunca deben cambiarse de los valores predeterminados sin una consideración cuidadosa. En tal caso, los valores deben cambiarse solo en el switch que es el Root Bridge. Los valores del temporizador se anuncian en los campos dentro de la BPDU. El Root Bridge garantiza que los valores del temporizador se propagan a todos los demás switches. Cambios de topología Para anunciar un cambio en la topología actual de la red, los switches envían una BPDU TCN. Un cambio de topología ocurre cuando un switch pasa un puerto al estado Forwarding o cambia un puerto de los estados Forwarding o Learning al estado Blocking (o lo que es lo mismo un puerto cambia a UP o DOWN. El switch
  • 5.
    envía una BPDUTCN por su root port para que le llegue al root bridge. La BPDU TCN no lleva información sobre el cambio en sí solo que se ha producido un cambio. El switch no envía la BPDU TCN si el puerto ha sido configurado con el parámetro PortFast. El switch continua enviando BPDUs TCN cada intervalo Hello Time. Cuando el root bridge recibe el BPDU TCN envía la BPDU de configuración con el flag de TCN activo, lo cual hace que todos los switches acorten sus tiempos de memorización de MACs (que por defecto es 300 segundos) al tiempo de Forward Delay (que es por defecto 15 segundos). Tipos de STP • Common Spanning Tree (CST): es el estándar de IEEE 802.1Q que además de especificar como se hacen los trunks, especifica una sola instancia de STP que engloba todas las VLANs. Esta instancia es conocida como Common Spanning Tree (CST). Las BPDUs son enviadas por los enlaces Trunk usando la VLAN nativa con tramas sin marcar. Teniendo una sola instancia para todas las VLANs simplifica la configuración y la carga de la CPU del switch durante los cálculos de STP aunque tiene por contra limitaciones. • Per-VLAN Spanning Tree (PVST): Es la versión propietaria de Cisco que ofrece más flexibilidad al usar una instancia por cada VLAN. Requiere el uso de Trunks ISL (Inter-Switch Link) por lo que en networks con PVST y CST no hay comunicación. También permite balanceo de carga teniendo un grupo de VLANs por un camino y otras VLANs por otro camino. • Per-VLAN Spanning Tree Plus (PVST+): Es la versión mejorada de PVST que permite interactuar switches con PVST y CST, lo que permite el uso en la misma red de PVST, PVST+ y CST. PVST+ actúa como traductor entre grupos de switches CST y grupos de switches PVST. PVST+ puede comunicarse directamente con PVST mediante el uso de trunks ISL. Sin embargo, para comunicarse con CST, intercambia BPDUs con CST como frames sin etiquetar a través de la VLAN nativa. Las BPDU de otras instancias de STP (otras VLAN) se propagan a través de las partes de la red CST mediante túneles. PVST+ envía estos BPDU mediante una dirección multicast única, de modo que el CST los reenvía a los vecinos sin interpretarlos primero. Eventualmente, las BPDU tunelizadas alcanzan otros switches PVST+ donde se entienden.
  • 6.
    Ejemplo Viendo el esquemay la siguiente tabla, podemos deducir que el Root Bridge es el SW4 ya que su Bridge ID (32769-0cee.b80a.7500) es el más bajo: Hello Max Fwd Vlan Bridge ID Time Age Dly Protocol ---- ------------------------------- ---- --- --- -------- SW1 32769 (32768, 1) 0cee.b86b.7400 2 20 15 rstp SW2 32769 (32768, 1) 0cee.b832.5600 2 20 15 rstp SW3 32769 (32768, 1) 0cee.b832.9300 2 20 15 rstp SW4 32769 (32768, 1) 0cee.b80a.7500 2 20 15 rstp Según el esquema y sabiendo que el Root Bridge es el SW4, podemos deducir lo siguiente: SW1 - Gi0/0 - designated path cost 4 SW1 - Gi0/1 - designated path cost 4 SW1 - Gi0/3 - designated path cost 0 = Root Port SW2 - Gi0/0 - designated path cost 4 = Root Port SW2 - Gi0/2 - designated path cost 8 SW2 - Gi1/0 - designated path cost 8 SW3 - Gi0/1 - designated path cost 4 = Root Port SW3 - Gi0/2 - designated path cost 8 SW4 - Gi0/3 - designated path cost 0 SW4 - Gi1/0 - designated path cost 0 En el segmento SW2-SW3 el root cost path es el mismo (8), por lo que el desempate se efectúa ya que la MAC de SW2 (0cee.b832.5600) es menor que la de SW3 (0cee.b832.9300): SW1 - Gi0/0 - designated path cost 4 = Root SW4 - Gi0/3 - designated path cost 0 = designated SW1 - Gi0/0 - designated path cost 4 = designated SW2 - Gi0/0 - designated path cost 4 = Root Port SW1 - Gi0/1 - designated path cost 4 = designated
  • 7.
    SW3 - Gi0/1- designated path cost 4 = Root Port SW2 - Gi0/2 - designated path cost 8 = designated SW3 - Gi0/2 - designated path cost 8 = Blocked Resumen • Root Bridge se elige el de menor prioridad y se hay empate el de menor MAC. • puerto Root (root port): • Solo en switches (bridges) que no son root. • Envía tráfico hacia el root bridge. • Solo uno por switch. • Pueden llenar la tabla MAC. • Puerto Designado (designated port): • Aparecen en switches (bridges) tanto root como no root. • Todos los puertos del root bridge son puertos designados. • Envían y reciben tramas desde el root bridge. • Solo uno por segmento. • Pueden llenar la tabla MAC. • Puertos no designados (nondesignated port): • No envían paquete (Blocking) • No llenan la tabla MAC. • Puerto deshabilitado (Disabled port): • Un puerto que está en shutdown. • Estados por los que pasa un puerto de switch: • Disabled: Los puertos están administrativamente shutdown o Disabled. Nno forma parte del STP. • Blocking: Al inicio esta en Blocking para prevenir bucles. No recibe ni envie nada ni aprende MACs solo recibe BPDUs. • Listening: Pasa de Blocking a Listening si este puerto puede ser root o designated. No envia ni recibe tramas, pero envia y recibe BPDUs, participa en STP. Si un puerto pierde su estado de root o designated vuelve al estado de Blocking. • Learning: Cuando expira Forward Delay pasa a Learning. No manda ni recibe tramas, manda BPDUs, aprende MACs que añade a la tabla de MACs (CAM). • Forwarding: Tras otro tiempo de Forward Delay el puerto pasa a Forwarding. Puerto es totalmente operativo, envía y recibe tramas, BPDUs y aprende MACs. • hello-time: Por defecto los BPDUs se envían cada 2 segundos. Valores permitidos de 1 a 10 segundos. • forward-time: Por defecto el valor es 15 segundos. Valores permitidos de 4 a 30 segundos. • max-age: Por defecto el valor es de 20 segundos. Permite valores de 6 a 40 segundos. • Common Spanning Tree (CST): Estándar IEEE 802.1Q, una sola instancia de STP con todas las VLANs. Las BPDUs son enviadas por los enlaces Trunk usando la VLAN nativa con tramas sin marcar. • Per-VLAN Spanning Tree (PVST): Propietaria de Cisco, usa una instancia por cada VLAN. Requiere el uso de Trunks ISL (Inter-Switch Link), no hay comunicación entre PVST y CST. Permite balanceo de carga. • Per-VLAN Spanning Tree Plus (PVST+): Versión mejorada de PVST que permite interactuar entre PVST y CST.
  • 8.
    Spanning Tree Protocol:2 - Configuración • Spanning Tree Protocol: 1 - Tradicional • Spanning Tree Protocol: 2 - Configuración • Spanning Tree Protocol: 3 - Protegiendo la topología • Spanning Tree Protocol: 4 - Avanzado STP Root Bridge Colocación del Root Bridge Si dejamos la elección del Root Bridge por defecto (prioridad y MAC) puede que el resultado no sea el óptimo e incluso sea el peor de todos, como por ejemplo se elija el switch más lento y/o viejo y que no pueda con la carga del STP. Por eso si el switch más lento tiene la misma prioridad (por defecto TODOS la tienen) pero MAC más baja, será elegido como Root Bridge lo cual no interesa. Por eso el root bridge debe ser el switch más potente y que más centrado esté en la estructura de la red, nunca un switch de acceso. Otro punto a tener en cuenta es que pasa si el Root Bridge cae, pues que se elegirá a otro Root Bridge que puede ser otra mala elección. Configuración del Root Bridge. Por eso para evitar sorpresas se deben hacer 2 cosas: • Configurar un switch para que sea Root Bridge • Configurar un switch como Root Bridge secundario, para el caso de que el primario falle. Se puede configurar un switch para que sea Root Bridge con uno de estos dos métodos: 1. Configurar manualmente la prioridad (dando un valor más bajo) para que el switch sea elegido como Root. Debemos conocer el valor de la prioridad de todos los switches en la vlan correspondiente para poder asignarle un valor menos. Para poder cambiar la prioridad usamos el comando: Switch(config)# spanning-tree vlan vlan-list priority bridge-priority 2. La prioridad (bridge-priority) por defecto es de 32768, pero podemos usar de 0 a 65535. Si el sistema extendido de IDs de STP está activado, la prioridad por defecto sigue siendo 32768, pero el rango es de 0 a 61440 y en múltiplos de 4096, ya que en la prioridad está incluida la vlan ID. Valores posibles: 0 4096 8192 12288 16384 20480 24576 28672 32768 36864 40960 45056 49152 53248 57344 61440 Forzar la elección de Root Bridge que cambia su prioridad asumiendo donde está respecto a otros switches en la red. Usaremos el comando (macro): Switch(config)# spanning-tree vlan vlan-list root {primary | secondary } [diameter diameter] Este comando es realmente una macro que ejecuta varios comandos y lo que hace es forzar (pero no garantiza) a que un switch sea el Root Bridge. Personalización de Spanning-Tree Recordemos los 4 criterios en que STP basa su elección del Root Path: 1. El Bridge ID (prioridad y MAC) más bajo 2. El coste de Root Peth más bajo
  • 9.
    3. El BridgeID de origen más bajo 4. El puerto (el port ID) de origen más bajo Ajustando el coste del Root Path Podemos usar el siguiente comando para cambiar el coste de un puerto: Switch(config-if)# spanning-tree [vlan vlan-list] cost cost Si se especifica el parámetro vlan solo se cambia el coste del puerto para dicha vlan, si no se cambia el coste para todas las vlans del puerto. Personalizando el Port ID El cuarto criterio del STP es el Port ID, el cual es de 16 bits, 8 bits para la prioridad y 8 para el número de puerto. Para ver este valor podemos usar el comando: Switch# show spanning-tree interface tipo mod/num y nos fijamos en la columna Prio.Nbr (Prio = prioridad y Nbr = número de interface). El número de interface no siempre coincide con el número de puerto físico especialmente en switches con módulos o slots. Para cambiar la prioridad de un puerto: Switch(config-if) spanning-tree [vlan vlan-list] port-priority port-priority. El valor de port-priority va de 0 a 255 y por defecto es 128. Personalizar la convergencia de Spanning-Tree Modificando los contadores (Timers) de STP STP usa 3 contadores (timers) para mantener la pista de los estados de los puertos y la comunicación entre switches. Recalcar que estos contadores deben modificarse en el Root Bridge ya que este propaga los 3 contadores dentro de las BPDUs. Modificando los contadores (timers) manualmente. Podemos usar uno de estos comandos para modificar el contador que queramos: Switch(config)# spanning-tree [vlan vlan-id] hello-time seconds Switch(config)# spanning-tree [vlan vlan-id] forward-time seconds Switch(config)# spanning-tree [vlan vlan-id] max-age seconds El temporizador hello-time activa los mensajes periódicos de "hello" (realmente es la configuración BPDU) que se envían desde el Root Bridge a otros switches. Este temporizador también establece el intervalo en el que un switch espera escuchar un hello enviado desde sus switches vecinos. Por defecto los BPDUs de configuración se envían cada 2 segundos. Se puede modificar el temporizador hello-timer con un valor de 1 a 10 segundos. El temporizador forward-time determina la cantidad de tiempo que un puerto permanece en el estado de Listening antes de pasar al estado de Learning, y el tiempo que permanece en el estado de Learning antes de pasar al estado de Forwarding. Se puede modificar el temporizador forward-time con un valor de 4 a 30 segundos. Por defecto el valor es 15 segundos. Este temporizador se debe modificar solo bajo consideración cuidadosa porque el valor depende del diámetro de la red y la propagación de BPDUs en todos los switches. Un valor demasiado bajo permite que se formen bucles.
  • 10.
    El temporizador max-ageespecifica el tiempo de vida de un BPDU almacenada que se ha recibido de un switch vecino con un puerto designated. Supongamos que las BPDU se reciben en un puerto de switch nondesignated cada 2 segundos, como se esperaba. Entonces ocurre un fallo (que no implique una caída enlace físico), que impide que se envíen BPDU. El switch receptor espera hasta que el temporizador max-age caduque para escuchar otras BPDUs. Si no se recibe ninguna, el puerto nondesignated pasa al estado de escucha y el conmutador receptor genera BPDU de configuración. Este puerto se convierte en el puerto designated para restaurar la conectividad en el segmento. Por defecto el valor es de 20 segundos. Permite valores de 6 a 40 segundos. NOTA: los contadores se pueden modificar por Vlan afectando solo a dicha vlan, si no se aplicarán a todas las vlans. Modificando los contadores (timers) automáticamente Switch(config)# spanning-tree vlan vlan-id root {primary | secondary} [diameter diameter [hello-time hello-time]] Convergencia de enlace redundante También tenemos los sigueintes métodos de convergencia de STP rápida en caso de que ocurra un fallo de enlace: • PortFast: habilita la conectividad rápidamente en switches de acceso donde el otro extremo son servidores. Se salta los estados Listening y Learning. • UplinkFast: Habilita la convergencia rápida en switches de acceso donde hay enlaces (uplinks) redundantes contra switches de distribución. • BackboneFast: habilita la convergencia rápida en la red core o backbone tras un cambio de topología. PortFast: Nodos de la capa de Acceso. La característica PortFast acorta el tiempo de los estados Listening y Learning a prácticamente nada. Cuando el enlace de un servidor levanta el puerto del switch (configurado con PortFast) pasa al estado de Forwarding inmediatamente. La detección de bucles vía STP sigue activa y en caso de que se detecte un bucle el puerto es puesto en el estado Blocking. Las BPDU TCN (notificaciones de cambio de topología) no son enviadas en un puerto con PortFast. Por defecto, PortFast está desactivado en todos los interfaces del switch. Podemos activar PortFast globalmente en todos los puertos en modo acceso (que no sean trunk): Switch(config)# spanning-tree portfast default y Podemos activar o desactivar el PortFast a nivel de puerto: Switch(config-if)# [no] spanning-tree portfast UplinkFast: Uplinks de la capa de Acesso La característica UplinkFast habilita que en switches de acceso con más de un uplink funcionando (uno como Forwarding y otros Blocking) como Root Port, cuando el uplink principal (el Forwarding) cae uno de los otros Uplinks pase de Blocking a Forwarding inmediatamente. Para configurarlo lo hacemos de forma global para todos los puertos y para todas las Vlans: Switch(config)# spanning-tree uplinkfast [max-update-rate pkts-per-second]
  • 11.
    Este comando NOestá permitido en el Root Bridge y además eleva la prioridad del switch a 49152 además el coste de los puertos también se elevan a 3000, evitando así ser elegido ni como RootBridge ni los puertos como Root Port. El switch envía tramas dummy multicast al destino 0100.0ccd0cdcd cada max-update-rate. BackboneFast: Caminos redundantes de Backbone. Es muy simple de configurar y opera acortando el contador Max Age cuando sea necesario. Aunque esta función acorta el tiempo que un switch espera para detectar un fallo de Root Path, los puertos deben pasar por el contador Forward Delay en los estados Listening y Learning, por lo que solo reduce el tiempo de convergencia de 50 segundos a 30. Debe configurarse en todos los switches de la red. Para configurar BackboneFast usamos el comando global: Switch(config)# spanning-tree backbonefast Para comprobar el estado del BackboneFast podemos ejecutar este comando:Switch# show spanning-tree backbonefast BackboneFast is enabled Monitorizando STP Varios comandos para monitorizar el estado del STP. Muestra todos los posibles parámetros de STP para todas las Vlans (detallado o no): Switch# show spanning-tree [detail] Muestra el número total de puertos de switch actualmente en cada uno de los estados de STP: Switch# show spanning-tree [vlan vlan-id] summary Busca el Root Bridge ID, el Root Port y el coste del Root Path: Switch# show spanning-tree [vlan vlan-id] root Muestra el Bridge ID y los contadores de STP en el switch actual: Switch# show spanning-tree [vlan vlan-id] bridge Muestra la actividad de STP en la interface especificada: Switch# show spanning-tree interface type port Muestra el estado de UplinkFast: Switch# show spanning-tree uplinkfast Muestra el estado de BackboneFast: Switch# show spanning-tree backbonefast
  • 12.
    Ejemplo Según el esquemay sus valores pro defecto el RootBridge es el SW5, lo cual es una muy mala elección, los segmentos cortados son SW1-Gi0/1(X)--SW3-Gi0/1(D) y SW3-Gi0/3(X)--SW4-Gi0/3(D). (Donde (X) es puerto bloqueado y (D) puerto designado). Si configuramos menor prioridad en el SW1 con el siguiente comando: spanning-tree vlan 1-4094 priority 4096 Conseguimos que SW1 sea RootBridge y ahora los segmentos cortado son SW2-Gi0/2(D)--SW3-Gi0/2(X) y SW3-Gi0/3(D)--SW4-Gi0/3(X). (Donde (X) es puerto bloqueado y (D) puerto designado). Resumen • La prioridad (bridge-priority) por defecto es de 32768, pero podemos usar de 0 a 65535. Si está activado el sistema de ID extendido, los posible IDs son: 0 4096 8192 12288 16384 20480 24576 28672 32768 36864 40960 45056 49152 53248 57344 61440. • El valor de port-priority va de 0 a 255 y por defecto es 128. • hello-time: Por defecto los BPDUs se envían cada 2 segundos. Valores permitidos de 1 a 10 segundos. • forward-time: Por defecto el valor es 15 segundos. Valores permitidos de 4 a 30 segundos. • max-age: Por defecto el valor es de 20 segundos. Permite valores de 6 a 40 segundos. • PortFast: habilita la conectividad rápidamente en switches de acceso donde el otro extremo son servidores. Se salta los estados Listening y Learning.
  • 13.
    • UplinkFast: Habilitala convergencia rápida en switches de acceso donde hay enlaces (uplinks) redundantes contra switches de distribución. • BackboneFast: habilita la convergencia rápida en la red core o backbone tras un cambio de topología.
  • 14.
    Spanning Tree Protocol:3 - Protegiendo la topología • Spanning Tree Protocol: 1 - Tradicional • Spanning Tree Protocol: 2 - Configuración • Spanning Tree Protocol: 3 - Protegiendo la topología • Spanning Tree Protocol: 4 - Avanzado Protegiendo contra BPDUs inesperados 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 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 de forma automática. Root Guard designa que un puerto solo puede enviar o re-enviar BPDUs, pero no puede usarse para recibir BPDUs. Por lo que previene que un puerto sea Root Port por donde normalmente se reciben BPDUs desde el Root Bridge. Por defecto, Root Guard está desactivado en todos los interfaces del switch. 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 Se deb usar Root Guard en los puertos del switch donde nunca esperará encontrar un Root Bridge para una VLAN. De hecho, Root Guard afecta a todo el puerto para que nunca se pueda permitir un Root Bridge en ninguna VLAN en el puerto. Cuando se escucha un BPDU superior en el puerto, el puerto completo se bloquea. 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. El puerto se pone en shutdown y DEBE ser activado manualmente o automáticamente usando el comando errdisable recovery. Por defecto, BPDU Guard está desactivado en todos los interfaces del switch. 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
  • 15.
    Se debe usarBPDU Guard en todos los puertos del switch donde está habilitado STP PortFast. Esto evita cualquier posibilidad de que se agregue un switch al puerto, ya sea intencionalmente o por error. Sobre todo es conveniente configurar BPDU Guard en puertos de switch de capa de acceso. 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. Cuando 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 Por lo general la unión entre switches es bidireccional, pero en algún extraño caso puede pasar que falla el circuito de transmisión (en un GBIC o SFP) lo cual para los switches es un enlace bidireccional, pero el tráfico solo va en un sentido, lo que se conoce como enlace unidireccional. UniDirectional Link Detection (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. 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 el switch envía mensajes UDLD cada segundo durante 8 segundos, si ninguno de esos mensajes se responden, el puerto se pasa al estado errdisabled con lo que deja de transmitir tráfico. Por defecto, UDLD está desactivado en todos los interfaces del switch. UDLD puede configurarse de forma global (aunque solo afecta a los puertos de fibra óptica): Switch(config)# udld {enable | aggressive | message time seconds} Para modo normal usaremos enable y para modo agresivo aggressive y podemos indicar el intervalo de los mensajes. También podemos configurarlo por cada puerto:
  • 16.
    Switch(config-if)# udld {enable| aggressive | disable} Para modo normal usaremos enable y para modo agresivo aggressive y podemos indicar disable para desactivar UDLD en un interface de fibra óptica. Una vez que el modo agresivo UDLD haya puesto un puerto de switch en el estado errdisable, se debe usar el siguiente comando para volver a habilitarlo: Switch# udld reset 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 tanto globalmente como a nivel de interface. Para activarlo globalmente aunque SOLO afectará a los puertos configurados como PortFast: Switch(config)# spanning-tree portfast bpdufilter default Con esto activamos el filtro de BPDUs en TODOS los puertos que estén configurados como PortFast, los puertos que no estén configurados con PortFast no se activa el filtro de BPDUs. Para activar o desactivar ciertos puertos concretos: Switch(config-if)# spanning-tree bpdufilter {enable | disable} Con esto activamos el filtro de BPDUs en el puerto que esté configurados como PortFast, los puertos que no estén configurados con PortFast no se activa el filtro de BPDUs. Es muy importante activar el filtro de BPDUs en puertos que sepamos que sean un dispositivo, que sea imposible generar un bucle y NUNCA este dispositivo va a aceptar o enviar BPDUs, ya que si no, se permitirá funcionar el STP con normalidad. IMPORTANTE: Si se ven BPDUs el puerto pierde su estado de PortFast, BPDU filtering se deshabilita y STP toma el control por defecto. Cuando el puerto se levanta (UP) envía 10 BPDUs, si escucha cualquier BPDU durante ese periodo, PortFast y el filtro BPDU se deshabilitan. NOTA: si se habilita BPDU Guard y BPDU Filtering en la misma interface, BPDU Guard no tiene efecto ya que BPDU Filtering tiene preferencia. Consejo: No confundir el filtrado de BPDU (BPDU Filter) con la función BPDU Guard. BPDU Guard se usa para detectar BPDUs de entrada en puertos donde no se espera que se vean las BPDUs, por lo que se protege la estabilidad del STP impidiendo que se procesen esas BPDU. Por contra, el filtrado de BPDU (BPDU Filter) impide que todas las BPDU se reciban o se envíen en un puerto de switch, lo que desactiva efectivamente el STP. 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]
  • 17.
    Muestra los estadosglobales 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 Resumen • Root Guard: se aplica a puertos donde NO se espera un Root Bridge, bloquea el puerto pero se reactiva automaticamente cuando deja de recibir la BPDU con mejor prioridad • BPDU Guard: se aplica a todos los puertos donde el está activado PortFast, deshabilita la interfaz portfast al recibir una BPDU, dejando la interfaz en errdisable. Previene de recibir BPDU. • BPDU Filter: Previene de enviar y recibir BPDU. Para el spanning-tree en el interface. • Loop Guard: se aplica a los puertos no designados (nondesignated) pero no hay problema en aplicarlo a todos los puertos. • UDLD: se aplica a todos los enlaces de fibra óptica entre switches, se dede configurar en ambos extremos. • Combinaciones permisibles en un puerto de switch: • Loop Guard y UDLD • Root Guard y UDLD • Combinaciones NO permisibles en un puerto de switch: • Loop Guard y Loop Guard • Root Guard y BPDU Guard
  • 18.
    Spanning Tree Protocol:4 - Avanzado • Spanning Tree Protocol: 1 - Tradicional • Spanning Tree Protocol: 2 - Configuración • Spanning Tree Protocol: 3 - Protegiendo la topología • Spanning Tree Protocol: 4 - Avanzado Protocolo Rapid Spanning Tree Rapid Spanning Tree Protocol (RSTP) está definido por IEEE 802.1w. Comportamiento de los puertos RSTP El Root Bridge se elige de igual manera que con STP (802.1D) mirando el Bridge ID (prioridad + MAC) más bajo. Los puertos en RSTP pueden ser: • Root Port: El el único puerto de cada switch el cual tiene el mejor camino hacia el Root Bridge. Esto es idéntico a STP (802.1D) así como que el Root Bridge no tiene puerto Root. • Designated Port: El puerto de switch en un segmento de red que tiene el mejor coste (root path cost) hacía el root. • Alternate Port: Es un puerto que tiene un camino alternativo hacía el Root, un camino diferente del que toma el Root Port, por lo que es menos deseable (por ejemplo dos uplinks de un switch de acceso uno será el Root y el otro el Alternate). • Backup Port: Es un puerto que provee de redundancia (pero menos deseable) a un segmento donde ya hay otro enlace. (un switch puede o no tener un camino de backup). RSTP define los estados de los puertos de acuerdo a lo que el puerto hace con las tramas entrantes. Los estados son: • Discarding: Las tramas entrantes son rechazadas (dropped), tampoco se aprenden MACs (en STP 802.1D sería una combinación de los estados Disabled, Blocking y Listening. El estado Listening no se necesita porque RSTP puede negociar rápidamente un cambio de estado sin escuchar primero las BPDUs). • Learning: Se rechazan (dropped) las tramas entrantes, pero se aprenden MACs. • Forwarding: Se envían las tramas entrantes de acuerdo con la MACs aprendidas (y que se aprenden). BPDUs en RSTP Ya que RSTP distingue sus BPDUs de los BPDUs de 802.1D pueden coexistir ambos. Cada puerto intenta funcionar de acuerdo al BPDU que recibe, por ejemplo cuando se recibe en un puerto una BPDU 802.1D (version 0) empieza a funcionar de acuerdo a las reglas de 802.1D. Sin embargo, cada puerto tiene una medida que bloquea el protocolo en uso, en el caso de que se reciban BPDU de 802.1D y RSTP dentro de un corto período de tiempo. Esto puede ocurrir si los switches en una red se migran de un tipo de STP a otro. En lugar de alternar el tipo de STP durante una migración, el switch mantiene el tipo de protocolo durante el temporizador de retardo de migración. Después de que este temporizador caduque, el puerto puede cambiar los protocolos si es necesario. Tipos de puerto • Edge Port: es un puerto en el extremo de la red donde se conecta solo un servidor. Es lo mismo que en STP un puerto PortFast. Por definición este tipo de puerto no puede formar un bucle por lo que puede pasar directamente a Forwarding. Es importante tener en cuenta que si se recibe una BPDU en un puerto Edge este puerto pierde su estado de Edge.
  • 19.
    • Root Port:Es el puerto que tiene mejor coste hacia el raiz y solo puede haber un puerto Root en cada switch (aunque puede haber caminos alternativos en otros puertos hacia el raiz, Alternate que pueden ponerse en estado de Forwarding cuando el Root por cae). • Point-to-Point Port: cualquier puerto que se conecta a otro switch y se convierte en Designated Port. El estado del puerto lo decide un acuerdo rápido ente ambos switches en vez de que un temporizador expire. Sincronización Para participar en la convergencia RSTP un switch debe decidir el estado de cada uno de sus puertos. Los puertos que no son Edge empiezan en estado Discarding. Después de que los switches (cada uno con su vecino) intercambian BPDUs se puede identificar el Root Bridge. Si un puerto recibe una BPDU superior de un vecino ese puerto se convierte en Root Port. Cambios de topología y RSTP RSTP detecta un cambio de topología solo cuando un puerto que no es Edge (nonedge) pasa su estado a Forwardingg. Esto puede parecer extraño ya que un fallo de un enlace no se usa como desencadenante. Configuración RSTP Para configurar un puerto como Edge usamos: Switch(config-if)# spanning-tree portfast Para forzar un puerto que actue como point-to-point usamos: Switch(config-if)# spanning-tree link-type point-to-point Rapid Per-VLAN spaning Tree Protocol Para pasar a modo Rapid PVST+ (o RPVST+) usamos: Switch(config)# spanning-tree mode rapid-pvst Para designar y configurar un switch como root bridge primario usamos: Switch(config)# spanning-tree vlan vlan-id root primary Para designar y configurar un switch como root bridge secundario usamos: Switch(config)# spanning-tree vlan vlan-id root secondary Para verificar la configuración de un switch usamos: Switch(config)# show spanning-tree vlan vlan-id Multiple Spanning-Tree Protocol MST se define en el estándar IEEE 802.1s. Se deben determinar el número de instancias a ejecutar (por redundancia) y que vlans se configuran en cada instancia. Regiones MST MST es diferente de 802.1d y PVST+ aunque puede interoperar con ellos. Cada switch configurado con MST debe saber que tipo de STP están ejecutando sus vecinos. Esto se hace configurando los switches en regiones MST comunes, donde en cada switch en una región ejecuta MST con parámetros compatibles.
  • 20.
    Por lo generalen la mayoría de las redes, es suficiente una sola región MST, aunque se puede configurar más de una región. Dentro de la región, todos los switches deben ejecutar la instancia de MST que está definida por los siguientes atributos: • Nombre de la configuración MST (32 caracteres). Region name. • Número de revisión de la configuración MST (de 0 a 65535). Se debe configurar manualmente en todos los switches el mismo número. • Tabla con la relación entre instancia MST y la(s) vlan(s) (4096 entradas). Indica que instancia que vlans contiene o que vlan está en que instancia. Si dos o más switches tiene los mismos atributos están en la misma región, si no, están en regiones diferentes. IST Instances Dentro de una única región MST corre una instancia Internal Spanning Tree (IST) para que no haya bucle entre los enlaces donde CST se une con la frontera de la región y todos los switches dentro de la región. Debemos pensar en IST como un gran switch que se conecta a otro que usa CST. Instancias MST La idea detrás de MST es agrupar multiples VLANs a un número pequeño de instancias de STP. Dentro de una región las instancias MST coexisten con IST. Cisco soporta un máximo de 16 instancias MST (MSTI) dentro de una misma región, que van desde el 1 al 15 siendo la 0 utilizada por IST. Por defecto todas la VLANs pertenecen a la instancia MST00, por lo que debemos explícitamente mapear las VLANs ala instancia. NOTA: en el esquema de arriba la región MST correo TRES instancias de MST, IST (0), MST1 (1) y MST2 (2).
  • 21.
    Solo el IST(MSTI 0) puede enviar y recibir BPDUs MST. La información sobre cada uno de los otros MSTI se adjunta a la BPDU del MST como un registro M. Por lo tanto, incluso si una región tiene las 16 instancias activas, solo se necesita 1 BPDU para transmitir información STP sobre todas ellas. Configuración MST Para definir y configurar una región MST debemos seguir estos 7 pasos, de forma manual, en cada uno de los switches que participen: 1. Activar MST en el switch: Switch(config)# spanning-tree mode mst 2. Entrar en el modo de configuración de MST: Switch(config)# spanning-tree mst configuration Podemos ver como está actualmente la configuración con: Switch(config)# show current 3. Asignar un nombre de configuración a la región (hasta 32 caracteres): Switch(config-mst)# name name 4. Asignar un número de revisión de configuración (0 to 65,535): Switch(config-mst)# revision version Este número nos sirve a modo de seguimiento, por lo que cada vez que se haga un cambio en la configuración se debe incrementar en 1 manualmente. Como la configuración dentro de una región debe coincidir en TODOS los switches debemos replicar este incremento en todos los switches de la misma región. 5. Mapear VLANs a una instancia MST: Switch(config-mst)# instance instance-id vlan vlan-list el parámetro instance-id (0 to 15) lleva información de la topología de las VLANs listadas, que podemos incluirlas con rangos (usando el guión) o separadas por comas. Resaltar que por defecto TODAS las VLANs van por la instancia 0, el IST. 6. Mostrar los cambios que hemos realizado, es importante para verificar la configuración: Switch(config-mst)# show pending 7. Salir del modo de configuración de MST que inmediatamente aplica los cambios y los hace activos: Switch(config-mst)# exit O podemos cancelar los cambios con este comando: Switch(config-mst)# abort NOTA: Una vez activado y configurado MST, PVST+ se para y el switch cambia a RSTP. Un switch NO puede operar a la vez MST y PVST+. Comandos de configuración MST Configura root bridge (macro):
  • 22.
    Switch(config)# spanning-tree mstinstance-id root {primary | secondary} [diameter diameter] Configura la prioridad del switch: Switch(config)# spanning-tree mst instance-id priority bridge-priority Configura el coste del puerto: Switch(config)# spanning-tree mst instance-id cost cost Configura la prioridad del puerto: Switch(config)# spanning-tree mst instance-id port-priority port-priority Configura los temporizadores: Switch(config)# spanning-tree mst hello-time seconds Switch(config)# spanning-tree mst forward-time seconds Switch(config)# spanning-tree mst max-age seconds Comandos de verificación MST Switch# show spanning-tree mst Switch# show spanning-tree mst Instancia Switch# show spanning-tree mst Instancia detail Switch# show spanning-tree mst interface tipo mod/num Resumen • Los puertos en RSTP pueden ser: • Discarding: Las tramas entrantes son rechazadas (dropped), tampoco se aprenden MACs. • Learning: Se rechazan (dropped) las tramas entrantes, pero se aprenden MACs. • Forwarding: Se envían las tramas entrantes de acuerdo con la MACs aprendidas (y que se aprenden). • Los estados de los puertos en RSTP son: • Edge Port: es un puerto en el extremo de la red donde se conecta solo un servidor. Es lo mismo que en STP un puerto PortFast. No puede formar un bucle, pasa directamente a Forwarding. Si se recibe una BPDU en un puerto Edge este puerto pierde su estado de Edge. • Root Port: Es el puerto que tiene mejor coste hacia el raiz y solo puede haber un puerto Root en cada switch. • Point-to-Point Port: cualquier puerto que se conecta a otro switch y se convierte en Designated Port. El estado del puerto lo decide un acuerdo rápido ente ambos switches en vez de que un temporizador expire.