BGP - Réseaux et Protocoles

BGP
Protocoles de routage intra-domaines (RIP, OSPF, IS-IS, etc.) ne passent pas à l'échelle => il faut
des protocoles de routage inter-domaines
AS = autonomous system = un seul administrateur
IGP = interior gateway protocol (RIP, OSPF, IS-IS, IGP, EIGRP, etc.)
EGP = exterior gateway protocol
NLRI = network layer reachability information = préfixe + masque (exemple : « /24, 1.2.3.4 »),
permet à BGP de faire du supernetting (regrouper des subnets) et de l'agrégation (fusionner des
entrées similaires)
BGP = border gateway protocol (version 4), RFC 1771, 1995
• l'un des seuls protocoles de la catégorie EGP (successeur d'un protocole nommé EGP)
• protocole de routage entre AS (de type ISP), distance-vector protocol, qui passe à l'échelle et
qui est décentralisé
• peut aussi être utilisé en intra-domaine
• utilisé aussi pour transmettre des infos sur les routes (ex : VPN)
• supporte CIDR + agrégation de routes (pour réduire la taille des tables d'acheminement)
Quand implémenter BGP ?
• Réseaux de cœur
• single-homed : un lien vers un ISP => non
• dual-homed : deux liens vers un ISP => no (car pas de load balancing avec BGP)
• single multihomed : un lien vers un ISP + un autre lien vers un autre ISP => oui (mais
implémenter du BGP filtering pour ne pas être un domaine de transit mais bien comme un
domaine souche (stub domain))
• dual multi-homed : plusieurs liens vers un ISP + plusieurs liens vers un autre ISP => oui
(idem)
Remarques
• organisation des ISP : tier 1 (cœur) + tier 2 + tier 3, voir des images de GEANT ou
RENATER qui montrent la topologie du backbone
• nombre de préfixes annoncés sur Internet : 100k en 2001, 400k en 2012, 500k en 2014 (il
peut y avoir des préfixes supplémentaires qui sont privés, pour les routes internes par
exemple)
• nombres d'AS : alloués = 60k en 2014, annoncés sur Internet = 45k
Fonctionnement
• un routeur BGP est appelé un peer, tous les voisins (au sens BGP, mais il s'agit généralement
de voisins directs) d'un nœud sont configurés manuellement (customer-provided peering
(relation asymétrique) ou shared-cost peering (relation symétrique))
• BGP envoie des keep-alives toutes les 30 secondes
• BGP utilise TCP (port 179) pour l'échange de données entre peers
• chaque AS possède un ASN, et BGP manipule ces ASN (actuellement 32 bits)
• utilise un best prefix match (préfixe le plus spécifique)
• mises à jour incrémentales (via numéro de séquence + hachage) et triggered (différent de
RIP, mais obligatoire pour passer à l'échelle)
• métrique BGP = liste triée de beaucoup d'attributs
• algo de routage
•
•
•
•
◦ liste des chemins reçus, recherche gloutone du max dans cette liste
◦ le meilleur chemin dépend de la politique d'administration interne
◦ ce chemin est envoyé aux autres routeurs (donc pas de boucle car c'est la source qui a
calculé la route complète)
table de routage = table de routage par voisin (plusieurs centaines de mégas par voisin) +
table d'acheminement (avec les meilleurs voisins)
seulement les meilleures routes sont envoyées aux voisins BGP d'un nœud
load balancing = dépend du constructeur des routeurs, mais il y a quelques fonctionnalités
possibles
◦ ex (CISCO) : conserver plusieurs entrées dans une table d'acheminement particulière
◦ ex (JUNIPER) : répartir certains préfixes sur le chemin C1 et d'autres sur le chemin C2,
quand les préfixes pour C1 et C2 pointent sur le même next-hop, et que coût(C1)
=coût(C2)
BGP filtering
BGP sur un exemple : TODO (dessin + configuration pour un dual multi-homed)
iBGP = Internal BGP
• = permet de redistribuer des infos BGP dans un même AS
• chaque peer est connecté à tous les autres (= full mesh)
• mise en place de réflecteurs de routes = nœuds centraux d'un AS (généralement 2 pour des
raisons de redondance) qui sont peers de tous les autres nœuds du réseau et qui peuvent
annoncer des routes dont ils ne sont pas à l'origine (peuvent aussi être mis en hiérarchie)
• mise en place de confédérations = ensemble d'AS avec un seul ASN
Remarque :
• différence avec RIP (qui est distance-vector) : BGP mémorise toutes les routes vers toutes
les destinations +BGP évite les boucles (car les routes sont explicites) => BGP est souvent
classé comme un protocole path-vector plutôt que distance-vector
• iBGP n'est pas un protocole intra-domain, mais iBGP utilise un protocole intra-domaine
◦ iBGP est lent et demande beaucoup de ressources (pour établir le full mesh)
◦ iBGP ne configure pas les routeurs intermédiaires (qui doivent être configurés par l'IGP)
◦ une entité iBGP ne diffuse pas les routes trouvées par une autre entité
Avantages et inconvénients :
• contrôle des routes + gestion flexible de la politique de routes
• lent (il a été conçu pour l'être, étant donné que l'on ne veut pas transmettre des notifications
pour des réseaux qui tombent/reviennent rapidement)
• iBGP ne passe pas à l'échelle, augmente le temps de convergence de BGP, fait du routage
non optimal, et peut générer des oscillations de routes
• load balancing difficile
• routage asymétrique difficile
• relation IGP + BGP parfois difficile (routes jamais distribuées entre BGP et IGP)
• route flapping = certaines routes peuvent être annoncées/désannoncées rapidement, ce qui
génère beaucoup de trafic et de charge, souvent à cause de routeurs mal configurés et de
liens qui tombent
• BGP ne détecte pas la congestion
• pour les réseaux multi-homed, dur de faire du load balancing pour le trafic qui va à
destination de ce réseau, à cause de la manière dont BGP annonce les préfixes : le même
préfixe est annoncé pour tous les peers BGP du réseau => diviser le bloc d'adresses en bloc
plus petit et faire en sorte que chaque bloc paraisse optimal sur des chemins différents (mais
augmente la taille des tables d'acheminement)
Compléments
• route flap damping (RFC 2439) pour réduire les problèmes de route flapping
◦ supprime les routes externes qui oscillent
◦ les routes au-dessus de supress-limit ne sont pas annoncées
◦ les routes en dessous de reuse-limit sont annoncées
◦ additive penalty, exponential decay
• route summarization pour réduire la taille des tables d'acheminement = on regroupe les
subnets
• pour les réseaux multi-homed avec load balancing, une autre solution est d'utiliser des
gateways BGP/LISP (locator/identifier separation protocol) en un point d'échange Internet
pour permettre du traffic engineering pour les communications entrantes (ce qui n'augmente
pas le nombre d'entrées dans la table d'acheminement des routeurs)
• recursive route lookup = 2 searches in the routing table are required (ce qui paraître un
problème parfois)
TODO : exemple de recursive route lookup