Le protocole RIP
Le plus ancien des protocoles de routage dynamique à vecteur de distance : versions, split-horizon, route poisoning, timers et configuration sur Cisco.
Introduction au protocole RIP
Le protocole RIP est l’un des plus vieux protocoles de routage et n’est que très rarement utilisé. Cependant, il est intéressant d’en parler afin de bien comprendre le principe du routage dynamique. Que peut-on dire du protocole de routage dynamique RIP :
RIP = Routing Information Protocol :
- Existe en trois versions :
- RIPv1 (Classful)
- RIPv2 (Classless)
- RIPng (IPv6)
- Protocole normalisé
- Protocole IGP
- Utilise le “Distance Vector” (Metric) (Maximum 15 sauts)
- Envoi à ses “neighboors” sa table de routage ENTIÈRE en utilisant le :
- Split-horizon
- Route-poisoning
- Envoie sa table de routage à ses neighboors périodiquement (toutes les 30 secondes).
Principe de fonctionnement
RIPv1 vs RIPv2 vs RIPng
RIPv1
- Classful.
- Envoie sa table de routage en unicast.
- Pas d’authentification.
- Pas de mise à jour automatique.
RIPv2
- Classless.
- Envoie sa table de routage en multicast.
- Authentification en Plain-text ou MD5 (Non sécurisée).
- Mise à jour automatique en cas de modification de topologie.
RIPng
- IPv6.
- Authentification en Plain-text ou MD5.
Le protocole de routage RIP est à utiliser uniquement si vous n’avez pas d’autres choix.
Privilégiez les protocoles de routage EIGRP (Cisco) et OSPF (protocole normalisé).
Si vous n’avez pas d’autres choix, utilisez le protocole RIP dans sa version 2 !!

RIPv1 vs RIPv2 en pratique
La commande router rip permet d’activer le protocole.
Par défaut, ce dernier est dans la version 1. Pour activer le RIPv2, il suffit de lui dire avec la commande version 2.
La commande network permet :
- de chercher de nouveaux neighboors sur ce réseau
- de déclarer ce réseau à nos neighboors
Exemple 1 : Tous nos réseaux utilisent des réseaux de Classe C.

Il faut donc spécifier tous nos réseaux en /24.
Exemple 2 : Tous nos réseaux sont sur une adresse de Classe A.

R2 est connecté à 3 réseaux :
- 10.0.2.0 /24
- 10.0.10.0 /24
- 10.0.20.0 /24
Ces 3 réseaux sont donc des réseaux Classless du réseau 10.0.0.0 /8
Avec RIPv1
R2(config)# router rip
R2(config-router)# network 10.0.0.0La commande network permet à R2 d’annoncer aux autres routeur RIP le réseau classe A 10.0.0.0 /8.
R2 va dire à tous ses voisins qu’il possède le réseau 10.0.0.0 /8
R1 et R3 ont la même configuration, il vont aussi dire à tous leurs voisins qu’ils possèdent le réseau 10.0.0.0 /8
Avec RIPv2
R2(config)# router rip
R2(config-router)# version 2
R2(config-router)# network 10.0.0.0La commande network permet à R2 d’annoncer aux autres routeurs RIP tous les réseaux compris dans le réseau de classe A 10.0.0.0 /8.
R2 possède 3 réseaux Classless dans le réseau 10.0.0.0 /8.
R2 va dire à tous ses voisins qu’il possède uniquement les réseaux 10.0.2.0/24, 10.0.10.0/24 et 10.0.20.0/24
Architecture de base


C = Connected
R = Appris par RIP
[120/1] = [Distance Administrative / Metric]
Mise à jour

Nos routeurs vont donc s’attendre à recevoir toutes les 30 secondes des nouvelles de leurs voisins. S’ils ne reçoivent rien, plusieurs timers vont s’activer :

Update :
- fréquence d’envoi des mises à jour
- 30 secondes par défaut
Invalid :
- considère l’itinéraire invalide au bout de X seconds et le place en mode Hold Down
- 180 secondes par défaut
Hold Down :
- ignore les mises à jour de routage concernant ce réseau (sauf si cette mise à jour a un Metric plus faible)
- 180 secondes par défaut
Flush :
- supprime la route de la table de routage
- 240 secondes par défaut
R1(config-router)# timers basic [update] [Invalid] [Hold Down] [Flush]
! Ce qui nous donne :
R1(config)# router rip
R1(config-router)# timers basic 30 180 180 240Réaction du protocole RIP en cas de panne
Exemple de panne RIP

Réaction du protocole RIP en cas de panne



En gros, nous avons notre bulle RIP poluée !
Comment pallier à ça ?
Problématique : Pourquoi R2 annonce à R3 un réseau qu’il lui est directement connecté ? Cela ne sert à rien et cela fou la m**** !
Solution : Voir le chapitre sur le Split horizon.
Problématique : R3 aurait pu annoncer aux autres qu’il avait perdu un réseau qui lui était directement connecté !
Solution : Voir le chapitre sur la Route Poisoning.
Le split-horizon
Dans un monde sans Split Horizon
Par défaut, un routeur utilisant un protocole de routage de type “Distance Vector” va envoyer sa table de routage complète à ses voisins.
L’exemple du dessous concerne le protocole RIP.

Nous pouvons voir que le Routeur R1 envoi (via un message RIP Update) l’intégralité de sa table de routage à ses voisins. Sauf que le Routeur R2 ne va pas prendre en considération les informations concernant les réseaux qui lui sont directement connecté.
Dans un monde avec Split Horizon
Split – Horizon ( horizon divisé ) fait en sorte de ne pas transmettre des informations inutiles à ses voisins. Ce qui permet de diminuer la bande passante utilisé pour tenir à jour dynamiquement nos tables de routages.

Les Réseau_20, Réseau_21 et Réseau_22 nous on était appris par le routeur R2
Le Réseau_1 est notre lien d’interconnexion.
Nous allons donc lui apprendre uniquement les réseaux qui ne lui sont pas directement raccordé !
Le Split Horizon est activé par défaut.
Il peut poser problème si nous utilisons du Frame Relay.
Configuration du split-horizon
EIGRP
Router(config)# interface FastEthernet 0/1
Router(config-if)# no ip split-horizon eigrp XRIP
Router(config)# interface FastEthernet 0/1
Router(config-if)# no ip split-horizonLe route poisoning
Présentation
Le Route Poisoning est un mécanisme actif par défaut.
Reprenons notre architecture vue dans l’article Split-Horizon :

La question à se poser est : Que se passe-t-il en cas de panne réseau sur un de nos réseaux ?
Mise en situation
Imaginons que les Réseau_10 et Réseau_11 ne sont plus en état de fonctionner.
Le routeur R1 va :
1 / Enlever de sa table de routage les Réseau_10 et Réseau_11 précédemment “Connected”
2 / Envoyer un message à ses voisins en leurs signalant que ces deux réseaux ont un metric infini
3 / Le routeur R2 va donc supprimer ses deux réseau de sa table de routage

Pour le protocole RIP, un metric infini à une valeur de 16
Pour le protocole EIGRP, un metric infini à une valeur de 4 294 967 295 (2^32 -1).
Configuration
Le Route Poisoning est un mécanisme actif par défaut et ne peut être désactivé.
Conclusion
Le “Route poisoning” permet donc de supprimer les réseaux indisponible de nos tables de routage. S’ils ne possèdent pas de route par défaut, il vont pouvoir dropper directement les paquets en destination d’un réseau non disponible.
Configuration du protocole RIP
Configuration du RIPv2
R1(config)# router rip
R1(config-router)# version 2
R1(config-router)# network 10.0.0.0Configuration du RIPng (IPv6)

R1(config)# ipv6 unicast-routing
R1(config)# ipv6 router rip FINGER_RIP_NG
R1(config-router)# exit
R1(config)# interface FastEthernet 0/0
R1(config-if)# ipv6 address 2001:DB8:0:1::1/64
R1(config-if)# ipv6 rip FINGER_RIP_NG enable
R1(config-if)# exitR2(config)# ipv6 unicast-routing
R2(config)# ipv6 router rip FINGER_RIP_NG
R2(config-router)# exit
R2(config)# interface FastEthernet 0/0
R2(config-if)# ipv6 address 2001:DB8:0:1::2/64
R2(config-if)# ipv6 rip FINGER_RIP_NG enable
R2(config-if)# exitipv6 unicast-routing = Active le routage pour le protocole ipv6.ipv6 router rip FINGER_RIP_NG = Active le protocole RIPng en globalitée.ipv6 rip FINGER_RIP_NG enable = Active le protocole RIPng sur l’interface, il cherchera donc des Neighbor sur ce réseau et diffusera ce réseau au travers de la bulle RIPng.
Troubleshooting
! Voir l'intégralité de la table de routage
RIPv2 = R1# show ip route
RIPng = R1# show ipv6 route
! Voir uniquement les routes RIP de la table de routage
RIPv2 = R1# show ip route rip
RIPng = R1# show ipv6 route rip
! Voir une route précise
RIPv2 = R1# show ip route [subnet] [mask]
RIPng = R1# show ipv6 route [prefix] [length]
! Afficher les interfaces qui participent au RIP
RIPv2 = R1# show ip protocols
RIPng = R1# show ipv6 rip
! Afficher les timers RIP
RIPv2 = R1# show ip protocols
RIPng = R1# show ipv6 rip next-hops
! Afficher la liste des sources d'information RIP
RIPv2 = R1# show ip protocols
RIPng = R1# show ipv6 route rip
! Debug
RIPv2 = R1# debug ip rip
RIPng = R1# debug ipv6 ripQuestions fréquentes sur le protocole RIP
Qu’est-ce que le protocole RIP ?
RIP (Routing Information Protocol) est un protocole de routage dynamique à vecteur de distance. Il permet aux routeurs d’échanger automatiquement leurs tables de routage pour apprendre les chemins vers les réseaux distants, en utilisant le nombre de sauts (hops) comme métrique.
Comment fonctionne le routage RIP ?
Chaque routeur RIP diffuse périodiquement (toutes les 30 secondes) sa table de routage à ses voisins. La métrique est le nombre de sauts, limitée à 15 : au-delà (16), le réseau est considéré comme inaccessible.
Quelle différence entre RIPv1 et RIPv2 ?
RIPv1 est classful (ne transporte pas le masque de sous-réseau) et utilise le broadcast. RIPv2 est classless (supporte VLSM/CIDR), utilise le multicast 224.0.0.9 et permet l’authentification, ce qui le rend bien plus adapté aux réseaux modernes.
Qu’est-ce que le split-horizon ?
Le split-horizon est un mécanisme anti-boucle : un routeur n’annonce pas une route via l’interface par laquelle il l’a apprise. Cela évite que deux routeurs se renvoient mutuellement une route devenue invalide.
Comment configurer RIP sur un routeur Cisco ?
En mode configuration globale : router rip, puis version 2 pour activer RIPv2, et network [adresse] pour annoncer les réseaux connectés. On vérifie ensuite avec show ip route et show ip protocols.
