GLBP : Gateway Load-Balancing Protocol

Après HSRP et VRRP, il est temps de présenter la génération suivante de protocole prenant en charge la redondance de passerelles: GLBP…

Comme son nom l’indique, non seulement il permet de gérer la gestion de passerelles redondantes, mais qui plus est il permet d’équilibrer le trafic entre elles, là ou HSRP et VRRP se contentaient d’en utiliser une et de laisser les autres en standby!

La topologie

glbp

Topologie similaire aux articles concernant HSRP et VRRP. La seule différence étant la présence de deux hôtes afin de tester l’équilibrage de charge.

Nous allons donc ici mettre en place, à nouveau, une redondance entre R1 et R2 et ensuite voir comment les deux hôtes se comportent.

 

Quelques explications concernant GLBP

Première chose à noter, GLBP est un protocole propriétaire Cisco (sans doute son seul vrai défaut).

Le concept général reste assez proche de ce que nous avons déjà vu. C’est toujours le protocole ARP qui est au coeur du tour de magie. Les passerelles sont configurées pour faire partie d’un groupe GLBP auquel est attribué une adresse IP virtuelle (10.0.0.254 dans le cas présent).

Lorsqu’un des hôtes doit utiliser la passerelle par défaut pour communiquer en dehors de son domaine de diffusion, il émet une requête ARP pour obtenir l’adresse MAC correspondant à 10.0.0.254 … C’est ici que les choses se compliquent … ou du moins s’enrichissent.

Dans le cas de GLBP, un des routeurs sera l’AVG (Active Virtual Gateway), celui qui aura la plus grande priorité (ou la plus grande adresse IP configurée à priorité égale). Les autres routeurs seront les AVF (Active Virtual Forwarders).

L’AVG a pour mission de distribuer la charge entre les différentes passerelles (lui-même et les différents AVF). Pour y arriver, il se chargera de répondre aux requêtes ARP en variant la réponse, indiquant la sienne, celle d’un AVF, celle de l’AVF suivant etc.

Ceci est possible par le fait que chaque routeur faisant partie d’un même groupe GLBP prendra en charge une adresse MAC GLBP différente mais faisant partie d’un même groupe. La structure de l’adresse MAC est la suivante: 0007.b40X.XXYY (où les X symbolisent le n° de groupe allant de 1 à 1023 et les Y l’incrémentation d’une passerelle à l’autre).

Les routeurs communiquent entre eux par multicast (224.0.0.102) en s’échangeant des messages HELLO. Si l’un d’eux manque à l’appel il disparaît de la rotation au niveau des réponses ARP et si c’est l’AVG qui disparaît, c’est le meilleur AVF qui prendra sa place.

 

 

Configuration de R1

R1(config)#interface FastEthernet 0/0
R1(config-if)#glbp 10 ip 10.0.0.254
R1(config-if)#glbp 10 preempt
R1(config-if)#glbp 10 priority 150
*Mar 1 00:27:32.447: %GLBP-6-STATECHANGE: FastEthernet0/0 Grp 10 state Standby -> Active
*Mar 1 00:27:42.451: %GLBP-6-FWDSTATECHANGE: FastEthernet0/0 Grp 10 Fwd 1 state Listen -> Active

L’interface Fa0/0 de R1 est donc configurée ici pour participer au groupe 10 de GLBP. On active le droit de préemption (afin d’autoriser R1 à reprendre sa place le cas échéant), on défini une priorité supérieure à la valeur par défaut (qui est de 100) afin de forcer R1 à devenir l’AVG.

Vérifications …

FastEthernet0/0 - Group 10
  State is Active
    2 state changes, last state change 00:04:25
  Virtual IP address is 10.0.0.254
  Hello time 3 sec, hold time 10 sec
    Next hello sent in 1.052 secs
  Redirect time 600 sec, forwarder timeout 14400 sec
  Preemption enabled, min delay 0 sec
  Active is local
  Standby is unknown
  Priority 150 (configured)
  Weighting 100 (default 100), thresholds: lower 1, upper 100
  Load balancing: round-robin
  Group members:
    c000.116c.0000 (10.0.0.1) local  <== MAC réelle
  There is 1 forwarder (1 active)
  Forwarder 1
    State is Active
      1 state change, last state change 00:04:15
    MAC address is 0007.b400.0a01 (default) <== MAC Virtuelle
    Owner ID is c000.116c.0000
    Redirection enabled
    Preemption enabled, min delay 30 sec
    Active is local, weighting 100
R1#

 

Configuration de R2

R2(config)#int FastEthernet 0/0
R2(config-if)#glbp 10 ip 10.0.0.254

Rien de plus simple … ici on a juste assigné l’interface de R2 au même groupe GLBP et bien entendu avec la même adresse IP virtuelle.

Vérification

R2#show glbp
FastEthernet0/0 - Group 10
  State is Standby
    1 state change, last state change 00:01:55
  Virtual IP address is 10.0.0.254
  Hello time 3 sec, hold time 10 sec
    Next hello sent in 1.120 secs
  Redirect time 600 sec, forwarder timeout 14400 sec
  Preemption disabled
  Active is 10.0.0.1, priority 150 (expires in 8.380 sec)
  Standby is local
  Priority 100 (default)
  Weighting 100 (default 100), thresholds: lower 1, upper 100
  Load balancing: round-robin
  Group members:
    c000.116c.0000 (10.0.0.1)
    c001.116c.0000 (10.0.0.2) local
  There are 2 forwarders (1 active)
  Forwarder 1
    State is Listen
    MAC address is 0007.b400.0a01 (learnt)
    Owner ID is c000.116c.0000
    Time to live: 14398.376 sec (maximum 14400 sec)
    Preemption enabled, min delay 30 sec
    Active is 10.0.0.1 (primary), weighting 100 (expires in 9.192 sec)
  Forwarder 2
    State is Active
      1 state change, last state change 00:02:05
    MAC address is 0007.b400.0a02 (default)
    Owner ID is c001.116c.0000
    Preemption enabled, min delay 30 sec
    Active is local, weighting 100
R2#

Le Forwarder 1 n’est autre que R1, qui a le rôle d’AVG puisqu’il a une meilleure priorité. Le Forwarder 2 est donc R2. Pour chacun on retrouve son adresse MAC réelle et son adresse MAC virtuelle.

Notez également la méthode d’équilibrage: round-robin, ce qui signifie en gros à chacun son tour !. Il est possible de la modifier, par exemple en fonction de l’adresse MAC de l’hôte (1 hôte = toujours le même forwarder) ou alors en fonction d’une proportion (20% d’un côté et 80% de l’autre par exemple).

Test des hôtes …

Sur C1 …

C1#ping 1.1.1.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/21/48 ms
C1#show arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  10.0.0.254              2   0007.b400.0a01  ARPA   FastEthernet0/0
C1#

Sur C2…

C2#ping 1.1.1.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/25/40 ms
C2#show arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  10.0.0.254              1   0007.b400.0a02  ARPA   FastEthernet0/0
C2#

La nuance apportée par GLBP se situe au niveau du contenu des tables ARP de C1 et C2. Comme vous pouvez le constater, pour C1 10.0.0.254 est associé à 0007.b400.0a01 … tandis que sur C2 cette ip virtuelle est associée à 0007.b400.0a02.

L’AVG distribue donc bien le trafic entre les différents forwarders (AVG inclus).

Remarque: Dans cette topologie j’ai utilisé deux routeurs pour remplacer les hôtes virtuels de GNS3 afin de garantir un comportement naturel au niveau du protocole ARP. Pour qu’ils se comportent comme un PC, j’ai désactivé le routage (no ip routing), configuré leur interface Fa0/0 et configuré une passerelle par défaut (ip default-gateway 10.0.0.254) ce qui n’est possible qu’à condition d’avoir désactivé le routage au préalable.

Conclusion

GLBP apporte un élément décisif, permettant de ne pas laisser un équipement « dormir ». Non seulement la redondance est présente (si un forwarder disparaît, il est simplement supprimé de la rotation) mais en plus on profite des ressources de celle-ci!

Il est bien entendu possible d’obtenir une configuration plus poussée, en ajustant les timers par exemple afin d’améliorer la réactivité du protocole etc… Ce sera le sujet d’un prochain article!.

2 Comments on “GLBP : Gateway Load-Balancing Protocol

  1. Bonjour,
    Peut-on implémenter GLBP sur des switches de niveau 3 tel le Cisco 3650 ?

    • A première vue, GLBP n’est pas disponible sur les 3560, par contre sur les 3750 il devrait l’être. Donc tout dépend du modèle et de l’IOS embarqué.