OSPF : Open Shortest Path First
Après la publication de l'article parlant de RIP rédigé par Johan Denoyer.
Après pas mal de lecture, beaucoup d’échanges avec lui (un grand merci pour la patience), je me suis proposé de continuer dans son sillage et bosser sur une présentation du protocole de routage souvent utilisé aujourd’hui, OSPF.
Je pensais faire une brève présentation d’OSPF, mais finalement, il se peut que je sois allé plus loin qu’une simple présentation.
Je ne sais pas si j’ai été assez clair dans mes explications, mais dans le doute, je reste disponible via les commentaires ou par mail : jimmy[No-Spam]marchetto.at
Bon, attaquons par le commencement…
RĂ´le du routage
Le terme routage désigne le mécanisme par lequel les paquets IP d’un équipement expéditeur sont acheminées jusqu’à leur destinataire, même si aucun des deux ne connaît le chemin complet que les données devront suivre. Tous les appareils connectés à Internet possèdent une table de routage. Du point de vue du routage on distingue deux types logiques d’appareils : les terminaux, ou hôtes, qui sont généralement reliés à un seul réseau et qui ont par conséquent une table de routage simple et les routeurs qui relient au minimum deux réseaux et possèdent une table de routage plus complexe.
Pour ce qui est du routage, nous intervenons à la troisième couche du modèle OSI (Réseau). L’itinéraire est alors enregistré dans une table appelée “table de routage”.
Mécanisme de routage
Les tables de routages peuvent être configurées en dur sur le routeur, on parle alors de “routage statique”.
La maintenance des tables de routages des routeurs importants ne pouvant être raisonnablement effectuée manuellement (même si cette manipulation peut être plus sécurisée), on a défini des protocoles de routage permettant d’échanger les informations de routage entre les routeurs. C’est que nous appelleront le “routage dynamique”.
Ces protocoles fonctionnent de différentes façons : ils peuvent échanger à intervalles réguliers uniquement les changements dans les tables de routage comme le protocole OSPF. Ils peuvent aussi échanger toute la table de routage comme le protocole RIP ou IGRP ou encore un hybride des deux comme EIGRP qui échangent la totalité des tables de routage dès qu’il y a modification de l’une d’elles.
Les IGP sont des protocoles fonctionnant à l’intérieur d’un système autonome. Et là vous allez me dire, « Système quoi ? ».
Système autonome
Un système autonome est un ensemble de réseaux interconnectés par des routeurs. Les systèmes autonomes sont reliés entre eux par des routeurs externes. Un système autonome correspond à un groupe de routeurs dépendant d’une même responsabilité administrative du point de vue du routage et appliquant une politique de routage unique. On distingue donc les protocoles de routage interne au sein d’un système autonome des protocoles externes qui concernent le trafic entre systèmes autonomes. Les protocoles de routage externe privilégient les informations d’accessibilité par rapport aux informations de topologie de réseau. Un réseau IP appartient à un seul système autonome. Le principal protocole de routage externe est BGP. L’internet est composé d’un ensemble de systèmes autonomes reliés entre eux par des routeurs externes. Un système autonome utilise un protocole de routage interne tel que RIP, OSPF, ISIS, BGP ou IGRP. Chaque AS est identifié par un entier de 16 bits (passé récemment à 32 bits, avec la RFC 4893 que je ne décrirais pas ici mais qui est consultable ici) qui est utilisé par le protocole de routage BGP. Sur Internet, cet identifiant est assigné par les organisations qui allouent les adresses IP, les RIR (Registre Internet Régional). Les nombres de 1 à 64511 sont réservés pour une utilisation publique (Internet) tandis que ceux de 64512 à 65535 sont réservés pour un usage privé au sein d’une organisation. Ça c’est pour les systèmes autonomes avant la RFC 4893. Depuis cette RFC, le nombre d’AS pouvant être attribués est de 4 294 967 296 numéros… La norme de nommage est désormais x.y où « x » et « y » représentent deux nombres codés en 16 bits. La première série de 65535 AS auront des numéros allant de 1.0 à 1.65535. Les 65535 suivants allant de 2.0 à 2.65535… et ainsi de suite. Vous voulez plus d’infos ? C’est par ici.
Le protocole OSPF
Description
OSPF (Open Shortest Path First) utilise l’algorithme Shortest Path First créé par Dijkstra (algorithme publié en 1959).
OSPF est un protocole à état de liens alors que les protocoles RIP V1 et RIP V2 sont des protocoles à vecteurs distance. Pour les novices, ces derniers mots barbares doivent faire mal à la tête… Je vous explique. On distingue généralement deux types de routage :
Les routeurs de type vecteur de distance (distance vector) établissent une table de routage recensant en calculant le « coût » (en termes de nombre de sauts) de chacune des routes puis transmettent cette table aux routeurs voisins. A chaque demande de connexion le routeur choisit la route la moins coûteuse.
Les routeurs de type link state (link state routing) écoutent le réseau en continu afin de recenser les différents éléments qui l’entourent. A partir de ces informations chaque routeur calcule le plus court chemin (en temps) vers les routeurs voisins et diffusent cette information sous forme de paquets de mise à jour. Chaque routeur construit enfin sa table de routage en calculant les plus courts chemins vers tous les autres routeurs (à l’aide de l’algorithme de Dijkstra).
Ces deux protocoles diffèrent considérablement dans leur manière de procéder. La plus grande différence porte sur la quantité d’informations échangée par les routeurs. Les protocoles à vecteurs de distance annoncent peu d’informations; un routeur ne prend connaissance d’autres routeurs que s’il reçoit des mises à jour broadcast de leur part. En outre, une mise à jour ne comprend aucune indication concernant les routeurs situés au delà du routeur voisin qui l’a émise. A l’inverse, les protocoles à états de liens, transmettent de nombreuses informations sur la topologie du réseau, et les routeurs effectuent des calculs couteux en ressources processeur à partir de ces données. Ces derniers découvrent même leurs voisins avant d’avoir échangés avec eux des informations de routage.
Fonctionnement
Une relation de voisinage est nécessaire pour que les routeurs OSPF se partagent des informations de routage, ainsi, si chaque routeur doit établir une adjacence avec chaque routeur présent dans la même aire (area) et échanger leurs informations, cela va devenir très vite lourd.
Par exemple, 5 routeurs nécessitent 10 relations, 10 routeurs nécessitent 45 relations (Formule : (n*n-1)/2 ). Pour éviter ceci, une élection va s’effectuer dans le réseau pour élire un routeur désigné (DR - Designated Routeur). Ce routeur devient adjacent pour tous les routeurs, et tous les routeurs envoient leurs informations au DR. Du coup, pour un réseau de 5 routeurs, il ne faudra plus que 5 relations, et 10 relations pour 10 routeurs. Le DR envois l’information d’état de lien à tous les routeurs en utilisant l’adresse multicast 224.0.0.5 (pour tous les routeurs OSPF du même segment). En dépit de ce gain d’efficacité d’élection du DR, il reste une grosse faiblesse : le DR devient un point central de défaillance. Il y a donc élection d’un second routeur, le BDR (Backup Designated Router) qui pourra remplacer la fonction du DR en cas de problème. Tous les routeurs envoient leurs informations au DR et au BDR en utilisant l’adresse multicast 224.0.0.6.
Authentification
Pour communiquer entre eux, les
routeurs doivent s’authentifier. Il existe deux types
d’authentification entre les routeurs au sein d’une zone.
Le premier via un mot de passe et le second via un processus de hachage (Message Digest authentication : MD5).
L’authentification par mot de passe est la moins sure des deux. En effet, les routeurs se transmettent ce mot de passe en clair (12345). L’authentification MD5 consiste en une clé (Key) et un key-id qui sont configurés sur chaque routeur. Chaque routeur générera une emprunte de 64 bits du paquet OSPF à envoyer en fonction de sa clé et de sa key-id grâce à l’algorithme de hachage MD5. Les destinataires n’auront qu’à effectuer la même opération pour vérifier que le message digest correspond et ainsi valider l’identité de l’expéditeur.
Conclusion
Bien que la version 2 d’OSPF soit la
plus utilisée actuellement, OSPF en est à sa version 3 (Adaptation du
protocole en prévision de l’IPv6). Cette nouvelle version pourrait
intégrer un nouvel algorithme (TDSP) basé sur le même algorithme mais
en cherchant un second chemin disjoint du premier pour éviter de
refaire le calcul en cas de panne.
OSPF reste un protocole de routage compliqué à mettre en place. S’il
n’est pas configuré correctement, il se peut qu’un routeur puisse gérer
un réseau auquel il ne devrait pas avoir accès.
Je me répète, mais je suis preneur pour toutes critiques ou encouragements.
Jimmy.
Delicious


Commentaires
Merci ! super ton post Jimmy !
A+
Christophe
Il n'y a pas de quoi.
J'espere en faire beaucoup d'autre comme ça (le prochain sur IS-IS...).
N'hesite pas Ă passer sur mon blog aussi
Aaaah !! L'algo de Dijkstra, c'est rien que du bon et en plus, pour un algo associé à la théorie des graphes, il est compréhensible...
En tout cas, excellent post Jimmy.
Je voudrais faire une précision sur le dernier paragraphe, OSPFv2 est la version d'OSPF qui fonctionne avec IPv4 et uniquement IPv4, et OSPFv3 est la version d'OSPF qui fonctionne avec IPv6, et uniquement avec IPv6. Sur un réseau ou sont présents IPv4 et IPv6, et si IS-IS (qui lui, intètre les IPv4 et IPv6) n'est pas utilisé, OSPFv2 *et* OSPFv3 tournent en même temps.
Deux arbres ? Deux fois l'algorithme d'exécuter ? LSA en double ? Rien de mutualisé ?
Désolé si mes questions sont connes...
Amicalement,
Christophe
Oui, tout en double, mais cela dit, toute l'infrastructure ne supporte pas forcément IPv4, alors, c'est pas plus mal, ça évite d'avoir à préciser dans les LSA que ce lien là , il fait que du v4, celui là , aussi du v6, celui là que du v6...
Cela dit, l'algorithme de djikstra tourne assez vite pour que ça ne soit pas un problème en général. Si ça devient un problème (et ça devient rarement un problème), c'est qu'il faut arrêter de mettre la zone 0 sur *tout* le réseau et la mettre uniquement sur le backbone, et si ce n'est pas possible, IS-IS est là , et à l'avantage d'être encore plus réactif aux changements de topologie.
Ok ! Merci Ă” grand maitre OSPF
Amicalement,
Christophe
Question encore plus conne (mais vraiment...)...
Le protocole OSPF (ou RIP, ou ...) sont implémentés sur les routeur ; un "bête" client (un simple ordinateur) avec sa "bête" table de routage ne voit n'y ne comprend rien de tout ça, non ? En gros, un paquet part de mon PC, c'est seulement une fois arrivé au premier routeur que ces protocoles avancés de routage vont s'appliquer et faire que mon paquet va trouver le meilleur chemin...
Ce que j'essaie d'expliquer à mon boss, c'est que de toute façon le paquet est bien obligé de passer par un premier routeur et que ce n'est qu'à partir de celui-ci que ces protocoles vont s'exprimer
Mon PC n'a pas de table de routage dynamique que je sache... Et n'en a pas besoin en toute logique ! Au pire on lui indique nous-mĂŞmes des routes pour qu'il envoie les paquets directement au 1er bon routeur...
Ou alors je suis carrément dans le faux...
@Cedric : c'est tout a fait cela. Certains personnes peuvent installer le protocole RIP sous Windows qui apparemment fait ou faisait partir des protocoles optionnels que l'on pouvais installer, mais je n'ai jamais testé, et ne sait pas si ca marche.
Alors, plusieurs choses Ă dire :
Ton PC à *une* seule route dans sa table de routage, la route par défaut, suivant le système, tu aura d'autres routes qui apparaîtront mais elles concernent en général, le subnet sur lequel est branché le PC.
Les protocoles de routages dynamique ne s'appliquent pas quand un paquet arrive, mais avant, quand le réseau se met en place, quand un routeur est ajouté, qu'une liaison tombe, c'est à ce moment là que les protocoles de routages dynamiques font leur affaire et remplisse la base des routes (FIB) du routeur, le routeur utilise alors cette base des routes pour créer la table de routage (RIB) du routeur en utilisant les meilleures routes possibles à chaque fois.
Article très intéressant, mais je regrette que l'on ait pas un aperçu des différents types d'area... Un "part 2" peut-être???