Professional Documents
Culture Documents
Pacme Massol
pacome.massol(at)laposte.net
Publi par :
Philippe Latu
philippe.latu(at)inetdoc.net
https://www.inetdoc.net
Rsum
Cet article est le troisime d'une srie rdige par Pacme Massol sur l'utilisation d'un systme
GNU/Linux comme routeur. L'article a t publi dans le numro 51 de Linux Magazine en Juin
2003. La version publie ici ne contient que quelques diffrences mineures sur la prsentation et la
conguration du logiciel.
1.Copyright et Licence
1.1.Meta-information
Cet article est crit avec DocBook XML sur un systme Debian GNU/Linux. Il est disponible en version
imprimable au format PDF : zebra.ospf.pdf.
Toutes les commandes utilises dans ce document ne sont pas spciques une version particulire
des systmes UNIX ou GNU/Linux. Comme la distribution Debian GNU/Linux est utilise pour
l'ensemble des supports du projet inetdoc.LiNUX, voici une liste des paquets contenant les commandes
ncessaires :
zebra & zebra-doc - anciens paquets non mis jour depuis 2003.
Les copies d'cran prsentes ici correspondent la publication initiale. Depuis, les versions de Zebra
puis de Quagga ont volu et l'afchage des informations de routage a t modi. Cependant, ces
modications ne devraient pas gner les lecteurs.
2.Avant-propos
Ce document est la suite de deux articles publis respectivement dans Linux Magazine numros 42
de septembre et 43 d'octobre 2002. tant donn que cela remonte dj quelques temps, un rapide
rsum est peut-tre ncessaire avant de passer au vif du sujet : le protocole de routage dynamique
OSPF et sa mise en uvre avec Zebra.
l'information aux autres. Mais hlas, RIP souffre de certaines limitations qui ont pouss l'IETF (
The Internet Engineering Task Force) plancher sur un protocole plus robuste, plus efcace, plus
paramtrable et supportant des rseaux de grande taille. Cette merveille s'appelle OSPF (Open Shortest
Path First).
Le fonctionnement de ce protocole est dni dans le document RFC2328. Les logiciels de Zebra et de
son successeur Quagga supportent cette dnition du protocole OSPF.
Il est ouvert : c'est le sens du terme Open de OSPF. Son fonctionnement est connu de tous.
Il utilise l'algorithme SPF pour Shortest Path First, plus connu sous le nom d'algorithme de Dijkstra,
an d'lire la meilleure route vers une destination donne.
Examinons une topologie qui nous servira de support pour les explications :
Exemple de topologie
Figure1.Exemple de topologie
10^8
cot = -------------------------------
bande passante du lien en bps
La rfrence 10^8 correspond un dbit maximum de 100Mbps. Dans le cas o l'on utilise des
interfaces avec un dbit suprieur, il est possible de rednir la rfrence avec une commande du type
auto-cost reference-bandwidth 1000 pour la valeur 10^9.
Le protocole OSPF privilgie les routes qui ont un cot faible, donc celles qui sont supposes rapides
en terme de dbit thorique.
Arc Cot
R1, R2 1
R1, R5 10
R2, R3 1
R3, R4 10
R3, R5 1
R4, R5 10
R4, 192.168.1.0 10
Topologie vue de R5
Topologie vue de R1
Dans l'exemple, entre R1 et 192.168.1.0, la meilleure route passe par R2, R3 et R4 pour un cot total
de 1 + 1 + 10 + 10 soit 22.
1. Section4.2, tablir la liste des routeurs voisins : Hello, my name is R1 and I'm an OSPF router.,
4.1.tat initial
Le processus de routage OSPF est inactif sur tous les routeurs de la Figure1, Exemple de topologie.
4.2.tablir la liste des routeurs voisins : Hello, my name is R1 and I'm an OSPF router.
Les routeurs OSPF sont bien levs. Ds qu'ils sont activs, ils n'ont qu'une hte : se prsenter et faire
connaissance avec leurs voisins. En effet, lorsque le processus de routage est lanc sur R1 (commande
router ospf), des paquets de donnes (appels paquets HELLO) sont envoys sur chaque interface o le
routage dynamique a t activ (commande network).
L'adresse multicast 224.0.0.5 est utilise, tout routeur OSPF se considre comme destinataire. Ces
paquets ont pour but de s'annoncer auprs de ses voisins. Deux routeurs sont dits voisins s'ils ont au
moins un lien en commun. Par exemple, sur la Figure1, Exemple de topologie, R1 et R2 sont voisins
mais pas R1 et R3.
Lorsque le processus de routage OSPF est lanc sur R2, celui-ci rcupre les paquets HELLO mis par R1
toutes les 10 secondes (valeur par dfaut du temporisateur appel hello interval). R2 intgre l'adresse
IP de R1 dans une base de donnes appele base d'adjacences (adjacencies database). Cette base
contient les adresses des routeurs voisins. Vous pourrez visionner son contenu grce la commande
show ip ospf neighbor. R2 rpond R1 par un paquet IP unicast. R1 intgre l'adresse IP de R2 dans sa
propre base d'adjacences. Ensuite, gnralisez ce processus l'ensemble des routeurs de la zone.
Cette phase de dcouverte des voisins est fondamentale puisque OSPF est un protocole tat de liens.
Il lui faut connatre ses voisins pour dterminer s'ils sont toujours joignables et donc dterminer l'tat
du lien qui les relie.
rduire le trac li l'change d'informations sur l'tat des liens (car il n'y a pas d'change entre tous
les routeurs mais entre chaque routeur et le DR),
amliorer l'intgrit de la base de donnes topologique (car cette base de donnes doit tre unique),
Comment lire le DR ? Autrement dit, qui va se taper la corve d'expliquer ses petits camarades la
topologie du rseau ? On ne demande pas qui sait parler anglais ou couper les cheveux comme au
temps de la conscription. Mais comme il faut bien un critre, le routeur lu est celui qui a la plus grande
priorit (Router ID ou RID). La priorit est un nombre sur 8 bits x par dfaut 1 sur tous les routeurs.
Pour dpartager les routeurs ayant la mme priorit, celui qui est lu a la plus grande adresse IP sur
une interface de boucle locale (loopback interface) ou sur un autre type d'interface active. Le BDR sera
le routeur avec la deuxime plus grande priorit.
An de s'assurer que votre routeur prfr sera lu DR, il suft de lui affecter une priorit suprieure
1 avec la commande ospf priority. Vous devrez faire ceci avant d'activer le processus de routage sur
les routeurs car, une fois lu, le DR n'est jamais remis en cause mme si un routeur avec une priorit
plus grande apparat dans la zone.
4.7.Conclusion partielle
Voil pour les principes fondamentaux d'OSPF mais des notions importantes restent voquer si vous
souhaitez dployer OSPF sur de grands rseaux (en particulier sur le fonctionnement d'OSPF sur un
rseau point point et sur l'agrgation de routes). Si vous voulez approfondir, reportez-vous au livre
de C. Huitema cit en bibliographie qui, bien qu'un peu ancien est trs complet sur la question. Bien
sr, vous pouvez toujours vous plonger dans les diffrentes RFC qui constituent OSPF (la RFC2328 en
particulier) et dont la lecture est toujours aussi agrable et passionnante ! ( je plaisante, bien sr).
Avant d'attaquer la pratique, un dernier concept : les zones OSPF.
6.Place la pratique
Nous allons travailler avec le rseau suivant :
Topologie de travail
Figure3.La topologie de travail
Le rseau a t dcoup en trois zones. Vous remarquez que la zone 0 permet de fdrer l'ensemble du
rseau. Il s'agit du backbone dont nous avons dj discut. Le dcoupage de ce rseau en trois zones
est un cas d'cole dont le but est d'examiner la conguration d'OSPF dans un contexte multi-zone.
Gnralement, on considre qu'une zone peut accueillir plusieurs dizaines de routeurs.
Pour ne pas surcharger ces lignes inutilement, nous nous en tiendrons ici la conguration de R1, R2
et R3. Vous verrez que la conguration n'est pas trs complexe. Par symtrie, il est facile de l'adapter
aux autres routeurs.
Pour votre service, chers lecteurs, j'ai mis en ligne une carte cliquable ( Zebra et OSPF) qui vous
permettra de consulter l'tat, la conguration complte et la table de routage des six routeurs.
Enn, avant de commencer, vous trouverez une traduction partielle de la documentation de Zebra
la page : GNU Zebra.
6.1.Situation de dpart
Vous devez crer des chiers de conguration rudimentaires sur chaque routeur pour les services
Zebraou Quagga :
hostname R1(OSPF)
password foo
Vous devez ensuite dmarrer (ou redmarrer) les deux dmons zebra et ospfd sur chaque routeur.
Si vous avez envie de suivre prcisment les changes de messages entre routeurs, Zebra propose
un puissant mcanisme de dbogage grce la commande debug ( je vous laisse dcouvrir tous ses
paramtres). Supposons que je veuille garder une trace de tous les messages HELLO mis par R1 :
R1(OSPF)# conf t
R1(OSPF)(config)# log file /var/log/zebra/ospfd.log
R1(OSPF)(config)# debug ospf packet hello send detail
Que se passe-t-il sur le rseau ? R1 envoie des paquets HELLO sur les interfaces pour lesquelles la
commande network a t saisie. Mais personne n'est l pour les couter. Activez le routage sur R2 en
adaptant les commandes aux spcicits du routeur. Je vous aide un peu. Sur R2, vous raliserez les
congurations suivantes :
R2(OSPF)(config-router)# network 11.0.0.0/8 area 1
R2(OSPF)(config-router)# network 12.0.0.0/8 area 1
Mais sur R3, il y a une particularit. Le rseau 192.168.3.0/24 contient des ordinateurs mais aucun
routeur. La commande network va diffuser sur ce rseau des annonces de routes ce qui consomme
inutilement de la bande passante. Par consquent, nous allons dsactiver cette diffusion :
R3(OSPF)(config-router)# passive-interface eth1
Ainsi, aucune route n'est diffuse sur cette interface. De mme, aucune annonce de route ne sera prise
en compte. Le rseau sera considr comme tant d'extrmit (stub).
6.4.Aichage de la configuration
Afchons la conguration complte de R1 :
R1(OSPF)(config-router)# end
R1(OSPF)# show running-config
Current configuration:
!
hostname R1(OSPF)
password foo
!
!
!
interface lo
!
interface eth0
!
interface eth1
!
router ospf
network 11.0.0.0/8 area 1
network 30.0.0.0/8 area 0
!
line vty
!
end
Current configuration:
!
hostname R3(OSPF)
password foo
!
!
!
interface lo
!
interface eth0
!
interface eth1
!
router ospf
passive-interface eth1
network 12.0.0.0/8 area 1
network 192.168.3.0/24 area 1
!
line vty
!
end
J'espre que vous avez la mme conguration. Si ce n'est pas le cas, vous pouvez annuler une ligne
contenant une erreur en vous remettant au mme endroit o vous avez saisi la commande et en
saisissant nouveau la commande, mais en la faisant prcder de no.
Pour enregistrer la conguration, je vous rappelle que l'on saisit :
R1(OSPF)# copy running-config startup-config
An d'illustrer ce dont nous avons discut dans la toute premire partie de cet article, examinons l'tat
du routeur R1. Nous pouvons faire un diagnostic trs complet de l'appareil en utilisant les nombreuses
sous-commandes de show ip ospf. Vous constaterez que les informations fournies par ospfd sur son
tat sont beaucoup plus consquentes que celles que l'on pouvait extirper de ripd.
Dans un premier temps, je vous propose d'examiner l'tat de sant gnral du routeur R3 :
R3(OSPF)# show ip ospf
OSPF Routing Process, Router ID: 192.168.3.254
Supports only single TOS (TOS0) routes
This implementation conforms to RFC2328
RFC1583Compatibility flag is disabled
SPF schedule delay 5 secs, Hold time between two SPFs 10 secs
Refresh timer 10 secs
Number of external LSA 0
Number of areas attached to this router: 1
Le premier bloc dcrit le fonctionnement gnral du routeur : l'ID du routeur (gale sa plus grande
adresse IP), conformit aux RFC, valeurs des temporisateurs. Une seule zone est attache ce routeur.
C'est la zone 1 (exprime en notation dcimale pointe). Notre routeur a deux interfaces dans la zone, il
n'a qu'un seul voisin. L'algorithme du SPF a t excut 13 fois. La base de donnes topologique contient
neuf tats de liens (LSA). Si notre routeur tait attach plusieurs zones, le deuxime bloc serait rpt
autant de fois que de zones. Vous pourrez le constater sur R1.
Maintenant, listons nos informations sur les routeurs voisins :
R3(OSPF)# show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL
12.0.0.1 1 Full/Backup 00:00:34 12.0.0.1 eth0 0 0 0
Dchiffrons ces informations. La diffrence entre la colonne ID et la colonne Address, c'est que l'ID
identie l'appareil dans le rseau alors que l'adresse correspond l'interface laquelle nous sommes
reli avec ce routeur. La colonne State nous apprend deux choses : il est synchronis avec le routeur
dsign (DR) grce la mention Full, c'est le routeur dsign de secours (BDR) de la zone grce
l'indicateur Backup. Ce routeur sera dclar comme inactif si nous ne recevons pas de message HELLO
d'ici 34 secondes (Dead Time).
Voyons le contenu de la base de donnes topologique de R3 :
R3(OSPF)# show ip ospf database
OSPF Router with ID (192.168.3.254)
Router Link States (Area 0.0.0.1)
Ces trois tableaux prsentent de faon synthtique l'ensemble des LSA stocks dans la base
topologique.
Le premier tableau contient des LSA diffuss par chaque routeur. Ils dcrivent l'tat des interfaces
de chaque routeur.
Le deuxime tableau contient des LSA diffuss par le routeur dsign (DR). Ils dcrivent la liste des
routeurs prsents dans chaque rseau.
Le dernier tableau contient un rsum des routes diffuses par le routeur de bordure de zone (ABR).
Ce sont des routes qu'il a reu via le rseau fdrateur (backbone) par les routeurs des autres zones.
L'ge et le numro de squence sont utiliss pour mettre jour la base lorsque des LSA sont reus. La
somme de contrle (checksum not CkSum est utilise pour contrler l'intgrit des LSA.
Pour obtenir des informations dtailles sur chaque LSA, vous pouvez complter la commande show
ip ospf database par les options suivantes : router, network ou summary. Par exemple : show ip
ospf database router 192.168.3.254 (qui correspond la troisime ligne du premier tableau) vous
apprendra que ce router est reli deux rseaux : un de transit (12.0.0.0/8) et un d'extrmit (stub)
192.168.3.0/24.
Enn, si vous voulez consulter la table de routage obtenue aprs traitement par SPF des diffrents LSA,
vous n'aurez qu' saisir un show ip ospf route.
Rappel important
Il existe une diffrence entre cette table et celle utilise par le dmon zebra pour le routage
proprement dit. Souvenez-vous que Zebra et Quagga sont multi-protocole et qu'ils ont une
architecture modulaire (voir LM 43 : 2me partie, routage RIP). Chaque dmon calcule une
table de routage partir des informations dont il dispose (et qui ne sont pas ncessairement
les mmes pour chaque dmon). Ensuite, ils transmettent chacun leur table au dmon zebra
qui en fait la synthse. Cette synthse constitue la vritable table de routage utilise pour
router les paquets.
Nous avons fait un tour d'horizon des principales commandes de Zebra permettant de surveiller l'tat
de ospfd. Il y en a encore beaucoup d'autres que je vous laisse dcouvrir (faites un show ip ospf ? par
exemple). Il nous reste observer la table de routage obtenue par Zebra. Quittez ospfd et connectez-
vous sur le dmon zebra via la commande telnet localhost 2601 :
R3(Zebra)> show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
B - BGP, > - selected route, * - FIB route
Les routes notes 'O' ont t dcouvertes par OSPF. Entre crochets, on observe la distance
administrative du protocole (110 par dfaut pour OSPF) et le cot de la route pour accder au rseau.
Dans le cas de la topologie tudie, il n'y a que des rseaux 10 Mbits/s, donc avec un cot par dfaut
de 10 pour chaque lien.
pas forcment envie de rvler. Pour limiter la diffusion des routes au strict minimum, ospfd intgre,
l'instar de ripd, un mcanisme de liste de contrle d'accs (access-lists).
Reportez-vous l'article 2me partie, routage RIP publi dans le numro 43 de Linux Magazine.
La conguration est strictement identique. J'en prote pour faire un peu de publicit : si vous tes
intresss par les problmes de scurit, je vous conseille l'excellent magazine Multi-system & Internet
Security Cookbook (MISC). La srie d'articles sur la protection de l'infrastructure rseau IP constitue
sur certains points un approfondissement intressant.
Vous adapterez le motdepasse vos besoins. Ce mot de passe doit bien sr tre connu de tous les
routeurs.
7.Conclusion
OSPF est un protocole de routage dynamique moderne, robuste et conu pour les grands rseaux. On
constate qu'il est nettement plus complexe que RIP. Pas forcment dans sa conguration mais dans son
fonctionnement interne. Un inconvnient de ce protocole est qu'il peut tre gourmand en puissance
de calcul et en mmoire lorsque le rseau comporte beaucoup de routes ou qu'il y a de frquentes
modications de topologie.
OSPF est un protocole IGP (Interior Gateway Protocol), c'est--dire qu'il agit au sein d'un systme
autonome. Un AS (Autonomous System) est un ensemble de rseaux grs par un administrateur
commun. Chaque systme autonome possde un numro identiant sur 16 bits dlivr par l'IANA
(Internet Assigned Numbers Authority) ou ses dlgations. Classiquement, les multinationales, les
oprateurs de tlcom ou les fournisseurs d'accs Internet dtiennent un numro de systme
autonome.
Pour assurer le routage entre les systmes autonomes, un protocole de type EGP (Exterior Gateway
Protocol) doit tre mis en oeuvre. Dans le cas de l'Internet, c'est gnralement BGP (Border Gateway
Protocol) qui assume cette mission. BGP, protocole support par Zebra, constitue un vaste terrain
d'investigation.
Pour terminer, je voudrais saluer tous mes tudiants de BTS Informatique de gestion Loudun qui
m'ont aid dans la ralisation de ce document.
7.1.Bibliographie
7.2.Liens
Quagga
Linux Magazine