STP

STP (Spanning Tree Protocol) es un protocolo de capa 2 cuyo objetivo es mantener una red libre de bucles. Vamos a ver lo que ocurre cuando hay un bucle en una red conmutada por switches.

¿Qué ocurre cuando hay un bucle?

En una red conmutada, un bucle ocurre cuando, partiendo de un switch, hay más de un camino para llegar a otro. En esta situación, puede darse lo que se describe en la siguiente imagen:

En ocasiones puede verse que los switches de una red mantienen ocupados todos los puertos, y además están haciendo difusión por cada uno de ellos, lo que puede notarse cuando todos los puertos parpadean a la vez. Esto puede ser indicativo de que hay un bucle. La difusión de produce porque el switch no es capaz de procesar todos los paquetes le están llegando (que en realidad están recorriendo una y otra vez la red), y hace difusión como estrategia temporal para hacer llegar los switches a su destino.

Cómo actúa STP

STP sondea contínuamente la red, y en caso de detectar un bucle, bloquea uno o más puertos redundantes. Para ello define el puente raíz.

El puente raíz

El puente raíz es el switch elegido que determina el camino de menor coste (más corto) para llegar todos los puntos del segmento. De este modo, se cancelan los caminos más largos para llegar a un mismo sitio (en caso de haber más de uno).

Elección del puente raíz

La elección del puente raíz se hace mediante números. Cada switch tiene asignado un número llamado BID (Bridge Identifier). El BID se calcula del siguiente modo:

BID = BP + BMA

Donde:

  • BP = Bridge Priority* (por defecto es 32768)
  • BMA = Bridge MAC Address* (MAC tomada como un número exadecimal)

* La prioridad puede ajustarse a un múltiplo de 4096, lo que puede permitir al administrador reducir el BID de un switch para forzar su elección como switch raíz.

** MAC del switch (backplane), no de un puerto concreto.

El puente cuyo BID sea el menor de todos, es tomado como puente raíz. Los switches intercambian BPDUs (Bridge PDU) que contienen su MAC y el BID. De este modo, los switches determinan cuál será el switch raíz.

El puerto raíz

El resto de switches (que no son raíz) definen un puerto raíz. Sólo puede haber un puerto raíz en cada switch. El puerto raíz es el puerto que tiene menor coste hasta el puente raíz. El coste es acumulativo a lo largo de la ruta, y se basa en el ancho de banda de los enlaces. Cuanto mayor es el ancho de banda, menor es el coste. En caso de que hayan dos puertos que tengan el mismo coste, se utiliza el puerto con mayor prioridad (un BID más pequeño).

Ancho de bandaCoste
4Mbps250
10Mbps100
16Mbps62
45Mbps39
100Mbps19
155Mbps14
1Gbps4
10Gbps2

Elección del puente raíz y puertos raíces

Las BPDUs incluyen entra la siguiente información:

  • BID del puente raíz
  • Coste hasta el puente raíz
  • BID del switch que envía la BPDU
  • BID del puerto por el que se envía

Inicialmente, cada switch del dominio de broadcast supone que es el puente raíz, de manera que las tramas de BPDU enviadas contienen su propio BID como ID de puente raíz. De manera predeterminada, las tramas de BPDU se envían cada 2 segundos después de iniciar el switch; esto significa que el valor predeterminado deltemporizador de saludo especificado en la trama de BPDU es 2 segundos. Cada switch mantiene información local acerca de su propio BID, el BID del puente raíz y el coste de la ruta hacia la raíz.

Cuando los switches adyacentes reciben una trama de BPDU, comparan el BID de la BPDU con el BID raíz actual. Si el BID del BPDU es menor que el BID raíz actual, el switch actualiza el BID raíz actual y el BID de sus mensajes de BPDU. Estos mensajes sirven para indicar el nuevo puente raíz de la red. Además, el coste de la ruta se actualiza para indicar el coste de la ruta hasta el puente raíz.

Después de que se ha actualizado un nuevo BID raíz, todas las tramas de BPDU subsiguientes enviadas por ese switch contienen el BID del puente raíz y el coste de la ruta actualizado. De esta manera, todos los otros switches adyacentes pueden ver el menor BID del nuevo puente raíz (que tiene un valor menor) identificado en todo momento. A medida que las tramas de BPDU se transmiten entre otros switches adyacentes, el coste de la ruta se actualiza en forma constante para indicar el coste de ruta total hacia el puente raíz. Todos los switches ejecutando STP utilizan sus costes de ruta para identificar la mejor ruta posible al puente raíz.

Observemos la imagen anterior.

  • El switch B tiene dos caminos hasta el puente raíz.
    • Una conexión directa al switch A, con un coste de 4 (elegida como puerto raíz).
    • Una conexión a través del switch D, tiene un coste de 16.
  • El switch D también tiene dos caminos hasta el puete raíz.
    • Una conexión a través del switch B, con un coste de 8 (elegida como puerto raíz).
    • Una conexión a través del switch E, con un coste de 12.

Obsérvese que el puente raíz anunciará BPDUs con un coste 0. A medida que los switches van recibiendo sucesivamente BPDUs, van reenviando BPDUs con el coste acumulado por la ruta. Así, por ejemplo, el switch C añadirá al coste del puerto por el que recibe la BPDU. Así, anunciará al switch E una ruta con un coste de 4. Del mismo modo, el switch E anunciará una ruta con un coste de 8.

Puertos designados

Cada puerto que no es raíz pasa a ser designado. En cada enlace entre dos switches, sólamente puede haber un puerto designado y puerto raíz. Cunado en un enlace entre dos switches puede haber dos puertos designados, se considera que se ha detectado un bucle.

En este caso, se elige el switch que tiene un coste de ruta menor. El puerto correspondiente al switch con mayor coste de ruta será bloqueado. En caso que el coste de ruta sea el mismo (como en la topología de la imagen), se tomará como desginado el puerto cuyo switch tiene un menor BID.

Trabajando con STP

Vamos a ver algunos comandos que permiten trabajar con STP en redes Cisco:

sw(config)# spanning-tree vlan 1 # Activa el protocolo STP en el switch. El cálculo del puente raíz y puertos raíz y designado ocurre automáticamente. sw(config)# spanning-tree vlan 1 root primary # Garantiza que este switch será el puente raíz. sw(config)# spanning-tree vlan 1 root secondary # Garantiza que este switch será el puente raíz alternativo. sw(config)# no spanning-tree vlan 1 # Descativa el protocolo STP en el switch. sw(config)# spanning-tree vlan 1 priority 0 # Asigna un BP (Bridge Priority) de 0, maximizando así las posibilidades de ser elegido como puente raíz sw(config)# spanning-tree vlan 1 priority 4096 # Asigna un BP (Bridge Priority) de 4096. sw# show spanning-tree # Muestra la configuración actual de STP.

Actividad 1. Contamos con una red conmutada a la que se ha dado redundancia para garantizar la disponibilidad de la red.

Una vez que crees la topología, desactiva en todos los switches STP, y comprueba lo que ocurre cuando haces ping desde el host A hasta el B.

Después, activa STP, de modo que garantices que el switch 1 sea el puente raíz.

Entrega el archivo de packet tracer con la red configurada con el nombre Act1-stp.pkt.