Bucle en una VLAN hace que OSPF no publique la red

Fecha: 24 de noviembre del 2021

 

Escenario

 

Este laboratorio es parte de un escenario con equipos reales y en producción bastante más complejo, pero reproducirmos aqui

la parte que interesa también con equipos reales, y que demuestra que un bucle en una VLAN (independientemente de la causa)

hace que OSPF deje de publicar la red que representa esa VLAN (192.168.2.0/24).

 

En el caso real el trunk es un port-channel de dos puertos, que para el caso se comporta igual, bloqueando la VLAN en cuestión en

ambos puertos, por simplicidad aqui se realizó con un trunk común.

 

1.- Verificacíon inicial:

 

1.1.- En el switch layer 3:

 

1.1.1.- Verificación de layer 2:

 

SwitchL3#sh spanning-tree int gi1/0/1

 

Vlan                Role    Sts Cost      Prio.Nbr Type

------------------- ---- --- --------- -------- ----------------

VLAN0001      Desg  FWD 19        128.1    P2p

VLAN0002      Desg FWD 19        128.1    P2p

SwitchL3#

 

1.1.2.- Verificación de layer 3:

 

SwitchL3#sh ip int brief

Interface              IP-Address      OK? Method Status            Protocol

Vlan1                  192.168.1.1     YES  manual    up                    up

Vlan2                  192.168.2.1     YES  manual   up                    up

Vlan666                10.0.0.1         YES  manual    up                    up

SwitchL3#

 

1.2.- En el router remoto:

 

*Nov 24 13:47:18.774: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.1.1 on Vlan666 from LOADING to FULL, Loading Done

 

Router#sh ip route

---omitido---

Gateway of last resort is not set

 

      10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks

C        10.0.0.0/30 is directly connected, Vlan666

L        10.0.0.2/32 is directly connected, Vlan666

O     192.168.1.0/24 [110/2] via 10.0.0.1, 00:00:00, Vlan666

O     192.168.2.0/24 [110/2] via 10.0.0.1, 00:00:00, Vlan666

Router#

 

2.- Se genera el bucle:

 

Como se mencionó al principio este lab es independiente de la causa del bucle, pero para los que se pregunten:

¿cómo puede ocurrir un bucle hoy en día, si todo tiene spanning-tree ? mi respuesta es “siempre hay un bucle al acecho”

 

-       Un ejemplo muy común puede ser tener equipos que no soporten spanning-tree (todos los no administrables).

-       Un ejemplo también común y aunque tengamos “todo Cisco” en un escenario de telefonía IP y en donde alguien llega

con la notebook y conecta mal (por la causa que sea) el patch (suelto en el piso) del teléfono IP (de la marca que sea)

y que la mayoría no sólo no soportan spanning-tree, sino que lo filtran...causando el tan esperado bucle ya que el switch

al no recibir su propia BPDU en los ports involucrados, simplemente no lo detecta.

Imaginen que la conexión equivocada no es directamente contra el switch sino que pueden conectarlo a un wall plate

en la pared o en el escritorio (y que este esta conectado al switch como otro puesto mas). 

 

Esto, crean que es así y que ocurre más de lo que imaginan, pero sigamos con lo nuestro.

 

 

Al generarse el bucle tenemos este log en el switch de capa 3 que nos indica que el trunk que trae la VLAN 2 entra

en DOWN en layer 3 (debido al bloqueo en layer 2 y que es el único port en la VLAN).

 

SwitchL3#

*Nov 24 15:10:15.803: %LINK-3-UPDOWN: Interface Vlan2, changed state to down

*Nov 24 15:10:16.803: %LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan2, changed state to down

SwitchL3#

 

2.1.- Verificación en el switch de layer 3:

 

2.1.1.- Verificación de layer 2:

 

SwitchL3#sh spanning-tree int gi1/0/1

 

Vlan                Role   Sts Cost      Prio.Nbr Type

------------------- ---- --- --------- -------- ----------------

VLAN0001      Desg  FWD 19        128.1    P2p

VLAN0002      Back BLK  19        128.1    P2p

SwitchL3#

 

SwitchL3#sh int trunk

 

Port        Mode             Encapsulation   Status        Native vlan

Gi1/0/1     on                    802.1q          trunking            2

 

Port        Vlans allowed on trunk

Gi1/0/1     1-2

 

Port        Vlans allowed and active in management domain

Gi1/0/1     1-2

 

Port        Vlans in spanning tree forwarding state and not pruned

Gi1/0/1     1   (no está la VLAN 2)

SwitchL3#

 

2.1.2.- Verificación de layer 3:

 

SwitchL3#sh ip int brief

Interface              IP-Address      OK? Method Status            Protocol

Vlan1                  192.168.1.1     YES manual up                   up

Vlan2                  192.168.2.1     YES manual down             down

Vlan666                10.0.0.1         YES manual  up                    up

 

2.2.- Verificación en el router remoto:

 

Router#sh ip route

---omitido---

      10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks

C        10.0.0.0/30 is directly connected, Vlan666

L        10.0.0.2/32 is directly connected, Vlan666

O     192.168.1.0/24 [110/2] via 10.0.0.1, 00:00:38, Vlan666

Router# (ya no esta la red 192.168.2.0/24)

 

Obviamente si tuviesemos otro puerto en el core con la VLAN 2 esta no entraría en DOWN, pero en este escenario (el real) fué así.

Hay una opción de que la VLAN quede siempre en UP en layer 3, pero que puede dar otro tipo de falsos positivos que no discutiremos hoy.

 

3.- Daños colaterales:

 

Como efecto colateral, cae el OSPF contra el vínculo al router (el enlace P2P en la VLAN 666).

Esto es momentáneo y debido a que la CPU del switch layer 3 queda exigida por el bucle (por más que sea un equipo robusto como un

Catalyst 9300 con solo las cosas de este lab conectadas).

 

 

*Nov 24 15:10:45.996: %OSPF-5-ADJCHG: Process 1, Nbr 10.0.0.2 on Vlan666 from FULL to DOWN, Neighbor Down: Dead timer expired

SwitchL3#

 

3.1.- Verificamos:

 

SwitchL3#sh proc cpu

CPU utilization for five seconds: 54%/28%; one minute: 33%; five minutes: 19%

 PID Runtime(ms)     Invoked      uSecs   5Sec   1Min   5Min TTY Process

 PID Runtime(ms)     Invoked      uSecs   5Sec   1Min   5Min TTY Process

   1           0          15     

 -omitido---

 

*Nov 24 15:11:36.394: %OSPF-5-ADJCHG: Process 1, Nbr 10.0.0.2 on Vlan666 from LOADING to FULL, Loading Done

                     |

                   (down de aprox 50 segundos, pero la VLAN 2 recuerden que NO se publicará hasta levantar el bucle)

 

3.2.- Implementación de contramedidas para evitarlo:

 

De las herramientas que conocemos, el storm-control pensamos que sería la mas eficaz, pero aqui vamos con otra mala noticia...

 

SwitchL3(config)#int gi1/0/1

SwitchL3(config-if)#storm-control broadcast level 0.01

SwitchL3(config-if)#storm-control multicast level 0.01 (en una interface de giga esto esto es 10 Mbps de bucle)

SwitchL3(config-if)#end

SwitchL3#

 

3.3.- Generamos bucle.

 

3.4.- Verificamos:

 

SwitchL3#sh storm-control

Key: U - Unicast, B - Broadcast, M - Multicast, UU - Unknown Unicast

Interface    Filter State   Upper        Lower           Current         Action    Type

-----------    ---------------  -----------     -----------        -------------   ---------    ----

Gi1/0/1      Forwarding    0.01%        0.01%          0.00%       None      B

Gi1/0/1      Blocking       0.01%        0.01%         99.97%      None      M

SwitchL3#

 

SwitchL3#sh proc cpu

CPU utilization for five seconds: 56%/30%; one minute: 60%; five minutes: 34%

 PID Runtime(ms)     Invoked      uSecs   5Sec   1Min   5Min TTY Process

   1           0                  15                     0  0.00%  0.00%  0.00%   0 Chunk Manager

 ---omitido---

SwitchL3#

 

3.5.- Levantamos (abrimos) el bucle.

 

SwitchL3#

*Nov 24 15:46:00.474: %STORM_CONTROL-5-ABATED: A Multicast storm abated on Gi1/0/1. Packet filter does not apply on the interface.

*Nov 24 15:46:37.300: %LINK-3-UPDOWN: Interface Vlan2, changed state to up

*Nov 24 15:46:38.299: %LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan2, changed to UP

*Nov 24 15:47:22.363: %OSPF-5-ADJCHG: Process 1, Nbr 10.0.0.2 on Vlan666 from LOADING to FULL, Loading Done

 

3.6.- Verificamos:

 

SwitchL3#sh proc cpu

CPU utilization for five seconds: 0%/0%; one minute: 54%; five minutes: 33%

 ---omitido---                                   |

                                                    (volvemos a la normalidad y no tocamos mas nada)

SwitchL3#

 

Router#sh ip route

---omitido---

Gateway of last resort is not set

 

      10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks

C        10.0.0.0/30 is directly connected, Vlan666

L        10.0.0.2/32 is directly connected, Vlan666

O     192.168.1.0/24 [110/2] via 10.0.0.1, 00:00:00, Vlan666

O     192.168.2.0/24 [110/2] via 10.0.0.1, 00:00:00, Vlan666

Router#

 

Existe la posibilidad de generar un shutdown del puerto en caso de tormenta (storm) pero esto también podría ser dañino,

ya que bajaría todo el puerto y siendo un trunk bajaría todas las VLANs en él.

 

Existe también otro método más complejo de proteger la CPU del switch pero ya excedemos (bastante) el alcance de este

lab que era “solo” para estudiar de que un bucle en layer 2 “baja” una ruta en layer 3.

 

 

(2021) ...and there are also happy people.

Rosario, Argentina