STP IEEE 802.1D
-
Funcionamiento
Resumen
A continuación se describe el funcionamiento de STP IEEE 802.1D y se introducen los términos de BPDU e ID de puente (BID).
Aprenda cómo funciona el protocolo de árbol de extensión (STP) y cómo se utiliza el algoritmo de árbol de expansión (STA).
La redundancia aumenta la disponibilidad de la topología de red al proteger la red de un único punto de falla, como un cable de red o switch que fallan. Cuando se introduce la redundancia física en un diseño, se producen bucles y se duplican las tramas. Esto trae consecuencias graves para las redes conmutadas. El protocolo de árbol de expansión (STP) fue desarrollado para enfrentar estos inconvenientes.
STP asegura que exista sólo una ruta lógica entre todos los destinos de la red, al realizar un bloqueo de forma intencional a aquellas rutas redundantes que puedan ocasionar un bucle. Se considera que un puerto está bloqueado cuando no se permite que entren o salgan datos de usuario por ese puerto. Esto no incluye las tramas de unidad de datos de protocolo puente (BPDU) utilizadas por STP para evitar bucles.
Tabla de Contenido
1. Introducción al Protocolo de árbol de expansión
El bloqueo de las rutas redundantes es fundamental para evitar bucles en la red. Las rutas físicas aún existen para proporcionar la redundancia, pero las mismas se deshabilitan para evitar que se generen bucles. Si alguna vez la ruta es necesaria para compensar la falla de un cable de red o de un switch, STP vuelve a calcular las rutas y desbloquea los puertos necesarios para permitir que la ruta redundante se active.
El uso del término “protocolo de árbol de expansión” y del acrónimo STP puede ser engañoso. La mayoría de los profesionales suele utilizar estas denominaciones para referirse a las diversas implementaciones del árbol de expansión, como el protocolo de árbol de expansión rápido (RSTP) y el protocolo de árbol de expansión múltiple (MSTP).
Para poder explicar los conceptos de árbol de expansión correctamente, es importante consultar la implementación o el estándar específico en contexto. El documento más reciente del IEEE acerca del árbol de expansión, IEEE-802-1D-2004, establece que “STP se reemplazó con el protocolo de árbol de expansión rápido (RSTP)“. Como se ve, el IEEE utiliza “STP” para referirse a la implementación original del árbol de expansión y “RSTP” para describir la versión del árbol de expansión especificada en IEEE-802.1D-2004. Entonces, cuando se analiza el protocolo de árbol de expansión original, se utiliza la frase “árbol de expansión 802.1D original” para evitar confusiones.
2. STP en acción
El protocolo STP en acción (En el ejemplo, STP está habilitado en todos los switches):
- La PC1 envía un difusión a la red.
- El S2 está configurado con STP y estableció el puerto para Enlace_troncal2 en estado de bloqueo. El estado de bloqueo evita que se utilicen los puertos para reenviar datos de usuario, de modo de evitar que ocurra un bucle. El S2 reenvía una trama de difusión por todos los puertos del switch, excepto el puerto de origen de la PC1 y el puerto para Enlace_troncal2.
- El S1 recibe la trama de difusión y la reenvía por todos sus puertos de switch, por donde llega a la PC4 y al S3. El S3 reenvía la trama por el puerto para Enlace_troncal2, y el S2 descarta la trama. Se evita el bucle de Capa 2.
Ahora veamos el nuevo cálculo de STP cuando ocurre una falla:
En este ejemplo:
- La PC1 envía un difusión a la red.
- Luego la difusión se envía a través de la red, de la misma forma que en la animación anterior.
- El enlace troncal entre el S2 y el S1 falla, lo que provoca una interrupción en la ruta anterior.
- El S2 desbloquea el puerto que se había bloqueado anteriormente para Enlace_troncal2 y permite que el tráfico de difusión atraviese la ruta alternativa alrededor de la red, lo que permite que continúe la comunicación. Si este enlace vuelve a activarse, STP vuelve a converger y el puerto en el S2 se vuelve a bloquear.
STP evita que ocurran bucles mediante la configuración de una ruta sin bucles a través de la red, con puertos “en estado de bloqueo” ubicados estratégicamente. Los switches que ejecutan STP pueden compensar las fallas mediante el desbloqueo dinámico de los puertos bloqueados anteriormente y el permiso para que el tráfico se transmita por las rutas alternativas.
3. STA: Funciones de puerto
La versión IEEE 802.1D de STP utiliza el algoritmo de árbol de expansión (STA) para determinar qué puertos de switch de una red se deben colocar en estado de bloqueo y evitar que ocurran bucles. El STA designa un único switch como puente raíz y lo utiliza como punto de referencia para todos los cálculos de rutas.

En la ilustración, el puente raíz (el switch S1) se elige mediante un proceso de elección. Todos los switches que comparten STP intercambian tramas de BPDU para determinar el switch que posee el menor ID de puente (BID) en la red. El switch con el menor BID se transforma en el puente raíz en forma automática según los cálculos del STA.
Una BPDU es una trama de mensaje que intercambian los switches para STP. Cada BPDU contiene un BID que identifica al switch que envió la BPDU. El BID contiene un valor de prioridad, la dirección MAC del switch emisor y una ID de sistema extendido optativa. El valor de BID más bajo lo determina la combinación de estos tres campos.
3.1. La ruta más corta
Después de determinar el puente raíz, el STA calcula la ruta más corta hacia dicho puente. Todos los switches utilizan el STA para determinar los puertos que deben bloquearse. Mientras el STA determina las mejores rutas al puente raíz para todos los puertos de switch en el dominio de difusión, se evita que el tráfico se reenvíe a través de la red. El STA tiene en cuenta tanto los costos de ruta como de puerto cuando determina qué puertos bloquear. El costo de la ruta se calcula mediante los valores de costo de puerto asociados con las velocidades de los puertos para cada puerto de switch que atraviesa una ruta determinada. La suma de los valores de costo de puerto determina el costo de ruta total para el puente raíz. Si existe más de una ruta a escoger, el STA elige la de menor costo de ruta.
3.2. Descripción de los puertos
Una vez que el STA determinó las rutas más deseables en relación con cada switch, asigna funciones de puerto a los puertos de switch que participan. Las funciones de puerto describen la relación que estos tienen en la red con el puente raíz y si se les permite reenviar tráfico:
- Puertos raíz: los puertos de switch más cercanos al puente raíz. En la Imagen 1, el puerto raíz en el S2 es F0/1, configurado para el enlace troncal entre el S2 y el S1. El puerto raíz en el S3 es F0/1, configurado para el enlace troncal entre el S3 y el S1. Los puertos raíz se seleccionan por switch.
- Puertos designados: todos los puertos que no son raíz y que aún pueden enviar tráfico a la red. En la Imagen 1, los puertos de switch (F0/1 y F0/2) en el S1 son puertos designados. El puerto F0/2 del S2 también está configurado como puerto designado. Los puertos designados se seleccionan por enlace troncal. Si un extremo de un enlace troncal es un puerto raíz, el otro extremo es un puerto designado. Todos los puertos en el puente raíz son puertos designados.
- Puertos alternativos y de respaldo: los puertos alternativos y de respaldo están configurados en estado de bloqueo para evitar bucles. En la Imagen 1, el STA configuró el puerto F0/2 en el S3 en la función alternativa. El puerto F0/2 en el S3 está en estado de bloqueo. Los puertos alternativos se seleccionan solo en los enlaces troncales en los que ninguno de los extremos es un puerto raíz.
Los puertos en estado de bloqueo solo entran en acción cuando hay dos puertos en el mismo switch conectados entre sí mediante un hub o un único cable.
- Puertos deshabilitados: un puerto deshabilitado es un puerto de switch que está desactivado.
4. STA: Puente raíz
Como se muestra en la Imagen 2, todas las instancias de árbol de expansión (LAN conmutada o dominio de difusión) tienen un switch designado como puente raíz. El puente raíz sirve como punto de referencia para todos los cálculos de árbol de expansión para determinar las rutas redundantes que deben bloquearse.

Un proceso de elección determina el switch que se transforma en el puente raíz.

En la Imagen 3, se muestran los campos de BID. El BID está compuesto por un valor de prioridad, una ID de sistema extendido y la dirección MAC del switch.
Todos los switches del dominio de difusión participan del proceso de elección. Una vez que el switch arranca, comienza a enviar tramas BPDU cada dos segundos. Estas BPDU contienen el BID del switch y la ID de raíz.
A medida que los switches reenvían sus tramas BPDU, los switches adyacentes en el dominio de difusión leen la información de la ID de raíz de las tramas BPDU. Si la ID de raíz que se recibe de una BPDU es inferior a la ID de raíz del switch receptor, este switch actualiza su ID de raíz e identifica al switch adyacente como puente raíz.
En realidad, es posible que no sea un switch adyacente, ya que puede ser cualquier otro switch en el dominio de difusión. Luego el switch envía nuevas tramas de BPDU con el menor ID de raíz a los otros switches adyacentes. Finalmente, el switch con el menor BID es el que se identifica como puente raíz para la instancia de árbol de expansión.
Se elige un puente raíz para cada instancia de árbol de expansión. Es posible tener varios puentes raíz diferentes. Si todos los puertos de todos los switches pertenecen a la VLAN 1, solo se da una instancia de árbol de expansión. La ID de sistema extendido cumple una función en la determinación de las instancias de árbol de expansión.
5. STA: Costo de la ruta
Una vez que se eligió el puente raíz para la instancia de árbol de expansión, el STA comienza el proceso para determinar las mejores rutas hacia el puente raíz desde todos los destinos en el dominio de difusión. La información de ruta se determina mediante la suma de los costos individuales de los puertos que atraviesa la ruta desde el destino al puente raíz. Cada “destino” es, en realidad, un puerto de switch.

Los costos de los puertos predeterminados se definen por la velocidad a la que funcionan los mismos. Como se muestra en la Imagen 4, el costo de puerto de los puertos Ethernet de 10 Gb/s es 2, el de los puertos Ethernet de 1 Gb/s es 4, el de los puertos Ethernet de 100 Mb/s es 19 y el de los puertos Ethernet de 10 Mb/s es 100.
5.1. Configurar el costo de puerto
Pese a que los puertos de switch cuentan con un costo de puerto predeterminado asociado a los mismos, tal costo puede configurarse. La capacidad de configurar costos de puerto individuales le da al administrador la flexibilidad para controlar de forma manual las rutas de árbol de expansión hacia el puente raíz.
Para configurar el costo de puerto de una interfaz, introduzca el comando spanning-tree cost valor en el modo de configuración de interfaz. El valor puede variar entre 1 y 200 000 000.
S2# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
S2(config)# interface f0/1
S2(config-if)# spanning-tree cost 25
En el ejemplo, el puerto de switch F0/1 se configuró con el costo de puerto 25 mediante el comando spanning-tree cost 25 del modo de configuración de interfaz en la interfaz F0/1.
Para restaurar el costo de puerto al valor predeterminado 19, introduzca el comando no spanning-tree cost del modo de configuración de interfaz.
S2# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
S2(config)# interface f0/1
S2(config-if)# no spanning-tree cost
El costo de la ruta es igual a la suma de todos los costos de puerto a lo largo de la ruta hacia el puente raíz (Imagen 5).

Las rutas con el costo más bajo se convierten en las preferidas, y el resto de las rutas redundantes se bloquean. En el ejemplo, el costo de la ruta del S2 al puente raíz S1 a través de la ruta 1 es 19 (según el costo de puerto individual especificado por el IEEE), mientras que el costo de la ruta a través de la ruta 2 es 38. Dado que la ruta 1 tiene un menor costo de ruta general hacia el puente raíz, es la ruta preferida. Luego, STP configura la ruta redundante que debe bloquearse y evita así la generación de bucles.
5.2. Verificar el costo de puerto
Para verificar los costos de puerto y de ruta hacia el puente raíz, introduzca el comando show spanning-tree. El campo Cost cerca de la parte superior del resultado es el costo de la ruta total hacia el puente raíz. Este valor varía según la cantidad de puertos de switch que se deban atravesar para llegar al puente raíz. En el resultado, cada interfaz también se identifica con un costo de puerto individual de 19.

6. Formato de trama BPDU 802.1D
El algoritmo de árbol de expansión depende del intercambio de BPDU para determinar un puente raíz. Una trama BPDU contiene 12 campos distintos que transmiten información de ruta y de prioridad que se utiliza para determinar el puente raíz y las rutas a este.
- Los primeros cuatro campos identifican el protocolo, la versión, el tipo de mensaje y los señaladores de estado.
- Los cuatro campos siguientes se utilizan para identificar el puente raíz y el costo de la ruta hacia éste.
- Los últimos cuatro campos son todos campos de temporizador que determinan la frecuencia con la que se envían los mensajes de BPDU y el tiempo que se retiene la información que se recibe mediante el proceso de BPDU (próximo tema).

Campo | Descripción |
---|---|
ID de protocolo | Indica el tipo de protocolo que se utiliza. Este campo contiene el valor cero. |
Versión | Indica la versión del protocolo. Este campo contiene el valor cero. |
Tipo de mensaje | Indica el tipo de mensaje. Este campo contiene el valor cero. |
Indicadores | Incluye uno de los siguientes: – Bit de cambio de topología (TC), que indica una modificación en la topología en caso de que se haya interrumpido una ruta al puente raíz. – Bit de acuse de recibo de cambio de topología (TCA), que se establece para confirmar la recepción de un mensaje de configuración con el conjunto de bits de TC. |
ID de raíz | Señala el puente raíz indicando su prioridad de 2 bytes seguida de la ID de dirección MAC de 6 bytes. Cuando un switch arranca, la ID de raíz es la misma que la ID de puente. Sin embargo, a medida que se lleva a cabo el proceso de elección, la ID de puente más baja reemplaza la ID de raíz local para identificar el switch de puente raíz. |
Costo de la ruta | Indica el costo de la ruta desde el puente que envía el mensaje de configuración al puente raíz. El campo costo de la ruta es actualizado por cada switch de la ruta al puente raíz. |
ID de puente | Indica el ID de dirección MAC y de prioridad del puente que envía el mensaje. Esta etiqueta permite que el puente raíz identifique dónde se originó el BPDU, así como las rutas múltiples desde el switch hasta el puente raíz. Cuando el puente raíz recibe más de un BPDU de un switch con distintos costos de ruta, reconoce que existen dos rutas diferentes y utiliza aquella ruta con el menor costo. |
ID de puerto | Indica el número de puerto desde el cual se envía el mensaje de configuración. Este campo permite que los bucles generados por puentes múltiples conectados sean detectados y corregidos. |
Antigüedad del mensaje | Indica la cantidad de tiempo que ha transcurrido desde que la raíz envió el mensaje de configuración en el cual se basa el mensaje de configuración actual. |
Antigüedad máxima | Indica el momento en que el mensaje de configuración actual debe ser eliminado. Una vez que la antigüedad del mensaje alcanza la antigüedad máxima, el switch elimina la configuración actual e inicia una nueva elección para determinar un puente raíz nuevo, ya que asume que ha sido desconectado del mismo. Este valor está predeterminado en 20 segundos, pero puede ajustarse a intervalos entre 6 y 40 segundos. |
Tiempo de saludo | Indica el tiempo entre los mensajes de configuración del puente raíz. El intervalo define la cantidad de tiempo que el puente raíz espera para enviar BPDU de mensajes de configuración. Este valor está predeterminado en 2 segundos pero puede ajustarse a intervalos entre 1 y 10 segundos. |
Retraso de envío | Indica la cantidad de tiempo que los puentes deben esperar antes de sufrir la transición a un nuevo estado luego de un cambio en la topología. Si la transición de un puente es muy repentina, es posible que no todos los enlaces de la red estén preparados para cambiar su estado, lo que puede generar bucles. Este valor es igual a 15 segundos de manera predeterminada para cada estado pero puede ajustarse a intervalos entre 4 y 30 segundos. |
6.1. BPDU de ejemplo
A continuación, se muestra una trama BPDU que se capturó mediante Wireshark.

En el ejemplo, la trama de BPDU contiene más campos de los que se describieron anteriormente. El mensaje de BPDU se encapsula en una trama de Ethernet cuando se transmite a través de la red. El encabezado 802.3 indica las direcciones de origen y destino de la trama de BPDU.
Esta trama tiene la dirección MAC de destino 01:80:C2:00:00:00, que es una dirección de multidifusión para el grupo de árbol de expansión. Cuando se asigna esta dirección MAC a una trama, cada switch configurado para árbol de expansión acepta y lee la información de la trama. El resto de los dispositivos en la red ignora la trama.
En este ejemplo, el ID de raíz y el BID son iguales en la trama de BPDU capturada. Esto indica que la trama se capturó de un puente raíz. Todos los temporizadores se establecen en sus valores predeterminados.
7. Propagación y proceso de BPDU
En principio, cada switch en el dominio de difusión supone que es el puente raíz para una instancia de árbol de expansión, por lo que las tramas BPDU que se envían contienen el BID del switch local como ID de raíz. De manera predeterminada, las tramas BPDU se envían cada dos segundos después de que arranca el switch; es decir, el valor predeterminado del temporizador de saludo especificado en la trama BPDU es dos segundos. Cada switch mantiene información local acerca de su propio BID, el ID de raíz y el costo de la ruta hacia la raíz.
Cuando los switches adyacentes reciben una trama BPDU, comparan la ID de raíz de la trama BPDU con la ID de raíz local. Si la ID de raíz en la BPDU es inferior a la local, el switch actualiza la ID de raíz local y la ID en sus mensajes de BPDU. Estos mensajes indican el nuevo puente raíz en la red. La distancia al puente raíz también la indica la actualización del costo de la ruta. Por ejemplo, si se recibió la BPDU en un puerto de switch Fast Ethernet, el costo de la ruta aumentaría 19 números. Si la ID de raíz local es inferior a la ID de raíz que se recibe en la trama BPDU, se descarta la trama.
Después de que se ha actualizado un ID de ruta para identificar un nuevo puente raíz, todas las tramas de BPDU subsiguientes enviadas por ese switch contienen el ID de raíz nuevo y el costo de la ruta actualizado. De esta manera, todos los otros switches adyacentes pueden ver el menor ID de raíz identificado en todo momento. A medida que las tramas de BPDU se transmiten entre otros switches adyacentes, el costo de la ruta se actualiza en forma constante para indicar el costo de ruta total hacia el puente raíz. Todos los switches del árbol de expansión utilizan sus costos de ruta para identificar la mejor ruta posible al puente raíz.
A continuación se resume el proceso BPDU:

8. ID de sistema extendido
El ID de puente (BID) se utiliza para determinar el puente raíz de una red. El campo BID de una trama de BPDU contiene tres campos separados:
- Prioridad del puente
- ID de sistema extendido
- Dirección MAC
Cada campo se utiliza durante la elección del puente raíz.
8.1. Prioridad de puente
La prioridad del puente es un valor personalizable que se puede utilizar para influir en la elección del switch como puente raíz. El switch con la menor prioridad, que implica el BID más bajo, se convierte en el puente raíz, dado que prevalece un valor de prioridad menor.
Por ejemplo, para asegurar que un switch específico sea siempre el puente raíz, establezca la prioridad en un valor inferior al del resto de los switches de la red. El valor de prioridad predeterminado para todos los switches Cisco es 32768. El rango va de 0 a 61440 y aumenta de a 4096. Los valores de prioridad válidos son 0, 4096, 8192, 12288, 16384, 20480, 24576, 28672, 32768, 36864, 40960, 45056, 49152, 53248, 57344 y 61440. El resto de los valores se rechazan. La prioridad de puente 0 prevalece sobre el resto de las prioridades de puente.
8.2. ID de sistema extendido
A medida que las VLAN se volvieron más comunes en la segmentación de la infraestructura de red, se fue mejorando 802.1D para incluir a las VLAN, con el requisito de que se incluyera la ID de VLAN en la trama BPDU. La información de VLAN se incluye en la trama BPDU mediante el uso de la ID de sistema extendido. Todos los switches más modernos incluyen el uso de la ID de sistema extendido de manera predeterminada.

Como se muestra en la Imagen 10, el campo de prioridad del puente tiene una longitud de 2 bytes o 16 bits; 4 bits se utilizan para la prioridad del puente y 12 bits para la ID de sistema extendido, que identifica la VLAN que participa en este proceso STP en particular.
Si se utilizan estos 12 bits para la ID de sistema extendido, se reduce la prioridad del puente a 4 bits. Este proceso reserva los 12 bits del extremo derecho para la ID de VLAN y los 4 bits del extremo izquierdo para la prioridad del puente. Esto explica por qué el valor de prioridad del puente solo se puede configurar en múltiplos de 4096, o 2^12.
Si los bits del extremo izquierdo son 0001, la prioridad del puente es 4096; si los bits del extremo derecho son 1111, la prioridad del puente es 61440 (= 15 x 4096). Los switches de las series Catalyst 2960 y 3560 no permiten configurar la prioridad del puente en 65536 (= 16 x 4096), dado que supone el uso de un quinto bit que no está disponible debido al uso de la ID de sistema extendido.
El valor de ID de sistema extendido se agrega al valor de prioridad de puente en el BID para identificar la prioridad y la VLAN de la trama de BPDU.
8.3. Decisión basada en la prioridad
Cuando dos switches se configuran con la misma prioridad y tienen la misma ID de sistema extendido, el switch que posee la dirección MAC con el menor valor hexadecimal es el que tiene el menor BID. Inicialmente, todos los switches se configuran con el mismo valor de prioridad predeterminado. Luego, la dirección MAC es el factor de decisión sobre el cual el switch se convertirá en puente raíz. Para asegurar que el puente raíz elegido cumpla con los requisitos de la red, se recomienda que el administrador configure el switch de puente raíz deseado con una prioridad menor. Esto también permite asegurar que, si se agregan nuevos switches a la red, no se produzca una nueva elección de árbol de expansión, lo que puede interrumpir la comunicación de red mientras se selecciona un nuevo puente raíz.

En la Imagen 11, el S1 tiene una prioridad inferior a la del resto de los switches; por lo tanto, se lo prefiere como puente raíz para esa instancia de árbol de expansión.
9.4. Dirección MAC
Cuando todos los switches están configurados con la misma prioridad, como es el caso de los switches que mantienen la configuración predeterminada con la prioridad 32768, la dirección MAC se vuelve el factor decisivo en la elección del switch que se convertirá en el puente raíz (Imagen 12).

La dirección MAC con el menor valor hexadecimal se considera como preferida para puente raíz. En el ejemplo, el S2 tiene la dirección MAC con el valor más bajo y, por lo tanto, se lo designa como puente raíz para esa instancia de árbol de expansión.