Avec l’adoption croissante de stratégies multi-cloud, la gestion de la connectivité réseau entre les infrastructures sur site et les différents fournisseurs de cloud devient de plus en plus complexe. Un aspect essentiel de cette connectivité est le protocole BGP (Border Gateway Protocol), utilisé pour échanger des informations de routage entre réseaux. Cependant, chaque fournisseur de cloud impose des limites spécifiques au nombre de routes BGP qui peuvent être annoncées ou apprises au cours d’une session. Dépasser ces limites peut entraîner des interruptions de service, rendant indispensable la surveillance et la gestion efficaces de vos configurations BGP.
Dans cet article, nous allons explorer les limites de routes BGP pour les principaux fournisseurs de cloud, comment surveiller ces limites sur un firewall Fortigate, comment automatiser cette surveillance à l’aide d’un script Shell qui peut être intégré à votre solution de supervision préférée, et enfin, les meilleures pratiques pour garantir une connectivité fiable.
Comprendre les limites des routes BGP
Les fournisseurs de cloud définissent des limites sur le nombre de routes BGP qui peuvent être échangées lors d’une session afin de protéger leur infrastructure contre une surcharge d’informations de routage. Dépasser ces limites peut entraîner des instabilités de routage, des réinitialisations de session, voire la terminaison de la session BGP, ce qui pourrait perturber la connectivité réseau entre votre centre de données et le fournisseur de cloud.
Voici les limites actuelles de routes BGP pour trois grands fournisseurs de cloud :
• AWS (Amazon Web Services) : 100 routes BGP par session
• Microsoft Azure : 200 routes BGP par session
• Google Cloud Platform (GCP) : 100 routes BGP par session
Ces limites peuvent sembler généreuses, mais dans des environnements complexes avec plusieurs VPC ou réseaux on premise, il est facile de les dépasser si elles ne sont pas gérées avec soin.
Vérification des Routes BGP sur un Firewall Fortigate
Les firewall Fortigate offrent des commandes pour surveiller et gérer les sessions BGP. Vous pouvez rapidement vérifier le nombre de routes BGP annoncées et reçues en utilisant l’interface en ligne de commande (CLI).
1. Vérifier les routes annoncées et apprises
Pour voir le nombre de routes annoncées et apprises par vos voisins BGP, utilisez la commande suivante :
get router info bgp neighbors [neighbor IP]
2. Vérifier le détail des routes annoncées et apprises
Pour voir le détails des routes annoncées et apprises pour un voisin BGP spécifique :
get router info bgp neighbors [neighbor IP] advertised-routes
Automatisation de la surveillance des routes BGP avec un script
La vérification manuelle des routes BGP est chronophage et sujette à des erreurs humaines, surtout dans des environnements complexes avec plusieurs fournisseurs de cloud. Automatiser le processus de surveillance vous permet d’être alerté avant que les limites BGP ne soient dépassées. Le script Shell suivant peut être intégré à votre solution de supervision préférée (par exemple, Nagios, Zabbix, Prometheus) pour automatiser ce processus et inclut un avertissement lorsque 90 % de la limite de routes est atteinte.
Script Shell pour la surveillance des Routes BGP
Ce script Shell récupère le nombre de routes BGP reçues et annoncées depuis un pare-feu FortiGate et les compare à des seuils prédéfinis. Le script est conçu pour être flexible, avec des variables pour les fournisseurs de cloud, les adresses IP et les seuils.
#!/bin/bash
# Configuration of cloud provider limits and warning thresholds
LIMIT_AWS=100
LIMIT_AZURE=200
LIMIT_GCP=100
LIMIT_AWS_TGW=5000 # For AWS Transit Gateway
WARNING_THRESHOLD=90 # Warning at 90% of the limit
# FortiGate configuration
FORTIGATE_IP="192.168.1.1"
FORTIGATE_USER="admin"
SSH_PORT=22
# Neighbor IP addresses for each cloud provider
AWS_NEIGHBOR_IP="10.0.0.1"
AZURE_NEIGHBOR_IP="10.0.0.2"
GCP_NEIGHBOR_IP="10.0.0.3"
# Function to execute commands on FortiGate via SSH
execute_command() {
ssh -p $SSH_PORT -o StrictHostKeyChecking=no $FORTIGATE_USER@$FORTIGATE_IP "$1"
}
# Function to check received routes
check_received_routes() {
execute_command "get router info bgp neighbors $1" | grep -oP '\d+(?=\s+received)' | head -1
}
# Function to check advertised routes for a specific neighbor
check_advertised_routes() {
local neighbor_ip=$1
execute_command "get router info bgp neighbors $neighbor_ip advertised-routes" | grep -c "^"
}
# Function to check limits for a cloud provider
check_limits() {
local cloud_provider=$1
local neighbor_ip=$2
local limit=$3
received_routes=$(check_received_routes "$neighbor_ip")
advertised_routes=$(check_advertised_routes "$neighbor_ip")
if [[ $received_routes -ge $((limit * WARNING_THRESHOLD / 100)) || $advertised_routes -ge $((limit * WARNING_THRESHOLD / 100)) ]]; then
echo "WARNING: BGP routes for $cloud_provider have reached 90% of the limit!"
fi
if [[ $received_routes -gt $limit || $advertised_routes -gt $limit ]]; then
echo "CRITICAL: BGP routes exceed $cloud_provider limit!"
exit 2
fi
}
# Check limits for each cloud provider
check_limits "AWS" $AWS_NEIGHBOR_IP $LIMIT_AWS
check_limits "Azure" $AZURE_NEIGHBOR_IP $LIMIT_AZURE
check_limits "GCP" $GCP_NEIGHBOR_IP $LIMIT_GCP
check_limits "AWS Transit Gateway" $AWS_NEIGHBOR_IP $LIMIT_AWS_TGW
echo "OK: BGP routes within limits for all providers"
exit 0
Meilleures pratiques pour gérer les limites de routes BGP
Gérer efficacement les limites de routes BGP nécessite une combinaison de planification, de surveillance régulière et de configuration stratégique. Voici quelques bonnes pratiques :
1. Agrégation des routes si possible : Si votre conception réseau le permet, agrégez les routes pour réduire le nombre de préfixes individuels à annoncer. Cela aide à rester dans les limites tout en maintenant la connectivité nécessaire.
2. Utilisez le Filtrage des Routes : Implémentez un filtrage des routes sur votre Fortigate pour empêcher l’annonce ou l’apprentissage de routes inutiles. Cela permet de garder les tables de routage légères et dans les limites requises.
3. Envisagez des Tunnels GRE : Si vous devez évoluer au-delà des limites de routes BGP, envisagez d’utiliser des tunnels GRE avec AWS Transit Gateway par exemple. Avec une limite de 5 000 routes par attachement, AWS Transit Gateway offre une solution robuste pour gérer des tables de routage plus importantes.
4. Planifiez la croissance : À mesure que votre réseau évolue, planifiez votre configuration BGP en tenant compte de la croissance future. Cela peut inclure la mise en œuvre de la summarization des routes, l’optimisation des politiques de routage, ou même la réévaluation de votre stratégie multi-cloud.
Conclusion
BGP est un composant crucial de l’architecture réseau moderne, en particulier dans les environnements multi-cloud. Cependant, gérer les routes BGP nécessite une attention particulière aux limites imposées par les fournisseurs de cloud. En surveillant régulièrement vos sessions BGP, en automatisant ce processus avec un script, et en suivant les meilleures pratiques, vous pouvez maintenir une connectivité fiable et stable entre votre infrastructure cloud et sur site.
Une gestion efficace du BGP garantit que votre réseau reste robuste et réactif, même s’il évolue pour répondre aux exigences de votre entreprise. Ne laissez pas des routes BGP mal gérées compromettre vos opérations—restez proactif, respectez les limites, et assurez la continuité de votre réseau.