Analizando la ruta por defecto en un switch SG350

Fecha: 9 y 10 de abril del 2024

 

Escenario

 

Con la necesidad de migrar el segmento IP en unos switches SG350 en producción, y donde en el procedimiento se preveía la pérdida de conectividad contra la IP original y se debía generar una reconexión a la nueva IP, nos encontramos con que el switch mantenía ambas direcciones y también default gateway sin perder conexión, que a diferencia de los Catalyst, la IP que configuramos “pisa” o reemplaza la anterior.

 

 

Esto generó el debate de cómo quedan trabajando ambos gateways, ya que durante la migración el router de la red tiene doble direccionamiento IP (secondary address) hasta que se elimina la original luego de asegurarnos la conectividad. Como todos los labs, empieza simple y derrapa. Vamos y vemos…

 

En este laboratorio representamos las IP cambiadas por simplicidad, pero mantenemos el mismo modelo de equipo para replicar el comportamiento.

 

 

1.- Configuración original del router (gateway del segmento):

 

!

interface vlan 1

 ip address 192.168.1.1 255.255.255.0

!

 

2.- Verificamos conectividad gateway – switch:

 

Router#ping 192.168.1.10

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.1.10, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms

Router#

 

3.- Se agrega la IP secundaria:

 

Al final de la migración esta será la única IP (con un pase de mágia cambiará de secundaria a primaria).

 

Router#conf t

Enter configuration commands, one per line.  End with CNTL/Z.

Router(config)#int vlan 1

Router(config-if)#ip add 10.0.0.1 255.255.255.0 secondary

Router(config-if)#end

Router#

 

4.- Template a aplicar:

 

Nos conectamos desde el router en caso de que el template no entre en un solo paquete y que no entre la línea del gateway, y perder la conectividad contra la IP nueva (por no tener gateway).

Supuestamente al cambiar la IP se pierde la conectividad y debemos conectarnos a la IP nueva.

 

conf t

int vlan 1

ip add 10.0.0.10 255.255.255.0

exit

ip default-gateway 10.0.0.1

end

 

 

5.- Aplicamos template:

 

Al pegar el template y ser unos pocos bytes entrarían en un solo paquete IP y también en el buffer de la sesión CLI del switch, por lo que todos los comandos deberían aplicarse.

 

Router#telnet 192.168.1.10 (aquí usamos Telnet por simplicidad)

Trying 192.168.1.10 ... Open

 

User Name:admin

Password:*********

 

Switch#conf t

Switch(config)#int vlan 1

Switch(config-if)#ip add 10.0.0.10 255.255.255.0

Switch(config-if)#exit

Switch(config)#ip default-gateway 10.0.0.1

Switch(config)#end

Switch#

Switch# (no se perdió conectividad)

 

6.- Verificamos configuración en el switch:

 

Switch#sh runn

config-file-header

---omitido/resumido---

hostname Switch

ip telnet server

!

interface vlan 1

 ip address 10.0.0.10 255.255.255.0

 ip address 192.168.1.10 255.255.255.0 (no dice secondary como en los Catalyst)

 no ip address dhcp

!

---omitido/resumido---

!

ip default-gateway 10.0.0.1

ip default-gateway 192.168.1.1

Switch#

 

7.- Verificamos a nivel ARP:

 

Switch#sh arp

 

Total number of entries: 2

 

 

VLAN    Interface  IP address   HW address            status

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

vlan 1     gi9         10.0.0.1        cc:46:d6:2b:5a:54   dynamic

vlan 1     gi9         192.168.1.1  cc:46:d6:2b:5a:54   dynamic

 

Switch#

 

8.- Verificamos a nivel rutas:

 

Switch#sh ip route (vemos que la tabla es “igual pero diferente” a una tabla IOS)

Maximum Parallel Paths: 1 (1 after reset)

IP Forwarding: enabled

Codes: > - best, C - connected, S - static

 

S   0.0.0.0/0 [1/4] via 10.0.0.1, 00:01:58, vlan 1 (aquí si pisó el gateway)

C   10.0.0.0/24 is directly connected, vlan 1

C   192.168.1.0/24 is directly connected, vlan 1

 

Switch#

 

9.- Verificamos conectividad fuera de la red:

 

Switch#ping 190.0.0.1

Pinging 190.0.0.1 with 18 bytes of data:

 

18 bytes from 190.0.0.1: icmp_seq=1. time=0 ms

18 bytes from 190.0.0.1: icmp_seq=2. time=0 ms

18 bytes from 190.0.0.1: icmp_seq=3. time=0 ms

18 bytes from 190.0.0.1: icmp_seq=4. time=0 ms

 

10.- Eliminamos la IP original a migrar:

 

Switch#conf t

Switch(config)#int vlan 1

Switch(config-if)#no ip add 192.168.1.10

 

[Connection to 192.168.1.10 closed by foreign host]

Router#

 

 

11.- Nos conectamos a la IP migrada:

 

Router#telnet 10.0.0.10

Trying 10.0.0.10 ... Open

 

User Name:admin

Password:*********

 

12.- Verificamos la configuración:

 

Switch#sh runn

---omitido/resumido---

hostname Switch

ip telnet server

!

interface vlan 1

 ip address 10.0.0.10 255.255.255.0

 no ip address dhcp

!

---omitido/resumido---

!

ip default-gateway 10.0.0.1 (implicitamente se eliminó el gateway 192.168.1.1)

Switch#

 

 

13.- Realizamos una contraprueba agregando la IP original:

 

Switch#conf t

Switch(config)#int vlan 1

Switch(config-if)#ip add 192.168.1.10 255.255.255.0

Switch(config-if)#exit

Switch(config)#ip default-gateway 192.168.1.1

Switch(config)#end

Switch#

 

 

14.- Verificamos rutas:

 

Aquí determinamos que el gateway no es la última ruta agregada, sino que aparentemente utiliza como gateway la IP más baja alcanzable (reachable) de los segmentos existentes.

 

Switch#sh ip route

Maximum Parallel Paths: 1 (1 after reset)

IP Forwarding: enabled

Codes: > - best, C - connected, S - static

 

S   0.0.0.0/0 [1/4] via 10.0.0.1, 00:16:52, vlan 1

C   10.0.0.0/24 is directly connected, vlan 1

C   192.168.1.0/24 is directly connected, vlan 1

 

Switch#

 

 

15.- Repasemos los criterios de agregado de rutas:

 

Cuando el router debe decidir agregar o reemplazar una ruta en la tabla de enrutamiento, existen criterios tales como:

 

15.1.- Mejor distancia administrativa (AD), donde:

 

Connected                      0

Static                              1

eBGP                           20

EIGRP (internal)          90

IGRP                          100

OSPF                         110

IS-IS                           115

RIP                             120

EIGRP (external)        170

iBGP                           200

EIGRP summary route   5

 

De dos rutas al mismo destino con diferentes AD, se agregará la que tenga menor valor.

 

15.2.- Mejor métrica:

 

De dos rutas al mismo destino con similar AD, se instalará la que tenga mejor métrica decidida por el protocolo o manualmente (por ejemplo el comando cost en OSPF).

 

15.3.- Mayor coincidencia:

 

De dos rutas al mismo destino con similar AD y con similar métrica, se instalará la que tenga mayor coincidencia de bits en el prefijo determinado por la máscara (máscara más bits gana).

 

15.4.- Balanceo de carga:

 

De dos rutas al mismo destino con similar AD, con similar métrica y con similar prefijo/máscara, se instalarán ambas y se realizará balanceo de carga (no discutiremos este criterio, pero puede ser por destino o por paquete).

 

16.- ¿y la ruta por defecto ?

 

En el caso de la ruta por defecto veremos que el concepto es el mismo, es una ruta a todo lo que no coincida anteriormente, pero debe existir una (y sólo una) como último recurso tal como vemos en este ejemplo de un switch Catalyst:

 

Switch#sh ip route

Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP

       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area

       * - candidate default, U - per-user static route, o - ODR

       P - periodic downloaded static route

 

Gateway of last resort is 192.168.1.1 to network 0.0.0.0

 

C    192.168.1.0/24 is directly connected, Vlan1

C    192.168.2.0/24 is directly connected, Vlan2

S*   0.0.0.0/0 [1/0] via 192.168.1.1

                      [1/0] via 192.168.2.1

Switch#          |   |

Switch#          |   misma métrica

                      misma AD

 

 

17.- Criterio de agregado de la ruta por defecto:

 

Asumimos que este criterio se basa en la búsqueda recurrente del próximo salto (next-hop) asociado a la ruta por defecto (quad zero), esto sería algo así:

 

Suponiendo que el destino es 190.0.0.1 se busca en la tabla en orden descendente:

 

-        coinciden los primeros 24 bits con 192.168.1.0 ? no

-        coinciden los primeros 24 bits con 192.168.2.0 ? no

-        se asume que coincide con 0.0.0.0/0 192.168.1.1, ¿como llego a 192.168.1.1 ?

-        se incia una búsqueda de rutas a 192.168.1.1

-        coinciden los primeros 24 bits con 192.168.1.0 ? si

-        se reenvía el paquete a (la MAC de) 192.168.1.1

 

 

 

Por lo tanto determinamos que en la ruta por defecto el criterio es la IP más baja del next-hop. Misterio resuelto.

 

 

(2024) Tales for rainy afternoons

Rosario, Argentina