Le protocole HSRP
Hot Standby Router Protocol : redondance de passerelle Actif/Passif, élection, authentification, load-balancing (MHSRP) et suivi SLA.
Introduction
Le protocole HSRP (Hot Standby Router Protocol) est un protocole :
- Propriétaire CISCO
- Basé sur un modèle Actif / Passif.
Il existe en plusieurs versions :
HSRP version 1
- IPv4
- Adresse MAC utilisée : 0000.0C07.ACxx
- Utilise l’adresse multicast 224.0.0.2
- Groupe 0 au groupe 255
HSRP version 2
- IPv4 / IPv6
- Adresse MAC utilisée : 0000.0C9F.Fxxx
- Utilise l’adresse multicast 224.0.0.102
- Groupe 0 au groupe 4095
HSRP (Hot Standby Router Protocol) est un protocole propriétaire de Cisco conçu pour permettre la redondance de passerelle pour les hôtes d’un réseau. Il existe plusieurs versions du protocole HSRP, et il y a des différences notables entre la version 1 (HSRPv1) et la version 2 (HSRPv2). Voici les principales différences :
- Plage des groupes virtuels :
- HSRPv1 : la plage des numéros de groupe va de 0 à 255.
- HSRPv2 : la plage des numéros de groupe est étendue et va de 0 à 4095.
- Multicast MAC Address :
- HSRPv1 : utilise l’adresse MAC 0000.0c07.acXX, où XX est l’ID du groupe HSRP en hexadécimal.
- HSRPv2 : utilise l’adresse MAC 0000.0c9f.fXXX, où XXX est l’ID du groupe HSRP en hexadécimal.
- Adresse multicast pour l’envoi des Hello :
- HSRPv1 : utilise l’adresse IP multicast 224.0.0.2 pour envoyer des paquets Hello.
- HSRPv2 : utilise l’adresse IP multicast 224.0.0.102 pour envoyer des paquets Hello.
- Taille des paquets Hello :
- HSRPv1 : les paquets Hello ont une taille fixe.
- HSRPv2 : la taille des paquets Hello peut varier car HSRPv2 peut inclure des champs optionnels.
- Support des VLANs :
- HSRPv1 : n’identifie pas explicitement le VLAN pour lequel un message est envoyé, ce qui peut poser des problèmes en cas de mauvaise configuration ou dans certaines architectures réseau complexes.
- HSRPv2 : introduit un champ pour le numéro de VLAN dans le paquet, ce qui permet d’éviter les ambiguïtés dans les configurations où plusieurs sous-interfaces d’un même routeur physique peuvent être des routeurs virtuels actifs pour différents groupes HSRP.
- Authentification :
- Les deux versions supportent l’authentification, mais HSRPv2 introduit la possibilité d’utiliser l’authentification basée sur MD5, offrant un niveau de sécurité supérieur à l’authentification texte simple d’HSRPv1.
En conclusion, HSRPv2 apporte des améliorations par rapport à HSRPv1, notamment en termes de flexibilité, de capacité à gérer davantage de groupes et de clarifications pour les environnements VLAN. Si vous n’avez pas de contrainte particulière vous forçant à utiliser HSRPv1, il serait judicieux d’envisager d’utiliser HSRPv2 pour bénéficier de ces améliorations.
Principe de fonctionnement du HSRP
Introduction
Le protocole HSRP est basé sur le modèle Actif / Passif. Cela veut dire qu’il n’y aura qu’un seul routeur en mode “Actif” et les autres routeurs en mode “Passif” :
- Mode Active (Actif) : ce routeur portera l’adresse IP et l’adresse MAC virtuelle.
- Mode Standby (Passif) : les autres routeurs attendent que le routeur en mode active soit indisponible pour prendre sa place.

Afin de savoir lequel des routeurs va passer en mode Active, ils vont organiser une élection.
Élection du routeur actif
- Chaque routeur possède une priorité.
- Cette priorité est modifiable par l’administrateur.
- La priorité par défaut est à 100. Elle est comprise entre 0 et 255.
Le routeur ayant la priorité la plus haute sera en mode Active. En cas d’égalité, le routeur possédant l’adresse IP la plus haute deviendra le routeur actif.
Le routeur en mode Active portera donc notre adresse IP et notre adresse MAC virtuelle. Le ou les routeurs en mode Passive se tiendront informés de l’état de santé du routeur Active via des paquets « Hello » envoyés en multicast.
Les paquets « Hello »

Dans le protocole HSRP (Hot Standby Router Protocol), les paquets “Hello” jouent un rôle crucial dans la communication entre les routeurs membres d’un groupe HSRP. Voici les points essentiels à connaître à propos des paquets Hello dans HSRP :
- Fonction des paquets Hello : les paquets Hello sont utilisés pour annoncer la présence d’un routeur au sein d’un groupe HSRP et pour établir et maintenir la communication entre les routeurs actifs et de secours.
- Intervalle et temporisation : les paquets Hello sont envoyés périodiquement. L’intervalle par défaut entre les paquets Hello est généralement de 3 secondes, et le délai avant de considérer un routeur comme défaillant (Hold Time) est typiquement de 10 secondes.
- Contenu du paquet Hello : un paquet Hello contient plusieurs informations importantes, telles que l’adresse IP virtuelle du groupe HSRP, la priorité du routeur qui envoie le paquet, l’état actuel du routeur (actif, en attente, etc.), et le numéro de groupe HSRP.
- Élection du routeur actif : les paquets Hello sont utilisés lors du processus d’élection du routeur actif et de secours. Les routeurs comparent les informations reçues via les paquets Hello pour décider quel routeur doit être actif ou de secours.
- Détection de défaillance : si un routeur ne reçoit pas de paquet Hello d’un routeur actif dans le délai spécifié (Hold Time), il supposera que le routeur actif a échoué. Cela peut déclencher une réélection pour choisir un nouveau routeur actif.
- Adresses multicast : les paquets Hello sont envoyés à une adresse multicast (224.0.0.2 pour IPv4), ce qui permet à tous les routeurs membres du groupe HSRP de les recevoir.
Les paquets Hello sont donc un élément essentiel de la mécanique de HSRP, permettant aux routeurs de communiquer leur état et leur présence, et de s’assurer que le groupe HSRP reste fonctionnel et réactif aux changements de l’état du réseau.
Basculement en cas de panne
Si notre routeur en mode Active n’est plus en état de fonctionner, une nouvelle élection a lieu. Un routeur en mode Standby va donc passer en mode Active.
Si notre routeur hors ligne est de nouveau en ligne, il n’y aura pas de nouvelle élection !
(il ne récupérera donc pas son rôle avant la prochaine panne du nouveau routeur en mode Active.)

La Préemption
Définition de Préemption :
La préemption est la capacité d’un système d’exploitation multitâche d’interrompre une tâche en cours en faveur d’une tâche de priorité supérieure. (source : Wikipédia)
La commande « preempt » va permettre à un routeur possédant une priorité supérieure aux autres de remplacer le routeur actuellement en mode Active (sans attendre la prochaine élection, #CoupD’état).
La commande est la suivante :
Switch(config-if)# standby 1 preemptConfiguration du protocole HSRP
Étape 1 : Définir la version HSRP à utiliser
Router(config)# interface vlan 10
Router(config-if)# standby version 2Étape 2 : Définir la priorité HSRP
Le protocole HSRP travaille dans des groupes, il faut donc lui spécifier dans quel groupe de travail il va travailler. Imaginons que nous sommes sur le routeur de droite, nous voulons que ce routeur soit en mode Passive, nous allons donc lui mettre une priorité supérieure au routeur de gauche (ce routeur aura une valeur de priorité par défaut : 100).
Router(config-if)# standby 1 priority 110Étape 3 : Définir l’adresse IP virtuelle
(L’adresse MAC virtuelle sera générée en fonction du numéro de groupe HSRP.)
Router(config-if)# standby 1 IP 192.168.10.254
Authentification HSRP
Afin d’authentifier les routeurs présents dans notre groupe de travail HSRP, il est possible de mettre en place de l’authentification. Pour ce faire, deux méthodes :
Plain-text
Si les deux routeurs possèdent la même « Plain-text key string » (traduction : chaîne de caractères en texte brut), ils pourront donc travailler ensemble. Cette chaîne doit avoir entre 1 et 8 caractères. Cette méthode d’authentification est déjà utilisée par défaut, « cisco » est la valeur de la chaîne. La chaîne de caractères passe en clair sur le réseau…
Rappel : les paquets Hello sont envoyés en multicast. Si quelqu’un fait une simple écoute réseau, il obtiendra le numéro de groupe HSRP ainsi que cette chaîne de caractères.
Pour changer cette chaîne de caractères :
Switch(config-if)# standby 1 authentication FingerMD5
Pour expliquer ce type d’authentification, mettons-nous en situation :
- Les routeurs R1 et R2 sont dans le même groupe HSRP.
- R1 a un message à envoyer à R2.
- Ce dernier crée un hash avec sa clé MD5.
- R1 envoie son message ainsi que le hash de son message.
- R2 crée un hash avec sa clé MD5 du message reçu.
- Si le hash de R1 est égal à la valeur du hash de R2, le message est accepté.
La clé MD5 :
- Ne circule pas sur le réseau.
- Peut avoir au maximum 64 caractères.
Deux façons de mettre en place une clé MD5 :
Méthode 1 :
Switch(config-if)# standby 1 authentication md5 key-string [ 0 | 7 ] Finger- 0 = Clé en clair
- 7 = Clé cryptée
Méthode 2 :
Switch(config)# key chain Finger-chain
Switch(config-keychain)# key 1
Switch(config-keychain-key)# key-string [ 0 | 7 ] Finger
Switch(config)# interface vlan 10
Switch(config-if)# standby 1 authentication md5 key-chain Finger-chainLoad Balancing HSRP (MHSRP)
Scénario
Comme nous l’avons vu plus haut, tous nos flux voulant aller sur internet vont donc passer par un seul routeur. Pendant ce temps, le deuxième n’est là uniquement que si la première liaison tombe. Le mieux serait d’utiliser les deux liaisons ! Pour ce faire, nous allons faire de l’équilibrage de charge manuel ! (Le protocole GLBP fait de l’équilibrage de charge dynamique.)
Reprenons notre architecture avec deux vlan cette fois-ci !
- Vlan 10 = 192.168.10.0 /24
- Vlan 20 = 192.168.20.0 /24
Nous allons faire deux groupes HSRP différents (un pour chaque vlan) et nous allons décider que le routeur de gauche sera en mode Active pour le vlan 10. Le routeur de droite sera en mode Active pour le vlan 20. Nous utiliserons donc nos deux liaisons.
Architecture

Configuration de R1
R1(config)# interface vlan 10
R1(config-if)# ip address 192.168.10.252 255.255.255.0
R1(config-if)# standby version 2
R1(config-if)# standby 1 ip 192.168.10.254
R1(config-if)# standby 1 priority 110
R1(config-if)# standby 1 name HSRP-Vlan10
R1(config)# interface vlan 20
R1(config-if)# ip address 192.168.20.252 255.255.255.0
R1(config-if)# standby version 2
R1(config-if)# standby 2 ip 192.168.20.254
R1(config-if)# standby 2 name HSRP-Vlan20Configuration de R2
R2(config)# interface vlan 10
R2(config-if)# ip address 192.168.10.253 255.255.255.0
R2(config-if)# standby version 2
R2(config-if)# standby 1 ip 192.168.10.254
R2(config-if)# standby 1 name HSRP-Vlan10R2(config)# interface vlan 20
R2(config-if)# ip address 192.168.20.253 255.255.255.0
R2(config-if)# standby version 2
R2(config-if)# standby 2 ip 192.168.20.254
R2(config-if)# standby 2 priority 110
R2(config-if)# standby 2 name HSRP-Vlan20HSRP et SLA
Présentation
Le service IP SLA permet de faire différents types de test (voir l’article SLA). Ce service va nous permettre de vérifier la disponibilité de nos services derrière notre gateway. Nos deux routeurs fournissent INTERNET via deux Box distinctes. Si l’une des deux Box n’est plus en état de fonctionner, le HSRP ne va jamais basculer. Avec le service SLA, nous allons lui dire que si sa liaison WAN est hors d’usage, il faut qu’il passe la main au routeur Stand-by.
Configuration
Étape 1 : configuration de notre test SLA :
Routeur(config)# ip sla 10
Routeur(config-ip-sla)# icmp-echo 8.8.8.8
Routeur(config-ip-sla)# frequency 5Routeur(config)# ip sla schedule 10 start-time now life foreverL’adresse IP 8.8.8.8 est le serveur DNS de Google, il sera toujours en vie. Nous allons faire notre test de connexion INTERNET avec cette adresse IP.
Étape 2 : prise en compte du SLA par notre architecture HSRP :
Routeur(config)# track 1 IP sla 10 reachability
Routeur(config)# interface vlan 10
Routeur(config-if)# standby 1 track 10 decrement 20Le décrément est le nombre qu’il faudra soustraire à la priorité du routeur si le test retourne un résultat négatif. Vu que la priorité du routeur A est à 110 et que la priorité du routeur B est à 100, le routeur A est en mode « Active ». Le test SLA est donc à mettre sur le routeur A. Si le résultat du test est négatif, la priorité du routeur A passe à 90. Le routeur B passe donc en mode « Active ».

Vérification
Router# show standby
Router# show standby brief
