# Réseaux TCP/IP/Le routage IP statique
## Routeur

Un routeur est un dispositif relié à au moins deux réseaux, dont le travail est de déterminer le prochain nœud du réseau auquel un paquet de données doit être envoyé. Pour ce faire un routeur utilise une « table de routage ».
Plus d'infos sur Wikipédia.

## Table de routage

La table de routage établit la correspondance entre une machine de destination, le prochain routeur et l'interface réseau à utiliser pour suivre ce chemin. Dans le cas où plusieurs chemins sont possibles, on fait appel à des algorithmes spéciaux.

## Le cours sur le routage
### Interconnexion de réseaux

Pour interconnecter des réseaux IP, on utilise des routeurs IP. Les routeurs sont des boîtiers dédiés possédant un certain nombre d’interfaces (Ethernet, liaison série…) permettant la communication entre les machines des différents réseaux.

### Objectif du routage

Il faut configurer chaque machine et chaque routeur pour que toutes les machines puissent envoyer un datagramme IP à n’importe quelle autre machine. Pour cela, il faudra notamment configurer la table de routage de chaque routeur et chaque machine.

### Interface réseaux

Il s’agit d’un moyen d’accéder à un réseau : une carte Ethernet, une liaison série... Les cartes Ethernet d’une machine ou d’un routeur seront notées eth0, eth1, eth2, etc. Les liaisons séries seront notées S0/0/0,S0/0/1,.... etc.

### Un exemple de routage

Sur ce schéma on voit 4 réseaux Ethernet A, B, C et D. A et B sont reliés à un routeur R1. C et D sont reliés à un routeur R2. Les 2 routeurs R1 et R2 sont reliés entre eux par une liaison bipoint qui pourrait être par exemple une liaison par modem.

### Remise directe et indirecte

Lorsque X veut envoyer un datagramme à X’, X va envoyer ce datagramme directement sur sa carte Ethernet sans passer par le routeur : on parle alors de remise directe. Lorsque X veut envoyer un datagramme IP à Z, X va envoyer ce datagramme à R1, R1 enverra ce datagramme à R2 et R2 l’enverra à Z : on parle alors de remise indirecte.

### Philosophie du routage IP

* Aucune machine ni aucun routeur ne connaît le plan complet du réseau.
* Chaque machine et chaque routeur possède une table de routage : lorsqu’une machine veut envoyer un datagramme IP à une autre, elle regarde sa table de routage qui lui dit :
** si le destinataire est directement accessible grâce à une interface
** sinon l’adresse IP du routeur auquel il faut envoyer le datagramme. Ce routeur doit être directement accessible
* On indique à chaque étape le routeur suivant : on parle de "next hop routing".

### Un premier exemple

* Adressage IP
** Sur le réseau A, on utilisera les adresses IP du réseau 200.50.60.0 de masque 255.255.255.0.
** Sur le réseau B, on utilisera les adresses IP du réseau 200.50.61.0 de masque 255.255.255.0.
* Adresses IP des interfaces
** Chaque interface possède une adresse IP
** Machine X : une interface eth0 d’adresse IP 200.50.60.1
** Machine X’ : une interface eth0 d’adresse IP 200.50.60.2
** Machine Y : une interface eth1 d’adresse IP 200.50.61.1
** Machine Y’ : une interface eth1 d’adresse IP 200.50.61.2
** Le routeur R a 2 interfaces et il aura donc 2 adresses IP
eth0 d’adresse IP 200.50.60.3
eth1 d’adresse IP 200.50.61.3
* Table de routage de X
| Adresse réseau | Masque | Passerelle | Interface |
| 200.50.60.0 | 255.255.255.0 | 200.50.60.1 | 200.50.60.1 |
| 200.50.61.0 | 255.255.255.0 | 200.50.60.3 | 200.50.60.1 |
** Une table de routage sera constituée de lignes comportant des quadruplets : adresse, masque, passerelle, et interface.
** Pour la première ligne, la passerelle est égale à l’interface : cela signifie que pour envoyer un datagramme à une machine du réseau 200.50.60.0 de masque 255.255.255.0, X peut remettre directement ce datagramme au destinataire grâce à son interface 200.50.60.1.
** Pour la deuxième ligne, la passerelle est différente de l’interface : cela signifie que pour envoyer un datagramme à une machine du réseau 200.50.61.0 de masque 255.255.255.0, la remise est indirecte et X doit envoyer ce datagramme au routeur 200.50.60.3 grâce à son interface 200.50.60.1.
* Table de routage de X'
| Adresse réseau | Masque | Passerelle | Interface |
| 200.50.60.0 | 255.255.255.0 | 200.50.60.2 | 200.50.60.2 |
| 200.50.61.0 | 255.255.255.0 | 200.50.60.3 | 200.50.60.2 |
** Pour la première ligne, la passerelle est égale à l’interface : cela signifie que pour envoyer un datagramme à une machine du réseau 200.50.60.0 de masque 255.255.255.0, X’ peut remettre directement ce datagramme au destinataire grâce à son interface 200.50.60.2.
** Pour la deuxième ligne, la passerelle est différente de l’interface : cela signifie que pour envoyer un datagramme à une machine du réseau 200.50.61.0 de masque 255.255.255.0, la remise est indirecte et X’ doit envoyer ce datagramme au routeur 200.50.60.3 grâce à son interface 200.50.60.2.
* Table de routage de R
| Adresse réseau | Masque | Passerelle | Interface |
| 200.50.60.0 | 255.255.255.0 | 200.50.60.3 | 200.50.60.3 |
| 200.50.61.0 | 255.255.255.0 | 200.50.61.3 | 200.50.61.3 |
** Pour la première ligne, la passerelle est égale à l’interface : cela signifie que pour envoyer un datagramme à une machine du réseau 200.50.60.0 de masque 255.255.255.0, R peut remettre directement ce datagramme au destinataire grâce à son interface 200.50.60.3
** Pour la deuxième ligne, la passerelle est égale à l’interface : cela signifie que pour envoyer un datagramme à une machine du réseau 200.50.61.0 de masque 255.255.255.0, R peut remettre directement ce datagramme au destinataire grâce à son interface 200.50.61.3.
* Table de routage de Y
| Adresse réseau | Masque | Passerelle | Interface |
| 200.50.61.0 | 255.255.255.0 | 200.50.61.1 | 200.50.61.1 |
| 200.50.60.0 | 255.255.255.0 | 200.50.61.3 | 200.50.61.1 |
** Pour la première ligne, la passerelle est égale à l’interface : cela signifie que pour envoyer un datagramme à une machine du réseau 200.50.61.0 de masque 255.255.255.0, Y peut remette directement ce datagramme au destinataire grâce à son interface 200.50.61.1
** Pour la deuxième ligne, la passerelle est différente de l’interface : cela signifie que pour envoyer un datagramme à une machine du réseau 200.50.60.0 de masque 255.255.255.0, la remise est indirecte et Y doit envoyer ce datagramme au routeur 200.50.61.3 grâce à son interface 200.50.61.1.
* Table de routage de Y'
| Adresse réseau | Masque | Passerelle | Interface |
| 200.50.61.0 | 255.255.255.0 | 200.50.61.2 | 200.50.61.2 |
| 200.50.60.0 | 255.255.255.0 | 200.50.61.3 | 200.50.61.2 |
** Pour la première ligne, la passerelle est égale à l’interface : cela signifie que pour envoyer un datagramme à une machine du réseau 200.50.61.0 de masque 255.255.255.0, Y' peut remette directement ce datagramme au destinataire grâce à son interface 200.50.61.2.
** Pour la deuxième ligne, la passerelle est différente de l’interface : cela signifie que pour envoyer un datagramme à une machine du réseau 200.50.60.0 de masque 255.255.255.0, la remise est indirecte et b doit envoyer ce datagramme au routeur 200.50.61.3 grâce à son interface 200.50.61.2.
* X envoie un datagramme à X'
** X regarde sa table de routage et cherche comment envoyer un datagramme à X’.
** X’ a comme adresse IP 200.50.60.2 : cette adresse appartient au réseau 200.50.60.0 de masque 255.255.255.0.
** la table de routage de X indique que X peut envoyer un datagramme directement à X’ grâce à son interface 200.50.60.1.
* X envoie un datagramme à Y
** X regarde sa table de routage : Y (d’adresse IP 200.50.61.1) appartient au réseau 200.50.61.0 de masque 255.255.255.0.
** X envoie ce datagramme à l’adresse IP 200.50.60.3 grâce à son interface 200.50.60.1.
** R reçoit ce datagramme.
** R regarde le destinataire du datagramme : 200.50.61.1.
** R regarde sa table de routage : 200.50.61.1 appartient au réseau 200.50.61.0 de masque 255.255.255.0.
** R envoie donc ce datagramme directement sur son interface 200.50.61.3.
** Y reçoit le datagramme et s’aperçoit qu’il est pour lui

### Route par défaut

On aurait pu écrire ainsi la table de routage de X :
| Adresse réseau | Masque | Passerelle | Interface |
| 200.50.60.0 | 255.255.255.0 | 200.50.60.1 | 200.50.60.1 |
| 0.0.0.0 | 0.0.0.0 | 200.50.60.3 | 200.50.60.1 |
* Si X doit envoyer un datagramme IP à une machine du réseau 200.50.60.0, X doit envoyer directement ce datagramme sur son interface 200.50.60.1.
* Pour toutes les autres adresses IP (c'est la signification de 0.0.0.0 / 0.0.0.0), X envoie ce datagramme à l’adresse IP 200.50.60.3
* L’adresse IP 200.50.60.3 s’appelle la passerelle par défaut de X

### Deuxième exemple

* Adressage IP des réseaux
** Le réseau A va utiliser les adresses IP 200.50.60.0 de masque 255.255.255.0
** Le réseau B va utiliser les adresses IP 200.50.61.0 de masque 255.255.255.0
** Le réseau C va utiliser les adresses IP 200.50.62.0 de masque 255.255.255.0
** Le réseau D va utiliser les adresses IP 200.50.63.0 de masque 255.255.255.0
* Adresses des machines
** X possède une interface eth0 d’adresse IP 200.50.60.1
** Y possède une interface eth0 d’adresse IP 200.50.61.1
** Z possède une interface eth0 d’adresse IP 200.50.62.1
** W possède une interface eth0 d’adresse IP 200.50.63.1
* Adresses IP des routeurs
** R1 possède 3 interfaces : eth0 d’adresse IP 200.50.60.2, eth1 d’adresse IP 200.50.61.2 et ppp0 d’adresse IP 200.50.64.1.
** R2 possède 3 interfaces : eth0 d’adresse IP 200.50.62.2, eth1 d’adresse IP 200.50.63.2 et ppp0 d’adresse IP 200.50.64.2.
* Table de routage de X
| Adresse réseau | Masque | Passerelle | Interface |
| 200.50.60.0 | 255.255.255.0 | 200.50.60.1 | 200.50.60.1 |
| 0.0.0.0 | 0.0.0.0 | 200.50.60.2 | 200.50.60.1 |
* Table de routage de Y
| Adresse réseau | Masque | Passerelle | Interface |
| 200.50.61.0 | 255.255.255.0 | 200.50.61.1 | 200.50.61.1 |
| 0.0.0.0 | 0.0.0.0 | 200.50.61.2 | 200.50.61.1 |
* Table de routage de Z
| Adresse réseau | Masque | Passerelle | Interface |
| 200.50.62.0 | 255.255.255.0 | 200.50.62.1 | 200.50.62.1 |
| 0.0.0.0 | 0.0.0.0 | 200.50.62.2 | 200.50.62.1 |
* Table de routage de W
| Adresse réseau | Masque | Passerelle | Interface |
| 200.50.63.0 | 255.255.255.0 | 200.50.63.1 | 200.50.63.1 |
| 0.0.0.0 | 0.0.0.0 | 200.50.63.2 | 200.50.63.1 |
* Table de routage de R1
| Adresse réseau | Masque | Passerelle | Interface |
| 200.50.60.0 | 255.255.255.0 | 200.50.60.2 | 200.50.60.2 |
| 200.50.61.0 | 255.255.255.0 | 200.50.61.2 | 200.50.61.2 |
| 200.50.64.2 | 255.255.255.255 | 200.50.64.1 | 200.50.64.1 |
| 0.0.0.0 | 0.0.0.0 | 200.50.64.2 | 200.50.64.1 |
La troisième ligne indique une route vers un hôte : pour atteindre l’adresse IP 200.50.64.2, il suffit d’envoyer un datagramme directement sur l’interface 200.50.64.1.
* Table de routage de R2
| Adresse réseau | Masque | Passerelle | Interface |
| 200.50.62.0 | 255.255.255.0 | 200.50.62.2 | 200.50.62.2 |
| 200.50.63.0 | 255.255.255.0 | 200.50.63.2 | 200.50.63.2 |
| 200.50.64.1 | 255.255.255.255 | 200.50.64.2 | 200.50.64.2 |
| 0.0.0.0 | 0.0.0.0 | 200.50.64.1 | 200.50.64.2 |
La troisième ligne indique une route vers un hôte : pour atteindre l’adresse IP 200.50.64.1, il suffit d’envoyer un datagramme directement sur l’interface 200.50.64.2.
* X envoie un datagramme IP à W
** W a comme adresse IP 200.50.63.1 : X va lire sa table de routage et envoie ce datagramme au routeur 200.50.60.2 grâce à son interface 200.50.60.1 (eth0).
** R1 va recevoir ce datagramme et va lire l’adresse IP du destinataire : il consulte sa table de routage et envoie ce datagramme au routeur 200.50.64.2 grâce à son interface 200.50.64.1 (ppp0).
** R2 reçoit ce datagramme, lit l’adresse IP du destinataire et consulte sa table de routage : il envoie donc le datagramme directement sur son interface 200.50.63.2 (eth1).
** W reçoit ce datagramme et s’aperçoit qu’il est pour lui et il le garde !

### Un troisième exemple

* Réseau de type backbone
** Le réseau H est le backbone de notre réseau : il est connecté à différents routeurs. Chaque **routeur est lui-même connecté à différents réseaux.
* Adressage IP et évolution
** Il faut penser aux évolutions futures du réseau.
** Il serait dommage que le rajout d’un réseau ou d’un routeur oblige l’administrateur à changer les adresses IP de toutes les machines du réseau.
** Nous allons supposer que l’administrateur doit utiliser les adresses IP du réseau 180.50.0.0 de masque 255.255.0.0.
* Découpage : premier niveau
** Nous allons découper les réseaux en 8 parties dont 6 seront utilisables
** La première partie sera appelée réseau R1 : il regroupe tous les réseaux connectés à R1 sauf le backbone .
** La deuxième partie sera appelée réseau R2 : il regroupe tous les réseaux connectés à R2 sauf le backbone.
** La troisième partie sera appelée réseau R3 : il regroupe tous les réseaux connectés à R3 sauf le backbone .
** La quatrième partie sera appelées réseau d’administration et sera utilisée pour les autres réseaux notamment le backbone ou par exemple d’éventuels accès extérieurs via un modem.
** Les cinquième et sixième parties seront éventuellement utilisées pour de futurs routeurs R4 et R5.
** masque On a besoin de 3 bits pour permettre la gestion de jusqu'à 2^3=8 réseaux (R1,...,R7 et réseau d'administration). Pour le masque des réseaux R1, R2, R3 et du réseau d’administration les 8+8=16 premiers bits sont déjà à 1. Le masque comporte donc 16+3=19 bits à 1 suivis de 13 bits à 0 : le masque est donc 255.255.224.0.
** adresses réseaux obtenues
Le réseau R1 a comme adresse 180.50.32.0 Le réseau R2 a comme adresse 180.50.64.0 Le réseau R3 a comme adresse 180.50.96.0 Le réseau d’administration a comme adresse 180.50.128.0
* Découpage : deuxième niveau
** On redécoupe en 8 le réseau R1 : les 2 premiers sous-réseaux seront attribués à A et B.
** On redécoupe en 8 le réseau R2 : les 3 premiers sous-réseaux seront attribués à C, D et E.
** On redécoupe en 8 le réseau R3 : les 2 premiers sous-réseaux seront attribués à F et G.
** On redécoupe en 8 le réseau d’administration : le premier sous-réseau sera attribué à H (ou on peut laisser le réseau d'administration sans découpage puisque il contient un seul sous-réseau)
** Masque Lorsqu’on redécoupe chaque sous-réseau, le masque obtenu comporte 22 bits à 1 et est donc 255.255.252.0.
** adresses réseaux obtenues
On redécoupe R1 :
Le réseau A obtient comme adresse 180.50.36.0
Le réseau B obtient comme adresse 180.50.40.0
On redécoupe R2 : Le réseau C obtient comme adresse 180.50.68.0
Le réseau D obtient comme adresse 180.50.72.0
Le réseau E obtient comme adresse 180.50.76.0
On redécoupe R3 : Le réseau F obtient comme adresse 180.50.100.0
Le réseau G obtient comme adresse 180.50.104.0
Le réseau H reste inchangé puisqu'il a un seul sous-réseau (le réseau H), donc le réseau H a comme adresse 180.50.128.0 et comme masque 255.255.224.0
* Attribution des adresses IP aux machines
X a comme adresse IP 180.50.36.2 Y a comme adresse IP 180.50.76.2 Z a comme adresse IP 180.50.100.2 W a comme adresse IP 180.50.128.4
* Table de routage de R1
| Adresse réseau | Masque | Passerelle | Interface |
| 180.50.36.0 | 255.255.252.0 | 180.50.36.1 | 180.50.36.1 |
| 180.50.40.0 | 255.255.252.0 | 180.50.40.1 | 180.50.40.1 |
| 180.50.128.0 | 255.255.224.0 | 180.50.128.1 | 180.50.128.1 |
| 180.50.64.0 | 255.255.224.0 | 180.50.128.2 | 180.50.128.1 |
| 180.50.96.0 | 255.255.224.0 | 180.50.128.3 | 180.50.128.1 |
* Table de routage de R2
| Adresse réseau | Masque | Passerelle | Interface |
| 180.50.68.0 | 255.255.252.0 | 180.50.68.1 | 180.50.68.1 |
| 180.50.72.0 | 255.255.252.0 | 180.50.72.1 | 180.50.72.1 |
| 180.50.76.0 | 255.255.252.0 | 180.50.76.1 | 180.50.76.1 |
| 180.50.128.0 | 255.255.224.0 | 180.50.128.2 | 180.50.128.2 |
| 180.50.32.0 | 255.255.224.0 | 180.50.128.1 | 180.50.128.2 |
| 180.50.96.0 | 255.255.224.0 | 180.50.128.3 | 180.50.128.2 |
* Table de routage de R3
| Adresse réseau | Masque | Passerelle | Interface |
| 180.50.100.0 | 255.255.252.0 | 180.50.100.1 | 180.50.100.1 |
| 180.50.104.0 | 255.255.252.0 | 180.50.104.1 | 180.50.104.1 |
| 180.50.128.0 | 255.255.224.0 | 180.50.128.3 | 180.50.128.3 |
| 180.50.32.0 | 255.255.224.0 | 180.50.128.1 | 180.50.128.3 |
| 180.50.64.0 | 255.255.224.0 | 180.50.128.2 | 180.50.128.3 |
* Table de routage de X
| Adresse réseau | Masque | Passerelle | Interface |
| 180.50.36.0 | 255.255.252.0 | 180.50.36.2 | 180.50.36.2 |
| 0.0.0.0 | 0.0.0.0 | 180.50.36.1 | 180.50.36.2 |
* Table de routage de Y
| Adresse réseau | Masque | Passerelle | Interface |
| 180.50.76.0 | 255.255.252.0 | 180.50.76.2 | 180.50.76.2 |
| 0.0.0.0 | 0.0.0.0 | 180.50.76.1 | 180.50.76.2 |
* Table de routage de Z
| Adresse réseau | Masque | Passerelle | Interface |
| 180.50.100.0 | 255.255.252.0 | 180.50.100.2 | 180.50.100.2 |
| 0.0.0.0 | 0.0.0.0 | 180.50.100.1 | 180.50.100.2 |
* Table de routage de W
| Adresse réseau | Masque | Passerelle | Interface |
| 180.50.128.0 | 255.255.224.0 | 180.50.128.4 | 180.50.128.4 |
| 180.50.32.0 | 255.255.224.0 | 180.50.128.1 | 180.50.128.4 |
| 180.50.64.0 | 255.255.224.0 | 180.50.128.2 | 180.50.128.4 |
| 180.50.96.0 | 255.255.224.0 | 180.50.128.3 | 180.50.128.4 |