Open Shortest Path First (OSPF) es unprotocolo de enrutamiento interno IP detipo "estado de enlace". Fue desarrollado dentro delGrupo de Trabajo de Ingeniería de Internet(IETF) desde 1987. La versión actual de OSPFv2 se describe enRFC 2328 en 1997. Una versión 3 se define desde 2008 enRFC 5340 (inicialmente enRFC 2740 en 1999) y permite la uso de OSPF en una redIPv6.
El grupo de trabajo OSPF se formó dentro del IETF en 1987 para reemplazar a RIP . Está inspirado en el protocolo ARPANET desarrollado por BBN . La versión 1 se publicó en RFC 1131 en 1990 (pero nunca se implementó). La versión 2 se describió como RFC 1247 en 1991. En 1992, el Grupo Directivo de Ingeniería de Internet (IESG) recomendó OSPF como IGP para Internet en RFC 1371.
En OSPF, cada enrutador establece relaciones de adyacencia con sus vecinos inmediatos enviando mensajes de saludo a intervalos regulares. Luego, cada enrutador comunica la lista de redes a las que está conectado mediante mensajes de anuncios de estado de enlace ( LSA ) propagados paso a paso a todos los enrutadores de la red. El conjunto de LSA forma una base de datos de estado de enlace (LSDB) para cada área, que es idéntica para todos los enrutadores participantes en esa área. Luego, cada enrutador usa el algoritmo de Dijkstra , Shortest Path First (SPF) para determinar la ruta más rápida a cada una de las redes conocidas en el LSDB.
Por lo tanto, el correcto funcionamiento de OSPF requiere una completa coherencia en el cálculo de SPF, por lo que, por ejemplo, no es posible filtrar rutas o resumirlas dentro de un área.
En el caso de un cambio en la topología, los nuevos LSA se propagan paso a paso y el algoritmo SPF se ejecuta nuevamente en cada enrutador.
Para evitar la propagación de toda la base de datos de enlaces y limitar el impacto negativo de aleteo o aleteo (alternancia rápida en la disponibilidad de un enlace), todos los enrutadores se segmentan en grupos relacionados denominados áreas , en el límite de los cuales se pueden resumir. hacerse. Cada área se distingue por un número entero positivo o cero que varía de 0 a 4.294.967.295, este número a veces se expresa en notación decimal con puntos, de la misma manera que una dirección IP . Cada subred pertenece a una única área.
Siempre hay un área de red troncal , un área 0 o un área 0.0.0.0 a la que están conectadas todas las demás áreas.
Las áreas son lógicamente contiguas. Si los enrutadores que componen un área no son contiguos físicamente, entonces se configuran enlaces virtuales entre los enrutadores que tienen un área de preparación común. Estos enlaces virtuales pertenecen al área 0. El protocolo los trata como enlaces punto a punto sin numerar.
Cada enrutador se identifica mediante un ID de enrutador único en la red. La identificación del enrutador es un número positivo de 32 bits, generalmente representado como una dirección IP. En ausencia de una configuración explícita, se usará la dirección IP local más alta, y si hay alguna interfaz de tipo loopback , la dirección IP más alta de estas se usará como la identificación del enrutador. La determinación de la identificación del enrutador tiene lugar solo en la inicialización del proceso OSPF y persiste a partir de entonces, independientemente de la reconfiguración o el cambio de estado de las interfaces.
Existen los siguientes tipos de enrutadores:
Enrutador interno un enrutador cuyas interfaces están todas en la misma área; Enrutador de borde de área (ABR) un enrutador que tiene interfaces en diferentes áreas; Enrutador de límites del sistema autónomo (ASBR) un enrutador que inyecta en rutas OSPF que provienen de otros protocolos de enrutamiento o rutas estáticas; Enrutador de red troncal un enrutador al menos una interfaz del cual pertenece al área 0. Todos los ABR son enrutadores de red troncal.OSPF utiliza el protocolo IP número 89. El TTL de los paquetes se establece en 1 para evitar su propagación más allá de la subred y el campo ToS se establece en 0. OSPF usa direcciones de multidifusión en redes de difusión y punto a punto.
Los paquetes OSPF tienen un tamaño de hasta 65535 bytes y utilizan la fragmentación de IP si es necesario. Sin embargo, se recomienda tener en cuenta la MTU del enlace para evitar la fragmentación distribuyendo los LSA en mensajes LS Update más pequeños que la MTU, si es posible.
Los LSA también pueden tener hasta 64 KB, sin embargo, generalmente son pequeños con la excepción del Tipo 1 ( LSA de enrutador ), que puede ser grande para enrutadores con muchas interfaces OSPF.
Hay 5 tipos de paquetes OSPF:
Hola (tipo 1) descubrimiento de vecinos y mantenimiento de adyacencias; Descripción de la base de datos (DBD, tipo 2) descripción de las LSA; Solicitud de estado de enlace (tipo 3) solicitar una LSA; Actualización de estado de enlace (LSU, tipo 4) actualizar una LSA; Reconocimiento del estado del enlace (tipo 5) reconocimiento de una LSA.El tipo 1 (hola) se utiliza para establecer y mantener adyacencias, los otros tipos se utilizan para la sincronización LSDB.
Los paquetes LSA son un subtipo de paquete LSU, se definen los siguientes tipos:
Tipo 1 (enrutador) transmitido por un enrutador, describe el estado de sus interfaces; Tipo 2 (red) transmitido por un DR (enrutador designado), describe los enrutadores conectados a una subred; Tipo 3 (resumen) resumen de ruta por un ABR; Tipo 4 (resumen entre áreas) ruta a ASBR, generada por un ABR; Tipo 5 (externo) transmitido por un ASBR, describe una ruta externa; Tipo 6 (pertenencia a un grupo de multidifusión) utilizado por MOSPF; Tipo 7 (NSSA externa) ruta externa generada por un ASBR de un NSSA.Los tipos 1 y 2 constituyen las rutas internas de un área (intraárea), los tipos 3 y 4 son rutas entre áreas (IA). Los enrutadores troncales son responsables de transmitir información de enrutamiento entre áreas.
Las rutas externas se subdividen en:
Tipo E1 el costo de acceso al ASBR se suma a la métrica inicial de la ruta externa; Tipo E2 el costo de la métrica es fijo y no depende del costo para el ASBR.Los LSA se identifican por el enrutador de origen, el tipo de LSA y el ID de LSA. El significado de este último varía según el tipo de LSA:
Tipo de LSA | ID de LSA |
---|---|
1 | La identificación del enrutador del transmisor |
2 | La dirección IP de la interfaz DR |
3 | La dirección de red de destino |
4 | El ID de enrutador ASBR |
5 | La dirección de la red externa |
El tipo 1 LSA (enrutador) se subdivide en cuatro subtipos que dependen del tipo de red descrita.
+ Tipo de enlace 1Subtipo | Descripción | ID de enlace | Vincular datos |
---|---|---|---|
1 | punto a punto | ID de enrutador del vecino | Dirección IP de la interfaz o MIB-II ifIndex si la interfaz no está numerada |
2 | enlace a una red de tránsito | Dirección de interfaz DR | Dirección IP de la interfaz |
3 | enlace a una red auxiliar | dirección de red | máscara de red |
4 | enlace virtual | ID de enrutador del vecino | Dirección IP de la interfaz |
Todos los LSA vienen con una suma de comprobación que garantiza la integridad de los datos. Esto se verifica al recibir el LSA, se registra en el LSDB y se transmite a los vecinos sin modificaciones. Luego se vuelve a verificar a intervalos regulares para asegurarse de que el contenido de la LSDB no se haya corrompido.
Gestión de LSALas LSA se caracterizan por su enrutador doméstico, tipo e ID de LSA. Los números de secuencia (entero de 32 bits con signo) aumentan en 1 con cada cambio, siendo el primer número de secuencia 0x80000001 (InitialSequenceNumber, -2 31 +1) hasta 0x7fffffff (2 31 ). Cada versión de LSA reemplaza las versiones de números de secuencia más bajos. Si no hay ningún cambio, las LSA se actualizan cada 30 minutos (LSRefreshTime). Un LSA que alcanza la edad de una hora (MaxAge) se elimina del LSDB. El enrutador de origen del LSA puede especificar que el LSA no se actualice estableciendo el bit DoNotAge en 1 en las opciones.
Las LSA se transmiten de manera confiable. Cuando un enrutador necesita actualizar un LSA después de un cambio de topología, incrementa su número de secuencia y lo transmite a sus vecinos adyacentes como un paquete de actualización de estado de enlace (que puede contener más de un LSA). A continuación, las LSA se reconocen explícitamente y, en su defecto, se retransmiten. Los enrutadores que reciben el LSA comparan su número de secuencia con el que ya tienen y, si es mayor, registran el LSA en el LSDB y también se lo pasan a su vecino. El campo LS Age se incrementa en cada transmisión para evitar bucles infinitos después de un error de software. Si se recibe un LSA con un número de secuencia idéntico al que ya está presente en el LSDB pero con una diferencia de edad de menos de 15 minutos (MaxAgeDiff), se ignorará el LSA.
Un enrutador en el origen de un LSA que desea eliminar del LSDB lo transmite con un LS Age = MaxAge, lo que provoca su eliminación.
Los enrutadores se abstienen de actualizar un LSA con más frecuencia que cada 5 segundos (MinLSInterval). Los enrutadores rechazan las actualizaciones de un LSA que ya se actualizó hace menos de un segundo.
Distinguimos los siguientes tipos de áreas:
área 0 área de la columna vertebral; área regular cualquier área, siendo el área de la columna vertebral una iteración particular; área de talón área a la que no se propagan los LSA de tipo 5 (rutas externas); área de talón total allí no se propaga ningún LSA de tipo 3, 4, 5 o 7, con la excepción de una ruta predeterminada; área no tan rechoncha (NSSA) tipo de área de stub que permite la inyección de rutas externas a través de un LSA tipo 7. El tipo 7 se convertirá en tipo 5 cuando se transmita fuera del área; totalmente NSSA NSSA sin LSA 3 y 4 excepto una ruta predeterminada.No es posible crear enlaces virtuales a través de un área de código auxiliar, ni ASBR internos a un área de código auxiliar.
Punto a punto | Transmisión | Punto a multipunto (sin transmisión) |
Punto a multipunto (difusión) |
NBMA | |
---|---|---|---|---|---|
DR / BDR | No | sí | No | No | sí |
hola / muerto | 10s / 40s | 10s / 40s | 30 s / 120 s | 30 s / 120 s | 30 s / 120 s |
descubrimiento de vecinos | sí | sí | No | sí | No |
RFC 2328 | sí | sí | sí | Cisco | sí |
En una subred, los enrutadores que se descubren entre sí mediante el protocolo de saludo se denominan vecinos . En redes punto a multipunto y NBMA, los vecinos se configuran explícitamente. Siempre que los parámetros de los vecinos sean compatibles, intentarán formar una relación de adyacencia. Se requiere el establecimiento de adyacencia antes del intercambio de información de enrutamiento.
La adyacencia puede adoptar los siguientes estados:
Abajo no se recibió información sobre este segmento; Intento en redes NBMA, indica que no se ha recibido información reciente del vecino configurado; En eso se recibió un paquete de saludo; 2 vías Se recibió un paquete de saludo y este contiene su propio ID de enrutador, lo que muestra que hay comunicación bidireccional. La elección de la RD y la BDR se lleva a cabo en este estado. La decisión de formar una adyacencia se toma al final de este estado. ExStart los enrutadores intentan establecer números de secuencia inicial que se utilizarán en los paquetes de intercambio de información. Para este intercambio, uno de los enrutadores se convertirá en el enrutador principal y el otro en el secundario. Intercambio los enrutadores envían su LSDB mediante paquetes de descripción de base de datos (DBD); Cargando finaliza el intercambio de LSDB, los enrutadores solicitan las LSA que necesitan; Completo LSDB se sincroniza y se establece la adyacencia.Los mensajes de saludo se envían a intervalos regulares en interfaces donde OSPF está activo. En los enlaces punto a punto y los enlaces de difusión, se difunden en la dirección de multidifusión 224.0.0.5 (AllSPFRouters), en los enlaces sin difusión, se envían a la dirección IP de unidifusión del vecino.
La siguiente información se puede encontrar en particular en el paquete de saludo:
El número de área se incluye en el encabezado del paquete OSPF. No se forma una adyacencia si ciertos parámetros no son compatibles (número de área, tipo de área (talón o no), períodos de saludo / muertos, autenticación).
Se requiere una relación de adyacencia para que los enrutadores OSPF compartan información de enrutamiento. En una red de transmisión ( Ethernet ), si cada enrutador estableciera una adyacencia con cada uno de los otros enrutadores e intercambiara información sobre el estado del enlace, la carga sería excesiva, el número de adyacencias sería o en . Para superar este problema, elegimos un DR (enrutador designado) que recibirá toda la información sobre el estado de los enlaces y la retransmitirá a los demás enrutadores. Como este se convierte en un punto crítico de la red, también se designa un BDR (enrutador designado de respaldo). Por tanto, el número de adyacencia es 2n-1, es decir, en . Los otros enrutadores se denominan DR Otro .
OSPF solo usa multidifusión para comunicarse, con las siguientes dos direcciones:
Solo el DR genera la red LSA (tipo 2) correspondiente a la subred. El LSID de este será la dirección IP del DR en la subred. Esta LSA también enumera los enrutadores conectados a la subred.
Elección de la República DominicanaPara una determinada subred de difusión o tipo NBMA, cada enrutador OSPF tiene un valor llamado prioridad entre 0 y 255. Si la prioridad se configura en 0, el enrutador no participa en la elección y, por lo tanto, no puede convertirse en DR, ni BDR.
Otros enrutadores que están al menos en el estado de 2 vías son elegibles.
La elección comienza con el BDR. Si ya hay varios enrutadores que indican ser el BDR en sus paquetes de saludo, el que tenga la prioridad más alta se mantendrá como BDR, y si hay varios enrutadores con la prioridad más alta, entonces aquel cuyo ID de enrutador es el el más alto se retiene como BDR. Si solo hay un enrutador que indica que es el BDR, esta opción persiste. Si la lista de candidatos está vacía, entonces el BDR es el enrutador no DR elegible de mayor prioridad, y si hay más de uno, se retiene el que tiene el ID de enrutador más alto.
Procedemos de la misma manera con el RD, si no hay candidato del RD, entonces el BDR se asciende a RD y se vuelve a iniciar la elección del BDR como en el párrafo anterior.
Los otros enrutadores están adyacentes al DR y BDR. En caso de falla del DR, el BDR se convierte en DR y se lleva a cabo una nueva elección del BDR.
Siguiendo este procedimiento, si se agrega un enrutador a la red cuando ya existen un DR y un BDR, los DR y BDR persisten incluso si la prioridad del recién llegado es mayor.
Una vez que se establece la adyacencia, los enrutadores determinarán un enrutador primario y secundario, así como un número de secuencia inicial. El enrutador primario enviará paquetes de descripción de base de datos (DBD) al secundario, estos consisten en una lista de encabezados LSA (pero sin los datos reales de LSA), el secundario notará los LSA que no tiene o cuyos números de secuencia son mayores que el que está en su LSDB y luego los reclamará del primario con los paquetes de Solicitudes de estado de enlace. El enrutador principal responde con paquetes de actualización de estado de enlace que contienen los LSA solicitados. El secundario envía los paquetes de actualización de estado de enlace que corresponden a los LSA que el primario no tiene o que están desactualizados en el secundario.
Una vez que se completa la sincronización, la adyacencia cambia al estado Completo y los LSA se transmiten normalmente.
Las rutas se pueden resumir en dos niveles en OSPF:
OSPF utiliza una métrica numérica, basada en un costo aditivo que puede variar de 1 a 65535. La especificación no le da ningún significado particular a esta métrica, la restricción es que sumar los costos de los enlaces sucesivos para determinar el costo total debe tener un significado .
Cisco utiliza un valor predeterminado para el costo de un enlace que es (10 8 ) / (ancho de banda del enlace en bit / s). Por ejemplo, un enlace de 10 Mbit / s tendrá un costo de 10. Para tener en cuenta las conexiones de muy alta velocidad ( 1 Gbit / sy más), puede establecer manualmente el costo de cada enlace, o puede establecer un ancho de banda de referencia mayor que la predeterminada.
Independientemente de la métrica, se prefieren los siguientes tipos de carreteras en este orden:
OSPF puede distribuir la carga en varios enlaces, siempre que la métrica sea exactamente la misma para cada destino.
Los paquetes OSPF pueden ser objeto de dos formas de autenticación, la primera consiste en una contraseña transmitida en claro en el paquete, la segunda consiste en una función hash MD5 calculada en el paquete y una contraseña compartida.
OSPF utiliza el algoritmo de Dijkstra para determinar el mejor camino a seguir. También se denomina algoritmo SPF ( Shortest Path First ) o algoritmo de ruta más corta primero. Fue formulado por Edsger Dijkstra .
OSPF activa sus actualizaciones cada vez que hay un cambio en la topología de la red, lo que ayuda a reducir el tiempo de convergencia. A partir de una actualización, un enrutador configura una base de datos topológica que permite el cálculo de la accesibilidad a las redes gracias al cálculo de un árbol de la topología de la cual el enrutador es la raíz.
OSPFv2 solo funciona con y para IPv4. Por lo tanto, OSPFv3 se ha definido en RFC 5340 . OSPFv3 funciona sobre enlaces IPv6 y solo permite enrutar IPv6 en las RFC iniciales. OSPFv3 abandona la autenticación de OSPFv2 a favor de IPsec . OSPFv3 funciona en enlaces (direccionados en IPv6, con al menos direcciones Link-Local), en lugar de en subredes como lo hizo OSPFv2. Como resultado, los ID de LSA ya no tienen nada que ver con el direccionamiento, que ahora se transporta por separado en los nuevos LSA:
Posteriormente, RFC 5838 introdujo la noción de familia de direcciones , que permite que OSPFv3 transmita simultáneamente diferente información de enrutamiento y topología para diferentes familias de direcciones, incluidas tanto IPv4 como IPv6. Cabe señalar que OSPFv3 en sí mismo siempre se ejecuta en enlaces direccionados en IPv6. Desde este RFC, OSPFv3 teóricamente podría reemplazar completamente a OSPFv2 (aparte de cualquier noción de estabilidad y madurez de la implementación).