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 distance | A é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).
- message DBD (Database Description): envoi de la base de données
- message LSR (Link State Request): envoi d’un message vers un routeur inconnu qui vient d’envoyer un message.
- message LSU (Link State Update): le routeur inconnu… ne l’est plus.
- message LSAck (Link State Acquittement): confirmation de réception de message.
Revoyons les différences entre EIGRP et OSPF.
OSPF | EIGRP |
présent sur tous les routeurs | pas encore présent sur tous les routeurs |
Distance administrative: 110 | Distance administrative: 90 |
A état de lien | Hybride |
Load-balancing sur câble de même bande passante | Load-balancing sur câble de bande passante différente |
Pas de route secondaire | Possè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 saut | Pas plus de 224 sauts |
Algorithme de Dijkstra | Algorithme de DUAL |
Peut diviser le réseau en aire | Notion de système autonome |
Configuration plus difficile qu’EIGRP | Facile à 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).