SPANNINGTREE Introducción En topologías capa 2 existe un problema cuando existe alta disponibilidad o redun
Views 379 Downloads 3 File size 340KB
SPANNINGTREE Introducción En topologías capa 2 existe un problema cuando existe alta disponibilidad o redundancia de enlaces (caminos redundantes) en estos casos se puede producir un loop de capa 2 (bucle), el cual provoca un mal funcionamiento y uso excesivo de ancho de banda. Los switches solo manejan tablas de MAC locales por lo tanto no conoce las tablas de MAC de los switches vecinos. Cada switch al recibir una trama lo que primero reviza es la MAC origen y la asocia a la tabla MAC/puerto, luego reviza la MAC destino, si la conoce la consulta en la tabla MAC y la envia hacia el puerto destino seteado anteriormente en la tabla. En el caso contrario si el switch no conoce la MAC destino debe buscar la MAC address desconocida por lo que realiza un flooding de MAC realizando una búsqueda de la MAC address en todos los puertos, si en uno de esos puertos conecta a otro switch este debe enviar la información a través de la interfaz por la que interconecta con el otro equipo. Si en un escenario el equipo interconecta con otro enlace adicional tendrá 2 enlaces disponibles por el cual podría conocer la MAC desconocida, el equipo que solicitaba la información en un principio tendrá el problema de no saber por cual de los 2 enlaces llegar hacia el destino. Las tablas MAC estarán flapeando porque en algun momento conocerá el destino a través del puerto 1 y luego a través del puerto 2, esto consumirá CPU llegando al 100%. Esta situación se repetirá en los casos tramas broadcast, multicast, ya que nunca habrá el mismo origen/destino y flapeará consumiendo todo el CPU del switch. Spanningtree busca romper el bucle realizando una "conversación" entre los switches en el cual intercambian mensajes identificando la cantidad de puertos de interconexión y poder bloquear 1 enlace temporalmente para evitar bucles de capa 2.
ESTADOS DE SPANNINGTREE 802.1D ●
Blocking: estado inicial, no envia ni recibe MAC address, no participa en el aprendizaje de MAC pero si recibe BPDU a través de esta (para saber si el puerto pasa al siguiente estado) 1
● ●
Disabled: interfaz apagada, no participa en spanningtree, interface con error, etc. Listening: estado no envía ni recibe tráfico de usuario (no aprende MAC) pero si empieza a enviar y recibir BPDU. Si el puerto puede pasar al próximo estado pasa a estado learning ● Learning: no envia ni recibe tráfico de usuario pero si MAC address además de las BPDUs. Si pasando un tiempo determinado si aprueba pasar al próximo estado pasaría al estado forwarding. ● Forwarding: envía y recibe datos de usuario, MAC address y mensajes BPDU.
BPDU Paquetes que comunican los switch en spanningtree que envía cierta información de su existencia a otros switches. La MAC destino de las BPDU es la MAC conocida (well known “stándar”) 0180.C200.0000, en el caso de la MAC origen el Switch coloca la MAC del puerto. Tenemos 2 tipos de BPDU De configuración: son las que se envían aportando la información de quien es el root bridge, el root path cost, etc, aportando la info necesaria para poder armar el árbol de spanningtree De notificación (TCN): se envía cuando ha habido un cambio en la red (enlaces caídos, etc)
● ● ● ● ●
BPDU Type: si es BPDU de tipo configuration o TCN Protocol version ID: que tipo de STP Port ID: Número de puerto….. (más adelante). Root ID: ID del root bridge. Flag: información que utiliza cada tipo de STP 2
● ● ● ● ● ●
Bridge ID: identificativo del switch que envia la BPDU (los root o noroot tambien envian BPDU, en esta BPDU va incluido el Bridge ID). Rooth Path Cost: Una vez que un switch sabe quién es el root sabrá cual es costo total para llegar hasta el root bridge. Hello time: (2 segundos por defecto) cada cuánto tiempo se envian BPDU. Forward delay: (15 segundos por defecto) cuánto tiempo hay que estar en cada uno de los estados de spanningtree. Message age: cantidad de saltos hasta el root bridge. (root bridge = 0) Max age: (20 segundos por defecto) Durante cuánto tiempo la BPDU es válida. Si durante 20 segundos no he recibido nuevas BPDU se entiende que hubo un cambio en la red (root bridge down o uplink down). El timer de validez = (max age message age).
BPDU TCN Se utilizan solo para publicar cambios en la topología L2. Cuando un switch detecta un cambio envía un aviso al root bridge mediante una BPDU con flag de TCN (en esta no incluye qué es lo que cambió). Los cambios que detecta son los de cambio de estado de un puerto Forwarding/learning y pasa a blocking o cuando un puerto pasa a estado forwarding. Necesitan ser confirmadas, cuando el switch envia una BPDU con flag de TCN a través de su Root port y sigue enviandolo sólo hasta que reciba una confirmación (el intervalo de tiempo en que envia la BPDU con flag de TCN corresponde al hello interval local del switch no al del root bridge). 3
Cuando los switches superiores reciben la BPDU con flag de TCN responden con una BPDU de configuración con el flag de ACK. Luego el switch superior es encargado de enviar el TCN hacia el root bridge a través de su propio Root Port. Cuando el Root bridge recibe el TCN responderá con una BDPU de configuración con el flag de ACK y luego envia una por todos los puertos una BPDU de configuración con el Flag de TCN. Cuando todos los switches reciben esta nueva BPDU de configuración todos los switches bajaran el tiempo de validez de la tabla MAC correspondiente al tiempo del forward delay timer. Por lo tanto de 300 segundos por defecto a 15 segundos por defecto por lo que cada switch deberá actualizar su tabla MAC a los 15 segundos actualizando la topología y tabla de MAC local en cada switch.
Root Bridge Para que STP pueda funcionar es necesario colocar un equipo como Root Bridge, este se elije mediante un identificativo bridge id (BID) de 8 bytes: 2 bytes: prioridad 6 bytes: MAC del switch (MAC de la supervisora, backplane, etc). El equipo con menor bridge ID será elegido como root bridge. Al encender cada equipo los equipos no tienen ninguna comunicacion con otro switch por lo tanto no saben de la existencia de los demás equipos lo cual lleva a que cada equipo se considerará a sí mismo como root bridge. En este paso cada switch enviará BPDU por todas las interfaces anunciandose como Root Bridge dando como resultado que cuando los otros equipos también envian BPDU comienza la etapa de conocimiento de los demás equipos identificando las BPDU enviadas por los otros switches comparadno su propia MAC y Prioridad con los demás pudiendo armar la topología y edentificando quién es el equipo con menor prioridad y MAC quedando como ROOT BRIDGE. En la imagen SW1 sería el ROOT BRIDGE ya que posee prioridad 4096 y menor MAC que SW2 el cual posee la misma prioridad. Luego de que el root bridge es elegido el root bridge comienza a enviar BPDU y los equipos downlink los reenvian a los demás equipos.
Prioridades El switch que tiene el menor Bridge ID es elegido como root ridge. El bridge ID se calcula en base a la MAC del equipo y la prioridad del equipo, esta prioridad se puede configurar de 2 maneras: Manualmente: se asigna una prioridad manual al equipo, para que se determine la menor prioridad del equipo se debe conocer las demás prioridades de los equipos de la topologia. 4
Automáticamente: se puede configurar el switch para que “escuche” los valores de prioridad de los demás switches identificándolas y eligiendo una prioridad más baja que los demás para el mismo. spanning-tree root primary (escucha la prioridad del actual root del equipo y se configura una menor prioridad). La prioridad por defecto de spanning-tree es 32768, por lo tanto el actual un root debería tener la prioridad 28672 y el root primary debería tener 24576. Las prioridades van en múltiplos de 4096. También existe el comando spanning-tree root secondary el cual configura una prioridad intermedia para que actue como “ROOT BACKUP”
Elección del root port El root port es el puerto que elige cada switch como mejor ruta para llegar al root bridge. El root envia una bpdu con un path cost de 0, el switch recibirá la bpdu y le añadirá el costo de la interfaz y elijirá la mejor interfaz como root port. Este switch reenvia bpdu con su propio costo como path cost al proximo switch, este ultimo recibirá la bpdu y añadirá el costo de la interfaz, en caso de que tuviese 2 interfaces como opciones para llegar al root bridge elijirá la con mejor costo + patch cost recibido y la de mejor costo de puerto y prioridad. En caso de empate (2 bpdu, mismo costo, misma prioridad) se concidera el switch vecino con el menor Bridge id. Root port = puerto en estado forwarding. envia y recibetráficoo, envia y recibe bpdus.
Designated port El algoritmo de Spanning-Tree pasa por 3 fases de desición antes de bloquear un puerto: 1. Elección de Root Bridge 2. Elección de Root Port por cada nonRoot Bridge 3. Elección de Designated Port en cada segmento Por cada segmento debe haber solo un puerto como Designated Proceso de elección de designated port: 1. Puerto que anuncia menor Root Path Cost 2. En caso de empate, puerto perteneciente switch con menor Bridge ID (sender ID del switch vecino) 3. En caso de empate, puerto con menor prioridad 4. En caso de empate, puerto menor
5
Todos los puertos del Root Bridge son Designated y se encontrarán en forwarding.
Costo de puertos switches cisco Cisco por defecto lo que hace es calcular el coste a través del ancho de banda, también se puede realizar manualmente configurando el coste de STP en la interfaz.
Cuando existen 2 puertos con el mismo costo hacía el root bridge se elige el del switch que tenga el menor Sender ID. (configif)# spanningtree cost o (configif)# spanningtree vlan x,y,z cost
Prioridad de puertos switches cisco Luego del cálculo de spanningtree se debe calcular el mejor puerto para llegar al root. Si los costos de las interfaces o root path cost es el mismo para llegar al switch root se deberá considerar el Port ID. El port ID se conforma de la prioridad del puerto + número de puerto, ejemplo:
Por defecto todos los puertos tienen prioridad 128 y el número de puerto es equivalente al número de interfaz del equipo. 6
En el caso de necesitar que una interfaz que tiene el mismo Port ID, El mismo costo, etc pase de BLK a FWD se deberá cambiar la prioridad del puerto desde el vecino ya que en el orden del criterio de decisión de puerto root la última decisión la lleva el Port ID Cuando 2 o más interfaces tienen el mismo root path cost se determina en base a los siguientes criterios: El menor root Bridge ID El menor root Path Cost hacia el Root (si es 1 mismo switch esto no vale) El menor Sender Bridge ID (si es 1 mismo switch esto no vale) El menor Sender port ID Por lo tanto, si el camino al root desde un switch x se tienen 2 interfaces con costos iguales hacia el root (root path cost) y es sólo 1 switch el que se encuentra entre el root y el switch en cuestión se basará en el Sender Port ID.
Designated port Las decisiones que toman los switchs en una topología spanningtree son las siguientes: 1. Elegir un root bridge 2. Los equipos noroot elegir un puerto root 3. Por cada segmento se escoja un designated port. Todos los puertos del root bridge son designated port y se encuentran en estado forwarding. En 1 segmento puede haber sólo 1 puerto designado. Los switch noroot comparte bpdu con los otros equipos non.root a través de las interfaces designated (no root port). ROOT ← ROOT PORT SW > BPDU
Timers spanningtree hellotime (2 segundos por defecto): cada cuanto tiempo se envían BPDUs, cuando la topología ya está estable y el root sea elegido el valor del root será el que se considere como valor del timer para todos los equipos. Cada switch puede tener sus propios timers localmente el cual sirve para enviar las BPDU TCN, mientras que las BPDU configurations se envían en base al timer del root. forward delay (15 segundos por defecto): es el tiempo que un puerto debe estar en el estado listening y learning (estados transitorios), (15 segundos c/u por defecto). 7
listening 15 segundos learning 15 segundos forwaring.
maxage (20 segundos por defecto): tiempo de vida de la BPDU, tiempo que es válida la BPDU recibida. Cada vez que 1 switch recibe una BPDU y es almacenada localmente, modifica los valores que se deben modificar y es enviada a los vecinos, si no se recibe una nueva BPDU durante 20 segundos se entiende que ha ocurrido un error en la red ya que no se ha recibido una nueva BPDU, si esto ocurre se reinicia el proceso Spanningtree en el equipo. Para saber el valor exacto de cantidad de segundos que se debe recibir una nueva BPDU es en base al siguiente calculo:
MAX AGE MESSAGE AGE* *message age: cantidad de saltos desde el siguiente switch root +1 (el message age del root es 0 por lo tanto el contador comienza en 1 desde el switch vecino directamente conectado al root)
SWTICH ROOT > SW1 > SW2 > SW3 =message age en SW3 = 2 Por lo tanto SW3 deberá recibir BPDU en un tiempo máximo de 18 segundos.
(config)# spanning-tree vlan x hello-time (config)# spanning-tree vlan x forward-delay (config)# spanning-tree vlan x max-age
8