Les protocoles de routage

Publié par

Il existe différents protocoles de routage (EIGRP, OSPF) provenant de deux familles de protocoles (à état de lien, à vecteur de distance).

Les protocoles de routage interne

Ce sont des IGP (Internal Gateway Protocol): ils sont destinés à des réseaux de petites et moyennes tailles. Les EGP (External Gateway Protocol) sont, eux, des protocoles pour passer d’un opérateur à un autre.

L’objectif est d’acheminer un paquet d’un point A à un point B. Les directions se font uniquement avec la couche 3 du modèle OSI. De manière générale, on cherchera le chemin le plus court. Pour trouver ce chemin, les protocoles de routage utilisent des algorithmes distribués (exécutés sur chaque routeur) et itératifs (exécutés en boucle).

Pour faire passer les paquets d’un routeur à un autre, on utilise une table de routage. Si le routeur ne connaît pas la route à emprunter, il utilisera la route par défaut. Ces tables sont alimentées par les protocoles de routage.


Les 2 familles de protocoles

Les protocoles à vecteur de distance

Le routeur se base sur le nombre de sauts qu’il doit parcourir pour atteindre un réseau. Chaque saut représente un routeur. Les routeurs voisins s’échangent leurs informations pour remplir leur table de routage.

R1 s’annonce à R2. R2 ajoute R1 à sa table de routage: c’est l’équivalent d’un saut.

Puis R2 transmet cette information à R3, R4 et R5. R4 est le routeur central et reçoit donc plusieurs informations provenant de R2 (distance de 2 sauts) mais aussi de R3 et R5 (distance de 3 sauts). R4 choisira donc le chemin passant par R2.

Puis R6 reçoit également des informations de R3, R4 et R5 mais le nombre de sauts sera le même pour chaque. R6 choisira aléatoirement son chemin.

Chaque routeur a ainsi sa table de routage qui sera régulièrement mis à jour. Les routeurs seront ainsi prévenus en cas de panne d’un routeur voisin.

Les protocoles RIP et EIGRP font partie de cette famille de protocole.

Le routage à état de lien

L’objectif sera de remplir la table de routage également. La différence de ce protocole est que l’on va prendre en compte la qualité de la bande passante.

Reprenons le schéma précédent mais avec la bande passante.

Ici, R2 envoie des messages à R1, R3, R4 et R5. De cette façon, il pourra établir sa table de routage.

Puis R2 va partager cette information avec tous les routeurs du réseau. Chaque routeur connaîtra ainsi la topologie du réseau !

Pour déterminer el meilleur chemin, on utilise l’algorithme de Dijkstra. Celui utilise le coût des routes (la bande passante).

Sur le schéma, R1 essaie de trouver le meilleur chemin vers R6. Une fois arrivé à R2, le meilleur chemin est R4 pour arriver à R6.

Retenons les caractéristiques principales de ces 2 protocoles:

A vecteur distanceA état de lien
pas de connaissance du réseau
convergence lente
demande peu de ressources
Exemple: EIGRP
connaissance du réseau
convergence rapide
demande beaucoup de ressources
Exemple: OSPF

Le protocole EIGRP (Enhanced Interior Gateway Routing Protocol)

Ce protocole est développé par Cisco. EIGRP est donc un protocole à vecteur de distance. Cependant, il utilise certaines fonctions d’un protocole à état de lien.

  • EIGRP résout le problème des boucles. Il a connaissance du réseau comme un protocole à état de lien.
  • La convergence des informations est rapide.
  • Prise en compte de la bande passante et du délai, pas de prise en compte des sauts.
  • Seul protocole à avoir une route de secours.
  • Seul protocole à pouvoir faire du load-balancing sur des bandes passantes égales ou inégales.
  • Distance administrative de 90

La distance administrative définit la fiabilité d’un protocole. Plus cette distance est petite, plus le protocole est fiable.

EIGRP envoie des messages à ses voisins. S’il reçoit des messages, il stocke son voisinage dans une table de voisinage que l’on peut consulter avec la commande show ip eigrp neighbors .

Puis le routeur envoie ses données au reste du système. Chaque routeur aura connaissance du réseau ( commande show ip eigrp topology) .

Les routeurs seront en mesure de choisir la meilleure route vers un réseau donné ( commande show ip route ).


Le protocole OSPF (Open Shortest Path First)

Le protocole OSPF est un concurrent d’EIGRP. OSPF est un protocole à état de lien, contrairement à EIGRP qui est un protocole hybride.

  • Chaque routeur connaît son voisinage ainsi que la totalité des routeurs dans son réseau.
  • La meilleure route est choisie par rapport à la métrique (la bande passante).
  • Load-balancing possible seulement si les liens ont la même bande passante.
  • Les messages sont envoyés toutes les 10 secondes. La convergence est rapide, car si un routeur ne reçoit pas 4 messages d’affilée, il change tout de suite sa topologie.

Il existe ce que l’on appelle un routeur désigné: c’est lui qui va recevoir tous les paquets de mise à jour avant de les redistribuer.

La distance administrative du protocole OSPF est de 110.

Le fonctionnement:

Chaque routeur envoie un message. S’il a un message en retour, le routeur est ajouté dans la table de voisinage (commande show ip ospf neighbor ).

Cette table est ensuite envoyée à tous les membres du réseau. Cette information est divisée en 4 messages appelés LSA (Link-state advertisements).

  1. message DBD (Database Description): envoi de la base de données
  2. message LSR (Link State Request): envoi d’un message vers un routeur inconnu qui vient d’envoyer un message.
  3. message LSU (Link State Update): le routeur inconnu… ne l’est plus.
  4. message LSAck (Link State Acquittement): confirmation de réception de message.

Revoyons les différences entre EIGRP et OSPF.

OSPFEIGRP
présent sur tous les routeurspas encore présent sur tous les routeurs
Distance administrative: 110Distance administrative: 90
A état de lienHybride
Load-balancing sur câble de même bande passanteLoad-balancing sur câble de bande passante différente
Pas de route secondairePossède une route secondaire
Sélectionne un routeur désignéEnvoie les messages à tous les routeurs
Métrique par le coût (bande passante)Métrique (bande passante et délai)
Pas de notion de sautPas plus de 224 sauts
Algorithme de DijkstraAlgorithme de DUAL
Peut diviser le réseau en aireNotion de système autonome
Configuration plus difficile qu’EIGRPFacile à configurer

Configuration du protocole EIGRP

Nous allons repartir de la maquette de l’article sur les services NTP, DHCP et NAT. Après configuration, notre adresse publique sera visible depuis les autres routeurs du réseau. Tous les utilisateurs du NET auront ainsi accès aux serveurs du data center.

Nous allons développer le côté gauche de la maquette et simuler un véritable utilisateur chez lui derrière sa BOX.

Nous allons configurer EIGRP sur les 3 routeurs dans la partie Internet.

Router21

Router#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#router eigrp 1
Router(config-router)#no auto-summary
Router(config-router)#network 223.0.0.0
Router(config-router)#network 223.0.1.0
Router(config-router)#network 223.0.2.0

Router20

Router#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#router eigrp 1
Router(config-router)#no auto-summary
Router(config-router)#network 223.0.1.0
Router(config-router)#
%DUAL-5-NBRCHANGE: IP-EIGRP 1: Neighbor 223.0.1.2 (GigabitEthernet0/2) is up: new adjacency

Router(config-router)#network 223.0.3.0
Router(config-router)#network 223.0.5.0

Router22

Router>en
Router#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#router eigrp 1
Router(config-router)#no auto-summary
Router(config-router)#network 223.0.2.0
Router(config-router)#
%DUAL-5-NBRCHANGE: IP-EIGRP 1: Neighbor 223.0.2.2 (GigabitEthernet0/0/1) is up: new adjacency

Router(config-router)#network 223.0.3.0
Router(config-router)#
%DUAL-5-NBRCHANGE: IP-EIGRP 1: Neighbor 223.0.3.4 (GigabitEthernet0/0/0) is up: new adjacency

La commande router eigrp 1 crée un système autonome. Les routeurs configurés avec ce numéro seront associés comme voisins.

Puis on désactive l’agrégation d’adresse avec la commande no auto-summary.

Enfin, on ajoute les réseaux pour chaque routeur avec la commande network. EIGRP tentera de se connecter à tous les voisins sur ces réseaux.

Nous devons maintenant faire de même sur la BOX internet ainsi que sur le routeur de l’entreprise. Par contre, cette fois, nous n’ajouterons pas le LAN aux réseaux.

Routeur de l’entreprise

Router>en
Router#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#router eigrp 1
Router(config-router)#no auto-summary
Router(config-router)#network 223.0.0.0
Router(config-router)#
%DUAL-5-NBRCHANGE: IP-EIGRP 1: Neighbor 223.0.0.2 (GigabitEthernet0/0/1) is up: new adjacency

BOX internet

Router>en
Router#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#router eigrp 1
Router(config-router)#no auto-summary
Router(config-router)#network 223.0.5.0
Router(config-router)#
%DUAL-5-NBRCHANGE: IP-EIGRP 1: Neighbor 223.0.5.4 (GigabitEthernet0/0/1) is up: new adjacency

Vérifions maintenant la configuration d’EIGRP:

Router#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 
  Redistributing: eigrp 1
  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: 223.0.0.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
  Automatic address summarization: 
  Maximum path: 4
  Routing for Networks:  
     223.0.0.0
     223.0.1.0
     223.0.2.0
  Routing Information Sources:  
    Gateway         Distance      Last Update 
    223.0.1.4       90            1600746    
    223.0.2.3       90            1695413    
    223.0.0.1       90            2024747    
  Distance: internal 90 external 170

Le protocole EIGRP est bien actif et connecté sur 3 réseaux

Regardons maintenant nos voisins:

Router#show ip eigrp neighbors
IP-EIGRP neighbors for process 1
H   Address         Interface      Hold Uptime    SRTT   RTO   Q   Seq
                                   (sec)          (ms)        Cnt  Num
0   223.0.1.4       Gig0/0         13   00:13:34  40     1000  0   8
1   223.0.2.3       Gig0/1         11   00:11:59  40     1000  0   13
2   223.0.0.1       Gig0/2         13   00:06:30  40     1000  0   9

On y trouve le numéro du système autonome, l’adresse des voisins, l’interface, le temps restant avant que le voisin soit déclaré « down », le temps écoulé depuis que le routeur a établi un lien avec le voisin, le temps en ms pour envoyer un paquet EIGRP et recevoir l’accusé de réception (SRTT), le délai de retransmission d’un paquet lorsqu’il n’a pas accusé réception (RTO), le nombre de paquets EIGRP en attente d’être envoyés (Q) et le numéro de la dernière mise à jour (Seq).

Regardons maintenant la topologie du réseau:

Router#show ip eigrp topology
IP-EIGRP Topology Table for AS 1/ID(223.0.2.2)

Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
       r - Reply status

P 223.0.0.0/24, 1 successors, FD is 2816
         via Connected, GigabitEthernet0/2
P 223.0.1.0/24, 1 successors, FD is 2816
         via Connected, GigabitEthernet0/0
P 223.0.2.0/24, 1 successors, FD is 2816
         via Connected, GigabitEthernet0/1
P 223.0.3.0/24, 2 successors, FD is 3072
         via 223.0.1.4 (3072/2816), GigabitEthernet0/0
         via 223.0.2.3 (3072/2816), GigabitEthernet0/1
P 223.0.5.0/24, 1 successors, FD is 3072
         via 223.0.1.4 (3072/2816), GigabitEthernet0/0

Nous y trouvons les chemins possibles.

Regardons le choix effectué:

Router#show ip route
Codes: L - local, 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, E - EGP
       i - IS-IS, 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

     223.0.0.0/24 is variably subnetted, 2 subnets, 2 masks
C       223.0.0.0/24 is directly connected, GigabitEthernet0/2
L       223.0.0.2/32 is directly connected, GigabitEthernet0/2
     223.0.1.0/24 is variably subnetted, 2 subnets, 2 masks
C       223.0.1.0/24 is directly connected, GigabitEthernet0/0
L       223.0.1.2/32 is directly connected, GigabitEthernet0/0
     223.0.2.0/24 is variably subnetted, 2 subnets, 2 masks
C       223.0.2.0/24 is directly connected, GigabitEthernet0/1
L       223.0.2.2/32 is directly connected, GigabitEthernet0/1
D    223.0.3.0/24 [90/3072] via 223.0.1.4, 00:18:59, GigabitEthernet0/0
                  [90/3072] via 223.0.2.3, 00:17:31, GigabitEthernet0/1
D    223.0.5.0/24 [90/3072] via 223.0.1.4, 00:18:54, GigabitEthernet0/0

Le réseau interne est configuré. Il nous reste encore à configurer la BOX pour donner accès à Internet à l’utilisateur.

Nous configurons le DHCP sur la BOX.

Router>en
Router#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#service dhcp
Router(config)#ip dhcp pool BOX
Router(dhcp-config)#network 192.168.1.0 255.255.255.0
Router(dhcp-config)#default-router 192.168.1.254
Router(dhcp-config)#exit

Puis nous configurons l’accès à Internet.

Router>en
Router#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#service dhcp
Router(config)#ip dhcp pool BOX
Router(dhcp-config)#network 192.168.1.0 255.255.255.0
Router(dhcp-config)#default-router 192.168.1.254
Router(dhcp-config)#exit
Router(config)#
Router(config)#
Router(config)#ip access-list standard BOX
Router(config-std-nacl)#permit 192.168.1.0 0.0.0.255
Router(config-std-nacl)#exit
Router(config)#
Router(config)#int gi 0/0/1
Router(config-if)#ip nat outside
Router(config-if)#exit
Router(config)#int gi 0/0/0
Router(config-if)#ip nat inside
Router(config-if)#exit
Router(config)#ip nat inside source list BOX interface gigabitEthernet0/0/1 overload
Router(config)#end
Router#
%SYS-5-CONFIG_I: Configured from console by console

Router#copy run start
Destination filename [startup-config]? 
Building configuration...
[OK]

Testons maintenant un ping depuis l’utilisateur Internet vers le serveur HTTP.

C:\>ping 223.0.0.1

Pinging 223.0.0.1 with 32 bytes of data:

Reply from 223.0.0.1: bytes=32 time<1ms TTL=252

Ping statistics for 223.0.0.1:
    Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

Essayons de passer par le navigateur:

Le protocole EIGRP est correctement configuré.


Configuration du protocole OSPF

Nous allons repartir de la maquette précédente en désactivant le protocole EIGRP sur tous les routeurs pour ensuite configurer le protocole OSPF.

Router(config)#no router eigrp 1

Puis, on configure le protocole OSPF sur les 3 routeurs centraux.

Router(config)#router ospf 1
Router(config-router)#network 223.0.0.0 0.0.0.255 area 0
Router(config-router)#network 223.0.1.0 0.0.0.255 area 0
Router(config-router)#network 223.0.2.0 0.0.0.255 area 0
Router(config-router)#end
Router(config)#router ospf 1
Router(config-router)#network 223.0.2.0 0.0.0.255 area 0
Router(config-router)#network 223.0.3.0 0.0.0.255 area 0
Router(config-router)#end
Router(config)#router ospf 1
Router(config-router)#network 223.0.1.0 0.0.0.255 area 0
Router(config-router)#network 223.0.3.0 0.0.0.255 area 0
Router(config-router)#network 223.0.5.0 0.0.0.255 area 0
Router(config-router)#end

Puis on passe à la BOX ainsi qu’au routeur de l’entreprise.

Router(config)#router ospf 1
Router(config-router)#network 223.0.5.0 0.0.0.255 area 0
Router(config-router)#end
Router(config)#router ospf 1
Router(config-router)#network 223.0.0.0 0.0.0.255 area 0
Router(config-router)#end

Les routeurs sont tous configurés. Nous devons maintenant vérifier avec la commande show ip protocols sur chaque routeur.

Router#show ip protocols

Routing Protocol is "ospf 1"
  Outgoing update filter list for all interfaces is not set 
  Incoming update filter list for all interfaces is not set 
  Router ID 223.0.2.2
  Number of areas in this router is 1. 1 normal 0 stub 0 nssa
  Maximum path: 4
  Routing for Networks:
    223.0.0.0 0.0.0.255 area 0
    223.0.1.0 0.0.0.255 area 0
    223.0.2.0 0.0.0.255 area 0
  Routing Information Sources:  
    Gateway         Distance      Last Update 
    223.0.0.1            110      00:01:14
    223.0.2.2            110      00:01:14
    223.0.3.3            110      00:08:20
    223.0.5.4            110      00:02:33
    223.0.5.5            110      00:02:33
  Distance: (default is 110)

Nous pouvons également vérifier le voisinage avec la commande show ip ospf neighbor.

Router#show ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface
223.0.5.4         1   FULL/BDR        00:00:31    223.0.1.4       GigabitEthernet0/0
223.0.0.1         1   FULL/BDR        00:00:35    223.0.0.1       GigabitEthernet0/2
223.0.3.3         1   FULL/BDR        00:00:33    223.0.2.3       GigabitEthernet0/1

Il ne nous reste plus qu’à vérifier que le poste CLIENT-INTERNET accède bien au serveur HTTP.

C’est bien le cas.

Nous allons maintenant aller un peu plus loin. En effet, contrairement au protocole EIGRP, le protocole OSPF peut diviser son réseau en plusieurs area. Ces zones vont permettre de réduire la coût du calcul demandé par OSPF. Les zones ne s’échangeront que des informations minimes.

Nous allons faire évaluer notre maquette en plaçant notre utilisateur internet dans une autre zone.

Nous avons un routeur entre la zone de l’utilisateur internet (zone 1) et internet (zone 0). Ce routeur est un ABR (Area Border Router).

Ajoutons les 2 zones dans ce routeur.

Router(config)#router ospf 1
Router(config-router)#network 223.0.5.0 0.0.0.255 area 0
Router(config-router)#network 223.0.10.0 0.0.0.255 area 1

Regardons maintenant comment la BOX dirige ses paquets vers une autre zone.


BOX#show ip route
Codes: L - local, 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, E - EGP
       i - IS-IS, 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

     192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
C       192.168.1.0/24 is directly connected, GigabitEthernet0/0/0
L       192.168.1.1/32 is directly connected, GigabitEthernet0/0/0
O IA 223.0.0.0/24 [110/4] via 223.0.10.1, 00:00:06, GigabitEthernet0/0/1
O IA 223.0.1.0/24 [110/3] via 223.0.10.1, 00:00:06, GigabitEthernet0/0/1
O IA 223.0.2.0/24 [110/4] via 223.0.10.1, 00:00:06, GigabitEthernet0/0/1
O IA 223.0.3.0/24 [110/3] via 223.0.10.1, 00:00:06, GigabitEthernet0/0/1
O IA 223.0.5.0/24 [110/2] via 223.0.10.1, 00:00:06, GigabitEthernet0/0/1
     223.0.10.0/24 is variably subnetted, 2 subnets, 2 masks
C       223.0.10.0/24 is directly connected, GigabitEthernet0/0/1
L       223.0.10.2/32 is directly connected, GigabitEthernet0/0/1

La BOX connaît maintenant tous les réseaux de la zone 0.

BOX#show ip ospf database
            OSPF Router with ID (223.0.10.2) (Process ID 1)

                Router Link States (Area 1)

Link ID         ADV Router      Age         Seq#       Checksum Link count
223.0.10.2      223.0.10.2      319         0x80000004 0x009e04 1
223.0.10.1      223.0.10.1      319         0x80000002 0x00a7fe 1

                Net Link States (Area 1)
Link ID         ADV Router      Age         Seq#       Checksum
223.0.10.2      223.0.10.2      319         0x80000001 0x0027a3

                Summary Net Link States (Area 1)
Link ID         ADV Router      Age         Seq#       Checksum
223.0.5.0       223.0.10.1      317         0x80000001 0x00d2bb
223.0.1.0       223.0.10.1      317         0x80000002 0x000789
223.0.3.0       223.0.10.1      317         0x80000003 0x00ee9e
223.0.0.0       223.0.10.1      317         0x80000004 0x001876
223.0.2.0       223.0.10.1      317         0x80000005 0x00ff8b

La BOX pinge bien le serveur HTTP.

BOX#ping 223.0.0.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 223.0.0.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 0/0/1 ms

Enfin, regardons comment les liens entre zones s’organisent sur le routeur intermédiaire.

Router#sh ip protocols

Routing Protocol is "ospf 1"
  Outgoing update filter list for all interfaces is not set 
  Incoming update filter list for all interfaces is not set 
  Router ID 223.0.10.1
  Number of areas in this router is 2. 2 normal 0 stub 0 nssa
  Maximum path: 4
  Routing for Networks:
    223.0.5.0 0.0.0.255 area 0
    223.0.10.0 0.0.0.255 area 1
  Routing Information Sources:  
    Gateway         Distance      Last Update 
    223.0.0.1            110      00:03:49
    223.0.2.2            110      00:03:37
    223.0.3.3            110      00:03:38
    223.0.5.4            110      00:07:39
    223.0.5.5            110      00:33:48
    223.0.10.1           110      00:07:34
    223.0.10.2           110      00:07:34

On voit que l’ID du routeur est 223.0.10.1. On peut l’utiliser pour vérifier l’état des liens.

Pour rappel, ce routeur est un ABR.


Nous venons de créer un système autonome. Cependant, il peut interagir avec d’autres systèmes autonomes. On devra connecter notre réseau à un autre AS pour qu’il puisse communiquer avec le reste d’Internet. On passera par un routeur ASBR (Un ASBR est un routeur qui fait le lien entre un AS et un autre AS). Les protocoles permettant ces chemins se nomment BGP (Border Gateway Protocol).