# Optimized Link State Routing

El protocolo Optimized Link State Routing (OLSR) es un mecanismo estándar de enrutamiento proactivo, que trabaja en forma distribuida para establecer las conexiones entre los nodos en una red inalámbrica ad hoc (mobile ad hoc networks, MANETs). Este protocolo fue diseñado en un principio por investigadores del Instituto Nacional francés de Investigación en Informática y Automática (INRIA, por sus siglas en francés), y ha sido posteriormente estandarizado por el Internet Engineering Task Force (IETF).

## Enrutamiento proactivo

La ventaja de los protocolos proactivos consiste en que es posible mantener tablas actualizadas de enrutamiento en todo momento. Por otro lado, la desventaja de un protocolo proactivo consiste en que se requiere una carga adicional en la red inalámbrica debido a la transmisión periódica de mensajes de control.

## Mecanismo de flooding: MPR

La diseminación directa de información por toda la red (flooding) es ineficiente y muy costosa en una red inalábrica y móvil, debido a las limitaciones de ancho de banda y la escasa calidad del canal radio. Por ello, OLSR prové un mecanismo eficiente de diseminación de información basado en el esquema de los Multipoint Relays (MPR).
Bajo este esquema, en lugar de permitir que cada nodo retransmita cualquier mensaje que reciba (flooding clásico), todos los nodos de la red seleccionan entre sus vecinos un conjunto de multipoint relays (retransmisores), encargados de retransmitir los mensajes que envía el nodo en cuestión. Los demás vecinos del nodo no pueden retransmitir, lo que reduce el tráfico generado por una operación de flooding.
Hay varias formas de escoger los multipoint relays de un nodo, pero independientemente de la forma de elección, el conjunto de MPRs de un nodo debe verificar que son capaces de alcanzar a todos los vecinos situados a una distancia de 2 saltos del nodo que los calcula (criterio de cobertura de MPR).

## Tráfico de control

Una red enrutada con OLSR utiliza básicamente dos tipos de mensajes de control:
* Los mensajes HELLO son enviados periódicamente por cada nodo de la red a sus nodos vecinos, pero nunca son retransmitidos más allá del primer salto (1 hop) desde su emisor (alcance local). Estos mensajes contienen la lista de vecinos conocidos por el nodo emisor así como la identidad de los multipoint relays seleccionados por transmisor. Su intercambio permite a cada nodo de la red conocer los nodos situados a 1 y 2 saltos de distancia (es decir, aquellos a los que se puede hacer llegar un mensaje con una transmisión directa o con una transmisión y una retransmisión) y saber si ha sido seleccionado como MPR por alguno de sus vecinos.
* Los mensajes TC (Topology Control) son enviados periódicamente y de forma asíncrona. A través de ellos, los nodos informan al conjunto de la red acerca de su topología cercana. Al contrario que los HELLO, los mensajes TC son de alcance global y deben llegar a todos los nodos de la red. El conjunto de los mensajes TC recibidos por un nodo inalámbrico le permite reconstuir su base de datos topológica, computar el árbol de caminos mínimos (mediante el algoritmo de Dijkstra) y calcular así la tabla de enrutamiento hacia todos los posibles destinos. La diseminación de mensajes TC se hace de acuerdo con el mecanismo de flooding basado en MPR.

## Versiones

* OLSRv1, estandarizado por el IETF en 2003, en el RFC 3626.
* OLSRv2, empezado a desarrollar en 2005 y actualmente en proceso de estandarización. Entre sus diferencias respecto a OLSRv1, destaca la incorporación de una estructura modular y la adopción de un formato de paquetes agnóstico respecto al protocolo, general para las redes MANET.

## Enlaces de interés

* RFC 3626 Especificación de OLSR.
* https://web.archive.org/web/20150408143413/http://www.olsr.org/ En este link se puede encontrar documentación relacionada con el protocolo OLSR. Además se incluye el código de OLSR para arquitecturas GNU/Linux, Windows, OS X, FreeBSD and NetBSD.
* https://web.archive.org/web/20040912075427/http://hipercom.inria.fr/olsr/ existe un Flash Demo del protocolo OLSR.
* NRL-OLSR Archivado el 1 de octubre de 2011 en Wayback Machine. - Código Open Source de NRL-OLSR. Esta implementación está realizada para Windows, MacOS, Linux, sistemas embebidos sobre PDA como Arm/Zaurus y PocketPC y entornos de simulación ns2 y OPNET., http://cs.itd.nrl.navy.mil/focus/ Archivado el 10 de septiembre de 2011 en Wayback Machine.
* SOURCEFORGE.NET-OLSR - Ofrece un código en C# para el despliegue de redes MANET (Ad hoc, Meshnet) con el protocolo OLSR. El desarrollo está realizado para Windows Mobile 6, Windows XP y puede ser adaptado a otras plataformas utilizando el .Net Framework. Ha sido creado por Moviquity basado en los resultados del proyecto Workpad.
* Datos: Q1368373
* Multimedia: Optimized Link State Routing Protocol / Q1368373