Présentation de la détection de transfert bidirectionnel (BFD)

Cette page décrit la détection de transfert bidirectionnel (BFD, Bidirectional Forwarding Detection) pour Cloud Router.

BFD (voir les documents RFC 5880 et RFC 5881) est un protocole de détection des interruptions de chemins de transfert compatible avec la plupart des routeurs du commerce. Avec BFD pour Cloud Router, vous pouvez activer la fonctionnalité BFD dans une session BGP pour détecter les interruptions de chemin de transfert, telles que les événements d'échec de liaison. Cette fonctionnalité rend les réseaux hybrides plus résilients.

Lorsque vous vous appairez avec Google Cloud depuis votre réseau sur site à l'aide d'une interconnexion dédiée ou partenaire, vous pouvez activer BFD pour détecter rapidement les échecs de liaison et le basculement vers une autre liaison ayant une session BGP de sauvegarde. De cette manière, BFD fournit un chemin de connectivité réseau à haute disponibilité qui peut répondre rapidement en cas d'échec de liaison.

Avantages du protocole BFD

Quand le mode BFD est configuré avec les paramètres par défaut, il détecte les défaillances en 5 secondes, contre 60 secondes pour la détection BGP. Lorsque BFD est mis en œuvre sur Cloud Router, la durée de détection de bout en bout peut ne durer que 5 secondes.

BFD est un protocole hello de longueur fixe dans lequel chaque extrémité d'une connexion transmet régulièrement des paquets via un chemin de transfert.

BFD est un protocole de détection basé sur UDP qui fournit une méthode peu gourmande en ressources permettant de détecter les échecs dans le chemin de transfert entre deux routeurs adjacents. Cela inclut la détection des défaillances dans les interfaces, les liaisons de données et les plans de transfert. Vous pouvez activer BFD au niveau du protocole de routage.

Limites du protocole BFD

Vous ne pouvez activer le mode BFD que dans les sessions BGP configurées pour les rattachements de VLAN dans une interconnexion dédiée ou partenaire. BFD n'est pas compatible avec les sessions BGP configurées pour les tunnels VPN haute disponibilité ou pour le dispositif de routeur qui fait partie du centre de connectivité réseau.

Établissement de session BFD

Pour établir une session BFD, configurez BFD sur les deux pairs BGP : un routeur Cloud Router et votre routeur sur site exécutant BFD. Une fois que vous avez activé BFD pour le protocole de routage BGP sur le routeur, une session BFD est créée, les timers BFD sont négociés et les pairs BFD commencent à s'envoyer des paquets de contrôle BFD aux intervalles négociés.

En envoyant des notifications de détection de défaillances rapides à BGP sur le routeur local pour lancer le processus de recalcul de la table de routage, BFD contribue à réduire considérablement le temps de convergence global du réseau.

Le schéma suivant illustre un réseau simple avec deux routeurs exécutant BGP et BFD. Ces valeurs représentent le processus d'établissement d'une session BFD :

  1. Le voisin BGP est configuré.
  2. BGP envoie une requête au processus BFD local pour lancer une session voisine BFD avec le routeur BGP pair/voisin.
  3. La session voisine BFD avec le routeur BGP voisin est établie.
Établissement de session BFD
Établissement d'une session BFD (cliquez pour agrandir)

BFD en cas de défaillance

La figure suivante montre ce qui se produit en cas de défaillance du réseau.

En mode contrôle uniquement BFD, le routeur Cloud Router et votre routeur sur site s'envoient régulièrement des paquets de contrôle BFD les uns aux autres. Si le nombre de paquets de contrôle d'une ligne configurée dans le paramètre bfd multiplier du routeur Cloud Router n'est pas reçu par l'autre routeur, la session est déclarée interrompue. Voici ce qui se produit ensuite :

  1. Une défaillance dans la liaison se produit entre Google Cloud et le routeur sur site.
  2. La session voisine BFD avec le routeur BGP voisin est détruite.
  3. BFD informe le processus BGP local que le voisin BFD n'est plus accessible.
  4. Le processus BGP local supprime la relation du voisin BGP.

Si un autre chemin est disponible, les routeurs commencent immédiatement à converger vers celui-ci.

BFD en cas de défaillance
BFD en cas de défaillance (cliquez pour agrandir)

Blocage de session BFD

Cloud Router applique en interne le blocage de session BFD, afin de supprimer l'effet négatif des oscillations fréquentes de session BFD sur BGP. Le blocage de session BFD utilise des paramètres par défaut qui ne peuvent pas être modifiés par l'utilisateur.

Le blocage de session BFD utilise un système de pénalité. La valeur de la pénalité commence à 0 et augmente à 1 pour le premier volet. Après la première oscillation, la pénalité double à chaque nouvelle oscillation BFD. Lorsque la pénalité dépasse la valeur de seuil de 4, BFD supprime les notifications à BGP. La pénalité est réduite de moitié toutes les 10 minutes si aucune oscillation ne se produit pendant cette période.

BFD active à nouveau les notifications à BGP lorsque la pénalité est inférieure au seuil de réutilisation de 4.

L'intervalle de suppression maximal des notifications BFD envoyées à BGP est d'une heure. Cela garantit que les notifications de session BFD ne sont pas bloquées indéfiniment.

Mode BFD asynchrone

Cloud Router est compatible avec un mode de fonctionnement asynchrone, dans lequel les systèmes impliqués s'envoient régulièrement des paquets de contrôle BFD. Si un nombre consécutif configuré de ces paquets n'est pas reçu par l'autre système, la session est déclarée indisponible.

Le mode de demande du fonctionnement en mode BFD n'est pas compatible. Pour le mode paquet, BFD accepte le mode contrôle uniquement. Le mode d'écho n'est pas accepté.

En mode asynchrone de fonctionnement avec le mode paquet de contrôle, BFD s'exécute sur le plan de contrôle et peut augmenter légèrement les coûts et le temps de traitement du processeur.

BFD est désactivé par défaut sur les sessions BGP de Cloud Router. Pour utiliser BFD, vous devez l'activer.

Dans le scénario d'échec suivant, les routeurs ont les paramètres suivants :

  • L'intervalle réception de Cloud Router est défini sur 1 000 millisecondes (ms) multiplié par un multiplicateur BFD de 5, pour un paramètre de détection de timer de 5 000 ms.
  • L'intervalle transmission BFD du routeur pair est défini sur 1 000 ms multiplié par un multiplicateur BFD de 5, pour un paramètre de détection de timer de 5 000 ms.

Le routeur Cloud Router négocie avec le routeur pair et s'attend à recevoir des paquets de contrôle toutes les 1 000 ms du routeur pair. Si 5 000 ms s'écoulent sans que le routeur Cloud Router ne reçoive un paquet de contrôle, son timer de détection expire et il déclare la session BFD indisponible.

BFD sans paquets d'écho
BFD sans paquets d'écho (cliquez pour agrandir)

Redémarrage en douceur et BFD

Afin de réduire le plus possible l'impact sur le trafic lors des événements de maintenance logicielle Cloud Router, nous vous recommandons d'activer le redémarrage en douceur BGP.

Si le redémarrage en douceur BGP et le mode BFD sont activés, lorsque Cloud Router redémarre, il tente de désactiver le mode BFD en envoyant un message AdminDown au routeur sur site. Dans ce cas, la session BGP reste active sur site et le routeur sur site passe en mode de redémarrage en douceur. Lorsque le routeur sur site est en mode de redémarrage en douceur, Cloud Router peut redémarrer sans affecter le trafic du plan de données.

De même, si le routeur sur site envoie un message AdminDown avant le redémarrage de son plan de contrôle, Cloud Router passe en mode de redémarrage en douceur. Lorsque Cloud Router est en mode de redémarrage en douceur, le routeur sur site peut redémarrer sans affecter le trafic du plan de données.

Cloud Router définit le bit indépendant du plan de contrôle sur 0 lors de l'établissement du mode BFD avec son routeur pair, afin de signaler que sa mise en œuvre du mode BFD dépend du plan de contrôle. Si une défaillance de l'interface se produit, il est possible que le routeur pair ne puisse pas faire la distinction entre une défaillance BFD causée par une défaillance du plan de contrôle ou une défaillance du plan de données. Par exemple, une défaillance de l'interface peut amener le routeur sur site à passer en mode de redémarrage en douceur et à retarder inutilement le basculement du trafic depuis la liaison concernée.

En raison de cette ambiguïté potentielle sur la défaillance BFD, différents fournisseurs traitent ce scénario spécifique différemment et proposent des paramètres de configuration pour modifier le comportement par défaut. Nous vous recommandons de consulter la documentation du fournisseur de votre routeur et de configurer votre routeur sur site pour vous assurer qu'un événement de défaillance d'interface BFD avec un pair BFD dépendant du plan de contrôle déclenche un basculement immédiat lorsqu'il est utilisé avec le redémarrage en douceur BGP.

Paramètres et timers BFD

Cette section décrit les paramètres BFD que vous pouvez configurer sur Cloud Router.

Mode d'initialisation de la session BFD

Description Mode d'initialisation de la session BFD pour ce pair BGP.
Commande gcloud --bfd-session-initialization-mode
Champ de l'API bgpPeers[].bfd.sessionInitializationMode
Réglage par défaut Disabled

Il existe trois paramètres du mode BFD : Active, Passive et Disabled. Si vous ne définissez pas ce mode, il est défini par défaut sur un paramètre Disabled, en utilisant le mode san écho (paquets de contrôle uniquement).

  • Disabled (par défaut) : BFD est désactivé pour ce pair BGP.
  • Passive : le routeur Cloud Router attend que le routeur pair lance la session BFD pour ce pair BGP.
  • Active : le routeur Cloud Router lance la session BFD pour ce pair BGP.

Vous devez définir le routeur sur au moins un côté d'une connexion (routeur Cloud Router ou le routeur pair) sur Active. Lors de la configuration d'une session BGP entre deux routeurs Cloud Router, définissez le mode d'initialisation de session BFD d'un routeur sur Active.

Si vous définissez les deux côtés sur Active, les deux côtés envoient un paquet de contrôle initial pour négocier les paramètres, et la session finira par être établie.

Si vous définissez le mode d'initialisation de la session BFD sur Disabled, vous pouvez éventuellement configurer le reste des paramètres BFD. Ces paramètres prennent effet lorsque vous réactivez BFD.

Intervalle minimal de transmission BFD (paquets BFD transmis à un pair)

Description Intervalle minimal entre les paquets de contrôle BFD transmis à un pair BGP.
Commande gcloud --bfd-min-transmit-interval
Champ de l'API bgpPeers[].bfd.minTransmitInterval
Réglage par défaut

1 000 ms. Vous pouvez spécifier un paramètre compris entre 1 000 ms et 30 000 ms.

Intervalle minimal de réception BFD (paquets BFD reçus d'un pair)

Description Intervalle minimal entre les paquets de contrôle BFD reçus d'un pair BGP.
Commande gcloud --bfd-min-receive-interval
Champ de l'API bgpPeers[].bfd.minReceiveInterval
Réglage par défaut

1 000 ms. Vous pouvez spécifier un paramètre compris entre 1 000 ms et 30 000 ms.

Multiplicateur BFD

Description Nombre de paquets de contrôle BFD consécutifs qui doivent être manquants pour que BFD déclare qu'un pair est indisponible.
Commande gcloud --bfd-multiplier
Champ de l'API bgpPeers[].bfd.multiplier
Réglage par défaut

5 paquets. Vous pouvez spécifier un paramètre compris entre 5 paquets et 16 paquets.

Étape suivante