|
Lundi 26 Mars 2001 |
Manipulation de
la table de routage
Après avoir configuré les interfaces comme sur le schéma ci-dessus on lance un ping depuis chaque machine à destination des 2 autres pour savoir lesquelles peuvent communiquer et on peut tirer les conclusio,ns suivantes :
à A peut communiquer avec B
à C peut communiquer avec B
à A ne peut pas communiquer avec B
Lorsqu’on lance un ping de A vers C ou l’inverse on obtient le message d’erreur « net unreacheable ».
Ceci est du au fait que dans les tables de routage des machines on n’observe aucune entrée pour le réseau voisin donc physiquement les machines ne connaissent pas l’autre réseau et donc ne peuvent communiquer avec une machine qui y est connectée.
Pour y remédier on introduit dans la table de routage de A une entrée permettant d’atteindre l’autre réseau.
On lance ensuite la commande pong sur la machine vers qui est censé être destiné le ping (C)
pour être averti de cette requête.
On observe alors le message « echo request from A » au niveau de C donc on peut dire que le ping est passé sur l’autre réseau de A vers C mais pas dans l’autre sens car le message « no answer » est affiché chez A.
On lance alors sur le routeur une commande qui permet à B de laisser passer la requête et la réponse :
Si on relance le ping de A vers C on observe les mêmes réponse car C ne connaît pas le réseau 1 et le paquet d’acquittement du ping est bloqué sur le réseau 2.
Après avoir mis à jour la table de routage de C, en lui indiquant comment aller sur le réseau 1 en passant par B, si on relance le ping on constate que les deux machine peuvent enfin communiquer.
On insère ensuite une quatrième machine branchée sur les deux réseaux, comme B, dont le rôle sera d’écouter ces réseaux.
Pour nettoyer les tables ARP des trois machines connectées sur les 2 réseaux on utilise la commande : Clear-arp
Sur la station observatrice on lance l’utilitaire obs pour capturer un nombre déterminé paquets générés par une communication entre machines passant sur les 2 réseaux:
obs elxlo spwro <nb de
paquets>
On lance un ping de A vers C et on captue 4 paquets sur chaques réseaux.
On
observe l’enchaînement de messages suivants :
Comportement du protocole IP dans le routeur B :
Comme on a nettoyé les tables ARP des machines A commence par envoyer un paquet de type ARP request pour connaître l’adresse physique de C.
L’adresse Internet correspond à un réseau différent donc c’est B qui répond et donne la partie réseau de l’adresse de A avec un paquet de type echo reply .
A peut alors faire passer le ping à B (paquet de type ICMP echo request) car A sait par a table de routage qu’il lui faut passer par B pour accéder à l’autre réseau.
Ensuite sur le réseau sur lequel est connecté C le routeur B doit connaître l’adresse physique de C et donc envoie un paquet de type ARP request.
C’est C lui même qui répond et donc comme B connaît précisément le destinataire du ping il peut faire passer le paquet ICMP echo request.
Le paquet réponse ICMP echo reply peut enfin faire le chemin inverse en passant de C à B (car avec l’ARP request toutes les machines connaissent l’adresse de la machine qui l’a lancé donc C connaît B et sait qu’il peut faire passer un paquet sur l’autre réseau). Ce routeur connaît le réseau sur lequel est la machine à qui est destiné ce paquet, donc fait finalement passer le paquet à A.
Le protocole IP permet aux protocole supérieurs de faire abstraction du changement de réseau en s’occupant du routage du paquet ICMP à l’aide du protocole ARP.
Communiquer avec le reste du monde :
Une table de routage qui permettrai de communiquer avec le réseau mondial devrai contenir l’adresse d’un routeur par défaut qui en aurait lui aurait plus de réseaux accessibles dans sa table de routge et aussi un autre routeur par défaut et ainsi de suit jusqu'à un routeur international qui connaîtrait toutes les adresses des principaux reseaux.
Cette table pourrait aussi contenir une adresse réservée qui permettrait d’accéder à tous les autres routeurs.
L’intérêt d’un routeur par défaut est d’éviter un trop grand nombre de lignes dans la table de routage des ‘petit’ routeurs pour remonter jusqu’aux gros routeurs internationaux qui eux peuvent se permettre d’avoir une table de routage immense contenant des milliers de lignes.
Observation de la
table de routage
Pour observer les effets du démon de routage il faut d’abord effectuer quelques opération :
- on tue les démons de routages qui tournent sur les différentes machines :
ps –edf|grep routed pour connaître les démons actifs
kill <numéro de process> pour tuer ces démons
- On
nettoie d’abord les tables de routages des stations A et C : route-f
- On lance
le démon en mode quiet sur les
station host A et C : in.routed -q
- On lance
le démon en mode supply sur le
routeur B : in.routed –s
Si on observe le contenu des tables de routage des stations du montage on constate qu’une entrée pour l’autre réseau à été ajouté sur les machine d’un réseau différent.
En lançant un ping de A vers C on constate que les station peuvent effectivement communiquer.
Pour observer la nature des messages générés par les démons on lance , sur la station D, une commande qui permet de capter 4 paquets sur chacun des 2 réseaux :
obs elxlo spwro <nb de
paquets>
On observe un paquet par réseau toutes les 30 secondes.
En analysant le contenu de ces paquet on note que les 4 paquets de chaque réseaux sont identiques et sont de type RIP.
Les données qu’ils contiennent sont l’adresse des différents réseaux accessibles, l’adresse du routeur correspondant ainsi que la métrique pour y accéder ( nombre de routeurs à traverser ).
Si on débranche la station A du réseau après avoir lancé une commande qui permet d’afficher le contenu de la table de routage touts les 10 secondes (utilitaire check-route) on observe qu’au bout de 2 minutes approximativement l’entré concernant l’accès à l’autre réseau disparaît (ce délai correspond à la durée de vie de l’entrée concernant l’autre réseau dans la table de routage de A car le démon de B ne peut plus renouveler le paquet RIP car le réseau est coupé).
Quand on reconnecte la station sur le réseau B peut à nouveau lui envoyer ses informations et au bout de 30 secondes approximativement l’entré concernant l’autre réseau accessible par B réapparaît dans la table de routage de A.
De ces différentes opérations on eut dire qu’un routeur ayant un démon de type supply envoie toutes les 30 secondes à toutes les machines des réseaux sur lesquelles ils est connecté les information concernant aux autres réseaux accessibles par lui.
Les tables de routages se mettent alors à jour mais si aucun paquet RIP ne leur arrive avant le « time to live » des entrées celles-ci disparaissent.
Destruction et re lancement d’un démon :
Lorsque l’on tue le démons d’un routeur on capte un paquet par réseau de type RIP qui indique sur chacun des réseaux que l’autre est « not reacheable » avec une métrique de 16.
Quand on relance ce démon on capte 2 paquets sur chaque réseau de type RIP.
Le premier un est un root request qui contient l’adresse 0.0.0.0 ainsi que l’information « not reacheable ».
Le second est un root reply qui contient l’adresse de l’autre réseau accessible avec la métrique correspondante.
Troisième
manipulation
Pour commencer cette manipulation on supprime tous les éléments de la table de routage de chaque machine :
Communication sans les démons de routage :
Pour que les stations puissent communiquer sans les démons de routage on commence par les supprimer comme dans la manipulation précédente puis on ajoute à la main dans les tables de routage des machines les adresse des réseaux ainsi que les routeurs et les métriques nécessaires pour y accéder avec la commande suivante :
Sur A par exemple : Route add 196.0.0.0 195.0.0.2 1
Route add 197.0.0.0 195.0.0.2 2
On
lance un ping de A vers C et on
observe l’enchaînement de différents paquets sur le réseau (4 par
réseau):
Communication avec les démons de routage :
Pour communiquer en utilisant les démons de routage on lance des démons en mode supply sur les 2 routeurs pour qu’ils communiquent aux autres les réseau auxquels ils permettent d’accéder et des démons en mode quiet sur les stations host pour qu’elles puissent ’écouter’ les messages envoyés par les routeurs.
On lance un ping de A vers C et on analyse les différents paquets circulant sur le réseau :
Les paquets sont de type RIP et sont envoyés par B et C aux autres machines et contiennent les adresses des réseaux joignables ainsi que le routeur et la métrique nécessaire pour y accéder.
Par exemple sur le réseau opn observe un paquet envoyé par 196.0.0.2 (qui correspond à l’interface de B qui est sur ce réseau) et un par 196.0.0.3 (interface de C de ce réseau).
Dans la table de routage de D on observe les entrée s suivantes :
Reseau 195.0.0.0 par le routeur 197.0.0.3 avec une metrique de 2
196.0.0.0 197.0.0.3 1
Quatrième
manipulation
On commence par supprimer tous les démons de routages des différentes machines, avec les commandes précédemment utilisées, et on nettoie également toutes les tables de routage.
Ensuite on lance des démons en mode quiet sur les stations A et B pour qu’elles ne fasse qu’écouter les paquets RIP des autres routeurs sans communiquer les réseaux auxquelles elles peuvent accéder.
On lance des démons en mode supply sur les stations C et D pour qu’elles avertissent les autre des réseaux auxquels elles peuvent accéder.
Si on observe la table de routage de A on observe les entrées suivantes :
Accès au réseau 195.0.0.0 par le routeur A5 (interface connectée à ce réseau)
196.0.0.0 D8 (interface connectée à ce réseau)
197.0.0.0 D8 (interface connectée à ce réseau)
198.0.0.0 A8 (interface connectée à ce réseau)
On note que pour accéder au réseau 3 un message partant de A devrait passer par D( et donc par C ensuite) alors que le plus court chemin serai de passer par B.
Ce résultat provient du fait que B à un démon en mode quiet et donc n’indique pas à A qu’elle peut accéder à ce réseau .
Par contre si on supprime le démon de B et qu’on le relance en mode supply on constate qu’un message de A vers le réseau 3 passerait bien par B car dans la table de routage de A la ligne correspondant à l’accès à ce réseau s’est modifiée pour indiquer que c’est le routeur B5 qui permet d’y accéder avec uns métrique plus faible que précédemment.
Conclusion :
Le démon de routage en mode supply met à jour les tables des différentes machines en y ajoutant les réseaux joignables par le routeur dont est issu le démon mais également en y modifiant des chemins d’accès si il en trouve un autre avec un métrique inférieure.
Cinquième
Manipulation
On commence par supprimer tous les démons de routages des différentes machines, avec les commandes précédemment utilisées, et on nettoie également toutes les tables de routage.
Ensuite on lance des démons en mode quiet sur les stations C pour qu’elle ne fasse qu’écouter les paquets RIP des autres routeurs sans communiquer les réseaux auxquelles elles peuvent accéder.
On lance des démons en mode supply sur les autres stations pour qu’elles avertissent les autre des réseaux auxquels elles peuvent accéder.
Si on observe la table de routage de A on observe les entrées suivantes :
Accès au réseau 195.0.0.0 par le routeur A5 (interface connectée à ce réseau)
196.0.1.0 D8 (interface connectée à ce réseau)
198.0.0.0 A8 (interface connectée à ce réseau)
Si on effectue un ping de A vers C on observe que le message passerait par D8 donc pour déconnecter la station du réseau emprunté on débranche l’interface en communication avec le réseau 1.
Si on effectue alors un ping de A vers C on constate que les machines ne communiquent plus car la route de A vers C n’a pas encore été enlevée de la table de routage de A et donc le démon de B ne peut remplacer cette entrée qui est de la même métrique.
Par contre quand cette entrée à disparu et que le démon de B à pu mettre à jour la table de A en indiquant que pour aller sur le réseau 3 il faut maintenant passer par le routeur B on observe que les stations communiquent à nouveau.
Au niveau de la table de routage de A on observe que l’entré pour le réseau 196 à effectivement changé et montre qu’il faut utiliser le routeur B5 pour y accéder.
Algorithme des démons de routage RIP :
Une entrée dans une table de routage correspond à la possibilité d’accéder à un réseau (dans un montage correctement configuré il peut y avoir une entré par réseaux) .
Il ne peut y avoir, dans la même table de routage, plusieurs entrées pour le même réseau qui différeraient par le routeur ou la métrique mais seul la première à y avoir été ajoutée si elles sont de même métrique ou alors celle dont la métrique est la plus petite.
Si démon en mode supply
Envoyer paquet RIP toutes les 30 secondes pour mettre à jour les tables de routage des machines branchées sur les réseaux sur lesquels sont connectées les différentes interfaces du routeur.
Sur chaque interface indiquer que l’on peut accéder au réseau de chacune des autres interfaces avec une métrique (celle de sa propre table de routage) incrémentée de 1.
Recevoir les paquets RIP et mettre à jour sa table de routage :
Si l’entrée n’est pas présente alors la rajouter
Si entrée déjà présente (accès au même réseau par un autre routeur)mais avec
une métrique supérieure alors la remplacer
Si expiration du timer associé à une entrée alors la détruire et la remplacer par une nouvelle (permettant l’accès au même réseau par un autre chemin (routeur ou métrique)).
Si démon en mode quiet
Recevoir les paquets RIP et mettre à jour sa table de routage :
Si l’entrée n’est pas présente alors la rajouter
Si entrée déjà présente (accès au même réseau par un autre routeur)mais avec
une métrique supérieure alors la remplacer
Si expiration du timer associé à une entrée alors la détruire et la remplacer par une nouvelle (permettant l’accès au même réseau par un autre chemin (routeur ou métrique)).