Skip to content

Protocoles de routage

Téléchargement de la fiche de cours au format PDF :

Afin de pouvoir réaliser les activités de ce chapitre, il faut utiliser le logiciel de simulation de réseaux Filius (Le logiciel est gratuit est librement téléchargeable. Le site est en allemand, mais le logiciel peut être installé en français !).

Nécessité du routage

Nous avons vu en classe de Première que toute machine appartenant à un réseau ne peut communiquer directement qu’avec les machines ayant la même adresse réseau qu’elle, c’est-à-dire avec les machines appartenant à son réseau local. (On rappelle que l’adresse réseau s’obtient en effectuant un ET logique bit à bit entre l’adresse IP de la machine et son masque de sous-réseau). Pour la suite de cette activité, on utilisera la notation CIDR pour les adresses réseau (e.g. 192.168.1.0/24).
Afin que des machines appartenant à des réseaux locaux différents puissent communiquer, il faut donc les relier par un routeur, qui servira de passerelle. Un routeur est un dispositif comportant plusieurs cartes réseaux (ou interfaces réseaux), ce qui lui permet d’appartenir à plusieurs réseaux locaux en même temps. Un ordinateur muni de plusieurs cartes réseaux peut servir de routeur, mais il existe des dispositifs dédiés à cet usage.

Comment les machines se repèrent-elles entre elles : le protocole ARP

Réaliser le réseau suivant à l’aide du logiciel Filius : (vous pouvez télécharger le fichier .fls correspondant ici : Routage.fls)

A vous de donner une adresse correcte aux postes marqués XXX.XXX.XXX.XXX : on fera attention à bien utiliser la bonne adresse réseau, en faisant notamment particulièrement attention au masque. Vous pouvez éventuellement utiliser le protocole DHCP pour vous simplifier la configuration. Configurer les trois routeurs A, B et C afin que les trois réseaux locaux (192.168.0.0/24, 10.0.0.0/8 et 176.24.0.0/16) puissent communiquer ensemble. Vous pourrez à cet effet utiliser les adresses réseaux indiquées sur le schéma précédent (mais ce n’est pas une obligation !). Pensez aussi à cocher la case « Routage automatique » sur chacun des trois routeurs. Puis lancer la simulation.

Question préliminaire : quel est le nombre maximum de machines que l’on peut connecter dans le réseau 192.168.0.0/24 ? Même question pour les réseaux 10.0.0.0/8 et 176.24.0.0/16 ?

Solution :

Pour le réseau 192.168.0.0/24, le masque de sous-réseau comporte 24 bits à "1" et 8 bits à "0". L'Host ID est donc codé sur 8 bits, ce qui donne 28 = 256 combinaisons possibles. Si on enlève "0", qui correspond à l'adresse de réseau, et "255", qui correspond à l'adresse de broadcast, il reste 254 machines possibles connectables dans le réseau 192.168.0.0/24. De la même façon, pour le réseau 10.0.0.0/8, l'Host ID est codé sur 32 - 8 = 24 bits, ce qui donne un total de 224 - 2 = 16 777 214 machines. Pour le réseau 176.24.0.0/16, l'Host ID est codé sur 32 - 16 = 16 bits, ce qui donne un total de 216 - 2 = 65 534 machines.

 

Installer la ligne de commande sur toutes les machines du réseau.
Avant de faire toute autre commande réseau (comme ping ou traceroute), faites arp dans la ligne de commande de 192.168.0.1 et d’une deuxième machine appartenant au réseau 192.168.0.0/24 (cela dépendra de la numérotation des IP que vous avez utilisée, mais nous prendrons comme exemple pour la suite l’adresse IP 192.168.0.2).
Vous devez obtenir quelque chose du type, et ce sur les deux machines :
| Adresse IP | Adresse MAC |
----------------------------------------
| 255.255.255.255 | FF:FF:FF:FF:FF:FF |
----------------------------------------
Dans la ligne de commande de 192.168.0.1 (et uniquement dans celle-là !), tapez ping 192.168.0.2, puis tapez arp. Que remarque-t-on ? Notez le résultat renvoyé par cette commande.

Solution :

| Adresse IP | Adresse MAC |
----------------------------------------
| 192.168.0.2 | 14:1C:9C:E3:4F:4A |
| 255.255.255.255 | FF:FF:FF:FF:FF:FF |

----------------------------------------
(L'adresse MAC peut être différente, car elle est générée aléatoirement par Filius, mais vous pourrez vérifiez qu'elle correspond bien à celle de la carte réseau du poste 192.168.0.2)
.

 

Dans la ligne de commande de 192.168.0.2, tapez arp (sans faire de ping au préalable). Que remarque-t-on ? Notez le résultat renvoyé par cette commande.

Solution :

| Adresse IP | Adresse MAC |
----------------------------------------
| 192.168.0.1 | 4F:63:78:73:F9:50 |
| 255.255.255.255 | FF:FF:FF:FF:FF:FF |

----------------------------------------
(Là encore, l'adresse MAC peut être différente, mais vous pourrez vérifiez qu'elle correspond bien à celle de la carte réseau du poste 192.168.0.1. La même remarque s'applique à tous les autres exemples du paragraphe)
.

 

Revenir sur la ligne de commande de 192.168.0.1 puis faire un ping sur la troisième machine du réseau 192.168.0.0/24 (par exemple 192.168.0.3), puis faire arp. Notez le résultat.

Solution :

| Adresse IP | Adresse MAC |
----------------------------------------
| 192.168.0.2 | 14:1C:9C:E3:4F:4A |
| 192.168.0.3 | 75:F9:F7:E1:6E:11 |
| 255.255.255.255 | FF:FF:FF:FF:FF:FF |

----------------------------------------

 

Que s’est-il passé ? Pour le comprendre, il faut savoir que lorsqu’une machine d’un réseau doit communiquer avec une autre, il faut qu’elle connaisse l’adresse MAC (Media Access Control) de la machine de destination. L’adresse MAC (aussi appelée adresse physique) est un nombre codé sur 48 bits (soit 6 octets), qui sert d’identifiant à tout matériel relié sur le réseau (en d’autres termes, n’importe quelle carte réseau, filaire, wifi, Bluetooth, etc. a une adresse MAC unique).
Lors du démarrage du réseau, la machine 192.168.0.1 ne sait pas à quelle adresse MAC correspond l’adresse IP 192.168.0.2 avec qui elle veut communiquer. Elle peut déterminer cette information grâce au protocole ARP (Address Resolution Protocol).
Lors du ping 192.168.0.2, la machine 192.168.0.1 va envoyer une requête ARP à l’adresse particulière 255.255.255.255. Cette adresse correspond à une adresse de broadcast universel : toutes les machines appartenant au même réseau local vont répondre à cette adresse. La requête ARP est en fait un message envoyée à la cantonade : « Je suis la machine d’adresse IP 192.168.0.1 et mon adresse MAC est xx:xx:xx:xx:xx:xx. Quelle est l’adresse MAC de la machine ayant l’adresse IP 192.168.0.2 ? ». La machine en question va répondre en donnant son adresse MAC, et va en profiter pour récupérer l’adresse MAC de la machine ayant lancé la requête ARP. Les deux machines vont compléter leur table de résolution d’adresse (ou table ARP). C’est ainsi que chaque ligne de cette table va donner la correspondance entre l’adresse IP d’une machine du réseau local et son adresse MAC. Chaque fois qu’on demandera l’accès à une machine dont l’adresse IP n’est pas présente dans la table ARP, une nouvelle requête sera envoyée dans tout le réseau local afin d’enrichir les tables ARP des deux machines.
La première ligne de la table ARP est particulière, l’adresse IP 255.255.255.255 et l’adresse MAC FF:FF:FF:FF:FF:FF étant des adresses de diffusion générale.
Que se passe-t-il si on essaie de communiquer avec une machine ne faisant pas partie du même réseau local via un routeur ? Pour le savoir, tapez ping 10.0.0.1 sur la ligne de commande de la machine 192.168.0.1. Tapez ensuite arp et notez le résultat.

Solution :

| Adresse IP | Adresse MAC |
----------------------------------------
| 192.168.0.2 | 14:1C:9C:E3:4F:4A |
| 192.168.0.3 | 75:F9:F7:E1:6E:11 |
| 255.255.255.255 | FF:FF:FF:FF:FF:FF |
| 192.168.0.254 | A9:2C:92:0A:84:68 |

----------------------------------------

 

Allez ensuite sur la ligne de commande de la machine 10.0.0.1 et tapez arp. Notez le résultat de la commande.

Solution :

| Adresse IP | Adresse MAC |
----------------------------------------
| 255.255.255.255 | FF:FF:FF:FF:FF:FF |
| 10.0.0.254 | BF:BF:F2:52:58:8C |

----------------------------------------

 

Vous remarquerez que la nouvelle ligne ajoutée aux tables ARP de ces deux machines correspond à l’adresse IP et l’adresse MAC de l’interface réseau correspondante du routeur connecté aux deux réseaux locaux concernés.
Les switches (ou commutateurs) se servent des adresses MAC afin d’acheminer les informations d’une machine à une autre au sein d’un même réseau local. Lorsque l’information doit être acheminée vers une machine qui n’a pas la même adresse réseau, on l’envoie donc vers la passerelle, c’est-à-dire l’interface réseau du routeur directement connecté au réseau concerné. Quand vous êtes dans le mode « simulation », vous pouvez cliquer sur un switch pour connaître les adresses MAC des machines qui lui sont connectées. En repassant ensuite au mode « conception », vérifiez que ces adresses MAC correspondent bien.

Comment acheminer l’information d’un réseau à un autre : la table de routage

Comme il a été dit précédemment, chaque routeur contient plusieurs interfaces réseau. Dans notre exemple, les routeurs A, B et C ont chacun trois cartes réseaux.

D’après le schéma ci-dessus, on voit que le routeur A va avoir trois cartes réseaux : eth0 qui sera connectée au réseau 192.168.0.0/24 via un switch, eth1 qui sera connectée au réseau 192.168.254.0/24 et donc à l’interface eth2 du routeur C, et eth2 qui sera connectée au réseau 192.168.255.0/24 et donc à l’interface eth1 du routeur B.
De la même façon, dites à quoi est reliée chaque interface réseau du routeur B. Même question pour le routeur C.

Solution :


Le routeur B va avoir trois cartes réseaux : eth0 qui sera connectée au réseau 10.0.0.0/8 via un switch, eth1 qui sera connectée au réseau 192.168.255.0/24 et donc à l’interface eth2 du routeur A, et eth2 qui sera connectée au réseau 192.168.253.0/24 et donc à l’interface eth1 du routeur C.
Le routeur C va avoir trois cartes réseaux : eth0 qui sera connectée au réseau 176.24.0.0/16 via un switch, eth1 qui sera connectée au réseau 192.168.253.0/24 et donc à l’interface eth2 du routeur B, et eth2 qui sera connectée au réseau 192.168.254.0/24 et donc à l’interface eth1 du routeur A.

 

Ces informations nous permettent d’établir la table de routage du routeur A :

  • Le routeur A est directement relié au réseau 192.168.0.0/24 via son interface eth0
  • Le routeur A est directement relié au réseau 192.168.254.0/24 via son interface eth1
  • Le routeur A est directement relié au réseau 192.168.255.0/24 via son interface eth2

Par contre :

  • Le routeur A n’est pas directement relié au réseau 10.0.0.0/8, mais il peut y accéder via l’interface eth1 du réseau B, qui lui est directement relié au réseau 10.0.0.0/8
  • Le routeur A n’est pas directement relié au réseau 176.24.0.0/16, mais il peut y accéder via l’interface eth2 du routeur C, qui lui est directement relié au réseau 176.24.0.0/16

En supposant que les adresses IP des interfaces eth0, eth1 et eth2 du routeur A sont respectivement 192.168.0.254, 192.168.254.1 et 192.168.255.1, que l’adresse IP de l’interface eth1 du routeur B est 192.168.255.2 et que l’adresse IP de l’interface eth2 du routeur C est 192.168.254.2, on peut établir la table de routage simplifiée suivante :

 

Solution :

 

La table de routage réelle d’un routeur est un peu plus complexe que cela. Mais le principe de fonctionnement est le même.
Comment un routeur sait il vers quel autre routeur envoyer l’information lorsqu’il n’est pas directement relié à un réseau ? En d’autres termes comment remplir la table de routage ? Il y a deux méthodes :

  • Le routage statique : chaque ligne de la table de routage est établie « à la main ». Ceci n’est possible que pour des réseaux très simples, et cela impose de modifier les tables de routage dès que l’on modifie la topologie du réseau.
  • Le routage dynamique : les tables de routage se remplissent automatiquement grâce à des échanges d’informations entre routeurs, et à l’utilisation de protocoles de routage dont le but est de trouver les chemins optimaux pour aller d’une machine à une autre.

Protocoles de routage

Dans cette partie, nous n’allons évoquer que deux algorithmes de routage, mais il faut savoir qu’il en existe d’autres. Afin de choisir le chemin optimal entre deux machines, le but de ces algorithmes sera de réduire la valeur d’une métrique.

1./ Le protocole RIP (Routing Information Protocol) :

Au départ, les tables de routage de chaque routeur ne contiennent que les adresses réseaux des réseaux directement reliés au routeur. Chaque routeur envoie périodiquement à tous ses voisins la liste de tous les réseaux qu’il connaît. Ainsi, de proche en proche, toutes les tables de routage vont se remplir. Chaque routeur saura alors comment joindre chaque réseau existant. Mais il peut exister plusieurs routes. Par exemple, si on reprend notre réseau :

On se rend compte qu’il y a deux chemins différents pour aller de 192.168.0.1 à 10.0.0.1 :

  • 192.168.0.1 → Routeur A → Routeur B → 10.0.0.1
  • 192.168.0.1 → Routeur A → Routeur C → Routeur B → 10.0.0.1

Cela veut donc dire qu’il y a deux lignes possibles dans la table de routage de A pour joindre le réseau 10.0.0.0/8 :

Lorsque plusieurs chemins sont possibles, le protocole RIP va choisir comme métrique la distance, c’est-à-dire le nombre de routeurs qu’il faut traverser pour atteindre la destination. Réduire la valeur de la métrique revient donc à réduire la distance, c’est-à-dire choisir le chemin qui nécessite le moins de sauts, c’est-à-dire celui pour lequel la distance est la plus courte. Il s’agit dans notre cas de la première ligne. Le protocole RIP utilise l’algorithme de Bellman-Ford, qui permet de trouver les plus courts chemins dans un graphe.

2./ Le protocole OSPF (Open Shortest Path First) :

Il n’est pas toujours optimal de choisir le chemin nécessitant le moins de sauts, car toutes les liaisons n’offrent pas le même débit, selon la technologie utilisée : câbles réseaux, fibres optiques, liaisons wifi, etc… Le protocole OSPF utilise donc une métrique différente qui se base sur le coût des liaisons. Le coût 𝐶 d’une liaison se calcule de la façon suivante :

𝐶 = 1 / 𝐷

Avec : 𝐷 le débit de la liaison, en bits par seconde. Le coût 𝐶 s’exprime donc en (bits par seconde)–1, soit en secondes par bit.
Pour obtenir le coût d’une route, on additionne le coût de chaque liaison traversée. Si on reprend l’exemple précédent, en précisant les débits suivants :

  • Liaison entre le routeur A et le routeur B : 𝐷 = 1 𝑀𝑏𝑝𝑠 = 106 𝑏𝑝𝑠
  • Liaison entre le routeur A et le routeur C : 𝐷 = 10 𝑀𝑏𝑝𝑠 = 107 𝑏𝑝𝑠
  • Liaison entre le routeur C et le routeur B : 𝐷 = 10 𝑀𝑏𝑝𝑠 = 107 𝑏𝑝𝑠

On peut calculer les coûts correspondants :

  • Liaison entre le routeur A et le routeur B : 𝐶= 10−6 𝑏𝑝𝑠−1
  • Liaison entre le routeur A et le routeur C : 𝐶= 10−7 𝑏𝑝𝑠−1
  • Liaison entre le routeur C et le routeur B : 𝐶= 10−7 𝑏𝑝𝑠−1

On retrouve les deux chemins différents pour aller de 192.168.0.1 à 10.0.0.1 :

  • 192.168.0.1 → Routeur A → Routeur B → 10.0.0.1
  • 192.168.0.1 → Routeur A → Routeur C → Routeur B → 10.0.0.1

Cela veut donc dire qu’il y a deux lignes possibles dans la table de routage de A pour joindre le réseau 10.0.0.0/8 :

En se basant sur l’algorithme de Dijkstra, le protocole OSPF va donc sélectionner la deuxième ligne, afin de minimiser la métrique, qui est ici le coût de la route.
On se rend compte que le chemin choisi ne sera pas forcément le même, selon l’algorithme de routage utilisé, sauf si toutes les liaisons ont le même débit.
Les échanges entre routeur se poursuivent en permanence ; c’est pourquoi les tables de routage peuvent se mettre à jour, si jamais un routeur cesse de fonctionner, ou si un câble est débranché : voir l’activité précédente pour s’en convaincre.

 

Insert math as
Block
Inline
Additional settings
Formula color
Text color
#333333
Type math using LaTeX
Preview
\({}\)
Nothing to preview
Insert