Introducción a OSPF

Spread the love

OSPF es uno de los protocolos más importantes que debemos conocer en redes IP. Hay muchas cosas qué decir al respecto, es un protocolo óptimo, de rápida convergencia y de gran escalabilidad. Quiero empezar una serie de entradas describiendo detalles de éste interesante protocolo. En éste caso haré la introducción a sus características. Disfrútenlo.

Clasificación de los protocolos de enrutamiento dinámico

Antes de comenzar, quiero recordarles una clasificación de los protocolos de enrutamiento dinámico que siempre menciono en mis clases. Si cree que ya conoce bien éstos conceptos, pase al contenido sobre OSPF. Los protocolos de enrutamiento se pueden clasificar según dos criterios:

  1. Tipo de algoritmo
  2. Alcance

El alcance se define según se use al interior de un Sistema Autónomo o através de diferentes sistemas autónomos, los interiores se llaman IGP (por sus siglas en inglés Interior Gateway Protocol) y los exteriores EGP (Exterior Gateway Protocol). En el último caso sólo hemos tenido variantes de BGP, que es el protocolo encargado de transferir las rutas de internet y la unidad base del protocolo es el sistema autónomo. Los IGPs son los más conocidos, dado que los estudiamos en los primeros niveles de todas las certificaciones de networking.

Si somos más específicos, los protocolos IGP pueden usar dos paradigmas de enrutamiento, que usualmente llamamos algoritmos. Los más simples son los Vector Distancia (en alguna documentación los llaman DV por sus siglas en inglés). Éstos por ser simples requieren menos procesamiento y memoria pero no son óptimos y pueden usar mucho ancho de banda, dado que su principio de funcionamiento es enviar regularmente tablas de enrutamiento completas. Ejemplos de protocolos de enrutamiento por vector distancia es Rip, Ripv2, RipNG y EIGRP.

De otro lado están los protocolos IGP de Estado de Enlace (LS por sus siglas en inglés). Los protocolos LS son óptimos, lo cual significa que una ruta obtenida por éste método obedece una regla matemática que hace que la ruta sea demostrablemente la mejor posible (dentro de unos límites). Los protocolos LS más conocidos son ISIS y OSPF, el 1ro es el protocolo IGP más escalable que existe, lo diseñó OSI, tiene un principio de funcionamiento independiente del protocolo enrutable (incluso tiene su propio protocolo de capa 2/3) y todavía se usa en redes muy grandes. Es uno de los IGP más interesantes que podemos conocer. Finalmente, OSPF, que es el protocolo que quiero describir, es una «evolución» de ISIS, lo diseñó la IETF y es una especie de simplificación de ISIS para enrutar IP.

Vector distancia vs Estado de enlace

Aunque no voy a entrar en muchos detalles, ¿por qué se puede decir que LS es mejor que DV? Básicamente, porque el enrutamiento DV se hace con información sesgada y temporizadores, es decir, como se propagan tablas de enrutamiento y cada router selecciona las que le parecen las mejores, el siguiente router recibe lo que el anterior selecciona como mejores rutas, la visibilidad de la red es desde el vecino y no se conoce más allá. Eso implica que el protocolo tiene que forzar otros mecanismos para evitar bucles o loops de enrutamiento, como horizonte divido y varios timers que sirven para darle tiempo a la red de no propagar información equivocada. Eso hace que el protocolo sea lento e ineficiente, sin contar que cada router tiene una visión incompleta de la red. De otro lado, los protocolos LS propagan las relaciones topológicas entre los routers, es decir, quién es vecino de quién y con qué características de enlace, eso es un Estado de Enlace (o Link State). Luego de que los routers propagan esos LS, cada router conoce cómo está interconectada la red (completa, no sólo con sus vecinos) y por ende cada uno puede correr independientemente de los otros, el algoritmo SPF para hallar las rutas de menor costo. El algoritmo SPF se basa en otro muy conocido para cualquier estudiante de ingeniería: Dijkstra. Es importante aclarar que el algoritmo que usa OSPF no es Dijkstra, es SFP, esa es una equivocación frecuente en los exámenes de certificación. Lo anterior hace que los protocolos LS sean óptimos y mejor que eso, eficientes. Un LS es una pequeña cantidad de información, que identifica al router que la envía, las características del enlace y los routers a los cuales se conecta, por lo tanto enviar LSA (o LS advertisements) no ocupa mucho ancho de banda. En resumen: los protocolos LS convergen más rápido, usan menos ancho de banda y son óptimos; los algoritmos DV convergen muy lento, usan más ancho de banda y no son óptimos. Finalmente, los protocolos DV sí tienen una ventaja: usan menos memoria y CPU.

OSPF

Entonces, OSPF es un IGP de Estado de enlace optimizado para IP, lo cual significa que los routers que lo hablan se comunican entre sí enviando LSAs, es decir, Publicaciones de Estado de Enlace llamadas LSAs (Link State Advertisements). Sin embargo, antes de que eso ocurra, un router debe definir un identificador único, de esa manera los otros routers sabrán de quién es un LSA. Adicionalmente al identificador, llamado router-id, los routers que hablan OSPF establecen unas condiciones de adyascencia, es decir, no intercambian LSAs con cualquier router, se deben cumplir algunas condiciones. Y, finalmente, después de que existan adyascencias se intercambian LSAs, se llenan con ellas la LSDB y se calcula el costo a todos los destinos posibles. Cuando OSPF tiene un conjunto de mejores rutas, se las propone a la tabla de enrutamiento y ésta, como proceso independiente, las acepta o no.

Áreas y roles en OSPF

Una de las diferencias importantes que tiene OSPF con ISIS (y con los demás protocolos) es que el dominio (conjunto de routers) debe tener una estructura basada en áreas. Las áreas son un «truco» que usa OSPF para disminuir el consumo de CPU y memoria que, como ya mencionamos antes, es mayor que en los protocolos DV. En realidad, un router sólo tiene que conocer la topología de su propia área, es decir, todas las LSAs de los routers en su propia «región». Algunos se preguntarán: y cómo conoce las redes fuera de su área? para ello define roles de los routers, en particular, los ABR o routers de borde (area border routers). Cuando un enrutador necesita enviar tráfico fuera de su área lo envía al ABR. Las áreas hacen a OSPF un poco complicado porque existen varios casos particulares que no vamos a tratar en ésta entrada. Pero ténganlo en cuenta: un router sólo debe conocer la topología de su propia área y si hay varias áreas, debe saber llegar al ABR. Si la red es suficientemente simple se puede hacer una sola área, en éste caso, se recomienda que sea el área 0 porque ésta tiene características especiales de backbone. En otras palabras, OSPF obliga a que la red tenga una jerarquía de áreas en dos niveles: el área 0 al centro y todas las demás pegadas a ésta. Cada router que comunica un área con otra es un ABR y si existe uno que recibe información de fuera de ospf, por ejemplo de BGP, éste se considera un ASBR (autonomous system border router). En otra entrada hablaremos más sobre ellos.

Tipos de LSA básicos

Cuando entremos en más detalles analizaremos las adyascencias, pero por ahora supongamos que la elección de vecinos es trivial. Después de establecer adyascencias, cada router va a propagar sus LSAs. La información de red es básicamente la dirección de red del enlace, su máscara y el costo del enlace que representa. Como mencionamos antes, un LSA es la información de una interfaz, sus características y los routers a los cuales se conecta. Otra cosa que me gusta aclarar cuando hablo de LSAs, es que ésta lleva dos tipos de información: topológica y de red. Cuando digo información topológica me refiero a la posición del router respecto a la red, es un vecino, es un ABR, ¿qué rol tiene respecto a las áreas a los otros routers?. Dado que existen diferentes relaciones entre los routers, también se usan diferentes tipos de LSAs para definir diferente tipo de información. Los tipos de LSA están numerados y se puede decir que van de lo más simple a lo más complejo, por ejemplo, las LSAs tipo 1 y 2 se generan al interior de un área, es decir, si sólo tengo área 0 sólo vería LSAs tipo 1 y 2, llamadas router y network respectivamente.

Los tipos de LSA «básicos» son tres: Router, Network y Summary. En realidad casi toda la información topológica tiene origen en un LSA tipo router (tipo 1), ya que ésta identifica al router (envía su router-id) y dice quiénes son sus vecinos (qué router-id tienen sus vecinos), junto con las redes y costos con los cuales se comunica con ellos. Si piensan un poco, eso debería ser todo! Pero no 🙁 lamentablemente hay un par de consideraciones más: cuando un router hace parte de un segmento de acceso múltiple (un switch, por ejemplo), de todos los routers que participan, sólo uno envía la información específica de ese segmento, el resto sólo establecen adyascencia con él pero no envían la información detallada del segmento. A éste router elegido en un segmento de acceso múltiple se le conoce como DR (Designated Router). Cuando existen DRs en la red, la información del segmento es propagada en una LSA tipo 2 o Network.

Comprobando en Cisco

Para terminar, voy a ilustrar brevemente cómo se ve lo anterior en routers Cisco (IOS clásico). Los comandos que vamos a usar son de la familia show ip ospf. La topología, emulación realizada localmente en Eve-NG, es la siguiente:

La configuración es como se ve en la imagen: tenemos dos áreas normales (1 y 2) y un área 0 en su rol de Backbone. Las IP de los segmentos son 10.0.0.0/30, 10.1.0.0/30, 10.2.0.0/30, 10.3.0.0/30 y 10.4.0.0/30, respectivamente. Por lo tanto, antes de cualquier cosa deberíamos hacer ping entre los dos PCs que tienen las IPs 10.0.0.2 y 10.4.0.2, si tal cosa no ocurre es porque el enrutamiento no está bien. Seguro que en otra entrada describiré las configuraciones y todo lo que hice para que ésta topología funcionara, pero ahora el tema es otro 🙂

R1>sh ip ospf database database-summary

            OSPF Router with ID (1.1.1.1) (Process ID 1)

Area 1 database summary
  LSA Type      Count    Delete   Maxage
  Router        2        0        0
  Network       0        0        0
  Summary Net   3        0        0
  Summary ASBR  0        0        0
  Type-7 Ext    0        0        0
    Prefixes redistributed in Type-7  0
  Opaque Link   0        0        0
  Opaque Area   0        0        0
  Subtotal      5        0        0
[...]

En la salida (output) anterior se puede ver que en el área 2 hay dos routers y que se reciben 3 LSAs de otras áreas (las redes de otras áreas). Veamos el detalle:

R1>sh ip ospf database router

            OSPF Router with ID (1.1.1.1) (Process ID 1)

                Router Link States (Area 1)

  LS age: 379
  Options: (No TOS-capability, DC)
  LS Type: Router Links
  Link State ID: 1.1.1.1
  Advertising Router: 1.1.1.1
  LS Seq Number: 80000005
  Checksum: 0xE9F8
  Length: 60
  Number of Links: 3

    Link connected to: another Router (point-to-point)
     (Link ID) Neighboring Router ID: 2.2.2.2
     (Link Data) Router Interface address: 10.1.0.1
      Number of MTID metrics: 0
       TOS 0 Metrics: 1

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 10.1.0.0
     (Link Data) Network Mask: 255.255.255.252
      Number of MTID metrics: 0
       TOS 0 Metrics: 1

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 10.0.0.0
     (Link Data) Network Mask: 255.255.255.252
      Number of MTID metrics: 0
       TOS 0 Metrics: 1


  Routing Bit Set on this LSA in topology Base with MTID 0
  LS age: 158
  Options: (No TOS-capability, DC)
  LS Type: Router Links
  Link State ID: 2.2.2.2
  Advertising Router: 2.2.2.2
  LS Seq Number: 80000003
  Checksum: 0xEE8
  Length: 48
  Area Border Router
  Number of Links: 2

    Link connected to: another Router (point-to-point)
     (Link ID) Neighboring Router ID: 1.1.1.1
     (Link Data) Router Interface address: 10.1.0.2
      Number of MTID metrics: 0
       TOS 0 Metrics: 1

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 10.1.0.0
     (Link Data) Network Mask: 255.255.255.252
      Number of MTID metrics: 0
       TOS 0 Metrics: 1

Lo anterior significa: el LSA tipo 1 que genera R1, dice que tiene un vecino (R2) y dos redes, de las cuales una es tránsito y otra es stub (osea punto final). También se observan los valores de red y métrica. Todo lo que hemos visto pertenece al área 2, que no es backbone. Así se conocen las redes de otras áreas:

R1>sh ip ospf database summary

            OSPF Router with ID (1.1.1.1) (Process ID 1)

                Summary Net Link States (Area 1)

  Routing Bit Set on this LSA in topology Base with MTID 0
  LS age: 350
  Options: (No TOS-capability, DC, Upward)
  LS Type: Summary Links(Network)
  Link State ID: 10.2.0.0 (summary Network Number)
  Advertising Router: 2.2.2.2
  LS Seq Number: 80000002
  Checksum: 0xA881
  Length: 28
  Network Mask: /30
        MTID: 0         Metric: 1

  Routing Bit Set on this LSA in topology Base with MTID 0
  LS age: 1737
  Options: (No TOS-capability, DC, Upward)
  LS Type: Summary Links(Network)
  Link State ID: 10.3.0.0 (summary Network Number)
  Advertising Router: 2.2.2.2
  LS Seq Number: 80000001
  Checksum: 0xA880
  Length: 28
  Network Mask: /30
        MTID: 0         Metric: 2

  Routing Bit Set on this LSA in topology Base with MTID 0
  LS age: 1737
  Options: (No TOS-capability, DC, Upward)
  LS Type: Summary Links(Network)
  Link State ID: 10.4.0.0 (summary Network Number)
  Advertising Router: 2.2.2.2
  LS Seq Number: 80000001
  Checksum: 0xA680
  Length: 28
  Network Mask: /30
        MTID: 0         Metric: 3

Como se observa, las tres redes faltantes se conocen todas a través de R2: Avertising router: 2.2.2.2 y por ende la tabla de enrutamiento luce así:

      10.0.0.0/8 is variably subnetted, 7 subnets, 2 masks
C        10.0.0.0/30 is directly connected, FastEthernet1/0
L        10.0.0.1/32 is directly connected, FastEthernet1/0
C        10.1.0.0/30 is directly connected, FastEthernet0/0
L        10.1.0.1/32 is directly connected, FastEthernet0/0
O IA     10.2.0.0/30 [110/2] via 10.1.0.2, 00:44:08, FastEthernet0/0
O IA     10.3.0.0/30 [110/3] via 10.1.0.2, 00:30:55, FastEthernet0/0
O IA     10.4.0.0/30 [110/4] via 10.1.0.2, 00:30:55, FastEthernet0/0

Conclusiones y continuación

Bueno, como esta es sólo una introducción, más adelante voy a describir en más detalle el protocolo, por lo pronto, espero que les haya gustado. En conclusión, la principal información de la red en OSPF (protocolo interior o IGP de estado de enlace) se propaga mediante LSAs tipo router, network y summary (1, 2, y 3 respectivamente).

¿Qué sigue? No sé, uds díganme en los comentarios 😉 Para mí vienen dos entradas derivadas de éstas: ilustrar lo mismo en otras marcas o en otros sistemas operativos, como IOS XR o VRP de huawei, incluso hasta en TimOS de ALU. Necesito comentarios y ver que el contenido es valioso para poder seguir dedicandole el tiempo que requiere escribir ésto. Lo otro que sigue naturalmente de éste contenido es continuar con otras LSAs más complejas que se originan en tipos de áreas diferentes a la estándar y backbone que fueron las que vimos acá.

Por favor compartan el contenido, divulguen y comenten. Gracias y hasta la próxima.

He acá una página en el que ilustran simplificadamente todos los LSAs : OSPF LSA types explained

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.