barra de menu

miércoles, 24 de mayo de 2017

Capítulo 5: Spanning Tree Protocols

Spanning-Tree (STP) es un protocolo de capa 2 (IEEE 802.1D) que previene los bucles y calcula la mejor ruta en topologías con enlaces redundados. Cuando hay un cambio en la topología, el STP recalcula la ruta.




CONCEPTOS Y DEFINICIONES


Todos los switches que participan en el árbol STP tienen un único "Bridge ID".

Bridge ID: identificador único. Es una combinación de la mac y la prioridad STP que configuramos.

Root Bridge: Switch que tenga el "Bridge ID" más bajo.

Root Port: El puerto de cada switch que está más cerca del Root Bridge.

Root Path Cost: Es el coste para llegar al Root Bridge. Este valor es iagual al coste del camino recibido de la configuración de las BPDUs más el coste del puerto del bridge.

Port Cost: Cada interfaz tiene un coste asignado predefinido: El valor por defecto en una interfaz que sea de 1 Gigabit Ethernet es de 20000. Este es un valor configurable (1-200000000).

Una vez que el Root Bridge ha sido determinado, el resto de switches que no son Root, calculan el coste hasta el Root Bridge. El puerto con menos coste en estos switches será el root port. 

Los switches que no son Root recibe periódicamente de los vecinos BPDUs de STP que contienen un "root path cost". El switch que lo recibe añade este "root path cost" a cada "port cost" de sus interfaces locales. La interface que tenga este valor más bajo (root path cost + port cost) será el "root port" para el switch.


Designated Bridge: Es un switch que representa el segmento LAN.

Port ID: Un identificador único para cada puerto del switch.

Designated Port: El puerto designado para enviar las BPDU'S en la parte LAN.

Bridge Protocol Data Unit (BPDU): son paquetes usados entre switches para el protocolo STP. 

Cuando hay varios switches en un segmento LAN, el que tenga menor coste hacia el Root Bridge será el designated bridge. Si existieran dos switches con el mismo coste para llegar al root, el switch que tenga el Bridge ID más bajo será el designated bridge. Si también coinciden en el bridge id, será el ID del puerto por donde se llega al root. 

ESTADO DE LOS PUERTOS


Hay 4 estados de puerto:

Blocking (bloqueando): el puerto descarta todos los paquetes y solo oye para BPDU's. No está activo en la topología.

Listening (escuchando): el puerto descarta todos los paquetes y solo oye para BPDU's. El puerto está cambiando de estado y será activo.

Learning (aprendiendo): el puerto descarta todos los paquetes y solo oye para BPDU's. El puerto está cambiando de estado y el switch empieza a aprender direcciones mac.

Forwarding (enviando): el puerto envía y recibe datos y BPDU's. El puerto se queda en este estado hasta que haya un cambio en la topología y continua aprendiendo direcciones mac.

También podemos deshabilitar el puerto para el protocolo STP. Este puerto no participa en el árbol STP aunque envía tráfico si se recibe por otro puerto no deshabilitado y que pertenezca a la misma vlan. Los puertos administrativamente deshabilitados para STP continuan haciendo operaciones básicas de bridging y envían tramas basándose en la tabla de direcciones MAC.


Trama Ethernet BPDU

  • Dirección de origen: es la dirección mac del puerto por donde sale
  • Dirección de destino: es una dirección multicast reservada para STP. Esta dirección es la 01:30:C2:00:00:00
Tipos de BPDU

 STP usa BPDU para intercambiar información entre switches. Tenemos dos tipos de BPDU:
  • Configuration BDPU: determina la topología del árbol de la LAN. STP usa la información de estas BPDU para elegir el root, identificar los "root ports", identificar los "designated ports" de cada segmento físico y bloquear los enlaces para evitar bucles.
  • Topology Change Notification (TCN) BPDU: notifican cambios en la topología.
Formato de Configuration BPDU
En protocol ID es un 0 para STP
Cuando STP inicia en una red, los dispositivos empiezan a mandar BPDU's por todos los puertos para indicar a los demás switches o bridges que quieren ser candidatos a ser el root. Cada dispositivo usa las BPDU's para formar el árbol y asignar los roles a los puertos. Una vez convergido el árbol, el root bridge enviará las "configuración BDPU" periódicamente (por defecto es cada 2 segundos).

Formato de TCN BPDU


INTERCAMBIO DE BPDU'S

Los equipos están constantemente intercambiando bdpu's. Cada bridge construye su propia configuración basándose en las BPDU's que le llegan.

Elección del Root Bridge:

La elección del Root Bridge se hace en base al Bridge ID (BID), que es un número que combina la dirección mac con una prioridad configurable del puerto. El switch mira primero a la prioridad y el que la tenga más baja será el Root. Si coincide con algún o algunos equipos de la red, entra en juego la mac siendo elegida las más baja.

Roles de Puerto y Estado:

Una vez elegido el Root Bridge, aquellos equipos que no son el Root empiezan a calcular el coste para llegar a este. Esto determina el rol del puerto. Y el rol del puerto determina su estado.

Todos los puertos del Root tendrán el rol de Designated y el estado de Forwarding.

En los equipos que no son el Root Bridge, el puerto con menor coste hacia el Root Bridge, tendrá el rol de "root port" y el estado de "Forwarding". Si un equipo tiene uno o varios puertos con el mismo coste, el "root port" será el que tenga un ID de puerto más bajo, es decir, se prefiere el ge-0/0 al ge-0/1.

Coste de los enlaces


Luego el STP asiginará el rol de "Designated" al puerto con menos coste (después del root port). Si hay empate se resuelve igual que con el root port. Este puerto también estará el estado de "Forwarding". 

Los demás puertos que no son ni root ni designated estarán en blocking. En el estado de bloqueo, los puertos no envían BPDU's, pero si las reciben.



Una vez asignados los roles y los puertos, el árbol STP converge.

STP usa tiempos específicos cuando cambian de estado los puertos. La convergencia de STP dura entre 30 y 50 segundos: 2x Forwarding Delay (15x2=30) + Max Age Timer (20)

Cuando hay un fallo en la red, STP recalcula y vuelve a converger:


Una vez que los switches que no son el root bridge han cambiado el tiempo de espera de la mac (age timer) por el tiempo más corto de espera (15 segundos por defecto), borra todas las entradas de la tabla mac para las que no haya recibido un "update". Todas estas entradas deberán ser asociadas otra vez siguiendo el proceso normal de aprendizaje de macs.

La solución, cuando hay un cambio de topología, no es eficiente, pues si tarda en converger 50 segundos, habrá muchos servicios que dejen de funcionar. Por ello, con el tiempo se hizo una mejora del protocolo creando uno nuevo: RSTP.



RSTP (RAPID SPANNING-TREE)


Este protocolo está definido en la IEEE 802.1w e incorporado a la 802.1D en 2004. Introduce una serie de mejoras sobre el STP.

El tiempo de convergencia es menor. RSTP identifica los enlaces Point-To-Point y cuando caen, no ejecuta los tiempos de espera sino que transita al link alternativo inmediatamente.

ROLES DE PUERTO

A parte del root port y el designated port que ya tenía STP, añade 3 más RSTP:

Edge Port: Es un puerto que conecta a la LAN sin ningún switch conectado. Siempre en Forwarding.

Alternate Port: provee un camino alternativo hacia el root bridge. Es como un root port de backup. Bloquea el tráfico mientras reciba BDPU's superiores de un switch vecino. Está siempre en "discarding" pero recibe las BPDU's.

Backup Port: Provee un camino alternativo hacia un segmento de red (solo en switches designated). Bloquea el tráfico siempre que tenga un "alternate" funcionando. Es una especie de backup del puerto alternate.



ESTADO DE PUERTOS EN RSTP 

Cuando una interfaz está "deshabilitada" administrativamente en RSTP, esta no participa ni en STP y RSTP pero inunda las BPDU's que reciba y que pertenezcan a la misma vlan y hace funciones básicas de bridging como asociar direcciones mac en la tabla bridge.



RSTP utiliza menos estados de puerto que STP pero cumpliendo las mismas funciones como podemos ver en el cuadro.

BPDU's en RSTP 

Utiliza las BPDU's igual que STP pero le añade una característica a las BPDU de configuración (TCNA) y es que cumplen la función de "keepalive" monitorizando a los vecinos. De esta manera se da cuenta de un cambio en la topología antes que STP. Si no recibe una BPDU en 3 intervalos de tiempo de "hello" (por defecto son cada 2 segundos), asume que ha perdido conectividad y actualiza el árbol. 

La diferencia es que serían 6 segundos (2x3) y en STP puede llevar hasta 50 segundos.

Las interfaces ethernet trabajando en "full duplex" se consideran enlaces Punto-a-Punto (P2P) y por eso transitan a forwarding sin esperar el intervalo de tiempo.


Las interfaces ethernet trabajando en "half duplex" se consideran enlaces de medio compartido (shared LAN) y estas tienen que esperar el intervalo de tiempo.

Bridge Priority= priority+extended system ID


RSTP es totalmente compatible con STP. Si RSTP recibe una BPDU del tipo STP la trata en modo STP. Si un switch STP recibe una RSTP BPDU, la descarta.



Una de las grandes diferencias entre ellos es que los puertos root y edge de RSTP transitan inmediatamente a forwarding sin tener que esperar los 30 segundos de STP hasta que llega al estado de forwarding (15'' listening + 15'' learning).

Cuando un puerto está en transición en STP, esto causa un cambio de topología. Sin embargo, en RSTP se reduce el número de cambios de topología ya que solo envía TCN's cuando cambia el estado en un puerto "non-edge" a forwarding, que normalmente son los puertos que conectan con otro switch. 

Cuando un puerto transita hacia el estado de "discarding" no se generan en los TCN's que llevarían a un cambio de topología y recálculo de esta.

Cuando hay un cambio en la topología, el dispositivo que inicia el cambio envía TCN's por todos los puertos que tenga en "designated" y por el root port también. Como el resto de switches reciben los TCN's no tienen que esperar los intervalos de tiempo y directamente hacen un "flush" de las direcciones mac de la tabla bridge (borra las entradas y empieza a aprender otra vez las direcciones). Hay dos excepciones: no hace flush de las direcciones mac que haya aprendido por los puertos "edge" y tampoco hace flush de las direcciones del puerto por donde recibe los TCN's.


El fallo se mira desde la perspectiva del switch 3


El fallo se mira desde la perspectiva del switch 3





CONFIGURACIÓN RSTP Y COMPROBACIÓN



Para comprobar el protocolo:




MSTP (Multiple Spanning Tree Protocol) 

MSTP provee una extensión del RSTP. Permite crear múltiples instancias (MSTI) para balancear tráfico de todos los enlaces físicos disponibles.



Cada instancia MSTP, es decir, cada MSTI crea una topología de STP que podemos mapear a una o varias vlans. Así podemos redundar y balancear el tráfico de capa 2.
En MSTP un puerto puede pertenecer a varias vlans y puede ser dinámicamente bloqueado en una instancia y permitido en otra. Esto reduce el consumo de recursos de la red y mantiene las CPU a un nivel óptimo. También provee el tiempo de reconvergencia de RSTP.
MSTP permite agrupar switches en una "Región MST", donde comparten nombre del grupo de la región, nivel de revisión y los mapeos de las instancias con las vlan. Cada región soporta hasta 64 MSTI.
MSTP reduce el número de BPDU's en la LAN incluyendo la información de spanning-tree para todas las MSTI en una única BPDU. 
MSTP elige un "root bridge" regional para cada MSTI, que se calcula en base a la prioridad.
MSTP es compatible con STP y RSTP gracias a CST, que permite interconectar múltiples regiones MST o conectar una MST con un switch donde se ejecuta solo STP.
CST: Common Spanning Tree
Los 13 primeros campos aseguran la compatibilidad
Todos los entornos MSTP contienen un CST. Todos los bridges en CST eligen un único root bridge, que es el responsable de calcular el camino para el CST. Los bridges fuera de la región tratan a cada región como si fuera un Virtual Bridge, independientemente del número de dispositivos que participen en cada región MST.
El CIST (Common and Internal Spanning Tree) es una topología que conecta todos los switches RSTP y MSTP a través de una topología ACTIVA. Crea un único árbol de spanning tree calculado por RSTP.

Luego cada región MST tiene su propio árbol de spanning tree, al que se le llama Spanning Tree Interno, que se conforma gracias a los campos de BPDU que quedan libres. Todos los switches que pertenezcan a la misma región deberán tener el mismo "Configuration ID". Una vez que el árbol interno está constituido, por defecto, todas las vlans seguirán este árbol.

MST BPDU


Si no configuramos MSTI, todas las vlan irán por el mismo spanning tree interno. La información que tienen los mensajes MSTI permite la elección del root bridge, root ports, designated ports, etc. Cada MSTI puede tener una o varias vlans asociadas. Sin embargo, una vlan no puede pertenecer a más de una MSTI. La MSTI no lleva ninguna información de la VLAN ID. El mapeo de la VLAN con el MSTI se hace localmente en los switches, por lo que habrá que configurarlos iguales en todos los que queramos que participen.



CONFIGURACIÓN DE MST


 VSTP

VSTP permite que el protocolo spanning tree sea calculado para cada VLAN. Soporta hasta 4094 caminos separados en la red. No es un protocolo estándar aunque es compatible con PVST+ y Rapid-PVST+ de Cisco. Cuantas más VLANs añadamos, más recursos consumirá la CPU. Hay una elección de bridge, de root port, etc, por cada VLAN. Usa la misma terminología que STP.


  • Dirección de origen: es la dirección mac del puerto por donde sale
  • Dirección de destino: es una dirección multicast reservada para STP. Esta dirección es la 01:00:0C:CC:CC:CD
  • VLAN Tag: 802.1Q
  • El formato de la BPDU es el mismo que RSTP añadiendo el tipo, la longitud y el valor que propaga el ID de la VLAN en el campo VLAN TAG.
VSTP mantiene una instancia de STP por cada vlan permitiendo balanceo de carga a nivel de capa 2. Nosotros seleccionamos que vlan participa en el escenario VSTP.

Soporta hasta 253 diferentes topologías de spanning-tree. A partir de ahí se recomienda habilitar también RSTP. En los switches EX son los dos únicos protocolos de spanning-tree compatibles.
En los switches EX, el protocolo MVRP no soporta VSTP por lo que hay que definir el vínculo con la vlan manualmente.

Cuando el escenario es de unos cientos de vlans, VSTP puede sobrecargar la CPU y, por eso, se recomienda pasar a MSTP.

Ejemplos de configuración 
STP




Se muestra la configuración básica de STP. Los dispositivos MX usan una versión de STP basada en la IEEE 802.1D-2004, forzando la versión del protocolo a 0, ejecutando RSTP en modo STP (force-version stp).
RSTP
 

VSTP se configura igual pero en vez de con interfaces, lo hacemos con vlans. También podemos usar el atributo vlan-group para agrupar vlans.


Monitorización de Spanning Tree


Para monitorizar MSTP:
  

Para monitorizar VSTP:







 PROTECCIÓN DE BPDU

Un PC usando aplicaciones de bridging o incluso un switch particular que se pinche a nuestra red puede generar BPDU. Si estas llegan a nuestro switch, pueden generar cambios en la topología, lo que conllevaría posibles bucles y perdida de servicios.

Podemos habilitar la protección de BPDU en aquellas interfaces donde no esperamos que entre ninguna. De esta manera, si el switch detecta que entra una BPDU,deshabilita la interface y dejar de enviar tramas llevando el puerto al estado de BLOCKING.

Esto se puede hacer en equipos que estén ejecutando STP o no.


Configuración de Protección de BPDU




El switch A y B son de la capa de distribución. El switch C pertenece a la capa de acceso. Este último da acceso a un PC y a un switch no autorizado como vemos en el gráfico. Se han configurado los switches A,B y C para que usen STP. Por lo tanto, deberíamos configurar la protección BPDU en los puertos de acceso del switch C. Se puede apreciar a la izquierda la configuración requerida para ello. Si se reciben en los puertos de acceso alguna BPDU, el switch C pone el puerto en estado de BLOCKING y deja de enviar tramas.




Ahora nos ponemos en el caso de que el switch C no participa en el escenario STP. Aun así, deberíamos proteger los puertos. A la izquierda vemos cómo se hace. Fijaos que se hace en diferente parte de la estructura del Junos.

Los comandos para verificar este procedimiento:


show spanning-tree interface

show l2-learning interface

clear error bpdu interface -  para desbloquear interfaces


PROTECCIÓN DE BUCLE

Aunque STP ya es un protocolo de prevención de bucles, un fallo de hardware o software podría hacer que nuestras interfaces cambien de estado llevándonos a bucles en nuestra red y, por lo tanto, a pérdidas de servicio.

Cuando la protección de bucle está habilitada, la topología de STP detecta los "root ports" y los "alternate ports" y se asegura que estos reciban BPDUs. Si una interface con la protección de bucle habilitada deja de recibir BPDUs desde su "designated port", reaccionaría como si tuviera un problema físico la conexión. No cambia el estado a "enviar". En vez de eso, pone la interface en estado de "loop-inconsistent". Cuando la interfaces se recupera, se pone en estado de BLOCKING una vez recibe la primera BPDU.

Juniper recomienda que si habiliamos la protección de bucle (loop protection), lo hagamos en todas las interfaces del switch que tenga la oportunidad de convertirse en root port o designated port. La protección de bucle es más eficiente cuando la configuramos en todos los siwtches de nuestra red.

Se puede configurar protección de bucle o protección de BPDU en las interfaces de un switch, pero no se pueden configurar las dos a la vez.

Configuración de Protección de bucle



El escenario que vemos es el típico de STP, siendo el puerto ge-1/0/0 del switch C el que está en BLOCKING y como "alternate port". El caso es que ocurre un fallo físico en la interface ge-1/0/1 del switch B y tanto este switch como el C cree que la interface está levantada (UP) pero el switch C no recibe BPDUs del switch B por ese enlace. Sin la protección de bucle, el switch C pondría la interface ge-1/0/0 en el estado de "forwarding"(envío) creando un bucle. Podemos ver a la derecha del gráfico cómo se configuraría para prevenir esto.

Usaremos los mismos comandos para verificar estados de interfaces.
Se puede configurar protección de bucle o protección de root, pero no las dos a la vez. 

PROTECCIÓN DE ROOT

Se puede dar el caso que el root port se elija incorrectamente, como por ejemplo si hay switches no autorizados o PCs enviando BPDUs.

Debemos habilitar la protección del root en las interfaces que no deberían recibir BPDUs superiores y no debería ser elegidas como "root port". Si un puerto que tiene el la protección del root habilitada recibe una BPDU superior, este puerto se cambia al esado de "incosistent", bloqueando el interface. Cuando esta interface deja de recibir BPDUs superiores, vuelve al estado de listening y después al de forwarding automáticamente.

Si habilitamos "root protection" en una interface, se habilita para todas las variantes del protocolo STP.

Se puede configurar protección de bucle o protección de root, pero no las dos a la vez. 


Si la interface ge-1/0/0 del switch C recibe una BPDU superior desde el switch D, esta interface se bloquearía. Vemos a la izquierda cómo configurar el puerto.


Usaremos los mismos comandos para verificar estados de interfaces.

show spanning-tree interfaces
 

No hay comentarios:

Publicar un comentario