Pile de protocoles | ||||||||||||||
| ||||||||||||||
Modèle Internet Modèle OSI |
Border Gateway Protocol (BGP) est un protocole d'échange de route utilisé notamment sur le réseau Internet. Son objectif est d'échanger des informations d'accessibilité de réseaux (appelés préfixes) entre routeurs par le biais de sessions TCP (sur le port 179).
BGP est utilisé pour véhiculer des réseaux entre Autonomous Systems (AS) car il est le seul protocole à supporter de très grands volumes de données et à disposer de possibilités étendues de sélection.
Contrairement aux protocoles de routage interne, BGP n'utilise pas de métrique classique mais base les décisions de routage sur les chemins parcourus, les attributs des préfixes et un ensemble de règles de sélection définies par l'administrateur de l'AS. On le qualifie de protocole à vecteur de chemin (path vector protocol).
BGP supporte le routage sans classe et utilise l'agrégation de routes afin de limiter la taille de la table de routage. Depuis 1994, la version 4 du protocole est utilisée sur Internet, les précédentes étant considérées comme obsolètes. Ses spécifications sont décrites dans la RFC 4271 A Border Gateway Protocol 4 (BGP-4).
D'autres versions de BGP permettent l'échange de routes IPv6 (RFC 2545) et l'extension multi-protocole (MP-BGP, RFC 2858) qui permet l'utilisation de BGP dans un réseau MPLS.
Les connexions entre deux voisins BGP (neighbours ou peers) sont configurées manuellement entre deux routeurs. Ils communiquent alors entre eux via une session TCP sur le port 179 initiée par l'un des deux routeurs. BGP est le seul protocole de routage à utiliser TCP comme protocole de transport.
Il existe deux versions de BGP : Interior BGP (iBGP) et Exterior BGP (eBGP). iBGP est utilisé à l'intérieur d'un Autonomous System alors que eBGP est utilisé entre deux AS.
En général, les connexions eBGP sont établies sur des connexions point-à-point ou sur des réseaux locaux (un Internet Exchange Point par exemple), le TTL des paquets de la session BGP est alors fixé à 1. Si la liaison physique est rompue, la session eBGP l'est également, et tous les préfixes appris par celle-ci sont annoncés comme supprimés et retirés de la table de routage.
À l'inverse, les connexions iBGP sont établies entre des adresses logiques, non associées à une interface physique particulière. Ceci permet, en cas de rupture d'un lien physique, de conserver la session iBGP active si un lien alternatif existe et si un protocole de routage interne dynamique est employé (par exemple OSPF).
Une fois la connexion entre deux routeurs établie, ceux-ci s'échangent des informations sur les réseaux qu'ils connaissent et pour lesquels ils proposent du transit, ainsi qu'un certain nombre d'attributs associés à ces réseaux qui vont permettre d'éviter des boucles (comme AS Path) et une sélection fine de la meilleure route.
Le logiciel permettant de gérer les échanges de route doit implémenter un automate fini constitués de six états liés par treize événements. Les automates dialoguent entre eux par des messages (OPEN, KEEPALIVE, UPDATE, NOTIFICATION).
Les états sont :
Les événements :
Les changements d'états et le comportement attendus sont les suivant :
Chaque préfixe dans BGP est associée à un certain nombre d'attributs. Ces attributs sont classés en quatre types différents :
Voici quelques attributs avec leurs types :
Attribut | Type | Description |
---|---|---|
Aggregator | OT | Identificateur et AS du routeur qui a réalisé l'agrégation |
AS Path | WM | Liste ordonnée des systèmes autonomes traversés |
Atomic Aggregate | WD | Liste des AS supprimés après une agrégation |
Cluster ID | ON | Cluster d'origine |
Community | OT | Marquage de route |
Local Preference | WD | Métrique destinée aux routeurs internes en vue de préférer certaines routes externes |
Multiple Exit Discriminator (MED) | ON | Métrique destinée aux routeurs externes en vue de préférer certaines routes internes |
Next Hop | WM | Adresse IP du voisin eBGP |
Origin | WM | Origine de la route (IGP, EGP ou Incomplete) |
Originator ID | ON | Identificateur du route reflector |
Weight | O(N) | Extension Cisco en vue de préférer localement certains voisins, n'est jamais transmise aux voisins |
Quand plusieurs routes sont possibles vers un même réseau (ce qui inclut le masque de réseau), BGP préfère une des routes selon les critères suivants. Seule la meilleure route sera utilisée et annoncée aux voisins.
Ordre | Nom | Description | Préférence |
---|---|---|---|
1 | Weight | Préférence administrative locale | la plus élevée |
2 | Local Preference | Préférence à l'intérieur d'un AS | la plus élevée |
3 | Self-Originated | Préférence des réseaux dont l'origine est ce routeur | vrai > faux |
4 | AS Path | Préférence du chemin avec les moins d'AS traversés | le plus court |
5 | Origin | Préférence du chemin en fonction de la façon dont ils sont connus par le routeur d'origine | IGP > EGP > Incomplete |
6 | MED | Préférence en fonction de la métrique annoncée par l'AS d'origine | la plus faible |
7 | External | Préférence des routes eBGP sur les routes iBGP | eBGP > iBGP |
8 | IGP Cost | Métrique du Next-Hop dans l'IGP | la plus faible |
9 | eBGP Peering | Préfère les routes les plus stables | la plus ancienne |
10 | Router ID | Départage en fonction de l'ID du routeur | la plus faible |
Dans iBGP, les routes ne sont pas transitives, c'est-à-dire qu'une route reçue via iBGP n'est pas transmise aux voisins iBGP, ce qui implique que tous les routeurs participant au routage BGP au sein d'un AS doivent établir des connexions entre eux (full mesh) ce qui peut poser des problèmes d'échelle, le nombre de connexions augmentant selon le carré du nombre de routeurs présents dans l'AS. Deux solutions sont disponibles pour passer outre cette limite : les route reflectors et les confederations.
Pour éviter les boucles possibles avec ces configuration, des attributs supplémentaires sont utilisés : Cluster_ID et Originator_ID.
Lorsqu'un réseau est ajouté à un AS, il doit être annoncé au maillage BGP : soit au route reflector lorsqu'il existe, soit à l'ensemble des routeurs BGP de l'AS. BGP ne se substitue cependant pas à un protocole de routage interne.