Entre los temas que estuve rescatando del «olvido» están los protocolos de ruteos dinámicos y OSPF es uno de ellos.
Este documento te va a servir de guía para implementar OSPFv2 donde lo necesites pero más allá de eso, el objetivo personal del mismo es practicar y recordar estos temas que sino los usas muy seguido puede que se te olviden. Para avanzar un poco más en esta guía te muestro primero como se configura una red en Routers Cisco y luego en Mikrotik.
Que dice Wikipedia de OSPF?
Wikipedia nos da definiciones e información general de casi todo en internet por eso me pareció acertado mostrarte primero lo que nos dice.
Open Shortest Path First (OSPF), «Abrir el camino más corto primero» en español, es un protocolo de red para encaminamiento jerárquico de pasarela interior o Interior Gateway Protocol (IGP), que usa el algoritmo Dijkstra, para calcular la ruta más corta entre dos nodos.
Su medida de métrica se denomina cost, y tiene en cuenta diversos parámetros tales como el ancho de banda y la congestión de los enlaces. OSPF construye además una base de datos enlace-estado (Link-State Database, LSDB) idéntica en todos los routers de la zona.
OSPF puede operar con seguridad usando MD5 para autenticar sus puntos antes de realizar nuevas rutas y antes de aceptar avisos de enlace-estado.
OSPF es probablemente el protocolo IGP más utilizado en redes grandes; IS-IS, otro protocolo de encaminamiento dinámico de enlace-estado, es más común en grandes proveedores de servicios. Como sucesor natural de RIP, acepta VLSM y CIDR desde su inicio. A lo largo del tiempo, se han ido creando nuevas versiones, como OSPFv3 que soporta IPv6 o las extensiones multidifusión para OSPF (MOSPF), aunque no están demasiado extendidas. OSPF puede «etiquetar» rutas y propagar esas etiquetas por otras rutas.
Una red OSPF se puede descomponer en regiones (áreas) más pequeñas. Hay un área especial llamada área backbone que forma la parte central de la red a la que se encuentran conectadas el resto de áreas de la misma. Las rutas entre las diferentes áreas circulan siempre por el backbone, por lo tanto todas las áreas deben conectar con el backbone. Si no es posible hacer una conexión directa con el backbone, se puede hacer un enlace virtual entre redes.
Los routers (también conocidos como encaminadores) en el mismo dominio de multidifusión o en el extremo de un enlace punto-a-punto forman enlaces cuando se descubren los unos a los otros. En un segmento de red Ethernet los routers eligen a un router designado (Designated Router, DR) y un router designado secundario o de copia (Backup Designated Router, BDR) que actúan como hubs para reducir el tráfico entre los diferentes routers. OSPF puede usar tanto multidifusiones (multicast) como unidifusiones (unicast) para enviar paquetes de bienvenida y actualizaciones de enlace-estado. Las direcciones de multidifusión usadas son 224.0.0.5 y 224.0.0.6. Al contrario que RIP o BGP, OSPF no usa ni TCP ni UDP, sino que se encapsula directamente sobre el protocolo IP poniendo «89» en el campo protocolo.
https://es.wikipedia.org/wiki/Open_Shortest_Path_First
Características de OSPF
Existen dos versiones de OSPF v2 y v3. A grandes rasgos la v2 trabaja con IPv4 y la v3 con IPv6 pero también hay mejoras en la autenticación y diferencias técnicas por el tipo de enrutamiento e ips que manejan.
OSPF, como todo protocolo de ruteo dinámico, tiene como objetivo distribuir sus redes con sus pares para que estos encuentren el mejor camino a su destino.
Cuando lo configuremos decidiremos que redes vamos a publicar y a través de que interfaces. Estas interfaces junto con los otros routers formaran un Sistema Autónomo y definiremos un Area central que se conoce como Backbone y normalmente tiene el identificador «0» o en el caso de mikrotik 0.0.0.0 . Cada Router tendrá un ID que podremos definir a mano o tomará la ip más alta del router como tal.
Resumimos:
- Router ID (lo ponemos o toma la ip más alta del router)
- Area (0 es la principal pero podemos crear varias áreas con diferentes números)
- Redes a declarar (Son las redes que queremos que los otros routers sepan que tenemos)
Una vez que configuramos los routers intervinientes empieza el trabajo de OSPF.
- Cada router enviará un paquete «Helllo» (Cada 10 segundos por defecto) dónde tratará de descubrir a sus vecinos y ponerse de acuerdo con ellos. Si todo está bien. Estos paquetes se envian usando la dirección multicast 224.0.0.5 y en IPv6 ff02::5.
- Una vez conocidos entre vecinos tomarán la decisión entre ellos y definiran sus roles como DR y BDR (Router designado y Router designado de Backup).
- Seguido a esto cada router enviará las redes que quiere publicar en un paquete LSA (Link State Advertisements). Si uno de los routers no llegará a recibir correctamente este paquete se volverá a enviar hasta que el router confirme su recepción.
- Cada 30 minutos los routers mandaran un LSA de refresco para confirmar que sus rutas siguen disponibles o no y mantener saludables las tablas de enrutamiento. Si alguno cambia sus rutas manda un LSA con la nueva info para que todos los routers estén al tanto.
- Si un router se llegara a caer durante cierto período de tiempo(normalmente 4 veces la duración de un hello pero esto se puede modificar[40 segundos]) la topología entera calculará de nuevo las rutas sin la información de este router.(Otra vez Dijstra)
- Si todo está andando correctamente se dice que los Routers han llegado a una adyacencia completa.
Qué contiene un paquete hello?
- ID del Router: La identificación del router que envía el paquete.
- Intervalo Hello: El tiempo entre envíos de paquetes Hello.
- Intervalo Dead: El tiempo que espera un router antes de declarar un enlace caído.
- Prioridad del Router: Usada en la elección del Router Designado (DR).
- Dirección IP del Router: Las direcciones IP de los routers vecinos desde los cuales ha recibido Hello packets.
- Área OSPF: Identificador del área OSPF a la que pertenece el paquete.
- Parámetros de red: Información sobre la red en la que opera el router.
Mucha información técnica pero es lo que necesitas para entender de manera simple como funciona OSPF.
Laboratorio CISCO
La primera vez que vi OSPF fue en la curricula del CCNA hace ya bastante tiempo, por eso hagamos este primer laboratorio que me trae un poco de nostalgia.
La topología que elegí es la siguiente:
Traté de describir lo mejor posible en los gráficos para que puedas repetir la configuración. Usé tres Routers 2911 que en el Packet Tracer tienen 3 interfaces para poder hacer la topología como en el gráfico.
# Configuración para el Router R1
# Configuro el nombre
configure terminal
hostname R1
# Interfaz para el área 0 contra R2
interface GigabitEthernet0/0
ip address 10.0.10.1 255.255.255.248
no shutdown
# Interfaz para el área 0 contra R3
interface GigabitEthernet0/1
ip address 10.0.30.1 255.255.255.248
no shutdown
#Mi LAN
interface GigabitEthernet0/2
ip address 192.168.10.1 255.255.255.0
no shutdown
#Configuro el DHCP para mi lan
ip dhcp excluded-address 192.168.10.1
ip dhcp pool LAN1
network 192.168.10.0 255.255.255.0
default-router 192.168.10.1
dns-server 8.8.8.8
# Acá viene la papa!
#Instancia de OSPF en el router(pueden ser varias, se define con un integer)
router ospf 1
#Mi ID manualmente
router-id 10.0.10.1
#Las redes que voy a compartir
network 10.0.10.0 0.0.0.7 area 0
network 10.0.30.0 0.0.0.7 area 0
network 192.168.10.0 0.0.0.255 area 0
Fijate que la configuración de OSPF es bastante sencilla. Por si tenés dudas dejé todo comentado.
# Configuración para el Router R2
configure terminal
hostname R2
interface GigabitEthernet0/0
ip address 10.0.10.2 255.255.255.248
no shutdown
interface GigabitEthernet0/1
ip address 10.0.20.1 255.255.255.248
no shutdown
interface GigabitEthernet0/2
ip address 192.168.20.1 255.255.255.0
no shutdown
ip dhcp excluded-address 192.168.20.1
ip dhcp pool LAN2
network 192.168.20.0 255.255.255.0
default-router 192.168.20.1
dns-server 8.8.8.8
router ospf 1
router-id 10.0.20.1
network 10.0.10.0 0.0.0.7 area 0
network 10.0.20.0 0.0.0.7 area 0
network 192.168.20.0 0.0.0.255 area 0
# Configuración para el Router R3
configure terminal
hostname R3
interface GigabitEthernet0/0
ip address 10.0.30.2 255.255.255.248
no shutdown
interface GigabitEthernet0/1
ip address 10.0.20.2 255.255.255.248
no shutdown
interface GigabitEthernet0/2
ip address 192.168.30.1 255.255.255.0
no shutdown
ip dhcp excluded-address 192.168.30.1
ip dhcp pool LAN3
network 192.168.30.0 255.255.255.0
default-router 192.168.30.1
dns-server 8.8.8.8
router ospf 1
router-id 10.0.30.2
network 10.0.30.0 0.0.0.7 area 0
network 10.0.20.0 0.0.0.7 area 0
network 192.168.30.0 0.0.0.255 area 0
Una vez configurado todo comprobemos si todo funciona. Si si, podemos hacer un ping desde cada lan y ver si se comunican entre si pero también tenemos comandos para hacer la revisión de los estados de enlace, de la vecindad, de las rutas enviadas, etc.
show ospf neighbor
#Revisemos cuáles son nuestros vecinos y sus estados
show ip ospf
#Muestra información general sobre OSPF, incluyendo el router ID, áreas, etc.
show ip ospf database
#Muestra la base de datos de enlaces OSPF.
show ip route ospf
#Con este comando vemos las rutas adquiridas por OSPF
Algo que se me pasaba y se puede ver acá es la distancia administrativa, OSPF tiene una de 110. Este número que varía según el protocolo será relevante si una misma ruta es aprendida por diferentes protocolos. En este caso, el router, elegirá la ruta con la distancia administrativa más baja.
Es importante saber configurar OSPF pero es también muy importante saber hacer el troubleshooting para encontrar posibles fallas así que intentá complejizár lo que más puedas este laboratorio buscando hacerlo fallar y detectando el porqué. Es mi consejo.
Laboratorio Mikrotik
El protocolo es el mismo en Mikrotik y obviamente funciona de la misma manera. Hay algunas diferencias en la configuración. En Cisco toda la configuración se hace en un bloque de comandos en «router ospf [id]», mientras que en RouterOS está separado en varias secciones dentro del mismo menú. (Lo vas a notar mejor si lo haces en winbox).
- Primero vas a configurar la instancia de OSPF y el ID del router.
- Luego vas a configurar el área
- Y por última las redes que vas a compartir
# Configuración para el Router R1
/system/identity/set name=R1
#Las ips de las interfaces
/ip address
add address=10.0.10.1/24 interface=ether1
add address=10.0.30.1/24 interface=ether2
add address=192.168.10.1/24 interface=ether3
#configurar el DHCP en ether3
/ip/dhcp-server/setup
#Configuramos la instancia
/routing ospf instance
add name=default router-id=10.0.10.1
#Configuramos el área
/routing ospf area
add name=backbone area-id=0.0.0.0
#Configuramos las redes
/routing ospf interface-template
add networks=10.0.10.0/24 area=backbone
add networks=10.0.30.0/24 area=backbone
add networks=192.168.10.0/24 area=backbone
Si tratás de replicar esto en Winbox recordá que /Routing/OSPF/ es el menú Routing y submenú OSPF y así con todo.
# Configuración para el Router R2
/system/identity/set name=R2
#Interfaces
/ip address
add address=10.0.10.2/24 interface=ether1
add address=10.0.20.1/24 interface=ether2
add address=192.168.20.1/24 interface=ether3
#configurar en ether3
/ip/dhcp-server/setup
/routing ospf instance
add name=default router-id=10.0.20.1
/routing ospf area
add name=backbone area-id=0.0.0.0
/routing ospf interface-template
add networks=10.0.10.0/24 area=backbone
add networks=10.0.20.0/24 area=backbone
add networks=192.168.20.0/24 area=backbone
# Configuración para el Router R3
/system/identity/set name=R3
/ip address
add address=10.0.30.2/24 interface=ether1
add address=10.0.20.2/24 interface=ether2
add address=192.168.30.1/24 interface=ether3
#configurar en ether3
/ip/dhcp-server/setup
/routing ospf instance
add name=default router-id=10.0.30.2
/routing ospf area
add name=backbone area-id=0.0.0.0
/routing ospf interface-template
add networks=10.0.30.0/24 area=backbone
add networks=10.0.20.0/24 area=backbone
add networks=192.168.30.0/24 area=backbone
Ya lo tenemos configurado, ahora chequeemos si funciona
/routing ospf neighbor print
#Muestra los vecinos OSPF y su estado.
/routing ospf instance print
#Muestra información general sobre la instancia OSPF.
/routing ospf lsa print
#Muestra la base de datos de enlaces OSPF.
/ip route print where ospf
#Muestra las rutas OSPF en la tabla de enrutamiento.
Como veras en ambos routers funciona de la misma manera con comandos muy similares y podemos hacer el troubleshooting con la misma información.
Bonus track LAB
Cómo bonus track dediqué 5 minutos a reemplazar uno de los RouterOS en GNS3 por un Router Cisco 3725 y solo copiando y pegando configuración vincular OSPF entre Mikrotik y Cisco pero no tuve resultados. Quizás haya que realizar algún otro troubleshooting para encontrar la solución definitiva. Me lo llevo para probar y quizás actualizar este documento más adelante.
Me llevo un laboratorio que tenía olvidado y les dejo algo para jugar. Ojalá les haya gustado.