Well-known Mandatory · type 3 Préalable absolu RFC 4271 · §4.3 & §5.1.3

NEXT_HOP — Préalable absolu à la validité d'une route

Attribut type 3, Well-known Mandatory. Contient l'adresse IP du prochain saut vers le préfixe. Si le NEXT_HOP n'est pas joignable dans la table de routage, la route BGP est invalide et n'est jamais installée dans la RIB ni propagée.

Rôle et profil

NEXT_HOP est l'attribut BGP qui indique l'adresse IP du routeur vers lequel envoyer le trafic pour atteindre le préfixe annoncé. C'est un préalable absolu : avant même d'évaluer les critères de sélection du meilleur chemin, BGP vérifie que le NEXT_HOP est joignable. Un NEXT_HOP injoignable rend la route invalide — elle n'entre pas dans l'algorithme de sélection.

Type
3
Catégorie
Well-known Mandatory
Flags wire
0x40 (Transitive)
Taille
4 octets (IPv4) · 16 octets (IPv6)
NH local
0.0.0.0 = route originée localement
Préalable
NH injoignable → route invalide
IPv6 (MP-BGP)
MP_REACH_NLRI — pas NEXT_HOP type 3
Modifié par iBGP ?
Non par défaut — sauf next-hop-self
Préalable absolu — Logique de validation
1
BGP reçoit un UPDATE avec un préfixe et un NEXT_HOP.
2
Vérification de joignabilité : BGP cherche une route vers l'adresse NEXT_HOP dans la table de routage IP (RIB/FIB).
NH joignable → route marquée valid → entre dans l'algorithme de sélection du meilleur chemin.
NH injoignable → route marquée invalid → non installée dans la RIB → non propagée aux peers.
🚨
Conséquence fréquente iBGP : Un routeur iBGP reçoit une route eBGP dont le NEXT_HOP est l'adresse du peer eBGP distant. Si cette adresse n'est pas annoncée dans l'IGP, la route est invalide sur tous les routeurs iBGP qui ne voient pas ce NEXT_HOP. Solution : next-hop-self sur le routeur de bordure.
NEXT_HOP = 0.0.0.0

Une adresse NEXT_HOP de 0.0.0.0 signifie que la route a été originée localement par ce routeur, via network, aggregate-address, ou redistribute. Elle est toujours considérée comme valid.

# show ip bgp — route locale vs route apprise
   Network          Next Hop          Metric LocPrf Weight Path
*> 10.0.0.0/8       0.0.0.0                0         32768 i   ← originée localement (network)
*> 172.16.0.0/12    192.0.2.1             0    100      0 65100 i ← apprise via eBGP
*  172.16.0.0/12    203.0.113.5           0    100      0 65200 i ← invalid si 203.0.113.5 injoignable
NEXT_HOP dans show ip bgp — Interprétation
Valeur NEXT_HOPSignificationValid ?
0.0.0.0 Route originée localement Toujours valid
192.0.2.1 (dans IGP) NEXT_HOP joignable via IGP ou statique Valid ✓
203.0.113.5 (absent de la RIB) NEXT_HOP injoignable Invalid ✗ — non installée
10.0.0.1 (peer eBGP, non dans IGP) Problème iBGP classique — next-hop-self manquant Invalid sur routeurs iBGP ✗
Les 4 règles fondamentales de NEXT_HOP
eBGP → eBGP Règle 1 — Envoi vers un peer eBGP

Lorsqu'un routeur envoie une route à un peer eBGP, il met le NEXT_HOP à sa propre adresse IP sur l'interface vers ce peer (l'adresse source de la session eBGP).

R1 (AS100) ──[10.0.12.1/10.0.12.2]── R2 (AS200) R1 annonce 192.168.0.0/24 à R2 : → NEXT_HOP = 10.0.12.1 (adresse de R1 vers R2)
eBGP → iBGP Règle 2 — Propagation interne après réception eBGP

Lorsqu'un routeur de bordure (ASBR) reçoit une route via eBGP et la propage à ses peers iBGP, il conserve le NEXT_HOP eBGP d'origine — il ne met pas sa propre adresse. Les peers iBGP reçoivent donc le NEXT_HOP du peer eBGP externe.

Problème résultant

Les routeurs iBGP internes doivent avoir une route IGP vers le NEXT_HOP eBGP (ex: 10.0.12.1). Si ce subnet n'est pas redistribué dans l'IGP → route invalide sur tous les iBGP.

Solution

Redistribuer les subnets eBGP dans l'IGP, OU configurer next-hop-self sur l'ASBR pour remplacer le NH par sa propre adresse loopback.

iBGP → iBGP Règle 3 — Propagation iBGP à iBGP

Un routeur qui propage une route reçue via iBGP à un autre peer iBGP ne modifie pas le NEXT_HOP. Il reste celui fixé lors de la première propagation (règle 2). Cette règle est cohérente avec la rule split-horizon iBGP.

iBGP → eBGP Règle 4 — Envoi eBGP depuis un routeur interne

Quand un routeur de sortie propage une route iBGP vers un peer eBGP, il met sa propre adresse comme NEXT_HOP (adresse de l'interface vers le peer eBGP), comme en règle 1.

Topologie complète — Suivi du NEXT_HOP
AS100 AS200 AS300 CE-A R1 (ASBR) R2 (internal) R3 (ASBR) CE-B 10.0.0.1 ─eBGP─ 10.0.12.2|10.0.12.1 ──iBGP── 10.0.23.1|10.0.23.2 ─eBGP─ 10.0.34.1 Route annoncée : 192.168.0.0/24 par CE-A (AS100)
CE-A → R1
eBGP · Règle 1
↳ CE-A envoie UPDATE, met sa propre IP comme NH
NEXT_HOP = 10.0.0.1 (adresse CE-A)
✓ Valid sur R1 — subnet 10.0.0.x connu localement
R1 → R2
iBGP · Règle 2 — NH inchangé
↳ R1 propage en iBGP — conserve le NH eBGP d'origine
NEXT_HOP = 10.0.0.1 (toujours CE-A !)
⚠️ R2 doit avoir une route vers 10.0.0.1 dans l'IGP, sinon route invalide
R2 → R3
iBGP · Règle 3 — NH inchangé
↳ R2 propage en iBGP — NH toujours inchangé
NEXT_HOP = 10.0.0.1
⚠️ Même problème — R3 doit voir 10.0.0.1 via IGP
R3 → CE-B
eBGP · Règle 4
↳ R3 envoie vers eBGP — met sa propre adresse comme NH
NEXT_HOP = 10.0.23.1 (adresse R3 vers CE-B)
✓ CE-B voit R3 directement — route valid
Résumé des règles NEXT_HOP
Sens de propagationNEXT_HOP mis àModifiable ?
Envoi eBGP sortant Propre adresse IP (interface vers le peer) Via route-map set ip next-hop
Propagation iBGP (reçu depuis eBGP) NH eBGP d'origine — inchangé Via next-hop-self
Propagation iBGP → iBGP Inchangé Via next-hop-self sur chaque hop
Route originée localement 0.0.0.0 Non applicable
Problème résolu

Sans next-hop-self, un routeur iBGP qui reçoit une route eBGP voit le NEXT_HOP comme l'adresse du peer eBGP externe. Si ce subnet eBGP n'est pas annoncé dans l'IGP interne, tous les routeurs iBGP marquent cette route comme invalide.

Internet (AS100) | 10.0.12.1 (peer eBGP) | R-ASBR (AS200) ← ASBR, loopback 2.2.2.2 | iBGP full-mesh / \ R2 R3 ← R2 et R3 ne voient pas 10.0.12.1 dans l'IGP

Sans next-hop-self

R2# show ip bgp 192.168.0.0
 NEXT_HOP: 10.0.12.1
 inaccessible — route INVALID
 (10.0.12.1 absent de l'IGP)

Avec next-hop-self sur ASBR

R2# show ip bgp 192.168.0.0
 NEXT_HOP: 2.2.2.2 (loopback ASBR)
 accessible via IGP — route VALID
Configuration
! R-ASBR (AS200) — peer iBGP internes R2 et R3
router bgp 200
  ! Session eBGP vers AS100 (inchangée)
  neighbor 10.0.12.1 remote-as 100

  ! Sessions iBGP — next-hop-self pour forcer NH = loopback ASBR
  neighbor 2.2.2.2 remote-as 200
  neighbor 2.2.2.2 update-source Loopback0
  neighbor 2.2.2.2 next-hop-self

  neighbor 3.3.3.3 remote-as 200
  neighbor 3.3.3.3 update-source Loopback0
  neighbor 3.3.3.3 next-hop-self

! Vérification — NH modifié dans les UPDATEs envoyés
show ip bgp neighbors 2.2.2.2 advertised-routes
! → NEXT_HOP doit afficher l'adresse loopback de l'ASBR
next-hop-self all — Cas Route Reflector

Par défaut, next-hop-self ne s'applique qu'aux routes reçues via eBGP. Les routes déjà apprises via iBGP et réfléchies par un Route Reflector conservent leur NEXT_HOP original. Pour forcer le NH même sur les routes iBGP réfléchies, utiliser next-hop-self all.

! Route Reflector — forcer next-hop-self sur TOUTES les routes (eBGP + iBGP réfléchies)
router bgp 200
  neighbor CLIENT-GROUP next-hop-self all

! "next-hop-self" seul = routes eBGP uniquement
! "next-hop-self all" = routes eBGP + routes iBGP réfléchies
ℹ️
next-hop-self all est particulièrement utile dans les topologies Hub-and-Spoke iBGP ou quand le Route Reflector est sur le chemin de données et doit être le NEXT_HOP pour tous ses clients.
Cas d'usage — Quand utiliser next-hop-self
Situationnext-hop-self requis ?Raison
ASBR redistribuant routes eBGP vers iBGP full-mesh Oui — recommandé NH eBGP non annoncé dans l'IGP → invalide sur iBGP
Route Reflector réfléchissant routes eBGP Oui — next-hop-self all Clients RR ne voient pas le NH eBGP distant
MPLS L3VPN — PE vers CE Généralement non nécessaire NH résolu via MPLS/LDP, pas via IGP classique
eBGP direct entre deux AS voisins Non nécessaire NH est l'adresse du peer direct — toujours joignable
eBGP multi-hop (loopback peering) Selon topologie NH peut être une loopback non annoncée dans IGP du pair
Comportement par défaut vs next-hop-unchanged

Par défaut, lors d'un envoi eBGP, le routeur toujours remplace le NEXT_HOP par sa propre adresse (règle 1). La commande next-hop-unchanged supprime ce comportement et laisse le NEXT_HOP original intact lors de l'envoi eBGP.

Comportement eBGP par défaut

R-PE envoie à eBGP peer → remplace NH par sa propre adresse.

NH reçu par le peer eBGP
10.0.PE.1 ← adresse PE (NH remplacé)

Avec next-hop-unchanged

R-PE envoie à eBGP peer → NH d'origine préservé.

NH reçu par le peer eBGP
10.0.CE.1 ← NH original conservé
Use cases principaux
MPLS L3VPN PE-to-PE — Préserver le NH du CE

Dans certaines architectures MPLS, le NH transporté dans les routes VPNv4 doit rester celui du PE d'ingress (ou du CE source) pour que le forwarding MPLS fonctionne correctement à travers le core. next-hop-unchanged empêche le PE d'egress de remplacer ce NH.

eBGP Confédération — Propagation transparente

Dans une confédération BGP, les sous-AS échangent des routes en eBGP interne. Pour éviter que chaque sous-AS remplace le NH à chaque frontière interne, next-hop-unchanged permet de propager le NH original du CE source jusqu'au PE d'egress sans modification.

Route Server Internet Exchange Point (IXP)

Les route servers des IXP utilisent next-hop-unchanged pour que les membres de l'IXP reçoivent le NH du pair réel (et non du route server). Cela permet le forwarding direct entre membres sans passer par le route server.

Configuration
! Route Server à un IXP — propager le NH du peer réel
router bgp 65000
  neighbor MEMBER-GROUP peer-group
  neighbor MEMBER-GROUP next-hop-unchanged

! PE MPLS — préserver NH lors d'envoi VPNv4 entre PE
router bgp 100
  address-family vpnv4
    neighbor PE2-LOOPBACK next-hop-unchanged
    neighbor PE2-LOOPBACK activate
next-hop-self vs next-hop-unchanged — Opposition directe
Commande Effet sur le NEXT_HOP Direction Use case
next-hop-self Remplace le NH par l'adresse locale Outbound iBGP ASBR, Route Reflector — rendre NH joignable côté iBGP
next-hop-self all Remplace NH même pour routes iBGP réfléchies Outbound iBGP (RR) Route Reflector agissant aussi comme NH
next-hop-unchanged Préserve le NH original (ne pas remplacer) Outbound eBGP IXP route servers, MPLS L3VPN, confédérations
BGP Scanner — Vérification périodique du NH

BGP maintient la validité des routes en vérifiant périodiquement que les NEXT_HOPs sont toujours joignables dans la RIB. Ce processus s'appelle le BGP Scanner. Par défaut, il tourne toutes les 60 secondes — ce qui signifie qu'une route peut rester installée jusqu'à 60 s après la perte du NH.

Cycle BGP Scanner (défaut = 60 s)
t=0 : scan
NH joignable ?
Valid → RIB
/
Invalid → retiré
t=60 : scan
NH Tracking — Détection événementielle (IOS-XE)

Depuis IOS-XE, BGP peut réagir immédiatement aux changements de la RIB (ajout/suppression d'une route vers un NH) sans attendre le prochain cycle du scanner. C'est le BGP Next-hop Address Tracking, activé par défaut sur IOS-XE.

! IOS-XE — NH tracking activé par défaut
! Délai de réaction configurable (défaut = 5 secondes)
router bgp 200
  bgp nexthop trigger delay 5     ! délai en secondes avant réaction (défaut : 5)
  bgp nexthop trigger enable       ! activer si non actif par défaut

! Désactiver le scanner périodique si tracking événementiel actif
no bgp scan-time                  ! IOS classique
bgp scan-time 15                  ! ou réduire à 15 s (min = 5 s)

! Vérification du tracking
show ip bgp nexthop              ! liste tous les NH et leur statut
show ip bgp nexthop detail       ! détail + timer de revalidation
show ip bgp nexthop — Lecture
# show ip bgp nexthop
BGP nexthop path by IP address, as known to: base
Address         RIB-State  NH-State  Resolved via  Metric  Last update
10.0.12.1       reachable  valid     connected     0       00:02:13
10.0.23.1       reachable  valid     ospf          20      00:01:45
192.0.2.100     not found  invalid   --            --      00:00:08  ← NH injoignable !

# Colonnes importantes :
# RIB-State  : "reachable" = NH présent dans la RIB
# NH-State   : "valid" = routes utilisant ce NH sont valides
# Resolved via: via quelle source de routage le NH est atteint
BGP Scanner vs NH Tracking — Comparaison
MécanismeDéclenchementDélai réactionConfig
BGP Scanner Périodique (timer) Jusqu'à 60 s bgp scan-time <5-60> · défaut 60 s
NH Tracking Événementiel (changement RIB) 5 s par défaut bgp nexthop trigger delay <sec> · IOS-XE
En production, combiner les deux : NH Tracking pour la réactivité immédiate, BGP Scanner comme filet de sécurité avec un timer réduit (bgp scan-time 15).

⚠️ Piège 1 — Un ASBR modifie le NEXT_HOP lors de la propagation iBGP

Faux par défaut. L'ASBR conserve le NEXT_HOP eBGP d'origine lors de la propagation iBGP (règle 2). C'est précisément le problème que résout next-hop-self. Sans cette commande, les routeurs iBGP internes reçoivent un NH qu'ils ne peuvent pas résoudre.

⚠️ Piège 2 — next-hop-self s'applique aussi aux routes reçues en iBGP et réfléchies

Faux avec la commande basique. next-hop-self seul ne touche que les routes reçues via eBGP. Pour forcer le NH même sur les routes iBGP réfléchies par un Route Reflector, il faut next-hop-self all.

⚠️ Piège 3 — next-hop-unchanged s'utilise sur les sessions iBGP

Faux. next-hop-unchanged s'utilise sur les sessions eBGP pour empêcher le remplacement par défaut du NH lors d'un envoi eBGP. Sur iBGP, le NH n'est pas modifié par défaut — la commande n'a donc pas de sens dans ce sens-là.

⚠️ Piège 4 — NEXT_HOP = 0.0.0.0 indique une route invalide

Faux. 0.0.0.0 signifie que la route a été originée localement (via network, aggregate-address ou redistribute). Elle est toujours considérée comme valid — c'est le seul cas où BGP ne vérifie pas la joignabilité du NH.

⚠️ Piège 5 — Le BGP Scanner détecte immédiatement une perte de NH

Faux. Le BGP Scanner est périodique (défaut 60 s). Une route peut rester installée dans la RIB jusqu'à 60 s après la disparition du NH, ce qui représente un black-hole potentiel. Le NH Tracking événementiel (IOS-XE) réduit ce délai à ~5 s.

⚠️ Piège 6 — En IPv6, le NEXT_HOP est transporté dans l'attribut NEXT_HOP type 3

Faux. En IPv6 (MP-BGP), le NEXT_HOP est encodé dans l'attribut MP_REACH_NLRI (type 14), pas dans le NEXT_HOP type 3. L'attribut type 3 est spécifique à IPv4. C'est une distinction fréquemment testée au CCIE.

📌 Point d'attention — Le critère NEXT_HOP est évalué AVANT l'algorithme de sélection

La joignabilité du NEXT_HOP est vérifiée avant même d'entrer dans l'algorithme W·L·L·A·O·M·E·I·A·O·R·C·N. Une route avec un NH injoignable est exclue de tout le processus de sélection — elle n'est pas comparée aux autres chemins.

📌 Point d'attention — next-hop-self modifie les UPDATEs envoyés, pas la table locale

Comme remove-private-as, next-hop-self est un filtre outbound. La table BGP locale de l'ASBR conserve le NH eBGP d'origine. C'est seulement dans les UPDATEs envoyés aux peers iBGP que le NH est remplacé par l'adresse locale.

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

Quel est le type de l'attribut NEXT_HOP et sa catégorie ?
Type 3, catégorie Well-known Mandatory. Il doit être présent dans tout UPDATE BGP portant un préfixe IPv4. Flags wire : 0x40 (Transitive).
RFC 4271 §4.3
Que signifie NEXT_HOP = 0.0.0.0 dans show ip bgp ?
La route a été originée localement par ce routeur (via network, aggregate-address, ou redistribute). Cette valeur est toujours considérée comme valid — BGP ne vérifie pas sa joignabilité.
Route locale = NH 0.0.0.0
Quel est le problème classique avec NEXT_HOP et iBGP, et comment le résoudre ?
Un ASBR propage une route eBGP en iBGP en conservant le NH eBGP d'origine (ex: 10.0.12.1). Ce subnet n'est pas dans l'IGP interne → tous les routeurs iBGP marquent la route invalid. Solution : neighbor X next-hop-self sur l'ASBR pour remplacer le NH par sa propre adresse (loopback).
Règle 2 + next-hop-self
Quelle différence entre next-hop-self et next-hop-self all ?
next-hop-self : remplace le NH uniquement pour les routes apprises via eBGP. next-hop-self all : remplace le NH pour toutes les routes, y compris celles apprises via iBGP (ex: routes réfléchies par un Route Reflector).
all = eBGP + iBGP réfléchies
Dans quel cas utilise-t-on next-hop-unchanged et sur quel type de session ?
Sur des sessions eBGP pour empêcher le remplacement automatique du NH. Cas d'usage : IXP route servers (les membres doivent voir le NH du pair réel), MPLS L3VPN PE-to-PE, confédérations BGP.
eBGP outbound — NH préservé
Quand le NEXT_HOP est-il évalué dans l'algorithme BGP ?
Avant l'algorithme de sélection W·L·L·A·O·M·E·I·A·O·R·C·N. Si le NH est injoignable, la route est exclue de tout le processus — elle n'entre même pas dans la comparaison avec les autres chemins.
Préalable absolu — avant critère #1
En IPv6/MP-BGP, le NEXT_HOP est-il dans l'attribut type 3 ?
Non. En IPv6, le NEXT_HOP est encodé dans l'attribut MP_REACH_NLRI (type 14). L'attribut NEXT_HOP type 3 est spécifique à l'AFI IPv4 unicast.
MP_REACH_NLRI type 14 pour IPv6
Quel est le délai de détection d'un NH injoignable avec le BGP Scanner par défaut ?
Jusqu'à 60 secondes (timer par défaut). Le BGP Scanner vérifie périodiquement la joignabilité des NH. Le NH Tracking événementiel (IOS-XE) réduit ce délai à ~5 s (bgp nexthop trigger delay 5).
Scanner 60 s vs NH Tracking 5 s
Quelle commande affiche les NEXT_HOPs BGP et leur statut de joignabilité ?
show ip bgp nexthop — liste tous les NH avec leur RIB-State (reachable/not found), NH-State (valid/invalid), et la source de routage via laquelle le NH est résolu.
show ip bgp nexthop [detail]
Un routeur iBGP qui propage une route vers un autre peer iBGP modifie-t-il le NEXT_HOP ?
Non. Par défaut, iBGP → iBGP conserve le NEXT_HOP tel quel (règle 3). Le NH ne peut être modifié que par next-hop-self explicite ou par une route-map set ip next-hop outbound.
Règle 3 — iBGP ne touche pas le NH
Aller plus loin
🔗
AS_PATH
Attribut type 2, prepending, regex
📍
LOCAL_PREF
Critère #2 · Well-known Discretionary
🧹
remove-private-as & AS_OVERRIDE
Manipulation AS_PATH · ISP & MPLS VPN
🏠
Accueil BGP
Tous les attributs et critères