I - Architecture traditionnelle Core, Aggregation, Access
7. Qu'est-ce que VRRP et GLBP ?
L’accès aux ressources externes étant indispensable, des protocoles de redondance de Gateway ont été développés dès le début des années 90 avec HSRPv1 (Hot Standby Router Protocol) propriétaire CISCO. Il faudra attendre 1998 pour qu’un standard de l'IETF soit publié dans la RFC 2338, il s’agit de VRRP (Virtual Router Redundancy Protocol). CISCO actualisera son protocole en 2000 avec HSRPv2 en ajoutant des fonctionnalités de sécurité et de gestion des VLAN. Une actualisation du standard VRRPv2 a été publiée dans la RFC 3768 en 2004 afin de prendre en charge de nouvelles fonctionnalités. GLBP (Gateway Load Balancing Protocol) a été proposé par CISCO en 2006 pour permettre une prise en charge du balancement de charge en plus de la redondance de Gateway. VRRP connaîtra sa dernière mise à jour en 2010 avec la RFC 5798 qui intègre la prise en charge d’IPv6.
Le protocole VRRP a pour but d’offrir une redondance de Gateway, afin de garantir une haute disponibilité en définissant un routeur « Master » et un « Backup » au sein d’un groupe de routeurs. Une IP et une MAC virtuelles seront associées au routeur « Master ». En cas de défaillance du « Master », le routeur « Backup » sera élu nouveau « Master » et se verra attribuer cette IP et cette MAC. Un échange de paquets VRRP Advertisement sur l’adresse multicast « 224.0.0.8 » périodique (avec un intervalle de 1 seconde) permet de procéder à l’élection du « Master », mais également de détecter une panne de ce dernier. A noter que la MAC virtuelle est normée sous la forme « 00:00:5E:00:01:XX », la valeur « XX » équivaut à l’identifiant du groupe VRRP en hexadécimal.
Vous trouverez le récapitulatif des états que peut prendre un routeur VRRP dans le tableau suivant :
| Etat | Description |
|---|---|
| Initialize | Le routeur initialise sa configuration, ses timer et sa priorité, il ne participe pas encore activement au groupe VRRP. |
| Backup | Le routeur surveille le master, sans traiter aucun flux réseaux autre que les paquets VRRP Advertisement. |
| Master | Le routeur transmet activement le trafic et envoie des paquets VRRP Advertisement. |
Nous allons maintenant procéder à l’analyse du paquet VRRP Advertisement :
L’échange de ces paquets, permet au routeur de procéder à l’élection du routeur « Master » en se basant sur la priorité, plus elle est élevée plus le routeur sera préféré. En cas d’égalité de priorité, l’adresse IP la plus élevée sera utilisée pour départager les routeurs. Une fois le routeur « Master » élu, des paquets d’annoncement sont envoyés toutes les 1 seconde en vue de détecter les pannes. En cas de perte de 3 paquets consécutifs, une nouvelle élection aura lieu. Le concept de préemption permet au routeur de redevenir « Master » après une défaillance temporaire. VRRP ne permet pas une répartition de charge native, contrairement à GLBP. Cependant, il existe un moyen détourné de créer un balancement de charge en créant deux groupes VRRP pour le même réseau IP avec une priorité inversée, puis de répartir les clients manuellement sur les Gateway virtuels.
Il est théoriquement possible de créer 255 groupes VRRP sur un routeur en fonction des ressources matériels de ce dernier. Chaque groupe VRRP peut prendre en charge 255 routeurs, soit 1 « Master » et 254 « Backup ».
Les protocoles HSRP et VRRP sont globalement semblables dans leurs fonctionnalités, les légères différences existantes sont les noms de mode des routeurs « Actif/Passif » au lieu de « Master/Backup », mais également sur les valeurs par défaut des timer.
GLBP est un protocole propriétaire CISCO, qui permet de mettre en œuvre un balancement de charge en plus d’une redondance. Pour garantir ce balancement de charge, le groupe GLBP procède à l’élection de l’AVG (Active Virtual Gateway) et de/des AVF (Active Virtual Forwarder). Cette élection intervient après la configuration du protocole via l’échange de paquets multicast via l’IP « 224.0.0.102 » sur le port UDP 3222 toutes les 3 secondes.
Nous allons maintenant analyser les différents champs qui composent le paquet GLBP :
- Type : Indique sur 1 octet le type de TLV, ici authentification.
- Length : Indique sur 2 octets la taille totale du champ TLV.
- Authtype : Indique sur 1 octet la méthode d’authentification.
- Authlength : Indique sur 1 octet la longueur du hash utilisé.
- MD5-chain index : Indique sur 1 octet la position du hash dans la séquence.
- MD5-chain hash : Indique sur 16 octets la valeur hash, utilisée pour la vérification d’intégrité et l’authentification des paquets GLBP.
- Type : Indique sur 1 octet le type de TLV, ici authentification.
- Length :Indique sur 2 octets la longueur totale du champ TLV.
- VG state? : Indique sur 1 octet l’état du routeur AVG, AVF et Listen.
- Priority : Indique sur 1 octet la priorité utilisée pour l’élection de l’AVG et l’AVF.
- Helloint : Indique sur 2 octets l’intervalle maximal admissible en millisecondes entre deux messages HELLO.
- Holdint : Indique sur 2 octets l’intervalle en millisecondes avant qu’un routeur ne soit considéré comme inactif en l’absence de réponse.
- Redirect : Indique sur 2 octets l’intervalle en secondes durant lequel un client peut continuer à requêter un AVF défaillant avant qu’il ne soit redirigé vers un autre AVF.
- Timeout : Indique sur 2 octets la durée en secondes pendant laquelle un AVF peut se retrouver en état inactif avant d’être supprimé de la topologie.
- Address type : Indique sur 1 octet la version d’IP utilisée, IPv4 ou IPv6.
- Address length : Indique sur 1 octet la longueur de l’adresse IP.
- Virtual IPv4 : Indique sur 4 octets l’adresse IP virtuelle utilisée par les clients pour joindre le groupe GLBP.
- Type : Indique sur 1 octet le type de TLV, ici coordination des rôles.
- Length : Indique sur 2 octets la longueur totale du champ TLV.
- Forwarder? : Indique sur 1 octet l’identifiant de l’AVF destinataire de la requête.
- VF state? : Indique sur 1 octet l’état du routeur, les états possibles sont « Active », « Standby » et « Inactive ».
- Priority : Indique sur 1 octet la priorité du routeur pour déterminer son rôle AVG ou AVF.
- Weight : Indique sur 2 octets le poids du routeur qui sera utilisé par les algorithmes de balancement de charge.
- Virtualmac : Indique sur 6 octets la MAC virtuelle du routeur qui sera utilisée pour recevoir le trafic.
Maintenant que vous maîtrisez la composition des paquets GLBP, nous allons aborder les rôles des routeurs au sein d’un groupe GLBP :
Comme vous l’avez compris, une fois la configuration effectuée, GLBP procède à l’élection de l’AVG. Pour cela les informations échangées via les paquets GLBP sont utilisées. Le routeur qui dispose de la plus grande priorité sera préféré, en cas d’égalité l’adresse IP la plus haute sera préférée à son tour. A noter que la priorité peut être personnalisée par l’administrateur entre 1 et 255 (la valeur par défaut est 100). L’AVG Standby est élu selon le même principe que l’AVG avec la seconde priorité la plus haute. Les routeurs AVG et AVF passent par plusieurs états avant d’atteindre leur rôle.
Les routeurs AVG transitent par les 6 états suivants :
1. Disabled : Dispose d’une configuration GLBP partielle, il fait partie d’un groupe GLBP mais, ne dispose pas d’une IP pour participer au processus.
2. Initial : Dispose d’une configuration IP, cependant les timer et la priorité sont encore en cours d’initialisation.
3. Listen : Reçoit les paquets HELLO des autres routeurs AVG et/ou AVG standby, mais il n’envoie pas encore de paquets HELLO.
4. Speak : Envoie des paquets HELLO de manière active, pour participer à l’élection de l’AVG et l’AVG standby.
5. Stanby : Surveille l’AVG pour prendre le relais en cas de panne de ce dernier.
6. Active : Assume le rôle d’AVG de manière active et coordonne les AVF.
Les routeurs AVF transitent seulement par les 4 états ci-dessous :
1. Disabled : Dispose d’une configuration GLBP partielle, il fait partie d’un groupe GLBP mais, n’a pas encore de MAC virtuelle attribuée par l’AVG.
2. Initial : Dispose d’une MAC virtuelle et entre dans la phase d’initialisation finale de la configuration.
3. Listen : Reçoit les paquets HELLO de l’AVG et se prépare à prendre le rôle AVF à la demande de l’AVG.
4. Active : Agit comme un AVF actif et participe à l’équilibrage de charge en traitant le trafic du sous-ensemble de clients que l’AVG lui adresse.
Le protocole GLBP peut théoriquement supporter 1024 groupes, bien que certains routeurs d’entrée de gamme ne disposent pas des ressources matériels suffisantes pour gérer autant de groupes GLBP. Chaque groupe GLBP peuvent contenir 1024 routeurs, cependant seulement 4 routeurs peuvent être AVF actifs en même temps.
L’adresse IP virtuelle est définie par l’administrateur, contrairement à l’adresse MAC qui est générée de la manière suivante : « 00:07:B4:XX:YY:ZZ »
| Partie | Description |
|---|---|
| 00:07:B4 | Préfix OUI (Organizationally Unique Identifier) attribué à CISCO pour GLBP. |
| XX | Numéro du groupe GLBP compris entre 0 et 1023. |
| YY | de l’AVF compris entre 0 et 4. |
| ZZ | Généré aléatoirement pour éviter les conflits sur le réseau. |
Abordons maintenant les trois algorithmes de répartition de charge disponibles sur GLBP :
Comme tous les services et protocoles, de nos jours la sécurisation de ces protocoles est un point essentiel. La sécurisation de nos protocoles passe par deux grands axes : l’authentification et le filtrage. En effet, les protocoles GLBP et VRRP (jusqu’à la version 2 pour VRRP) permettent une authentification de leurs échanges via un mot de passe, le hachage MD5 et/ou SHA256. De plus, comme pour de nombreux protocoles, les ACL peuvent être implémentées afin de filtrer les paquets VRRP et GLBP. L’utilisation de ces deux méthodes permet de limiter grandement le risque d’usurpation d’un routeur illégitime, mais également la compromission des paquets.
Ces deux protocoles s’intègrent parfaitement sur la couche « Aggregation » de l’architecture à trois niveaux. En effet, la couche « Aggregation » étant constituée d’une paire de MLS qui assure le routage inter-VLAN pour les switch de la couche « Access », la mise en place de VRRP ou GLBP offrira une redondance de Gateway. Le choix entre ces deux protocoles se fait en fonction du fournisseur de matériels réseaux et du besoin de balancement de charge. Si vous ne souhaitez pas être dépendant d’un seul constructeur, VRRP sera un choix plus raisonnable. Au contraire, si la dépendance à CISCO ne vous gêne pas et que le balancement de charge est impératif pour vous, GLBP sera un très bon choix.
Dans le cadre de notre infrastructure, nous mettrons en œuvre GLBP sur une paire de MLS de la couche « Aggregation » et VRRP sur une autre paire de MLS de la couche « Aggregation », cela nous permettra d’opposer leur configuration.