This is an old revision of the document!
Table of Contents
réseau routage protocole cisco
EIGRP
EIGRP (Enhanced Interior Gateway Routing Protocol) est un protocole de routage propriétaire CISCO à vecteur de distance.
Théorie
Ces 4 mécanismes-clés sont :
- découverte/rétablissement des voisins
- RTP (Reliable Transport Protocol) : les paquets d'échanges de tables entre voisins 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
Ces particularités sont :
- 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
) - updates partiels
- 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
EIGRP maintient 3 tables :
- la table de voisins : contient la liste des routeurs voisins ainsi que l'interface pour les atteindre
- la table de topology : contient tous les réseaux connus avec leur FD/AD/voisin associé
- la table de routage : contient les meilleures routes (= successor route)
5 types de paquets :
- Hello
- Update
- Query
- Reply
- ACK : pour acquitter les update, query et reply
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 ; 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.
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
- 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
Mise en place
On veut activer l'EIGRP sur l'interface serie 0/0
interface Serial0/0 description se0/0 vers CoreRouter bandwidth 64000 ip address 10.140.3.2 255.255.255.0 clock rate 64000
Notez que le paramètre bandwidth 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).
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).
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
Authentification
On peut choisir soit un simple mot de passe (qui transite en clair, utilisé surtout pour éviter les modifications de routage accidentelles) soit par hash MD5 (par clé partagée). 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 est 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
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. 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 : cela se configure 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.
Routeur d'impasse
Un routeur d'impasse ou stub router est une routeur “feuille”. La plupart du temps 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 peut donc déclarer comme stub router afin que les autres routeurs ne le sollicitent pas quand ils perdent une route.
(config-router)#eigrp stub
Un routeur stub ne reçoit pas les queries ; il annonce juste ses routes connectées directement.
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
Stub router
Ou routeur impasse, comme en OSPF, spécifie que ce routeur ne doit pas être sollicité par ses voisins quand ils perdent une route.
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).
Vérifications
Router#sh 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#sh 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#sh 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#sh 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