Généralités sur OLSR

Définition

OLSR est un protocole proactif de routage pour objet mobile.

C’est utilisé dans ce que l’on appelle les réseaux maillés (mesh network en anglais), en grappes ou ad-hoc multi hops. On peut résumer en disant que c’est un programme qui permet aux machines d’un réseau ad-hoc de communiquer entre elles pour qu’elles s’echangent des informations sur leur disposition.

Imaginons que nous ayons trois machines (A, B et C) qui forment un réseau. A et B savent communiquer, B et C aussi mais A et C sont trop loin d’une de l’autre et donc ne savent pas dialoguer ! Grâce à OLSR, B va dire à C qu’elle peut communiquer avec A, et dire à A qu’elle peut communiquer avec C. Donc quand A et C veulent communiquer ensemble, B fera le relais ! A–B–C

Mise en oeuvre

Pour utiliser OLSR, il faut que tous les éléments du réseaux soient capables de parler entre eux comme s’ils étaient à portée d’onde (le plus simple c’est de tous les déclarer dans le même réseau) par exemple : tout le monde dans le réseau 10.0.0.0/255.0.0.0 donc avec une adresse en 10.x.x.x et un masque de sous réseau en 255.0.0.0 Il suffit ensuite de lancer olsrd sur toutes les machines. Quelques informations complémentaires :

Qu’est ce que OLSR ?

OLSR (Optimized Link State Routing Protocol) est un protocole de routage qui permet à chacun de connaître les noeuds qu’il peut voir sur le réseau. Il comprend aussi des plug-ins :

  • le plugin HttpInfo ? est l’interface web qui permet de visualiser les informations fournies par Olsr,
  • le plugin NameService ? qui permet d’utiliser les noms des machines plutôt que leur adresse IP,
  • le plugin Dynamic Internet gateway qui permet de définir la passerelle pour accéder à Internet dans le cas ou c’est nécessaire,
  • le plugin Secure OLSR est un système de sécurité basé sur des clés de cryptage,
  • le plugin DOT permet d’avoir les informations nécessaires pour tracer une carte du réseau.

Pourquoi une extension d’annonce de services ? Rien ne permet dans Olsr de visualiser les services proposés par les différents noeuds tel que les serveurs web, ftp, irc, chat vocal, mirroir debian, E-books etc … Notre extension permettra de combler cette lacune. Elle consiste en un plugin appelé ServiceDiscover ? qui permet d’avoir les informations des services proposés par les machines du réseau.

Comment visualise-ton les services ? Le plugin HttpInfo ? (Interface Web) a été modifié de manière à afficher la liste des services renvoyée par le plugin ServiceDiscover ?. Est-ce que ca fonctionne sur toutes les plateformes ?Notre première version du plugin est en test sous Windows, Linux et OpenWrt ?, et les autres versions sont en cours de développement.

L’installation est-elle facile ? L’équipe, qui s’occupe maintenant de ce projet, fait tout pour qu’elle le soit. L’installation est différente en fonction des matériels et des systèmes :

- Sous Windows, c’est un programme qui s’auto-installe, - Sous Linux, c’est un fichier archive à décompresser et à recompiler, - Pour le wrt54g et le Zaurus ce sont des paquets à installer.

Quelque soit la version, il y a ensuite un fichier à configurer pour indiquer les services que l’on propose sur son noeud.

extrait de : http://www.lillesansfil.org

Il s’agit d’une optimisation de l’algorythme classique à état des liens. Il hérite de la stabilité de ces derniers. Un protocole à état des liens diffère des protocoles à vecteurs de distance par les informations échangés entre les routeurs. Un protocole à vecteur de distance établit ses routes par rapports au nombre de sauts entre les routeurs. Chaque routeurs échange sa table de routage complète. Dans un protocole à état des liens, les routeurs vont échanger l’état de leurs liens avec les autres routeurs. C’est à dire les paramètres de débits, de charge, de retard, de nombre de sauts, de fiabilité, de couts…etc.

OLSR est développé par Thomas Clausen et Philippe Jacquet dans le cadre du projet Hipercom, à l’INRIA (Institut National de Recherche en Informatique et en Automatique). En cours de normalisation à l’heure où nous écrivons ce rapport, il devrait faire l’objet d’un RFC a la mi-2003. Il est capable de routage unicast. Une extension est prévu pour faire du routage multicast.

Fonctionnement

OLSR est un protocole proactif. Il est très bien adapté aux réseaux larges et denses. Plus le réseau sera dense et plus OLSR sera avantageux par rapport à un protocole à état de liens classique. Tous les noeuds du réseau serviront de routeur et OLSR maintient sur chaque noeud une table de routage complète (comprenant une entrée pour tous les autres noeuds du réseau). Le protocole marche de manière complètement distribué, il n’y a pas d’entité centrale. Chaque noeud va choisir la route la mieux adapté en fonction des informations qu’il a reçu. OLSR communique par UDP. Il n’a pas besoin d’une modification du système. Il ne fait que modifier la table de routage. Par contre, l’adressage des noeud n’est pas prévu. Il faut que tous les noeuds soit sur le même sous-réseau IP pour communiquer.

Afin de diminuer la charge générée par les messages de controle (échange de l’état des liens, vérification périodique des liens…), OLSR implémente des MPR (Multi Point Relay). Ces MPR seront les seuls à transmettre les messages de diffusion (broadcast). Chaque noeud choisit ses MPR parmi ses voisins directs (C’est à dire à un saut). Les MPR doivent couvrir l’ensemble des machines situés à deux sauts. Plus le nombre de MPR est réduit et moins il y aura de diffusion sur le réseau. Les MPR ne diffuseront que les messages des noeuds qui les ont choisis comme MPR. mpr

Hello Messages

Ces messages sont diffusés (broadcast) vers tous les voisins à interval réguliers. Ils contiennent des informations sur les voisins connus et l’état des liens avec ceux-ci. A chaque entré est associé un timeout, un temps de garde (hold time) ainsi que le type de lien : asymetrique, symetrique ou MPR. Une machine qui est recoit un message ou elle est marqué comme ayant un lien asymetrique va mettre a jour le type de lien. De meme pour les noeuds choisi comme MPR : Une machine B qui n’est pas choisi comme MPR par A ne transmettra pas les messages de diffusion venant de A. Par contre les noeuds qui sont choisis comme MPR par A transmettrons les messages de diffusions venant de A. L’état des liens est calculer sur une fenêtre glissante de plusieurs messages Hello.

Une modification de l’intervalle de temps entre les messages Hello ne modifie presque pas les performances du protocoles. Sauf lorsque l’intervalle est très élevé, cela diminue la bande passante disponible pour les autres communications à cause des ces trop nombreux mesages de contrôle et cela n’accelère pas (plus) la mise à jour des routes.

Topology control Messages

Les noeuds envoient également des messages de controle de topologie. Ces messages ne sont pas envoyés à intervalles réguliers. Il existe un laps de temps durant lequel il doit être envoyé. Le but de ces messages est d’informer les autres noeuds des changement de topologie pour qu’il calcule les routes vers les autres noeuds. Ces messages contiennent l’adresse du noeud d’origine et la listes de ses MPR. Les voisins qui le reçoivent garde pendant un certains temps ces informations. Ceux qui sont choisis comme MPR le retransmettent. Lorsque le réseau est très dynamique, il peut être interessant de modifier l’intervalle des ces messages. Cela diminue très peu le delai de génération des routes dans un réseau normal mais permet d’obtenir la configuration actuelle du réseau plus rapidement lorsque les nodes se déplacent.

Routage

A partir des informations reçu des messages précédents, chaque noeud calcule une route vers chaque autre noeud en utilisant un algorythme du plus court chemin (exemple : Dijkstra). OLSR ne fait que modifier la table de routage du systeme. En aucun cas il n’intervient autrement dans le routage des paquets.

notes

les clients qui ont un masque de réseau en /28 ( 255.255.255.240 ) ne peuvent pas faire relai OLSR, mais peuvent parcourir le réseau grace au node le plus proche
les clients qui ont un masque de réseau en /16 ( 255.255.0.0 ) Peuvent faire relai OLSR mais doivent lancer le programme sur leur machine.

Liens pour infos