Routage IPv4 - Vecteur de distances

Routage IPv4 - Vecteur de distances

Objectifs

  • fonctionnement de base
  • défaults/correctifs
  • RIPv1, RIPv2
  • DUAL
  • EIGRP
  • conclusion

Fonctionnement de base

  • exécution distribuée de l'algorithme de Bellman-Ford (cité aussi Ford-Fulkerson 1962)
  • chaque routeur diffuse sa table de routes à ses voisins directs (régulièrement ou pas)
  • si la destination est inconnue, la route est ajoutée, le routeur suivant (ou l'interface) est celui qui a envoyé l'annonce
  • si la route est déjà dans la table, la route de plus courte distance est conservée, sauf si l'annonce provient de la route sélectionnée.
  • la distance est calculée en ajoutant le cout de la route vers le voisin à la distance qu'il annonce
  • chaque route a une durée de vie : une destination qui n'est plus annoncée disparait de la table
Cliquez sur le nom du routeur (table) pour diffuser sa table de routage aux voisins directs.

Horizon partagé :

(le changement n'apparait qu'au prochain affichage)
  • coupure de lien : boucle possible (coupé A-B, diffusé A, puis B - A-> B : ADADA)
  • correctif : horizon partagé (split horizon) c'est à dire Ne pas renvoyer une route au routeur qui vous l'a apprise - des destinations disparaissent...
  • variante : le retour empoisonné (possion reverse) qui consiste à laisser la destination, mais avec une distance "infinie". Empeche les boucles à 2. (version utilisée ici). Les destinations inaccessibles ne sont pas oubliées mais marquées inaccessibles (distance).
  • cela ne résoud pas tout (coupure A-B et D-E)
  • B, C, E augmente peu à peu le cout vers D jusqu'à l'infini...

RIP V1

  • le premier historiquement pour internet
  • métrique : nombre de sauts
  • distance maximum : 15 sauts - infini à 16 ! - limite le diamètre du réseau
  • utilise le broadcast
  • UDP, port 520
  • ne transmet pas les masques
  • résume les sous-réseaux aux frontières de réseaux (autosummary) selon la classe (ne peut pas etre désactivé en V1)
  • notion d'hote silencieux
  • notion de passive-interface : écoute mais n'émet pas
  • implémente Ford-Fulkerson issu de Bellman-Ford-Moore
  • implémente "horizon partagé" et "retour empoisonné" en option par défaut
  • diffusion toutes les 30 secondes (par défaut : variation aléatoire entre 1 et 15 s pour éviter l'effet cumul)
  • une route non réannoncée devient inaccessible (à l'infini) au bout de 3 mn (elle sera retirée plus tard)
  • mise à jour déclenchée
  • simplicité
command (1) version (1) must be zero (2)
address family identifier (2) must be zero (2)
IP address (4)
must be zero (4)
must be zero (4)
metric (4)
... (jusqu'à 25 entrées)

Un message n'exède pas 512 octets (entêtes IP et UDP non comprises).

  • 2 commandes possibles : REQUEST et RESPONSE (respectivement avec les codes 1 et 2).
  • les commandes 3 et 4 sont obsolètes, 5 réservé pour SunMicrosystem, 6 <= libres
  • version : 1 ou 2
  • address family identifier : 2 pour IP (pas d'autre mise en oeuvre connue).
  • pour RIPv1, les champs à 0 doivent etre testé.
  • prévu pour accueillir d'autres "familles d'adresses" (jamais arrivées)
  • IP address : network ou host ou 0.0.0.0 (default)
  • metric : entre 1 et 15 (16 = infini)
  • les résumés automatiques de RIPv1 et la non propagation des masques peuvent poser problème :
  • gourmand en bande passante, surtout si la table dépasse une certaine taille et doit etre transmise en plusieurs paquets
  • convergence lente : transmission des destinations de proche en proche (dépend de l'odre des événements et du diamètre du réseaux)
  • instabilitée possible (exemples)
  • pas ou peu de sécurité : aucune en V1, possible en V2 (authentification MD5 en 1997)
  • adresse multicast pour les annonces en V2 ( 224.0.0.9 - RIPv2 routers)
  • résumé de routes sur la base des classes (même en V2)

RIP V2

  • IPv4 : 2 versions, RIPv1 Classful [RFC1058]-1988, RIPv2 Classless [RFC1058-1388-1723-2453]-1993-1998
  • IPv6 : RIPng (cf cours de M.Gluck) - portage car simple et utilisable dans certaines situations (routeurs avec peu de puissance de calcul).
  • sur UDP : port 512
  • adresses multi-cast RIP2 Routers : 224.0.0.9
  • un paquet : 25 entrées au plus
  • authentification possible entre les routeurs (secret partagé) par interface
    • en clair
    • clé MD5
  • Résumé des routes désactivable (VLSM,CIDR)
  • mais ne supporte pas le passage à l'échelle et la convergence reste lente
  • forte distance administrative 120 : peu de confiance accordée
  • démarrage du processus
router rip
  • Attention : version 1 par défaut (classful), pour changer de version :
version 2
  • Annonce des "réseaux" (donc des interfaces) participant au processus (sans masque!):
network <A.B.C.D>
  • redistribution des routes (metric à préciser en l'absence de default-metric) - version simplifiée :
redistribute <source> metric <distance>
  • redistribution de la route par défaut
default-information originate
  • désactiver les résumés de routes
no auto-summarize
  • désactivation des annonces (partout ou sur une interface)
passive-interface [default | if_name]
  • authentification "texte" (mode (config)#)
key chain kal
!--- Name a key chain. A key chain may contain more than one key for added security.
!--- It need not be identical on the remote router.

key 1
!--- This is the Identification number of an authentication key on a key chain.
!--- It need not be identical on the remote router.

key-string 234
!--- The actual password or key-string.
!--- It needs to be identical to the key-string on the remote router.

interface <celle appropriée>
  ip rip authentication key-chain kal
  • authentification "md5" (mode (config)#)
key chain kal
!--- Need not be identical on the remote router.

key 1
!--- Needs to be identical on remote router.

key-string 234
!--- Needs to be identical to the key-string on the remote router.

interface  <celle appropriée>
  ip rip authentication mode md5
  !--- Specifies the type of authentication used in RIPv2 packets.
  !--- Needs to  be identical on remote router.
  !-- To restore clear text authentication, use the no form of this command.

ip rip authentication key-chain kal
  • Version message par interface émission/réception (mode (config-if)#) :
rip send version {[1] [2]}
rip receive version {[1] [2]}