ad4

Libellés

ad7

Translate - traduction

mercredi 25 mars 2015

EIGRP ( Enhanced Interior Gateway Routing Protocol ) – Les bases

EIGRP ( Enhanced Interior Gateway Routing Protocol ) – Les bases

EIGRP (Enhanced Interior Gateway Routing Protocol) est un protocole de routage développé par Cisco. Cet article reprend les bases de son fonctionnement et de sa configuration.

Introduction

EIGRP est un protocole de routage de type « distance vector » (vecteur de distance) avancé (ou hybride selon les points de vue). Bien que son fonctionnement global ressemble très fort à un protocole de type « distance vector » il dispose d’une série de caractéristiques que l’on retrouve par exemple dans OSPF qui est un « link state protocol » (protocole d’état des lien) comme l’établissement de relations d’adjacence.

Caractéristiques

  • Supporte le VLSM (Variable Length Subnet Mask), c’est donc un protocole de routage « classless ».
  • Fonctionne sur base de l’algorithme DUAL pour une sélection efficace des routes tout en évitant les boucles.
  • Relations d’adjacence avec les routeurs voisins.
  • Transmissions des messages en multicast (224.0.0.10) et unicast
  • Supporte plusieurs protocoles de la couche réseau: IPv4, IPv6, AppleTalk, IPX, …
  • Load-balancing et notamment sur routes ayant des métriques différentes.
  • « Summarization » à n’importe quel endroit du réseau.
  • « Auto-summarization », par défaut, entre réseaux majeurs (entre deux réseaux classfull).
  • Echange des messages entre routeurs assuré par RTP (Reliable Transfer Protocol).
  • Métrique tenant compte de la bande passante et du délai des interfaces. D’autres paramètres peuvent être configurés en plus ( fiabilité et charge de l’interface).
  • Distance administrative pour les routes internes: 90 (valeur par défaut)
  • Distance administrative pour les routes externes: 170 (valeur par défaut)

Fonctionnement

Tout d’abord, EIGRP fonctionne sur base d’un numéro de système autonome ( « Autonomous System Number » ou « ASN »). C’est-à-dire qu’il pourra uniquement communiquer avec les routers où EIGRP est configuré pour le même ASN.
Ensuite, une fois qu’on l’a activé sur une interface, que ce soit de manière dynamique ou statique, EIGRP tente de découvrir des voisins potentiels pour celà il y envoi des message « HELLO ».
Lorsque deux routeurs reçoivent des messages HELLO l’un de l’autre, ils vérifient alors les conditions d’adjacence afin de décider si oui ou non ils deviendront des voisins EIGRP (neighbors).
Pour que deux routeurs deviennent voisins EIGRP il doivent remplir les conditions suivantes:
  • Fonctionner dans le même AS (Autonomous System), donc être configuré avec le même ASN.
  • Les deux routeurs doivent pouvoir s’envoyer et recevoir des packets IP.
  • Les interfaces doivent être configurées avec une adresse IP dans le même subnet.
  • 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.
  • L’authentification EIGRP (si configurée) doit être passée avec succès.
Si ces différentes conditions sont vérifiées, les deux routeurs se considèrent alors comme voisins EIGRP, ajoutent cette relation dans leur table de voisinage, et commencent à s’échanger des informations.
Lorsqu’une relation de voisins vient de s’établir, chaque routeur commence par envoyer la totalité de ses routes connues pour lesquelles il a une interface active ET configurée dans EIGRP. Par la suite, seules les modifications seront envoyées.
Afin de garantir une certain stabilité, les routeurs s’échangent en permanence des messages HELLO. Ces messages HELLO sont envoyés à intervalles réguliers et ont une durée de vie. Si un des deux routeurs n’a pas reçu de nouveau HELLO avant que la durée de vie du précédent soit écoulée, le routeur voisin est considéré comme défaillant, l’adjacence est rompue et les routes reçues par ce voisin sont retirées de la table de routage.
Chaque routeur garde en mémoire toutes les informations sur les routes reçues de ses voisins et il les stocke dans sa table de topologie. EIGRP utilise ensuite l’algorithme DUAL pour sélectionner la meilleure route vers chaque sous-réseau, calcule la métrique à y associer et place le résultat dans sa table de routage.

La métrique

Par défaut, EIGRP calcule la métrique d’un subnet en tenant compte de la bande passante et du délai des interfaces. D’autres éléments peuvent être configurés pour entrer dans le calcul: la fiabilité de l’interface et la charge de l’interface.
La métrique (avec les paramètre par défaut) se calcule comme suit:
Métrique = ( ( 10.000.000 / PPBP ) + S[délais] ) x 256
PPBP: Plus petite bande passante vers le subnet en kbits/s
S[délais]: Somme des délais des interfaces vers le subnet exprimée en 10µs (dizaine de µs)

« Feasible Distance » et « Reported Distance »

La « Feasible Distance » (FD) est la métrique pour un subnet du point de vue du routeur lui-même, utilisée pour choisir la meilleure route vers ce subnet.
La « Reported Distance » (RD) est la métrique pour un subnet du point de vue du routeur voisin. (La métrique annoncée par le routeur voisin).
Lorsque deux routeurs s’échangent leur topologie, ils envoient des messages de type « Update » contenant une série d’information ( subnet concerné, délai, bande passante, charge de l’interface, fiabilité de l’interface, MTU et nombre de sauts).
Le routeur qui reçoit l’information l’intègre dans sa table de topologie et ensuite calcule la RD du subnet avec ces informations et la FD pour ce subnet. Voici un exemple:
R1 est connecté au subnet 192.168.0.0 / 24 via son interface FastEthernet0/0
R1 et R2 sont connectés via leurs inerfaces Serial 0/0 respectives. (172.16.0.0 / 30)
Le schéma ci-dessous reprend l’update envoyé par R1 à R2 concernant son subnet 192.168.0.0

« Successor » et « Feasible Successor « 

Une des particularité d’EIGRP réside dans le fait qu’il garde dans sa table de topologie toutes les informations reçues de ses voisins, y compris les routes qui n’ont pas été intégrée dans la table de routage. C’est là qu’on rencontre les termes « Successor  » et « Feasible Successor ».
Quand plusieurs routes possibles existent, le « Successor » est la route qui a la plus petite métrique vers le subnet … donc qui a la plus petite « Feasible Distance ». Le routeur qui annonce cette route sera alors le « next-hop », le prochain saut vers ce subnet. C’est cette route qui sera placée dans la table de routage.
Dans certaines conditions, d’autres routes peuvent être considérés comme valides sans pour autant être les meilleures. Ce sont les « Feasible Successors ». Ces routes ne sont, dans une configuration par défaut, pasp lacée dans la table de routage. Toutefois, si le « Successor » actuel devait tomber, EIGRP irait alors directement chercher une alternative dans sa table de topologie parmi les « Feasible Successors ».
Pour qu’une route soit considérée comme « Feasible Successor » il faut que la RD de cette route soit strictement inférieur à la FD de la meilleure route. Exemple: (les valeurs FD et RD sont ici simplifiées et non réalistes afin de rendre la compréhension plus aisée).
Un routeur a, dans sa topolgie, trois routes vers le subnet 192.168.0.0 / 24:
Route n°1 : via 10.0.0.1, RD=1000, FD=2000
Route n°2 : via 10.0.1.1, RD=1500, FD=2750
Route n°3 : via 10.0.2.1, RD=2500, FD=3000
la Route n°1 sera le « Successor », puisque c’est la plus petite FD.
la Route n°2 sera un « Feasible Successor » car RD(route2) < FD(route1)
la Route n°3 ne sera pas un « Feasible Successor », RD(coute3) > FD(route1)

Que se passe-t-il lors d’un accident sur le réseau ?

Il arrive bien entendu qu’une routeur perde une liaison pour une raison x ou y. Que ce soit à cause d’une interface défaillante, d’un voisin qui ne répond plus, … EIGRP va tenter de trouver une solution…
  1. EIGRP analyse sa topologie. Si un ou plusieurs « Feasible Successor » existent, il remplace la route par celle parmi les FS ayant la plus petite FD.
  2. Si EIGRP n’a pas de FS dans sa topologie, il entre dans un processus de requêtes. Il envoi des requêtes à ses voisins à la recherche d’une nouvelle route vers le subnet perdu. Ces voisins, s’ils n’ont pas de solution immédiate à proposer envoient à leur tour des requêtes à leurs propre voisins … etc.
Autant dire que la présence d’un FS dans la topologie permet d’améliorer sensiblement la convergence du réseau.

Configuration de base

Passons maintenant à la configuration de base d’EIGRP, nous allons donc:
  1. Configurer EIGRP pour fonctionner dans un ASN. ( router eigrp <asn> )
  2. Activer EIGRP de manière dynamique sur les différentes interfaces du routeur ( network <subnet> [masque inverse] )
On reprend ici l’exemple illustré plus haut. R1 connecté à un subnet 192.168.0.0/24 via son interface Fa0/0 ( adresse ip 192.168.0.1 /24), également connecté à R2 via son interface S0/0 (adresse ip 172.16.0.1/30). R2 ayant son interface S0/0 configurée avec une adresse ip 172.16.0.2/30.
Sur R1:
R1>enable
R1#configure terminal
R1(config)#router eigrp 10
R1(config-router)#network 192.168.0.0
R1(config-router)#network 172.16.0.0 0.0.0.3
R1(config-router)#exit
R1(config)#exit
R1#
Sur R2:
R2>enable
R2#configure terminal
R2(config)#router eigrp 10
R2(config-router)#network 172.16.0.0
R2(config-router)#exit
R2(config)#exit
R2#
Quelques explications…
On a donc ici bien activé EIGRP sur les deux routeurs pour l’ASN 10.
Sur R1 on a bien activé l’interface Fa0/0 et S0/0 via les commandes network.
Sur R2, EIGRP est activé pour l’interface S0/0.
Notez la différence d’utilisation de la commande « network ». Lorsque l’on ne spécifie que le subnet (sans masque inverse) EIGRP sera activé pour toutes les interfaces correspondantes. Donc dans le cas de « network 172.16.0.0″ toutes les interfaces dont l’adresse IP commencerait par 172.16…. seraient englobées.
Par contre si on spécifie un masque inverse (wildcard mask) EIGRP compare chaque interface en appliquant le masque (à peu de chose près comme dans le cas des access-list). On peut aisément calculer les adresses IP qui correspondent à unsubnet/masque inverse par une simple addition. Par exemple dans le cas de « network 172.16.0.0 0.0.0.3″:
  172. 16.  0.  0
+   0.  0.  0.  3
=================
  172. 16.  0.  3
Donc toues les adresses comprises entre 172.16.0.0 et 172.16.0.3 seront prises en compte.
L’utilisation du masque inverse est optionnelle. Toutefois cela permet de bien cibler les interfaces que l’on désire activer sans risquer d’englober l’une ou l’autre pour lesquelles EIGRP ne devrait pas être active.
Vérification de fonctionnement d’EIGRP
La première chose à vérifier, c’est si EIGRP est bien fonctionnel avec la commande « show ip protocols »
R1#sh ip protocols
Routing Protocol is "eigrp 10"
 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 10
 EIGRP NSF-aware route hold timer is 240s
 Automatic network summarization is in effect
 Automatic address summarization:
 192.168.0.0/24 for Serial0/0
 172.16.0.0/16 for FastEthernet0/0
 Summarizing with metric 2169856
 Maximum path: 4
 Routing for Networks:
 172.16.0.0/30
 192.168.0.0
 Routing Information Sources:
 Gateway         Distance      Last Update
 (this router)         90      00:30:36
 172.16.0.2            90      00:29:08
 Distance: internal 90 external 170
R1#
  • On a donc la confirmation ici qu’EIGRP est bien actif et qu’il est configuré pour l’ASN 10.
  • La deuxième ligne mise en évidence, ce sont les valeurs K qui définissent les paramètres de calcul de la métrique EIGRP. Toujours utile de les retrouver encas de problème d’établissement des adjacences (voir plus haut le paragraphe concernant les condition pour former une adjacence).
  • La troisième ligne en bleu indique que l’auto-summary est actif (par défaut). Ce qui fait qu’EIGRP annonce un summary de chaque réseau classefull (les quelques lignes juste en dessous) puisque R1 est à la frontière de deux réseaux majeurs.
  • La quatrième partie colorée indique pour quels subnets on a activé EIGRP via les commandes « network <subnet> [masque inverse] »
  • Enfin la dernière ligne donne les distances administratives utilisées. Ici ce sont les valeurs par défaut d’EIGRP.
Deuxième étape, vérifier sur quelles interfaces EIGRP est activé: « show ip eigrp interfaces »
R1#sh ip eigrp interfaces
IP-EIGRP interfaces for process 10
Xmit Queue   Mean   Pacing Time   Multicast    Pending
Interface        Peers  Un/Reliable  SRTT   Un/Reliable   Flow Timer   Routes
Fa0/0              0        0/0         0       0/10           0           0
Se0/0              1        0/0        83       0/15           0           0
R1#
Troisième étape, vérifier les adjacences via la commande « show ip eigrp neighbors »
R1#sh ip eigrp neighbors
IP-EIGRP neighbors for process 10
H   Address                 Interface       Hold Uptime   SRTT   RTO  Q  Seq
 (sec)         (ms)       Cnt Num
0   172.16.0.2              Se0/0             11 00:25:51   83   498  0  3
R1#
On a donc bien ici une adjacence avec R2 (172.16.0.2). On retrouve aussi l’interface via laquelle l’adjacence est formée.
La colonne « Hold » indique la durée de vie du dernier message Hello reçu. Si cette valeur tombe à zéro, la’adjacence est considérée comme défaillante et est annulée.
Enfin, analyser la table de routage et la table de topologie: « show ip route » et « show ip eigrp topology »
R2#sh ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
 D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
 N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
 E1 - OSPF external type 1, E2 - OSPF external type 2
 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
 ia - IS-IS inter area, * - candidate default, U - per-user static route
 o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

 172.16.0.0/30 is subnetted, 1 subnets
C       172.16.0.0 is directly connected, Serial0/0
D    192.168.0.0/24 [90/2195456] via 172.16.0.1, 00:27:10, Serial0/0
R2#
R2 a bien appris une route pour le subnet 192.168.0.0/24. Le next-hop est 172.16.0.1. L’interface de sortie est Serial0/0. La valeur [90/2195456] indique la distance administrative (90) et la métrique pour la route (2195456) qui est aussi la FD de la route.
R2#sh ip eigrp topology
IP-EIGRP Topology Table for AS(10)/ID(172.16.0.2)

Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply, r - reply Status, s - sia Status

P 192.168.0.0/24, 1 successors, FD is 2195456
 via 172.16.0.1 (2195456/281600), Serial0/0
P 172.16.0.0/30, 1 successors, FD is 2169856
 via Connected, Serial0/0
R2#
On retrouve dans la table de topologie les routes présentes dans la table de routage. A noter que si il y avait des alternatives à ces routes, pour autant qu’elles soient considérées comme feasible successors, elle seraient apparues dans cette table-ci.
Les valeurs 2195456/281600 correspondent à la RD ( 281600) et la FD (2195456) de la route. Ce qui signifie donc que R1 a annoncé à R2 une route vers 192.168.0.0/24 et qu’il a une métrique de 281600 pour cette route.
Il suffit de vérifier sur R1…
R1#sh ip eigrp topology
IP-EIGRP Topology Table for AS(10)/ID(192.168.0.1)

Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply, r - reply Status, s - sia Status

P 192.168.0.0/24, 1 successors, FD is 281600
 via Connected, FastEthernet0/0
P 172.16.0.0/16, 1 successors, FD is 2169856
 via Summary (2169856/0), Null0
P 172.16.0.0/30, 1 successors, FD is 2169856
 via Connected, Serial0/0
R1#
En effet … R1 a bien une métrique de 281600 pour atteindre le subnet 192.168.0.0/24. Une chose intéressante à noter ici… la présence d’un summary (en vert). Vu que l’auto-summary est active par défaut et que R1 est à la frontière de deux réseaux majeurs (192.168.0.0 et 172.16.0.0) EIGRP crée un summary et l’annonce vers ses voisins.
On retrouve d’ailleurs ce summary dans la table de routage de R1…
R1#sh ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
 D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
 N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
 E1 - OSPF external type 1, E2 - OSPF external type 2
 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
 ia - IS-IS inter area, * - candidate default, U - per-user static route
 o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

 172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
C       172.16.0.0/30 is directly connected, Serial0/0
D       172.16.0.0/16 is a summary, 00:27:45, Null0
C    192.168.0.0/24 is directly connected, FastEthernet0/0
R1#
Voilà qui conclut ce premier article concernant EIGRP.

Aucun commentaire:

Enregistrer un commentaire