RIPng
Un article de IPv6.
Routage | Table des matières | ISIS |
Les algorithmes appelés "distance vector", sont utilisés par le protocole de routage RIPv2 (RFC 2453). Ils sont basés sur l'algorithme de Bellman-Ford et figurent parmi les premiers algorithmes de routage interne utilisés dans l'Internet.
Les routeurs diffusent leurs tables de routage sur les liens auxquels ils sont connectés. Les autres routeurs modifient une route dans leur table si la métrique reçue (dans ce cas le nombre de routeurs à traverser pour atteindre une destination) est plus petite que celle déjà stockée dans la table. Si une annonce de route n'est pas présente dans la table, le routeur la rajoute. Ces modifications sont à leur tour diffusées sur les autres réseaux auxquels sont connectés les routeurs. Elles se propagent donc sur l'ensemble du réseau à l'intérieur du système autonome. On montre que cet algorithme converge et qu'en condition stable, aucune boucle n'est créée sur le réseau (c'est-à-dire qu'un paquet ne sera pas transmis indéfiniment de routeur en routeur sans jamais pouvoir atteindre sa destination).
Les tables sont émises périodiquement. Si un routeur tombe en panne ou si le lien est coupé, les autres routeurs ne recevant plus l'information suppriment l'entrée correspondante de leur table de routage.
RIPng est le premier protocole de routage dynamique proposé pour IPv6 (RFC 2080) RIPng est une simple extension à IPv6 du protocole RIPv2 d'IPv4. Il en hérite les mêmes limitations d'utilisation (maximum de 15 sauts par exemple).
Fonctionnement
Le format générique des paquets RIPng, donné figure Format d'un paquet RIPng, est très proche de celui des paquets du protocole RIPv2. Seule la fonction d'authentification a disparu. Elle est en effet inutile car RIPng peut s'appuyer sur les mécanismes de sécurité IPSec disponibles en IPv6. La structure d'une information de routage est donnée par la figure Format d'un champ "Entrée" d'un paquet RIPng.. Le nombre d'informations de routage contenues dans un paquet RIPng dépend directement du MTU des liens utilisés. Si RIPng doit annoncer un grand nombre de réseaux, plusieurs paquets RIPng seront nécessaires.
Le format des messages RIPng est le suivant :
- Le champ version est aujourd'hui défini à la valeur 1.
- Le champ commande contient :
- 1 : pour une requête de table de routage.
- 2 : pour une réponse à une requête ou une émission périodique.
- Les champs préfixe et longueur de préfixe décrivent les réseaux annoncés.
- Le champ métrique comptabilise le nombre de routeurs traversés.
Pour résoudre les problèmes de convergence ("comptage jusqu'à l'infini"), la valeur maximale de métrique ("infini") est 16.
Cette valeur est largement suffisante pour le domaine d'application du protocole (le système autonome).
Le champ métrique peut donc prendre toutes les valeurs comprises entre 0 et 16.
Si le champ métrique d'une entrée vaut 0xFF, (cf. figure Format d'un champ "Entrée" d'un paquet RIPng.) le champ préfixe de cette entrée donne l'adresse d'un routeur (prochain saut). Une telle entrée indique que les destinations des entrées suivantes sont accessibles par le routeur explicitement indiqué, et non par celui envoyant le paquet RIPng (utilisation en mode "proxy"). Dans ce cas, les champs "marque de routage" et "longueur du préfixe" sont mis à 0.
Dans RIPv2, cette possibilité était indiquée dans chaque information de routage. Vue la longueur des adresses IPv6, dans RIPng l'indication du prochain saut est valable pour toutes les routes qui suivent jusqu'à la fin du paquet ou jusqu'à la prochaine entrée de ce type. Ainsi, bien que les adresses soient quatre fois plus grandes qu'en IPv4, la taille des informations de routage est la même que dans RIPv2.
Les paquets RIPng sont émis vers l'adresse de multicast all-rip-router FF02::9 et encapsulés dans un paquet UDP avec le numéro de port 521.
Exemples
Voici la trace des paquets RIPng échangés sur un Ethernet reliant 3 routeurs :
IPv6 Version : 6 Classe : 00 Label : 00000 Longueur : 252 octets (0x00fc) Protocole : 17 (0x11, UDP) Nombre de sauts : 255 (0xff) Source : fe80::a00:20ff:fe0c:7a34 Desti. : ff02::09 (ALL-RIP-ON-LINK) UDP Src. port: 521 (0x0209, ripng) Dst. port: 521 (0x0209, ripng) Lg : 252 octets (0x00fc) Checksum : 0x249d RIP Commande : 2 (Réponse/émission) Version : 1 Entrées : 3ffe:302:12:3::/80(1) 3ffe:302:12:2::/64(1) 3ffe:302:11:1::/64(16) 3ffe:302:12:4::/64(16) 3ffe:301:2::/48(16) 3ffe:301:3::/48(16) 3ffe:301:5::/48(16) 3ffe:302:21::/48(16) 3ffe:306:1051::/48(16) 3ffe:303::/32(16) 3ffe:305::/32(16) ::/0(16) 0000: 60 00 00 00 00 fc 11 ff fe 80 00 00 00 00 00 00 0010: 0a 00 20 ff fe 0c 7a 34 ff 02 00 00 00 00 00 00 0020: 00 00 00 00 00 00 00 09|02 09 02 09 00 fc 24 9d| 0030: 02 01 00 00|3f fe 03 02 00 12 00 03 00 00 00 00 0040: 00 00 00 00 00 00 50 01|3f fe 03 02 00 12 00 02 0050: 00 00 00 00 00 00 00 00 00 00 40 01|3f fe 03 02 0060: 00 11 00 01 00 00 00 00 00 00 00 00 00 00 40 10| 0070: 3f fe 03 02 00 12 00 04 00 00 00 00 00 00 00 00 0080: 00 00 40 10|3f fe 03 01 00 02 00 00 00 00 00 00 0090: 00 00 00 00 00 00 30 10|3f fe 03 01 00 03 00 00 00a0: 00 00 00 00 00 00 00 00 00 00 30 10|3f fe 03 01 00b0: 00 05 00 00 00 00 00 00 00 00 00 00 00 00 30 10| 00c0: 3f fe 03 02 00 21 00 00 00 00 00 00 00 00 00 00 00d0: 00 00 30 10|3f fe 03 06 10 51 00 00 00 00 00 00 00e0: 00 00 00 00 00 00 30 10|3f fe 03 03 00 00 00 00 00f0: 00 00 00 00 00 00 00 00 00 00 20 10|3f fe 03 05 0100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20 10| 0110: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0120: 00 00 00 10
Source : fe80::a00:20ff:fe75:24ea Desti. : ff02::09 (ALL-RIP-ON-LINK) UDP Src. port: 521 (0x0209, ripng) Dst. port: 521 (0x0209, ripng) RIP Commande : 2 (Réponse/émission) Version : 1 Entrées : 3ffe:302:12:3::/80(16) 3ffe:302:12:2::/64(1) 3ffe:302:11:1::/64(1) 3ffe:302:12:4::/64(16) 3ffe:301:2::/48(2) 3ffe:301:3::/48(2) 3ffe:301:5::/48(2) 3ffe:302:21::/48(2) 3ffe:306:1051::/48(2) 3ffe:303::/32(2) 3ffe:305::/32(2) ::/0(2)
Source : fe80::200:c0ff:fe68:ece7 Desti. : ff02::09 (ALL-RIP-ON-LINK) UDP Src. port: 521 (0x0209, ripng) Dst. port: 521 (0x0209, ripng) RIP Commande : 2 (Réponse/émission) Version : 1 Entrées : 3ffe:302:12:3::/80(16) 3ffe:302:12:4::/64(1) 3ffe:302:12:2::/64(1) 3ffe:302:11:1::/64(16) 3ffe:301:2::/48(16) 3ffe:301:3::/48(16) 3ffe:301:5::/48(16) 3ffe:302:21::/48(16) 3ffe:306:1051::/48(16) 3ffe:303::/32(16) 3ffe:305::/32(16) ::/0(16)
et ainsi de suite toutes les 30 secondes environ.
On remarquera les adresses source (lien-local) et destination (multicast portée lien), la métrique 16 associée à un préfixe si le routeur n'est pas le meilleur sur le câble (méthode dite Poisonning Reverse), et l'utilisation du préfixe ::/0 pour annoncer une route par défaut.
Routage | Table des matières | ISIS |