🏛️ ArchiZeroTrust / CCIE / Routing / Redistribution / BGP
🌐 Redistribution BGP

04 — Redistribution BGP

network vs redistribute, injection IGP → BGP, redistribution BGP → IGP, impact sur l'attribut Origin, MED depuis la métrique IGP, pièges CCIE.

Concepts
IGP → BGP
BGP → IGP
MED & Origin
Vérification
⚠️ Pièges
Flash Cards
Commandes

network vs redistribute — différence fondamentale

BGP dispose de deux mécanismes pour injecter des routes dans la table BGP. Comprendre leur différence est critique pour le CCIE.

network Injection directe
CritèreComportement
ConditionLe préfixe doit exister dans la RIB (table de routage)
Origini — IGP (code le plus propre)
MaskExact match obligatoire (sauf auto-summary)
UsagePréfixes locaux, agrégats, routes propres à l'AS
redistribute Importation d'un protocole
CritèreComportement
ConditionRoute présente dans la table du protocole source
Origin? — incomplete (pénalise critère #5)
MaskTous les préfixes du protocole source
UsageMigration, interconnexion, routes apprises d'un IGP
⚠️ Origin incomplete (?) — une route redistribuée dans BGP a toujours l'origine ? (incomplete). Au critère #5 de la sélection BGP, i > e > ?. Une route injectée via network (origin i) sera toujours préférée à la même route redistribuée (origin ?) si tous les autres critères sont égaux.

Comportement par défaut de redistribute ospf → BGP

⚠️ Comportement par défaut = Internal seulement (doc Cisco officielle)

Sans mot-clé match, redistribute ospf dans BGP ne redistribue que les routes internes (O intra-area et O IA inter-area). Les routes externes (O E1, O E2, O N1, O N2) sont ignorées par défaut.

Source : "If you configure the redistribution of OSPF into BGP without keywords, only OSPF intra-area and inter-area routes are redistributed into BGP, by default." — Cisco TAC Doc #5242
Tableau des mots-clés match
CommandeRoutes redistribuées dans BGP
redistribute ospf 1O + O IA uniquement (défaut — internal)
redistribute ospf 1 match internalO + O IA (explicite, identique au défaut)
redistribute ospf 1 match externalO E1 + O E2 uniquement
redistribute ospf 1 match external 1O E1 uniquement
redistribute ospf 1 match external 2O E2 uniquement
redistribute ospf 1 match internal externalTout — O, O IA, E1, E2
redistribute ospf 1 match nssa-externalO N1 + O N2 uniquement
redistribute ospf 1 match internal external nssa-externalTout — internal + external + NSSA
💡 Comportement cumulatif : les commandes match s'ajoutent — elles ne se remplacent pas. Si on configure successivement match internal puis match external, le résultat final est match internal external 1 external 2. Pour retirer un type, utiliser no redistribute ospf 1 match ... avec les mots-clés précis.

Rôle de l'ASBR BGP

ASBR Autonomous System Boundary Router

Le routeur qui fait la redistribution entre BGP et un IGP est l'ASBR. Il participe simultanément aux deux protocoles. La redistribution est unidirectionnelle par configuration — redistribuer OSPF dans BGP ne redistribue pas automatiquement BGP dans OSPF.

Topologie typique redistribution BGP ↔ IGP AS 65001 AS 65002 ┌──────────────┐ ┌──────────────────┐ │ R1 │ │ R3 │ │ (iBGP) │ │ (iBGP) │ │ │ eBGP │ │ │ R2 (ASBR) ──┼────────────┼── R4 (ASBR) │ │ BGP+OSPF │ │ BGP+OSPF │ │ │ │ │ │ R5 (OSPF) │ │ R6 (OSPF) │ └──────────────┘ └──────────────────┘ R2 redistribue OSPF→BGP et BGP→OSPF R4 redistribue OSPF→BGP et BGP→OSPF

Comportement par défaut de BGP vis-à-vis des routes iBGP

Règle importante : par défaut, redistribute dans BGP ne redistribue PAS les routes apprises via iBGP — uniquement les routes des protocoles IGP locaux et les routes connectées/statiques. Pour redistribuer des routes iBGP, il faut utiliser bgp redistribute-internal.

Injecter des routes IGP dans BGP

OSPF → BGP
OSPF → BGP Redistribution complète
! ── Redistribution OSPF dans BGP ─────────────────────────────────────
router bgp 65001
  address-family ipv4 unicast
    ! Par défaut : routes internes seulement (O + O IA) ← doc Cisco TAC #5242
    redistribute ospf 1

    ! Identique au défaut — explicite
    redistribute ospf 1 match internal

    ! Redistribuer TOUTES les routes (internal + external E1 + E2)
    redistribute ospf 1 match internal external 1 external 2

    ! Redistribuer uniquement les externes (E1 + E2)
    redistribute ospf 1 match external

    ! Redistribuer avec un filtre route-map
    redistribute ospf 1 match internal external route-map OSPF-TO-BGP

! ── Route-map pour contrôler l'injection ─────────────────────────────
route-map OSPF-TO-BGP permit 10
  match ip address prefix-list PREFIXES-AUTORISES
  set metric 100          ! devient le MED dans BGP
  set community 65001:100

ip prefix-list PREFIXES-AUTORISES permit 10.0.0.0/8 le 24
match internal / external : sans le mot-clé match, BGP redistribue uniquement les routes internes (O + O IA). Pour inclure les externes (E1, E2), il faut explicitement ajouter match external. Pour tout redistribuer : match internal external 1 external 2. En production, toujours ajouter une route-map pour éviter de réinjecter des routes externes OSPF déjà venues de BGP.
EIGRP → BGP
EIGRP → BGP
router bgp 65001
  address-family ipv4 unicast
    redistribute eigrp 100

    ! Avec filtre et manipulation de métrique
    redistribute eigrp 100 route-map EIGRP-TO-BGP

route-map EIGRP-TO-BGP permit 10
  match ip address prefix-list EIGRP-PREFIXES
  set metric 200            ! MED BGP
  set origin incomplete      ! déjà ? par défaut — explicite ici

EIGRP n'a pas de mot-clé match comme OSPF — toutes les routes EIGRP (internes et externes D EX) sont redistribuées. Utiliser une route-map ou prefix-list pour filtrer.

IS-IS → BGP
IS-IS → BGP
router bgp 65001
  address-family ipv4 unicast
    redistribute isis CORE

    ! Redistribuer uniquement Level 2
    redistribute isis CORE ip  ! routes IP IS-IS
Static & Connected → BGP
router bgp 65001
  address-family ipv4 unicast
    ! Routes statiques
    redistribute static route-map STATIC-TO-BGP

    ! Routes connectées
    redistribute connected route-map CONNECTED-TO-BGP

    ! Méthode préférée : network avec route statique vers Null0
    network 203.0.113.0 mask 255.255.255.0  ! origin = i (propre)

! Route statique vers Null0 pour que network fonctionne
ip route 203.0.113.0 255.255.255.0 Null0
💡 Bonne pratique : pour annoncer un bloc d'adresses propre à votre AS, préférez network + route statique Null0 plutôt que redistribute connected. L'origin sera i au lieu de ? et vous contrôlez exactement ce qui est annoncé.

Redistribuer BGP dans un IGP

⚠️ Attention : redistribuer la table BGP complète dans un IGP peut injecter des dizaines de milliers de routes. Toujours filtrer avec une route-map ou prefix-list. En production, on redistribue généralement uniquement une default route ou quelques agrégats.
BGP → OSPF
BGP → OSPF
! ── Redistribution BGP dans OSPF ─────────────────────────────────────
router ospf 1
  ! Redistribuer toutes les routes BGP → routes externes OSPF (E2 par défaut)
  redistribute bgp 65001 subnets

  ! E1 — métrique cumulative (recommandé pour avoir le vrai coût)
  redistribute bgp 65001 subnets metric-type 1

  ! Avec metric fixe et tag
  redistribute bgp 65001 subnets metric 100 metric-type 1 tag 200

  ! Avec filtre route-map (OBLIGATOIRE en production)
  redistribute bgp 65001 subnets route-map BGP-TO-OSPF

route-map BGP-TO-OSPF permit 10
  match ip address prefix-list BGP-PREFIXES
  set metric-type type-1
  set metric 50
  set tag 100           ! pour identifier les routes BGP dans OSPF

! ── Default route BGP → OSPF ─────────────────────────────────────────
router ospf 1
  default-information originate             ! si 0.0.0.0/0 dans la RIB
  default-information originate always      ! même sans 0.0.0.0/0
  default-information originate always metric 10 metric-type 1
subnets : mot-clé obligatoire pour redistribuer des routes avec masque variable (VLSM). Sans subnets, seules les routes classful sont redistribuées — en pratique ça ne redistribue presque rien.
BGP → EIGRP
BGP → EIGRP
! ── Redistribution BGP dans EIGRP ────────────────────────────────────
router eigrp 100
  ! Seed metric OBLIGATOIRE — sans ça, les routes ne passent pas
  redistribute bgp 65001 metric 10000 100 255 1 1500
  !                         BW    delay rel load MTU

  ! Avec default-metric (équivalent)
  default-metric 10000 100 255 1 1500
  redistribute bgp 65001

  ! Avec filtre route-map
  redistribute bgp 65001 metric 10000 100 255 1 1500 route-map BGP-TO-EIGRP

! ── En named mode ────────────────────────────────────────────────────
router eigrp CAMPUS
  address-family ipv4 unicast autonomous-system 100
    topology base
      redistribute bgp 65001 metric 10000 100 255 1 1500
Seed metric obligatoire : contrairement à OSPF, EIGRP ne peut pas redistribuer une route sans métrique explicite. Si la metric n'est pas définie, les routes sont silencieusement ignorées. Résultat visible dans show ip eigrp topology | include D EX — les routes n'y apparaissent pas.
BGP → IS-IS
BGP → IS-IS
router isis CORE
  redistribute bgp 65001 ip

  ! Uniquement vers Level 2
  redistribute bgp 65001 ip level-2

  ! Avec metric
  redistribute bgp 65001 ip metric 50 level-2
  redistribute bgp 65001 ip route-map BGP-TO-ISIS
Injecter une default route BGP dans les IGPs
! ── OSPF ──────────────────────────────────────────────────────────────
router ospf 1
  default-information originate        ! si 0.0.0.0/0 existe dans la RIB
  default-information originate always ! inconditionnellement

! ── EIGRP ─────────────────────────────────────────────────────────────
router eigrp 100
  ! Via redistribution d'une route statique 0.0.0.0/0
  redistribute static metric 10000 100 255 1 1500
ip route 0.0.0.0 0.0.0.0 Null0

  ! Ou via ip summary-address sur l'interface vers les PE
interface GigabitEthernet0/0
  ip summary-address eigrp 100 0.0.0.0 0.0.0.0

! ── IS-IS ─────────────────────────────────────────────────────────────
router isis CORE
  default-information originate

Origin — Impact sur la sélection BGP

CodeValeurSourceCritère #5
iIGPInjecté via network ou aggregate-addressPréféré (1er)
eEGPHéritage protocole EGP (obsolète)2ème
?IncompleteRedistribué via redistributeMoins préféré (3ème)
💡 Changer l'origin avec route-map : on peut forcer l'origin à igp sur une route redistribuée via set origin igp dans une route-map. Utile pour normaliser l'origin sans changer la méthode d'injection.
route-map FIX-ORIGIN permit 10
  set origin igp        ! force origin = i même pour une route redistribuée

MED — Multi-Exit Discriminator depuis la métrique IGP

Le MED (critère #6) peut être automatiquement rempli depuis la métrique du protocole source lors de la redistribution.

MED automatique depuis la métrique IGP
! ── MED depuis la métrique OSPF ──────────────────────────────────────
router bgp 65001
  address-family ipv4 unicast
    redistribute ospf 1 metric 0   ! metric 0 = hériter la metric OSPF comme MED

! ── Résultat dans la table BGP ────────────────────────────────────────
! Route OSPF avec metric 30 redistribuée dans BGP :
! Metric (MED) dans BGP = 30
! → Annoncé au peer eBGP avec MED=30

! ── MED explicite via route-map ──────────────────────────────────────
route-map OSPF-TO-BGP permit 10
  set metric 100          ! MED fixe = 100

! ── MED automatique depuis la metric EIGRP ───────────────────────────
router bgp 65001
  address-family ipv4 unicast
    redistribute eigrp 100   ! metric EIGRP composite → MED BGP
MED depuis OSPF

La metric OSPF (cost) est directement utilisée comme MED. Cost 10 → MED 10. Permet aux peers eBGP de choisir le meilleur point d'entrée dans l'AS en fonction du coût interne.

MED depuis EIGRP

La metric composite EIGRP (souvent > 100 000) devient le MED. Des valeurs MED très élevées peuvent être inattendues pour les peers eBGP. Préférer une route-map pour normaliser.

set metric-type dans une route-map OSPF

CommandeRésultat dans OSPFComportement métrique
metric-type 1 (E1)Route externe type 1Métrique cumulative — coût interne + coût externe
metric-type 2 (E2)Route externe type 2Métrique fixe — coût externe seulement (défaut)
Recommandation : utiliser E1 pour la redistribution BGP→OSPF quand plusieurs ASBRs existent. E1 permet au routeur OSPF de choisir l'ASBR le plus proche (coût total), E2 ne distingue pas les ASBRs par leur coût interne.

Commandes de vérification

Vérifier l'injection IGP → BGP
! Voir toutes les routes BGP avec leur origin
show ip bgp
!   Network     Next Hop    Metric LocPrf  Path
!   10.1.1.0/24  0.0.0.0        10         i     ← network (origin IGP)
!   10.2.2.0/24  0.0.0.0       110         ?     ← redistribute (incomplete)

! Voir uniquement les routes redistribuées (origin ?)
show ip bgp regexp \?

! Détail d'une route — voir l'origin et la metric (MED)
show ip bgp 10.1.1.0/24
!  BGP routing table entry for 10.1.1.0/24
!    Origin IGP, metric 30, localpref 100, weight 32768, valid, sourced, best
!    ─────────────────────────────────────────────────────────
!    Origin = i (IGP)    metric = MED = 30 (depuis OSPF cost)

! Voir les routes BGP annoncées à un peer
show ip bgp neighbors 203.0.113.1 advertised-routes

! Vérifier que les routes OSPF sont bien dans BGP
show ip bgp | include ?            ! routes incomplete = redistribuées
Vérifier la redistribution BGP → IGP
! Routes BGP redistribuées dans OSPF (O E1 ou O E2)
show ip ospf database external     ! LSA type 5 générés par l'ASBR
show ip route ospf                  ! routes O E1 / O E2
!  O E2  10.100.0.0/24 [110/20] via 10.0.0.1, 00:01:23, Gi0/0

! Routes BGP redistribuées dans EIGRP (D EX)
show ip eigrp topology | include D EX
show ip route eigrp
!  D EX  10.100.0.0/24 [170/28160] via 10.0.0.1, Gi0/0

! Vérifier les LSA type 5 générés par l'ASBR
show ip ospf database external 10.100.0.0

! Voir les tags (utile pour détecter les boucles)
show ip route 10.100.0.0 255.255.255.0
!  Tag 100, type extern 1
Vérifier la configuration
! Voir la config redistribute dans BGP
show running-config | section router bgp
show running-config | section router ospf

! Vérifier qu'une route-map s'applique correctement
show route-map BGP-TO-OSPF
!  route-map BGP-TO-OSPF, permit, sequence 10
!    Match clauses: ip address prefix-lists: BGP-PREFIXES
!    Set clauses: metric-type type-1 metric 50
!    Policy routing matches: 0 packets, 0 bytes

! Vérifier le prefix-list
show ip prefix-list

Pièges classiques CCIE

Piège 1 Redistribuer BGP → OSPF sans subnets

Sans le mot-clé subnets, OSPF ne redistribue que les routes classful (/8, /16, /24). En pratique, la quasi-totalité des routes BGP (VLSM) est silencieusement ignorée. Symptôme : redistribute bgp configuré mais aucune route O E1/E2 visible chez les voisins OSPF.

! ❌ INCORRECT — routes VLSM ignorées
redistribute bgp 65001

! ✓ CORRECT
redistribute bgp 65001 subnets
Piège 2 BGP → EIGRP sans seed metric

EIGRP ne peut pas calculer sa métrique composite sans les 5 paramètres (BW, delay, reliability, load, MTU). Sans seed metric, les routes sont acceptées par EIGRP mais jamais installées. Aucun message d'erreur — elles disparaissent silencieusement.

! ❌ INCORRECT — routes perdues silencieusement
redistribute bgp 65001

! ✓ CORRECT
redistribute bgp 65001 metric 10000 100 255 1 1500
Piège 3 Boucle de redistribution BGP ↔ OSPF

Un ASBR redistribue OSPF → BGP et BGP → OSPF. Si un deuxième ASBR fait la même chose, les routes peuvent "revenir" dans BGP depuis OSPF, créant des boucles ou des instabilités. Utiliser des tags pour identifier et filtrer les routes déjà redistribuées.

! ── ASBR — redistribution OSPF → BGP avec tag
route-map OSPF-TO-BGP permit 10
  match tag 0              ! accepter uniquement les routes sans tag BGP

! ── ASBR — redistribution BGP → OSPF avec tag
route-map BGP-TO-OSPF permit 10
  set tag 100              ! tagger les routes BGP redistribuées dans OSPF

! ── Bloquer les routes taguées de revenir dans BGP
route-map OSPF-TO-BGP deny 5
  match tag 100             ! rejeter les routes qui ont le tag BGP
route-map OSPF-TO-BGP permit 10
  ! tout le reste passe
Piège 4 bgp redistribute-internal oublié

Par défaut, redistribute dans BGP ne redistribue pas les routes apprises via iBGP. Si vous voulez redistribuer des routes iBGP dans un IGP, il faut activer bgp redistribute-internal.

router bgp 65001
  bgp redistribute-internal     ! permet de redistribuer les routes iBGP
  address-family ipv4 unicast
    redistribute ospf 1           ! maintenant inclut aussi les routes iBGP
À utiliser avec précaution : activer bgp redistribute-internal peut injecter des milliers de routes iBGP dans l'IGP. Toujours combiner avec une route-map de filtrage.
Piège 5 Origin ? et impact sur best-path

Deux chemins vers le même préfixe : un appris via eBGP (origin i) et un redistribué localement (origin ?). Si tous les critères #1 à #4 sont égaux, le chemin avec origin i sera préféré au critère #5. Une route redistribuée ne sera jamais préférée à une route reçue via eBGP avec origin i.

! Fix : forcer l'origin à igp sur les routes redistribuées
route-map OSPF-TO-BGP permit 10
  set origin igp

Flash Cards — Redistribution BGP

Origin
Quelle origin pour network ?
Cliquer pour révéler
Réponse
i (IGP)
La commande network injecte une route avec origin i. C'est le code le plus propre, préféré au critère #5 sur e et ?.
Origin
Quelle origin pour redistribute ?
Cliquer pour révéler
Réponse
? (incomplete)
Toute route injectée via redistribute a l'origin ?. Moins préférée que i au critère #5. Peut être changée avec set origin igp dans une route-map.
OSPF
Mot-clé indispensable : redistribute bgp X dans OSPF ?
Cliquer pour révéler
Réponse
subnets
Sans subnets, seules les routes classful sont redistribuées. En pratique, presque rien ne passe. Toujours ajouter subnets.
EIGRP
Que faut-il obligatoirement fournir pour redistribute bgp dans EIGRP ?
Cliquer pour révéler
Réponse
Seed metric
EIGRP ne peut pas calculer sa métrique sans les 5 paramètres : BW, delay, reliability, load, MTU. Sans seed metric, les routes sont ignorées silencieusement.
Default route
Comment propager une default route BGP dans OSPF ?
Cliquer pour révéler
Réponse
default-information originate
Sous router ospf, la commande default-information originate injecte une route par défaut si 0.0.0.0/0 existe dans la RIB. Avec always, elle est injectée inconditionnellement.
iBGP
Comment redistribuer des routes iBGP dans un IGP ?
Cliquer pour révéler
Réponse
bgp redistribute-internal
Par défaut, redistribute ignore les routes iBGP. Il faut activer bgp redistribute-internal dans le processus BGP. À utiliser avec un filtre — sinon toute la table iBGP entre dans l'IGP.
MED
Comment propager la metric OSPF comme MED BGP ?
Cliquer pour révéler
Réponse
redistribute ospf 1 metric 0
Le mot-clé metric 0 dans la redistribution OSPF→BGP indique à BGP d'utiliser la métrique OSPF comme valeur MED. Permet aux peers eBGP de choisir le meilleur point d'entrée.
Boucle
Comment éviter une boucle BGP ↔ OSPF avec deux ASBRs ?
Cliquer pour révéler
Réponse
Tags + route-map deny
Tagger les routes lors de BGP→OSPF (set tag 100), puis dans OSPF→BGP rejeter les routes qui portent ce tag (match tag 100 → deny). Empêche les routes BGP de revenir dans BGP via OSPF.

Référence des commandes

Injection dans BGP
network X.X.X.X mask Y.Y.Y.Y
Injecte un préfixe dans BGP si présent dans la RIB. Origin = i. Méthode propre recommandée.
redistribute ospf [pid] [match ...]
Redistribue les routes OSPF dans BGP. Origin = ?. Options : match internal, match external 1, match external 2.
redistribute eigrp [asn]
Redistribue les routes EIGRP dans BGP. Origin = ?. Pas de seed metric requis du côté BGP.
redistribute static [route-map RM]
Redistribue les routes statiques dans BGP. Origin = ?. Toujours filtrer avec route-map.
redistribute connected [route-map RM]
Redistribue les routes directement connectées. Attention : injecte toutes les interfaces actives.
bgp redistribute-internal
Permet de redistribuer les routes apprises via iBGP dans un IGP. Désactivé par défaut.
Redistribution BGP → IGP
redistribute bgp [asn] subnets
Redistribue BGP dans OSPF. subnets obligatoire pour VLSM. Ajouter metric-type 1 pour E1 (recommandé avec plusieurs ASBRs).
redistribute bgp [asn] metric BW D R L MTU
Redistribue BGP dans EIGRP. Seed metric obligatoire : BW (kbps), Delay (μs×10), Reliability (255=100%), Load (1=min), MTU.
default-information originate [always]
Injecte une default route dans OSPF/IS-IS. Sans always : nécessite 0.0.0.0/0 dans la RIB.
Manipulation des attributs
set origin igp | incomplete
Force la valeur Origin dans une route-map. Permet de "nettoyer" l'origin d'une route redistribuée.
set metric [valeur]
Dans une route-map BGP→IGP : fixe la métrique de la route redistribuée. Dans IGP→BGP : devient le MED.
set metric-type type-1 | type-2
Dans une route-map BGP→OSPF : définit si la route externe est E1 (cumulative) ou E2 (fixe).
set tag [valeur]
Tag numérique pour identifier les routes redistribuées. Utilisé pour éviter les boucles de redistribution.
match tag [valeur]
Filtre les routes par tag dans une route-map. Permet de bloquer les routes déjà redistribuées.
Vérification
show ip bgp
Table BGP complète. Observer la colonne Path pour l'origin (i, e, ?) et la colonne Metric pour le MED.
show ip bgp regexp \?
Affiche uniquement les routes avec origin incomplete — toutes les routes redistribuées.
show ip ospf database external
LSA type 5 générés par l'ASBR pour les routes redistribuées dans OSPF depuis BGP.
show ip route ospf | include E1|E2
Routes OSPF externes visibles sur les routeurs voisins de l'ASBR.
show ip eigrp topology | include D EX
Routes EIGRP externes — confirme que la redistribution BGP→EIGRP fonctionne.