Spanning Tree Protocol: 4 - Avanzado
Rapid Spanning Tree Protocol (RSTP) está definido por IEEE 802.1w.
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:
RSTP define los estados de los puertos de acuerdo a lo que el puerto hace con las tramas entrantes. Los estados son:
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.
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.
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.
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
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
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.
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:
Si dos o más switches tiene los mismos atributos están en la misma región, si no, están en regiones diferentes.
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.
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.
Para definir y configurar una región MST debemos seguir estos 7 pasos, de forma manual, en cada uno de los switches que participen:
Switch(config)# spanning-tree mode mst
Switch(config)# spanning-tree mst configurationPodemos ver como está actualmente la configuración con:
Switch(config)# show current
Switch(config-mst)# name name
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.
Switch(config-mst)# instance instance-id vlan vlan-listel 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.
Switch(config-mst)# show pending
Switch(config-mst)# exitO 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+.
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
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