Eligiendo Root Ports
Una vez elegido el root bridge se debe de escoger un Root Port para cada switch que no es el root bridge. El root Port siempre apunta hacia el root bridge.
STP asigna de manera local en el switch un valor llamado path cost a cada uno de los puertos del switch de acuerdo su ancho de banda:
Bandwidth | Path Cost |
10 Mbps | 100 |
100 Mbps | 19 |
1 Gbps | 4 |
10 Gbps | 2 |
El root port debe ser la mejor ruta hacia el root bridge definido por el menor costo acumulado de todas la interfaces o enlaces que utilice un switch en su camino hacia el root bridge. Este valor se denomina root path cost y es difundido en los BPDUs. No confundir path cost con root path cost porque son términos diferentes, path cost solo es valor que tiene un puerto en el switch y root path cost es la suma de todos los path cost de los puertos o enlaces de los diferentes switches para llegar al root bridge.
Veamos la siguiente topología para explicar la asignación de los puertos root tomando como referencia al SW1 como rot bridge:
La perspectiva de SW2 es la siguiente:
- SW2 tiene dos caminos viables para llegar al root bridge (SW1)
- La interfaz g1/1 tiene un Root path cost igual a 4 porque el root bridge lo tiene directamente conectado a través de un enlace de 1Gbps.
- La interfaz g1/3 cuenta con un Root Path Cost de 8 porque para llegar al root bridge es necesario pasar por el SW3, en total se utilizan dos enlaces de 1Gbps con un costo de 4 por enlace.
- STP escoge la interfaz g1/1 como root port debido a que el Root Path Cost es menor.
La perspectiva de SW3 es similar a la de SW2:
- SW3 tiene dos caminos viables para llegar al root bridge (SW1)
- La interfaz g1/2 tiene un Root path cost igual a 4 porque el root bridge lo tiene directamente conectado a través de un enlace de 1Gbps.
- La interfaz g1/3 cuenta con un Root Path Cost de 8 porque para llegar al root bridge es necesario pasar por el SW2, en total se utilizan dos enlaces de 1Gbps con un costo de 4 por enlace.
- STP escoge la interfaz g1/2 como root port debido a que el Root Path Cost es menor.
NOTA: El root bridge manda los BPDU con un root path cost igual a cero, porque sus puertos son o están directamente en el root bridge. Cuando el switch vecino mas cercano recibe el BPDU, agrega el valor path cost del puerto donde recibió el BDPU y actualiza el campo Root Path Cost antes de reenviar el BPDU por sus otros puertos conectados a otros switches.
Eligiendo Designated Ports
En primera, todos los puertos del root bridge son designados. STP identifica un puerto designado por cada segmento de red, dominio de colisión o enlace para enviar tráfico hacia y desde ese segmento.
Los puertos designados son los puertos del switch que no son Root port y que conectan a otros swtiches o dispositivos finales en la red. Pero si en algun punto de la red existe un enlace entre dos switches que tienen una ruta alterna hacia el root bridge, en este escenario ambos puertos no pueden ser designados, si ambos puertos tuvieran el rol de designados tendríamos un loop de capa 2, justamente aquí es donde STP bloquea ciertos puertos.
Continuando con la premisa de que cada dominio de colisión debe de elegir un puerto designado y de acuerdo a la topología anterior, vemos que SW2 y SW3 tienen un enlace (dominio de colisión) por los puerto g1/3. En este enlace solo uno de los puertos puede ser el puerto designado y la elección se lleva a cabo bajo ciertos criterios.
Los puertos designados se eligen conforme a:
- El menor costo hacia el root bridge (Root Path Cost)
- El menor bridge ID del switch enviado en el BPDU
- El menor ID del puerto enviado en el BPDU. Se utiliza cuando se tiene dos enlaces o más de un switch hacia el root bridge y se configura en el switch mas cercano al root bridge (el que envía el BPDU).
Nota: El ID de puerto es un valor de 0 a 255. El valor por defecto es 128. Y se puede modificar dentro del puerto especificando la vlan.
En nuestro diagrama de ejemplo vemos que los puertos g1/3 de SW2 y SW3 tienen el mismo Root Path Cost, por lo tanto utilizan el segundo criterio de elección para un puerto designado. SW2 se queda con el puerto designado porque el bridge ID es menor que el de SW3.
Ya que se conoce que el puerto g1/3 de SW3 no puede ser el puerto designado, ni root port, cualquier puerto que no sea elegido para ninguna de las opciones anteriores entra en el estado de Bloqueo. Es aquí donde los bucles o loops se eliminan. Veamos el resultado final del diagrama:
Port States
Todos los puertos que participan en STP deben pasar a través de varios estados. Un puerto comienza en un estado deshabilitado, moviéndose a través de varios estados pasivos y al final pasa a un estado activo donde se le permite reenviar tráfico. Los estados del puerto STP son los siguientes:
- Disabled: Puerto no operativo. No envía data/BPDU. Puertos que están administrativamente apagados por un administrador de red o por una condición de falla como err-disable, etc.
- Blocking: Después de que un puerto se inicializa, comienza en el estado de Bloqueo para que no se formen loops. En el estado de Bloqueo, un puerto no puede recibir o transmitir datos y no puede agregar direcciones MAC a su tabla de direcciones. En cambio, un puerto puede recibir solo BPDU para que el switch pueda escuchar a los otros switches vecinos. Además, los puertos que se ponen en modo de espera (standby) para eliminar un loop entran en el estado de Bloqueo. En resumen, es el puerto que solo recibe BPDUs de su vecino, estas BPDU le sirven por si tiene que cambiar a los estados Listening, Learning y Forwarding.
- Listening (LIS): : Un puerto se mueve de Blocking a Listening si el switch considera que el puerto se puede seleccionar como un puerto root o puerto designado. En este estado, el puerto aún no puede enviar o recibir frames de datos. Sin embargo, el puerto puede recibir y enviar BPDU para que pueda participar activamente en el proceso de la topología de Spanning Tree. Si el puerto es candidato para ser un puerto root o designado pasará al siguiente estado Learning.
- Learning (LRN): Después de un período de tiempo llamado forward delay en el estado listening, el puerto puede pasar al estado de learning. El puerto todavía envía y recibe BPDU como antes. Además, el switch ahora puede aprender nuevas direcciones MAC para agregar a su tabla de direcciones. Esto le da al puerto un período extra de participación silenciosa y permite que el switch recolecte cierta información de direcciones. Sin embargo, el puerto aún no puede enviar ningún frame de datos. Envía y recibe BPDUs y aprende direcciones MAC.
- Forwarding (FWD): Después de otro período de delay en el estado learning, el puerto puede pasar al estado forwarding. El puerto ahora es un puerto completamente funcional dentro de la topología de spanning-tree. Envía y recibe BPDUs, aprende direcciones MAC, puede enviar y recibir datos. El estado forwarding en un switch sólo es permitido si no se detectan enlaces redundantes que puedan provocar loops de capa 2 y si el puerto tiene la mejor ruta al root bridge como root port o puerto designado.
STP Timers
STP usa tres timers para asegurar que la red converja apropiadamente antes de que un loop pueda formarse:
- Hello timer: Es el intervalo de tiempo entre las BPDU de configuración enviadas por el root bridge. El valor del hello timer configurado en el root bridge determina el tiempo para todos los switches que no son el root bridge, estos switches simplemente retransmiten las BPDU de configuración a medida que se reciben del root bridge. Sin embargo, todos los switches tienen un hello timer configurado localmente que se usa para sincronizar las BPDU TCN cuando se retransmiten. El estándar IEEE 802.1D especifica este valor por default en 2 segundos.
- Forward Delay Timer: Intervalo de tiempo que pasa un puerto del switch en los estados de Listening y Learnning. El valor predeterminado es 15 segundos
- Max (Maximum) Age timer:Intervalo de tiempo que un switch almacena una BPDU antes de descartarla. Al ejecutar el STP, cada puerto del switch guarda una copia de la "mejor" BPDU que haya escuchado. Si el puerto del switch pierde contacto con la fuente de la BPDU (no se reciben más BPDU), el switch supone que debe haber ocurrido un cambio de topología después de transcurrido el tiempo máximo de antigüedad y, por lo tanto, la BPDU está vencida. El valor predeterminado del temporizador de Max Age es de 20 segundos.
Los timers STP pueden ser modificados desde la CLI, sin embargo, la modificación debe ser analizada minuciosamente. En caso de necesitar modificar los timers, los cambios deben realizarse sólo en el root bridge, estos cambios serán anunciados en los BPDU hacia los demás switches.
Topology Changes
Una vez que la topología STP está definida y se genera un cambio en ella, STP anuncia estos cambios a través de un BPDU TCN (Topology Change Notification).
Un cambio de topologia STP se produce cuando un switch mueve un puerto al estado forwarding o cuando un puerto en estado forwarding o learning se manda al estado de bloqueo.
El proceso de un cambio de topología es el siguiente:
- El switch que detecta el cambio envía un mensaje especial conocido como TCN (Topology Change Notification)
- Los TCN se envían a través de todos los puertos root de los switches hasta llegar al root bridge. Estos TCN BPDU deben de ser confirmados (TCA Topology Change Acknowladgment) .
- El root bridge envía los BPDU con la bandera TC (Topology Change) activa. Estos BPDU continuarán enviándose por Forwarding Delay (15 seg) + Max Age (20 seg). Es decir se enviarán los BPDU cada 2 segundos por 35 segundos con la bandera TC.
- Todos los switches (incluyendo el root bridge) que reciban los BPDU con la bandera de TC activa, reducen el tiempo de su tabla MAC para la VLAN afectada al tiempo de Forwarding Delay (15 seg). Es decir la tabla mac reduce su aging time de 5 minutos a 15 segundos para la vlan afectada. Toda las MAC que en 15 segundos no envíen nada se borran y posteriormente el root bridge envía los BPDU nuevamente sin la bandera TC y se reajusta la tabla mac a 5 minutos.
Ya vimos qué es Spanning-Tree, roles/estados de puertos, timers y como se dan los cambios de topología. Ahora hablemos sobre las versiones de Spanning-tree en los switches cisco, asi como su confiiguración y validación.