Routage dynamique avec OSPF sous Linux Debian

Le routage dans un réseau informatique consiste à choisir le chemin que les données doivent emprunter pour atteindre leur destination. Dans le routage statique, cette opération est effectuée par les administrateurs réseaux qui indiquent les routes disponibles sur chaque routeur. Dans les protocoles de routage dynamique, comme OSPF, ce sont les routeurs qui échangent ces routes entre eux et qui calculent le meilleur chemin pour atteindre une destination.

OSPF fonctionne au-dessus d’IP et utilise le numéro de protocole 89, tout comme TCP fonctionne au-dessus d’IP et utilise le numéro de protocole 6. OSPF n’utilise pas de protocole de transport, tel que TCP, pour la fiabilité. Le protocole lui-même dispose d'un mécanisme de transport fiable. OSPF est un protocole de routage sans classe qui prend en charge les masques de sous-réseau de taille variable (variable-length subnet masking – VLSM). OSPF utilise des adresses multicast (224.0.0.5 et 224.0.0.6) pour échanger les informations nécessaires à son fonctionnement.

OSPF est un protocole à états de lien et utilise l’algorithme de Dijkstra. Cet algorithme permet de résoudre le problème du plus court chemin. Il est utilisé, par exemple, pour déterminer le chemin le plus court pour se rendre d’une ville à une autre en connaissant le réseau routier de la zone concernée. Avec l’algorithme de Dijkstra, le poids du chemin entre deux liens est la somme des poids des arcs qui le composent.

Pour gérer les réseaux de plus en plus grands, OSPF intègre une fonction de découpe en zones (AREA dans le langage OSPF). La zone 0 est employée comme zone principale, c’est la colonne vertébrale du réseau. Les autres zones sont indépendantes et assurent un routage dynamique de la même manière que dans la zone 0. Les routeurs à cheval sur plusieurs zones sont appelés Area Border Router. Ils possèdent les données de tous les réseaux auquels ils sont connectés, contrairement aux routeurs qui se trouvent à l’intérieur d’une zone, qui ne possèdent que les données relatives à la zone à laquelle ils appartiennent.

Ce découpage a pour but d’accélérer la convergence du réseau en limitant le nombre de routeurs à synchroniser dans une zone. En général, les zones OSPF correspondent à des régions géographiques, mais il est possible de créer des topologies plus complexes.

ospf-area

Pour implémenter le protocole OSPF, le logiciel Quagga est le plus utilisé sur la plateforme Debian. La communauté est active et le logiciel est régulièrement mis à jour. Le logiciel Quagga est découpé en plusieurs processus ou démons (daemons en anglais) qui ont chacun un rôle bien précis :

  • zebra : ce processus collecte les informations de routage présent dans le système ainsi que des données issues des autres démons. Il applique les nouvelles routes dans le système.
  • bgpd : démon pour le protocole BGP
  • ripd et ripngd : démons pour les protocoles RIPv1, RIPv2 et RIPng. RIPng est une implémentation du protocole RIP pour IPV6, standardisé par la norme RFC2080.
  • ospfd et ospf6d : ce sont les démons OSPF pour IPv4 et IPv6
  • vtysh : ce démon possède un rôle transverse. Il est utilisé pour configurer et interroger l’état des démons précédents.

 

Exemple de configuration avec deux routeurs OSPF :

L'installation sous linux debian (8.5 dans notre cas) est très simple : sudo apt-get update && sudo apt-get install quagga

 

Après avoir activé OSPF et Zebra dans le fichier "/etc/quagga/daemons" via les lignes "zebra=yes" et "ospfd=yes", il faut renseigner la topologie locale du serveur dans les fichiers zebra.conf et ospfd.conf.

Exemple du fichier zebra.conf

"
 hostname VotreFQDN
 !
 log file /var/log/quagga/zebra.log
 !
 ip route 192.168.1.0/24 192.168.2.1
 "

La ligne "ip route subnet gateway" est utilisée pour déclarer les sous-réseaux statiques qui sont reliés à ce routeur. Le sous-réseau sera ainsi annoncé aux autres routeurs OSPF de la zone.

 

Exemple du fichier "ospfd.conf"

"
 hostname VotreFQDN
 log file /var/log/quagga/ospfd.log
 !
 router ospf
 ospf router-id IPPubliqueDuRouteur
 !redistribution des routes de ZEBRA
 redistribute static
 !pas d'OSPF sur ces interfaces réseaux
 passive-interface lo
 passive-interface eth1
 passive-interface eth2
 !sous-réseaux locaux à partager via OSPF
 network 192.168.3.0/24 area 0.0.0.1
 network 192.168.4.0/24 area 0.0.0.1
 !
 "

La commande la plus importante du fichier est "network subnet area 0.0.0.1". Elle possède deux buts :

  • Déclarer ce sous-réseau comme partagé avec les autres routeurs OSPF de la zone.
  • Autoriser Quagga à utiliser ce sous-réseau pour chercher les autres routeurs OSPF en envoyant des trames multicast.

Afin de sécuriser les échanges OSPF entres les routeurs, le protocole IPSec est généralement utilisé. Cependant, IPSec n'est pas capable de faire transiter les trames multicast. Pour contourner cette limitation, la création de tunnels GRE est nécessaire.

Les tunnels GRE sont capables d'encapsuler une grande variété de protocoles de manière simple et fiable. La création de tunnels GRE nécessite des interfaces IP virtuelles supplémentaires sur chaque routeur utilisant OSPF.

En résumé, nous avons tout d'abord la couche IPSec qui se charge de transporter de manière sécurisée les données entre les sites.
A l'intérieur du tunnel IPSec, les tunnels GRE encapsulent tout le contenu. Enfin, le protocole OSPF crée une topologie dynamique du routeurs.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.