Comment fonctionne le protocole de routage BGP ?

BGP est l’abréviation de Border Gateway Protocol. Il s’agit du protocole de routage utilisé pour assurer une interconnexion correcte entre les systèmes autonomes (AS). eBGP (BGP externe) est utilisé entre les AS, tandis que iBGP (BGP interne) est utilisé au sein de l’AS (Autonomous System).

Ces concepts de base sont expliqués dans notre article “Qu’est-ce que BGP ?”.

Nous allons maintenant nous plonger un peu dans le fonctionnement de BGP.

eBPG vs iBPG routing protocols

BGP est le protocole utilisé dans l’épine dorsale de l’Internet. Il permet aux organisations qui ont leur propre AS (généralement les fournisseurs de services Internet et les grandes organisations) de s’interconnecter avec d’autres. Ce type d’interconnexion entre AS s’appelle un peering.

Les bases du peering BGP

Le club Tier-1

Lorsqu’un AS est créé, il échange avec d’autres AS pour déclarer ses préfixes IP (les préfixes désignent les sous-réseaux IP qu’il possède), qui sont ensuite déclarés à d’autres AS, et ainsi de suite. De cette façon, lorsque de nouveaux préfixes sont annoncés, ils se propagent sur l’Internet.

Si vous possédez un AS, cela ne signifie pas pour autant que vous pouvez automatiquement le rendre disponible au niveau mondial ! Parmi les 100 000 AS, seuls une vingtaine d’entre eux peuvent atteindre l’ensemble des destinations Internet sans acheter de transit auprès d’un autre AS, formant ainsi ce qu’on appelle le club Tier-1.

Le routage BGP

Contrairement aux autres protocoles de routage, il n’y a pas de processus de découverte des pairs.

Chaque intervenant BGP, appelé « pair », échange des informations de routage avec ses pairs voisins sous la forme d’annonces de préfixes réseau.

Avec les annonces de préfixes, l’information est suffisante pour construire un graphique de la connectivité des AS, comme illustré ci-dessous.

Comme vous pouvez le constater, la communication entre deux préfixes peut souvent se faire par des chemins différents..

Le préfixe J de l’AS 1559 peut par exemple atteindre le préfixe G de l’AS 257 via l’AS 20 ou l’AS 13936.

Alors comment les routeurs choisissent-ils entre les différentes routes possibles ?

La décision de routage

Le chemin de l’AS BGP

BGP ne fonctionne pas comme les autres protocoles de routage traditionnels qui utilisent des mesures comme la distance ou les coûts (par exemple celui de la bande passante) pour prendre des décisions de routage. Au lieu de cela, BGP utilise divers attributs pour acheminer le trafic. 

L’attribut principal de BGP est appelé « chemin AS ». Il s’agit d’une liste de numéros d’AS décrivant le chemin inter-AS vers une destination. Le chemin AS est si important pour la fonction de BGP que le protocole est souvent appelé protocole de routage à vecteur de chemin.

La figure ci-dessus montre comment le chemin AS est propagé.

TLe pair (“peer” en anglais) de l’AS 1 envoie son préfixe aux pairs de l’AS 6 et de l’AS 5 (chemin de l’AS [1]), qui à leur tour envoient la liste de préfixes respectivement aux pairs de l’AS 3 (chemin de l’AS [6, 1]) et de l’AS 2 (chemin de l’AS [5, 1]). Le pair AS 2 propage cette liste de préfixes au pair AS 4 (chemin AS [2, 5, 1]). Enfin, l’homologue AS 4 propage le préfixe de l’homologue AS 1 à l’homologue AS 3 (chemin AS [4, 2, 5, 1]).

Par conséquent, l’AS 3 est accessible depuis l’AS 1 par le chemin d’AS [6, 1] ainsi que par le chemin d’AS [4, 2, 5, 1].

Le processus de décision de routage BGP

D’après l’exemple précédent, vous pouvez penser que le chemin choisi entre les pairs de l’AS 1 et de l’AS 3 passera par l’AS 6 car il s’agit du chemin le plus court. 

Eh bien, cela peut être le cas, mais ce n’est pas la règle stricte ! En fait, le meilleur chemin est choisi en fonction des politiques, qui sont configurées via divers filtres de préfixes, en annonçant des routes spécifiques ou en manipulant les attributs BGP. 

Lorsqu’une destination est accessible par deux chemins différents, BGP sélectionne le meilleur chemin en évaluant séquentiellement les attributs du chemin :

  • Poids
  • Préférence locale
  • Origine
  • Longueur du chemin AS
  • Code d’origine
  • MED (Multi Exit Discriminator)
  • Chemin eBGP sur chemin iBGP
  • Chemin IGP le plus court vers le prochain saut BGP
  • Chemin le plus ancien
  • ID du routeur
  • Adresse IP du voisin.

Il ne s’agit pas ici d’entrer dans tous les détails de ces attributs, mais de comprendre le principe de base du processus de décision de routage.

En reprenant l’exemple ci-dessus, si l’attribut « weight » du chemin AS [4, 2, 5, 1] de l’AS 1 à l’AS 3 est supérieur à l’attribut du chemin AS [6, 1], alors ce chemin est choisi. Si l’attribut « weight » est égal pour les deux chemins, alors l’attribut suivant est évalué (préférence locale), et ainsi de suite.

Donc, en résumé, en utilisant les attributs BGP, vous pouvez vous assurer que votre trafic transitera par vos AS préférés, en vous basant par exemple sur des paramètres non techniques tels que des accords financiers que vous pouvez avoir avec d’autres propriétaires d’AS.

Comment et quand les données du protocole de routage BGP sont-elles échangées ?

BGP utilise le protocole de transport TCP pour transférer les données. Cela permet une livraison fiable des mises à jour BGP. BGP utilise le port TCP 179 pour cela.

Il utilise le modèle FSM (Finite State Machine) pour maintenir une table de tous les pairs BGP et leur état opérationnel.

Par rapport aux autres protocoles de routage, BGP n’envoie pas de mises à jour périodiques des données de routage. Au lieu de cela, il envoie des mises à jour uniquement lorsque des changements se produisent sur le réseau. FPar exemple, ces changements peuvent être dus à des réinitialisations de session, des défaillances de lien et des changements de politique.

Enfin, BGP envoie périodiquement des messages keep-alive pour vérifier la connexion TCP.

Qu’est-ce qui peut mal tourner avec BGP ?

Tout d’abord, nous avons vu que le peering BGP est configuré manuellement. La configuration humaine est sujette à des erreurs.. Ou pire, elle est sujette à des attaques malveillantes.

À titre d’exemple, vous souvenez-vous de la panne du cloud d’IBM en juin 2020 ? Elle était due à un détournement de BGP !

Un autre exemple récent, datant de décembre 2020, est la panne de Google Euro-Cloud due à une configuration incorrecte de la liste de contrôle d’accès, qui a conduit le protocole de routage BGP à retirer la zone de disponibilité europe-west2-a du reste du réseau fédérateur de Google.

Deuxièmement, et c’est certainement l’un des principaux défis de BGP, le traitement des mises à jour des grandes tables de routage peut être un problème pour certains routeurs.

Chaque routeur doit stocker une base de données locale de tous les préfixes annoncés par chaque pair de routage. Un routeur a une capacité limitée pour traiter les mises à jour et une fois que le taux de mise à jour dépasse sa capacité de traitement local, le routeur commencera à mettre en file d’attente les mises à jour non traitées. Dans le pire des cas, le routeur commencera à accuser un retard en temps réel, de sorte que les informations qu’un locuteur BGP propage reflètent une topologie locale passée, et pas nécessairement la topologie locale actuelle. Dans le cas le plus bénin, le routeur annoncera des routes « fantômes » où le préfixe n’est plus accessible, mais le routeur désynchronisé continuera à annoncer l’accessibilité.

Le graphique suivant montre l’évolution de la taille de la table de routage IPv4 BGP depuis le tout début de BGP :

Comme vous pouvez le constater, même avec l’épuisement des adresses IPv4 disponibles, la taille des tables de routage augmente toujours de façon spectaculaire !

L’organisation APNIC a publié l’article détaillé suivant sur ce sujet.

Non seulement la taille moyenne de la table de routage BGP augmente, mais la fréquence des mises à jour BGP suit également le même chemin. Dans un autre article, APNIC prend en considération un AS spécifique (AS 131072) pour mesurer l’évolution des mises à jour de la table de routage par an. Partant de 300.000 mises à jour en 2009 (environ 30 mises à jour par heure), il a dépassé 800.000 mises à jour en 2020 (environ 90 mises à jour par heure).

A retenir

BGP est un élément important des fondations de l’Internet.

Comme elle doit être configurée manuellement, elle est sujette aux erreurs humaines ainsi qu’aux attaques de sécurité.

En outre, l’évolution des réseaux les rend de plus en plus sensibles aux instabilités et aux perturbations des services. 

Dans un contexte de services numériques mondiaux, la surveillance du comportement de BGP en termes de découverte de chemins, de surveillance des performances, ainsi que de changements de chemins, devient critique !

Si vous souhaitez en savoir plus sur la façon dont vous pouvez surveiller les performances du réseau depuis l’internet jusqu’à votre AS (ou celui de votre fournisseur de cloud) ou depuis votre AS jusqu’à différents actifs numériques, je vous recommande de lire cet article..