BGP — Border Gateway Protocol
Couche OSI : L3 — Réseau
Port : 179 (TCP)
Version actuelle : BGP-4 (RFC 4271)
BGP est le protocole de routage d’Internet. Il permet aux différents réseaux autonomes (AS — Autonomous Systems) qui composent Internet d’échanger leurs tables de routage. Sans BGP, les paquets ne sauraient pas comment voyager d’un opérateur à l’autre.
Le concept d’AS — Autonomous System
Internet n’est pas un seul réseau — c’est une interconnexion de milliers de réseaux indépendants, chacun géré par une organisation différente.
AS 15169 (Google) AS 16509 (Amazon AWS)
┌──────────────────┐ ┌──────────────────────┐
│ 8.8.8.8/32 │ │ 52.0.0.0/11 │
│ 172.217.0.0/16 │◄─────►│ 54.0.0.0/8 │
│ ... │ │ ... │
└──────────────────┘ └──────────────────────┘
│ │
└───────────────────────────┘
│
AS 3356 (Lumen / Level3)
[opérateur backbone transit]
Chaque AS possède :
- Un numéro d’AS (ASN) unique : ex. AS15169, AS16509
- Une ou plusieurs plages d’IP (prefixes) qu’il annonce
eBGP vs iBGP
| eBGP (External BGP) | iBGP (Internal BGP) | |
|---|---|---|
| Entre | AS différents | Routeurs du même AS |
| Rôle | Échange de routes entre opérateurs | Distribution interne des routes apprises |
| TTL | 1 (voisins directs) | 255 (multi-hop autorisé) |
| Next-hop | Modifié à chaque saut | Conservé |
Fonctionnement : échange de routes
Routeur A (AS 15169 - Google) Routeur B (AS 3356 - Level3)
│ │
│── TCP:179 ────────────────────────► │ établissement session BGP
│◄── TCP:179 ──────────────────────── │
│ │
│── OPEN (ASN, BGP version, hold time) ►│
│◄── OPEN ─────────────────────────── │
│── KEEPALIVE ──────────────────────► │
│◄── KEEPALIVE ────────────────────── │
│ │
│── UPDATE ──────────────────────────► │
│ "J'annonce : 8.8.8.8/32" │
│ "J'annonce : 172.217.0.0/16" │
│◄── UPDATE ───────────────────────── │
│ "J'annonce : 1.2.3.0/24" │
│ "Je retire : 5.6.7.0/24" │
Messages BGP
| Type | Rôle |
|---|---|
| OPEN | Établissement de session (ASN, version BGP, hold time) |
| KEEPALIVE | Maintien de la session (envoyé régulièrement) |
| UPDATE | Annonce ou retrait de routes |
| NOTIFICATION | Signalement d’une erreur → fermeture de session |
Attributs BGP — comment choisir le meilleur chemin
BGP ne choisit pas forcément le chemin le plus court (nombre de sauts) — il choisit selon des attributs configurables :
| Attribut | Rôle | Exemple |
|---|---|---|
| AS_PATH | Liste des AS traversés | 15169 3356 1299 (le plus court est préféré) |
| NEXT_HOP | Prochain routeur à atteindre | 203.0.113.1 |
| LOCAL_PREF | Préférence locale (iBGP) — plus haut = préféré | 100 vs 200 |
| MED | Multi-Exit Discriminator — hint pour l’AS voisin | 50 vs 100 |
| COMMUNITY | Tags pour la politique de routage | 65000:100 |
| WEIGHT | Propriétaire Cisco, local au routeur | 32768 |
BGP dans le cloud et Kubernetes
AWS Direct Connect / VPN
Réseau entreprise ──BGP──► AWS Direct Connect ──► VPC AWS
AS 65000 AS 7224 (Amazon)
"j'annonce 10.0.0.0/8"
Kubernetes avec MetalLB ou Cilium BGP
# Cilium BGP — le cluster Kubernetes annonce les IPs de services en BGP
# → les routeurs du datacenter apprennent les routes vers les pods
# Exemple CiliumBGPPeeringPolicy
apiVersion: cilium.io/v2alpha1
kind: CiliumBGPPeeringPolicy
spec:
virtualRouters:
- localASN: 65001
neighbors:
- peerAddress: 10.0.0.1/32
peerASN: 65000
serviceSelector:
matchLabels:
expose-bgp: "true"En relation avec
- Protocoles OSI - Index — tous les protocoles par couche
- OSPF — protocole de routage interne (même AS), complémentaire de BGP
- Table de Routage — BGP alimente les tables de routage des routeurs
- Paquets IP et TCP — BGP utilise TCP port 179
- cilium — Cilium peut faire du BGP pour annoncer les IPs de services Kubernetes