| Sous-type | Code | Description | Notation show ip bgp |
|---|---|---|---|
| AS_SEQUENCE | 1 | Liste ordonnée des AS traversés (cas normal) | 65100 65200 65300 |
| AS_SET | 2 | Ensemble non-ordonné — créé lors d'une agrégation avec as-set | 65100 {65200,65300} |
| AS_CONFED_SEQUENCE | 3 | AS_SEQUENCE interne à une confédération | (65001 65002) |
| AS_CONFED_SET | 4 | AS_SET interne à une confédération | [65001,65002] |
Lors d'une agrégation BGP, plusieurs routes spécifiques sont remplacées par un préfixe plus large. Si le routeur agrégateur efface simplement l'AS_PATH des routes composantes, la protection contre les boucles est perdue.
❌ Sans as-set — perte d'info
Agrégat 10.0.0.0/22 annoncé avec AS_PATH vide ou uniquement l'AS local. AS 65100 et 65200 ne voient pas leur propre numéro → ne peuvent pas détecter la boucle.
✅ Avec as-set — boucle préservée
L'AS_PATH inclut un AS_SET contenant tous les AS des routes composantes. AS 65100 et 65200 voient leur propre numéro → route rejetée si boucle.
65000 {65100,65200,65300} a une longueur de 2, pas de 4. Cela peut influencer la sélection du meilleur chemin.Un ISP (AS 65000) reçoit des préfixes de deux clients et les agrège avant de les annoncer à un provider upstream. Le but : annoncer un seul préfixe /22 plutôt que quatre /24 individuels, tout en préservant la loop prevention.
! Routes dans la table BGP de R1 (avant agrégation) : 10.0.1.0/24 via AS 65100 AS_PATH: 65100 10.0.2.0/24 via AS 65200 AS_PATH: 65200 10.0.3.0/24 via AS 65200 → AS 65300 AS_PATH: 65200 65300
! Agrégation des AS_PATHs composants : ! AS_SEQUENCE local : 65000 (l'agrégateur lui-même) ! AS_SET : union de {65100} ∪ {65200} ∪ {65200, 65300} ! = {65100, 65200, 65300} (doublons supprimés) ! ! AS_PATH de l'agrégat : 10.0.0.0/22 AS_PATH: 65000 {65100,65200,65300}
10.0.0.0/22 AS_PATH: 65000 {65100,65200,65300} Longueur = 2! Scénario de boucle : agrégat revient vers AS 65100 ! AS 65100 reçoit : 10.0.0.0/22 AS_PATH: 65400 65000 {65100,65200,65300} ! ↑ AS 65100 présent ! ! → Route rejetée par AS 65100 → BOUCLE EMPÊCHÉE ✅
| Route | AS_PATH | Longueur comptée | Remarque |
|---|---|---|---|
| 10.0.1.0/24 (spécifique) | 65000 65100 | 2 | Route plus spécifique — préférée (longest match) |
| 10.0.0.0/22 sans as-set | 65000 | 1 | Plus court, mais loop prevention perdue |
| 10.0.0.0/22 avec as-set | 65000 {65100,65200,65300} | 2 | AS_SET entier = 1 seul hop |
65000 {65100,65200,65300} = longueur 2, pas 4.! ─── Syntaxe complète ─────────────────────────────────────────────────── aggregate-address network mask [as-set] [summary-only] [suppress-map MAP] [advertise-map MAP] [attribute-map MAP] ! ─── Variantes courantes ───────────────────────────────────────────────── ! 1) Agrégat simple — annonce le /22 ET les /24 spécifiques (redondant) router bgp 65000 aggregate-address 10.0.0.0 255.255.252.0 ! 2) Agrégat avec suppression des spécifiques (summary-only) router bgp 65000 aggregate-address 10.0.0.0 255.255.252.0 summary-only ! → seul le /22 est annoncé, les /24 sont supprimés ! 3) Agrégat avec préservation AS_PATH ← cas de cette page router bgp 65000 aggregate-address 10.0.0.0 255.255.252.0 as-set ! 4) Combinaison recommandée en production router bgp 65000 aggregate-address 10.0.0.0 255.255.252.0 as-set summary-only ! → seul le /22 annoncé + AS_SET préservé
! ─── R1 — agrégateur (AS 65000) ───────────────────────────────────────── router bgp 65000 bgp router-id 1.1.1.1 ! Peers clients neighbor 10.10.1.1 remote-as 65100 ! Client A neighbor 10.10.2.1 remote-as 65200 ! Client B ! Peer upstream neighbor 10.10.4.1 remote-as 65400 ! Upstream ! Agrégat : /22 avec AS_SET, suppression des spécifiques aggregate-address 10.0.0.0 255.255.252.0 as-set summary-only ! ! ─── Vérification ──────────────────────────────────────────────────────── show ip bgp 10.0.0.0/22 ! détail de l'agrégat show ip bgp summary ! état des sessions show ip bgp neighbors 10.10.4.1 advertised-routes ! routes annoncées à upstream
! ─── Scénario : supprimer seulement certains /24 avec suppress-map ─────── ! ! Objectif : annoncer le /22 + garder visible 10.0.1.0/24 (client VIP) ! mais supprimer 10.0.2.0/24 et 10.0.3.0/24 ip prefix-list SUPPRESS permit 10.0.2.0/24 ip prefix-list SUPPRESS permit 10.0.3.0/24 route-map SUPPRESS-MAP permit 10 match ip address prefix-list SUPPRESS router bgp 65000 aggregate-address 10.0.0.0 255.255.252.0 as-set suppress-map SUPPRESS-MAP ! Résultat : ! 10.0.0.0/22 annoncé (agrégat avec AS_SET) ! 10.0.1.0/24 annoncé (non supprimé — client VIP) ! 10.0.2.0/24 supprimé ! 10.0.3.0/24 supprimé
! ─── advertise-map : n'inclure que certaines routes dans l'AS_SET ──────── ! ! Objectif : construire l'AS_SET uniquement à partir de 10.0.1.0/24 ! (ignorer 10.0.2.0/24 et 10.0.3.0/24 pour le calcul du SET) ip prefix-list ADVERTISE-ONLY permit 10.0.1.0/24 route-map ADV-MAP permit 10 match ip address prefix-list ADVERTISE-ONLY router bgp 65000 aggregate-address 10.0.0.0 255.255.252.0 as-set advertise-map ADV-MAP ! AS_SET résultant : {65100} ← uniquement l'AS de 10.0.1.0/24
R1# show ip bgp 10.0.0.0/22 BGP routing table entry for 10.0.0.0/22, version 15 Paths: (1 available, best #1, table default) Advertised to update-groups: 1 Refresh Epoch 1 Local, (aggregated by 65000 1.1.1.1) ← agrégat local 0.0.0.0 from 0.0.0.0 (1.1.1.1) Origin IGP, metric 0, localpref 100, weight 32768, valid, aggregated, local, best AS-Path: {65100,65200,65300} ← AS_SET rx pathid: 0, tx pathid: 0x0
{} indiquent un AS_SET. L'ordre des AS à l'intérieur est arbitraire (ensemble, pas séquence). L'AS local (65000) est visible via "aggregated by 65000", pas dans l'AS_PATH lui-même.R-Upstream# show ip bgp 10.0.0.0/22 BGP routing table entry for 10.0.0.0/22, version 8 Paths: (1 available, best #1, table default) 65000 {65100,65200,65300} ← AS_SEQUENCE 65000 + AS_SET 10.10.4.2 from 10.10.4.2 (1.1.1.1) Origin IGP, valid, external, best rx pathid: 0, tx pathid: 0x0 R-Upstream# show ip bgp 10.0.0.0/22 | include AS-Path AS-Path: 65000 {65100,65200,65300} ! ↑ ↑ ! AS_SEQUENCE AS_SET (longueur = 1) ! (l'agrégateur) (les composantes)
| Commande | Sans as-set | Avec as-set |
|---|---|---|
show ip bgp 10.0.0.0/22 |
AS-Path: (empty)+ ATOMIC_AGGREGATE |
AS-Path: {65100,65200,65300} |
| Longueur AS_PATH | 0 (vide) | 1 (le SET entier) |
| Loop prevention | ❌ Perdue | ✅ Préservée |
| ATOMIC_AGGREGATE | Présent | Absent |
R1# show ip bgp Network Next Hop Metric LocPrf Weight Path s 10.0.1.0/24 10.10.1.1 0 100 0 65100 i ← s = supprimé s 10.0.2.0/24 10.10.2.1 0 100 0 65200 i s 10.0.3.0/24 10.10.2.1 0 100 0 65200 65300 i *> 10.0.0.0/22 0.0.0.0 0 32768 {65100,65200,65300} i ← agrégat ! 's' = Suppressed — route reçue mais non annoncée à cause de summary-only ! Toujours présente dans la table BGP locale mais non propagée
| Syntaxe | AS_PATH de l'agrégat | ATOMIC_AGGREGATE | Loop prevention |
|---|---|---|---|
aggregate-address X(sans option) |
(vide) |
Positionné ✓ | Perdue ✗ |
aggregate-address X as-set |
{65100,65200,65300} |
Absent ✓ | Préservée ✓ |
aggregate-address X summary-only |
(vide) |
Positionné ✓ | Perdue ✗ |
aggregate-address X as-set summary-only |
{65100,65200,65300} |
Absent ✓ | Préservée ✓ |
ATOMIC_AGGREGATE (type 6, Well-known Discretionary) est un flag sans valeur — sa seule présence suffit à signaler qu'une agrégation avec perte d'information a été effectuée. Il indique aux routeurs en aval que l'AS_PATH a été tronqué et que la route ne reflète pas fidèlement le chemin réel.
! ─── Sans as-set : ATOMIC_AGGREGATE positionné ────────────────────────── R-Upstream# show ip bgp 10.0.0.0/22 65000 ... Origin IGP, valid, external, best atomic-aggregate ← perte d'info signalée Aggregated by 65000 1.1.1.1 ← + AGGREGATOR (type 7) ! ─── Avec as-set : pas d'ATOMIC_AGGREGATE ─────────────────────────────── R-Upstream# show ip bgp 10.0.0.0/22 65000 {65100,65200,65300} ... Origin IGP, valid, external, best ← pas d'atomic-aggregate → info préservée
as-set — recommandé en ISP/transit
Agrégation de routes clients avec AS différents. Préserve la loop prevention. Produit un AS_SET dans l'AS_PATH. À utiliser quand les composantes proviennent d'AS multiples.
Sans as-set — acceptable en enterprise
Agrégation de routes internes au même AS (ex: loopbacks). Loop prevention moins critique car toutes les routes appartiennent au même AS. ATOMIC_AGGREGATE positionné pour signaler l'agrégation.
Cas particulier — AS_SET trop grand
Un AS_SET avec des centaines d'AS (agrégation massive) augmente la taille des UPDATE BGP. Dans ce cas, certains opérateurs préfèrent omettre as-set et accepter la perte de loop prevention pour réduire la charge CPU/mémoire.
aggregate-address X sans options annonce l'agrégat ET les routes spécifiques simultanément. Les peers reçoivent le /22 ET les /24 — table BGP inutilement chargée, pas d'économie de préfixes.! Symptôme : R-Upstream voit à la fois le /22 et les /24 R-Upstream# show ip bgp | include 10.0. 10.0.0.0/22 ... ← agrégat 10.0.1.0/24 ... ← spécifique aussi annoncé ! 10.0.2.0/24 ... ← spécifique aussi annoncé ! ! Fix : ajouter summary-only aggregate-address 10.0.0.0 255.255.252.0 as-set summary-only
! L'agrégat disparaît si toutes les routes composantes sont absentes. ! Solution : ajouter une route statique null0 pour "ancrer" l'agrégat ip route 10.0.0.0 255.255.252.0 Null0 ! route fantôme toujours présente router bgp 65000 network 10.0.0.0 mask 255.255.252.0 ! injecter via network (alternatif) ! ou aggregate-address 10.0.0.0 255.255.252.0 as-set summary-only
{65100}. Ce n'est pas une erreur, mais l'AS_SET n'apporte pas grand chose ici — une agrégation simple sans as-set suffirait.show ip bgp : {} pour AS_SET, [] pour AS_CONFED_SET.Cliquez sur une carte pour révéler la réponse.
as-set. Il contient l'union des AS de toutes les routes composantes de l'agrégat.
65000 {65100,65200,65300} a une longueur de 2, pas de 4.
summary-only : supprime l'annonce des routes spécifiques (seul l'agrégat est propagé). as-set : construit l'AS_PATH de l'agrégat en incluant tous les AS des composantes. Les deux options sont indépendantes et souvent utilisées ensemble : aggregate-address X as-set summary-only.
show ip bgp : les routes spécifiques supprimées affichent un s en début de ligne (Suppressed). L'agrégat affiche *>. La commande show ip bgp X.X.X.X/Y sur l'agrégat montre "aggregated by" et l'AS_PATH avec le SET.
ip route X.X.X.X mask Null0 pour ancrer l'agrégat en permanence.
65000 {65100,65200,65300}. À ne pas confondre avec les parenthèses ( ) pour AS_CONFED_SEQUENCE ni les crochets [ ] pour AS_CONFED_SET (utilisés uniquement dans les confédérations BGP).