Cisco – Présentation et implémantation de GLBP (Gateway Load Balancing Protocol)

Voici un billet traitant d’un mécanisme conçu par Cisco, celui-ci a été créé dans le but d’ajouter une fonctionnalité que ne pouvait remplir ses prédécesseurs HSRP et VRRP dans le domaine de la tolérance de panne du routage. La suite détaille le fonctionnement de la technologie suivi d’un exemple d’implémentation.

HSRP/VRRP vs GLBP:

HSRP (Hot Standby Router Protocol)/VRRP (Virtual Redundancy Routing Protocol).
HSRP est à la base conçu par Cisco puis validé en tant que RFC (RFC2281) en 1998, tandis que VRRP est conçu à la base par l’IETF group (RFC 2338 et 3768). HSRP et VRRP fonctionne selon le principe du mode actif/passif, c’est-à-dire que le groupe de routeur (en règle générale deux équipements) ne travaille pas simultanément. L’équipement actif prend l’ensemble de la charge tandis que l’équipement passif écoute l’état de l’équipement actif en vue d’une potentielle reprise d’activité si une défaillance survient.

Ci-dessous un schéma présentant succinctement le fonctionnement de HSRP/VRRP :


GLBP :

GLBP a également pour objectif de gérer la fonction de passerelle dans le but de tolérer la panne, mais il présente une caractéristique visant à permettre une répartition de la charge du routage sur l’ensemble des équipements du groupe GLBP, chose que ne fait pas nativement HSRP ou VRRP.

Ci-dessous un schéma présentant succinctement le fonctionnement de GLBP:

Présentation du mécanisme GLBP :

GLBP « Gateway Load Balancing Protocol » est une technologie développé par le constructeur CISCO, elle a pour objectif d’améliorer la résilience offerte par son prédécesseur HSRP « Hot Standby Router Protocol ». Là où HSRP et VRRP (Virtual Router Redundancy Protocol) permettent par le biais d’un mécanisme « actif, passif » la création de groupe de routeur tolérant à la panne, GLBP va plus loin en ajoutant la possibilité de répartir la charge entre les différentes passerelles composant le groupe.
GLBP compense un reproche que certains on fait à HSRP et VRRP en ne permettant pas de répartir la charge nativement entre les équipements composant le groupe. De ce fait les ressources étaient principalement consommées par l’équipement actif, tandis que l’équipement passif reste inutilisé.

Un groupe de routeur GLBP peut être composé de plusieurs routeurs faisant office de passerelle par défaut. Il est possible de concevoir une architecture sur la base de plusieurs équipements actant comme Gateway, et distribuer les informations permettant d’identifier la Gateway de sorte à ce que la charge soit repartie entre les différents équipements composant le groupe.

GLBP offre la possibilité de concevoir un ou plusieurs groupe afin d’accroitre la granularité de répartition des ressources composant l’infrastructure. Comme indiqué auparavant GLBP permet de mettre en œuvre N équipement (plus de quatre routeurs) actant comme passerelle pour les clients du réseau. Ces passerelles sont identifiées sous l’acronyme AVF (Active Virtual Forwarders).

GLBP AVG (Active Virtual Gateway):

Un groupe GLBP doit dans le cadre de son fonctionnement procéder à l’élection de ce que l’on appelle l’AVG (Active Virtual Gateway). Les autres équipements du groupe GLBP seront de potentiel AVG en cas de défaillance de l’AVG primaire. Les AVF aurons dans ce contexte connaissance de leur adresse MAC par le biais d’une distribution de l’information en question par l’AVG.

L’élection de l’AVG est réalisée en fonction de son niveau de priorité, la valeur la plus élevée indiquera qui sera l’AVG. Si deux équipements ont le même niveau de priorité, celui possédant l’adresse IP avec la valeur la plus haute sera élu AVG, les autres sont des AVF qui prendrons le relais de l’AVG si celui-ci venait à devenir défaillant.

La valeur de la priorité (weight) est comprise entre 1 et 254.

GLBP AVF (Active Virtual Forwarders)

Ces équipements fonts partis du groupe GLBP, ils sont utilisés comme Passerelles par les clients du réseau tout en dépendant d’un équipement principal l’AVG qui va procéder à la distribution des adresses MAC.

Comment sont répartis les clients de la Gateway virtuel ?

GLBP dans son fonctionnement tous comme HSRP et VRRP annonce aux clients du LAN l’adresse IP virtuel du groupe, hors GLBP est capable de répartir la charge sur ses homologues du groupe grâce au travail effectué par l’AVG.

1. Dans un premier temps le client envoie une requête ARP (broadcast ARP) demandant qui est 192.168.1.254 ?

2. L’adresse 192.168.1.254 fait référence aux équipements du groupe GLBP, l’AVG reçoit la requête et répond que l’adresse MAC est 0000.0000.0001 de cette IP c’est lui-même. Ceci indiquera à PC1 que le routeur avec l’adresse MAC 0000.0000.0001 sera sa passerelle. Le client acquitte la réponse par le biais de l’insertion de l’information de sa table ARP, l’adresse MAC correspond au routeur R1.

3. La PC2 va procéder à une demande du même type, la logique reste la même.

4. Le routeur R1 soit l’AVG, va répondre au client en lui indiquant quelle sera sa passerelle. L’AVG utilise un mécanisme consistant à répartir la charge sur les autres routeurs du groupe, par défaut une répartition basée sur un round-robin est effectuée par l’AVG. Dans ce contexte l’AVG va indiquer que l’AVF R2 sera la passerelle pour le PC2, l’AVG lui a indiqué que l’adresse MAC est 0000.0000.0002 pour 192.168.1.254.

5. PC2 va utiliser R2 comme passerelle.

Le load balancing GLBP :

Le processus GLBP depuis l’AVG, reparti les requêtes ARP émises à destination des postes clients afin de répartir la charge entre les différents routeurs. La répartition de la charge entre les différents routeurs composant un groupe GLBP est basée par défaut sur la méthode round-robin.

  • Round robin

La méthode round-robin est une méthode utilisée pour bien d’autres mécanismes, notamment le service DNS. La logique consiste à répartir la charge sur la base du principe du tourniquet. L’AVG répartis les sessions les unes après les autres entre les différents équipements du groupe GLBP. L’exemple cité auparavant est basé sur ce mode de fonctionnement.

  • Weighted

La méthode basée sur la valeur Weighted (le poids), permet de repartir la charge plus finement en indiquant sur la base du poids (la valeur la plus haute) quel équipement sera prioritaire vis-à-vis de ses homologues du groupe. Exemple si deux routeurs composent la topologie, l’un possède la valeur 50 et le second 100, celui ayant un poids de 100 comme valeur va prendre en charge deux fois plus de clients.

  • Host-dependent

La méthode Host-depend se base sur l’adresse MAC apprise, afin de conserver la session. Chaque adresse MAC apprise et conservé par l’AVF et maintenu sur celui-ci. Cette méthode évite les problèmes qui peuvent survenir avec les deux autres mécanismes, notamment les potentiels problèmes liés à la NAT dynamique. Cette méthode de répartition de charge est déconseillée pour les petits réseaux de moins d’une vingtaine de postes.

  • Sans load-balancing

Il est possible de ne pas utiliser l’une de ces 3 méthodes de répartitions des adresses MAC, dans ce cas seul l’AVG prendra toute la charge en compte. Au final, cela revient à fonctionner sur la base d’HSRP ou de VRRP, donc en mode actif/passif.

Exemple d’implémentation :

La topologie sur laquelle je me base pour concevoir la maquette est relativement simple.

J’ai utilisé l’émulateur basé sur la couche graphique GNS3 pour réaliser la maquette, auquel il faut ajouter l’utilisation de VPCS (VPCS permet d’émuler des PC, il est possible d’en créer jusqu’à 9).

Description des éléments composant l’architecture :

C1(PC1): Machine virtuelle basée sur VPC

  • IP : 192.168.0.10 255.255.255.0 Gateway 192.168.0.1

C2(PC2): Machine virtuelle basée sur VPC

  • IP : 192.168.0.20 255.255.255.0 Gateway 192.168.0.1

C3(PC3): Machine virtuelle basée sur VPC

  • IP : 192.168.1.1 255.255.255.0 Gateway 192.168.0.1

SW2: Commutateur virtuel permettant de raccorder les équipements PC1, PC2 à GLBP1 et GLBP2.

SW3: Commutateur virtuel permettant de raccorder GLBP1 et GLBP2 à PC3.

GLBP1: Routeur faisant partie du groupe GLBP1 (Cisco 3

  • Interface fastethernet 0/0 – IP: 192.168.1.251
  • Interface fastethernet 0/1- IP: 192.168.0.251 à addresse IP GLBP: 192.168.0.1

GLBP2: Routeur faisant partie du groupe GLBP1

  • Interface fastethernet 0/0 – IP: 192.168.1.252
  • Interface fastethernet 0/1- IP: 192.168.0.251 à addresse IP GLBP: 192.168.0.1
Schéma de la maquette GNS3 :

Ci-dessous le détail de la topologie que j’ai mis en œuvre sous GNS3, utilisable avec Dynamips (penser juste à retirer les données sur les coordonnées « abscisse et ordonnée » , et les liens C1, 2, 3 ..).

Fichier de configuration dynamips:

autostart = True
[localhost:7200]
workingdir = C:\GNS3\GLBP.net_snapshot_231209_144957
udp = 10000
[[2621]]
chassis = 2621
image = C:\c2600-entservicesk9-mz.124-25b.bin
ram = 128
ghostios = True
sparsemem = True
idlepc = 0x804c7bb4
[[ETHSW SW3]]
1 = access 1
2 = access 1
3 = access 1 nio_gen_eth:\device\npf_{45d291ad-3bf9-4687-b320-8e7e273ae008}
x = -113.5
y = -124.0
hx = 76.0
hy = -6.0
[[ETHSW SW2]]
1 = access 1
2 = access 1
3 = access 1 NIO_udp:30000:127.0.0.1:20000
4 = access 1 NIO_udp:30001:127.0.0.1:20001
x = -113.5
y = 33.0
hx = -42.0
hy = -3.0
[[ROUTER GLBP1]]
model = 2621
console = 2005
f0/0 = SW3 1
f0/1 = SW2 2
x = -242.0
y = -50.0
[[ROUTER GLBP2]]
model = 2621
console = 2006
f0/0 = SW3 2
f0/1 = SW2 1
x = 11.8994949366
y = -55.0
[GNS3-DATA]
workdir = C:\GNS3\GLBP.net_snapshot_231209_144957
m11 = 0.707106781187
m22 = 0.707106781187
[[Cloud C1]]
x = -336.5
y = 101.0
connections = SW2:3:NIO_udp:30000:127.0.0.1:20000
[[Cloud C2]]
x = -29.5
y = 99.0
connections = SW2:4:NIO_udp:30001:127.0.0.1:20001
[[Cloud C4]]
x = -156.713203436
y = -227.828427125
connections = SW3:3:nio_udp:30002:127.0.0.1:20002

Les fichiers de configurations:

Configuration de GLBP1:

Current configuration :637 bytes
!
version 12.4
service timestamps
debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname GLBP1
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model memory-size
iomem 15
ip cef
!
!
interface FastEthernet0/0
ip address 192.168.1.251 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
ip address 192.168.0.251 255.255.255.0
glbp 1 ip 192.168.0.1
glbp 1 preempt glbp 1
glbp 1 authentication md5 key-chain cisco
duplex auto
speed auto
!
ip forward-protocol nd
!
ip http server
no ip http secure-server
!
control-plane
!
mgcp behavior g729-variants static-pt
!
line con 0
line aux 0
line vty 0 4
login
!
end

Configuration de GLBP2:

Current configuration : 637 bytes
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname GLBP2
!
boot-start-marker
boot-end-marker
!
no aaa new-model
memory-size iomem 15
ip cef
!
!
interface FastEthernet0/0
ip address 192.168.1.252 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
ip address 192.168.0.252 255.255.255.0
glbp 1 ip 192.168.0.1
glbp 1 preempt
glbp 1 authentication md5 key-chain cisco
duplex auto
speed auto
!
ip forward-protocol nd
!
ip http server
no ip http secure-server
!
control-plane
!
mgcp behavior g729-variants static-pt
!
line con 0
line aux 0
line vty 0 4
login
!
end

Diagnostiquer GLBP :

Utilisation de la commande « show glbp » sur le routeur GLBP1 :

Cette commande permet de connaitre le nombre de réponse ARP émise par l’équipement. Le mode de répartition des requêtes et bien d’autres éléments tels que l’équipement savoir quelle est l’équipement faisant office d’AVG et autres.

GLBP1#sh glbp
FastEthernet0/1 – Group 1
State is Standby
4 state changes, last state change 00:01:10
Virtual IP address is 192.168.0.1
Hello time 3 sec, hold time 10 sec
Next hello sent in 1.432 secs
Redirect time 600 sec, forwarder time-out 14400 sec
Authentication MD5, key-chain « cisco »
Preemption enabled, min delay 0 sec
Active is 192.168.0.252, priority 100 (expires in 8.220 sec)
Standby is local
Priority 100 (default)
Weighting 100 (default 100), thresholds: lower 1, upper 100
Load balancing: round-robin
Group members:
c800.0fa0.0001 (192.168.0.251) local
c801.0fa0.0001 (192.168.0.252) authenticated
There are 2 forwarders (1 active)
Forwarder 1
State is Listen
2 state changes, last state change 00:01:20
MAC address is 0007.b400.0101 (learnt)
Owner ID is c801.0fa0.0001
Time to live: 14399.848 sec (maximum 14400 sec)
Preemption enabled, min delay 30 sec
Active is 192.168.0.252 (primary), weighting 100 (expires in 9.848 sec)
Forwarder 2
State is Active
1 state change, last state change 00:03:13
MAC address is 0007.b400.0102 (default)
Owner ID is c800.0fa0.0001
Preemption enabled, min delay 30 sec
Active is local, weighting 100

Utilisation de la commande « show glbp capability » :

Permet d’indiquer les interfaces pouvant supporter l’implémentation de GLBP.

GLBP1#sh glbp capability
2621 * means interface may support GLBP
|
Interface Type | Potential Max Groups
FastEthernet0/0 18 AmdFE * 1024 (0x80111FE8, 0x80112088)
FastEthernet0/1 18 AmdFE * 1024 (0x80111FE8, 0x80112088)
VoIP-Null0 222 VoIP-Null –

Débugger le processus GLBP :

Debug glbp errors:

Cette commande permet de diagnostiquer les problèmes de configurations liés à GLBP.

GLBP2#debug glbp errors
GLBP Errors debugging is on

debug glbp events:

Cette commande permet de diagnostiquer les événements relatif au processus GLBP en cours de fonctionnement .

GLBP2#debug glbp events
all Display all GLBP events
api GLBP API events
detail Print more debugging detail
icmp GLBP ICMP events
protocol GLBP protocol events
redundancy GLBP IP redundancy events
terse Display all GLBP events except API and ICMP events
track GLBP tracking events

GLBP2#debug glbp events all
GLBP Events debugging is on
GLBP2#
*Mar 1 00:51:36.759: GLBP: Fa0/1 API ARP active virtual address 192.168.0.1 found
*Mar 1 00:52:19.159: GLBP: Fa0/1 Grp 1 Hello out 192.168.0.252 VG Active pri
100 vIP 192.168.0.1 hello 3000, hold 10000 VF 1 Active pri 167 vMAC 0007.b400.0101
*Mar 1 00:52:20.831: GLBP: Fa0/1 Grp 1 Hello in 192.168.0.251 VG Standby pri
100 vIP 192.168.0.1 hello 3000, hold 10000 VF 2 Active pri 167 vMAC 0007.b400.0102
*Mar 1 00:52:22.163: GLBP: Fa0/1 Grp 1 Hello out 192.168.0.252 VG Active pri

Debug glbp packet

Cette commande permet de diagnostiquer les paquets émis depuis et vers cet équipement relatif à des messages GLBP.A titre d’information, GLBP communique sur l’adresse 224.0.0.102.

GLBP2#debug glbp packet
Regardons les adresses MAC apprises par les clients :
Coté routeur

GLBP1

GLBP1#show arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.0.10 0 0050.7966.6800 ARPA FastEthernet0/1
Internet 192.168.0.1 – 0007.b400.0102 ARPA FastEthernet0/1
Internet 192.168.1.3 – c800.0fa0.0000 ARPA FastEthernet0/0
Internet 192.168.1.2 23 c801.0fa0.0000 ARPA FastEthernet0/0
Internet 192.168.0.251 – c800.0fa0.0001 ARPA FastEthernet0/1
Internet 192.168.0.252 25 c801.0fa0.0001 ARPA FastEthernet0/1

GLBP2

GLBP2#show arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.0.10 1 0050.7966.6800 ARPA FastEthernet0/1
Internet 192.168.0.1 – 0007.b400.0101 ARPA FastEthernet0/1
Internet 192.168.1.3 23 c800.0fa0.0000 ARPA FastEthernet0/0
Internet 192.168.1.2 – c801.0fa0.0000 ARPA FastEthernet0/0
Internet 192.168.0.20 1 0050.7966.6801 ARPA FastEthernet0/1
Internet 192.168.0.251 23 c800.0fa0.0001 ARPA FastEthernet0/1
Internet 192.168.0.252 – c801.0fa0.0001 ARPA FastEthernet0/1

Capture des flux de la requête ARP émise par le PC1

VPCS 1 >ping 192.168.0.1
192.168.0.1 icmp_seq=1 time=82.000 ms
192.168.0.1 icmp_seq=2 time=174.000 ms
192.168.0.1 icmp_seq=3 time=143.000 ms
192.168.0.1 icmp_seq=4 time=63.000 ms
192.168.0.1 icmp_seq=5 time=111.000 ms
VPCS 1 >arp
00:07:b4:00:01:02 192.168.0.1

Cliquez pour agrandir:

Capture des flux de la requête ARP émise par le PC2

VPCS 2 >ping 192.168.0.1
192.168.0.1 icmp_seq=1 time=239.000 ms
192.168.0.1 icmp_seq=2 time=284.000 ms
192.168.0.1 icmp_seq=3 time=116.000 ms
192.168.0.1 icmp_seq=4 time=127.000 ms
192.168.0.1 icmp_seq=5 time=98.000 ms
VPCS 2 >arp
00:07:b4:00:01:01 192.168.0.1

Cliquez pour agrandir:

Nous constatons que GLBP à bien réparti les sessions entre les deux AVF, les tables ARP des deux hôtes renvoies chacune une adresse MAC différente de VPC1.

Laisser une réponse

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