Análisis del update OSPF para 2048 rutas
Fecha: 25 de octubre
del 2023
Escenario
Este lab es una consecuencia del escenario del
análisis de cuantos paquetes/segmentos se necesitaban para
anunciar 2048
rutas en BGP y del anterior sobre la redistribución en OSPF de la tabla
BGP de todo internet.
Mientras realizaba las pruebas, me preguntaba si
también en OSPF se generaba fragmentación y esas cosas,
y también meditaba que OSPF no trabaja sobre TCP
ni UDP y ahí mismo nació este lab.
No nos enfocamos en todo el handshacking OSPF
sino en estudiar como se intercambia el volúmen de información
correspondiente a las 2048 rutas.
1.- Verificación inicial de
adyacencias:
Router-A#
Oct 25 16:26:07.406: %OSPF-5-ADJCHG: Process 1,
Nbr 10.0.0.2 on Vlan1 from LOADING to FULL, Loading Done
Router-A#
Router-B#
Oct 25 16:26:08.879: %OSPF-5-ADJCHG: Process 1,
Nbr 10.0.0.1 on Vlan1 from LOADING to FULL, Loading Done
Router-B#
Router-A#sh ip ospf nei
Neighbor ID
Pri State Dead Time Address
Interface
10.0.0.2 0 FULL/DROTHER 00:00:39 10.0.0.2 Vlan1
Router-A#
Router-B#sh ip ospf nei
Neighbor ID
Pri State Dead Time Address
Interface
10.0.0.1
1 FULL/DR 00:00:34 10.0.0.1 Vlan1
Router-B#
2.- Verificación en las
tablas de enrutamiento:
2.1.- Rutas en Router-A:
Router-A#sh ip route summary
IP routing table name is default (0x0)
IP routing table maximum-paths is 32
Route Source
Networks Subnets Replicates
Overhead Memory (bytes)
connected
0 2 0 120 360
static
2048
0 0 122880 368640
application
0 0 0 0 0
bgp 65534
0 0 0 0 0
External:
0 Internal: 0 Local: 0
ospf 1 0 0 0 0 0
Intra-area: 0 Inter-area: 0 External-1: 0 External-2: 0
NSSA
External-1: 0 NSSA External-2: 0
internal 1
82340
Total
2049
2 0 123000 451340
Router-A#
2.2.- Rutas en Router-B:
Router-B#sh ip route summary
IP routing table name is default (0x0)
IP routing table maximum-paths is 32
Route Source
Networks Subnets Replicates
Overhead Memory (bytes)
connected
0 2 0 112 344
static 0 0 0 0
0
bgp 65535
0 0 0 0 0
External:
0 Internal: 0 Local: 0
ospf 1 2048 0 0 114688 360448
Intra-area: 0 Inter-area: 0 External-1: 0 External-2: 2048
NSSA
External-1: 0 NSSA External-2: 0
internal
1
82436
Total
2049
2 0 114800 443228
Router-B#
2.3.- De la tabla de
enrutamiento:
Router-B#sh ip route
Codes: L - local, C - connected, S - static, 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
i -
IS-IS, su - IS-IS summary, 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, + - replicated route
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, Vlan1
L
10.0.0.2/32 is directly connected, Vlan1
O E2
200.1.0.0/24 [110/20] via 10.0.0.1, 00:01:07, Vlan1
O E2
200.1.1.0/24 [110/20] via 10.0.0.1, 00:01:07, Vlan1
O E2
200.1.2.0/24 [110/20] via 10.0.0.1, 00:01:07, Vlan1
O E2
200.1.3.0/24 [110/20] via 10.0.0.1, 00:01:07, Vlan1
---resumido---
O E2
200.8.253.0/24 [110/20] via 10.0.0.1, 00:03:55, Vlan1
O E2
200.8.254.0/24 [110/20] via 10.0.0.1, 00:03:55, Vlan1
O E2
200.8.255.0/24 [110/20] via 10.0.0.1, 00:03:55, Vlan1
Router-B#
3.- Verificación en
Wireshark:
Podemos ver que cada anuncio de Router-A será
devuelto desde Router-B como ruta aprendida por Router-A, el algoritmo Dijkstra
del OSPF se encargará de calcular y descartar los
bucles que se generen por estos retornos B-A.
También podemos ver que el intercambio de rutas
son paquetes unicast a diferencia de otros anuncios que se realizan mediante
paquetes multicast en 224.0.0.5 y 224.0.0.6.
---resumido---
---resumido---
Frame 4: 1498 bytes on
wire (11984 bits), 1498 bytes captured (11984 bits) on id 0
Ethernet II, Src: cc:46:d6:2b:5a:54, Dst:
70:81:05:b5:77:82 (layer 2)
Internet Protocol Version 4, Src: 10.0.0.1, Dst: 10.0.0.2 (layer 3)(paquetes
unicast)
Open Shortest Path First (layer 3+1 (no layer 4))
OSPF
Header
OSPF DB
Description
Interface MTU: 1500
Options: 0x52, O, (L) LLS Data block, (E) External Routing
DB
Description: 0x02, (M) More
.... 0... = (R) OOBResync: Not set
.... .0.. = (I) Init: Not set
.... ..1. = (M) More: Set (aquí señala que
hay mas rutas por anunciar)
.... ...0 = (MS) Master: No
DD
Sequence: 4697 (se irá incrementando en cada paquete)
LSA-type 1 (Router-LSA), len 36
LSA-type 1 (Router-LSA), len 36
LSA-type 2 (Network-LSA), len 32
LSA-type 5
(AS-External-LSA (ASBR)), len 36 (primera ruta anunciada)
.000 0011 0001 1101 = LS Age (seconds): 797
0... .... .... .... = Do Not Age Flag: 0
Options: 0x20, (DC) Demand Circuits
LS
Type: AS-External-LSA (ASBR) (5)
Link State ID: 200.1.0.0
Advertising Router: 10.0.0.1
Sequence Number: 0x80000002
Checksum:
0x4783
Length: 36
LSA-type 5 (AS-External-LSA (ASBR)), len 36 (segunda
ruta anunciada)
.000 0011 0001 1101 = LS Age (seconds): 797
0... .... .... .... = Do Not Age Flag: 0
Options: 0x20, (DC) Demand Circuits
LS
Type: AS-External-LSA (ASBR) (5)
Link State ID: 200.1.1.0
Advertising Router: 10.0.0.1
Sequence Number: 0x80000002
Checksum: 0x3c8d
Length: 36
LSA-type 5 (AS-External-LSA (ASBR)), len 36 (tercera
ruta anunciada)
.000 0011 0001 1101 = LS Age (seconds): 797
0... .... .... .... = Do Not Age Flag: 0
Options: 0x20, (DC) Demand Circuits
LS
Type: AS-External-LSA (ASBR) (5)
Link State ID: 200.1.2.0
Advertising Router: 10.0.0.1
Sequence Number: 0x80000002
Checksum: 0x3197
Length: 36
LSA-type
5 (AS-External-LSA (ASBR)), len 36 (anuncio
de la 200.1.3.0)
LSA-type
5 (AS-External-LSA (ASBR)), len 36 (anuncio
de la 200.1.4.0)
LSA-type
5 (AS-External-LSA (ASBR)), len 36 (anuncio
de la 200.1.5.0)
---resumido--- (anuncios de la 200.1.6.0 a
200.1.66.0)
LSA-type
5 (AS-External-LSA (ASBR)), len 36 (última
ruta anunciada en este paquete)
.000
0011 0001 1101 = LS Age (seconds): 797
0... .... .... .... = Do Not Age Flag: 0
Options: 0x20, (DC) Demand Circuits
LS
Type: AS-External-LSA (ASBR) (5)
Link State ID: 200.1.67.0 (ruta 68 de este paquete)
Advertising Router: 10.0.0.1
Sequence Number: 0x80000002
Checksum: 0x6324
Length: 36
OSPF
LLS Data Block
Checksum: 0xfff6
LLS
Data Length: 12 bytes
Extended options TLV
Frame 6,8,10, etc… a 58: anuncios desde
la 200.1.68.0 a 200.8.192.0 (~70
rutas en este paquete)
Frame 60: 1338 bytes on
wire (10704 bits), 1338 bytes captured (10704 bits) on id 0
Ethernet II, Src: cc:46:d6:2b:5a:54, Dst:
70:81:05:b5:77:82
Internet Protocol Version 4, Src: 10.0.0.1, Dst:
10.0.0.2
Open Shortest Path First
OSPF
Header
OSPF DB
Description
Interface MTU: 1500
Options: 0x52, O, (L) LLS Data block, (E) External Routing
DB
Description: 0x02, (M) More
.... 0... = (R) OOBResync: Not set
.... .0.. = (I) Init: Not set
.... ..1. = (M) More: Set (aquí señala que hay mas rutas por anunciar)
.... ...0 = (MS) Master: No
DD
Sequence: 4725
LSA-type 5 (AS-External-LSA (ASBR)), len 36
.000 0011 0001 1101 = LS Age (seconds): 797
0... .... .... .... = Do Not Age Flag: 0
Options: 0x20, (DC) Demand Circuits
LS
Type: AS-External-LSA (ASBR) (5)
Link State ID: 200.8.193.0
Advertising Router: 10.0.0.1
Sequence Number: 0x80000002
Checksum: 0x9f62
Length: 36
LSA-type 5 (AS-External-LSA (ASBR)), len 36 (anuncio
de la 200.8.194.0)
LSA-type 5 (AS-External-LSA (ASBR)), len 36 (anuncio
de la 200.8.195.0)
LSA-type 5 (AS-External-LSA (ASBR)), len 36 (anuncio
de la 200.8.196.0)
---resumido--- (anuncio de la 200.8.197.0 a
200.8.254.0)
LSA-type 5 (AS-External-LSA (ASBR)), len 36
.000 0011 0001 1101 = LS Age (seconds): 797
0... .... .... .... = Do Not Age Flag: 0
Options: 0x20, (DC) Demand Circuits
LS
Type: AS-External-LSA (ASBR) (5)
Link State ID: 200.8.255.0 (última
ruta de las 2048)
Advertising Router: 10.0.0.1
Sequence Number: 0x80000002
Checksum: 0xf2d0
Length: 36
OSPF
LLS Data Block
Checksum: 0xfff6
LLS
Data Length: 12 bytes
Extended options TLV
Frame 63: 78 bytes on
wire (624 bits), 78 bytes captured (624 bits) on id 0
Ethernet II, Src: cc:46:d6:2b:5a:54, Dst:
70:81:05:b5:77:82 (layer 2)
Internet Protocol Version 4, Src: 10.0.0.1, Dst:
10.0.0.2 (layer 3)
Open Shortest Path First (layer 3+1 (no layer 4))
OSPF
Header
OSPF DB
Description
Interface MTU: 1500
Options: 0x52, O, (L) LLS Data block, (E) External Routing
DB
Description: 0x00
.... 0... = (R) OOBResync: Not set
.... .0.. = (I) Init: Not set
.... ..0. = (M) More: Not set (aquí vemos que no hay mas rutas para anunciar)
.... ...0 = (MS) Master: No
DD
Sequence: 4726 (29 paquetes en la secuencia)
OSPF
LLS Data Block
Checksum: 0xfff6
LLS
Data Length: 12 bytes
Extended options TLV
4.- Resumen:
Al intercambiar información DBD (DataBase
Descriptor) los paquetes se generan de manera de no
ser fragmentados, no se utiliza TCP ni UDP y
contienen un flag de que llegarán mas rutas mediante
(More) y un número de secuendia para poder
verificar la integridad de la base recibida.
Otro detalle es que en los anuncios no se
encuentran las máscaras explícitamente detalladas, ya que
se redistribuyeron redes clase C y no subredes o
rutas resúmen.
(2023) routes to
madness
Rosario, Argentina