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.
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.
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