Spanning tree: Mucha información sobre el STP.

Spanning Tree Protocol (o simplemente STP) es un protocolo de red de nivel 2 del modelo OSI, que nos permite solucionar problemas de loop en redes conmutadas, permitiendo una mejor performance de la red.

El protocolo STP posibilita la inclusión de ligaciones redundantes entre los conmutadores, proveyendo caminos alternativos en el caso de falla de una de estas ligaciones. En este contexto, él sirve para evitar la formación de loops entre los conmutadores y permitir la activación y desactivación automática de los caminos alternativos.

Para hacer posible esta alternancia el algoritmo de Spanning Tree determina cual es el camino más eficiente (de menor costo) entre cada segmento separado por bridges o switches. Caso ocurra un problema en ese camino, el algoritmo va a recalcular, entre los existentes, el nuevo camino más eficiente, habilitando automáticamente este nuevo camino.

El nombre del protocolo deriva del algoritmo del árbol de expansión que lo vemos en la teoría de grafos.

Historia

El Spanning Tree Protocol está basado en un algoritmo que fue diseñado por Radia Perlman. Actualmente hay dos versiones distintas del Spanning Tree: la original (DEC STP) y la estandarizada por el IEEE (IEEE 802.1D), que no son compatibles entre sí.

Spanning Tree Protocol STP

La que se utiliza en la gran mayoría de los equipos actualmente es la versión estandarizada por el IEEE 802.1D.

Existen múltiples variantes del STP debido, principalmente, al tiempo que tarda en converger el algoritmo utilizado. Una de estas variantes es el Rapid Spanning Tree Protocol, estándar IEEE 802.1D-2004 que hoy en día ha reemplazado el uso del STP original.

2012 IEEE 802.1aq fue aprobado como un estándar para reemplazar IEEE 802.1D, IEEE 802.1w, IEEE 802.1s

Motivación

Los bucles ocurren cuando hay rutas alternativas hacia un mismo destino. Estas rutas alternativas son necesarias para proporcionar redundancia y así ofrecer una mayor fiabilidad a la red.

Los problemas aparecen cuando utilizamos dispositivos de interconexión de nivel de enlace, como un puente de red o un conmutador de paquetes.

Cuando de existir bucles en la topología de red, los dispositivos de interconexión de nivel de enlace de datos reenvían indefinidamente las tramas broadcast y multicast, creando así un bucle infinito que consume tanto el ancho de banda de la red como CPU de los dispositivos de enrutamiento.

Este bucle infinito por su vez lo que hacen es que se degrade el rendimiento de la red en muy poco tiempo, pudiendo incluso llegar a quedar inutilizable.

Al no existir un campo Time To Leave o TTL (tiempo de vida) en las tramas de capa 2, éstas se quedan atrapadas indefinidamente hasta que un administrador de sistemas rompa el bucle.

La solución consiste en permitir la existencia de enlaces físicos redundantes, pero creando una topología lógica libre de bucles, para que eso ocurra el STP calcula una única ruta libre de bucles entre los dispositivos de la red pero manteniendo los enlaces redundantes desactivados.

Si la configuración de STP cambia, o si un segmento en la red redundante llega a ser inalcanzable, el algoritmo reconfigura los enlaces y restablece la conectividad, activando uno de los enlaces que se encontraban desactivados.

Si el protocolo falla, es posible que ambas conexiones estén activas simultáneamente, lo que podrían dar lugar a un bucle de tráfico infinito en la LAN.

Bridge Protocol Data Units (BPDUs)

Para que se haga posible el cálculo del camino que tenga menor costo, se hace necesario que cada uno de los conmutadores tenga conocimiento de toda la topología de la red.

La disponibilidad de esas informaciones es asegurada por el cambio de cuadros especiales llamados BPDU (Bridge Protocol Data Units), entre los conmutadores. Los BPDU son frames enviados para cambio de información tales como el bridge ID y el costo del camino de un nudo hasta la raíz.

Hay tres distintos tipos de BPDU:

  • Configuration BPDU (CBPDU) – hace el cálculo de la Spanning Tree.
  • Topology Change Notification (TCN) BPDU – Usado para notificar cambios en la topología de la red.
  • Topology Change Notification Acknowledgment (TCA) – confirman la recepción del TCN

Funcionamiento

El protocolo establece identificadores y elige el que tiene la prioridad más alta, como el puente raíz (Root Bridge), y este puente raíz establecerá el camino de menor coste para todas las redes.

Después, entre todos los puentes que conectan un segmento de red, se elige un puente designado, el de menor coste, para transmitir las tramas hacia la raíz.

En este puente designado, el puerto que conecta con el segmento, es el puerto designado y el que ofrece un camino de menor coste hacia la raíz, el puerto raíz. Todos los demás puertos y caminos son bloqueados.

Elección del puente raíz

Cuando un switch se enciende, supone que es el switch raíz y envía las BPDUs que contienen la dirección MAC de sí mismo tanto en el BID raíz como emisor.

  • El BID o Bridge IDentifier: Bridge Priority + Bridge Mac Address.
    • El Bridge Priority es un valor configurable que por defecto está asignado en 32768.
    • El Bridge Mac Address es la dirección MAC (única) del Puente.

Cada switch reemplaza los BID de raíz más alta por BID de raíz más baja en las BPDU que se envían.

Todos los switches reciben las BPDU y determinan que el switch que cuyo valor de BID raíz es el más bajo será el puente raíz.

El administrador de red puede establecer la prioridad de switch en un valor más pequeño que el del valor por defecto (32768), el nuevo valor debe ser múltiplo de 4096, lo que hace que el BID sea más pequeño.

Elección de los puertos raíz

  1. Una vez elegido el puente raíz hay que calcular el puerto raíz para los otros puentes que no son raíz. El procedimiento a seguir para cada puente es casi el mismo:
  2. Entre todos los puertos del puente.
  3. Se escoge como puerto raíz el puerto que tenga el menor costo hasta el puente raíz.
    • En el caso de que haya dos o más puertos con el mismo costo hacia el puente raíz, se utiliza la dirección MAC que tenga menor valor para calcular el costo.
  4. Establecer el puerto raíz.

Elección de los puertos designados

Una vez elegido el puente raíz y los puertos raíz de los otros puentes, pasamos a calcular los puertos designados de cada segmento de red.

En cada enlace que exista entre dos switches habrá un puerto designado, el cual será el puerto del switch que tenga un menor coste para llegar al puente raíz, este coste administrativo es relativo a la velocidad del enlace, y en general se presenta algo muy similar a la tabla abajo:

Velocidad Costo
4 Mbps 250
10 Mbps 100
16 Mbps 62
100 Mbps 19
1 Gbps 4
2 Gbps 3
10 Gbps 2

Cada tipo de enlace tendrá un coste administrativo distinto, siendo de un coste menor el puerto con una mayor velocidad.

Si hubiese empate entre los costes administrativos que tienen los dos switches para llegar al root bridge, entonces se elegirá como Designated Port, el puerto del switch que tenga un menor Bridge ID (BID).

Puertos bloqueados

Todos los puertos que no son puertos raíz o puertos designados son marcados como puertos bloqueados y se quedan como alternativa en caso de que otro camino presente una falla.

Cambios en la topología (Mantenimiento del Spanning Tree)

El cambio en la topología puede ocurrir de dos formas:

  • El puerto se desactiva o se bloquea
  • El puerto pasa de estar bloqueado o desactivado a activado

Cuando se detecta un cambio se realizan los pasos a seguir:

  1. El switch notifica al puente raíz dicho cambio
  2. El puente raíz envía por broadcast dicho cambio.
  3. Para ello, se introduce una BPDU especial denominada notificación de cambio en la topología (TCN).
  4. Cuando un switch necesita avisar acerca de un cambio en la topología, comienza a enviar TCN en su puerto raíz.
  5. El switch que recibe la TCN se denomina puente designado y realiza el acuse de recibo mediante el envío inmediato de una BPDU normal con el bit de acuse de recibo de cambio en la topología (TCA).

La TCN es una BPDU muy simple que no contiene información y se envía durante el intervalo de tiempo de saludo.

Este intercambio continúa hasta que el puente raíz responde.

Estado de los puertos

Los estados en los que puede estar un puerto son los siguientes:

Bloqueo: En este estado se pueden recibir BPDU pero no las enviará. Las tramas de datos se descartan y no se actualizan las tablas de direcciones MAC (mac-address-table). Los switch comienzan en este estado ya que si realizan envíos (fordwarding) podrían estar generando un loop o bucle.

Escucha: A este estado se llega desde Bloqueo. En este estado, los switches determinan si existe alguna otra ruta hacia el puente raíz. En el caso que la nueva ruta tenga un coste mayor, se vuelve al estado de Bloqueo. Las tramas de datos se descartan y no se actualiza la tabla de direcciones MAC (mac-address-table). Se procesan las BPDU.

Aprendizaje: A este estado se llega desde Escucha. Las tramas de datos se descartan pero ya se actualizan las tablas de direcciones MAC (aquí es donde se aprenden por primera vez). Se procesan las BPDU.

Envío: A este estado se llega desde Aprendizaje, en este estado el puerto puede enviar y recibir datos. Las tramas de datos se envían y se actualizan las tablas de direcciones MAC (mac-address-table). Se procesan las BPDU.

Desactivado: A este estado se llega desde cualquier otro. Se produce cuando un administrador deshabilita el puerto o este falla. No se procesan las BPDU.

Resumiendo: Que hace el Spanning tree

El algoritmo spanning tree pone cada puerto que está en una misma red de capa 2, en estado forwarding o en estado blocking.

Las puertas en estado forwarding en un determinado momento son parte de la spannig tree activa, que crea un único camino por donde son enviados los paquetes.

Cisco tiene una animacion que mostra el funcionamento del spannig tree protocol.

Cisco flash animation

Comments

comments