Cómo funciona STP

Motivo para crear STP


La razón para crear el protocolo STP fue la aparición de bucles en los conmutadores. ¿Qué es un bucle? La definición del bucle es la siguiente:

Bridging loop (Switching loop) : un estado en la red en el que hay una transferencia interminable de tramas entre los conmutadores conectados al mismo segmento de red.

A partir de la definición, queda claro que la aparición de un bucle crea grandes problemas: conduce a la sobrecarga de los conmutadores y la inoperancia de este segmento de red. ¿Cómo surge un bucle? La siguiente imagen muestra la topología en la que se producirá un bucle en ausencia de mecanismos de protección:

Mi imagen

La aparición de un bucle en las siguientes condiciones:

1. Uno de los hosts envía una trama de difusión:

  1. Por ejemplo, VPC5 envía un paquete con una dirección de destino de difusión.
  2. Después de aceptar este paquete, el Switch1 debe enviarlo a través de todos los puertos, excepto el puerto del que proviene este paquete. El paquete pasará por los puertos Gi0 / 0, Gi1 / 0.
  3. Los conmutadores Switch2, Switch3 que hayan aceptado este paquete también tendrán que enviarlo. Por lo tanto, Switch2, que recibió el paquete de Switch1, lo enviará a Switch3, y Switch3 lo enviará a Switch2.
  4. Luego, Switch2 recibió un paquete de Switch3, lo envió a Switch1, y Switch3 recibió un paquete de Switch2, también lo envió a Switch1. Por lo tanto, llegamos al paso 1) y continuará indefinidamente. Además, todo se ve agravado por el hecho de que en el paso 4), Switch1 ya tendrá dos instancias de trama, ya que las recibirá tanto de Switch2 como de Switch3.

Los pasos 1) - 4) se repetirán sin cesar y en los conmutadores esto sucede en una fracción de segundo. Además, la formación de un bucle lleva al hecho de que la tabla de direcciones de amapola en los conmutadores cambiará constantemente y la dirección de amapola del remitente del VPC5 se asignará constantemente a la interfaz Gi0 / 0, Gi1 / 0 o Gi0 / 2 (si en ese momento VPC5 envía otros paquetes) Tal ciclo conducirá a una operación incorrecta de la red y todos los conmutadores. Y el envío de paquetes de difusión para hosts es algo común, como ejemplo, el protocolo ARP.

2. También se puede formar un bucle sin enviar un marco de difusión.

  1. Por ejemplo, VPC5 envía una trama con una dirección mac de destino de unidifusión.
  2. Es posible que la dirección MAC de destino no se encuentre en la tabla de direcciones MAC del conmutador. En este caso, el conmutador reenviará el paquete a través de todos los puertos, excepto el puerto desde el que recibió la trama. Y tenemos la misma situación que con el marco Broadcast.
  3. A continuación veremos el protocolo STP en los switches Cisco. Usan STP por separado para cada vlan, el protocolo PVST +. Tenemos solo un vlan, por lo que el significado de esto no cambia.

Conceptos básicos de STP


El principio de funcionamiento de este protocolo se basa en el hecho de que todos los canales redundantes entre los conmutadores están lógicamente bloqueados y el tráfico no se transmite a través de ellos. Para construir una topología sin canales redundantes, se construye un árbol (gráfico matemático). Para construir dicho árbol, primero es necesario determinar la raíz del árbol a partir del cual se construirá el gráfico. Por lo tanto, el primer paso en el protocolo STP es determinar el conmutador raíz (conmutador raíz). Para determinar el Root Switch, los switches intercambian mensajes BPDU. En general, el protocolo STP utiliza dos tipos de mensajes: BPDU - contiene información sobre los conmutadores y TCN - notifica un cambio en la topología. Consideremos BPDU con más detalles. Hablaremos más sobre TCN a continuación. Cuando habilita STP en los conmutadores, los conmutadores comienzan a enviar mensajes BPDU. Estos mensajes contienen la siguiente información:

Mi imagen

El marco BPDU tiene los siguientes campos:

  • Identificador de versión del protocolo STA (2 bytes). Los conmutadores deben admitir la misma versión del protocolo STA
  • Versión del protocolo STP (1 byte)
  • Tipo de BPDU (1 byte). Existen 2 tipos de BPDU: notificación de configuración y reconfiguración
  • Banderas (1 byte)
  • Identificador del conmutador raíz (8 bytes)
  • El costo de la ruta al conmutador raíz (costo de ruta raíz)
  • ID del remitente (ID del puente) (8 bytes)
  • El identificador del puerto desde el cual se envió este paquete (ID de puerto) (2 bytes)
  • Vida útil del mensaje (2 bytes). Medido en unidades de 0.5 s, utilizado para detectar mensajes obsoletos
  • Máxima vida útil del mensaje (2 bytes). Si la trama BPDU tiene una vida útil superior al máximo, los conmutadores ignoran la trama
  • Hola intervalo (2 bytes), el intervalo en el que se envían los paquetes BPDU
  • Retraso de cambio de estado (2 bytes). Tiempo mínimo de activación del interruptor

Los principales campos que requieren atención especial son los siguientes:

  • ID del remitente (ID del puente)
  • ID del puente raíz
  • El identificador del puerto desde el que se envió este paquete (ID de puerto)
  • El costo de la ruta al conmutador raíz (costo de ruta raíz)

Para determinar el interruptor raíz, se utiliza el identificador del interruptor: ID de puente. La identificación del puente es un número de 8 bytes que consta de la prioridad del puente (prioridad, 0 a 65535, por defecto 32768) y la dirección MAC del dispositivo. El conmutador raíz selecciona el conmutador con la prioridad más baja; si las prioridades son iguales, se comparan las direcciones MAC (en cuanto a caracteres, gana la más pequeña).

Aquí está la salida de la información de ID de puente del Switch1 de la primera imagen. Prioridad: 32769 (por defecto 32768 + ID de Vlan), direcciones MAC: dirección 5000.0001.0000:

Mi imagen

Imagine la imagen, los interruptores se acaban de encender y ahora están comenzando a construir una topología sin bucles. Tan pronto como se inician los conmutadores, comienzan a enviar BPDU, donde informan a todos que son la raíz del árbol. En las BPDU, como ID de puente raíz, los conmutadores indican su propia ID de puente. Por ejemplo, Switch1 envía BPDU a Switch3 y Switch3 envía a Switch1. BPDU de Switch1 a Switch3:

Mi imagen

BPDU de Switch3 a Switch1:

Mi imagen

Como puede ver en el identificador de raíz, ambos conmutadores se dicen entre sí que es él quien es el interruptor de raíz.

Elegir un interruptor raíz


Hasta que se construya la topología STP, el tráfico normal no se transmite debido a estados de puerto especiales, que se analizarán a continuación. Entonces, Switch3 obtiene BPDU de Switch1 y examina este mensaje. Switch3 busca en el campo ID de Root Bridge y ve que allí se indica una ID de Root Bridge diferente que en el mensaje enviado por Switch3. Compara la ID de Root Bridge en este mensaje con su ID de Root Bridge y ve que aunque Prioridad es la misma, la dirección MAC de este conmutador (Switch1) es mejor (menos) de lo que es. Por lo tanto, el Switch3 recibe la ID del puente raíz del Switch1 y deja de enviar sus BPDU, pero solo escucha las BPDU del Switch1. El puerto en el que se recibió la mejor BPDU se convierte en el puerto raíz. Switch1 también recibió una BPDU de Switch3, hace una comparación, pero en este caso, el comportamiento de Switch1 no cambia, ya que la BPDU recibida contiene una ID de puente raíz peor que Switch1. Por lo tanto, entre Switch1 y Switch3, se definió un interruptor raíz. De manera similar, el interruptor raíz se selecciona entre Switch1 y Switch2. Los puertos Gi0 / 0 en Switch2 y Switch3 se convierten en Root Port, el puerto que conduce al switch raíz. A través de este puerto, Switch2 y Switch3 aceptan BPDU de Root Bridge. Ahora veamos qué pasará con el canal entre Switch2 y Switch3.

Bloqueo de canales redundantes


Como vemos en la topología, el canal entre Switch2 y Switch3 debe bloquearse para evitar la formación de bucles. ¿Cómo maneja esto STP?

Después de seleccionar Root Bridge, Switch2 y Switch3 dejan de enviar BPDU a través de los puertos raíz, pero reciben las BPDU recibidas desde Root Bridge a través de todos sus otros puertos activos, cambiando solo los siguientes campos en los datos de BPDU:

  • ID del remitente (ID del puente): se reemplaza con su ID.
  • El identificador del puerto desde el que se envió este paquete (ID de puerto): cambia al identificador del puerto desde el que se enviará la BPDU.
  • El costo de la ruta al conmutador raíz (costo de ruta raíz): el costo de la ruta se calcula en relación con el conmutador mismo.

Por lo tanto, Switch2 recibe la siguiente BPDU de Switch3:

Mi imagen
Y Switch3 de Switch2 recibe tal BPDU:

Mi imagen

Después de intercambiar tales BPDU, Switch2 y Switch3 se dan cuenta de que la topología es redundante. ¿Por qué los switches entienden que la topología es redundante? Tanto Switch2 como Switch3 informan el mismo Root Bridge en sus BPDU. Esto significa que hay dos formas de Root Bridge, con respecto al Switch3, a través del Switch1 y el Switch2, y esta es la misma redundancia contra la que estamos luchando. También hay dos formas para Switch2: a través de Switch1 y Switch3. Para deshacerse de esta redundancia
debe bloquear el canal entre Switch3 y Switch2. ¿Cómo va esto?

La elección sobre qué interruptor bloquear el puerto es la siguiente:

  • Menor costo de ruta de raíz.
  • ID de puente más pequeño.
  • ID de puerto más pequeño.

En este esquema, el costo de la ruta raíz desempeña un papel más importante que la identificación del puente. Solía ​​pensar que esta elección es similar a la elección del conmutador raíz y me sorprendió que, por ejemplo, en esta topología, el puerto en el conmutador con la peor prioridad no se bloquee:

Mi imagen

Aquí, como resultó, el puerto Gi 0/1 en el conmutador Sw2 está bloqueado. En esta votación, el costo del camino raíz se vuelve decisivo. Volvamos a nuestra topología. Dado que el camino hacia Root Bridge es el mismo, Switch2 gana en esta elección, ya que su prioridad es igual, se comparan las ID de Bridge. El Switch2 tiene 50: 00: 00: 02: 00: 00, el Switch3 tiene 50: 00: 00: 03: 00: 00. Switch2 tiene una mejor dirección MAC (menos). Después de hacer la elección, Switch3 deja de reenviar cualquier paquete a través de este puerto: Gi1 / 0, incluido BPDU, pero solo escucha a BPDU desde Switch2. Este estado del puerto en STP se llama Bloqueo (BLK). El puerto Gi1 / 0 en el Switch2 está funcionando normalmente y reenvía varios paquetes si es necesario, pero el Switch3 los descarta inmediatamente, escuchando solo las BPDU. Por lo tanto, en este ejemplo, creamos una topología sin canales redundantes. El único canal redundante entre Switch2 y Switch3 se bloqueó al cambiar el puerto Gi1 / 0 en Switch3 a un estado de bloqueo especial: BLK. Ahora examinaremos con más detalle los mecanismos de STP.

Estados portuarios


Dijimos anteriormente que, por ejemplo, el puerto Gi1 / 0 en Switch3 entra en un estado de bloqueo especial: bloqueo. Los siguientes estados de puerto existen en STP:

Bloqueo - bloqueo. En este estado, no se transmiten tramas a través del puerto. Se usa para evitar la redundancia de topología.

Escuchando - escuchando. Como dijimos anteriormente, antes de que el conmutador raíz siga seleccionado, los puertos se encuentran en un estado especial donde solo se transmiten BPDU, las tramas de datos no se transmiten y no se aceptan en este caso. El estado de escucha no pasa al siguiente, incluso si el puente raíz está definido. Este estado del puerto dura el temporizador de retardo de reenvío, que, de forma predeterminada, es 15. ¿Por qué siempre tengo que esperar 15 segundos? Esto se debe a la precaución del protocolo STP para que el Root Bridge incorrecto no se seleccione accidentalmente. Después de este período, el puerto pasa al siguiente estado: aprendizaje.

Aprendizaje - entrenamiento. En este estado, el puerto escucha y envía BPDU, pero no envía información con datos. La diferencia entre este estado y Listening es que las tramas con los datos que llegan al puerto se estudian y la información de la dirección MAC se ingresa en la tabla de direcciones MAC del conmutador. La transición al siguiente estado también requiere un temporizador de retardo directo.

Reenvío - Reenvío. Este es el estado normal del puerto donde se envían tanto BPDU como tramas con datos normales. Por lo tanto, si pasamos por el esquema cuando los interruptores acaban de arrancar, obtenemos el siguiente esquema:

  1. El conmutador pone todos sus puertos conectados en estado de Escucha y comienza a enviar BPDU donde se declara como el conmutador raíz. Durante este período de tiempo, el conmutador permanece raíz si no recibe la mejor BPDU o selecciona el conmutador raíz. Tiene una duración de 15 segundos.
  2. Después de que entra en el estado de aprendizaje y aprende las direcciones MAC. 15 segundos
  3. Determina qué puertos establecer en Reenvío y cuáles en Bloqueo.

Roles portuarios


Además de los estados del puerto, STP también necesita definir los puertos de sus roles. Esto se hace de modo que en qué puerto debe esperarse la BPDU del conmutador raíz, y a través de qué puertos transmitir las copias de BPDU recibidas del conmutador raíz. Los roles de puerto son los siguientes:

Puerto raíz : el puerto raíz del conmutador. Al elegir un conmutador raíz, también se determina el puerto raíz. Este es el puerto a través del cual se conecta el conmutador raíz. Por ejemplo, en nuestra topología, los puertos Gi0 / 0 en Switch2 y Switch3 son los puertos raíz. A través de estos puertos, Switch2 y Switch3 no envían BPDU, sino que solo los escuchan desde Root Bridge. Surge la pregunta: ¿cómo se selecciona el puerto raíz? ¿Por qué no se selecciona el puerto Gi1 / 0? Después de todo, ¿también puedes comunicarte con el interruptor a través de él? Para determinar el puerto raíz en STP, se usa una métrica que indica el costo de la ruta raíz (el costo de la ruta al conmutador raíz) en el campo BPDU. Este costo está determinado por la velocidad del canal.

Switch1 en su BPDU en el campo Costo de ruta raíz establece 0, ya que es en sí mismo Root Bridge. Pero cuando Switch2, cuando envía la BPDU a Switch3, cambia este campo. Establece el costo de la ruta raíz igual al costo del canal entre él y Switch1. En la imagen BPDU de Switch2 y Switch3, puede ver que en este campo el costo de la ruta raíz es 4, ya que el canal entre Switch1 y Switch2 es 1 Gbps. Si el número de interruptores es mayor, cada siguiente interruptor sumará el costo de la ruta raíz. Tabla de costos de ruta raíz.

Puerto designado : el puerto asignado en el segmento. Para cada segmento de red, debe haber un puerto que sea responsable de conectar este segmento a la red. Relativamente hablando, un segmento de red puede significar un cable que conecta este segmento. Por ejemplo, los puertos Gi0 / 2 en Switch1, Switch3 conectan segmentos de red individuales a los que solo conduce este cable. Además, por ejemplo, los puertos en el Root Bridge no se pueden bloquear y todos son puertos designados en el segmento. Después de esta explicación, puede dar definiciones más estrictas para los puertos asignados:
Puerto designado: un puerto de puente no raíz entre segmentos de red que recibe tráfico del segmento correspondiente. Cada segmento de red solo puede tener un puerto asignado. El conmutador raíz tiene todos los puertos asignados.

También es importante tener en cuenta que el puerto Gi1 / 0 en Switch2 también está asignado, a pesar de que este canal de comunicación está bloqueado en Switch3. En términos relativos, Switch2 no tiene información de que el puerto esté bloqueado en el otro extremo.

Puerto no designado : un puerto de segmento no asignado. Puerto no designado: un puerto que no es raíz o un puerto designado. La transmisión de tramas de datos a través de dicho puerto está prohibida. En nuestro ejemplo, el puerto Gi1 / 0 no está asignado.

Puerto deshabilitado : un puerto que está en estado apagado.

Temporizadores y convergencia STP


Una vez que STP ha completado la construcción de una topología sin bucles, la pregunta sigue siendo: ¿cómo detectar cambios en la red y cómo responder a ellos? Los mensajes BPDU utilizados por STP son enviados por Root Bridge cada 2 segundos, por defecto. Este temporizador se llama Hello Timer. El resto de los conmutadores, después de haber recibido este mensaje a través de su puerto raíz, lo reenvían aún más a través de todos los puertos asignados. Se ha dicho con más detalle qué cambios suceden a las BPDU al reenviar sus conmutadores. Si durante el tiempo definido por el temporizador de edad máxima (de forma predeterminada, 20 segundos), el conmutador no recibió ninguna BPDU del conmutador raíz, entonces este evento se trata como una pérdida de comunicación con el puente raíz. Para describir más correctamente la convergencia del protocolo, es necesario cambiar nuestra topología y colocar centros entre los conmutadores. Agregamos concentradores para que cuando uno de los interruptores falla o el enlace falla, los otros interruptores no determinan esto por la caída del enlace, sino que usan temporizadores:

imagen

Antes de comenzar, también es importante contarle más sobre otro tipo de mensaje STP: TCN. TCN es enviado por los switches en caso de un cambio de topología, tan pronto como la topología ha cambiado en cualquier switch, por ejemplo, el estado de la interfaz ha cambiado. TCN es enviado por el conmutador solo a través del puerto raíz. Tan pronto como el conmutador raíz recibe TCN, cambia inmediatamente el parámetro para almacenar las direcciones MAC en la tabla de 300 segundos a 15 (para lo cual se discutirá más adelante) y en la próxima BPDU, el conmutador raíz coloca la bandera - TCA (Reconocimiento de cambio de topología), que enviado al conmutador que envió el TCN para notificar que se recibió el TCN. Tan pronto como el TCN llega al puente raíz, envía una BPDU especial que contiene el indicador TCN en todas las demás interfaces a otros conmutadores. La imagen muestra la estructura de TCN:

imagen

TCN se incluyó en STP para que los conmutadores no root puedan notificar un cambio en la red. No pueden hacer esto con BPDU normales, ya que los conmutadores no root no envían BPDU. Como puede ver, la estructura TCN no contiene ninguna información sobre qué ha cambiado exactamente y dónde, sino que simplemente informa que en algún lugar algo ha cambiado. Ahora pasemos a la cuestión de la convergencia de STP.

Veamos qué sucede si deshabilitamos la interfaz Gi0 / 1 en Switch1 y vemos con qué mecanismos se reconstruye el árbol STP. El Switch2 dejará de recibir BPDU del Switch1 y no recibirá BPDU del Switch3, ya que este puerto está bloqueado en el Switch3. Switch2 tomará 20 segundos (Temporizador de edad máxima) para comprender la pérdida de conexión con el puente raíz. Hasta este momento, Gi0 / 0 en Switch2 estará en estado de reenvío con la función de puerto raíz. Tan pronto como el Temporizador de edad máxima caduque y Switch2 comprenda la pérdida de comunicación, reconstruirá el árbol STP y, como es típico de STP, comenzará a considerarse Root Bridge. Él enviará una nueva BPDU, donde se indicará a sí mismo como un puente raíz a través de todos los puertos activos, incluido el Switch3. Pero el temporizador Max Age que expiró en Switch2 también expiró en Switch3 para la interfaz Gi1 / 0. Este puerto no ha recibido una BPDU durante 20 segundos y pasará al estado de ESCUCHA y enviará una BPDU que indica Root Bridge - Switch1. Tan pronto como Switch2 acepte esta BPDU, dejará de considerarse un puente raíz y seleccionará Gi1 / 0 como el puerto raíz. En este punto, Switch2 también enviará TCN a través de Gi1 / 0, ya que este es el nuevo puerto raíz.Esto conducirá al hecho de que el tiempo de almacenamiento de las direcciones MAC en los conmutadores disminuirá de 300 segundos a 15. Pero esto no restaura completamente la red, debe esperar hasta que el puerto Gi1 / 0 en el Switch3 pase el estado de Escucha y luego Aprendizaje. Esto llevará un tiempo igual a dos períodos de temporizador de retardo de avance: 15 + 15 = 30 segundos. Lo que obtenemos es que cuando se pierde la conexión, Switch2 espera a que expire el temporizador Max Age = 20 segundos, vuelve a seleccionar Root Bridge a través de otra interfaz y espera otros 30 segundos hasta que el puerto bloqueado previamente entre en estado de reenvío. En total, obtenemos que la conexión entre VPC5 y VPC6 se interrumpirá durante 50 segundos. Como se menciona en varias oraciones anteriores, al cambiar el puerto raíz de Gi0 / 0 a Gi1 / 0 en Switch2, se envió TCN. Si esto no sucedió, entonces todas las direcciones MAC aprendidas a través del puerto Gi 0/0,permanecería adjunto a Gi0 / 0. Por ejemplo, la dirección MAC de VPC5 y VPC7 a pesar de que STP completa la convergencia en 50 segundos, la conexión entre VPC6 y VPC5, VPC7 no se restablecería, ya que todos los paquetes destinados a VPC5, VPC7 se enviaron a través de Gi0 / 0. Sería necesario esperar no 50 segundos, sino 300 segundos hasta que se reconstruya la tabla de direcciones MAC. Usando TCN, el tiempo de almacenamiento cambió de 300 segundos a 15 y mientras la interfaz Gi1 / 0 en el Switch3 pasó el estado de Escucha, entonces se actualizarán los datos de aprendizaje y dirección MAC.el tiempo de almacenamiento cambió de 300 segundos a 15 y, mientras que la interfaz Gi1 / 0 en el Switch3 pasó los estados de Escucha, los datos de aprendizaje y de dirección MAC se actualizarán.el tiempo de almacenamiento cambió de 300 segundos a 15 y, mientras que la interfaz Gi1 / 0 en el Switch3 pasó los estados de Escucha, los datos de aprendizaje y de dirección MAC se actualizarán.

También es interesante la pregunta, ¿qué sucede si volvemos a habilitar la interfaz Gi0 / 1 en Switch1? Cuando la interfaz Gi0 / 1 está habilitada, como corresponde, pasará al estado de Escucha y comenzará a enviar BPDU. Tan pronto como Switch2 reciba una BPDU en el puerto Gi0 / 0, inmediatamente volverá a seleccionar su puerto raíz, ya que aquí el costo será el más pequeño y comenzará a enviar tráfico a través de la interfaz Gi0 / 0, pero debemos esperar hasta que la interfaz Gi0 / 1 pase el estado de escucha, aprendizaje al reenvío . Y el retraso ya no será de 50 segundos, sino de 30.

El protocolo STP también pensó en varias tecnologías para optimizar y asegurar el funcionamiento del protocolo STP. No los consideraré con más detalle en este artículo, los materiales sobre ellos se pueden encontrar en abundancia en varios sitios.

Source: https://habr.com/ru/post/es419491/


All Articles