En Une :

Routage dynamique RIPv2

Le routage RIPv2 est revenu dans les sujets de certification ICND1 et CCNA : "Configurer, vérifier et dépanner RIPv2 pour IPv4 (sauf authentification, filtrage, summarization manuelle, redistribution)". En voici la synthèse illustrée avec deux topologies de lab.

1. Fondamentaux sur le protocole RIPv2

1.1. Protocole à vecteur de distance

Un protocole de routage à vecteur de distance est celui qui utilise un algorithme de routage qui additionne les distances pour trouver les meilleures routes (Bellman-Ford).

  • Les routeurs envoient l'entièreté de leur table de routage aux voisins.
  • Ces protocoles sont sensibles aux boucles de routage.
  • Dans ce type de protocole, aucun routeur ne remplit de fonction particulière. On parlera de connaissance "plate" de l'interréseau ou de routage non-hiérarchique.
  • Ils convergent lentement.

On citera RIP et IGRP (propriétaire obsolète) comme étant représentatifs. EIGRP est aussi un protocole à vecteur de distance avancé entièrement optimisé par Cisco Systems qui ne présente pas ces désavantages.

1.2. Routing Information Protocol

RIP est un protocole de routage intérieur à vecteur de distance de l’IETF.

Il est disponible en trois versions :

  • RIPv1 (1988) : broadcast, classfull, UDP520
  • RIPv2 (1993-1998) : multicast 224.0.0.9, authentification, classless, UDP520
  • RIPng : Support IPv6, authentification IPSEC, multicast FF02::9, UDP 521

1.3. Mises à jour RIP

  • Les mises à jour s'effectuent de routeurs en routeurs.
  • Les mises à jour s'effectuent périodiquement, toutes les 30 secondes.
  • Les mises à jour consistent en des envois des tables de routage entières.
  • Les mises à jour sont envoyées à l'adresse de diffusion (broadcast) 255.255.255.255 en RIPv1
  • Les mises à jour sont envoyées à l'adresse Multicast 224.0.0.9 en RIPv2

1.4. Métrique RIP

RIP utilise l’algorithme Bellman-Ford pour calculer les meilleures routes

  • La distance administrative de RIP est de 120 par défaut.
  • La métrique est basée sur le nombre de sauts.
  • La métrique maximale est 15.
  • La métrique infinie est 16. Empoisonne une route.

1.5. Vecteur de distance

Dans cet exemple, R1 et R2 s'échangent leur premier paquet RIPv2. Chacun ajoute une distance de +1 à la métrique du nouveau réseau qu’il annonce.

1.6. Boucles de routage (routing loops)

Une boucle de routage est une route diffusée pour des paquets qui n'atteignent jamais leur destination : ils passent de façon répétée par la même série de noeuds du réseau. Ce phénomène est dû à une convergence lente des informations de routage. Un routeur éloigné fait croire à des routeurs (bien informés d'une route modifiée) qu'il dispose d'une nouvelle route (à coût plus élevé) vers ce réseau.

Solutions aux boucles de routage

  • Définir un nombre maximum de sauts (15), métrique infinie (16)
  • Route poisoning : lorsqu'une route vers un réseau tombe, le réseau est immédiatement averti d'une métrique de distance infinie (le maximum de sauts +1), plus aucune incrémentation n'est possible.
  • Split horizon : puisque toutes les interfaces d'un routeur sont censées envoyer des mises à jour de routage, le mécanisme Split horizon empêche à un routeur d'envoyer des informations (de métrique plus élevée) à travers l'interface de laquelle elle a appris l'information.
  • Triggered Update : Une mise à jour est envoyée immédiatement plutôt qu'avant l'expiration du compteur lorsqu’une route est tombée. Utilisée avec la mesure de métrique infinie, cette solution assure que tous les routeurs ont la connaissance des routes tombées avant que n'importe quel compteur expire.
  • Split Horizon avec Poison Reverse : le protocole de routage avertit de toutes les routes sortant d'une interface, mais celles qui ont été apprises d'une mise à jour plus récente venant dans cette interface sont marquées d'une métrique de distance infinie.

Compteurs (timers) RIP

  • Update : délai des mises à jour, 30 s. par défaut
  • Invalid : une route est considérée comme invalide après un certain délai sans annonce. Elle est alors marquée à une métrique infinie. 180 s. par défaut.
  • Flush : délai après lequel une route est retirée de la table de routage. 240 s. par défaut (toujours supérieur à Invalid)
  • Holddown : délai d’attente après lequel une route à métrique plus élevée est prise en compte. 180 s. par défaut. Ce compteur n’est pas décrit dans le protocole.

Compteur de retenue

Compteur de retenue (Hold Down Timer), propriétaire Cisco Systems.

Après avoir retenu qu'une route vers un réseau est tombée, le routeur attend une certaine période de temps avant de croire n'importe quelle autre information de routage à propos de ce réseau. Si l'information concernant une route tombée redevenant accessible est apprise du même voisin endéans le délai, la route est réinscrite dans la table de routage.

Si l'information d'une route de nouveau accessible provient d'un autre voisin avec une meilleure métrique, la route est réinscrite dans la table de routage et le compteur est arrêté.

compteurs_rip

Source : Ayi Nedjimi

1.7. Caractéristiques RIPv1/RIPv2

RIPv1 RIPv2
Méthode et algorithme Vecteur de distance, Bellman-Ford
Métrique, métrique infinie Nombre de sauts, 16
Distance administrative 120
Compteurs update 30 sec, invalid 180 sec, holddown 180 sec, flush 240 sec
Encapsulation UDP 520
Anti-bouclage Split-horizon with poison reverse, triggered updates
Répartition de charge égale (4 par défaut)
Type Classful
Nombre de routes par MàJ 25
Adresse de destination 255.255.255.255
Authentification Non
RFC RFC1058

1.8. Cinq différences protocolaires entre RIPv1 et RIPv2

  • Transmission d'un masque de sous-réseau avec les routes. Cette fonctionnalité permet à RIPv2 de supporter le VLSM (masque à longueur variable).
  • Authentification. L'authentification d'une mise à jour de routage peut se faire en clair ou de manière cryptée (MD5). La première est prévue dans la RFC et l'autre a été ajoutée par Cisco
  • Inclusion l’adresse IP du prochain saut dans la mise à jour de routage. Un routeur peut annoncer une route mais diriger tous les autres routeurs à l'écoute vers un différent routeur vers un même sous-réseau. Cette fonction est uniquement utilisée lorsqu'un routeur dispose d'une meilleure route.
  • Emploi d'indicateurs de routes externes (route tag). RIP peut transmettre des informations sur les routes découvertes par le biais d'une source externe et redistribuées dans RIP
  • Envoi de mises à jour de routage à une adresse Multicast. Au lieu d'envoyer des mises à jour vers l'adresse de diffusion (broadcast) 255.255.255.255, RIP les envoie vers l'adresse de Multicast 224.0.0.9 . Cette fonctionnalité réduit la charge de traitement requise sur les hôtes qui ne prennent aucune des deux versions de RIP en charge au sein d'un même réseau.

1.9. Champs RIPv1/RIPv2

ripv1-ripv2

https://www.cloudshark.org/captures/0d0fb368dfb9

1.10. Paquet RIPv2

Mise à jour de R1 sur son réseau 192.168.1.0/24.

paquet_ripv2

1.11. Limites de RIP

La croissance rapide et l'expansion des réseaux a poussé RIP à ses limites. RIP comporte certaines restrictions qui peuvent causer des problèmes dans les réseaux larges.

RIP a une limite de 15 sauts. Un réseau qui comporte plus de 15 sauts (15 routeurs) est considéré comme inaccessible.

RIPv1 ne supporte pas les masques à longueur variable (VLSM : Variable Length Subnet Mask). Compte tenu du manque d'adresses IP et de sa flexibilité, le VLSM comporte des avantages considérables dans les plans d'adressage.

L'envoi périodique de l'entièreté des tables de routage en diffusion (broadcast) ou Multicast consomme une grande quantité de bande passante.
RIP converge plus lentement qu'OSPF. Dans les très grands réseaux, la convergence doit être rapide.

RIP ne prend pas en compte les paramètres de délai et de coût. Les décisions de routage sont uniquement basées sur le nombre de sauts quelque soit la bande passante ou les délais des lignes .

Les réseaux RIP sont des réseaux plats. Il n’y a pas de concept d'area (zone) ou de boundarie (frontière). Avec l'introduction du routage sans classe (classless) et l'utilisation intelligente de l'agrégation et de la summarization des routes, les réseaux RIP ont moins de succès.

RIP est sensible aux boucles de routage.

Mais il reste néanmoins facile à déployer et léger et, surtout dans le cadre qui nous occupe, utile au bon apprentissage des principes des protocoles de routage.

Certaines améliorations ont été introduites dans une version nouvelle de RIP appelée RIPv2. RIPv2 supporte le VLSM, permet l'authentification et les mises à jour de routage multicast. Toutefois, ces améliorations restent faibles car RIPv2 est encore limité par le nombre de sauts et une convergence lente qui conviennent mal aux réseaux étendus.

2. Mise en oeuvre de RIPv2

2.1. Topologie RIPv2 VLSM

Le réseau 192.168.1.0/24 a été découpé en 6 sous-réseaux.

Initialisation de R1


hostname R1
!
interface GigabitEthernet0/0
 ip address 192.168.1.1 255.255.255.128
 no shutdown
!
interface GigabitEthernet0/2
 ip address 192.168.1.225 255.255.255.252
 no shutdown
!
interface GigabitEthernet0/3
 ip address 192.168.1.229 255.255.255.252
 no shutdown
!
ip dhcp pool LAN_R1
 network 192.168.1.0 255.255.255.128
 default-router 192.168.1.1
!
end

Initialisation de R2

hostname R2
!
interface GigabitEthernet0/0
 ip address 192.168.1.129 255.255.255.192
 no shutdown
!
interface GigabitEthernet0/1
 ip address 192.168.1.226 255.255.255.252
 no shutdown
!
interface GigabitEthernet0/3
 ip address 192.168.1.233 255.255.255.252
 no shutdown
!
ip dhcp pool LAN_R2
 network 192.168.1.128 255.255.255.192
 default-router 192.168.1.129
!
end

Initialisation de R3

hostname R3
!
interface GigabitEthernet0/0
 ip address 192.168.1.193 255.255.255.224
 no shutdown
!
interface GigabitEthernet0/1
 ip address 192.168.1.230 255.255.255.252
 no shutdown
!
interface GigabitEthernet0/2
 ip address 192.168.1.234 255.255.255.252
 no shutdown
!
ip dhcp pool LAN_R3
 network 192.168.1.192 255.255.255.224
 default-router 192.168.1.193
!
end

2.2. Activation du routage RIPv2

Pour activer RIPv2,

  • on se place dans le mode de configuration du routage RIP
  • on active RIP version 2,
  • on déclare les réseaux (les interfaces qui participent au routage)
  • on empêche l’envoi de mises-à-jour sur l’interface LAN

Configuration RIPv2

Sur chaque routeur R1, R2 et R3, la configuration est identique :

router rip
 version 2
 network 192.168.1.0
 passive-interface G0/0

Commande router

La commande router rip permet d’accéder au mode de configuration de RIP. Par défaut, il envoie ses MàJ en RIPv1 mais est capable d’interpréter des messages RIPv2 :

# show ip protocols
  Default version control: send version 1, receive any version
    Interface             Send  Recv  Triggered RIP  Key-chain
    GigabitEthernet0/1    1     1 2
    GigabitEthernet0/2    1     1 2

La commande version 2

La commande version 2 active seulement les messages dans cette version sur les interfaces concernées :

# show ip protocols
  Default version control: send version 2, receive version 2
    Interface             Send  Recv  Triggered RIP  Key-chain
    GigabitEthernet0/1    2     2
    GigabitEthernet0/2    2     2

Effets de la commande network

La commande network dispose de deux effets :

  • Elle fait de la publicité, des annonces pour les segments réseaux concernés
  • Elle active l’émission et la réception de messages de protocole de routage sur les interfaces adressées dans ces réseaux

Réseaux à déclarer

Il faut déclarer tous les réseaux qui doivent participer au routage, soit, par exemple sur R1 :

  • GigabitEthernet0/0 : 192.168.1.0/25
  • GigabitEthernet0/1 : 192.168.1.224/30
  • GigabitEthernet0/2 : 192.168.1.228/30

Mais comme RIP est d’abord un protocole classful, on déclare uniquement le réseau de classe C, sans masque :

router rip
 version 2
 network 192.168.1.0

Toutes les interfaces dans le réseau de la classe déclarée participent au routage. Cette commande network est également utilisée de manière plus fine en OPSFv2 et en EIGRP. On la retrouvera aussi dans la configuration du protocole BGP.

Interfaces passives

Parce que la commande network active la capacité des interfaces à envoyer des mises-à-jour, l’interface qui connecte le LAN (G0/0) envoie inutilement des messages toutes les 30 secondes en 224.0.0.9.

La commande passive-interface suivie du nom de l’interface désactive ce comportement polluant.

Authentification

On notera que si la commande passive-interface désactive l’envoi de messages de routage, l’interface peut toujours en accepter de manière crédule, même venant d’un LAN.

Pour sécuriser le trafic en entrée des interfaces, on acceptera uniquement le trafic de confiance en activant l’authentification des informations de routage.

2.3. Vérification de la configuration

On vérifiera le déploiement de RIPv2 avec sur les routeurs :

show ip protocols
debug ip rip
show ip route

et sur les hôtes terminaux pour vérifier la connectivité de bout en bout :

ping
traceroute/tracert

show ip route

R1# show ip protocols
Routing Protocol is "rip"
  Outgoing update filter list for all interfaces is not set
  Incoming update filter list for all interfaces is not set
  Sending updates every 30 seconds, next due in 21 seconds
  Invalid after 180 seconds, hold down 180, flushed after 240
  Redistributing: rip
  Default version control: send version 2, receive version 2
    Interface             Send  Recv  Triggered RIP  Key-chain
    GigabitEthernet0/2    2     2
    GigabitEthernet0/3    2     2
  Automatic network summarization is in effect
  Maximum path: 4
  Routing for Networks:
    192.168.1.0
  Passive Interface(s):
    GigabitEthernet0/0
  Routing Information Sources:
    Gateway         Distance      Last Update
    192.168.1.226        120      00:00:23
    192.168.1.230        120      00:00:13
  Distance: (default is 120)
R2#show ip route
      192.168.1.0/24 is variably subnetted, 9 subnets, 5 masks
R        192.168.1.0/25
           [120/1] via 192.168.1.225, 00:00:11, GigabitEthernet0/1
C        192.168.1.128/26 is directly connected, GigabitEthernet0/0
L        192.168.1.129/32 is directly connected, GigabitEthernet0/0
R        192.168.1.192/27
           [120/1] via 192.168.1.234, 00:00:03, GigabitEthernet0/3
C        192.168.1.224/30 is directly connected, GigabitEthernet0/1
L        192.168.1.226/32 is directly connected, GigabitEthernet0/1
R        192.168.1.228/30
           [120/1] via 192.168.1.234, 00:00:03, GigabitEthernet0/3
           [120/1] via 192.168.1.225, 00:00:11, GigabitEthernet0/1
C        192.168.1.232/30 is directly connected, GigabitEthernet0/3
L        192.168.1.233/32 is directly connected, GigabitEthernet0/3

debug ip rip

La commande debug rip lance les logs RIP dans la console par défaut :

#debug ip rip ?
  bfd       RIP BFD Events
  database  RIP database events
  events    RIP protocol events
  trigger   RIP trigger extension
  <cr>

Pour désactiver tout debug :

#undebug all

Connectivité de bout en bout

de PC2 à PC3 :

[[email protected] ~]# ping -c 1 192.168.1.193
PING 192.168.1.193 (192.168.1.193) 56(84) bytes of data.
64 bytes from 192.168.1.193: icmp_seq=1 ttl=254 time=9.64 ms

--- 192.168.1.193 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 9.643/9.643/9.643/0.000 ms
[[email protected] ~]# traceroute 192.168.1.193
traceroute to 192.168.1.193 (192.168.1.193), 30 hops max, 60 byte packets
 1  gateway (192.168.1.129)  3.210 ms  20.521 ms  20.631 ms
 2  192.168.1.234 (192.168.1.234)  5.811 ms * *

Si la liaison entre R2 et R3 tombe

Table de routage sur R2 :

R        192.168.1.0/25
           [120/1] via 192.168.1.225, 00:00:24, GigabitEthernet0/1
C        192.168.1.128/26 is directly connected, GigabitEthernet0/0
L        192.168.1.129/32 is directly connected, GigabitEthernet0/0
R        192.168.1.192/27
           [120/2] via 192.168.1.225, 00:00:24, GigabitEthernet0/1
C        192.168.1.224/30 is directly connected, GigabitEthernet0/1
L        192.168.1.226/32 is directly connected, GigabitEthernet0/1
R        192.168.1.228/30
           [120/1] via 192.168.1.225, 00:00:24, GigabitEthernet0/1
Author image
Francois Goffinet est formateur Cisco Systems depuis 2002. Passionné des technologies des réseaux, de virtualisation et en nuage, Web et de cybersécurité souvent en Open Source ou Unix-Like, devops.