Académique Documents
Professionnel Documents
Culture Documents
L’EIGRP pour Enhanced Interior Gateway Routing Protocol est un protocole routage
dynamique propriétaire Cisco.Il s’agit d’un protocole de routage interne (IGP) à l’inverse de
l’eBGP qui est un protocole de routage externe.
Un IGP (OSPF,EIGRP,RIP) est un protocole de routage dynamique qui assure le routage dans
un AS.
Un EGP (eBGP) est un protocole de routage dynamique qui assurage le routage entre
plusieurs AS.
Un AS pour Autonomous System peut être défini comme une organisation (entreprise,
administration ect)
Ces avantages :
Convergence rapide
Utilisation faible de la bande passante
Summarization
LoadBalancing
Il utilise le protocole RTP (Reliable Transport Protocol) pour échanger des informations avec
les autres routeurs EIGRP qui sont dans son AS.
Contents [masquer]
1/ Présentation de l’architecture
o 1.1/ Schéma d’architecture :
o 1.2/ Plan d’adressage :
2/ : Configuration de base
o 2.1/ Activation de l’EIGRP
3 / Passive-interface
4/ Route summary
5/ EIGRP Stub routing
6 / Unequal cost load-balancing
o
6.2/ Distribute-list
6.3 / IP OFFSET-LIST :
6.4 / Modification fonctionnement CEF
Bonus :
1/ Présentation de l’architecture
Vous trouverez ici le lab associé avec l’adressage des interfaces pré-configurés. Il s’agit d’un
lab réalisé sous UnetLab.
Nous allons commencer ce tutorial par l’activation de l’EIGRP sur les deux routeurs d’interco
du datacenter R1 et R2.
[sh]
router eigrp autonomous-system
network network-number
[/sh]
La commande router eigrp 1 permet d’activer le process EIGRP et de définir l’AS (1) dans
lequel il va fonctionner.
L’AS entre l’ensemble des routeurs doit être identique si nous souhaitons qu’ils puissent
communiquer
La commande network permet d’activer et d’associer les interfaces à un process EIGRP.
Sur R1 :
[sh]
R1(config)#router eigrp 1
R1(config-router)#network 172.16.1.4 0.0.0.3
R1(config-router)#network 172.16.1.8 0.0.0.3
R1(config-router)#network 172.16.1.0 0.0.0.3
R1(config-router)#
[/sh]
Nous pouvons valider avec la commande show ip protocols que l’EIGRP est bien activé :
[sh]
R1#show ip protocols
*** IP Routing is NSF aware ***
Une fois l’EIGRP activé, le routeur va commencer à envoyer des « HELLO PACKET » sur
l’adresse multicast 224.0.0.10 pour découvrir les autres routeurs EIGRP et essayer d’établir
un « neighbor relationship » (une relation de voisinage)
[sh]
R2(config)#router eigrp 1
R2(config-router)#network 172.16.1.12 0.0.0.3
R2(config-router)#network 172.16.1.4 0.0.0.3
R2(config-router)#
[/sh]
Sur R1 j’ai activé le debug eigrp avec la commande debug ip eigrp neighbor
Nous pouvons voir dans les logs qu’une nouvelle « adjacency » c’est formé entre R1 et R2.
La commande show ip eigrp neighbors nous renvoi la liste des routeurs avec lequel une
adjacency existe :
Pour que deux routeurs deviennent neighbors (voisins) EIGRP ils doivent remplir les
conditions suivantes:
La table de routage est envoyé qu’une seul fois lors de la création de l’adjacency. Par la suite
seuls des updates sont envoyés par les routeurs lors d’une modification. Cela permet
d’économiser la bande passante et d’alléger le traitement par les routeurs.
Des hellos sont ensuite envoyé à intervalle régulier (hello interval timer) entre les deux
routeurs pour détecter la perte d’une interface ou d’un routeur lorsque la durée de vie du hello
est dépassé (hold timer) :
Par défaut sur une connexion Ethernet, le hello interval timer est à 5 secondes et le hold timer
est à 15 secondes
Nous pouvons manuellement modifier ces valeurs sur l’interface d’interconnexion avec le
routeur distant :
[sh]R2(config)#interface Et0/0
R2(config-if)#ip hello-interval eigrp 1 2
R2(config-if)#ip hold-time eigrp 1 6[/sh]
L’algorithme DUAL est utilisé par EIGRP pour calculer la meilleur route pour joindre un
réseau, il se base sur la table de topologie pour effectuer ses calculs.
Nous pouvons afficher la table de topologie avec la commande show ip eigrp topology
Dans
la table de topologie nous retrouvons toutes les routes apprises en EIGRP, dont celle qui a été
ajouté à la table de routage (172.16.1.12/30).
Nous allons maintenant activer EIGRP sur le routeur R4 pour rendre accessible depuis R1 le
réseau 192.168.100.0/24 et ainsi joindre le serveur.
Allons vérifier que le réseau 192.168.100.0/24 est bien présent dans la table de routage de R1
:
[sh]R1#ping 192.168.100.10
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.100.10, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms[/sh]
Et un traceroute depuis R1 nous montre que nous passons bien par R2 et R4 pour joindre le
serveur :
Nous allons donc intégré maintenant le routeur R3 à la topologie EIGRP. Comme vous
pouvez le voir sur le schéma il est lui même interconnecté à R1 et R4. Une fois EIGRP
configuré nous aurons donc une route de secours (R1 – R3 – R4) en cas perte du routeur R2
par exemple.
[sh]R3(config)#router eigrp 1
R3(config-router)#network 172.16.1.10 0.0.0.3
R3(config-router)#network 172.16.1.17 0.0.0.3[/sh]
En faisant un show ip eigrp neighbors nous validons que R3 est bien devenu neighbor avec
R1 et R4
Il devrait maintenant y avoir dans la topologie EIGRP de R1 les deux routes pour joindre le
réseau 192.168.100.0/24
On peut voir ici que le réseau 192.168.100.0/24 dispose d’un Successor ( 172.16.1.6 ) et d’un
Feasable Successor (172.16.1.10)
Un Successor est la route disposant de la meilleur metric pour joindre un réseau; cette route
sera placer dans la table de routage
Un Feasible Successor est une route alternative pour joindre un réseau; Si la meilleur route
venait à tomber elle serait remplacer par la route qui été Feasible Successor.
Pour être Feasible Successor, un routeur pour une destination donnée doit avoir une RD
strictement inférieur à la FD du Successor.
La table de routage de R1 n’a quand à elle pas changé car c’est la route qui dispose de la plus
petite FD qui est ajoutée (332800 < 2636800) :
Nous allons maintenant simuler la perte du routeur R2. La table de routage de R1 devrait
changer est routé les flux à destinations du serveur par le biais du next-hop 172.16.1.10
J’en profite pour activer sur R1 le debug ip routing et le debug ip eigrp neighbor,
[sh]R1#debug ip routing
R1#debug ip eigrp neighbor[/sh]
R1#
*Dec 2 12:18:08.913: EIGRP: Holdtime expired
*Dec 2 12:18:08.913: %DUAL-5-NBRCHANGE: EIGRP-IPv4 1: Neighbor 172.16.1.6
(Ethernet0/0) is down: holding time expired
R1#
*Dec 2 12:18:08.913: Going down: Peer 172.16.1.6 total=1 stub 0, iidb-stub=0 iid-all=0
*Dec 2 12:18:08.913: EIGRP: Handle deallocation failure [0]
*Dec 2 12:18:08.913: EIGRP: Neighbor 172.16.1.6 went down on Ethernet0/0
R1 détecte la perte de R2 à l’expiration de son holdtimer EIGRP.
debug ip routing :
R1#
*Dec 1 18:49:03.107: %DUAL-5-NBRCHANGE: EIGRP-IPv4 1: Neighbor 172.16.1.6
(Ethernet0/0) is down: holding time expired
*Dec 1 18:49:03.107: RT: delete route to 192.168.100.0 via 172.16.1.6, eigrp metric
[90/332800]
*Dec 1 18:49:03.107: RT: no routes to 192.168.100.0, delayed flush
*Dec 1 18:49:03.107: RT: delete network route to 192.168.100.0/24
R1#updating eigrp 192.168.100.0/24 (0x0) :
via 172.16.1.10 Et0/1 0 1048578
*Dec 1 18:49:03.107: RT: add 192.168.100.0/24 via 172.16.1.10, eigrp metric [90/2636800]
En effectuant un traceroute nous notons bien que la nouvelle route (R1 – R3 – R4) est bien
utilisé pour joindre le serveur :
[sh]R5(config)#router eigrp 1
R5(config-router)#network 192.168.0.0 0.0.3.255
R5(config-router)#network 172.16.1.1 0.0.0.3[/sh]
Dans la table de routage R1, nous retrouvons nos réseaux du site nos réseaux du site distant.
Sur R4 qui porte le réseau 192.168.100.0/24, nous retrouvons aussi nos réseaux du site distant
[sh]R4#show ip route | s 192.168
D 192.168.1.0/24 [90/358400] via 172.16.1.13, 00:32:06, Ethernet0/1
D 192.168.2.0/24 [90/358400] via 172.16.1.13, 00:32:06, Ethernet0/1
D 192.168.3.0/24 [90/358400] via 172.16.1.13, 00:32:06, Ethernet0/1[/sh]
Depuis le poste 192.168.1.10 nous devrions donc être à même de pouvoir joindre le serveur
en 192.168.100.10
[sh]PC1#ping 192.168.100.10
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.100.10, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms[/sh]
3 / Passive-interface
Une interface passive est une interface pour laquelle le protocole EIGRP est activé mais qui
n’enverra ni recevra d’update et qui désactivera l’envoi de Hello Packet.
Cela permet de prévenir la création d’une relation EIGRP avec un routeur malicieux sur des
interfaces dites end-to-end.
Dans notre cas nous pouvons activer le mode passif sur les interfaces e0/0 – e0/1 – e0/2 du
routeur R5 et sur l’interface e0/1 du routeur R4 qui correspondent respectivement aux réseaux
utilisateurs et au réseau serveur.
Sur R5 nous allons par défaut configurer l’ensemble des interfaces en passive-interface et
seulement activer l’envoi de packet EIGRP sur l’interface d’interconnexion (e1/1) avec le
routeur R1.
R5(config)#router eigrp 1
R5(config-router)#passive-interface default
*Dec 6 15:47:20.756: %DUAL-5-NBRCHANGE: EIGRP-IPv4 1: Neighbor 172.16.1.2
(Ethernet1/1) is down: interface passive
R5(config-router)#no passive-interface Ethernet1/1
*Dec 6 15:47:31.230: %DUAL-5-NBRCHANGE: EIGRP-IPv4 1: Neighbor 172.16.1.2
(Ethernet1/1) is up: new adjacency
Nous pouvons valider l’activation du mode passif sur les interfaces avec la commande
suivante :
Sur R4 nous allons procéder de la même manière mais nous allons activer le mode passive
interface que sur l’interface e1/0
[sh]R4(config)#router eigrp 1
passive-interface ethernet 1/0
[/sh]
Nous pouvons valider l’activation du mode passif sur l’interface e1/0 sur R4
4/ Route summary
Suite à l’ajout du routeur R5 nous notons l’apparition de 3 nouveaux réseaux dans la table de
routage que nous pourrions résumer par une seule route à destination du réseau
192.168.0.0/22 permettant ainsi de réduire la table de routage et par la même occasion
l’utilisation des ressources des routeurs.
EIGRP propose cette fonctionnalité par le biais de la route summarization. Nous allons donc
forcer EIGRP à annoncer le réseau 192.168.0.0/22 depuis le routeur R5 vers le datacenter.
Nous allons pour se faire utiliser la commande ip summary-address eigrp AS n.n.n.n s.s.s.s.s
sur l’interface d’interteconnexion du routeur (R5) portant les réseaux que nous souhaitons
summarizer.
[sh]R5(config)#interface Ethernet1/1
R5(config-if)#ip summary-address eigrp 1 192.168.0.0 255.255.252.0
*Dec 2 17:38:34.612: %DUAL-5-NBRCHANGE: EIGRP-IPv4 1: Neighbor 172.16.1.2
(Ethernet1/1) is resync: summary configured
[/sh]
Avant :
Après :
Le stub routing est une fonctionnalité supportée par EIGRP qui permet d’améliorer la stabilité
et de réduire l’utilisation des ressources des équipements. Il évite l’envoi de « Query » de la
part des autre routeurs de l’AS lorsqu’ils perdent une route .
Un routeur stub est un routeur connecté à un seul neighbor (voisin), dans notre topologie R5
est un routeur stub.
[sh]R5(config)#router eigrp 1
R5(config-router)#eigrp stub[/sh]
Par défaut cela active la propagation des routes connectées et résumées (summary route).
R5(config-router)#eigrp stub ?
connected Do advertise connected routes
leak-map Allow dynamic prefixes based on the leak-map
receive-only Set receive only neighbor
redistributed Do advertise redistributed routes
static Do advertise static routes
summary Do advertise summary routes
Pour vérifier qu’un routeur distant est stub nous pouvons utiliser la commande suivante :
Pour mieux comprendre le concept de Query je vous invite à lire cet article.
Avec EIGRP nous pouvons faire du load-balancing entre deux liens qui non pas la même
metric. Cela permet d’utiliser la bande passante de deux liens simultanément. Pour pouvoir
utiliser le load-balancing il faut que le chemin secondaire soit un feasible successor, il doit
donc être présent dans le retour de la commande show ip eigrp topology.
On note que la FD du Feasible successor est égal à 2636800. Pour que ce chemin soit rajouté
à la table de routage il faut augmenter la métric minimum qui ce base sur la FD du successors
: 8*332800 = 2662400. La métric est multiplié par 8 elle est maintenant supérieur à la FD du
FS 2662400 > 2636800.
[sh]R1(config)#router eigrp 1
R1(config-router)#variance 8[/sh]
La route pour joindre le réseau 192.168.100.0/24 avec pour nexthop la 172.16.1.10 doit
maintenant être intégré à la table de routage :
Par défaut il est possible d’ajouter au maximun 4 routes différentes pour joindre un même
réseau :
R1#show ip protocols
—— Ignored lines ——
Automatic Summarization: disabled
Maximum path: 4
—— Ignored lines ——
Le trafic est proportionnellement répartit entre les chemins (R1 – R2 – R4 & R1 – R3 -R4)
par rapports aux métriques qui sont associées aux deux routes :
Il faut maintenant faire la même chose sur R4 car actuellement le flux de retour passe
uniquement par le next-hop 172.16.1.13,.
Dans la table de topology il n’existe qu’un seul chemin pour joindre le réseau 192.168.0.0/22
(R4 – R2 – R1 – R5)
Si nous regardons le schéma il devrait y avoir un second chemin par (R4 – R3 – R1 – R5)
En regardant la configuration de l’interface E0/2 sur R4 nous notons que le split-horizon est
activé :
Le split-horizon est une fonctionnalité qui évite les boucles de routage en empêchant
l’annonce d’une route par l’interface par laquelle elle a déjà été apprise.
Dans notre cas R3 apprend par ses interfaces Ethernet0/1 et Ethernet0/2 le réseau
192.168.0.0/22 respectivement par les routeur R1 et R4. R3 n’annoncera donc pas le réseau
192.168.0.0/22 par le biais de son interface Ethernet0/2 car ce réseau a été appris par celle-ci.
Deux solutions s’offre à nous pour pallier à ce problème : désactiver le split-horizon ce qui
dans notre cas n’est pas recommandé car nous irions droit vers une boucle de routage ou alors
bloquer l’annonce du réseau 192.168.0.0/22 par l’interface ethernet0/2 du routeur R4. Pour se
faire nous allons utiliser les distribute-list qui permettent de bloquer l’annonce de réseau dans
EIGRP
6.2/ Distribute-list
Nous créons d’abord une access-list qui va nous permettre de définir les réseaux que nous
souhaitons bloquer.
Ici nous bloquons le réseau 192.168.0.0/22 (deny) et nous autorisons tous les autres réseaux
Il ne nous reste plus qu’à l’appliquer sur le process EIGRP 1 en sortie des interfaces :
[sh]R4(config)#router eigrp 1
R4(config-router)#distribute-list Network_Block_out out[/sh]
A noter que le chemin par le next-hop 172.16.1.17 (R3) n’est pas un Feasible Successor car sa
RD est inférieur à la FD du successor. Nous pouvons le vérifier en jetant un oeil à la table de
topologie qui affiche seulement les Successor et les Feasible Successor :
[sh]R4#show ip eigrp topology | s 192.168.0.0
P 192.168.0.0/22, 1 successors, FD is 358400
via 172.16.1.13 (358400/332800), Ethernet0/1[/sh]
Nous ne pouvons donc pas encore utiliser le load-balancing sur R4 car le chemin par le next-
hop 172.16.1.17 n’est pas un FS. Nous allons devoir joueur avec les métriques EIGRP pour
modifier leurs valeurs. Cela est rendu possible grâce aux OFFSET-LIST.
6.3 / IP OFFSET-LIST :
Les OFFSET-LIST nous permettent d’agir sur la FD et la RD. Nous allons depuis R2 annoncé
une metric supérieur pour joindre le réseau 192.168.0.0/22 depuis l’interface ethernet0/1.
Nous créons d’abord un accest-list pour définir le réseau sur lequel nous souhaitons agir :
[sh]R2(config)#router eigrp 1
R2(config-router)#offset-list OFFSET out 2278402 ethernet 0/1[/sh]
La FD du chemin passant par 172.16.1.13 a été augmenté de 2278402, elle est maintenant
supérieur à la RD du chemin passant par 172.16.1.17. Il est donc maintenant un Feasible
Successor.
[sh]R4(config)#router eigrp 1
R4(config-router)#variance 2[/sh]
Nous allons maintenant lancer un ping depuis le PC1 (192.168.1.10) vers le SERVER1
(192.168.100.10) en lançant une capture Wireshark sur l’interface Ethernet0 & Ethernet1
Pou rappel voici les routes pour joindre le réseau 192.168.100.0/24 depuis R1.
[sh]PC1#ping 192.168.100.10
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.100.10, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms[/sh]
Aucun flux ne passe par l’interface ethernet 0/1 de R4 pourtant le load-balancing est bien
activé et la route est bien présente dans la table de routage.
Cela vient de la fonction Cisco Express Forwarding (CEF) des routeurs qui permet
d’optimiser le routage des packets, il s’agit d’une fonctionnalité activé par défaut sur
l’ensemble des routeurs Cisco.
Pour les besoins du tuto nous allons activer le Per-Paquet Load Balancing :
[sh]PC1#ping 192.168.100.10
Sending 8, 100-byte ICMP Echos to 192.168.100.10, timeout is 2 seconds:
!!!!!!!!
Success rate is 100 percent (8/8), round-trip min/avg/max = 1/1/1 ms
[/sh]
On peut maintenant voir des paquets circuler sur les deux liens. Ils sont répartis de manière
promotionnel en fonction des la bande passantes des liaisons (R1 – R2 100Mbit/s & R1 – R3
10Mbit/s)
Pour rappel nous pouvons en amont voir la répartition qui sera effectué en fonction d’une
destination avec la commande suivante :
Bonus :
Pour y voir un peu plus clair dans le routage EIGRP on peut bloquer l’annonce du réseau
d’interconnexion des routeurs (172.16.1.0/24).
Pour se faire nous appliquons une distribute-list sur l’ensemble des routeurs qui interdit en
entré des interfaces l’apprentissage en eigrp du réseau 172.16.1.0/24
Pour finir vous trouverez ici le lab complété avec l’ensemble des commandes passées dans
l’article et en bonus un petit aide mémoire des différentes commandes EIGRP.
R1(config)#router ospf 1
R1(config-router)#network 172.16.1.16 0.0.3.255 area 2
> Je suis débutant mais je ne comprend pas pourquoi annoncer le réseau 172.16.1.16
depuis R1. De plus, je crois qu’il y a une coquille dans le masque, c’est un /22 pour un
un réseau normalement en /30
R6(config-router)#router-id 6.6.6.6
R6(config-router)#network 172.16.1.16 0.0.3.255 area 2
> Même soucis sur la config R6
Je dis peut être des conneries mais je pense que ça vaut le coup de vérifier, merci pour
ton travail en tous cas, très bien expliqué et détaillé ! :)