STP

SPANNING­TREE Introducción En  topologías  capa  2  existe  un  problema  cuando  existe  alta  disponibilidad  o  redun

Views 379 Downloads 3 File size 340KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

SPANNING­TREE 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. Spanning­tree  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 SPANNING­TREE 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 spanning­tree, 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 spanning­tree 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 spanning­tree 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 no­root 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 spanning­tree. 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. (config­if)# spanning­tree cost  o (config­if)# spanning­tree vlan x,y,z cost 

Prioridad de puertos switches cisco Luego del cálculo de spanning­tree 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 spanning­tree son las siguientes: 1. Elegir un root bridge 2. Los equipos no­root 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 no­root comparte bpdu con los otros equipos non.root a través de las interfaces designated (no root port). ROOT ←­­­­ ROOT PORT   SW ­­­­­> BPDU

Timers spanning­tree hello­time  (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.

max­age  (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 Spanning­tree 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