[CISCO] : Configuration de l’EIGRP

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.

1/ Présentation de l’architecture

1.1/ Schéma d’architecture :

eigrp-topologie1.2/ Plan d’adressage :

eigrp-adressage

2/ : Configuration de base

Vous trouverez ici le lab associé avec l’adressage des interfaces pré-configurés. Il s’agit d’un lab réalisé sous UnetLab.

L’objectif de ce tutoriel est :

  • la communication du client du site distant (PC1) avec le serveur (SERVER1) en datacenter.
  • De configurer le loadbalancing EIGRP,
  • de summarizer les réseaux du site client.

2.1/ Activation de l’EIGRP

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 ***

Routing Protocol is « application »
Sending updates every 0 seconds
Invalid after 0 seconds, hold down 0, flushed after 0
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
Maximum path: 32
Routing for Networks:
Routing Information Sources:
Gateway Distance Last Update
Distance: (default is 4)

Routing Protocol is « eigrp 1 »
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-IPv4 Protocol for AS(1)
Metric weight K1=1, K2=0, K3=1, K4=0, K5=0
Soft SIA disabled
NSF-aware route hold timer is 240
Router-ID: 172.16.1.9
Topology : 0 (base)
Active Timer: 3 min
Distance: internal 90 external 170
Maximum path: 4
Maximum hopcount 100
Maximum metric variance 1

Automatic Summarization: disabled
Maximum path: 4
Routing for Networks:
172.16.1.0/30
172.16.1.4/30
172.16.1.8/30
Routing Information Sources:
Gateway Distance Last Update
Distance: internal 90 external 170
[/sh]

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)

eigrp-1Nous activons maintenant l’eigrp sur R2 :

[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.

R1#debug ip eigrp neighbor
*Nov 29 17:45:07.359: EIGRP: New peer 172.16.1.6
R1#
*Nov 29 17:45:07.359: %DUAL-5-NBRCHANGE: EIGRP-IPv4 1: Neighbor 172.16.1.6 (Ethernet0/0) is up: new adjacency

La commande show ip eigrp neighbors nous renvoi la liste des routeurs avec lequel une adjacency existe :

eigrp-4Pour que deux routeurs deviennent neighbors (voisins) EIGRP ils doivent remplir les conditions suivantes:

  • Fonctionner dans le même AS (Autonomous System), donc être configuré avec le même ASN.
  • L’interface concernée ne doit pas être configurée comme passive.
  • Les valeurs K (valeurs qui définissent le calcul de la métrique) doivent correspondre.

Une fois l’adjacency entre les deux routeurs créés, ils commencent à échanger leur table de routage (update) pour lesquelles il a une interface active (UP) et configuré dans le process EIGRP (network command).

eigrp-2

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) :

eigrp-3Par 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 :

Sur R1 nous configurons dans l’AS 1 un hello-interval à 2 secondes et un hold-timer à 6 secondes entre R1 et R2

[sh]R1(config)#interface Eth 0/0
R1(config-if)#ip hello-interval eigrp 1 2
R1(config-if)#ip hold-time eigrp 1 6[/sh]

Sur R2 nous configurons dans l’AS 1 un hello-interval à 2 secondes et un hold-timer à 6 secondes entre R2 et R1

[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]

C’est valeur peuvent être différentes entre les routeurs.

Allons maintenant jeter un œil à la table de routage de R1 et R2.
Nous utilisons la commande show ip route eigrp qui affiche les  routes apprises en EIGRP.

Voici la table de routage de R1 :

eigrp-5R1 a appris le réseau d’interco 172.16.1.12/30 entre R2 et R3  connu par R2 (interface e0/2).
Les valeurs [90/307200] nous indique dans l’ordre, la distance administrative par défaut d’EIGRP (90) et  la metric calculer par l’algorithme DUAL correspondant à la Feasable Distance (307200) dans la table de topologie EIGRP .

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

eigrp-7Dans 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).

La valeur 307200 correspond à la Feasability Distance (FD)
La valeur 281600 correspond à la Realiability Distance  (RD)

La Feasability Distance correspond à la metric calculer depuis le routeur, ici R1

La Realiability Distance correspond à la FD annoncé par le routeur distant, ici il s’agit de la FD du routeur R2 pour la route du réseaux 172.16.1.12/30

Vérifions cela dans la table de topologie de R2 :

eigrp-8Ci-dessus nous retrouvons en vert la FD pour joindre le réseau 172.16.1.12/30 depuis R2 correspondant bien à la RD visible sur R1.

Voici la table de routage de R2 :

eigrp-6R2 a appris le réseau d’interco 172.16.1.0/30 entre R1 et R5 connu par R1 (interface e1/1) et le réseau d’interco 172.16.1.8/30 entre R1 et R3 connu par R1 (interface e0/1).

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.

eigrp-10Nous activons sur R4, l’EIGRP sur l’ensemble de ses interfaces.
[sh]
R4(config)#router eigrp 1
R4(config-router)# network 172.16.1.12 0.0.0.3
R4(config-router)# network 172.16.1.16 0.0.0.3
R4(config-router)# network 192.168.100.0 0.0.0.255
[/sh]

R4 va devenir neighbor avec R2 et annoncer le réseau 192.168.100.0/24 à R2 qui va l’annoncer à R1.

Allons vérifier que le réseau 192.168.100.0/24 est bien présent dans la table de routage de R1 :

eigrp-11La route a bien été rajouté à la table de routage de R1.

Le serveur répond bien au ping depuis 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 :

eigrp-12Dans notre table de topologie nous avons actuellement qu’une seule route possible pour joindre le serveur (R1 – R2 – R4)

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.eigrp-13[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
eigrp-14Il devrait maintenant y avoir dans la topologie EIGRP de R1 les deux routes pour joindre le réseau 192.168.100.0/24

eigrp-15

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.

Ex :P 192.168.100.0/24, 1 successors, FD is 332800
via 172.16.1.6 (332800/307200), Ethernet0/0
via 172.16.1.10 (2636800/307200), Ethernet0/1

Ici le Successors (172.16.1.6) a une FD égal à 332800, le routeur 172.16.1.10 quant à lui à une RD égal à 307200. La condition est donc bien respecter le routeur 172.16.1.10 devient Feasible Successor pour joindre la destination 192.168.100.0/24.

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) :

eigrp-16Nous 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

eigrp-17

J’en profite pour activer sur R1 le debug ip routing et le debug ip eigrp neighbor,

  • debug ip routing : commande permettant de voir l’ensemble des changements effectués dans la table de routage (suppression, ajout de route).
  • debug ip eigrp neighbor : commande qui nous montre les changements d’état d’un neighbor

[sh]R1#debug ip routing
R1#debug ip eigrp neighbor[/sh]

debug ip eigrp neighbor :

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]

R1 supprime la route vers R2 pour joindre le réseau 192.168.100.0/24 de la table de routage
R1 rajoute la route vers R3 pour joindre le réseau 192.168.100.0/24 de la table de routage

Affichons maintenant la table de routage pour le réseau 192.168.100.0/24 :

R1#show ip route | s 192.168.100.0/24
D     192.168.100.0/24 [90/2636800] via 172.16.1.10, 00:10:05, Ethernet0/1

Le next-hop a changé dans la table de routage, il s’agit maintenant de R3.

En effectuant un traceroute nous notons bien que la nouvelle route (R1 – R3 – R4)  est bien utilisé pour joindre le serveur :

eigrp-18

Je vais maintenant intégrer le dernier routeur  ( R5 ) à la topologie EIGRP, il s’agit du routeur du site distant qui porte les réseaux clients : 192.168.1.0/24, 192.168.2.0/24, 192.168.3.0/24.

[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.

[sh]R1#show ip route | s 192.168
D     192.168.1.0/24 [90/307200] via 172.16.1.1, 00:30:24, Ethernet1/1
D     192.168.2.0/24 [90/307200] via 172.16.1.1, 00:30:24, Ethernet1/1
D     192.168.3.0/24 [90/307200] via 172.16.1.1, 00:30:24, Ethernet1/1[/sh]

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]

Ainsi que sur l’ensemble des routeurs d’interco (R2 – R3)

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

La commande passive-interface default configure l’ensemble des interfaces du routeur en mode passif. La relation de voisinage entre R5 et R1 tombe puisque R5 ne répond plus au Hello Packet de R1. La commande no passive-interface Ethernet1/1 réactive l’envoi de message EIGRP, la relation de voisinage entre R5 et R1  remonte.

Nous pouvons valider l’activation du mode passif sur les interfaces avec la commande suivante :

[sh]show ip protocols | s Passive
Passive Interface(s):
Ethernet0/0
Ethernet0/1
Ethernet0/2[/sh]

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

[sh]R4#show ip protocols | s Passive
Passive Interface(s):
Ethernet1/0[/sh]

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.

L’interface d’interconnexion entre R5 et R1 est l’interface Ethernet1/1 :

[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]

Nous validons la bonne prise en compte de la commande :

[sh]R5#show ip protocols  | s Address Summ
Address Summarization:
192.168.0.0/22 for Et1/1
Summarizing 3 components with metric 281600[/sh]

Faisons maintenant un tour dans la table de routage de R1 :

[sh]R1#show ip route eigrp | s 192.168.
D     192.168.0.0/22 [90/307200] via 172.16.1.1, 00:00:53, Ethernet1/1[/sh]

Nous remarquons maintenant que seul le réseau 192.168.0.0/22 est annoncé.

Avant :

[sh]R1#show ip route | s 192.168
D     192.168.1.0/24 [90/307200] via 172.16.1.1, 00:30:24, Ethernet1/1
D     192.168.2.0/24 [90/307200] via 172.16.1.1, 00:30:24, Ethernet1/1
D     192.168.3.0/24 [90/307200] via 172.16.1.1, 00:30:24, Ethernet1/1[/sh]

Après :

[sh]R1#show ip route eigrp | s 192.168.
D     192.168.0.0/22 [90/307200] via 172.16.1.1, 00:00:53, Ethernet1/1[/sh]

5/ EIGRP Stub routing

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.

Pour activer cette fonctionnalité nous utilisons la commande eigrp 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).

D’autres options existent :

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 :

R1#show ip eigrp neighbors detail
EIGRP-IPv4 Neighbors for AS(1)
H   Address                 Interface              Hold Uptime   SRTT   RTO  Q  Seq
(sec)         (ms)       Cnt Num
0   172.16.1.1              Et1/1                    13 00:05:46   12   100  0  8
Version 18.0/2.0, Retrans: 0, Retries: 0, Prefixes: 1
Topology-ids from peer – 0
   Stub Peer Advertising (CONNECTED SUMMARY ) Routes

R1 ne recevra plus de « Query » de la part des autres routeurs lorsque ceux-ci perdrons une route.

Pour mieux comprendre le concept de Query je vous invite à lire cet article.

6 / Unequal cost load-balancing

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.

Nous activons le load-balancing avec la commande variance

La variance défini un multiplicateur compris entre 1-128 il permet d’augmenter la métric minimal d’ajout à la table de routage en se basant sur la FD du successor.

R1#show ip eigrp topology | s 192.168.100.0
P 192.168.100.0/24, 1 successors, FD is 332800
via 172.16.1.6 (332800/307200), Ethernet0/0
via 172.16.1.10 (2636800/307200), Ethernet0/1

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 :

R1#show ip route | s 192.168.100.0
D     192.168.100.0/24 [90/2636800] via 172.16.1.10, 20:34:30, Ethernet0/1
D                                            [90/332800] via 172.16.1.6, 20:34:30, Ethernet0/0

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 ——

Nous pouvons toutefois modifier cette limite avec la commande maximum-paths.

EX :
[sh]router eigrp 1
maximun-path 2[/sh]

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 :

R1#show ip route 192.168.100.0
Routing entry for 192.168.100.0/24
—— Ignored lines ——
Routing Descriptor Blocks:
  * 172.16.1.10, from 172.16.1.10, 17:26:23 ago, via Ethernet0/1
Route metric is 2636800, traffic share count is 1
—— Ignored lines ——
   172.16.1.6, from 172.16.1.6, 17:26:23 ago, via Ethernet0/0
Route metric is 332800, traffic share count is 8
—— Ignored lines ——

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,.

[sh]R4#show ip route  | i 192.168.0.0
D     192.168.0.0/22 [90/358400] via 172.16.1.13, 4d03h, Ethernet0/1[/sh]

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)

[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]

Si nous regardons le schéma il devrait y avoir un second chemin par (R4 – R3 – R1 – R5)

Le réseau 192.168.0.0/22 est pourtant annoncé sur R3 :

[sh]R3#show ip eigrp topology all-links | s 192.168.0.0
P 192.168.0.0/22, 1 successors, FD is 384000, serno 11
via 172.16.1.18 (384000/358400), Ethernet0/2
via 172.16.1.9 (2636800/307200), Ethernet0/1[/sh]

En regardant la configuration de l’interface E0/2 sur R4 nous notons que le split-horizon est activé :

R3#show ip eigrp 1 interfaces detail ethernet 0/2
EIGRP-IPv4 Interfaces for AS(1)
                              Xmit Queue   PeerQ        Mean   Pacing Time   Multicast    Pending
Interface              Peers  Un/Reliable  Un/Reliable  SRTT   Un/Reliable   Flow Timer   Routes
Et0/2                    1        0/0       0/0           4       0/2           50           0
  Hello-interval is 5, Hold-time is 15
  Split-horizon is enabled
—— Ignored lines ——

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

[sh]R4(config)#ip access-list standard Network_Block_out
R4(config-std-nacl)#deny 192.168.0.0 0.0.0.3
R4(config-std-nacl)#permit any
R4(config-std-nacl)#end[/sh]

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]

R3 ne connais plus qu’un chemin pour joindre le réseau 192.168.0.0/22

[sh]R3#show ip eigrp topology all-links | s 192.168.0.0
P 192.168.0.0/22, 1 successors, FD is 384000, serno 12
via 172.16.1.9 (2636800/307200), Ethernet0/1[/sh]

N’apprenant plus le chemin par le biais de R4 il l’a annoncé à celui-ci :

R4#show ip eigrp topology all-links | s 192.168.0.0
P 192.168.0.0/22, 1 successors, FD is 358400, serno 8
        via 172.16.1.13 (358400/332800), Ethernet0/1
       via 172.16.1.17 (2662400/2636800), Ethernet0/2

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)#ip access-list standard OFFSET
R2(config-std-nacl)#permit 192.168.0.0 0.0.0.3[/sh]

Pour rappel voici les valeurs des FD et RD avant le passage de la commande :

R4#show ip eigrp topology all-link | s 192.168.0.0
P 192.168.0.0/22, 1 successors, FD is 358400, serno 38
via 172.16.1.13 (358400/332800), Ethernet0/1
via 172.16.1.17 (2662400/2636800), Ethernet0/2

On va maintenant annoncer une valeur additionnel entre R2 et R4 (ethernet0/1) suffisamment grande pour que la FD du chemin passant par le chemin 172.16.1.13 soit supérieur à la RD du chemin passant par la 172.16.1.17.

[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.

R4#show ip eigrp topology | s 192.168.0.0
P 192.168.0.0/22, 1 successors, FD is 2636802
via 172.16.1.13 (2636802/2611202), Ethernet0/1
via 172.16.1.17 (2662400/2636800), Ethernet0/2

Nous pouvons maintenant activer le load-balancing sur R4 :

[sh]R4(config)#router eigrp 1
R4(config-router)#variance 2[/sh]

Les deux routes sont maintenant présentes dans la table de routage :

[sh]R4#show ip route | s 192.168.0.0
D     192.168.0.0/22 [90/2662400] via 172.16.1.17, 00:00:04, Ethernet0/2
D      [90/2636802] via 172.16.1.13, 00:00:04, Ethernet0/1[/sh]

6.4 / Modification fonctionnement CEF

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.

R1#show ip eigrp topology | s 192.168.100.0
P 192.168.100.0/24, 1 successors, FD is 332800
via 172.16.1.6 (332800/307200), Ethernet0/0
via 172.16.1.10 (2636800/307200), Ethernet0/1

Nous lançons donc le ping depuis PC1 :

[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]

Capture Wireshark R1 ethernet0/0
Capture Wireshark R1 ethernet0/1

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.

Il existe deux modes de fonctionnement du load-balancing avec CEF « per-destination load balancing «  &  » per-packet load balancing « .

  • Per-Destination Load Balancing : L’équilibrage de charge par destination transfère les paquet en fonction du chemin d’accès à la destination. En gros l’ensemble des paquets qui auront une destination A prendront le chemin 1 et l’ensemble des paquets qui auront une destination B prendront le chemin 2.
  • Per-Paquet Load Balancing : L’équilibrage de charge par paquet va transférer un paquet  par le chemin 1 puis un second paquet par le chemin 2 pour une même destination. Cela assure un équilibrage de charge égal sur les deux liens mais cette fonctionnalité est plus gourmande en utilisation du processeur.

Par défaut le mode « Per-Destination Load Balancing  » est activé

Pour les besoins du tuto nous allons activer le Per-Paquet Load Balancing :

[sh]R1(config)#interface range e0/0-1
R1(config-if-range)#ip load-sharing per-packet[/sh]

[sh]R4(config)#interface range Ethernet0/1-2
R4(config-if-range)#ip load-sharing per-packet[/sh]

Nous allons maintenant effectuer le même test que précédemment :

[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]

Capture Wireshark R1 Ethernet 0/0
Capture Wireshark R1 Ethernet 0/1

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 :

R1#show ip route 192.168.100.0
Routing entry for 192.168.100.0/24
—— Ignored lines ——
Routing Descriptor Blocks:
  * 172.16.1.10, from 172.16.1.10, 17:26:23 ago, via Ethernet0/1
Route metric is 2636800, traffic share count is 1
—— Ignored lines ——
   172.16.1.6, from 172.16.1.6, 17:26:23 ago, via Ethernet0/0
Route metric is 332800, traffic share count is 8
—— Ignored lines ——

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

[sh]ip access-list standard Network_Block
deny 172.16.1.0 0.0.0.255
permit any
router eigrp 1
distribute-list Network_Block in[/sh]

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.

3 réflexions sur « [CISCO] : Configuration de l’EIGRP »

  1. Hello, je remarques quelques erreurs :

    Nous terminons par la configuration de l’area 2 sur le router R1 et R6 qui propagera le réseau serveur 192.168.100.0/24 :

    > Je ne vois pas de réseau en 100 dans la topologie, même en loopback

    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é ! :)

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.