Le protocole RIP

Chapitre 1

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 30secondes).
Chapitre 2

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 vs RIPng

RIPv1 vs RIPv2 vs RIPng

 

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.

RIP - Exemple 01
RIP – Exemple 01

Il faut donc spécifier tous nos réseaux en /24

 

Exemple 2 :

Tous nos réseaux sont sur une adresse de Classe A.

RIP - Exemple 02
RIP – Exemple 02

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.0

La 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

Notre routage RIP va donc être inutilisable vu que tout le monde annonce le même réseau.

Avec RIPv2

R2(config)# router rip
R2(config-router)# version 2
R2(config-router)# network 10.0.0.0

La 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/2410.0.10.0/24 et 10.0.20.0/24

Architecture de base

RIP - Architecture de base

RIP – Architecture de base

RIP - Table de routage
RIP – Table de routage

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

Mise à jour

RIP Update

RIP Update

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 :

Timers RIP

Timers RIP

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 240
Chapitre 3

Réaction du protocole RIP en cas de panne

Exemple de panne RIP

RIP - Le réseau 192.168.3.0 est injoignable

RIP – Le réseau 192.168.3.0 est injoignable

Réaction du protocole RIP en cas de panne

RIP - R3 supprime le réseau 192.168.3.0 de sa table de routage

RIP – R3 supprime le réseau 192.168.3.0 de sa table de routage

RIP - R2 envoi une mise a jour et R3 remet le réseau 192.168.3.0 dans sa table de routage
RIP – R2 envoie une mise à jour et R3 remet le réseau 192.168.3.0 dans sa table de routage avec un Metric de 2
RIP - Notre bulle RIP est pollué
Le routeur R3 va informer R2 que maintenant, pour joindre le réseau 192.168.3.0, il a un Metric de 2.
R2 va donc mettre à jour son Metric pour le mettre à 3…

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.

Chapitre 4

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.

Sans Split Horizon
Sans Split Horizon

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.

Avec Split Horizon
Avec Split Horizon

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 X

RIP


Router(config)# interface FastEthernet 0/1
Router(config-if)# no ip split-horizon
CHAPITRE 5

Le route poisoning

Présentation

Le Route Poisoning est un mécanisme actif par défaut.

Reprenons notre architecture vue dans l’article Split-Horizon :

Route Poisoning - Schéma
Route Poisoning – Schéma

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

Route poisoning
Route poisoning

Pour le protocole RIP , un metric infini à une valeur de 16
Pour le protocole EIGRP , un metric infini à une valeur de4 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.

Chapitre 6

Configuration du protocole RIP

Configuration du RIPv2

R1(config)# router rip 
R1(config-router)# version 2
R1(config-router)# network 10.0.0.0

Configuration du RIPng (IPv6)

Architecture de base
Architecture de base
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)# exit
R2(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)# exit

ipv6 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.
[/membership]

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 rip