Optional Non-Transitive · type 26 Critère #9 RFC 7311 Lowest wins

AIGP — Accumulated IGP Metric

Critère #9 — Métrique IGP accumulée sur plusieurs sauts BGP. Conçu pour les réseaux SP avec BGP-free core ou Inter-AS MPLS, où le coût IGP total doit traverser plusieurs domaines BGP.

Profil complet
Type code
26
Catégorie
Optional Non-Transitive
Critère
#9
RFC
7311
Comparaison
Lowest wins
Portée par défaut
iBGP uniquement
Transitivité
Non transitive (supprimé aux frontières AS)
ℹ️ AIGP est un attribut BGP qui transporte la somme cumulée des métriques IGP accumulées le long du chemin BGP. Il permet à un routeur BGP de connaître le coût total bout-en-bout vers une destination, même quand ce chemin traverse des nœuds qui ne participent pas à l'IGP (routeurs BGP-free dans le cœur MPLS).
Position dans l'algorithme
1Weight
2LOCAL_PREF
3NH=0.0.0.0
4AS-PATH
5Origin
6MED
7eBGP/iBGP
8IGP metric
9AIGP ← ici
10Oldest
11Router-ID
12Cluster-list
13Neighbor IP
Différence fondamentale — critère #8 vs critère #9
📐 Critère #8 — IGP metric locale
ScopeUn seul saut (local)
SourceTable de routage IGP locale
Transporté dans BGP ?Non
Question poséeCombien coûte le NEXT_HOP ici ?
Cas d'usageRéseau classique avec IGP end-to-end
📊 Critère #9 — AIGP accumulé
ScopeBout-en-bout (multi-sauts BGP)
SourceAttribut BGP type 26 (reçu + ajout local)
Transporté dans BGP ?Oui (Optional Non-Trans.)
Question poséeCombien coûte le chemin total ?
Cas d'usageBGP-free core, Inter-AS MPLS
Caractéristiques Optional Non-Transitive
PropriétéComportement AIGP
OptionalRouteurs ne supportant pas AIGP l'ignorent sans erreur
Non-TransitiveSupprimé par défaut aux frontières eBGP (sauf config explicite)
Supporté non configuréReçu et stocké mais pas utilisé pour la sélection
Envoi vers eBGPDésactivé par défaut — nécessite neighbor X aigp
Envoi vers iBGPActivé quand AIGP est configuré sur le processus BGP
Use Case #1 — BGP-free Core (MPLS)
Chemin A : PE1 → P1 → P2 → PE3 (cost total : 30)
PE1
BGP origin
AIGP=0
+10
P1
No BGP
MPLS fwd
+10
P2
No BGP
MPLS fwd
+10
PE3
iBGP peer
AIGP=30
eBGP
CE/Dest
172.16.0.0
Chemin B : PE1 → P3 → PE4 (cost total : 60)
PE1
BGP origin
AIGP=0
+30
P3
No BGP
MPLS fwd
+30
PE4
iBGP peer
AIGP=60
eBGP
CE/Dest
172.16.0.0
💡 Sans AIGP, les routeurs P (BGP-free) ne participent pas à BGP. PE1 ne peut pas comparer les chemins via PE3 ou PE4 sur la base du coût IGP total — les deux chemins semblent identiques sur les critères 1–8. AIGP résout ce problème en transportant le coût cumulé dans l'attribut BGP.
Use Case #2 — Inter-AS MPLS Option B/C
  AS 65001 (SP-A)                    AS 65002 (SP-B)
  ┌────────────────────────┐         ┌────────────────────────┐
  │  PE1 ── P1 ── ASBR-A  │─eBGP ──►│  ASBR-B ── P2 ── PE2  │
  │  AIGP=0    AIGP=20     │         │  AIGP=20    AIGP=50    │
  └────────────────────────┘         └────────────────────────┘

  Option C : ASBR-A envoie AIGP=20 vers ASBR-B (avec neighbor aigp)
  ASBR-B ajoute son IGP cost (+30) → PE2 voit AIGP=50
  PE2 peut comparer les chemins bout-en-bout via AIGP
⚠️ Pour propager AIGP vers un peer eBGP, il faut configurer explicitement neighbor X.X.X.X aigp. Sans cette commande, AIGP est supprimé aux frontières AS (comportement Non-Transitive par défaut).
Use Case #3 — Seamless MPLS (réseau SP hiérarchique)
🏢

Architecture Seamless MPLS

Dans un réseau SP avec plusieurs niveaux de BGP (access, aggregation, core), AIGP permet de propager le coût IGP cumulé à travers tous les niveaux de hiérarchie BGP, sans que chaque niveau ait à redistribuer ses routes IGP dans le niveau supérieur.

📡

BGP-LU (Labeled Unicast)

AIGP est particulièrement utile avec BGP Labeled Unicast (RFC 3107). Les routes de loopback PE sont annoncées avec des labels et un AIGP, permettant la sélection du meilleur chemin bout-en-bout dans les réseaux MPLS hiérarchiques.

🔄

Route Reflector hiérarchique

Dans une topologie RR à plusieurs niveaux, AIGP est propagé entre RR clients et RR supérieurs. Chaque niveau de RR préserve et transmet l'attribut AIGP, permettant une sélection optimale bout-en-bout.

Résumé des use cases
Use CaseProblème résoluCondition requise
BGP-free coreCoût IGP non visible à travers les P routersAIGP activé sur PE iBGP peers
Inter-AS Option BCoût total inconnu entre ASesneighbor asbr aigp des deux côtés
Inter-AS Option CMême problème, sur plusieurs ASAIGP propagé end-to-end sur tous les peerings
Seamless MPLSHiérarchie BGP sans redistribution IGPAIGP sur toute la hiérarchie RR
BGP-LU multipathChoix du meilleur label pathAIGP + maximum-paths
Format de l'attribut AIGP — TLV

L'attribut AIGP est encodé sous forme de TLV (Type-Length-Value). Un seul type de TLV est défini : AIGP TLV type 1.

Type
1 octet
0x01
Length
2 octets
0x000B (11)
Value — AIGP metric
8 octets (uint64)
Valeur accumulée (0 à 2^64-1)
ℹ️ La valeur AIGP est un entier non signé de 64 bits. La taille totale de l'attribut AIGP dans un message UPDATE est : 3 octets (flags+type+length attribut) + 1+2+8 = 14 octets au total.
Algorithme d'accumulation
ÉtapeActionValeur AIGP résultante
① Origine (PE1 injecte la route) Pas d'AIGP reçu → initialise AIGP = IGP cost vers NH (ou 0 si NH = 0.0.0.0) AIGP = 0 (loopback locale)
② PE1 → PE3 (iBGP, via MPLS core) PE3 reçoit AIGP=0, ajoute son IGP cost vers NH (PE1 loopback) = 30 AIGP = 0 + 30 = 30
③ PE3 re-annonce vers un RR RR reçoit AIGP=30, ajoute son IGP cost vers PE3 loopback = 5 AIGP = 30 + 5 = 35
④ RR reflète vers PE5 PE5 reçoit AIGP=35, compare avec autre chemin AIGP=60 → choisit AIGP=35 AIGP = 35 → best path #9
⚠️ L'ajout de la métrique IGP locale se fait au moment de la réception de la route, pas à l'envoi. Chaque routeur ajoute le coût pour atteindre le NEXT_HOP annoncé dans la route reçue.
Règles de manipulation AIGP
SituationComportement
Route reçue sans AIGP, AIGP activéLe routeur crée un AIGP = IGP metric vers NH
Route reçue avec AIGP, AIGP activéLe routeur ajoute IGP metric vers NH à la valeur reçue
Route locale (NH=0.0.0.0)AIGP = 0 (pas de coût IGP)
Envoi vers eBGP peer sans neighbor aigpAIGP supprimé (Non-Transitive)
Envoi vers eBGP peer avec neighbor aigpAIGP propagé (comportement explicite)
Routeur ne comprend pas AIGP (type 26 inconnu)Attribut ignoré silencieusement (Optional)
Activation AIGP — iBGP (BGP-free core)
! Topologie : PE1 et PE2 sont peers iBGP, cœur MPLS BGP-free
! Activer AIGP sur les peers iBGP PE-to-PE

router bgp 65001
  neighbor 2.2.2.2 remote-as 65001
  neighbor 2.2.2.2 aigp              ! Activer AIGP pour ce peer iBGP
  neighbor 2.2.2.2 update-source Loopback0

  neighbor 3.3.3.3 remote-as 65001
  neighbor 3.3.3.3 aigp
  neighbor 3.3.3.3 update-source Loopback0

  ! Optionnel : envoyer AIGP vers un peer eBGP (Inter-AS)
  neighbor 10.0.0.1 remote-as 65002
  neighbor 10.0.0.1 aigp              ! Propager AIGP vers AS voisin (Inter-AS MPLS)
Désactiver le critère #9 AIGP
! Ignorer AIGP dans la sélection du best path (critère #9 sauté)
router bgp 65001
  bgp bestpath aigp ignore

! L'attribut AIGP est toujours reçu et stocké, mais pas utilisé
! pour comparer les chemins. La sélection passe directement au critère #10.
Manipulation AIGP via route-map
! Forcer une valeur AIGP spécifique à l'injection d'une route
route-map RM-SET-AIGP permit 10
  set aigp-metric 100           ! Forcer AIGP=100 pour cette route

router bgp 65001
  network 172.16.0.0 mask 255.255.0.0 route-map RM-SET-AIGP

! Modifier AIGP sur une route reçue (inbound)
route-map RM-AIGP-IN permit 10
  set aigp-metric igp-metric    ! Utiliser la métrique IGP locale (défaut)

route-map RM-AIGP-IN permit 20
  set aigp-metric 200           ! Valeur fixe pour les autres routes
Commandes de vérification
! Voir l'attribut AIGP dans la table BGP
PE1# show ip bgp 172.16.0.0/16
BGP routing table entry for 172.16.0.0/16
Paths: (2 available, best #1)
  65100
    2.2.2.2 (metric 30) from 2.2.2.2 (2.2.2.2)
      Origin IGP, metric 0, localpref 100, valid, internal, best
      AIGP: 30               ← valeur AIGP affichée
  65100
    3.3.3.3 (metric 60) from 3.3.3.3 (3.3.3.3)
      Origin IGP, metric 0, localpref 100, valid, internal
      AIGP: 60               ← AIGP plus élevé = perd en critère #9

! Voir les détails AIGP
PE1# show ip bgp 172.16.0.0/16 detail

! Vérifier la configuration AIGP par neighbor
PE1# show bgp neighbors 2.2.2.2 | include AIGP
  AIGP is enabled
Topologie — BGP-free core dual-path
  AS 65001 — BGP-free core MPLS
  ┌──────────────────────────────────────────────────────────────┐
  │                                                              │
  │  PE1 ───(cost 10)─── P1 ───(cost 10)─── P2 ─(cost 10)─ PE3 │
  │  Lo: 1.1.1.1                                   Lo: 3.3.3.3  │
  │  AIGP=0                                        AIGP=30      │
  │     │                                               │        │
  │     └──────────(cost 50)─── P3 ──(cost 10)── PE4   │        │
  │                                  Lo: 4.4.4.4        │        │
  │                                  AIGP=60            │        │
  │                                                     │        │
  │  PE1 reçoit via iBGP :                              │        │
  │  - Route 172.16.0.0/16 depuis PE3 : AIGP=30         │        │
  │  - Route 172.16.0.0/16 depuis PE4 : AIGP=60         │        │
  └──────────────────────────────────────────────────────────────┘
show ip bgp sur PE1 — critère #9 en action
PE1# show ip bgp 172.16.0.0/16
BGP routing table entry for 172.16.0.0/16, version 12
Paths: (2 available, best #1, table Default-IP-Routing-Table)
  Advertised to update-groups:
     1
  65100
    3.3.3.3 (metric 30) from 3.3.3.3 (3.3.3.3)  ← via PE3
      Origin IGP, metric 0, localpref 100, valid, internal, best
      AIGP: 30    ← AIGP=30 → critère #9 : 30 < 60 → best ✅
  65100
    4.4.4.4 (metric 60) from 4.4.4.4 (4.4.4.4)  ← via PE4
      Origin IGP, metric 0, localpref 100, valid, internal
      AIGP: 60    ← AIGP=60 → critère #9 : 60 > 30 → perd ❌
Analyse critère par critère sur PE1
CritèreVia PE3Via PE4Résultat
#1 Weight00Égal — suivant
#2 LOCAL_PREF100100Égal — suivant
#3 NH=0.0.0.0NonNonÉgal — suivant
#4 AS-PATH1 hop1 hopÉgal — suivant
#5 OriginIGP (i)IGP (i)Égal — suivant
#6 MED00Égal — suivant
#7 eBGP/iBGPinternalinternalÉgal — suivant
#8 IGP metric30 (vers 3.3.3.3)60 (vers 4.4.4.4)⚠️ Différent mais…
Si bgp bestpath igp-metric ignore est configuré → critère #8 sauté → on arrive au critère #9
#9 AIGP3060✅ PE3 gagne (30 < 60)
ℹ️ Dans cet exemple, le critère #8 aurait déjà départagé (IGP metric 30 vs 60). Le critère #9 AIGP devient vraiment décisif quand bgp bestpath igp-metric ignore est configuré, ou quand les métriques IGP sont identiques mais les AIGP accumulés différents.

⚡ AIGP supprimé aux frontières eBGP sans config

Par défaut, AIGP est Optional Non-Transitive : il est supprimé quand la route traverse une frontière eBGP. Pour propager AIGP vers un AS voisin (Inter-AS MPLS), il faut configurer neighbor X.X.X.X aigp explicitement des deux côtés.

⚡ Confusion critère #8 et critère #9

Le critère #8 mesure le coût IGP local vers le NEXT_HOP (un seul saut). Le critère #9 mesure le coût total accumulé sur tout le chemin BGP. En pratique, si le critère #8 fait déjà la différence, le critère #9 n'est jamais atteint — sauf si igp-metric ignore est configuré.

⚡ AIGP ignoré si peer ne supporte pas type 26

Un routeur ne reconnaissant pas l'attribut de type 26 l'ignore silencieusement (comportement Optional). La route est quand même acceptée, mais AIGP est perdu. En topologie mixte (anciens IOS), vérifier la compatibilité avant de déployer AIGP.

⚡ Valeur AIGP non initialisée = 0 par défaut

Si une route est injectée sans AIGP et que le routeur a AIGP activé, il crée un AIGP avec la valeur IGP locale vers le NH. Si le NH est local (loopback, réseau directement connecté), AIGP est initialisé à 0. Ne pas confondre AIGP=0 avec "AIGP absent".

⚡ bgp bestpath aigp ignore sans raison

Désactiver le critère #9 avec bgp bestpath aigp ignore dans un réseau BGP-free core supprime l'intérêt principal d'AIGP. Cette commande ne doit être utilisée que dans des cas spécifiques où le coût AIGP n'est pas représentatif (ex: migration, dépannage).

⚡ Boucle de comptage AIGP en Inter-AS

Dans une topologie Inter-AS en anneau, si AIGP est mal configuré (propagé des deux côtés sans contrôle), la valeur AIGP peut s'incrémenter indéfiniment à chaque cycle. Utiliser des route-maps pour limiter l'envoi AIGP aux seuls peers légitimes.

✅ Bonne pratique — AIGP + igp-metric ignore

En BGP-free core, combiner neighbor X aigp + bgp bestpath igp-metric ignore : on ignore la métrique IGP locale (critère #8, souvent 0 car PE peer via loopback MPLS) et on laisse AIGP (critère #9) faire la sélection sur le coût total réel du chemin.

✅ Bonne pratique — Vérifier AIGP dans show ip bgp detail

Toujours vérifier la présence et la valeur AIGP avec show ip bgp X detail après activation. L'absence d'AIGP sur certains chemins (affichage sans la ligne "AIGP:") indique que le peer source ne l'a pas envoyé, ou qu'il a été supprimé en transit.

Cliquez sur une carte pour révéler la réponse.

Quel est le type code BGP de l'attribut AIGP et sa RFC ?
Type code 26, défini dans la RFC 7311. Catégorie : Optional Non-Transitive. Critère #9 dans la sélection BGP (lowest wins).
→ À retenir pour l'exam : 26 / RFC 7311
Quelle est la différence entre le critère #8 (IGP metric) et le critère #9 (AIGP) ?
Critère #8 = coût IGP local pour atteindre le NEXT_HOP (un seul routeur, non transporté dans BGP). Critère #9 = coût IGP accumulé sur tout le chemin BGP (transporté dans l'attribut AIGP, multi-sauts).
→ #8 = local, #9 = bout-en-bout
Pourquoi AIGP est-il utile dans un réseau BGP-free core ?
Dans un réseau MPLS BGP-free, les routeurs P ne participent pas à BGP. Sans AIGP, les PE ne peuvent pas connaître le coût IGP total à travers le cœur. AIGP accumule ce coût dans l'attribut BGP, permettant une sélection de chemin basée sur le coût réel bout-en-bout.
→ Cas classique SP : PE-to-PE via cœur MPLS
Que se passe-t-il par défaut quand AIGP traverse une frontière eBGP ?
AIGP est supprimé (Non-Transitive). Pour propager AIGP vers un peer eBGP, il faut configurer explicitement neighbor X.X.X.X aigp. Sans cette commande, le peer eBGP reçoit la route sans l'attribut AIGP.
→ Typique pour Inter-AS MPLS Option B/C
Quelle commande active AIGP pour un peer BGP spécifique ?
neighbor X.X.X.X aigp dans le processus BGP. Cette commande active à la fois l'envoi et la réception d'AIGP pour ce peer. Pour désactiver le critère #9 dans la sélection : bgp bestpath aigp ignore.
→ Configurer sur tous les PE dans un BGP-free core
Quelle est la taille du TLV AIGP type 1 et son encodage ?
TLV type 1 : Type (1 octet = 0x01) + Length (2 octets = 0x000B) + Value (8 octets, uint64). Total TLV = 11 octets. La valeur est un entier non signé 64 bits représentant la métrique accumulée.
→ AIGP total dans UPDATE = 14 octets (avec 3 octets header attribut)
Dans quel ordre AIGP et IGP metric interviennent-ils dans la sélection BGP ?
Le critère #8 (IGP metric locale) est évalué en premier. Si les métriques IGP locales sont identiques (ou si bgp bestpath igp-metric ignore est configuré), alors le critère #9 (AIGP) est comparé. AIGP ne peut jamais "court-circuiter" IGP metric.
→ Ordre : #8 IGP metric → #9 AIGP
Comment vérifier la valeur AIGP d'un chemin BGP dans show ip bgp ?
show ip bgp X.X.X.X/Y affiche la ligne AIGP: <valeur> pour chaque chemin si l'attribut est présent. Utiliser show ip bgp X detail pour plus d'informations. L'absence de la ligne "AIGP:" signifie que l'attribut n'a pas été reçu.
→ Aussi : show bgp neighbors X | include AIGP