Spanning Tree

Cuando un red empieza a tener un tamaño mediano y empezamos a unir switches y a disponer caminos redundantes es posible que al final para llegar desde un punto a otro de la red tengamos dos caminos diferentes y eso supone un problema pues se podrían producir bucles en la red, una situación que hay que evitar a toda costa en cualquier red.

Según vamos poniendo switches en la red y uniéndolos entre si proporcionando redundancia llegamos a la forma del grafo y lo que queremos es un árbol.

Este problema, el de la conversión de un grafo a un árbol lo tenemos en muchas situaciones en la vida y lo realizamos instintivamente, selección de la ruta óptima de un lugar a otro en metro, al seleccionar la carretera para ir de un origen a un destino, etc

El objetivo sería llegar a tener un árbol, como un río y sus afluentes, sólo hay una forma de llegar desde cualquier punto al mar, eso es lo que queremos conseguir.

Nuestra red automáticamente bloqueará aquellos caminos redundantes para conseguir transformar un grafo en árbol y en el caso que uno de los caminos fallara se buscaría otra opción y se construiría un nuevo árbol permitiendo el transito de un lado al otro de la red de forma automática.

Para crear ese árbol vamos a necesitar que uno de los switches se convierta en el centro, o como lo llamamos en Spanning Tree, el root bridge, el elemento central de la red, este punto será el punto central de ese árbol, o el punto desde el que todas los nodos dependerán y se convertirá en el centro de la red, por eso este equipo se suele forzar al más grande de la red y el más centrado, esto es lo más importante, es muy importante seleccionar bien el nodo que va a ser el raíz del spanning tree.

No lo he comentado, pero spanning tree no sabe de direcciones IP, no sabe de routing, es un protocolo de nivel 2 y está definido en la norma IEEE 802.1D y funciona en switches y bridges. Acordaros si sois usuarios de Mikrotik que ahí se definen bridges, así que no penséis en equipos con sólo dos puertos como viene descrito en mucha de la documentación de Cisco.

Antes de nada que sepáis que existe otro estándar más moderno llamado Shortest Path Bridging (IEEE 802.1aq), pero eso ya os lo cuento otro día.

Para seleccionar el root bridge que os he contado antes lo haremos con el que tenga el Bridge ID más bajo y este se compone por dos valores, el Bridge Priority y la dirección MAC. La dirección MAC no la podemos controlar, pero el bridge ID sí y por defecto todos tendrán un Bridge Id de 32768, y podremos bajarlo o subirlo en multiplos de 4096 para poder modificar la posibilidad de ser el root bridge de la red.

Una vez seleccionado el root bridge tendremos en los demás switches los puertos clasificados en tres categorías dependiendo de su situación con respecto al root bridge.

  • Root Port: Este puerto es el que está «más cerca» del root bridge
  • Designated Port: Este puerto será el que una un switch más cercano al root bridge con otro más lejano y unirá con un root port. Estos puertos tendrán distinta prioridad en función de su velocidad, y si esta fuera igual miraríamos el Bridge ID.
  • Blocked Port: Aquellos puertos bloqueados.

En Spanning Tree los switches se envían BPDUs entre sí para comunicarse y van pasando por una serie de estados:

Las descripciones de los estados de los puertos de a continuación están extraídas de https://es.wikipedia.org/…

  • Bloqueo: En este estado se pueden recibir BPDU’s 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 (forwarding) 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 éste falla. No se procesan las BPDU.