Project Oxygen & Ideo-LabIDEO LAB Dashboard 2026

đŸ›°ïž BGP (Border Gateway Protocol)

Analyse dense : AS (Peering/Transit), eBGP/iBGP, Algorithme Best Path, Hijacking & RPKI.

1.1

Concept : BGP (EGP vs IGP)

Le "GPS" d'Internet. Le protocole "Externe" (EGP) qui relie les réseaux, par opposition à "Interne" (IGP) qui fonctionne à l'intérieur.

EGPIGPPolitique (Policy)
1.2

L'Unité : SystÚme Autonome (AS)

L'Internet est un "réseau de réseaux". L'AS est l'unité de base : un réseau (ex: Orange, Google) avec sa propre politique.

Autonomous SystemASN
1.3

Business : Peering vs Transit

Le "business" d'Internet. Transit (Client-Fournisseur, payant) vs Peering (Partenariat, gratuit). Le rĂŽle des IXP.

TransitPeeringIXP
2.1

Architecture : eBGP vs iBGP

eBGP (parler Ă  un *autre* AS) vs iBGP (propager les routes *dans* son propre AS). ProblĂšme : Full-Mesh. Solution : Route Reflectors.

eBGPiBGPRoute Reflector
3.1

Logique : Path Vector (AS_PATH)

BGP n'est pas "distance vector", c'est "path vector". L'attribut AS_PATH est la "carte" et le mécanisme anti-boucle.

AS_PATHPath VectorAnti-Boucle
3.2

Logique : Best Path Selection

Le "cerveau" de BGP. L'algorithme de décision (13 étapes) pour choisir la *meilleure* route (pas la plus courte).

Best PathAlgorithmeLOCAL_PREFMED
4.1

Sécurité : Hijacking & Leaks

Le "pĂȘchĂ© originel" (la confiance). BGP Hijacking (ex: YouTube/Pakistan) et Route Leaks (fuites de routes).

HijackingRoute LeakConfiance
4.2

Sécurité : RPKI & ROA

La solution cryptographique. RPKI (l'infra de clés) et ROA (le "certificat de propriété" d'un préfixe). Le "Route Origin Validation".

RPKIROAROV
1.1 Concept : Le "GPS" d'Internet (EGP vs IGP)

Internet n'est pas un seul réseau. C'est un **"réseau de réseaux"** (plus de 100 000 réseaux indépendants). Le **BGP (Border Gateway Protocol)** est le protocole de routage qui relie ces réseaux entre eux. C'est le "GPS" ou le "service postal mondial" qui permet aux données de trouver leur chemin d'un réseau (ex: Orange) à un autre (ex: Google).

1. IGP (Interior Gateway Protocol) - Le Routage *Interne*
  • Exemples : OSPF, EIGRP, IS-IS.
  • RĂŽle : GĂ©rer le routage **Ă  l'intĂ©rieur** d'un seul rĂ©seau (un seul "Autonomous System", voir 1.2).
  • Analogie : C'est le systĂšme de courrier *interne* de votre entreprise. Il sait (trĂšs bien) comment amener une lettre du bureau A (au 1er Ă©tage) au bureau B (au 10Ăšme Ă©tage).
  • Philosophie : **Confiance & Vitesse.**
    • Confiance : Tous les routeurs sont sous votre contrĂŽle. Vous leur faites confiance.
    • Vitesse (Convergence) : L'objectif est de trouver le chemin le plus *court* (le plus rapide, basĂ© sur une "mĂ©trique" comme la bande passante) et de converger (se mettre Ă  jour) quasi-instantanĂ©ment si un lien tombe.
  • Limites : Ne "scale" (ne passe Ă  l'Ă©chelle) pas. Vous ne pouvez pas faire tourner OSPF avec les 1 million de routes de l'Internet mondial. Il est trop "bavard" et trop complexe.
2. EGP (Exterior Gateway Protocol) - Le Routage *Externe*
  • Exemple : BGP (c'est le seul EGP utilisĂ© aujourd'hui).
  • RĂŽle : GĂ©rer le routage **entre** des rĂ©seaux indĂ©pendants (entre des "Autonomous Systems").
  • Analogie : C'est le **Service Postal Mondial**. Il ne sait pas comment aller au "Bureau B" de votre entreprise. Il sait seulement comment amener une lettre du "SiĂšge Social d'Orange (Paris)" au "SiĂšge Social de Google (Mountain View)".
  • Philosophie : **MĂ©fiance & Échelle.**
    • MĂ©fiance : Vous ne faites **PAS** confiance Ă  votre concurrent (Google). Vous ne voulez pas lui annoncer toutes vos routes internes. Vous ne lui annoncez que ce qui est nĂ©cessaire.
    • Échelle (Scalability) : BGP est conçu pour gĂ©rer la **"Table de Routage Globale" (DFZ - Default-Free Zone)**, qui contient plus d'1 million de prĂ©fixes (routes). Il est plus lent, mais incroyablement robuste et "lĂ©ger" (il n'envoie que les mises Ă  jour, pas des "hello" constants).
3. BGP = Routage par Politique (Policy-Based Routing)

C'est le concept le plus important Ă  comprendre.

Un IGP (OSPF) prend des décisions basées sur la **technique** (Quel est le chemin le plus *rapide* ?).

Un EGP (BGP) prend des décisions basées sur la **politique (Policy)** (Quel est le chemin le plus *rentable* ou *stratégique* ?).

Exemple de Politique (Business) :

Votre AS (Orange) a deux chemins pour atteindre Google (AS15169) :

  1. Un "Peering" direct et gratuit (0€) (voir 1.3).
  2. Un "Transit" payant via un fournisseur (ex: Cogent, 10 000€/mois).

MĂȘme si le chemin de Transit est *techniquement* plus rapide (moins de latence), votre **politique BGP** (votre "business") forcera le trafic Ă  prendre le chemin de Peering (gratuit).

BGP n'est pas un protocole de "routage", c'est un protocole "d'accessibilité" (reachability). Il ne dit pas "voici le meilleur chemin", il dit "voici les chemins que je connais, et voici les *attributs* (les 'politiques') qui leur sont associés". C'est le "cerveau" (voir 3.2) qui applique ensuite ces politiques.

1.2 L'Unité Fondamentale : L'Autonomous System (AS)

L'Internet n'est pas un "nuage". C'est une **collection de "SystÚmes Autonomes" (AS)**. Un AS est un réseau (ou un groupe de réseaux) géré par une seule entité administrative qui maintient une politique de routage unifiée.

ASN (Autonomous System Number)

Chaque AS est identifié par un numéro unique, l'**ASN (Autonomous System Number)**, assigné par des RIRs (Regional Internet Registries) comme le RIPE (Europe) ou l'ARIN (Amérique du Nord).

  • Exemples d'ASNs :
    • AS15169 : Google
    • AS7018 : AT&T
    • AS3356 : Level 3 / Lumen
    • AS3215 : Orange S.A.
    • AS16509 : Amazon (AWS)
  • Taille : Historiquement 16-bit (65 535 ASNs). Aujourd'hui 32-bit (4.2 milliards d'ASNs) pour gĂ©rer la croissance.
Préfixes IP & Origine

Un AS "possÚde" (ou loue) des blocs d'adresses IP, appelés **"Préfixes"**.

L'objectif principal de BGP est pour un AS d'**"annoncer" (originate)** au reste du monde les préfixes qu'il contrÎle.

Annonce BGP (simplifiée) :
"Je suis l'AS15169 (Google), et j'annonce que je suis l'origine (le propriétaire) du préfixe 8.8.8.0/24 (le DNS de Google). Si vous voulez atteindre ce préfixe, envoyez-moi le trafic."
En résumé :
Un **AS (SystĂšme Autonome)**...
...utilise **BGP (le protocole)**...
...pour annoncer ses **Préfixes (les routes IP)**...
...en appliquant une **Politique (le business)**.
1.3 Le Business d'Internet : Peering vs Transit

Toutes les connexions BGP (eBGP) ne sont pas identiques. Elles suivent deux modÚles économiques principaux qui définissent *quelles* routes sont échangées.

1. Transit (Relation Client-Fournisseur)
  • Relation : Client (ex: un FAI local) paie un Fournisseur (ex: un "Tier-1" comme Orange, Cogent, Lumen).
  • Contrat : "Je (Client) vous paie (Fournisseur) (ex: au MĂ©gabit/s) pour que vous m'envoyiez le trafic du *monde entier*."
  • Échange de Routes BGP :
    • Le **Fournisseur (Transit)** annonce au Client la **Table ComplĂšte (DFZ - Default-Free Zone)**. C'est la "route par dĂ©faut" (0.0.0.0/0) + toutes les routes spĂ©cifiques (~1M de prĂ©fixes).
    • Le **Client** annonce au Fournisseur *uniquement* ses propres prĂ©fixes (et ceux de *ses* clients).
  • RĂšgle d'Or (Fuite de Route) : Un Client ne doit **JAMAIS** annoncer les routes apprises d'un Fournisseur (A) Ă  un autre Fournisseur (B). S'il le fait, il devient un "Transit" gratuit (et un trou noir) pour A et B. C'est une "Route Leak" (voir 4.1).
2. Peering (Relation de Partenariat)
  • Relation : Deux AS de taille similaire (ex: Orange et Free) qui s'accordent pour Ă©changer du trafic **gratuitement**.
  • Contrat : "Je (Orange) t'envoie mon trafic (pour tes clients), tu (Free) m'envoies ton trafic (pour mes clients). Nous n'avons plus besoin de payer un Fournisseur de Transit (ex: Cogent) pour parler entre nous." C'est du "Settlement-Free Peering".
  • Échange de Routes BGP :
    • Orange annonce Ă  Free *uniquement* ses prĂ©fixes clients (et les siens).
    • Free annonce Ă  Orange *uniquement* ses prĂ©fixes clients (et les siens).
  • RĂšgle d'Or : Orange n'annonce **PAS** Ă  Free les routes qu'il a apprises de son *autre* peer (ex: Google) ou de son *propre* fournisseur de Transit. C'est une relation "non-transitive".
3. Le Lieu : IXP (Internet Exchange Point)

OĂč le "Peering" a-t-il lieu ? Dans un data center neutre appelĂ© **IXP** (ex: France-IX Ă  Paris, DE-CIX Ă  Francfort).

  • Concept : L'IXP est un simple **switch (commutateur) L2** (ou un ensemble de switches).
  • MĂ©canisme : Au lieu de tirer 100 cĂąbles (Orange-Free, Orange-Google, Free-Google...), les 100 AS se connectent (1 cĂąble chacun) au switch de l'IXP.
  • BGP (Route Server) : Ils Ă©tablissent des sessions BGP (peering) entre eux, soit directement (N:N), soit (plus efficacement) en "peerant" tous avec le **Route Server** de l'IXP, qui agit comme un "Route Reflector" (voir 2.1) centralisĂ© pour tous les membres.
2.1 Architecture : eBGP (Externe) vs iBGP (Interne)

BGP a deux "saveurs" (types de sessions) qui ont des rÚgles et des objectifs trÚs différents.

1. eBGP (External BGP)
  • Objectif : Parler Ă  un **autre** AS (un "voisin" BGP).
  • Usage : C'est le BGP utilisĂ© pour le **Peering** et le **Transit** (voir 1.3).
  • Configuration (Cisco) :
    router bgp 64512
     neighbor 1.1.1.2 remote-as 65001
    (Mon AS est 64512. Je parle Ă  1.1.1.2, qui est dans l'AS 65001).
  • RĂšgles (Comportement par DĂ©faut) :
    • TTL (Time-to-Live) : Le TTL du paquet est mis Ă  **1**. Cela force les routeurs eBGP Ă  ĂȘtre (gĂ©nĂ©ralement) **directement connectĂ©s** physiquement. (On peut changer cela avec `ebgp-multihop`).
    • AS_PATH (Anti-Boucle) : Quand un routeur envoie une route Ă  un peer eBGP, il **ajoute (prepend)** son propre ASN au dĂ©but de l'attribut `AS_PATH` (voir 3.1).
    • Next-Hop (Saut Suivant) : Le "next-hop" (prochain saut) est mis Ă  l'adresse IP de l'interface de sortie du routeur.
2. iBGP (Internal BGP) - Le ProblĂšme (Full-Mesh)
  • Objectif : Propager les routes (apprises par eBGP) **Ă  l'intĂ©rieur** de son propre AS.
  • ScĂ©nario :
    1. Mon AS (64512) a 3 routeurs de bordure : R1 (Paris), R2 (Londres), R3 (New York).
    2. R1 (Paris) apprend la route de Google (8.8.8.0/24) via eBGP (de son peer).
    3. R1 doit maintenant informer R2 (Londres) et R3 (New York) de cette route, au cas oĂč le lien de R1 tombe.
    4. Cette communication (R1 -> R2, R1 -> R3) se fait en **iBGP**.
  • Configuration (Cisco) :
    router bgp 64512
     neighbor 2.2.2.2 remote-as 64512
     neighbor 3.3.3.3 remote-as 64512
    (Les "remote-as" sont mon *propre* ASN).
  • RĂšgle (Split-Horizon BGP) : Pour Ă©viter les boucles de routage *internes*, BGP a une rĂšgle stricte :
    "Une route apprise d'un voisin iBGP ne sera **JAMAIS** propagée à un autre voisin iBGP."
  • ProblĂšme (NÂČ Full-Mesh) :
    • Si R1 (Paris) envoie la route Ă  R2 (Londres) (via iBGP).
    • R2 **NE PEUT PAS** la re-propager Ă  R3 (New York) (Ă  cause du split-horizon).
    • ConsĂ©quence : Pour que R3 connaisse la route de R1, R1 doit avoir une session iBGP **directe** avec R3.
    • Conclusion : Dans un rĂ©seau iBGP, **tous les routeurs** doivent avoir une session iBGP **avec tous les autres routeurs** (une "Full-Mesh").
    • ScalabilitĂ© : 10 routeurs = 45 sessions (`n(n-1)/2`). 100 routeurs = 4950 sessions. C'est ingĂ©rable.
3. iBGP - La Solution (Route Reflectors)

Pour résoudre le problÚme de la "Full-Mesh", on utilise des **Route Reflectors (RR)** (Réflecteurs de Route).

  • Concept : On dĂ©signe un (ou deux, pour la redondance) routeur(s) comme "Route Reflector".
  • RĂšgle : Le RR est le *seul* routeur qui est autorisĂ© Ă  **enfreindre la rĂšgle du split-horizon iBGP**.
  • Architecture (Hub & Spoke) :
    • Les autres routeurs (les "Clients") n'ont plus besoin d'une "Full-Mesh".
    • Chaque routeur "Client" n'Ă©tablit qu'**une seule** session iBGP : vers le Route Reflector.
  • Flux de Route :
    1. R1 (Client) apprend une route eBGP.
    2. R1 l'annonce (via iBGP) au RR.
    3. Le RR reçoit la route (iBGP) de R1.
    4. Le RR **"reflĂšte"** (re-propage) cette route (iBGP) Ă  R2, R3, R4...

Attributs (Clustering) : Pour éviter les boucles *entre* les RRs (s'il y en a plusieurs), le RR ajoute deux attributs : `CLUSTER_ID` (l'ID du RR) et `ORIGINATOR_ID` (le Routeur-ID du Client qui a originé la route).

3.1 Logique : Path Vector (AS_PATH) & Messages BGP
1. Les 4 Messages BGP (Session TCP Port 179)

BGP ne fonctionne pas sur UDP (comme OSPF). Il utilise **TCP (Port 179)** car il a besoin d'une connexion **fiable et ordonnée**. Perdre un "retrait de route" (Withdrawal) est catastrophique (créerait un "trou noir").

Une fois la session TCP établie, les routeurs (peers) n'échangent que 4 types de messages :

  • OPEN : Le premier message. "Bonjour, je suis AS 64512, mon routeur-ID est 1.1.1.1. Je supporte ces 'capabilities' (ex: 32-bit ASN, RPKI). Es-tu d'accord pour 'peer' (pairer) ?".
  • UPDATE : Le message "cheval de bataille". C'est le seul qui contient des routes. Un seul `UPDATE` peut contenir :
    • NLRI (Network Layer Reachability Info) : Une liste de prĂ©fixes (routes) qui sont **annoncĂ©s** (ex: `192.0.2.0/24`).
    • WITHDRAWN Routes : Une liste de prĂ©fixes qui sont **retirĂ©s** (ne sont plus accessibles par ce chemin).
    • Path Attributes (Attributs) : La liste des attributs (AS_PATH, LOCAL_PREF, MED...) qui s'appliquent Ă  *tous* les prĂ©fixes NLRI de ce message.
  • KEEPALIVE : Un petit message (19 octets) envoyĂ© (par dĂ©faut) toutes les **60 secondes**. Il sert de "heartbeat" (battement de cƓur). "Je suis toujours lĂ , la session est active."
  • NOTIFICATION : Le message d'erreur. "Tu m'as envoyĂ© un `OPEN` avec un mauvais ASN" ou "Ton `UPDATE` est malformĂ©". Le routeur envoie la `NOTIFICATION` (avec un code d'erreur) et **ferme immĂ©diatement** la session TCP.
"Hold Time" (Temps d'Attente) : Par défaut, le "Hold Time" est de 180 secondes (3x KEEPALIVE). Si un routeur ne reçoit **aucun** `KEEPALIVE` (ou `UPDATE`) de son peer pendant 180 secondes, il **détruit la session BGP** et **purge (supprime) toutes les routes** apprises de ce peer. C'est ce qui cause l'instabilité ("route flapping").
2. Le Protocole "Path Vector" (Vecteur de Chemin)

BGP n'est ni "Distance Vector" (RIP) ni "Link State" (OSPF).

  • Distance Vector (Ex: RIP) : Ne connaĂźt que la *mĂ©trique* (distance). "Pour aller Ă  X, c'est 5 sauts. J'envoie Ă  mon voisin." (Sujet aux boucles de routage).
  • Link State (Ex: OSPF) : ConnaĂźt la *topologie complĂšte* (la carte) de son propre rĂ©seau.
  • Path Vector (BGP) : Ne connaĂźt pas la topologie complĂšte d'Internet (trop gros). Il connaĂźt le **chemin complet des AS** pour atteindre une destination.
L'Attribut `AS_PATH`

C'est l'attribut le plus important de BGP. Il a deux fonctions :

Fonction 1 : La "Carte" (Policy)

L'AS_PATH est la liste (ordonnée) des ASNs qu'un paquet doit traverser. L'algorithme "Best Path" (voir 3.2) **préfÚre le chemin AS_PATH le plus court** (toutes choses étant égales par ailleurs).

R1# show ip bgp 8.8.8.0
BGP routing table entry for 8.8.8.0/24
  Paths: 2 available
  
  (Path 1)
    3356 15169
    From: 1.1.1.1 (Peer A)
    Metric: 100
  
  (Path 2)
    701 209 15169
    From: 2.2.2.2 (Peer B)
    Metric: 50

Ici, le routeur R1 choisira le "Path 1" car son `AS_PATH` (longueur 2) est plus court que le "Path 2" (longueur 3), *mĂȘme si* le "Path 2" a une meilleure mĂ©trique (50 < 100).

Fonction 2 : L'Anti-Boucle (Loop Prevention)

C'est le mécanisme anti-boucle **fondamental** de BGP.

  1. AS 64512 annonce son préfixe `192.0.2.0/24`. L'attribut est `AS_PATH: [64512]`.
  2. AS 65001 le reçoit (via eBGP). Il le propage à son voisin, AS 65002. L'attribut est maintenant `AS_PATH: [65001, 64512]`.
  3. AS 65002 le reçoit. Il le propage... (le chemin s'allonge).
  4. ... Finalement, la route revient (par erreur) Ă  l'AS 64512.
  5. Le routeur de l'AS 64512 reçoit l'UPDATE. Il inspecte l'AS_PATH : `[..., 65002, 65001, 64512]`.
  6. Il voit son **propre ASN (64512)** dans la liste. Il sait que c'est une **boucle**.
  7. Il **rejette (discard)** immédiatement cette annonce.
3. Les 4 Catégories d'Attributs

L'attribut `AS_PATH` n'est qu'un des nombreux "attributs" BGP. Ils sont classés par priorité :

CatégorieSignificationExemples
1. Well-Known, Mandatory (Connu, Obligatoire)Doit ĂȘtre reconnu par *tous* les routeurs BGP. Doit ĂȘtre prĂ©sent dans *tous* les `UPDATE`.AS_PATH, ORIGIN (IGP, EGP, Incomplete), NEXT_HOP.
2. Well-Known, Discretionary (Connu, DiscrĂ©tionnaire)Doit ĂȘtre reconnu par tous, mais n'est pas *obligĂ©* d'ĂȘtre prĂ©sent.LOCAL_PREF, ATOMIC_AGGREGATE.
3. Optional, Transitive (Optionnel, Transitif)N'est pas obligĂ© d'ĂȘtre reconnu. S'il n'est pas reconnu, le routeur doit le marquer comme "partiel" et le **transmettre** Ă  son voisin.COMMUNITY (le plus important), AGGREGATOR.
4. Optional, Non-Transitive (Optionnel, Non-Transitif)N'est pas obligĂ© d'ĂȘtre reconnu. S'il n'est pas reconnu, le routeur l'**ignore** et ne le transmet *pas*.MED (Multi-Exit Discriminator), ORIGINATOR_ID (pour les RRs).
3.2 Logique : L'Algorithme de "Best Path Selection"

Un routeur BGP (ex: R1) peut apprendre plusieurs chemins (routes) pour un mĂȘme prĂ©fixe (ex: `8.8.8.0/24`) de la part de plusieurs voisins (eBGP et iBGP). Il ne peut en installer qu'**un seul** dans sa table de routage (RIB/FIB). C'est le **"Best Path"** (Meilleur Chemin).

L'algorithme de "Best Path Selection" est une **liste de "tie-breakers" (briseurs d'Ă©galitĂ©) sĂ©quentielle, en 13 Ă©tapes**. Le routeur compare tous les chemins (Path 1, Path 2, Path 3...) Ă  l'Étape 1. S'il y a un gagnant, il est choisi. S'il y a Ă©galitĂ©, seuls les gagnants passent Ă  l'Étape 2, et ainsi de suite. L'algorithme s'arrĂȘte au premier critĂšre qui permet de dĂ©signer un unique vainqueur.

Objectif : Router(config)# show ip bgp 8.8.8.0/24
La route marquée d'un > (chevron) est le "Best Path" installé dans la RIB.
L'Algorithme (Principales Étapes, dans l'ordre)
  1. (Étape 0) AccessibilitĂ© : Le `NEXT_HOP` est-il accessible (via IGP) ? Si non, ignorer la route.
  2. (Étape 1) `WEIGHT` (Poids) : PrĂ©fĂ©rer le chemin avec le `WEIGHT` (Poids) le plus **Ă©levĂ©**.
    • (Attribut propriĂ©taire Cisco. Ne s'applique que *localement* Ă  ce routeur. N'est *jamais* propagĂ©. Utile pour "forcer" un routeur spĂ©cifique.)
  3. (Étape 2) `LOCAL_PREF` (PrĂ©fĂ©rence Locale) : PrĂ©fĂ©rer le chemin avec la `LOCAL_PREF` la plus **Ă©levĂ©e**.
    • (Attribut Well-Known, Discretionary. PropagĂ© *uniquement* en iBGP, Ă  l'intĂ©rieur de son propre AS).
    • C'est l'outil n°1 pour la POLITIQUE DE SORTIE (Outbound). C'est le premier "vrai" attribut. "Peu importe ce qui se passe, tout mon AS (64512) prĂ©fĂšre sortir par le lien A (LOCAL_PREF=200) plutĂŽt que par le lien B (LOCAL_PREF=100)."
  4. (Étape 3) `LOCAL_ORIGIN` (Origine Locale) : PrĂ©fĂ©rer le chemin qui a Ă©tĂ© *originĂ©* (créé) localement par ce routeur (via `network` ou `aggregate-address`).
  5. (Étape 4) `AS_PATH` (Longueur) : PrĂ©fĂ©rer le chemin avec l'attribut `AS_PATH` le plus **court**.
    • (C'est le premier "vrai" critĂšre de "distance". Si la politique (LOCAL_PREF) n'a rien dĂ©cidĂ©, BGP prĂ©fĂšre le chemin qui traverse le moins d'AS.)
  6. (Étape 5) `ORIGIN` Type (Origine) : PrĂ©fĂ©rer le type d'origine le plus bas :
    • (i) IGP (Code 'i' - La route a Ă©tĂ© injectĂ©e dans BGP via la commande `network`) -> **Le meilleur**
    • (e) EGP (Code 'e' - Appris d'un peer EGP, historique)
    • (?) Incomplete (Code '?' - La route a Ă©tĂ© "redistribuĂ©e" (injectĂ©e) depuis un *autre* protocole de routage (ex: OSPF) dans BGP) -> **Le moins bon**
  7. (Étape 6) `MED` (Multi-Exit Discriminator) : PrĂ©fĂ©rer le chemin avec le `MED` le plus **bas** (le plus "proche").
    • (Attribut Optionnel, Non-Transitif).
    • C'est l'outil n°1 pour la POLITIQUE D'ENTRÉE (Inbound). "Je (AS 64512) dis Ă  mon voisin (AS 65001) : J'ai deux liens (A et B) vers toi. Si tu veux m'envoyer du trafic, merci de prĂ©fĂ©rer le Lien A (MED=100) au Lien B (MED=200)." Le voisin (65001) *peut* ignorer cette "suggestion".
  8. (Étape 7) `eBGP` vs `iBGP` : PrĂ©fĂ©rer les routes apprises par **eBGP** (externe) plutĂŽt que par **iBGP** (interne).
  9. (Étape 8) `IGP Metric` (MĂ©trique Interne) : PrĂ©fĂ©rer le chemin vers le `NEXT_HOP` BGP qui a la mĂ©trique IGP (OSPF/EIGRP) la plus basse. (Le "Hot Potato Routing" - se dĂ©barrasser du paquet le plus vite possible).
  10. (Étapes 9-13) Tie-Breakers : ... (ex: le plus vieux chemin, le `Router-ID` le plus bas, l'adresse IP du voisin la plus basse...).
3.3 Logique : Les Attributs de Politique (Le "Business" BGP)

Le routage BGP est l'application de politiques business. Les FAI (ISP) utilisent les attributs BGP (comme LOCAL_PREF, MED, AS_PATH Prepending, Community) pour "tuner" l'algorithme de Best Path (voir 3.2) afin de forcer le trafic à suivre des chemins économiquement favorables.

1. ContrĂŽler son trafic SORTANT (Outbound) : LOCAL_PREF

Scénario : Je suis AS 100. J'ai deux fournisseurs de Transit : AS 200 (Contrat "Premium", cher) et AS 300 (Contrat "Best-Effort", bon marché).

Objectif : Je veux que tout mon trafic sorte (par défaut) par le chemin le moins cher (AS 300), et n'utilise AS 200 que si AS 300 tombe.

Mécanisme :

  1. (Routeur R1) apprend `8.8.8.0/24` de AS 200 (le cher).
  2. (Routeur R2) apprend `8.8.8.0/24` de AS 300 (le bon marché).
  3. Sur R2, j'applique une "route-map" (filtre) : set local-preference 200.
  4. Sur R1, j'applique : set local-preference 100 (100 est le défaut).
  5. R1 et R2 s'annoncent ces routes (et leur LOCAL_PREF) via **iBGP**.
  6. Tous les routeurs de mon AS 100 vont comparer les deux chemins (via R1 et R2).
  7. **Algorithme (Étape 2) :** `LOCAL_PREF 200` (R2/AS 300) > `LOCAL_PREF 100` (R1/AS 200).
  8. RĂ©sultat : 100% de mon AS enverra son trafic sortant vers R2 (le chemin bon marchĂ©), *mĂȘme si* le chemin AS_PATH via R1 Ă©tait plus court.
2. Influencer son trafic ENTRANT (Inbound)

C'est plus difficile. Vous ne pouvez pas *forcer* le reste du monde à vous envoyer du trafic d'une certaine maniÚre. Vous ne pouvez que le *suggérer* en modifiant les attributs que vous leur envoyez (via eBGP).

A. MED (Multi-Exit Discriminator)

ScĂ©nario : J'ai deux liens (Lien A, Lien B) vers le *mĂȘme* voisin (AS 200). Je veux qu'AS 200 m'envoie le trafic sur le Lien A (grosse capacitĂ©) et non le Lien B (petit backup).

Mécanisme :

  1. Sur Lien A (eBGP), j'annonce mes routes avec un `MED` (métrique) bas : set metric 100.
  2. Sur Lien B (eBGP), j'annonce mes routes avec un `MED` élevé : set metric 500.
  3. Le routeur d'AS 200 reçoit les deux annonces.
  4. Algorithme (Étape 6) : Il voit que `MED 100` < `MED 500`. Il prĂ©fĂ©rera le Lien A pour m'envoyer du trafic. (Note : cet attribut est "Non-Transitif", AS 200 ne le propage pas).
B. AS_PATH Prepending (Allongement)

Scénario : J'ai deux fournisseurs (AS 200 et AS 300). Je veux que le *monde entier* préfÚre m'envoyer du trafic via AS 200 (mon lien principal).

Mécanisme :

  1. Quand j'annonce mes routes Ă  AS 200 : `AS_PATH: [100]` (normal).
  2. Quand j'annonce mes routes Ă  AS 300 (le backup) : j'ajoute (prepend) mon propre ASN 3 fois : AS_PATH: [100, 100, 100].
  3. Un routeur distant (AS 500) apprend deux chemins pour m'atteindre :
    • Chemin 1 (via AS 200) : `AS_PATH: [200, 100]` (Longueur 2)
    • Chemin 2 (via AS 300) : `AS_PATH: [300, 100, 100, 100]` (Longueur 4)
  4. Algorithme (Étape 4) : Il voit que `Longueur 2` < `Longueur 4`. Il prĂ©fĂ©rera le Chemin 1.
3. COMMUNITY (Les "Tags" de Politique)

Les attributs (LOCAL_PREF, MED) sont rigides. Les "Communities" (Optionnel, Transitif) sont des "tags" numériques (ex: 65001:100) que vous attachez à une route pour *signaler* une politique à vos voisins (ou à vos propres routeurs).

Cas d'Usage 1 (Politique Interne) : J'attache le tag 100:200 Ă  une route apprise. Mes routeurs iBGP voient ce tag et (via une route-map) le traduisent en `LOCAL_PREF 200`.

Cas d'Usage 2 (Politique Externe) : Un fournisseur (ex: Cogent) peut définir un "contrat" public :

  • "Si vous m'annoncez une route avec le tag 174:90, je mettrai la LOCAL_PREF Ă  90 pour vous."
  • "Si vous m'annoncez une route avec le tag 174:0, je n'annoncerai PAS cette route Ă  mes pairs (NO_EXPORT)."

Cas d'Usage 3 (DDoS - BLACKHOLE) :

Je (AS 100) suis victime d'une attaque DDoS sur mon IP `1.2.3.4`. Mon lien est saturé.

  1. J'annonce à mon Fournisseur (AS 200) la route `1.2.3.4/32` (trÚs spécifique).
  2. J'y attache la "Community" BLACKHOLE (ex: 65535:666).
  3. Le routeur d'AS 200 voit ce tag. Sa politique (pré-configurée) est : "Si je reçois une route taguée 'BLACKHOLE', je mets son `NEXT_HOP` à Null0 (la poubelle)."
  4. Résultat : AS 200 *rejette (drops)* tout le trafic d'attaque *avant* qu'il n'atteigne mon lien. (Je perds aussi le trafic légitime, mais je sauve mon infrastructure).
4.1 Sécurité : BGP Hijacking (Détournement) & Route Leaks

Le "pĂ©chĂ© originel" de BGP (conçu dans les annĂ©es 80) est qu'il est basĂ© sur la **confiance**. Il n'y a **aucun mĂ©canisme d'authentification** natif. BGP *suppose* que lorsque l'AS 15169 (Google) annonce `8.8.8.0/24`, c'est bien Google qui parle. Cette confiance peut ĂȘtre exploitĂ©e.

1. BGP Hijacking (Détournement d'Origine)

Définition : Un AS (Attaquant) annonce un préfixe (une route) qu'il ne **possÚde pas**. C'est un "vol d'identité" IP.

Mécanisme (La "Route la Plus Spécifique") :

  1. État Normal : Google (AS 15169) annonce 8.8.0.0/16 (un gros bloc).
  2. L'Attaque : Un hacker (AS 666) annonce **8.8.8.0/24** (un sous-ensemble, *plus spécifique*).
  3. Le Choix BGP : Les routeurs Internet (partout) reçoivent deux routes pour atteindre `8.8.8.8` :
    • Route A (de Google) : 8.8.0.0/16
    • Route B (du Hacker) : 8.8.8.0/24
  4. La rÚgle fondamentale du routage est de **toujours préférer la route la plus spécifique (le "longest prefix match")**.
  5. Résultat : 100% des routeurs préfÚrent la Route B. Tout le trafic mondial destiné au DNS de Google (8.8.8.8) est **détourné** vers l'AS 666 (le hacker).
Cas d'Étude : Pakistan vs YouTube (2008)
  • L'Ordre : Le gouvernement pakistanais ordonne Ă  l'ISP "Pakistan Telecom" (AS 17557) de bloquer l'accĂšs Ă  YouTube.
  • L'Erreur (Interne) : Pour ce faire (en interne), l'ISP crĂ©e une "route poubelle" (vers Null0) pour le prĂ©fixe de YouTube : 208.65.153.0/24 (plus spĂ©cifique que le /22 de YouTube).
  • L'Erreur (Externe) : L'ISP (par erreur de configuration) **annonce (via eBGP)** cette route (208.65.153.0/24) Ă  son fournisseur de transit (PCCW).
  • La Propagation : PCCW (un Tier-1) voit cette route trĂšs spĂ©cifique et, suivant la rĂšgle, la propage Ă  *tous* ses peers (le monde entier).
  • RĂ©sultat : En quelques minutes, les tables de routage mondiales (DFZ) sont mises Ă  jour. Tout le trafic mondial de YouTube est redirigĂ© vers l'AS 17557 (Pakistan), oĂč il est "blackholĂ©" (envoyĂ© Ă  Null0). YouTube est "offline" mondialement pendant 2 heures, jusqu'Ă  ce que PCCW applique un filtre manuel pour ignorer l'annonce pakistanaise.
2. Route Leak (Fuite de Route)

Une "fuite" est différente d'un "hijack". Ce n'est (généralement) pas malveillant, mais c'est tout aussi catastrophique. C'est une **violation de la politique de routage (Peering/Transit)**.

Scénario :

[ Provider A (Tier-1) ] <--> [ MOI (AS 64512) ] <--> [ Provider B (Tier-1) ]
     (Transit 1)                 (Client)                 (Transit 2)
  1. État Normal :
    • Je paie A et B pour m'envoyer la "DFZ" (le monde).
    • J'annonce mes prĂ©fixes (`1.2.3.0/24`) Ă  A et B.
    • A et B s'annoncent leurs routes (peering) *directement*.
  2. La Fuite (L'Erreur) :
    • Je reçois (via iBGP) toutes les routes de A (ex: 500k routes).
    • Mon routeur (mal configurĂ©) **rĂ©-annonce (via eBGP)** ces 500k routes Ă  B.
  3. La Conséquence :
    • Le Provider B voit maintenant *deux* chemins pour atteindre les routes de A :
      1. Le chemin normal (via son peering avec A).
      2. Un *nouveau* chemin (via moi, AS 64512).
    • Si ce nouveau chemin (via moi) est (par erreur) *plus spĂ©cifique* ou a un *AS_PATH plus court*, B (et tous ses clients !) va maintenant essayer de joindre A en passant **par mon AS (64512)**.
  4. Résultat : Mon petit AS (conçu pour 1 Gbit/s) reçoit soudainement 1 Tbit/s de trafic destiné à A. Mon réseau s'effondre (devient un "trou noir") et cause une panne massive.

C'est la violation de la "RĂšgle d'Or" du Transit (voir 1.3).

4.2 La Solution : RPKI (Resource Public Key Infrastructure) & ROA

Comment résoudre le "péché originel" (la confiance) de BGP ? En ajoutant une **vérification cryptographique** externe. C'est le rÎle du **RPKI**.

1. Qu'est-ce que RPKI & ROA ?
RPKI (Resource Public Key Infrastructure)

C'est une "infrastructure à clé publique" (comme les certificats SSL/TLS pour HTTPS), mais pour les **ressources Internet (IP/ASN)**.

  • GĂ©rĂ©e par les **RIRs** (Regional Internet Registries - RIPE, ARIN, APNIC...).
  • Le RIR (qui vous *alloue* lĂ©galement vos IPs/ASN) vous donne un "Certificat" RPKI.
  • Ce certificat vous donne le droit (cryptographique) de "signer" des dĂ©clarations sur les ressources que vous possĂ©dez.
ROA (Route Origin Authorization) - "Le Certificat de Propriété"

L'objet que vous créez et signez est un **ROA (Route Origin Authorization)**. C'est la brique de base de la sécurité BGP.

Un ROA est un objet cryptographique simple qui lie un Préfixe à un ASN.

"Je (le propriétaire de 192.0.2.0/24) autorise l'AS 64512 à originer (annoncer) ce préfixe, avec une longueur maximale de /24."

Ce ROA est publié dans le répertoire RPKI mondial.

2. Le Processus : ROV (Route Origin Validation)

Maintenant que cette base de données (ROAs) existe, comment les routeurs l'utilisent-ils ? Ils utilisent le **ROV (Route Origin Validation)**.

Un FAI (ISP) moderne (ex: Orange) installe un logiciel "Cache RPKI" (ou "Validator", ex: Routinator). Ce cache télécharge tous les ROAs du monde (ex: toutes les 5 minutes).

Ensuite, chaque routeur BGP (de bordure) d'Orange est configuré pour parler à ce cache.

Le Flux de Décision (Prévention du Hijack)

Scénario : Le routeur d'Orange reçoit une annonce BGP (un `UPDATE`).

Annonce Reçue :
  Préfixe : 192.0.2.0/24
  AS_PATH : [ 666, ... ]  (Origine = AS 666, le Hacker)

Processus de Validation (ROV) :

  1. 1. RequĂȘte : Le routeur demande au "Cache RPKI" : "Que sais-tu sur 192.0.2.0/24 ?".
  2. 2. Réponse (ROA) : Le cache répond : "J'ai un ROA valide pour ce préfixe. Il dit : `{ asn: 64512, maxLength: 24 }`".
  3. 3. Comparaison : Le routeur compare l'Annonce (Origine = 666) au ROA (Origine = 64512). C'est un **mismatch**.
  4. 4. État : Le routeur marque cette route comme **"RPKI-Invalid" (Invalide)**.
  5. 5. Action : La politique BGP standard est de **REJETER (Discard/Drop)** *toutes* les routes "Invalid".
Résultat : Le "BGP Hijack" (le faux `/24` de l'AS 666) est **bloqué** à la frontiÚre. Il n'entre jamais dans le réseau d'Orange. Si tous les FAI implémentent le ROV, le BGP Hijacking devient impossible.
Les 3 États RPKI
ÉtatDĂ©finitionAction
Valid (Valide)L'annonce (ASN + Préfixe) **correspond** au ROA.Accepter la route.
Invalid (Invalide)L'annonce **contredit** le ROA (Mauvais ASN, ou Préfixe trop spécifique ex: `/25` si `maxLength` est `/24`).Rejeter la route.
Unknown / NotFound**Aucun ROA** n'existe pour ce préfixe (l'owner n'en a pas créé).Accepter la route (par défaut). C'est le "vieux" BGP basé sur la confiance.