EIGRP

EIGRP

EIGRP est l'acronyme de Enhanced Interior Gateway Routing Protocol. C'est un protocole de routage propriétaire. Il a été développé par Cisco afin de pallier les manques de IGRP.

Sa distance administrative est de 90. Son numéro de protocole est 88, et la lettre dans la table de routage pour une route apprise via EIGRP est la lettre 'D' (Le 'E' était déjà pris par les routes externes).

C'est un protocole de routage hybride. C'est à dire qu'il n'est ni un protocole à vecteur de distance (RIPv2), ni un protocol à état de liens (type OSPF). L'abscence de boucle dans le réseau est garanti par l'utilisation de l'algorithme DUAL (Diffusing Update Algorithm). De plus, il ne se base pas sur une topologie globale du réseau(OSPF) afin de pallier (si possible) à un changement de topologie. Il se base sur un "successeur" de secours (Feasible successor(vu plus loin)). Il n'utilise pas intensément le processeur et mémoire comme peut le faire OSPF en recalculant sa topologie par l'algorithme SPF, et donc mettre à jour sa table de routage en conséquence.

Pourquoi utiliser EIGRP ?

  • Se base sur la bande passante et délai des liens parcourus
  • Car il maintient en permanance (si possible) une route de secours
  • Simple de configuration
  • Flexible au niveau des résumés de routes
  • Egal ou inégal load-balancing
  • Supporte plusieurs protocole réseau (Apple Talk, IP, IPX)

EIGRP maintient trois tables :

  • Une table de ses voisins (Neighbor)
  • Une table contenant sa topologie (topology)
  • La table de routage

1. Neighbors

EIGRP tout comme OSPF utilise un protocol "Hello" afin de découvrir ses voisins (Neighbor), mais aussi afin de détecter des changements de topologie. Il utilise le groupe multicast 224.0.0.10 dans ce but.
Les message 'Hello' sont envoyés tous les 5s(Hello Timer). Une relation de voisinage est decidée rompue au bout de 15s (Hold Timer).

Pour devenir voisins, il est nécessaire de :

  • Passer le processus d'authentification
  • Faire partie du même système autonome
  • Que les interfaces des deux voisins fassent parti du même subnet
Pour dérouler les processus de mise en relation des voisins, échanges de topologie, routes, EIGRP utilise des paquets de différents types qui sont :
  • Hello/Acks
  • Updates: Mise à jour de table, topologie, voisins
  • Queries: Requêtes pour avoir des informations
  • Replies: Réponses aux queries
  • Requests: Requêtes pour avoir des informations sur un neighbor

2. Topology

Une fois la ou les relations de voisinage découverte, l'échange de topologie peut avoir lieu. Il se base sur RTP (Reliable Transport Protocol et NON Real Time Protocol) pour les Full update. EIGRP peut s'échanger ses routes au moyen de :

  • Full update: Toutes les routes connues sont fournies.
  • Partial update: ne fournit que les routes nouvellement changées.

3. Table de routage

EIGRP met dans la table de routage les routes dont la métrique est la plus basse.
Celle-ci se décrit de la manière suivante :

Les valeurs par défaut de K1, K2, K3, K4, K5 sont :

  • K1 = 1
  • K2 = 0
  • K3 = 1
  • K4 = 0
  • K5 = 0
BP est défini comme 107 kbit/s divisé par la bande passante la plus faible le long du chemin.
Charge et Fiabilité sont des valeurs entières de 0 à 255 déterminée en fonction de la performance du lien.
Délai est la somme des délais en dizaines de microsecondes. Ce délai est fixé arbitrairement à 20 000 s pour les connexions série et à 1 000 s pour les connexions Ethernet.

On se retrouve donc avec la formule suivante afin de calculer les métriques :

Il existe deux types de distance en EIGRP :
  • Feasible Distance (FD): Route dont la metric est la plus basse vers le subnet 'x'i => Donc la meilleure route vers 'x'..
  • Reported Distance (RD): Route apprise depuis un voisin par un 'update EIGRP' (Sans l'inférence de bande passante et délai entre notre routeur et son voisin) vers le subnet 'x'.
Le next-hop (routeur) de la Feasible Distance est appelé le 'successor'. Le sucessor est donc le routeur vers qui ont enverra les paquets vers le subnet 'x', vu que c'est la meilleure route vers ce subnet. Un moyen mémothechnique : un SUCCESSor a meilleir succès pour aller vers 'x'.

EIGRP tient à jour une route de secours. Celle-ci utilisera donc le routeur dont le nom est : 'Feasible successor'. On définit le Feasible successor de la manière suivante :
Si une route non successor vers 'x' a un RD inférieur au FD, alors la route est une 'Feasible Successor route'.
Néanmoins, il se peut qu'il n'existe pas de Feasible Successor, alors EIGRP utilise l'algorithme DUAL (Diffusing Update Algorithm) afin de trouver alors une route sans boucle vers 'x'. Il procède en demandant à ses voisins s'ils ont des routes vers 'x' et vérifie qu'il n'y a pas de boucle.

On voit donc que le temps de convergence est très rapide dans le cas où il y a une route 'Feasible Sucessor' et dans le cas où il n'y en a pas, le processur dure un peu plus longtemps.
Feasible SuccessorTemps
oui<2s
non<10s

4. Comparaison OSPF/EIGRP

Fonctionnalités
EIGRP
OSPF
Converge rapidement
Oui
Oui
Prévention des boucles inclus dans le protocole
Oui
Oui
Mise à jour partielle de la table de routage: Nouvelles infos ou chgt
Oui
Oui
Classless: Manual summarization / VLSM
Oui
Oui
Permet le manual summarization
Oui
Non
Utilise le multicast pour les infos de routage
Oui
Oui
Utilise le concept de Designated Router
Non
Oui
Architecture flexible sans besoin du concept d'aire
Oui
Non
Supporte du load-balancing avec des metric égales ou non
Oui
Non
Metric robuste basé sur la bande passante et délai
Oui
Non
Peut annoncer de l'IP, IPX, Appletalk
Oui
Non
Standard public
Non
Oui

5. Configuration standard du process eigrp

La configuration standard du processus eigrp sur un routeur Cisco est telle que :

R(config)# router eigrp as-number
R(config-router)# network subnet [wildcard]
R(config-router)# maximum-paths number (optionnel)
R(config-router)# variance multiplier (optionnel)
R(config-if)# ip hello-interval eigrp asn time (optionnel)
R(config-if)# ip hold-time eigrp asn time (optionnel)
R(config-if)# bandwidth delay (optionnel)
R(config-if)# delay (optionnel)
La configuration de l'authentification se fait de la manière suivante :
R(config)#key ch
R(config)#key chain ?
  WORD  Key-chain name

R(config)#key chain toto
R(config-keychain)#key 1
R(config-keychain-key)#?
Key-chain key configuration commands:
  accept-lifetime  Set accept lifetime of key
  default          Set a command to its defaults
  exit             Exit from key-chain key configuration mode
  key-string       Set key string
  no               Negate a command or set its defaults
  send-lifetime    Set send lifetime of key

R(config-keychain-key)#ke
R(config-keychain-key)#key-string titi
R(config-keychain-key)#^Z
R#conf t
R(config)# int fa0/0
R(config-if)# ip authentication mode eigrp 10 md5
R(config-if)# ip authentication key-chain eigrp 1 toto

Il est possible de supprimer l'autosummarization (no auto-summary) bien évidemment. Il est aussi possible de faire du résumé de route uniquement sur telle ou telle interface suivant votre choix.
Par exemple :
R(config-if)# ip summary-address eigrp as-number 172.30.0.0 255.255.240.0

6. Outils de debug

Les outils de debug à notre disposition sont :

R# show ip eigrp neighbor
R# show ip eigrp topology [summary]
R# show ip route
R# debug eigrp ?
  fsm        EIGRP Dual Finite State Machine events/actions
  neighbors  EIGRP neighbors
  packets    EIGRP packets
  transmit   EIGRP transmission events

7. Variance et load-balancing

Le paramètre de 'variance' permet dans certains cas d'ajouter plusieurs routes vers le même subnet 'x'. Cette valeur comprise entre 1 et 128 se multiplie avec FD, dans le but de rendre possible l'ajout de la route dans la table de routage dans le cas où 'maximun-paths' est supérieur à 1.
Ceci est possible si :

  • 'maximum-paths' > 1
  • 'FS' < 'variance' * 'FD'
Une voisin ayant connaissance vers le subnet 'x' qui n'est ni un successor, ni un feasible successor ne peut être ajoutée dans la table de routage relativement à la variance.

8. Expérimentations

J'avoue m'être beaucoup amusé avec le lab suivant :

Les configuration si cela peut aider :

$Id: eigrp.txt,v 1.2 2009/03/20 07:07:29 clucas Exp clucas $