Installation de routeurs dans une baie - image Cisco PressL’article intitulé « Introduction au protocole EIGRP » présente les principales caractéristiques du protocole EIGRP. Ce protocole évolué, définit sur la base des concepts à vecteurs de distances, commence toujours par identifier les routeurs voisins. C’est une caractéristique particulière de ce protocole parce que, d’habitude, les protocoles à vecteurs de distances ne nécessitent pas l’identification préalable des voisins. Ce n’est pas le cas du protocole EIGRP: pas d’échanges possibles sans voisins EIGRP !  

Dans cet article, nous allons présenter comment le protocole EIGRP arrive à identifier les routeurs qui lui sont voisins.

 

Étapes de fonctionnement du protocole EIGRP

On peut considérer que le protocole EIGRP repose sur 4 phases (ou étapes) distinctes:

  1. la découverte des routeurs voisins EIGRP,
  2. l’échange des informations topologiques entre voisins,
  3. l’identification du meilleur chemin grâce à l’algorithme DUAL (Diffusion Update ALgortihm),
  4. maintien des tables de voisinage et de topologie.

Ainsi, cet article présente la première étape: la découverte des routeurs voisins.

 

Protocole Hello & Découverte des voisins EIGRP

Le moyen de découvrir les routeurs voisins repose sur l’utilisation d’un « protocole Hello ».

échange de messages hellos EIGRP entre routeurs voisins.

Il s’agit de messages périodiques transmis en multicast (adresse 224.0.0.10 réservée pour EIGRP) pour découvrir les voisins EIGRP présents sur les réseaux attachés.

Ces messages sont transportés en utilisant un protocole fiable: le protocole RTP (Reliable Transport Protocole). Ce protocole s’appuie sur IP et est identifié par protocole IP n° 88 (réservé par l’IANA pour le transport d’EIGRP). 

Ce protocole peut transporter différents messages EIGRP: Hello, Update, Query ou Reply. Bien sûr, dans le contexte du protocole Hello, ce sont les messages Hello qui nous intéressent…

 

Messages Hello

Ces messages sont utilisés pour la découverte automatique des voisins EIGRP mais aussi pour la détection de panne des voisins. Je me répète mais au moins le message passe: c’est une grosse différence avec les protocoles à vecteurs de distance ; EIGRP doit former une relation de voisinage avant de pouvoir échanger des informations de routage. 

 

Analyse du contenu d'un message Hello

 

 

Comme on peut le voir sur la capture ci-dessus, les messages Hello EIGRP incluent différents paramètres qui vont être utilisés par le protocole.

 

Informations échangées

Ces paramètres sont utilisés pour permettre la vérification de la cohérence entre les configurations des routeurs candidats à établir une adjacence. On retrouve donc, dans un message Hello EIGRP,  les paramètres suivants:

  • numéro de système autonome (associé au processus EIGRP): deux routeurs EIGRP ne peuvent être voisins que s’ils sont dans le même domaine (ou système autonome) – peut importe la valeur utilisée, seul importe que les deux valeurs soient identiques entre les deux routeurs;
  • la valeur des différents coefficients multiplicateurs (K values) pour le calcul de la métrique. La métrique EIGRP est calculée à partir de la bande passante minimale d’un chemin, du délai, etc. La formule de calcul repose donc sur les attributs des routes mais aussi à des coefficients associés à ces attributs (pour permettre de choisir l’importance accordée à tel ou tel critère). Je reviendrais ultérieurement sur le calcul détaillé de la métrique EIGRP. ll faut néanmoins noter que l’absence de boucle dans le réseau ne peut être garanti que si le calcul de la métrique EIGRP est identique entre les différents routeurs du réseau EIGRP donc en échangeant les attributs des routes (dans les messages UPDATE) ET les coefficients multiplicateurs à appliquer à ces attributs (dans les messages HELLO);
  • éventuellement, les paramètres d’authentification pour protéger le réseau des routeurs intrus….

Le message Hello véhicule également le paramètre Hold Time mais rien n’impose que les valeurs soient identiques entre les deux routeurs. Cette valeur est communiquée au routeur distant pour lui indiquer la valeur qu’il doit utiliser.

 

Table des voisins EIGRP

Les voisins découverts par le protocole Hello sont insérés dans la table des voisins EIGRP. Cette table peut être affichée dans l’IOS en utilisant la commande show suivante:

show ip eigrp neighbors

 

Deux voisins EIGRP qui ont validé la cohérence des paramètres échangés via le protocole Hello et qui s’échangent des mises à jour de routage sont considérés comme des routeurs EIGRP adjacents.

 

Démonstration Pratique

Pour la démonstration pratique de ce qui vient d’être présenté, nous allons mettre en place une adjacence EIGRP entre deux routeurs (R1 et R2) disposant d’une connectivité de niveau 2. L’activation du protocole EIGRP se fait en deux commandes (en rouge ci-dessous)

R1#sh ip int br | exc una
Interface IP-Address OK? Method Status Protocol
Ethernet0/0 10.1.2.1 YES manual up up
Loopback0 10.1.1.1 YES manual up up
R1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#router eigrp 1
R1(config-router)#network 10.1.0.0 0.0.255.255
R1(config-router)#end
R1#

 

Comme pour OSPF, l’activation peut se faire à l’aide de la commande « network« . Ici, nous activons toutes les interfaces qui commencent par 10.1 (donc les interfaces 10.1.2.1 – eth0/0 – et 10.1.1.1 – loopback 0). puisque les bits de jokers correspondent aux deux derniers octets (0.0.255.255).

Vérifions le comportement de R1 après ces deux commandes:

 R1#debug ip packet detail
IP packet debugging is on (detailed)
R1#
*Apr 29 23:43:42.481: IP: s=10.1.2.1 (local), d=224.0.0.10 (Ethernet0/0), len 60, local feature, proto=88, Logical MN local(14), rtype 0, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Apr 29 23:43:42.482: IP: s=10.1.2.1 (local), d=224.0.0.10 (Ethernet0/0), len 60, sending broad/multicast, proto=88
*Apr 29 23:43:42.482: IP: s=10.1.2.1 (local), d=224.0.0.10 (Ethernet0/0), len 60, sending full packet, proto=88
R1#

 

On voit que le routeur R1 génère sur E0/0 des messages à destination de l’adresse multicast 224.0.0.20 (protocole 88). Ce qui nous permet d’identifier des paquets EIGRP. Activons maintenant EIGRP sur l’interface du routeur R2 qui fait face à R1. Avant cela, nous allons activer une commande DEBUG qui va nous permettre de suivre les échanges EIGRP:

R2#debug eigrp packet
 (UPDATE, REQUEST, QUERY, REPLY, HELLO, UNKNOWN, PROBE, ACK, STUB, SIAQUERY, SIAREPLY)
EIGRP Packet debugging is on
R2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#router eigrp 1
R2(config-router)#netw 10.1.2.2 0.0.0.0
R2(config-router)#e
*Apr 29 23:51:43.729: EIGRP: Sending HELLO on Et0/0 - paklen 20
*Apr 29 23:51:43.729: AS 1, Flags 0x0:(NULL), Seq 0/0 interfaceQ 0/0 iidbQ un/rely 0/0
*Apr 29 23:51:43.771: EIGRP: Received HELLO on Et0/0 - paklen 30 nbr 10.1.2.1
*Apr 29 23:51:43.771: AS 1, Flags 0x0:(NULL), Seq 0/0 interfaceQ 0/0
*Apr 29 23:51:43.782: EIGRP: Add Peer: Total 1 (1/0/0/0/0)
*Apr 29 23:51:43.782: EIGRP: Add Peer: Total 1 (1/0/1/0/0)
*Apr 29 23:51:43.782: %DUAL-5-NBRCHANGE: EIGRP-IPv4 1: Neighbor 10.1.2.1 (Ethernet0/0) is up: new adjacency

 

Les traces EIGRP montrent l’émission de message HELLO ainsi que la réception de message HELLO. A partir de là, nous savons que R1 et R2 sont des routeurs voisins. Cela ne veut pas forcément dire qu’ils sont adjacents mais qu’ils sont voisins: il faut pour cela vérifier que les paramètres échangés soient cohérents.

Nous  pouvons voir la list des voisins depuis un routeur avec la commande show suivante:

R2#show ip eigrp neighbors
EIGRP-IPv4 Neighbors for AS(1)
H Address Interface Hold Uptime SRTT RTO Q Seq
 (sec) (ms) Cnt Num
0 10.1.2.1 Et0/0 13 00:07:48 27 162 0 2
R2#

 

Cette commande, lancée sur R2, permet d’apprendre plusieurs éléments:

  • l’adresse IP du routeur voisin EIGRP (ici 10.1.2.1)
  • l’interface d’accès à ce routeur (Et0/0)
  • la durée avant de déclarer ce voisin en panne (sans réception de message Hello avant), ici 13 secondes
  • depuis combien de temps ce voisin est connu (ici 7 min et 48 secondes)
  • le Smooth Round Trip Time, ici 27 ms (le délai pour l’échange de paquets IP) et le Retransmit interval (162 ms) utilisés par le protocole RTP (qui assure la fiabilité des échanges);
  • le nombre de message dans la file d’attente (ici, 0 ). La valeur 0 est un indicateur de convergence EIGRP: pas de message en attente cela veut dire que les échanges requis ont eu lieu (pas de soucis de connectivité et aucun message en attente de traitement).

 

Les autres commandes show intéressantes sont:

R2#show ip eigrp interfaces
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/0 1 0/0 0/0 27 0/2 128 0

R2#show ip protocols

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
 NSF-aware route hold timer is 240
 Router-ID: 10.2.2.2
 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:
 10.1.2.2/32
 Routing Information Sources:
 Gateway Distance Last Update
 Gateway Distance Last Update
 10.1.2.1 90 00:19:06
 Distance: internal 90 external 170

R2#

Cette dernière commande (n’hésitez pas à rechercher ces valeurs dans la capture ci-dessus) permet de retrouver:

  • le numéro de système autonome,
  • les coefficients pour le calcul de la métrique,
  • le nombre maximum de sauts,
  • les interfaces pour lesquels EIGRP est activé,
  • la distance administrative pour les routes EIGRP internes et externes.

 

Nous avons donc activé EIGRP entre les deux routeurs R1 et R2 et utilisé quelques commandes show intéressantes permettant de vérifier l’état des voisins et adjacences. Nous n’avons pas abordé les étapes suivantes qui consistent à échanger les routes entre les routeurs: c’est l’objet d’un autre article ! 

En attendant, n’hésitez pas à me faire vos commentaires ou à me poser les questions relatives aux adjacences EIGRP dans la section commentaire ci-dessous !