VRRP : Virtual Router Redundancy Protocol

Dans l’article précédent nous avons vu une mise en oeuvre simple de HSRP qui permet de gérer la redondance de passerelle (entre autre). Bien que simple à mettre en place, HSRP a comme principal defaut d’être propriétaire  Cisco. Voici donc une mise en place équivalente de VRRP, protocole standard défini dans la RFC 5798

Afin de permettre une comparaison facile avec HSRP, j’ai gardé la même structure pour l’article.

La topologie

vrrp

La topologie est similaire à celle utilisée dans l’article sur HSRP. R1 et R2 seront donc les deux passerelles par défaut à faire fonctionner en redondance.

R1 et R2 communiqueront à l’aide de VRRP par leurs interfaces FastEthernet afin de négocier leur rôle.

Principe général

VRRP est donc, à l’instar de HSRP, également un protocole qui fourni une solution de continuité de service principalement pour la redondance de passerelles par défaut.

Pour chaque réseau, on associe les interfaces des routeurs à un groupe VRRP (le même n° de groupe pour toutes les interfaces qui doivent assurer le même rôle). A ce groupe on associe une adresse IP virtuelle (dans le cas présent ce sera 192.168.0.254).

La redondance est mise en place par le biais du protocole ARP. Lorsque le PC doit envoyer une trame à sa passerelle, il émet une requête ARP et celle-ci répond en fournissant son adresse MAC.

Dans le cas de VRRP, les routeurs vont associer une adresse MAC particulière à l’adresse IP virtuelle sous la forme  00:00:5E:00:01:XX (où XX est le n° du groupe VRRP).

Dés lors, pour le PC, quoi qu’il arrive, ce sera cette adresse MAC qui identifiera sa passerelle.   De leur côté les routeurs dialoguent par multicast (224.0.0.18) afin de négocier et de savoir qui devra se charger de traiter la trame destinée à l’adresse MAC VRRP.

Configuration de R1

R1(config)# interface FastEthernet0/0
R1(config-if)# vrrp 1 ip 192.168.0.254
R1(config-if)# vrrp 1 priority 200
R1(config-if)# vrrp 1 preempt

L’interface Fa0/0 de R1 fonctionnera dans le groupe VRRP n°1 auquel on a associé l’adresse IP virtuelle 192.168.0.254. En plus on a défini une priorité de 200 (la plus grande priorité sera la passerelle effective) et on active le droit de préemption (si R1 tombe en panne, R2 prend le relai… mais is R1 revient, il reprendra sa place, sans préemption, R2 resterait la passerelle).

Configuration de R2

R2(config)# interface FastEthernet0/0
R2(config-if)# vrrp 1 ip 192.168.0.254
R2(config-if)# vrrp 1 priority 100

La configuration de R2 est similaire à celle de R1. Notez que les deux routeurs doivent être configurés dans le même groupe et gérer la même adresse virtuelle, sans quoi il n’y aura soit pas de dialogue VRRP soit un conflit d’adresse.

Vérification

Configuration de C1:

NAME  IP/MASK         GATEWAY       MAC
VPCS1 192.168.0.10/24 192.168.0.254 00:50:79:66:68:00

Test de communication vers 1.1.1.1

VPCS[1]> ping 1.1.1.1
1.1.1.1 icmp_seq=1 timeout
1.1.1.1 icmp_seq=2 ttl=254 time=25.000 ms
1.1.1.1 icmp_seq=3 ttl=254 time=25.000 ms
1.1.1.1 icmp_seq=4 ttl=254 time=32.000 ms
1.1.1.1 icmp_seq=5 ttl=254 time=31.000 ms

Il est intéressant d’analyser la table ARP de C1…

VPCS[1]> arp
00:00:5e:00:01:01 192.168.0.254 expires in 114 seconds

C1 a bien émi une requête ARP pour obtenir l’adresse MAC correspondant à 192.168.0.254, qui correspond bien à une adresse MAC VRRP où le dernier byte est défini par le n° de groupe VRRP.

VPCS[1]> trace 1.1.1.1
trace to 1.1.1.1, 8 hops max, press Ctrl+C to stop
 1 192.168.0.1  19.000 ms 10.000 ms 9.000 ms
 2 172.16.0.1   20.000 ms 10.000 ms 10.000 ms
 3 1.1.1.1      20.000 ms 10.000 ms 10.000 ms

On constate ici que R1 assure bien le role de 192.168.0.254

Vérification de la configuration

Vérification du fonctionnement de VRRP sur R1 :

R1#show vrrp
FastEthernet0/0 - Group 1
 State is Master
 Virtual IP address is 192.168.0.254
 Virtual MAC address is 0000.5e00.0101
 Advertisement interval is 1.000 sec
 Preemption enabled
 Priority is 200
 Master Router is 192.168.0.1 (local), priority is 200
 Master Advertisement interval is 1.000 sec
 Master Down interval is 3.218 sec
R1#

Le « State » indique soit Master (actif) soit Backup (en standby). Le reste des informations est explicite.

Que se passe-t-il si R1 tombe en panne …

Test de fonctionnement en mettant Fa0/0 de R1 en shutdown…

R1(config-if)#shutdown
*Mar 1 02:21:46.399: %VRRP-6-STATECHANGE: Fa0/0 Grp 1 state Master -> Init
*Mar 1 02:21:48.403: %LINK-5-CHANGED: Interface FastEthernet0/0, changed state to administratively down
*Mar 1 02:21:49.403: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to down

Réaction immédiate de R2 …

R2#
*Mar 1 02:21:41.727: %VRRP-6-STATECHANGE: Fa0/0 Grp 1 state Backup -> Master

R2 est bien devenu la passerelle active, vérifions sur C1…

VPCS[1]> ping 1.1.1.1
1.1.1.1 icmp_seq=1 ttl=254 time=26.000 ms
1.1.1.1 icmp_seq=2 ttl=254 time=19.000 ms
1.1.1.1 icmp_seq=3 ttl=254 time=19.000 ms
1.1.1.1 icmp_seq=4 ttl=254 time=19.000 ms
1.1.1.1 icmp_seq=5 ttl=254 time=19.000 ms
VPCS[1]> arp
00:00:5e:00:01:01  192.168.0.254 expires in 7 seconds

Comme pour HSRP, la table ARP de C1 reste idendique. La transition entre R1 et R2 est transparente pour C1.

VPCS[1]> trace 1.1.1.1
trace to 1.1.1.1, 8 hops max, press Ctrl+C to stop
 1 192.168.0.2  9.000 ms 9.000 ms 9.000 ms
 2 172.16.0.5   10.000 ms 10.000 ms 10.000 ms
 3 1.1.1.1      10.000 ms 11.000 ms 10.000 ms

Conclusion

Pour une configuration aussi simple, VRRP fonctionne quasiment comme HSRP, il n’y a donc pas grand chose d’autre à ajouter. Les différences majeures se situent dans les rouages du protocole (adresse multicast utilisée, adresse MAC etc.).

4 Comments on “VRRP : Virtual Router Redundancy Protocol

  1. Bonjour,

    Dans ta maquette, si le lien WAN du routeur R1 tombe… il ne se passe rien :s, il serait intéressant d’ajouter sur R1 la commande « vrrp 1 track xx decrement 150 » avec (en global conf) « track 10 interface Ethernet0 line-protocol » par exemple.
    Ainsi si l’interface WAN de R1 tombe, la priorité tombe à 50 et le routeur 2 prend la main, et la continuité est faites vers le routeur distant.

    Encore mieux, tu peux utiliser les « ip sla monitor » permettant de conditionner la bascule en fonction de la réponse au ping du routeur distant (ou autres conditions).

    HSRP n’a pas (a ma connaissance) ces fonctionnalités.

    • En effet, ici la config ne tenait compte que de la disponibilité de l’interface côté LAN. J’ai omis un détail de la topologie … les routeurs utilisent EIGRP. Dés lors si l’interface WAN tombe, la route dépendante tombe aussi, et n’est donc plus annoncée par le routeur principal ce qui provoque l’apparition de la route de secours dans la table de routage du routeur côté LAN. C’est alors un jeu d’ICMP « redirect » entre les routeurs qui permettra aux paquets de circuler correctement.
      Le temps de convergence d’EIGRP (qques ms) est de loin inférieur à celui de VRRP ( de l’ordre de la seconde) … c’est la raison pour laquelle je n’ai pas parlé du tracking etc. Mais il est vrai que je pourrais faire un article consacré à cette technique.

  2. Très bon article.

    Il existe une différence entre HSRP et VRRP.

    HSRP utilise une adresse ip unique pour l’interface virtuelle.
    VRRP peut utiliser l’adresse ip d’une interface physique.

    En configurant la passerelle par défaut de l’hôte C1 à 192.168.0.1, la configuration VRRP des routeurs serait la suivante :

    R1:

    interface FastEthernet0/0
    vrrp 1 ip 192.168.0.1
    vrrp 1 preempt

    R2:
    interface FastEthernet0/0
    vrrp 1 ip 192.168.0.1

    R1 est appelé owner, l’adresse ip virtuelle configurée en VRRP correspond à l’adresse de son interface fa 0/0. En situation normale c’est R1 qui est maître VRRP.