User Tools

Site Tools


informatique:cisco:eigrp

tag_reseau_routage_protocole_cisco

EIGRP

EIGRP (Enhanced Interior Gateway Routing Protocol) est un protocole de routage propriétaire CISCO à vecteur de distance. Sa distance administrative est 90.

Théorie

Les 4 mécanismes clés

selon Cisco

  • découverte/rétablissement des voisins
  • RTP (Reliable Transport Protocol) : les paquets d'échanges de tables entre voisins (update, query et reply) sont acquittés (en unicast)
  • basé sur l'algorithme DUAL (Diffusing Update ALgorithm) qui lui assure une topologie sans boucle
  • PDMs (Protocol-Dependent Modules) = support de multiples protocoles tels IP, Appletalk, IPX

Particularités d'EIGRP

  • réduit la consommation de la bande passante par l'envoie d'update partiels
  • VLSM (Variable-Length Subnet Masking) support : le protocole diffuse les réseaux avec leur masque (classless routing protocol) mais pas par défaut (nécessite no auto-summary)
  • utilise des paquets Hello pour découvrir ses voisins et connaitre leur état
  • pour être voisins, 2 routeurs doivent avoir les mêmes constantes K (K-value) et le même numéro d'AS
  • métrique “sophistiquée” (composite metric) : par défaut basée sur la bande passante et le délais de l'interface (256 x la métrique IGRP), mais on peut également prendre en compte la fiabilité, la charge ou la MTU du lien
  • utilise une adresse multicast pour dialoguer (224.0.0.10) mais peut aussi utilier de l'unicast en spécifiant les voisins à la main

Par défaut EIGRP est capable de faire du partage de charge entre plusieurs (par défaut 4 ; maximum 6) successeurs de même métrique ; en jouant sur la variance il peut même le faire sur des routes à métriques différentes. Par défaut la variance vaut 1 (le max possible est 128) ; si on la passe à 2 cela signifie que le routeur fera du partage de charge sur tous les feasible successors ayant une métrique ⇐ à la métrique du successeur x2.

Le timeout en EIGRP est de 3 min : si un voisin ne répond pas à une demande avant la fin de ce timeout, il est supprimé de la table des voisins.

Les 3 tables

  • la table de voisins ou table d'adjacence : contient la liste des routeurs voisins qui ont établis une adjacence ainsi que l'interface pour les atteindre
  • la table de topology : contient tous les routes apprises par les voisins, avec leur FD/AD/voisin associé
  • la table de routage : contient les meilleures routes vers chaque réseau connu (= successor route)

Les 5 types de paquets

  • Hello : paquet multicast de découverte des voisins, émis par défaut toutes les 5s sur les liens rapides et toutes les 60s sur les liens multipoints lents (e.g. NBMA). Le hold time est égal à 3 fois le hello interval.
  • Update : envoyés en multicast ou unicast, non périodiques
  • Query : normalement multicast mais peuvent être en unicast
  • Reply : unicast
  • ACK : paquet unicast pour acquitter les update, query et reply

Calcul de la métrique

La métrique c'est un coût = plus elle est faible, meilleure elle est. En EIGRP on utilise la même métrique qu'en IGRP x 256 (32 bits contre 24 bits pour IGRP). Elle est calculée grâce a une savante formule qui peut prendre en compte les paramètres de l'interface suivants :

  • la bande passante
  • le délais
  • la fiabilité
  • la charge
  • la MTU

… pondérées par des constantes K (K-values), numérotées de K1 à K5, qui peuvent être définies par l'administrateur.

Par défaut :

  • la métrique ne prend en compte que la bande passante et le délais de l'interface
  • K1 = K3 = 1
  • K2 = K4 = K5 = 0

/!\ K1 ne correspond pas à la bande passante, K2 ne correspond pas au délais, etc…

Terminologie

  • AD (Advertised Distance) c'est le coût pour atteindre un réseau annoncé par un voisin
  • FD (Feasible Distance) c'est le coût vers un réseau du point de vue du routeur, donc c'est égal à AD + coût de la liaison vers le routeur voisin.
  • (current) Successor c'est le “next-hop router” qui a le coût le plus bas et qui est “loop-free”
  • FS (Feasible Successor, ou successeur éventuel) : c'est le backup du successor vers un réseau donné ; la condition pour cela est que son AD soit inférieur au FD du successeur. C'est cela qui permet de s'assurer à “100%” que EIGRP est sans boucle. Par défaut il peut y avoir 4 successeurs éventuels (de même FD), mais on peut en spécifier jusqu'à 6. C'est aussi cela qui permet à EIGRP de converger très rapidement (plus qu'OSPF ou IS-IS).
  • SIA Stuck In Active : indique un problème de convergence pour le réseau associé (dû au fait que les paquets reply ne sont plus reçus, e.g. quand un voisin a sa CPU ou sa mémoire saturée et ne peut pas forger une réponse)
  • RTO (Retransmission TimeOut) : temps avant retransmission, si un ACK n'a pas été reçu
  • SRTT (Smoothed Round Trip Time) c'est à peu près le temps d'aller-retour sur un lien
  • état actif = état d'une route dont il n'a plus de successor ni de FS ; dans cet état le routeur envoie des query à ses voisins, et passe la route en inatteignable en attendant les reply.
  • l'état passif à l'inverse indique une route opérationnelle : c'est l'état normal

Mise en place

On veut activer l'EIGRP sur l'interface serie 0/0

interface Serial0/0
 description se0/0 vers CoreRouter
 bandwidth 64
 ip address 10.140.3.2 255.255.255.0
 clock rate 64000

Notez que le paramètre bandwidth (exprimée en Kbps) ne joue pas sur la bande passante réelle du lien, il influe uniquement le calcul de la métrique (car par défaut en EIGRP un lien série est considéré comme ayant une bande passante de T1, soit 1,5Mbps). Par défaut EIGRP ne dépasse pas 50% de la bande passante pour tourner, mais cela peut se configurer par interface (ici pour l'AS 100 on passe à 30% max) :

(config-if)#ip bandwidth-percent eigrp 100 30

Création de l'interface loopback 0 pour le routage

interface Loopback0
 ip address 192.168.2.65 255.255.255.240

Activer l'EIGRP sur le routeur (100 représente le numéro d'AS) :

Routeur(config)#router eigrp 100

Activer l'EIGRP sur les interfaces voulues : on déclare les networks suivant.

Router(config-router)#network 10.0.0.0
Router(config-router)#network 192.168.2.0

Le routeur va activer l'EIGRP sur les interface qui correspondent aux réseaux annoncés (donc la loopback 0 et le serial 0/0).

On lui ajoute une route par défaut qu'il annoncera à ses voisins comme route par défaut candidate.

(config)#ip default-network 10.0.0.0

Dans certains cas, on doit l'empêcher d'agréger ses routes pour ne pas qu'il annonce un réseau avec les masques CIDR (comportement par défaut) :

Router(config-router)#no auto-summary

Configuration avancée

Agrégation de routes

Dans certains cas, pour limiter la taille des tables de routage, il peut être intéressant d'agréger les routes : l'endroit stratégique est sur les routeurs de bordure de système autonome (ASBR). Cela se fait par défaut selon le schéma du CIDR, mais comme nous l'avons vu plus haut il vaut mieux désactiver cette fonction. En revanche on peut affiner manuellement cette agrégation, par interface :

Router(config)#int se0/0
Router(config-if)#ip summary-address eigrp 100 10.0.1.0 255.255.0.0 [AD]

Dans cet exemple on agrège les routes sur l'interface Se0/0 en annonçant le réseau 10.0.1.0/16. Le paramètre à la fin est optionnel : il s'agit de la distance administrative à annoncer (par défaut la distance administrative des routes EIGRP agrégées est de 5).

La métrique d'un agrégat de route est celle qui est la meilleure parmi celles des routes agrégées.

Authentification

Contrairement à OSPF, RIPv2 et IS-IS, EIGRP ne support pas l'authentification par simple mot de passe (qui transite en clair, utilisé surtout pour éviter les modifications de routage accidentelles), mais uniquement par hash MD5 (un digest est généré à partir di key-ID, de la clé et du message). Les clés sont regroupées dans une chaine et peuvent être au nombre de 5 maximum ; dans ce cas la première qui marche sera utilisée. On peut leur spécifier des dates de validité. Dans notre exemple on n'en utilisera qu'une seule (key 1).

On configure l'autentification EIGRP :

Router(config)#key chain reseau_prod
Router(config-keychain)#key 1
Router(config-keychain-key)#key-string san-fran

On active l'authentification EIGRP sur chaque interface qui participe au routage de l'AS 100 (il faudra faire de même en face, sur les voisins) :

Router(config)#int se0/0
Router(config-if)#ip authentication mode eigrp 100 md5
Router(config-if)#ip authentication key-chain eigrp 100 reseau_prod

stub router

Un routeur d'impasse ou stub router est une routeur “feuille” : c'est un routeur ne connait que ses réseaux connected et apprend tout le reste par EIGRP. Ainsi il ne sert à rien de l'interroger pour tout réseau qui ne lui appartient pas. On le déclare comme stub router afin que les autres routeurs ne le sollicitent pas quand ils perdent une route, ce qui optimise les flux de routage.

Un routeur stub peut respectivement, juste [recevoir des routes | annoncer ses routes connected | annoncer ses routes statiques | annoncer ses routes agrégée]

(config-router)#eigrp stub [receive-only | connected | static | summary]

(les “|” peuvent s'additionner, par défaut connected et summary sont activés).

Load-balancing

Comme décrit plus haut EIGRP permet de faire du load-balancing entre plusieurs successeurs (feasible ou non). Pour configurer le nombre maximum de chemin pour le partage de charge :

(config-router)#maximum-paths 3

Sachant que par défaut il est égal à 4 et que le maximum configurable (imposé par EIGRP) est 6.

Pour faire du partage de charge sur des chemins de métriques différentes, on précise la variance, un coefficient qui détermine quelle chemins seront utilisés. Une variance de 2 active le partage de charge entre les chemins dont la métrique est inférieure ou égale à 2 fois celle du successeur. Par défaut la variance vaut 1, ce qui n'active le partage de charge que sur les chemins de même métrique que le successeur (donc les meilleurs chemins).

(config-router)#variance 2

Distance administrative

La distance administrative détermine la priorité d'une route annoncée par un protocole par rapport aux autres protocoles. C'est un coefficient de confiance attribué à une source (interne, externe à l'AS). On peut la voir dans un show ip route de la forme [90/45003] : 90 désigne la distance administrative et 45003 la métrique. Par défaut les routes EIGRP internes ont une distance administrative de 90 et les routes EIGRP externes de 170.

On peut le modifier par la commande :

(config-router)#distance eigrp <distance_interne> <distance_externe>

Vérifications

Router#show ip eigrp neighbors

IP-EIGRP neighbors for process 100
H   Address                 Interface       Hold Uptime   SRTT   RTO  Q  Seq
                                            (sec)         (ms)       Cnt Num
0   10.140.3.1              Se0/0             13 00:12:52   22   200  0  175
Router#show ip protocols

Routing Protocol is "eigrp 100"
  Outgoing update filter list for all interfaces is not set
  Incoming update filter list for all interfaces is not set
  Default networks flagged in outgoing updates
  Default networks accepted from incoming updates
  EIGRP metric weight K1=1, K2=0, K3=1, K4=0, K5=0
  EIGRP maximum hopcount 100
  EIGRP maximum metric variance 1
  Redistributing: eigrp 100
  EIGRP NSF-aware route hold timer is 240s
  Automatic network summarization is in effect
  Automatic address summarization:
    192.168.2.0/24 for FastEthernet0/0, Serial0/0
      Summarizing with metric 128256
    10.0.0.0/8 for Loopback0
      Summarizing with metric 28160
  Maximum path: 4
  Routing for Networks:
    10.0.0.0
    192.168.2.0
  Routing Information Sources:
    Gateway         Distance      Last Update
    (this router)         90      00:12:21
    10.45.45.2            90      00:03:12
    Gateway         Distance      Last Update
    10.140.3.1            90      00:01:33
  Distance: internal 90 external 170
Router#show ip route eigrp
     172.16.0.0/24 is subnetted, 1 subnets
D       172.16.31.0 [90/643840] via 10.140.3.1, 00:13:00, Serial0/0
     10.0.0.0/8 is variably subnetted, 15 subnets, 2 masks
D       10.67.67.0/24 [90/41536000] via 10.140.3.1, 00:03:50, Serial0/0
D       10.23.23.0/24 [90/41536000] via 10.140.3.1, 00:13:00, Serial0/0
D       10.7.7.0/24 [90/41026560] via 10.140.3.1, 00:13:00, Serial0/0
D       10.6.6.0/24 [90/41026560] via 10.140.3.1, 00:12:01, Serial0/0
D       10.5.5.0/24 [90/41026560] via 10.140.3.1, 00:02:31, Serial0/0
D       10.1.1.0/24 [90/540160] via 10.140.3.1, 00:13:00, Serial0/0
D       10.0.0.0/8 is a summary, 00:25:13, Null0
D       10.140.6.0/24 [90/41024000] via 10.140.3.1, 00:13:00, Serial0/0
D       10.140.7.0/24 [90/41024000] via 10.140.3.1, 00:13:00, Serial0/0
D       10.140.4.0/24 [90/41024000] via 10.140.3.1, 00:02:31, Serial0/0
D       10.140.5.0/24 [90/41024000] via 10.140.3.1, 00:13:00, Serial0/0
D       10.140.2.0/24 [90/41024000] via 10.140.3.1, 00:13:00, Serial0/0
D       10.140.1.0/24 [90/41024000] via 10.140.3.1, 00:02:04, Serial0/0
     192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
D       192.168.1.0/24 [90/41152000] via 10.140.3.1, 00:13:00, Serial0/0
     192.168.2.0/24 is variably subnetted, 3 subnets, 3 masks
D       192.168.2.0/24 is a summary, 00:13:00, Null0
     192.168.3.0/24 is variably subnetted, 3 subnets, 2 masks
D       192.168.3.0/24 [90/41152000] via 10.140.3.1, 00:13:00, Serial0/0
Router#show ip eigrp interfaces
IP-EIGRP interfaces for process 100

                        Xmit Queue   Mean   Pacing Time   Multicast    Pending
Interface        Peers  Un/Reliable  SRTT   Un/Reliable   Flow Timer   Routes
Lo0                0        0/0         0       0/1            0           0
Fa0/0              0        0/0         0       0/1            0           0
Se0/0              1        0/0        22       0/1           93           0
Se0/1              0        0/0         0       0/1         1241           0

Debug

debug eigrp neighbors
debug eigrp packets
informatique/cisco/eigrp.txt · Last modified: 2013/10/14 22:44 (external edit)