60
Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour lui permettre d'effectuer la tâche qui lui incombe, on appelle cela l'en-tête. Cela permet d'avoir un certain nombre d'informations nécessaires à chaque couche pour effectuer son travail ++++++++++++++++++++++ couche 7 | Info à transmettre | ++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++ couche 6 | en-tête couche 6 | Info à transmettre | +++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++ couche 5 | en-tête 5 | en-tête 6 | Info à transmettre | ++++++++++++++++++++++++++++++++++++++++++++++ ... et ainsi de suite ... jusqu'au paquet final ++++++++++++++++++++++++++++++++++++++++++++++ Couche 1 | en-tête 1 | ... | e-t 5 | en-tête 6 | Info | ++++++++++++++++++++++++++++++++++++++++++++++

Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Embed Size (px)

Citation preview

Page 1: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routageRappel: l’encapsulation

Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour lui permettre d'effectuer la tâche qui lui incombe, on appelle cela l'en-tête. Cela permet d'avoir un certain nombre d'informations nécessaires à chaque couche pour effectuer son travail

++++++++++++++++++++++ couche 7 | Info à transmettre |++++++++++++++++++++++

+++++++++++++++++++++++++++++++++++++++++couche 6 | en-tête couche 6 | Info à transmettre |+++++++++++++++++++++++++++++++++++++++++

++++++++++++++++++++++++++++++++++++++++++++++couche 5 | en-tête 5 | en-tête 6 | Info à transmettre |++++++++++++++++++++++++++++++++++++++++++++++

... et ainsi de suite ... jusqu'au paquet final

++++++++++++++++++++++++++++++++++++++++++++++Couche 1 | en-tête 1 | ... | e-t 5 | en-tête 6 | Info | ++++++++++++++++++++++++++++++++++++++++++++++

Page 2: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routage

Rôle des couches 2 et 3

La couche 2 permet à deux machines directement connectées de dialoguer, on dit alors que les machines sont sur un même réseau.

La couche 3 permet le dialogue entre réseaux, ce que l'on appelle le routage.

On remarque ainsi que deux machines sur un même réseau pourront dialoguer directement, mais pour parler à une machine située sur un réseau distant, il faudra passer par des machines intermédiaires qui feront la liaison entre les réseaux.

On appellera ces machines intermédiaires des routeurs.

Page 3: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routageLa couche liaison de données (couche 2)

La couche liaison de données a pour rôle de transmettre les données de façon fiable entre des équipements directement connectés (D'autres rôles lui incombent, mais leur connaissance ne nous sera pas utile pour comprendre le transport des informations.)

Nous allons donc voir comment deux machines directement liées vont faire pour dialoguer. Sur un réseau, il y a souvent plusieurs machines connectées, il faut alors pouvoir les différencier les unes par rapport aux autres. Pour cela, nous allons les identifier individuellement grâce à des adresses.

L'adressage des machines

Pour la couche 2, ce sont les adresses MAC.

Les adresses MAC sont codées sur 6 octets, soit 48 bits donc 2^48 = ... plusieurs milliers de milliards d'adresses possibles ! Elles sont la plupart du temps écrites par octet sous forme hexadécimale, séparés par le caractère ":" Ce qui donne par exemple 3C:AB:35:48:FF:D2 qui est une adresse MAC. Nous pouvons ainsi identifier chaque interface de machine individuellement. Il nous faut maintenant définir les règles qui permettront aux machines de dialoguer. Pour cela nous allons définir un protocole: le protocole ethernet

Page 4: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routageLe protocole Ethernet

Le protocole Ethernet définit le format des messages échangés. Le message de base utilisé par Ethernet est la trame. La trame est composée d'une en-tête et d'une "charge utile" contenant les informations à transmettre. L'en-tête Ethernet contient les informations nécessaires au bon fonctionnement de la couche 2 qui pourront permettre la transmission des informations. Nous y retrouvons notamment les adresses MAC des machines participant au dialogue.

3.4 - Format d'une trame Ethernet

La description suivante ne prend en compte que les informations qui nous intéressent et n'est pas le format complet d'une trame Ethernet. La trame est composée d'une en-tête contenant les informations du protocole Ethernet, et d'un payload contenant les informations à transporter.

Trame Ethernet++++++++++++++++++++-----------------------------| En-tête Ethernet | Informations à transporter |++++++++++++++++++++-----------------------------

Nous allons voir plus en détail ce que contient l'en-tête Ethernet.

En-tête Ethernet++++++++++++++++++++++++++++++++++++++++++++++++++++ | @ MAC source | @ MAC destination | Protocole sup |++++++++++++++++++++++++++++++++++++++++++++++++++++

L'adresse MAC source est l'adresse de la machine qui envoi la trame.L'adresse MAC destination est celle de la machine qui doit recevoir la trame (jusqu'ici ce n'est pas bien sorcier :-)Le protocole sup est le protocole utilisé par la couche supérieure (la couche 3 dans notre cas puisque Ethernet est un protocole de couche 2) Ceci est utile car quand la couche 2 reçoit le message, elle doit savoir à quel protocole de couche 3 envoyer les informations reçues (il est possible sur une machine d'utiliser plusieurs protocoles pour une même couche).

Page 5: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routageDialogue entre deux machines

Prenons l'exemple d'une machine A qui veut envoyer le message "Bonjour" à une machine B située sur le même réseau. Il lui suffit de connaître l'adresse MAC de B pour lui envoyer le message. Ainsi, en lui envoyant la trame suivante, elle devrait pouvoir lui envoyer le message:

++++++++++++++++++++++++++++++++++------------------| @MAC A| @MAC B | protocole sup | XXXXX | Bonjour |++++++++++++++++++++++++++++++++++------------------

B reçoit la trame et voit que c'est son adresse MAC qui est en destination, elle lit donc le reste des informations. Il s'agit des informations des couches supérieures (XXXXX), et enfin, du message "Bonjour".

Nous avons donc réussi grâce à la couche 2 à faire dialoguer deux machines connectées sur un même réseau. Nous allons maintenant voir comment faire communiquer deux machines appartenant à des réseaux différents.

Page 6: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routageLa couche réseau (couche 3)

Les rôles de la couche 3

La couche réseau a pour rôle d'acheminer les informations d'un réseau à un autre. C'est ce que l'on appelle le routage. Les réseaux sont donc reliés entre eux par des machines que l'on appelle routeurs. Ces routeurs vont donc recevoir les paquets sur un réseau, et les renvoyer sur l'autre. Ils ont donc une connexion sur chaque réseau. Tous les réseaux ne pouvant pas être reliés entre eux, il va souvent falloir passer par des réseaux intermédiaires pour pouvoir envoyer un paquet d'un réseau à un autre.

La couche réseau a d'autres fonctionnalités auxquelles nous ne nous intéresserons pas ici.

Principe de fonctionnement:

Machine A Machine B| | | |---------- ---------- ---------- ---------- ---------- ---------- ---------- |Réseau 1|--Routeur1--|Réseau 2|--Routeur2--|Réseau 3|---------- ---------- ---------- ---------- ---------- ---------- ----------

Lorsque la machine A veut envoyer un message à B, le paquet va d'abord passer par le réseau 1. Puis le routeur 1 qui est connecté à ce réseau va le récupérer pour le renvoyer vers le réseau 2, et ainsi de suite jusqu'au réseau 3 où la machine B va pouvoir le recevoir.

Cela est bien joli, mais comment ça marche ? Comment le routeur 1 sait-il qu'il faut envoyer le paquet sur le réseau 2 pour qu'il puisse atteindre B ??? Et puis on sait maintenant envoyer une trame d'une machine à une autre sur un même réseau, mais sur deux réseaux différents ?

Quelles adresses pour la couche 3 ?

Une adresse IP est codée sur 4 octets. Elle s'écrit en décimal séparés par des points. Par exemple, 192.168.0.1 est une adresse IP.

Page 7: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routagePourquoi encore une adresse alors que nous avons déjà l'adresse MAC ?

Il est nécessaire de différencier les adresses de couche 2 et de couche 3, car l'adressage au niveau de chacune de ces couches n'a pas le même rôle.

L'adressage MAC en couche 2 permet d'identifier les machines SUR UN MEME RESEAU.

L'adressage IP en couche 3 permet d'adresser les machines SUR DES RESEAUX DISTINCTS.

Peut-on alors utiliser pour ces deux couches une seule de ces deux adresses ? La réponse est malheureusement non. Les adresses de couche 2 sont en rapport avec le matériel réseau utilisé (le protocole de couche 2 est géré au niveau de la carte connectée au réseau et non pas par le système d'exploitation comme les couches supérieures) il est donc difficile de modifier les adresses MAC qui sont censées être codées directement sur la carte réseau. Cela est notamment du au fait que chaque adresse MAC doit être unique sous peine de conflit matériel, et que cette adresse doit être accessible très tôt lors du boot d'une machine.

Les adresses de couche 3 quant à elles demandent une certaine souplesse d'utilisation car on ne connaît pas à priori l'adresse du réseau sur lequel une machine va se trouver. Il y a donc une incompatibilité d'utilisation d'une adresse de couche 2 pour une adresse de couche 3, et vice versa.

Enfin, les protocoles réseau évoluant au fil du temps, il est nécessaire que chaque couche soit indépendante des autres.

Page 8: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routageSi vous avez compris les masques de sous réseau, vous savez que le masque permet notamment à une machine de savoir quelles sont les autres machines de son réseau. Ainsi, quand une machine veut dialoguer avec une autre, elle va d'abord regarder si cette machine est sur son propre réseau, ou si elle va devoir passer par des routeurs intermédiaires pour lui envoyer son paquet. Ceci va être possible grâce à la table de routage.

Qu'est ce que la table de routage ?

La table de routage est un regroupement d'informations permettant de déterminer le prochain routeur à utiliser pour accéder à un réseau précis sur lequel se trouvera la machine avec laquelle nous souhaitons dialoguer. Ainsi, si l'on reprend l'exemple précédent, le routeur 1 doit savoir que pour atteindre le réseau 1, il devra envoyer les informations sur son interface de gauche sur le schéma, que pour atteindre le réseau 2, il devra envoyer les informations sur son interface de droite, et enfin, pour atteindre le réseau 3, il devra envoyer les informations sur son interface de droite vers le routeur 2. La table de routage doit pouvoir regrouper toutes ces informations. Elle les regroupe par ligne en indiquant pour un réseau donné par où il faut passer.

Pour le routeur 1 par exemple, sa table de routage doit être:

vers réseau 1 -> utiliser interface gauchevers réseau 2 -> utiliser interface droitevers réseau 3 -> utiliser interface gauche vers routeur 2

En fait, la réalité est un peu plus précise. Les interfaces peuvent être identifiés par leurs adresses ou leur type, et les réseaux sont identifiés par l'adresse du réseau et le masque associé.

Page 9: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routageAinsi, cela se traduit en:

Réseau Masque Interface Passerelle192.168.0.0 255.255.255.0 ethernet 1 ethernet 1172.16.0.0 255.255.0.0 ethernet 2 ethernet 210.0.0.0 255.0.0.0 ethernet 2 172.16.0.254

Où 192.168.0.0, 172.16.0.0 et 10.0.0.0 représentent les réseaux 1, 2 et 3. Et 172.16.0.254 représente l'adresse de l'interface de gauche du routeur 2. Ainsi, pour atteindre la machine d'adresse 10.0.0.45 située sur le réseau 3, le routeur va voir dans la table de routage quelle entrée correspond au réseau contenant cette adresse. Il s'agit du réseau 10.0.0.0/255.0.0.0, et pour atteindre ce réseau, il est dit d'envoyer le paquet par l'interface ethernet 2, vers l'adresse 172.16.0.254. Et voilà !

Ce système semble très bien, mais on en voit vite les limites sachant que le réseau Internet est composé de plusieurs millions de réseaux... Cela voudrait dire qu'il faut connaître la route vers chacun de ces réseaux pour pouvoir dialoguer avec eux. Heureusement, une solution a été mise en place pour répondre à ce problème. Il s'agit de la route par défaut.

Page 10: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routageQu'est-ce qu'une route par défaut ?

La route par défaut est la route qui sera utilisée lorsque aucune route spécifique pour aller vers la destination spécifiée n'aura été trouvée. Ainsi, dans le cas précédent, si je voulais atteindre l'adresse 193.253.25.46, aucune entrée de ma table de routage ne m'aurait indiqué comment y aller... Ce qui fait que ma machine n'aurait pas su vers qui envoyer le paquet et qu'il serait allé directement à la poubelle

En indiquant en plus une route par défaut, cela aurait permis à ma machine d'avoir une destination, même quand aucune entrée de la table de routage ne correspondait à l'adresse demandée. J'aurais donc envoyé mon paquet vers ma route par défaut, en fait vers le prochain routeur à utiliser, et c'est ce prochain routeur qui se serait occupé de continuer à router le paquet. Si lui non plus n'avait pas eu de route spécifiée pour l'adresse de destination demandée, il aurait envoyé le paquet à son propre routeur par défaut, et ainsi de suite jusqu'à tomber sur un routeur connaissant la route !

Cela peut sembler un peu aléatoire comme stratégie, mais aujourd'hui, Internet est fait de telle façon que les routeurs qui le composent connaissent les routes vers toutes les destinations. Cela est mis en place grâce à des protocoles évolués permettant d'échanger des informations de routage en temps réel !

La table de routage pour le routeur 1 devient alors:

Réseau Masque Interface Passerelle

192.168.0.0 255.255.255.0 ethernet 1 ethernet 1172.16.0.0 255.255.0.0 ethernet 2 ethernet 210.0.0.0 255.0.0.0 ethernet 2 172.16.0.254défaut 0.0.0.0 ethernet 2 172.16.0.254

Cette dernière ligne peut parfois être aussi écrite:

0.0.0.0 0.0.0.0 ethernet 2 172.16.0.254

NB: On peut se rendre compte dans notre exemple que la route vers le réseau 10.0.0.0 n'est plus nécessaire, vu que la route par défaut pointe vers le même routeur.

Page 11: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routageMais si l'on met une route par défaut, peut-on en mettre plusieurs ?

Cela n'a pas d'intêret dans l'absolu, et sera traité différemment selon les systèmes. Disons qu'une table de routage normale ne devrait avoir qu'une route par défaut.

Puis-je mettre l'adresse d'un routeur n'étant pas sur mon réseau comme passerelle ?

Non ! Et d'ailleurs, cela n'aurait pas de sens, puisqu'une passerelle est censée nous indiquer un chemin pour sortir de notre réseau. Si on indique l'adresse d'une machine en dehors de notre réseau, c'est que l'on en est déjà sorti !

La conséquence est que les passerelles indiquées dans une table de routage devront toujours appartenir à mon propre réseau

Vu que ma machine a plusieurs interfaces, dois-je avoir plusieurs tables de routage ?

Là encore la réponse est non. La table de routage est censée contenir toutes les informations de routage pour votre machine (ou routeur) quel que soient le nombre d'interfaces. D'ailleurs, vous avez pu voir dans la table de routage du routeur 1 que les routes contenaient des informations sur ses deux interfaces.

Maintenant que nous savons comment une machine fait pour aiguiller un paquet, il nous reste à savoir quelles informations de couche 3 ce paquet devra contenir pour que le routage puisse être effectué. Le message de base utilisé par IP est le datagramme.

Page 12: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routageFormat d'un datagramme IP

De la même façon qu'avec Ethernet, la couche IP (couche 3) va nécessiter un certain nombre d'informations pour pouvoir effectuer les tâches qui lui incombent comme le routage. A la manière de la trame Ethernet, le datagramme IP se compose d'une en-tête IP, et d'un payload contenant les informations à transporter.

Datagramme IP-----------------------------------------------------| En-tête IP | Informations à transporter |-----------------------------------------------------

Nous allons voir plus en détail ce que contient l'en-tête IP, même si nous ne décrivons pas l'ensemble de l'en-tête, mais juste les informations qui nous intéressent.

En-tête IP**************************************************** | @ IP source | @ IP destination | Protocole sup |****************************************************

Celle-ci ressemble fort à ce que nous avons vu précédemment pour Ethernet, nous ne détaillerons donc pas son contenu. Maintenant que nous avons décrit la couche 3, nous allons pouvoir voir plus en détail comment se fait l'interface avec la couche 2.

Page 13: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routageLe paquet formé contient l'ensemble des informations nécessaires au transport de l'information. C'est donc une trame qui circulera sur le réseau, et cette trame Ethernet contiendra le datagramme IP. La réception d'un message se passe comme suit:

La carte réseau de ma machine reçoit la trame suivante

++++++++++++++++++++++++++++++++++++++++++++++Couche 2 | en-tête 2 | e-t 3 | ... | en-tête 6 | Info | ++++++++++++++++++++++++++++++++++++++++++++++

La couche 2 regarde l'adresse MAC de destination et si cela correspond bien à notre machine, elle envoie les informations à la couche 3 en prenant soin d'enlever l'en-tête Ethernet, qui ne servira plus.

++++++++++++++++++++++++++++++++++++++++++++++Couche 3 | en-tête 3 | e-t 4 | ... | en-tête 6 | Info | ++++++++++++++++++++++++++++++++++++++++++++++

De la même façon, la couche 3 regarde l'adresse IP de destination, et si cela correspond bien à une adresse IP de notre machine, elle envoi les informations à la couche 4, et ainsi de suite. Si par contre, le datagramme est à destination d'une autre adresse IP, notre machine va router ce paquet vers sa vraie destination (cela n'est vrai que si le routage est activé sur la machine, mais c'est normalement le cas pour un routeur :-) En fin de chaîne, l'application impliquée dans le dialogue va recevoir les informations qu'elle attend:

++++++++++++++++++++++ couche 7 | Info à transmettre |++++++++++++++++++++++

Tout cela semble marcher parfaitement comme une machine bien huilée. Cependant, il nous manque encore quelques informations pour pouvoir avoir une compréhension globale du fonctionnement du routage. Par exemple, nous savons déterminer l'adresse IP du prochain routeur à utiliser, mais c'est de l'adresse MAC dont nous avons besoin pour dialoguer avec lui directement sur notre réseau... Il faut donc pouvoir récupérer une adresse MAC en fonction d'une adresse IP. Pour cela, nous allons devoir utiliser un protocole particulier déjà rencontré, dédié à cette fonction, que l'on appelle ARP.

Page 14: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routageQu'est-ce que le protocole ARP ?

Le protocole ARP permet d'obtenir une adresse MAC en fonction d'une adresse IP.

Reprenons notre problème.Le routeur 1 veut envoyer un paquet vers l'adresse 10.0.0.45 du réseau 3. Comme nous l'avons vu précédemment, le routeur regarde dans sa table de routage pour savoir où il va devoir envoyer le paquet. La table de routage lui dit que pour atteindre le réseau 10.0.0.0/255.0.0.0 qui contient l'adresse 10.0.0.45, il faut passer par le routeur dont l'une des adresses d'interface est 172.16.0.254. Le nouveau travail du routeur est donc d'envoyer le paquet vers 172.16.0.254. Cette adresse IP étant sur son propre réseau (notre routeur a une interface dans le réseau 172.16.0.0./255.255.0.0), il faut connaître son adresse MAC pour pouvoir lui envoyer le paquet. Pour connaître son adresse MAC, l'idéal serait de lui demander, mais pour lui demander, il faudrait connaître son adresse MAC !!!

Et on tourne en rond :-( Vu qu'aucune autre machine du réseau n'est censée connaître l'adresse MAC de 172.16.0.254, nous ne pouvons pas non plus leur demander. Il faut donc trouver un moyen de s'adresser à l'adresse MAC de 172.16.0.254 sans la connaître !

Et si vous vous rappelez bien du cours vous avez peut-être encore en tête que nous avons un mécanisme à notre disposition nous permettant de faire cela...  Il s'agit du principe de broadcast ! En envoyant ma question à tout le monde, je suis sûr que la machine 172.16.0.254 va la recevoir.

Je peux donc envoyer à tout le monde ma requête ARP demandant:- Qui a l'adresse IP 172.16.0.254 ? et quelle est son adresse MAC ?Toutes les machines reçoivent cette question, mais seule 172.16.0.254 va me répondre:- Je suis 172.16.0.254 et mon adresse MAC est 04:CF:65:84:C5:E2

J'ai ainsi pu récupérer l'adresse MAC de 172.16.0.254, et je peux désormais lui envoyer le paquet à transmettre.

Nous avons ainsi réussi à faire la liaison souhaitée entre l'adresse IP connue et l'adresse MAC recherchée :-)

Page 15: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routage

Une question se pose quand même, car si toutes les machines doivent envoyer des messages à tout le monde à chaque fois qu'elles souhaitent communiquer, on va vite encombrer le réseau...

Pour répondre à ce problème, ARP utilise une solution de cache local. C'est à dire que lorsqu'une requête ARP va être effectuée, la réponse à cette requête va être gardée pendant un certain temps pour pouvoir être réutilisée. Ce temps est paramétrable, et est souvent de l'ordre de quelques minutes. Ainsi, si mes machines continuent de dialoguer ensemble, il n'y aura plus besoin de faire des broadcasts ARP, il suffira d'aller chercher dans le cache ARP l'information. D'ailleurs, le fonctionnement de ARP veut que le système aille d'abord regarder dans le cache ARP si l'information s'y trouve, avant de faire le broadcast ARP (ce qui semble normal)

Page 16: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routageDialogue entre deux machines distantes

Présentation du dialogue

Nous allons reprendre le même type de schéma que nous avons vu précédemment, avec une machine A souhaitant envoyer un message à une machine B sur Internet.

Machine A (193.25.25.25/24) (232.32.32.32) Machine B| |

| |---------- ---------- -------------------- ---------- -------------------------- |Réseau 1|---Routeur1---|Internet|---Routeur2---|Réseau 3|---------- ---------- -------------------- ---------- -------------------- -----

Interface gauche routeur 1: 193.25.25.254/24Interface droite routeur 1: 140.40.40.14/28La partie Internet n'est pas mise en détail mais représente quelques de routeurs successifs avant le routeur 2.

Page 17: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routageEmission du message par A

La machine A veut envoyer le message "bonjour" à B. Comme nous l'avons vu à travers le modèle OSI, ce message va traverser les différentes couches du modèle pour que chacune y apporte l'information nécessaire à l'accomplissement de sa tâche.

La couche 3 reçoit le paquet et l'adresse de destination 232.32.32.32. Elle va voir dans sa table de routage (celle de la machine sur laquelle on est, cad A) à qui envoyer les informations.

Table de routage de A:

Réseau Masque Interface Passerelle193.25.25.0 255.255.255.0 ethernet 1 ethernet 1défaut 0.0.0.0 ethernet 1 193.25.25.254

Elle n'a pas de route spécifique pour l'adresse 232.32.32.32, ce sera donc la route par défaut qui sera utilisée.A doit donc maintenant envoyer le paquet à l'interface 193.25.25.254 du routeur 1. A retourne voir dans sa table de routage par quel interface sortir pour envoyer le datagramme à 193.25.25.254.Elle doit maintenant connaître l'adresse MAC de l'interface 193.25.25.254. Pour cela, elle va voir dans son cache ARP si elle ne trouve pas l'information. Si c'est le cas, elle connaît l'adresse MAC, sinon, il faut qu'elle fasse un broadcast ARP pour la trouver.Maintenant que la couche 3 connaît l'adresse MAC destination, elle peut envoyer le datagramme IP (en-tête IP + segment TCP) et l'adresse MAC destination à la couche 2.

En-tête IP*****************************************************--------| IP SRC 193.25.25.25 | IP DST 232.32.32.32 | ps | infos |*****************************************************--------<----------------------Datagramme IP--------------------->

La couche 2 reçoit le datagramme et y ajoute son en-tête Ethernet. La trame est maintenant prête à être envoyée sur le réseau.

En-tête Ethernet++++++++++++++++++++++++++++++++++++++++++++++++--------| MACSRC MAC A | MACDST MAC 193.25.25.254 | ps | infos |++++++++++++++++++++++++++++++++++++++++++++++++--------<---------------------Trame Ethernet------------------------>

La trame circule sur le réseau jusqu'à sa destination qui est l'adresse MAC de 193.25.25.254.

Page 18: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routageRéception du message par le routeur 1 intermédiaire

Le routeur 1 intermédiaire reçoit la trame. La couche 2 regarde l'adresse MAC en destination, et comme c'est l'adresse MAC de l'interface 193.25.25.254, le datagramme IP est envoyé à la couche 3.

La couche 3 reçoit le datagramme et regarde l'adresse IP de destination. Ce n'est l'adresse d'aucune des interfaces du routeur 1, donc le paquet devra être routé vers sa destination. Le routeur va donc voir sa table de routage pour voir vers qui renvoyer le paquet.

Table de routage du routeur 1:

Réseau Masque Interface Passerelle193.25.25.0 255.255.255.0 ethernet 1 ethernet 1 140.40.40.0 255.255.255.240 ethernet 2 ethernet 2défaut 0.0.0.0 ethernet 2 140.40.40.13

Il n'y a pas de route spécifique pour l'adresse 232.32.32.32. C'est donc la route par défaut qui sera utilisée. La prochaine machine à qui envoyer le paquet est donc 140.40.40.13. Le routeur retourne voir dans sa table de routage par quel interface sortir pour atteindre 140.40.40.13. C'est la seconde ligne de la table qui contient l'information et l'interface à utiliser est l'interface 2.De la même façon que précédemment, il faut trouver son adresse MAC pour lui envoyer la trame contenant les informations nécessaires. On la trouve facilement grâce aux mécanismes ARP. Le routeur 1 peut donc envoyer la trame vers le prochain routeur. Nous n'allons pas détailler la suite, le passage par chaque routeur étant identique à celui-ci.

Les informations arrivent donc jusqu'au routeur 2 grâce aux mécanismes de routage d'Internet.Celui-ci va comme précédemment renvoyer le paquet qui ne lui est pas destiné vers la machine B qui est sur son réseau.

Page 19: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routageRéception du message par la machine B

La trame arrive donc sur l'interface de la machine B. L'adresse MAC en destination est bien celle de cette interface (Cette adresse MAC aura été trouvée grâce au mécanisme ARP mis en oeuvre par le routeur 2)

La couche 2 renvoi donc le datagramme IP à la couche 3 IP.

La couche 3 reçoit le datagramme et regarde l'adresse IP de destination. C'est bien l'adresse d'une des interfaces de la machine ! La couche 3 va donc pouvoir envoyer les informations à la couche 4, qui enverra elle-même le message "bonjour" à la couche 7 applicative. Et nous avons réussi ainsi à envoyer le message "bonjour" de la machine A à la machine B !!!

Page 20: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routageQuelques remarques

Même si tout s'est bien déroulé dans notre dialogue, et que vous avez tout parfaitement compris, il est bon de mettre en valeur certains aspects de la communication.

- Les adresses MAC source et destination sont modifiées à chaque passage par un routeur

Oui, et c'est normal. Ces adresses MAC sont relatives à la couche 2 dont le rôle principal est le dialogue sur un réseau local. Donc les adresses MAC utilisées dans une trame doivent être en relation avec le réseau sur lequel on se situe, pas celui d'à coté)

Que se passerait-il si une adresse MAC de destination était celle d'une interface étant sur un autre réseau ? Ca ne marcherait plus car la trame serait envoyée sur le réseau local (en couche 2) et ne trouverait pas de machine ayant cette adresse MAC. La trame serait donc perdue.Les adresses MAC contenues dans une trame Ethernet doivent donc toujours être en rapport avec le réseau local. C'est ce qui explique qu'elles doivent être modifiées à chaque passage sur un nouveau réseau.

- Par contre, les adresses IP source et destination n'ont pas été modifiées durant le transport de A à B

Oui, et cela est encore normal ! La couche 3 concerne les informations de routage, donc sur des adresses appartenant à des réseaux distants. Ces adresses représentent donc les deux extrémités du dialogue et ne doivent pas être modifiées.

Que se serait-il passé si on avait modifié les adresses IP source et destination à chaque passage d'un routeur ? Ici encore, nous aurions eu des problèmes. Le datagramme IP serait bien arrivé jusqu'au routeur 1, et lui l'aurait renvoyé vers le prochain routeur sur Internet en mettant comme adresse IP destination 140.40.40.13. Le routeur ayant cette adresse 140.40.40.13 aurait bien reçu le datagramme, mais voyant que c'était lui l'adresse IP de destination, il aurait pris le paquet pour lui et la communication se serait arrêtée là (la couche 4 n'aurait pas reconnu ce paquet comme appartenant à une connexion valide) et badaboum... Il est donc impératif de ne pas modifier les adresses IP lors du transport du datagramme. Le dialogue IP se fait de bout en bout entre les réseaux distants, alors que le dialogue Ethernet se fait de proche en proche sur chacun des réseaux traversés.

Page 21: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routage

Voici un petit dessin pour schématiser les deux principes que nous venons d'évoquer.

Machine A Machine B| |---------- ---------- ----------|Réseau 1|--Routeur1--|Internet|--Routeur2--|Réseau 3|---------- ---------- ----------<--------------------------- Dialogue IP --------------------------><--------- DE ----------><---- DE ----><--------- DE ---------->

Avec DE = Dialogue Ethernet

NB: Il est cependant possible que les adresses IP source et destination soient modifiées dans le cas de la traduction d'adresse. (Voir la nat)

Page 22: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routagePrincipe d'un algorithme de routage

Un des protocoles les plus connus est RIP (RIP: ROUTING INFORMATION PROTOCOL) également connu sous le nom d'un programme qui le met en œuvre : routed . Il assure un routage cohérent et permet l'échange d'informations d'accessibilité entre machines sur les réseaux locaux. Il utilise la diffusion sur le réseau physique pour propager rapidement les informations de routage. Il n'a pas été initialement conçu pour être utilisé sur les réseaux grande distance.

Le protocole RIP est une application directe du routage à vecteurs de distance.

Il classe les participants en machines passives ou actives. Une passerelle active propage les routes qu'elle connaît vers les autres machines; les machines passives écoutent les passerelles et mettent à jour leurs routes en fonction des informations reçues, mais n'en diffusent pas elles-mêmes. Une passerelle utilisant RIP en mode actif diffuse un message toutes les 30 secondes. Le message contient des informations extraites de ses tables de routage courantes. Chaque message est constitué d'une partie contenant l'adresse IP d'un réseau et un entier mesurant la distance de la passerelle vers ce réseau. RIP utilise une métrique à nombre de sauts (hop count metric) pour mesurer la distance qui la sépare d'une destination. Dans la métrique RIP, une passerelle est située à une distance d'un saut d'un réseau directement accessible, a deux sauts des réseaux accessibles par l'intermédiaire d'une autre passerelle et ainsi de suite. Le nombre de sauts (number of HOP OU hop count metric) mesure donc le nombre de passerelles que doit traverser un datagramme pour atteindre sa destination, sur un chemin reliant une source donnée à une destination donnée. Il doit être clair que l'utilisation du nombre de sauts pour déterminer les plus courts chemins ne conduit pas toujours à une solution optimale. Par exemple, un chemin qui traverse trois réseaux Ethernet et comporte trois sauts peut être nettement plus rapide qu'un chemin qui ne comporte que deux sauts, mais emprunte deux liaisons série basse vitesse. Pour compenser les différences inhérentes à la technologie, de nombreuses mises en œuvre de RIP utilisent des nombres de sauts artificiellement élevés lorsqu'elles diffusent des informations relatives à des réseaux à bas débit.

Partenaires RIP actifs et passifs écoutent tous les messages et mettent à jour leurs tables de routage, conformément à l'algorithme de routage à vecteurs distance décrit précédemment.

Page 23: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routageAinsi, dans l'interconnexion présentée

La passerelle Gl diffusera sur le réseau un message qui contient la paire (1, 1), ce qui signifie que G1 peut atteindre le réseau 1 pour un coût de 1. Les passerelles G2 et G5 reçoivent ces informations et mettent leurs tables à jour en créant une route qui passe par la passerelle G1 pour atteindre le réseau 1 (pour un coût de 2). Ultérieurement, les passerelles G2 et G5 propagent la paire ( 1, 2) lorsqu'elles diffusent leur message RIP sur le réseau 3. Le cas échéant, toutes les passerelles et les machines créeront une route vers le réseau 1.RIP définit quelques règles d'amélioration des performances et de la fiabilité. Ainsi, lorsqu'une passerelle apprend d'une autre passerelle l'existence d'une nouvelle route, elle conserve cette dernière jusqu'à ce qu'elle en connaisse une meilleure. Dans notre exemple, si les passerelles G2 et G5 propagent des informations de routage indiquant que le réseau 1 a un coût de 1, les passerelles G3 et G4 créeront une route passant par la première passerelle dont elles auront reçu le message. Nous pouvons le résumer ainsi: Pour empêcher l'oscillation entre deux ou plusieurs passerelles de même coût RIP indique que les routes crées doivent être conservées jusqu'à ce qu'une route de coût strictement inférieur apparaisse.

Page 24: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routageQue se passe-t-il lorsque la passerelle qui a propagé les informations de routage tombe en panne ? RIP indique que tous les récepteurs doivent associer une temporisation aux routes acquises. Lorsqu'une passerelle définit une route dans ses tables, elle lui associe une temporisation et l'active. La temporisation doit être réarmée à chaque fois que la passerelle reçoit un message RIP référençant cette route. La route est invalidée s'il s'écoule par exemple 180 secondes sans qu'elle soit de nouveau référencée.RIP doit prendre en compte trois types d'erreurs causés par l'algorithme sous jacent. D'abord, l'algorithme ne détecte pas les boucles de façon explicite, RIP doit donc supposer que ses partenaires sont fiables ou prendre des précautions pour détecter les boucles. RIP doit ensuite utiliser une petite valeur comme distance maximale possible (RIP utilise la valeur 16) pour éviter les instabilités. Les administrateurs de réseaux doivent utiliser un autre protocole pour les interconnexions dans lesquelles le nombre de sauts avoisine normalement la valeur 16 (de toute évidence, la petitesse de la valeur limite du nombre de sauts de RIP le rend inutilisable dans les grands réseaux).Troisièmement, l'algorithme de routage à vecteurs de distance utilisé par RIP entraîne une convergence lente (slow convergence) ou un problème de valeur infinie (count to infinity) qui produit des incohérences parce que les messages se propagent lentement à travers le réseau. Le, choix d'une faible valeur infinie (16) limite le phénomène de valeur infinie, sans pour autant l'éviter.L'incohérence des tables de routage n'est pas spécifique de RIP. C'est un problème fondamental inhérent à tout protocole à vecteurs de distance où les messages ne véhiculent que des paires (réseau destination, distance).

Page 25: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routageConsidérons, pour comprendre le problème, l'ensemble de passerelles de la figure suivante :

La figure représente les routes vers le réseau 1 pour l'interconnexion de la figure précédente. La passerelle Gl accède directement au réseau 1. Sa table de routage comporte une route à laquelle est associée une distance 1. Cette route fait partie des informations de routage diffusées périodiquement. La passerelle G2 apprend la route de Gl, l'inscrit dans sa table de routage et propage les informations relatives à cette route, en indiquant une distance 2. Enfin, G3 apprend la route de G2 et propage les informations relatives à cette route en indiquant une distance 3. Supposez maintenant que l'accès de G1 au réseau 1 tombe en panne. G 1 met immédiatement à jour sa table de routage et affecte une distance infinie (16) à la route correspondante. Dans la diffusion d'informations suivante, G1 diffuse le coût élevé associé à cette route. A moins toutefois que le protocole ne comporte des mécanismes supplémentaires pour éviter l'apparition de ce phénomène, une autre passerelle peut, avant G1 propager des informations relatives à cette route. Supposez, en particulier, que G2 diffuse ses informations de routage juste après que l'accès de G1 au réseau 1 est tombé en panne. Dans ce cas, G 1 reçoit des messages de G2 et applique l'algorithme de routage à vecteurs de distance: elle constate que G2 l'informe de l'existence d'une route vers le réseau 1 dont le coût est inférieur au sien et en déduit que le coût d'accès au réseau 1 est de 3 sauts ( 2 sauts pour atteindre le réseau I depuis G2 plus un pour l'atteindre depuis G1). G1 inscrit donc dans sa table de routage la route qui passe par G 2 pour atteindre le réseau 1. Les diffusions RIP ultérieures de ces deux passerelles ne résolvent pas rapidement le problème. Au cycle de diffusion d'informations de route suivante, G1 diffuse le contenu de l'entrée de sa table. Lorsque G2 apprend que la route vers le réseau 1 a un coût de 3, elle recalcule le coût associé à cette route, celui-ci prend la valeur 4. au troisième tour, G1 reçoit de G2 des informations qui signalent une augmentation du coût associé à la route vers le réseau 1. Elle augmente donc la valeur dans sa table de routage. Celle-ci vaut maintenant 5. et elles poursuivent ce processus jusqu'à atteindre la valeur infinie de RIP.

Page 26: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routageProtocoles utilisés pour les grands réseaux

RIP est simple à mettre en place mais ne résout pas tous les problèmes. De plus, vu le nombre de réseaux, les tables de routage RIP peuvent devenir énormes. En plus des informations statiques, généralement on utilise une route par défaut. Lorsque l'on envoie un datagramme à une passerelle, cette dernière regarde sa table de routage pour voir si elle connaît la prochaine passerelle pour atteindre le réseau. Si oui elle lui remet de datagramme sinon, elle remet ce dernier à une passerelle spécifique qui procédera de même. Généralement, les passerelles RIP connaissent toutes les routes du réseau de l'entreprise et ignorent les routes vers les réseaux extérieures. Elles transmettent donc tous les datagrammes destinés à l'extérieur à une autre passerelle. Cette passerelle est souvent appelée passerelle extérieure par opposition aux "passerelles intérieures". Les passerelles extérieures vont utiliser d'autres algorithmes tels que SPF (Link-state, Shortest First). Ce protocole suppose que toutes les passerelles l'utilisant connaissent la topologie de l'ensemble des réseaux qu'elles gèrent. EGP (Exterior Gateway Protocol) est un protocole qui est souvent mis en œuvre sur des passerelles qui font l'interconnexion de sites avec des réseaux fédérateurs. Le principe d'EGP est simple. Chaque passerelle ne connaît que ces voisins immédiats et met en place une route par défaut sur l'un de ces voisins pour pouvoir router les paquets vers des réseaux qu'elle ne connaît pas. Toutes ces méthodes permettent donc à IP de trouver un chemin lorsqu'il existe. Cependant il existe aujourd'hui encore des cas qui posent problèmes.

Page 27: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routageLa fragmentation.

Le but d'IP est de trouver un chemin pour envoyer un datagramme. Ce datagramme va circuler de passerelles en passerelles. Ces passerelles sont connectées sur un support physique qui peut avoir des MTU (Maximum Transfert Unit) différent (c'est-à-dire qui échange des trames de longueurs différentes). Le réseau1 dispose d'un MTU M1, il est connecté au réseau 2, via G1, qui dispose d'un MTU M2, qui ... via Gn-1, qui dispose d'un MTU Mn.Supposons qu'une machine du réseau 1 envoie un datagramme IP de longueur L à destination d'une machine sur le réseau N, alors 5 cas de figures peuvent se présenter:

1°) L < min(M1,M2,...Mn)alors, le datagramme est émis de passerelles en passerelles jusqu'à ce qu'il atteigne sa destination sur le réseau N. 2°) L > min(M1,M2,...Mn)alors si le datagramme ne doit pas être fragmenté, un message ICMP d'erreur est émis vers la machine source et le datagramme est détruit par la passerelle qui ne peut pas le faire transiter sur l'autre réseau. 3°) L > min(M1,M2,Mn)alors si le datagramme peut être fragmenté, la passerelle qui ne peut émettre directement ce datagramme va le couper en autant de petits datagrammes que nécessaire et émettre tous les fragments sur l'autre réseau.Lorsque les fragments arrivent sur la passerelle suivante, cette dernière ignore que ce sont des fragments, et les traite comme des datagrammes normaux. 4°) le datagramme arrive sur une passerelle qui ne peut le traiter faute de ressources suffisantes, alors ce dernier est détruit sans autre forme de procès. 5°) le datagramme arrive sur la passerelle Gi qui ne dispose pas d'information pour router ce datagramme, alors elle le détruit et émet un message ICMP qui signale une erreur de routage.

Page 28: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routage

Conclusion

IP envoie des datagrammes de machines à machines.

IP garantit qu'il fera tout son possible pour envoyer le datagramme (Best effort).

IP peut détruire un datagramme.

IP ne garantit pas qu'un datagramme émis arrive à l'identique sur l'autre machine. Il peut fragmenter le datagramme et émettre ces fragments sur différents chemins en fonction des tables de routages.

IP n'est pas un protocole fixe, mais est en perpétuel évolution.

IP ne fixe pas seul les routes, il utilise d'autres protocoles (RIP, …)

Page 29: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routageExercice 2

Soient trois machines appartenant à un réseau (A) et ayant les paramètres suivants :

A : 172.16.2.1 / 255.255.0.0 IPpasserelle : 172.16.0.254B : 172.16.3.3 / 255.255.255.0 IPpasserelle : 172.16.0.254C : 172.17.2.4 / 255.0.0.0 IPpasserelle : 172.16.0.254

Soient deux autres machines appartenant à un réseau (B) et ayant les paramètres:

D : 172.16.3.1 / 255.255.0.0 IPpasserelle : 172.17.0.254E : 172.17.4.2 / 255.255.0.0 IPpasserelle : 172.17.0.254

Et un routeur ayant deux interfaces joignant les deux réseaux :A et B

172.16.0.254 / 255.255.0.0 (interface gauche vers réseau A)172.17.0.254 / 255.255.0.0 (interface droite vers réseau B)

Voici la partie de la table de routage qui vous intéresse :

Destination Gateway/passerelle Masque172.16.0.0 0.0.0.0 255.255.0.0

Interf.Gauche172.17.0.0 0.0.0.0 255.255.0.0 Interf.

Droite

Faites un tableau croisé résumant quelle machine peut communiquer avec quelles autres machines et expliquez pourquoi. Quelles modifications apporteriez-vous pour que toutes les machines puissent communiquer entre elles tout en rendant l’adressage plus logique ?

Page 30: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routage

Destination Gateway/passerelle Masque172.16.0.0 0.0.0.0 255.255.0.0

Interf.Gauche172.17.0.0 0.0.0.0 255.255.0.0 Interf.

Droite

Page 31: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routage

Nom du routeur

E0 S0 S1

Routeur_1 192.5.5.1 201.100.11.1  

Routeur_2 219.17.100.1 199.6.13.1 201.100.11.2

Routeur_3 223.8.151.1 204.204.7.1 199.6.13.2

Routeur_4 203.6.5.1 210.93.105.1 204.204.7.2

Routeur_5 207.4.56.1   210.93.105.2

Source: http://www.labo-cisco.com/ArticleComp.asp?ARID=4&offset=0

Page 32: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

Le routageContrôle de flux

Les appareils communiquant sur un réseau n'émettent et ne reçoivent pas tous à la même vitesse. Si un émetteur envoie des données plus vite que le récepteur ne peut recevoir, un débordement se produit au niveau du récepteur, entraînant la perte de données. Il faut donc pouvoir réduire le débit de l'émetteur, de manière à ce qu'il ne dépasse pas la capacité du récepteur. Les différents mécanismes employés pour gérer le débit d'une communication sont regroupés sous l'appellation de contrôle de flux. À la fin de la section précédente, nous avons évoqué ARQ (Automatic Repeat reQuest), qui est une méthode simple de contrôle de flux. Avec la méthode « Stop and Wait », l'émetteur n'envoie pas davantage de données avant que le récepteur lui indique qu'il est prêt à recevoir le paquet suivant. Cette forme de contrôle de flux évite bien les débordements mais son efficacité est très faible et réduit donc la capacité du réseau. Le tableau 1.10 présente un exemple de propriétés d'un réseau :

Dans le réseau de l'exemple, l'émetteur envoie un paquet puis attend un accusé de réception pendant 100 ms. Cette attente correspond aux 50 ms que dure le trajet de l'émetteur vers le récepteur ajoutées au 50 ms du trajet de l'accusé de réception depuis le récepteur vers l'émetteur. Le débit est donc d'un paquet toutes les 100 ms, c'est-à-dire 10 paquets par seconde. Chaque paquet contenant 100 octets, le débit est de 1 000 octets soit 8 000 bps. Avec une capacité de 2 000 Kbps et un débit effectif de 8 000 bps, le taux de transfert est de 4 %, ce qui est extrêmement faible. Les techniques de fenêtre coulissante peuvent résoudre ce genre de problèmes dus à l'ARQ.

Elément Valeur Taille de paquet 100 octets

Capacité 200 Kbps Délai 50ms

Page 33: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

La gestion du fluxFENÊTRE COULISSANTE

La technique de fenêtre coulissante définit une taille de fenêtre, qui représente la quantité maximale de données qu'un émetteur peut transmettre avant que le récepteur n'envoie un accusé de réception. L'émetteur et le récepteur s'accordent sur la taille de la fenêtre avant la transmission des données. Prenons par exemple un réseau dont la taille de fenêtre est de six paquets. L'émetteur forme un premier groupe de six paquets qu'il envoie au récepteur, sans attendre d'accusé de réception pour chaque paquet individuel. Il attend ensuite un accusé de réception pour l'ensemble des six paquets, qui comporte entre autres le numéro de séquence du paquet suivant à transmettre. Quand il le reçoit, il envoie les six paquets suivants. Sans cette méthode de fenêtre coulissante, le temps pour transmettre six paquets serait de 12N, N étant le temps nécessaire pour effectuer le trajet entre l'émetteur et le récepteur. Avec cette méthode, il se réduit à 2N. En conservant une taille de 6 paquets pour la fenêtre, observez le temps nécessaire pour envoyer 600 paquets (de 6 paquets chacun) avec un temps de propagation de 3 ms :

ARQ (sans fenêtre coulissante) (12 x 3) x 600 = 21 600 msAvec fenêtre coulissante (6 paquets) (2 x 3) x 600 = 3 600 ms

Dans cet exemple simple, la différence entre les deux systèmes est déjà largement significative (Ces calculs représentent en fait une approximation de la réalité, car ils ne prennent pas en compte lé délai entre l'envoi des différents paquets, mais ce délai est négligeable.)

Page 34: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

La gestion du flux

Selon les implémentations, la taille de la fenêtre peut être fixe ou variable au fur et à mesure de l'envoi et de la réception des paquets.

II est toujours possible que les paquets ou les trames de la fenêtre courante de l'expéditeur soient altérés ou perdus au cours de la transmission, aussi, dans la plupart des implémentations, l'émetteur garde les trames en mémoire pour une retransmission éventuelle.

Il a pour cela besoin d'un tampon d'une taille au moins égale à celle de la fenêtre.

Du côté du récepteur, tous les paquets qui débordent de la taille de la fenêtre sont écartés.

Page 35: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

La gestion du fluxLa figure 1.15 montre pas à pas une transmission unidirectionnelle avec une taille de fenêtre de 5 trames

TCP (Transmission Control Protocol) utilise une forme de fenêtre coulissante, employant un système de crédit (jeton). Il se sert d’un numéro de séquence, d’un numéro d'accusé de

réception et d’une taille de fenêtre.

Page 36: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

GESTION DES ENCOMBREMENTS

Les encombrements (ou congestion) dont peuvent souffrir les réseaux sont comparables à ceux qui affectent les routes. Lorsque que le trafic réseau est important sur le support, les paquets voulant l'emprunter doivent patienter (dans des tampons). Plus la capacité de transmission utilisée est proche de la capacité maximale du support, plus les problèmes d'encombrement sont sensibles et plus le débit chute.

Sur les réseaux à commutation de paquets, l'encombrement est un problème grave, car les paquets peuvent s'accumuler dans les tampons des appareils de commutation jusqu'à la saturation.

Voici les différentes raisons pour lesquelles un routeur peut ne pas parvenir à transmettre les paquets à temps :

•La puissance de traitement du routeur peut être insuffisante pour accomplir les tâches de routage.•La taille des tampons d'entrée peut être insuffisante pour stocker tous les paquets arrivant au routeur. •La bande passante des liaisons en sortie peut être insuffisante pour acheminer l'ensemble du trafic.

Page 37: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

GESTION DES ENCOMBREMENTSS'il n'y a pas de mécanisme en place pour indiquer aux autres appareils que le routeur est surchargé, les paquets supplémentaires qui continuent à arriver seront rejetés. Comme les paquets ne sont pas acheminés à destination, leurs émetteurs ne recevront pas d'accusés de réception de leurs destinataires et enverront à nouveaux les paquets. Comme le routeur sera encore surchargé, les paquets retransmis seront également rejetés, et leurs émetteurs les transmettront une nouvelle fois, au point de rendre le réseau inutilisable. C'est pourquoi il existe des techniques de surveillance des réseaux permettant de réagir à ces problèmes d'encombrement. On distingue deux méthodes :

• Lorsque le routeur est encombré, il en informe les émetteurs, qui interrompent leurs transmissions jusqu'à nouvel ordre.• Les émetteurs supposent qu'il y a un encombrement à partir du moment où des paquets commencent à se perdre.

Page 38: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

GESTION DES ENCOMBREMENTSLe premier mécanisme peut être implémenté en imposant au routeur d'envoyer un message spécial aux émetteurs. Lorsque ce message est envoyé pour la première fois au début de l'encombrement, il indique aux émetteurs de réduire leur débit de 50 %. Si le problème persiste, ce message est envoyé une seconde fois et indique donc aux émetteurs de faire passer leur débit à 25 % de sa valeur initiale. Ce type de système de notification peut entraîner un délai assez important entre le moment où l'encombrement se produit et le moment où les émetteurs sont informés du problème.La seconde approche, reposant sur les paquets perdus, est envisageable sur les réseaux modernes, où, grâce à la fiabilité des équipements réseau actuels, les encombrements sont la principale cause de perte des paquets. La perte de paquets peut facilement être constatée en observant le taux de retransmissions que doit effectuer l'émetteur.

En implémentant un contrôle de débit, il est possible de réduire temporairement le nombre de retransmissions en cas d'encombrement. Les protocoles utilisant un système de fenêtre coulissante peuvent effectuer ce contrôle de débit en réduisant la taille de la fenêtre de manière à transmettre moins de données.

Page 39: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

GESTION DES ENCOMBREMENTS

Le protocole TCP par exemple se fonde sur les paquets perdus pour détecter les encombrements et réduire temporairement le débit auquel les informations sont retransmises. Lorsque TCP s'aperçoit qu'un paquet a été perdu, il envoie un seul paquet au lieu du nombre acceptable par la fenêtre du récep teur. S'il reçoit un accusé de réception pour ce paquet, il double le nombre de paquets envoyés et ainsi de suite, tant qu'il reçoit des accusés de réception, jusqu'à atteindre la taille de fenêtre du récepteur. Cette variation dynamique du nombre de paquets envoyés par TCP s'appelle fenêtre de congestion.

Page 40: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

GESTION DES ENCOMBREMENTS

Délestage

Le délestage est généralement l'ultime recours des routeurs lorsque les autres techniques de contrôle de l'encombrement n'ont pu résorber le problème. Cela consiste tout simplement pour le routeur à se débarrasser des paquets qu'il ne peut traiter, mais en ayant toutefois choisi ceux qu'il écartera. Dans certains types d'application, comme un serveur FTP, un paquet ancien est plus important qu'un paquet récent. Par exemple, si les paquets 3, 4 et 5 arrivent et que le routeur ne peut en n'accepter qu'un, il est logique de choisir le paquet 3 et pas le 4 ou le 5. Si le routeur avait décidé de garder le paquet 5 et rejeté les paquets 3 et 4, alors l'émetteur aurait à retransmettre les paquets 3, 4 et 5. Dans d'autres cas, pour les applications multimédia par exemple, ce sont les paquets les plus récents qui sont les plus précieux.

Page 41: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

La NAT: "Network Address Translation" Qu'est-ce que la NAT ?

Le terme barbare NAT représente les initiales de "Network Address Translation", ou "Traduction d'Adresse réseau" en français. Mais il est souvent utilisé pour représenter différents concepts que nous allons différencier, notamment NAT statique, NAT dynamique, PAT, IP masquerading... Si l'on s'en tient intrinsèquement à la définition du terme NAT, cela représente la modification des adresses IP dans l'en-tête d'un datagramme IP effectuée par un routeur. On verra par la suite quelles sont les différentes applications possibles. On parlera de SNAT quand c'est l'adresse source du paquet qui est modifiée, et de DNAT quand il s'agit de l'adresse destination.

Avec le développement croissant du monde de l'internet, et notamment des liaisons à connexions permanentes comme le câble ou l'ADSL, de plus en plus de particuliers utilisent de la NAT pour partager leur accès Internet, parfois même sans le savoir.

Page 42: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

La NAT: "Network Address Translation" Le principe

La NAT statique, se base sur l'association de n adresses avec n adresses. C'est à dire qu'à une adresse IP interne, on associe une adresse IP externe. Dans ce cas, la seule action qui sera effectuée par le routeur sera de remplacer l'adresse source ou destination par l'adresse correspondante.

Pourquoi je ne peux pas accéder à Internet avec une adresse privée ?

On prend l'exemple suivant:

               Machine 1 - 10.0.0.1/24                       |                       |       Interface interne routeur - 10.0.0.254/24               <ROUTEUR>       Interface externe routeur - 193.22.35.42/24                       |                       |                Internet

La machine 1 veut envoyer un paquet sur Internet, vers www.eicw.be, par exemple. Donc dans l'en-tête IP, l'adresse en destination est celle de www.eicw.be, et en source c'est 10.0.0.1. Si jamais il n'y avait pas de  traduction d'adresse, le paquet arriverait bien a la machine www.eicw.be, mais celle-ci essaierait de renvoyer sa réponse a 10.0.0.1 qui n'est pas une adresse routée sur Internet !! (Elle fait partie d'une classe d'adresses réservées pour les réseaux privés). Et notre machine 1 n'obtiendrait jamais de réponse... Ainsi, une machine ayant une adresse privée ne pourra pas recevoir de réponse à ses requêtes sans un mécanisme supplémentaire.

Page 43: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

La NAT: "Network Address Translation" Le fonctionnement de la NAT statique     Nous avons vu qu'une machine ayant une adresse privée ne pouvait pas dialoguer sur Internet avec celle-ci, donc pour résoudre ce problème, on va lui donner une adresse publique virtuelle qui va lui permettre d'accéder à Internet. Ainsi, un routeur (la plupart du temps la passerelle d'accès à Internet) va modifier dans l'en-tête IP du paquet l'adresse source 10.0.0.1 pour mettre une adresse valide sur Internet 193.22.35.43 (dans notre exemple). Le paquet va donc arriver à sa destination, et celle-ci va pouvoir le renvoyer à 193.22.35.43 qui est une adresse valide sur Internet. Le paquet va arriver jusqu'au routeur qui a fait l'association entre 193.22.35.43 et 10.0.0.1, il va donc modifier l'adresse destination 193.22.35.43 et mettre à la place 10.0.0.1, et renvoyer le paquet sur le réseau local. Ainsi, la machine 1 est vue de l'Internet avec l'adresse 193.22.35.43. S'il s'agit d'un serveur web, il suffit d'envoyer une requête HTTP vers cette adresse pour obtenir le site web.

La NAT statique nous a permis de rendre une machine accessible sur Internet alors qu'elle possédait une adresse privée. On a simplement fait une association entre une adresse privée et une adresse publique: 10.0.0.1 <--> 193.22.35.43

Page 44: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

La NAT: "Network Address Translation"

Page 45: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

La NAT: "Network Address Translation" Avantages et inconvénients de la NAT statique

En associant une adresse IP publique à une adresse IP privée, nous avons pu rendre une machine accessible sur Internet. Par contre, on remarque qu'avec ce principe, on est obligé d'avoir une adresse publique par machine voulant accéder à Internet. Cela ne va pas régler notre problème de pénurie d'adresses IP... D'autre part, tant qu'à donner une adresse publique par machine, pourquoi ne pas leur donner cette adresse directement plutôt que de passer par un intermédiaire ? A cette question, on peut apporter plusieurs éléments de réponse. D'une part, il est souvent préférable de garder un adressage uniforme en interne et de ne pas mêler les adresses publiques aux adresses privées. Ainsi, si on doit faire des modifications, changements, interventions sur le réseau local, on peut facilement changer la correspondance entre les adresses privées et les adresses publiques pour rediriger les requêtes vers un serveur en état de marche. D'autre part, on gâche un certain nombre d'adresses lorsqu'on découpe un réseau en sous-réseaux (adresse de réseau, adresse de broadcast…). Avec la NAT statique, on évite de perdre ces adresses.

Malgré ces quelques avantages, le problème de pénurie d'adresses n'a toujours pas été réglé. Pour cela, on va se pencher sur la NAT dynamique .

Page 46: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

La NAT: "Network Address Translation" Problèmes de routage liés à l'utilisation de la NAT statique (proxy ARP)         Les problèmes montrés ne sont pas toujours rencontrés lors de l'implémentation de la NAT statique. Si celle-ci est bien faite, tous les mécanismes décrits devraient être implémentés de façon transparente pour l'utilisateur. Un premier problème rencontré est celui de la redirection d'un paquet vers l'adresse virtuelle de la NAT statique. On considèrera l'exemple précédent auquel on ajoute le premier routeur rencontré sur Internet.

               Machine 1 - 10.0.0.1/24                       |       Interface interne routeur - 10.0.0.254/24               <ROUTEUR>       Interface externe routeur - 193.22.35.42/24                       |           Interface interne - 193.22.35.254/24           <Routeur Internet>            Interface externe                       |               Internet

La machine 1 fait une requête vers le site www.eicw.be. Le paquet est NATé au niveau du routeur avec comme adresse source 193.22.35.43, ainsi, le site web www.eicw.be renvoie sa réponse vers cette adresse. Le paquet est routé sur Internet et arrive sur le routeur Internet (celui qui précède le routeur de l'entreprise ou du particulier). Celui-ci regarde l'adresse de destination et observe qu'elle se situe sur le même réseau qu'une de ses interfaces. Ainsi, elle a maintenant besoin de l'adresse MAC de la machine 193.22.35.43 pour lui envoyer le paquet. Elle fait donc une requête ARP en demandant "Quelle est l'adresse MAC de la machine ayant 193.22.35.43 comme adresse IP ?". Or, sur ce réseau, aucune machine n'a cette adresse puisqu'il s'agit d'une adresse virtuelle. Il faut donc que le routeur (193.22.35.42) réponde lui-même à cette requête ARP. C'est ce que l'on appelle faire proxy ARP. Quand vous faites de la NAT statique, le proxy ARP est souvent automatiquement implémenté, cependant, il est bon de connaître ce mécanisme si ce n'est pas le cas.

Il y a plusieurs façon de pallier ce problème : - soit mettre en place soi-même un mécanisme de proxy ARP sur la machine faisant la NAT statique.    - Soit ajouter une entrée statique dans la table ARP du routeur Internet (pas le routeur faisant la NAT, mais le premier routeur rencontré après celui-ci sur Internet). Commande arp sous windows :            arp -s 193.22.35.43 @MAC_routeur

    - Soit ajouter une route host statique pour chacune des adresses virtuelles. Sous windows:            Route add -p 193.22.35.43 mask 255.255.255.255 193.22.35.42

Page 47: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

La NAT: "Network Address Translation" Problèmes de routage liés à l'utilisation de la NAT statique (routage sur la passerelle)

Un second problème peur survenir sur l'équipement qui fait la NAT. Revenons à l'exemple précédent. Le routeur Internet envoie le paquet au routeur de l'entreprise. Celui-ci reçoit la trame Ethernet, voit que c'est  son adresse MAC qui est en destination, il envoie donc le contenu des données à la couche IP. Celle-ci voit que c'est l'adresse 192.22.35.43 (l'adresse virtuelle de notre machine) qui est en destination. Il va voir dans la table de routage, et là, il peut y avoir un problème... Soit une route spécifique existe pour cette adresse pour rediriger le paquet vers le réseau interne, soit ce n'est pas le cas, et il sera renvoyé sur l'interface externe du routeur, vu que l'adresse de destination appartient au même réseau que son interface externe 193.22.35.42 !! Pour que la NAT fonctionne, il faut donc qu'il y ait une route spécifique vers le réseau interne. Dans notre cas:

            Route add -p 193.22.35.43 mask 255.255.255.255 10.0.0.1

Ainsi, quand le routeur recevra un paquet à destination de l'adresse virtuelle 193.22.35.43, il le redirigera bien vers l'adresse réelle de la machine, 10.0.0.1.

Page 48: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

La NAT: "Network Address Translation" La NAT dynamique

Principe

La NAT dynamique est aussi appelée IP masquerading. Contrairement à la NAT statique, la NAT dynamique associe une seule adresse à n adresses (ou pour être plus précis, M adresses à N adresses, les adresses pour sortir étant choisies dans un pool).

Ainsi, on peut associer une adresse publique à n adresses privées et permettre ainsi à un grand nombre de machines ayant des adresses privées d'accéder à Internet !!

Par contre, nous verrons que cette méthode possède quelques inconvénients.

Contrairement à la NAT statique, le routeur qui effectue la NAT devra à la fois modifier les adresses IP mais aussi les ports TCP/UDP (ce que l'on appelle PAT, Port Address Translation).

Page 49: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

La NAT: "Network Address Translation" Le fonctionnement de la NAT dynamique

Le fonctionnement est un peu différent de celui de la NAT statique. Nous allons notamment voir pourquoi il faut faire de la PAT et non pas une simple traduction des adresses IP. Reprenons l'exemple précédent:

               Machine 1- 10.0.0.1/24                       |                       |       Interface interne routeur - 10.0.0.254/24               <ROUTEUR>       Interface externe routeur - 193.22.35.42/24                       |                       |               Internet

Cette fois, c'est l'adresse publique de l'interface externe du routeur 193.22.35.42 qui va être utilisée pour sortir. Ainsi, lorsque le paquet arrive à la machine de destination, www.ohmforce.com par exemple, celle-ci le renvoie vers l'adresse 193.22.35.42. Le routeur reçoit donc ce paquet et voit que l'adresse de destination est lui-même !!

Comment peut-il alors savoir si le paquet est pour lui ou une machine en interne ?

Page 50: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

La NAT: "Network Address Translation" C'est grâce aux ports TCP/UDP qu'il va pouvoir faire la différence. Ainsi, si une machine en interne fait une requête avec comme port TCP source 2356, le routeur pourra savoir que lorsqu'il recevra un paquet avec comme port destination 2356, il faut le rediriger vers la machine en interne qui a initialisé la connexion. Mais je vois déjà pointer les questions: "oui, mais si deux machines du réseau interne initialisent des connexions avec le même port TCP/UDP ? Comment fait-on pour savoir qui est qui ?

En fait, le routeur remplace le port TCP/UDP source par un nouveau qu'il choisit lui-même. Ainsi, comme c'est lui qui les choisit, il n'en choisira pas deux identiques, et pourra identifier chacune des connexions...

Si on reprend depuis le début le fonctionnement:La machine 10.0.0.1 veut se connecter au site www.ohmforce.com, elle envoie donc un paquet avec comme adresse source la sienne, 10.0.0.1, et comme port source un port quelconque supérieur à 1024, soit par exemple 5987. Le paquet arrive au routeur qui fait la NAT, il remplace donc l'adresse IP source par la sienne 193.22.35.42, et la PAT en remplaçant le port TCP/UDP source 5987 par un de son choix, 10000 par exemple. Il garde ces informations de correspondance bien au chaud dans une table NAT. Le paquet arrive a www.ohmforce.com qui le renvoie a 193.22.35.42. Le paquet arrive au routeur, il voit que l'adresse destination est lui-même, il regarde donc le port destination TCP/UDP qui est 10000. Il va regarder dans la table NAT pour avoir la correspondance, et il sait qu'il faut envoyer ce paquet à 10.0.0.1, tout en ayant modifié le port destination 10000 en 5987 qui est le port sur lequel 10.0.0.1 a initialisé la connexion.

Et voilà. On peut ainsi masquer autant de machines que l'on veut derrière une seule adresse publique !

Page 51: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

La NAT: "Network Address Translation"

Page 52: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

La NAT: "Network Address Translation" Avantages et inconvénients de la NAT dynamique

Comme nous l'avons vu, la NAT dynamique permet à des machines ayant des adresses privées d'accéder à Internet. Cependant, contrairement à la NAT statique, elle ne permet pas d'être joint par une machine de l'Internet. Effectivement, si la NAT dynamique marche, c'est parce que le routeur qui fait la NAT reçoit les informations de la machine en interne (Adresse IP, port TCP/UDP). Par contre, il n'aura aucune de ces informations si la connexion est initialisée de l'extérieur... Le paquet arrivera avec comme adresse de destination le routeur, et le routeur ne saura pas vers qui rediriger la requête en interne.  La NAT dynamique ne permet donc que de sortir sur Internet, et non pas d'être joignable. Elle est donc utile pour partager un accès Internet, mais pas pour rendre un serveur accessible. De plus, étant donné que l'on peut "cacher" un grand nombre de machines derrière une seule adresse publique, cela permet de répondre à notre problème de pénurie d'adresses.

Par contre, les machines n'étant pas accessibles de l'extérieur, cela donne un petit plus au niveau de la sécurité

Page 53: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

La NAT: "Network Address Translation" Problèmes liés à la NAT dynamique (ICMP)

La NAT dynamique demande l'utilisation des ports TCP/UDP, cependant, tous les protocoles utilisés sur un réseau n'utilisent pas obligatoirement ces ports, notamment les protocoles ICMP, PPTP, Netbios... Prenons par exemple le protocole ICMP. Se limitant à la couche 3 il n'utilise pas de ports TCP ou UDP. Il n'est donc pas possible de faire de la NAT dynamique de façon classique.

Une méthode spécifique doit être implémentée pour permettre la NAT du trafic ICMP. Pour cela, au lieu de se baser sur les ports TCP/UDP, on peut se baser sur l'identifiant ICMP présent dans l'en-tête du message ICMP. Ainsi, le mécanisme est exactement le même, mis à part que l'on utilise cet identifiant, plutôt que les ports TCP/UDP. Il faut donc implémenter spécifiquement ce type de NAT pour le protocole ICMP. Par ailleurs, certains paquets ICMP contiennent dans leur payload des informations concernant les datagrammes IP qui ont causé l'erreur. Le routeur faisant la NAT doit donc aussi modifier les informations contenues dans le payload pour que l'information apportée à la machine émettrice soit pertinente.

Page 54: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

La NAT: "Network Address Translation" Problèmes liés à la NAT dynamique (FTP)

Le protocole ftp a un fonctionnement un peu particulier. Il utilise deux connexions en parallèle. L'une pour le contrôle de la connexion, l'autre pour le transfert des données. Le ftp peut fonctionner selon deux modes différents, actif ou passif. En mode passif, pas de problème, les connexions sont initialisées de l'intérieur pour chacun de ces deux canaux. Par contre, pour le mode actif, la connexion de contrôle est d abord initialisée de l intérieur, et quand des données sont demandées, c'est le serveur qui initialise la connexion de données à partir de l'extérieur. Et comme nous le savons, il n'est pas possible d'initialiser de connexions à partir de l'extérieur du réseau avec de la NAT dynamique. Un autre problème du protocole ftp est qu'il contient des données se rapportant aux adresses des machines. Ainsi quand les adresses sont NATées, cela pose problème... Donc pour que le ftp puisse fonctionner, on est obligés d'utiliser un module qui soit capable de lire les informations contenues dans les données ftp. Pour faire cela, on utilise un proxy (Voir paragraphe 7) qui sera capable de suivre la connexion et de modifier les données ftp pour la rendre possible.

Dans un cas comme celui-ci, ce n'est plus un simple module NAT à ajouter, mais un proxy à part entière.

Page 55: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

La NAT: "Network Address Translation" Quand faire de la NAT statique ?

Nous avons vu que la NAT statique permettait de rendre disponible une machine sur Internet, mais qu'il fallait par contre une adresse IP pour que ce serveur soit joignable. Il est donc utile d'utiliser la NAT statique quand vous voulez rendre une application disponible sur Internet, comme un serveur web, mail ou un serveur FTP.

Quand faire de la NAT dynamique ?

La NAT dynamique permet d'une part de donner un accès à Internet à des machines possédant des adresses privées, et d'autre part d'apporter un petit plus en terme de sécurité. Elle est donc utile pour économiser les adresses IP, donner un accès à Internet à des machines qui n'ont pas besoin d'être joignables de l'extérieur (comme la plupart des utilisateurs). D'autre part, même quand on possède assez d'adresses IP, il est souvent préférable de faire de la NAT dynamique pour rendre les machines injoignables directement de l'extérieur. Par exemple, pour un usage personnel de partage de l'ADSL ou du câble, on utilise souvent la NAT dynamique pour partager sont accès, étant donné que les machines n'ont pas besoin d'être jointes de l'extérieur.

Puis-je combiner ces deux méthodes ?

Oui, et c'est même souvent la meilleure solution lorsque l'on a à la fois des machines offrant un service, et d'autres qui n'ont besoin que de se connecter à Internet. Ainsi, on économisera les adresses IP grâce aux machines NATées  dynamiquement, et on utilisera exactement le bon nombre d'adresses IP publiques dont on a besoin. Il est donc très intéressant de combiner ces deux méthodes.

Page 56: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

La NAT: "Network Address Translation" Comment rendre joignables les machines de mon réseau local alors que je n'ai qu'une seule adresse publique ?

Explication du problème

Nous avons vu que dans le cas de la NAT dynamique, les machines du réseau local ne pouvaient pas être jointes de l'extérieur. Cela est plutôt un plus pour la sécurité, mais si on doit offrir des services comme un serveur FTP ou web, ça devient problématique. C'est notamment le cas quand on possède un accès ADSL ou câble, une seule adresse publique vous est fournie, et il devient alors compliqué de rendre disponibles plusieurs serveurs du réseau local.

Une solution à ce problème: le port forwarding

Le port forwarding consiste à rediriger un paquet vers une machine précise en fonction du port de destination de ce paquet. Ainsi, lorsque l'on n'a qu'une seule adresse publique avec plusieurs machines derrière en adressage privé. On peut initialiser une connexion de l'extérieur vers l'une de ses machines (une seule par port TCP/UDP). Prenons l'exemple précédent et disons que la machine 10.0.0.1 possède un serveur FTP. Maintenant, on configure le routeur pour qu'il redirige les connexions arrivant sur le port 21 vers la machine 10.0.0.1. Et hop, on rend notre machine ayant une adresse privée disponible depuis l'extérieur !!

Ainsi, le port forwarding nous a permis de rendre nos machines du réseau local joignables d'Internet, même si l'on ne possède qu'une seule adresse IP publique !!

Page 57: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

La NAT: "Network Address Translation" Le port mapping, qu'est-ce que c'est ?

Le port mapping est un peu équivalent au port forwarding. Il consiste simplement à rediriger la requête sur un port différent que celui demandé. Par exemple, si on fait tourner un serveur web sur le réseau local sur le port 8080 et qu'on veut le rendre accessible pour les internautes. On redirige le port 80 vers notre serveur sur le port 8080. Ainsi, les clients externes auront l'impression de s'adresser à un serveur sur le port usuel pour le web, 80.

Les limites du port forwarding

Le port forwarding ne peut pas non plus répondre parfaitement à toutes les questions qu'amène la NAT dynamique. Ainsi, on a vu que l'on ne pouvait associer qu'une adresse de machine à un port donné. Si l'on possède plusieurs serveurs FTP en local et que l'on veut les rendre accessibles, il faudra trouver une autre astuce...

Page 58: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

La NAT: "Network Address Translation" Les proxys

Qu'est-ce qu'un proxy ?

Un proxy est un mandataire pour une application donnée. C'est à dire qu'il sert d'intermédiaire dans une connexion entre le client et le serveur pour relayer la requête qui est faite. Ainsi, le client s'adresse toujours au proxy, et c'est lui qui s'adresse ensuite au serveur. Une proxy fonctionne pour une application donnée, http, ftp, smtp, etc. Il peut donc modifier les informations à envoyer au serveur, ainsi que celles renvoyées par celui-ci. La contrepartie est qu'il faut un proxy par application. Cependant, beaucoup de proxys sont en fait des multi-proxys qui sont capables de comprendre la plupart des applications courantes.

Qu'est-ce qu'un proxy n'est pas ?

Un amalgame est souvent fait entre les fonctionnalités qu'on peut apporter à un proxy, et au proxy lui-même. Ainsi, on pense souvent qu'un proxy doit faire de la NAT, ou serveur de cache, mais ce ne sont que des fonctionnalités ajoutées. Effectivement, il est souvent utile d'ajouter des fonctions de cache à un proxy vu que c'est lui qui centralise l'accès au web. Ainsi, si 15 personnes demandent le même site web, il ne sera chargé qu'une fois puis gardé dans le cache du proxy. D'autre part, la NAT est elle aussi souvent indispensable  pour qu'un proxy fonctionne, vu qu'il est censé être un intermédiaire, il faudra qu'il modifie l'adresse source du paquet pour que la réponse passe par lui. Cependant, même si c'est ce qui est le plus souvent utilisé, ce n'est pas obligatoire. Si ces fonctionnalités sont souvent utiles et utilisées, ce n'est pas pour autant qu'il faut penser qu'elles sont synonymes de proxy.

Un proxy travaille au niveau 7 du modèle OSI, c'est à dire qu'il est capable d'interpréter et de modifier les informations du protocole sur lequel il travaille. Ainsi, il peut vérifier le contenu de ce qui est reçu de la part du serveur et en interdire ou modifier le contenu selon la politique choisie. L'utilisation d'un proxy pour des protocoles critiques est donc souvent utile si on veut avoir une bonne vision de ce qui se passe

Page 59: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

• In the following example, NAT is used to separate a segment of a private network, which uses registered addresses, from the rest of the network, which uses unregistered addresses. As shown in the following illustration, the segments of the private network that use unregistered addresses (network 10.0.0.0 and network 11.0.0.0) have an FTP server and database server that need to be accessible from the Internet.

• Workstations on network 10.0.0.0 should be able to access the rest of the private network and the Internet. • The segment of the private network that uses registered addresses (network 130.57.0.0) has a Web server, a Domain Name Server (DNS) server, and a Simple Mail

Transfer Protocol (SMTP) gateway server that should be accessible from the workstations on the rest of the private network.• In this example, the following registered IP addresses have been obtained from an Internet Service Provider (ISP) for NAT use: 130.57.100.1, 130.57.100.2,

130.57.100.3, 130.57.100.4, and 130.57.110.1. • These addresses are to be mapped to the FTP server, database server, and workstations on the 10.0.0.0 and 11.0.0.0 networks.

http://www.novell.com/documentation/nbm38/inst_admin/data/ae6ks1b.html

Page 60: Le routage Rappel: l’encapsulation Au cours de son passage par chacune des couches, des informations relatives à chacune d'entre elles sont ajoutées pour

For this example, an administrator must complete the following tasks:

• on the NAT router interface that has been assigned IP address 130.57.0.1.

• Enable Network Address Translation on the NAT router interface.

• Create a Network Address Translation table mapping the secondary IP addresses to the private hosts on networks 10.0.0.0 and 11.0.0.0.

• Create static (default) routes on the routers to enable routing between the private network segments if the routers have been configured to filter Routing Information Protocol (RIP) packets.