HSRP

HSRP est un protocole Cisco permettant d’assurer la haute disponibilité de la passerelle d’un réseau.

Ce protocole peut être mis en place sur un routeur ou un switch de niveau 3.

Le but est qu’une éventuelle panne du routeur ne perturbe pas le routage.

 

1) Principe de fonctionnement

 

Le principe d’HSRP est relativement simple. Nous avons un groupe de routeur (en général 2), dont l’un d’eux est le routeur Actif.

Le routeur de secours sera en Standby. Les autres en mode Listen.

Le routeur actif assure le rôle de passerelle par défaut pour le sous réseau.

S’il vient à tomber en panne, le routeur standby prendra le relai. Puis un des routeurs Listen deviendra le nouveau Standby.

 

Nous retrouverons un réseau de ce type :

Topologie HSRP

 

S1 et S2 sont des switchs de niveau 3.

Si S1 est le switch actif, les PC utiliseront S1 comme Gateway.

Si S1 vient à tomber en panne, S2 prendra le relai, et les PC l’utiliseront comme Gateway.

 

Le groupe de routeur est appelé Standby Group.

 

Le routeur actif est celui qui a la priorité la plus haute. Le routeur standby est celui ayant la deuxième meilleure priorité. Les autres routeurs sont en mode Listen.

La priorité va de 0 à 255.

En cas d’égalité sur la priorité, c’est le routeur avec la plus haute IP qui devient actif.

 

Tous ces routeurs vont former un groupe. Au sein de ce groupe, le routeur actif envoie des paquets Hello toutes les 3 secondes. Après 10 secondes sans Hello du routeur actif, il est considéré comme Dead.

C’est alors le routeur standby qui prend le relai, et deviendra Actif.

Le Hold Timer est de 10 secondes, soit 3 * le Hello Timer + 1 seconde.

La seconde bonus permet de s’assurer que 3 Hello Timers complets seront attendus avant de mener une action.

 

Une IP virtuelle sera associée au groupe, et c’est le routeur actif qui va répondre sur cette IP.

Cette IP virtuelle est celle qui sera utilisée par les hôtes comme IP de Default Gateway.

Pour que les paquets soient envoyés au bon routeur, une adresse Mac virtuelle sera aussi créée.

 

Le routeur actif va répondre aux requêtes ARP sur l’IP virtuelle, par cette adresse Mac virtuelle.

 

En version 1, l’adresse de multicast 224.0.0.2 est utilisée par les routeurs pour discuter.

En version 2, l’IP 224.0.0.102 est utilisée.

 

L’adresse Mac utilisée sera de ce type : 00:00:0c:07:ac:XX avec XX qui correspond à l’ID du groupe de routeur, en hexadécimal.

Structure Adresse Mac HSRP

Etant donné que l’adresse IP et l’adresse Mac sont virtuelles, et qu’elle ne changement pas lorsqu’un routeur Standby prend le relai, le client n’a pas besoin de changer sa configuration.

Hormis une petite interruption de service, les clients ne remarqueront pas la panne du routeur Actif.

 

Quand un routeur Standby prend le relai sur le routeur Actif, il envoie une requête Gratuitous afin de faire savoir aux switchs que c’est lui possède l’adresse Mac virtuelle.

 

Un paquet HSRP se compose de la sorte :

HSRP Packet

Le champ version indique la version d’HSRP.

Le champ Op Code indique le type de message :

  • 0 – Hello : envoyé par les routeurs Actif et Standby
  • 1 – Coup : envoyé par un routeur qui veut devenir actif
  • 2 – Resign : envoyé par un routeur qui ne veut plus être le routeur actif

 

Le champ State indique l’état du routeur :

  • 0 – Initial : HSRP ne fonctionne pas
  • 1 – Learn : IP virtuelle non déterminée et aucun Hello reçu du Active router
  • 2 – Listen : IP virtuelle déterminée. Le routeur n’est ni actif ni standby. Il écoute les Hello.
  • 4 – Speak : Envoie périodique de Hello. Participe à l’élection du routeur actif
  • 8 – Standby : Le routeur est prêt à devenir actif. Il ne peut y avoir qu’un routeur standby par groupe. Des Hello sont envoyés
  • 16 – Active : Le routeur assure le rôle de Gateway. Un seul routeur actif par groupe. Des Hello sont envoyés

 

Comme il ne peut y avoir qu’un routeur actif et qu’un standby, si il y a plus de 2 routeurs, les excédents seront en mode Listen (jusqu’à la perte de l’actif ou du standby).

 

Le champ Hellotime indique l’intervalle de temps entre les Hello. Le champ n’est utile que dans les messages Hello.

Le champ Holdtime indique le temps max après lequel le routeur est considéré comme Dead. Il est d’au moins trois fois le Hellotime.

Le champ Priority indique la priorité du routeur. En cas d’égalité, c’est le routeur avec la plus haute IP qui gagne.

Le champ Group indique le numéro du Standby Group.

Le champ Authentication Data sert à l’authentification.

Le champ Virtual IP Address indique l’IP virtuelle du groupe

 

2) Configuration

 

Après cet aperçu concis mais complet, voyons ensemble la configuration d’HSRP.

 

Nous nous baserons sur la topologie suivante :

Topologie HSRP

 

La configuration de base à mettre en place est la suivante :

  • Création des VLAN
  • Port Access pour les PC
  • Trunk entre les switchs

 

Switch 1 et Switch 2 vont être nos deux switchs L3 qui feront partie du Standby Group.

Étant donné que nous avons des liens redondants, Spanning Tree va en bloquer certains.

Pour que le lien vers la Gateway soit optimal, nous devons accorder le processus Spanning Tree avec HSRP.

 

S1 sera le switch Actif en HSRP, et il sera donc aussi le Root Bridge en Spanning Tree.

S2 sera le Switch secondaire en HSRP, il sera donc le Backup Root.

 

Appliquons déjà la configuration Spanning Tree :

Switch-1(config)#spanning-tree vlan 10 root primary
Switch-1(config)#spanning-tree vlan 20 root primary

 

Switch-2(config)#spanning-tree vlan 10 root secondary
Switch-2(config)#spanning-tree vlan 20 root secondary

 

A noter qu’il sera préférable d’utiliser Rapid Spanning Tree, pour des raisons évidentes de vitesse de convergence.

 

Vérifions le résultat :

Show Spanning-tree Vlan 10

Passons à présent à la configuration d’HSRP.

Premièrement, nous devons créer des interfaces virtuelles, et y assigner une IP.

Il s’agit là d’une configuration classique pour du routage.

Nous commencerons par le VLAN 10 :

Switch-1(config)#interface vlan 10
Switch-1(config-if)#ip address 10.0.10.2 255.255.255.0

 

Switch-2(config)#interface vlan 10
Switch-2(config-if)#ip address 10.0.10.3 255.255.255.0

 

Pour la configuration d’HSRP, nous devons choisir une IP virtuelle, et une priorité :

Switch-1(config-if)#standby 1 ip 10.0.10.1
Switch-1(config-if)#standby 1 priority 150

 

Le numéro 1 correspond au numéro du groupe HSRP (Standby Group).

La priorité de base est de 100. Avec une priorité de 150, S1 deviendra le routeur actif.

 

Nous devons aussi activer l’option preempt.

Cette option permet au switch actif de reprendre son rôle après une panne. Le routeur Standby qui remplaçait le routeur actif lors d’une panne de ce dernier, retournera en mode standby si le routeur actif revient en ligne.

Switch-1(config-if)#standby 1 preempt

 

De même pour Switch 2 :

Switch-2(config-if)#standby 1 ip 10.0.10.1
Switch-2(config-if)#standby 1 preempt

 

La priorité de S2 restera à 100.

Voici le résultat :

Show Standby

Faisons maintenant quelques tests !

Nous allons commencer par faire des Ping sur l’IP de la Gateway, et procéder à une coupure.

Ping 10.0.10.1

Déjà, la passerelle est joignable.

Nous allons maintenant lancer une série de ping, puis nous allons couper les interfaces de S1 :

Ping 10.0.10.1

Switch-1(config)#interface range fastEthernet 0/1 - 2
Switch-1(config-if-range)#shutdown

Ping 10.0.10.1

Vérifions que c’est bien S2 qui est la passerelle :

SSH 10.0.10.1

En effet, une connexion SSH sur l’IP virtuelle, nous amène sur S2.

 

Switch-1(config)#interface range fastEthernet 0/1 - 2
Switch-1(config-if-range)#no shutdown

 

Avant de réactiver les interfaces, j’ai lancé un Ping continu vers la Gateway.

Au moment où S1 est revenu en ligne, une autre (courte) interruption de service a eu lieu :

Ping 10.0.10.1

Grâce à l’option Preempt, S1 est redevenu actif, et S2 standby. Sauf que cela cause une courte interruption de service.

Dans notre topologie, nous avons deux VLAN.

L’idée est donc d’effectuer le routage entre ces deux VLAN.

De plus, pour répartir la charge, S1 sera la Gateway pour le VLAN 10, et S2 la Gateway pour le vlan 20.

Commençons par adapter la configuration STP, pour que S1 et S2 soient Root Bridge de leur propre VLAN :

Switch-1(config)#spanning-tree vlan 10 root primary
Switch-1(config)#spanning-tree vlan 20 root secondary

 

Switch-2(config)#spanning-tree vlan 10 root secondary
Switch-2(config)#spanning-tree vlan 20 root primary

 

Configurons maintenant HSRP.

Nous allons créer un deuxième Standby Group, dans lequel S2 sera le routeur actif.

Switch-1(config)#interface vlan 20
Switch-1(config-if)#ip address 10.0.20.2 255.255.255.0
Switch-1(config-if)#standby 2 ip 10.0.20.1
Switch-1(config-if)#standby 2 preempt

 

Switch-2(config)#interface vlan 20
Switch-2(config-if)#ip address 10.0.20.3 255.255.255.0
Switch-2(config-if)#standby 2 ip 10.0.20.1
Switch-2(config-if)#standby 2 priority 150
Switch-2(config-if)#standby 2 preempt

 

La priorité de 150 fera de S2 le routeur actif.

 

Vérifions le résultat :

Show Standby

Tout semble en ordre.

N’oublions pas d’activer le routage :

Switch-1(config)#ip routing
Switch-2(config)#ip routing

 

Voyons le résultat :

Ping 10.0.20.1

De même pour le PC 2 :

Ping 10.0.20.5

Faisons le test en coupant S1 :

(la commande est entrée au moment de la coupure sur la capture d’écran suivante)

Switch-1(config)#interface range fastEthernet 0/1 - 2
Switch-1(config-if-range)#shutdown

Ping 10.0.20.5

Parfait, la bascule se fait comme il faut !

 

Afin de rendre la bascule plus rapide, nous pouvons modifier les timers HSRP :

Switch-1(config-if)#standby 1 timers msec 150 msec 600

150 est le Hello timer, et 600 le Hold Timer

La manipulation est à faire sur S1 et S2 (pour les VLAN 10 et 20 en faisant attention au numéro de Standby Group).

Voici le résultat avec un Timeout de 100ms pour les ping :

Ping 10.0.20.5

La bascule est bien plus rapide.

 

Il est aussi possible de mettre en place de l’authentification :

Switch-1(config-if)#standby 1 authentication md5 key-string NetworkLab

La manipulation est à faire sur S1 et S2 (pour les VLAN 10 et 20 en faisant attention au numéro de Standby Group).

 

3) Conclusion

 

Nous avons fait un tour relativement complet de ce protocole.

Je vous invite à présente à jeter un œil sur l’article traitant de VRRP.

VRRP est un protocole standard, mais très proche d’HSRP.

 

Tagués avec : , , ,
Publié dans Gateway Redundancy
10 commentaires pour “HSRP
  1. SOUARE dit :

    Bonjour,
    je suis entreint de travailler sur une topologie pareille dans GNS3 mais j’arrive pas à configurer le partage de charge entre pour les vlans. J’ai aussi des etherchannels configurés entre les switchs.
    Mes questions sont les suivantes :
    Devrais je activer le routage sur tous les commutateur ?
    Si oui, est t’il possible d’activer le redundancy avec 4 routeurs (un actif, un stanby et les autres en mode listen)

    Merci d’avance pour d’éventuelle réponse

    • Valentin Weber dit :

      Bonjour,

      Alors, les Etherchannels sont à considérer comme des liens réseau classiques (si ils sont bien configurés).

      Le routage n’est à activer que sur les équipements devant assurer le routage. Dans l’exemple que j’ai donné, il s’agit de 2 switchs de niveau 3 (ceux du haut). Mais il peut aussi s’agir de 2 routeurs.
      En aucun cas il n’est nécessaire d’activer le routage sur les switchs Access.
      Néanmoins, il est possible d’activer HSRP sur plus de 2 switchs / routeurs. Du coup, il y aura un « Active », un « Standby » et les autres en « Listen ». En cas de panne du switch « Active », le switch « Standby » deviendra « Active » et l’un des switchs « Listen » deviendra « Standby ».

      Pour la répartition de charge, il faut que les configurations HSRP et Spanning Tree soient cohérentes. C’est à dire que pour le Vlan 10, le switch HSRP « Active » doit aussi être le « Root Bridge ». Quant au switch HSRP « Standby », il doit être le « Secondary Root Bridge ».
      Pour cela il faut jouer avec les priorités HSRP et Spanning Tree.

      Pour les autres Vlan, vous pouvez choisir d’autres switchs « Active » et « Root Bridge »

      Je vous invite à regarder l’exemple de répartition de charge donné dans l’article.

      Donc pour résumer, si vous avez 2 switchs de niveau 3 et 2 de niveau 2, alors le HSRP n’est à activer que sur les switchs de niveau 3.
      Et pour la répartition de charge, il faut ajuster les configurations Spanning Tree.
      Si vous avez un switch A et un switch B, ainsi qu’un Vlan 10 et un Vlan 20, vous aurez le switch A « Active » et « Root Bridge » pour le VLan 10 et « Standby » et « Secondary Root Bridge » pour le Vlan 20.
      Su le switch B, ce sera l’inverse.

      • SOUARE dit :

        Je suis vraiment content de votre site, il m’a été d’une grande aide.
        J’ai compris ce que vous dites et je l’ai réussi hier tard le soir.
        Avec Spanning tree root primary/secondary, j’ai défini des priorités pour les vlans avec ces priorités j’ai configuré deux vrrp un pour chaque VLAN du coup j’ai mes deux routeurs qui fonctionnent. C’est comme si j’avais utilisé le protocole GLBP…
        Mais en tout cas votre réponse est claire et precise, merci encore une fois.
        Enfin, me permetrez vous d’utiliser vos propres mots pour expliquer certains protocoles lors d’un soutenance de projet tutoré ? Et même présenter votre site, si possible.

        • Valentin Weber dit :

          Je suis heureux de l’apprendre !

          Attention tout de même, le protocole GLBP est un peu différent.
          En HSRP et VRRP il est possible de faire de la répartition de charge sous réseau par sous réseau.
          En GLBP il est possible de faire de la répartition de charge machine par machine.
          Par contre cela peut apporter des complications dans certaines infrastructures.
          Il sera plus difficile de contrôler le chemin pris par les paquets.

          Cela ne me gêne pas que vous citiez mon site, du moment que la provenance est indiquée.
          Mais j’aurai tendance à vous conseiller de reformuler les phrases. Cela sera bénéfique pour votre apprentissage, même si le fond reste le même.
          Quant à présenter le site, c’est avec plaisir. Il est fait pour être consulté.

          Bon courage pour votre projet en tout cas !

  2. SOUARE dit :

    Je viens de rencontrer un petit problème sur mon réseau.

    quand je ping entre PCs appartenant au même VLAN, le ping passe. Mais quand je ping entre des PCs appartenant pas à un même VLAN, le ping ne fonctionne pas.
    Pour infos : J’utilise deux VRRP pour la répartition de charge entre SR1 et SR2.
    Dois je mettre un lien entre SR1 et SR2 et configuré un protocole de routage ?
    Ou bien à votre avis ou se trouve le problème ?
    Voila le résultat de show ip route :
    SR1 :
    Gateway of last resort is not set

    C 192.168.10.0/24 is directly connected, Vlan10
    C 192.168.20.0/24 is directly connected, Vlan20

    SR2#
    Gateway of last resort is not set

    C 192.168.10.0/24 is directly connected, Vlan10
    C 192.168.20.0/24 is directly connected, Vlan20

    Merci d’avance !

    • Valentin Weber dit :

      Si vous avez bien suivi l’article, il ne devrait pas y avoir de problème.
      Dans l’article VRRP, je n’ai pas repris une topologie comme celle-ci. Donc pour reprendre cette topologie avec VRRP, le mieux est de suivre cet article, et d’adapter les commandes HSRP en VRRP.

      Pour le problème de routage, voici quelques pistes :
      – Est-ce que la commande « ip routing » a été appliquée sur S1 et S2 ?
      – Est-ce que Spanning Tree est bien configuré en PVST ou MSTP ?
      – Est-ce que la topologie Spanning Tree est cohérente (les bons switchs comme Root Bridge ?
      – Est-ce que PC1 peut faire un ping vers sa Gateway, vers la Gateway du VLAN 2, vers PC2 ?
      – Faire de même pour PC2
      – Est-ce que S1 peut faire un Ping vers S2

      Cela devrait pouvoir vous aider à localiser le problème

      • SOUARE dit :

        Je sais pas pourquoi ça n’a pas fonctionné.
        j’ai oublié de vous signaler que je travaille avec GNS3 avec un switch L3 3745. J’ai remarqué pas mal de fonctionnalités absents sur le switch comme MSTP, LACP, PaGP…

        La remarque que j’ai faite est la suivante : avec VRRP je peux pinguer les interfaces des VLANS mais pas l’interface virtuelle.
        VRRP etait en accord avec STP.
        je l’ai verifié avec la commande « show spanning-tree root » pour voire qui est root bridge pour tel VLAN et « show vrrp » pour voir si pour le switch root bridge du VLAN10, il est bien le switch active en VRRP pour ce même VLAN. Je l’ai aussi fait pour le VLAN20.

        A la fin, ne trouvant pas la solution, j’ai changé de protocole en utilisant HSRP qui a bien fonctionné.
        J’abandonne pour l’instant VRRP, je vais voire après quel a été le problème.

        Merci de votre aide !

  3. michou dit :

    Bonjour,

    Merci pour votre article.

    J’ai juste une remarque a faire, dans la topo du HSRP présentée nous n’avons pas besoin du STP c’est vrai que y’a une redondance mais y’a pas de boucle.

    Corrigez moi si je me trompe.

    Merci d’avance.

    • Valentin Weber dit :

      Bonjour,
      Si justement, nous avons une boucle entre les switchs. Les interfaces sont en mode L2 trunk (même sur S1 et S2). Nous ne pouvons pas connecter nos switchs 3 et 4 au deux switchs du haut sans créer de boucle d’un point de vue câblage.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Le temps imparti est dépassé. Merci de saisir de nouveau le CAPTCHA.