# Routing Information Protocol

Routing Information Protocol (RIP, protocole d'information de routage) est un protocole de routage IP de type Vector Distance (à vecteur de distances) s'appuyant sur l'algorithme de détermination des routes décentralisé Bellman-Ford. Il permet à chaque routeur de communiquer avec les routeurs voisins. La métrique utilisée est la distance qui sépare un routeur d'un réseau IP déterminé quant au nombre de sauts (ou « hops » en anglais).
Pour chaque réseau IP connu, chaque routeur conserve l'adresse du routeur voisin dont la métrique est la plus petite. Ces meilleures routes sont diffusées toutes les 30 secondes.

## Limitations de RIP

* Pour éviter les boucles de routage, le nombre de sauts est limité à 15. Au-delà, les paquets sont supprimés.
* RIP ne prend en compte que la distance entre deux machines en ce qui concerne le saut, mais il ne considère pas l'état de la liaison afin de choisir la meilleure bande passante possible. Si l'on considère un réseau composé de trois routeurs A, B et C, reliés en triangle, RIP préférera passer par la liaison directe A-B même si la bande passante n'est que de 57 kbit/s alors qu'elle est de 10 Gbit/s entre A et C et C et B.
Ces limitations sont corrigées dans le protocole OSPF.

## Versions

Il existe actuellement trois versions de RIP : RIPv1 et RIPv2 (pour IPv4) et RIPng (pour IPv6).

## RIPv1

RIPv1 est défini dans la RFC 1058. Cette version ne prend pas en charge les masques de sous-réseau de longueur variable (on dit qu'il est classful) ni l'authentification des routeurs. Les routes sont envoyées en broadcast.

## RIPv2

RIPv2 est défini dans la RFC 2453. Cette version, développée en 1993, a été conçue pour permettre au protocole de répondre aux contraintes des réseaux actuels (découpages des réseaux IP en sous-réseaux, authentification par mot de passe, …). Avec cette version, les routes sont envoyées à l'adresse multicast 224.0.0.9.
Un message RIP comprend un en-tête suivi de 1 à 25 enregistrement(s) de route (24 si un message d'authentification est requis).
| Bits 0 - 7 | Bits 0 - 7 | Bits 0 - 7 | Bits 0 - 7 | Bits 0 - 7 | Bits 0 - 7 | Bits 0 - 7 | Bits 0 - 7 | 8 - 15 | 8 - 15 | 8 - 15 | 8 - 15 | 8 - 15 | 8 - 15 | 8 - 15 | 8 - 15 | 16 - 23 | 16 - 23 | 16 - 23 | 16 - 23 | 16 - 23 | 16 - 23 | 16 - 23 | 16 - 23 | 24 - 31 | 24 - 31 | 24 - 31 | 24 - 31 | 24 - 31 | 24 - 31 | 24 - 31 | 24 - 31 |
| commande | commande | commande | commande | commande | commande | commande | commande | version | version | version | version | version | version | version | version | domaine de routage | domaine de routage | domaine de routage | domaine de routage | domaine de routage | domaine de routage | domaine de routage | domaine de routage | domaine de routage | domaine de routage | domaine de routage | domaine de routage | domaine de routage | domaine de routage | domaine de routage | domaine de routage |
| identifieur de famille d'adresse | identifieur de famille d'adresse | identifieur de famille d'adresse | identifieur de famille d'adresse | identifieur de famille d'adresse | identifieur de famille d'adresse | identifieur de famille d'adresse | identifieur de famille d'adresse | identifieur de famille d'adresse | identifieur de famille d'adresse | identifieur de famille d'adresse | identifieur de famille d'adresse | identifieur de famille d'adresse | identifieur de famille d'adresse | identifieur de famille d'adresse | identifieur de famille d'adresse | marqueur de route | marqueur de route | marqueur de route | marqueur de route | marqueur de route | marqueur de route | marqueur de route | marqueur de route | marqueur de route | marqueur de route | marqueur de route | marqueur de route | marqueur de route | marqueur de route | marqueur de route | marqueur de route |
| adresse IP ||||||||||||||||||||||||||||||||
| masque de sous réseau ||||||||||||||||||||||||||||||||
| Données ||||||||||||||||||||||||||||||||
* Commande : requête/réponse ou diffusion.
* Domaine de routage : permet de découper le réseau en sous-réseaux logiques.
* Marqueur de route : marqueur qui peut être utilisé pour distinguer les routes apprises en interne par RIP de celles apprises par d’autres protocoles (par exemple OSPF).
* Métrique : distance de la route compris entre 1 et 15 (16 étant l'infini).
* Version : indique la version du protocole utilisé, 1 ou 2.