Messages d’erreur BGP
Comprendre la gestion des erreurs pour les messages de mise à jour BGP
Un message BGP est considéré comme mal formé lorsque l’un des attributs de message est mal formé. Lorsqu’un routeur participant à une session BGP reçoit un message de mise à jour mal formé, l’intégralité de la session est réinitialisée par défaut. Cela n’est pas souhaitable, car les messages de mise à jour avec des itinéraires valides sont également affectés. Pour éviter ce comportement indésirable, la gestion des erreurs pour les messages de mise à jour BGP doit être modifiée.
Pour configurer la gestion des erreurs pour les messages de mise à jour BGP, configurez l’instruction bgp-error-tolerance
au niveau , ou [edit protocols bgp group group-name neighbor address]
de la [edit protocols bgp]
[edit protocols bgp group group-name]
hiérarchie.
bgp-error-tolerance { malformed-route-limit number; malformed-update-log-interval seconds; no-malformed-route-limit; }
Si un attribut contient des indicateurs d’attribut qui entrent en conflit avec la valeur du champ Type d’attribut, les indicateurs d’attribut sont réinitialisés à la valeur correcte et le message de mise à jour est traité. La valeur du bit Extended Length dans les indicateurs d’attribut reste inchangée, car elle définit si la longueur de l’attribut est d’un ou deux octets. Par conséquent, la valeur de l’indicateur d’attribut affecte la façon dont le paquet de mise à jour BGP est analysé.
Il n’y a pas de spécification explicite de la valeur de l’indicateur d’attribut pour les attributs path.
À partir de Junos OS version 24.2R1, la gestion des erreurs BGP est activée par défaut. Vous pouvez toujours configurer des sous-options telles que , malformed-route-limit
, malformed-update-log-interval
et no-malformed-route-limit
sous cette instruction de configuration. Notez que si vous supprimez l’instruction bgp-error-tolerance
, la fonctionnalité reste activée et les sous-options sont réinitialisées à leurs valeurs par défaut.
Les messages de mise à jour mal formés sont traités au cas par cas, en fonction des valeurs des attributs contenus dans les messages. Il existe trois façons de gérer les messages de mise à jour BGP mal formés, répertoriées par ordre décroissant de gravité.
Notification message approach: l’erreur de message mal formé est consignée localement, un message de mise à jour du code d’erreur est envoyé à l’administration de l’homologue et l’intégralité de la session BGP est réinitialisée.
Cette approche est choisie dans les cas suivants :
Le message de mise à jour BGP contient l’attribut MP reach ou l’attribut MP unreache.
Le champ NLRI ou le message de mise à jour BGP ne peut pas être analysé correctement en raison d’une incompatibilité entre la longueur de l’attribut et la valeur du champ de longueur de l’attribut.
Treat-as-withdraw approach—Toutes les routes comprises dans le message de mise à jour mal formé sont traitées comme des routes masquées, sauf si l’instruction
keep none
est configurée, auquel cas les routes sont ignorées. En l’absence de l’instructionkeep none
, le nombre de routes masquées mal formées est configuré avec une limite qui, lorsqu’elle est dépassée, ignore les routes et empêche toute autre route mal formée d’être masquée. Junos OS supprime les routes mal formées nouvellement reçues lorsque la limite de routes mal formées est atteinte.Attribute discard approach: les attributs mal formés dans le message de mise à jour sont ignorés ; Cependant, le message est traité. Nous vous déconseillons d’utiliser cette approche si les attributs à ignorer peuvent affecter la sélection ou l’installation de l’itinéraire.
REMARQUE :Si un attribut apparaît plus d’une fois dans un message de mise à jour, toutes les occurrences de l’attribut, à l’exception de la première, seront ignorées et le message sera traité.
Les messages de mise à jour BGP sont analysés à la recherche des attributs suivants et sont traités comme mal formés en fonction des valeurs de ces attributs :
-
The origin attribute—Traité par l’approche de traiter comme un retrait.
-
The AS path attribute—Traité par l’approche de traiter comme un retrait.
-
The AS 4 path attribute: géré par l’approche de rejet d’attribut.
-
The aggregator attribute: géré par l’approche de rejet d’attribut.
-
The aggregator 4 attribute: géré par l’approche de rejet d’attribut.
-
The next-hop attribute—Traité par l’approche de traiter comme un retrait.
-
The multiple exit discriminator attribute—Traité par l’approche de traiter comme un retrait.
-
The local preference attribute—Traité par l’approche de traiter comme un retrait.
-
The atomic aggregate attribute: géré par l’approche de rejet d’attribut.
-
The community attribute—Traité par l’approche de traiter comme un retrait.
-
The extended community attribute—Traité par l’approche de traiter comme un retrait.
-
The originator attribute—Traité par l’approche de traiter comme un retrait.
-
The cluster attribute—Traité par l’approche de traiter comme un retrait.
-
The PMSI attribute—Traité par l’approche de traiter comme un retrait.
-
The MP reach attribute: géré par l’approche du message de notification.
-
The MP unreach attribute: géré par l’approche du message de notification.
-
The attribute set attribute—Traité par l’approche de traiter comme un retrait.
-
The AIGP attribute—Traité par l’approche de traiter comme un retrait.
-
Unknown attribute: si l’indicateur BGP n’indique pas qu’il s’agit d’un attribut facultatif, cet attribut mal formé est traité par l’approche de message de notification.
Lorsqu’un message de mise à jour BGP contient plusieurs attributs mal formés, l’approche la plus sévère déclenchée par l’un d’entre eux est suivie.
Voici un exemple de sortie du message d’erreur BGP :
user@R1> show log messages Sep 18 17:54:13 R1 rpd[86600]: Received malformed update from 10.10.10.2 (External AS 64511) Sep 18 17:54:13 R1 rpd[86600]: Family inet-unicast, prefix 100.1.1.0/24 Sep 18 17:54:13 R1 rpd[86600]: Malformed Attribute ORIGIN(1) flag 0x40 length 1 error 6 (Unrecognized ORIGIN attribute). Sep 18 17:54:13 R1 rpd[86600]: Malformed Attribute LOCAL_PREF(5) flag 0x40 length 6 error 5 (Attribute length error).
Dans cet exemple, vous voyez les attributs origin (ORIGIN) et de préférence locale (LOCAL_PREF).
Voir également
Exemple : Configuration de la gestion des erreurs pour les messages de mise à jour BGP
Cet exemple montre comment configurer la gestion des erreurs BGP.
Conditions préalables
Avant de commencer :
Configurez les interfaces des routeurs.
Configurez un protocole IGP (Interior Gateway Protocol).
Configurez BGP.
Configurez les stratégies de routage.
Présentation
Lorsqu’un périphérique de routage reçoit un message de mise à jour avec un attribut mal formé, le routeur doit réinitialiser la session. Ceci est spécifié dans la RFC 4271, A Border Gateway Protocol 4 (BGP-4). Les réinitialisations de session ont un impact non seulement sur les routes avec l’attribut incriminé, mais également sur les autres routes valides échangées au cours de la session. De plus, ce comportement peut présenter une faille de sécurité potentielle dans le cas d’attributs transitifs optionnels. Afin de minimiser l’impact sur le routage des messages de mise à jour mal formés, le projet de draft-ietf-idr-error-handling-01.txt Internet, Gestion révisée des erreurs pour les messages de mise à jour BGP , spécifie les modifications à apporter à la gestion des messages de mise à jour BGP avec des attributs mal formés. La nouvelle gestion des erreurs permet de maintenir la session établie et de conserver les routes valides échangées, tout en supprimant les routes transportées dans le message UPDATE mal formé.
Topologie
En Figure 1, l’équipement R1 dispose d’une session d’appairage BGP interne avec l’équipement R0 et d’une session d’appairage BGP externe avec l’équipement R2.

Pour vous protéger contre les messages de mise à jour mal formés entraînant une instabilité du réseau, la gestion des erreurs BGP est configurée sur l’appareil R1, comme indiqué ci-dessous :
bgp-error-tolerance { malformed-update-log-interval 10; malformed-route-limit 5; }
Par défaut, un message BGP est considéré comme mal formé lorsque l’un des attributs de message est mal formé. Lorsqu’un routeur participant à une session BGP reçoit un message de mise à jour mal formé, l’intégralité de la session est réinitialisée. L’instruction bgp-error-tolerance
remplace ce comportement afin que la gestion des erreurs BGP suivante soit active :
En cas d’erreur fatale, Junos OS envoie un message de notification intitulé Message de mise à jour du code d’erreur et réinitialise la session BGP. Une erreur dans l’attribut MP_{UN}REACH est considérée comme fatale. La présence de plusieurs attributs MP_{UN}REACH dans une mise à jour BGP est également considérée comme une erreur fatale. Junos OS réinitialise la session BGP s’il ne parvient pas à analyser correctement le champ NLRI ou la mise à jour BGP. L’échec de l’analyse du paquet de mise à jour BGP peut se produire lorsque la longueur de l’attribut ne correspond pas à la longueur de la valeur de l’attribut.
Pour certaines erreurs non fatales, Junos OS traite toutes les routes contenues dans le message de mise à jour BGP mal formé comme des routes retirées et les installe comme masquées, sauf si l’instruction
keep none
est incluse dans BGP is configuration. Junos OS utilise cette approche de gestion des erreurs pour les cas impliquant l’un des attributs suivants : ORIGIN, AS_PATH, NEXT_HOP, MULTI_EXIT_DISC, LOCAL_PREF, ORIGINATOR, CLUSTER, ATTRSET, PMSI, Community et Extended Community. En outre, si l’un des attributs de chemin d’accès connus obligatoires est manquant, Junos OS considère la mise à jour BGP comme mal formée. Pour limiter l’utilisation de la mémoire de ces routes cachées mal formées, Junos OS arrête l’installation de nouvelles routes cachées mal formées une fois que le nombre maximal de ces routes cachées mal formées est atteint. Dans cet exemple, le nombre maximal est défini sur 5, à l’aide de l’instructionmalformed-route-limit
. La valeur par défaut est 1000. Si vous le souhaitez, vous pouvez autoriser un nombre illimité de routes masquées en raison d’attributs mal formés. Pour ce faire, incluez l’instructionno-malformed-route-limit
.Pour les autres erreurs non fatales, Junos OS ignore les attributs de chemin d’accès mal formés et continue de traiter le message de mise à jour BGP. Il n’est pas prudent d’utiliser cette approche sur les attributs de chemin qui pourraient affecter la sélection ou l’installation de l’itinéraire. Junos OS utilise cette approche de gestion des erreurs pour les cas impliquant l’un des attributs suivants : ATOMIC_AGGREGATE, AGGREGATOR, AGGREGATOR4 et AS4PATH.
Pour faciliter le dépannage des paquets mal formés, Junos OS consigne l’erreur en répertoriant le code de l’attribut de chemin mal formé, l’indicateur, la longueur, les informations sur l’homologue et la famille, ainsi que le premier préfixe de la mise à jour BGP mal formée. La journalisation des paquets mal formés peut ralentir les performances de Junos OS si un nombre important de paquets mal formés est reçu dans un court laps de temps. Pour limiter l’impact sur les performances, Junos OS implémente un algorithme permettant de consigner une mise à jour mal formée, de supprimer la journalisation pendant un intervalle et de consigner un résumé. Lorsque le minuteur de suppression de la journalisation expire, le logiciel consigne le nombre total d’attributs mal formés reçus au cours de l’intervalle. Dans cet exemple, le minuteur est défini sur 10 secondes, à l’aide de l’instruction malformed-update-log-interval
. La valeur par défaut est de 300 secondes (5 minutes).
Configuration rapide de l’interface de ligne de commande affiche la configuration de tous les périphériques dans Figure 1.
Cette section #d203e119__d203e310 décrit les étapes à suivre sur l’appareil R1.
Configuration
Configuration rapide de l’interface de ligne de commande
Pour configurer rapidement cet exemple, copiez les commandes suivantes, collez-les dans un fichier texte, supprimez les sauts de ligne, modifiez tous les détails nécessaires pour qu’ils correspondent à votre configuration réseau, puis copiez et collez les commandes dans l’interface de ligne de commande au niveau de la [edit]
hiérarchie.
Appareil R0
set interfaces fe-1/2/0 unit 0 description to-R1 set interfaces fe-1/2/0 unit 0 family inet address 172.16.10.5/30 set interfaces lo0 unit 0 family inet address 192.168.0.3/32 set protocols bgp group internal-peers type internal set protocols bgp group internal-peers local-address 192.168.0.3 set protocols bgp group internal-peers export local-direct set protocols bgp group internal-peers neighbor 192.168.0.1 set protocols ospf area 0.0.0.0 interface fe-1/2/0.0 set protocols ospf area 0.0.0.0 interface lo0.0 passive set policy-options policy-statement local-direct from protocol [local direct] set policy-options policy-statement local-direct then accept set routing-options autonomous-system 64510 set routing-options router-id 192.168.0.3
Appareil R1
set interfaces fe-1/2/1 unit 0 description to-R2 set interfaces fe-1/2/1 unit 0 family inet address 10.10.10.1/30 set interfaces fe-1/2/0 unit 0 description to-R0 set interfaces fe-1/2/0 unit 0 family inet address 172.16.10.6/30 set interfaces lo0 unit 0 family inet address 192.168.0.1/32 set protocols bgp bgp-error-tolerance malformed-update-log-interval 10 set protocols bgp bgp-error-tolerance malformed-route-limit 5 set protocols bgp group internal-peers type internal set protocols bgp group internal-peers local-address 192.168.0.1 set protocols bgp group internal-peers export local-direct set protocols bgp group internal-peers neighbor 192.168.0.3 set protocols bgp group external-peers type external set protocols bgp group external-peers export local-direct set protocols bgp group external-peers peer-as 64511 set protocols bgp group external-peers neighbor 10.10.10.2 set protocols ospf area 0.0.0.0 interface fe-1/2/1.0 set protocols ospf area 0.0.0.0 interface fe-1/2/0.0 set protocols ospf area 0.0.0.0 interface lo0.0 passive set policy-options policy-statement local-direct from protocol [local direct] set policy-options policy-statement local-direct then accept set routing-options autonomous-system 64510 set routing-options router-id 192.168.0.1
Appareil R2
set interfaces fe-1/2/1 unit 0 description to-R1 set interfaces fe-1/2/1 unit 0 family inet address 10.10.10.2/30 set interfaces lo0 unit 0 family inet address 192.168.0.2/32 set protocols bgp group external-peers type external set protocols bgp group external-peers export local-direct set protocols bgp group external-peers peer-as 64510 set protocols bgp group external-peers neighbor 10.10.10.1 set protocols ospf area 0.0.0.0 interface fe-1/2/1.0 set protocols ospf area 0.0.0.0 interface lo0.0 passive set policy-options policy-statement local-direct from protocol [local direct] set policy-options policy-statement local-direct then accept set routing-options autonomous-system 64511 set routing-options router-id 192.168.10.2
Procédure
Procédure étape par étape
L’exemple suivant vous oblige à naviguer à différents niveaux dans la hiérarchie de configuration. Pour plus d’informations sur la navigation dans l’interface de ligne de commande, reportez-vous à la section Utilisation de l’éditeur CLI en mode configuration du Guide de l’utilisateur de l’interface de ligne de commande Junos OS.
Pour configurer la gestion des erreurs BGP :
Configurez les interfaces des routeurs.
[edit interfaces] user@R1# set fe-1/2/1 unit 0 description to-R2 user@R1# set fe-1/2/1 unit 0 family inet address 10.10.10.1/30 user@R1# set fe-1/2/0 unit 0 description to-R0 user@R1# set fe-1/2/0 unit 0 family inet address 172.16.10.6/30 user@R1# set lo0 unit 0 family inet address 192.168.0.1/32
Configurez un Interior Gateway Protocol (IGP), tel qu’OSPF ou IS-IS.
[edit protocols ospf area 0.0.0.0] user@R1# set interface fe-1/2/1.0 user@R1# set interface fe-1/2/0.0 user@R1# set interface lo0.0 passive
Configurez le numéro du système autonome (AS) et l’ID du routeur.
[edit routing-options] user@R1# set autonomous-system 64510 user@R1# set router-id 192.168.0.1
Configurez la stratégie de routage.
[edit policy-options policy-statement local-direct] user@R1# set from protocol [local direct] user@R1# set then accept
Configurez la session EBGP.
[edit protocols bgp group external-peers] user@R1# set type external user@R1# set export local-direct user@R1# set peer-as 64511 user@R1# set neighbor 10.10.10.2
Configurez les sessions IBGP.
[edit protocols bgp group internal-peers] user@R1# set type internal user@R1# set local-address 192.168.0.1 user@R1# set export local-direct user@R1# set neighbor 192.168.0.3
Activez la tolérance d’erreur BGP.
[edit protocols bgp] user@R1# set bgp-error-tolerance
(Facultatif) Configurez l’intervalle de journalisation.
[edit protocols bgp bgp-error-tolerance] user@R1# set malformed-update-log-interval 10
(Facultatif) Configurez une limite pour le nombre de routes cachées à stocker.
[edit protocols bgp bgp-error-tolerance] user@R1# set malformed-route-limit 5
Résultats
En mode configuration, confirmez votre configuration en saisissant les show interfaces
commandes , show protocols
, show policy-options
, et show routing-options
. Si la sortie n’affiche pas la configuration prévue, répétez les instructions de cet exemple pour corriger la configuration.
user@R1# show interfaces
fe-1/2/0 {
unit 0 {
description to-R0;
family inet {
address 172.16.10.6/30;
}
}
}
fe-1/2/1 {
unit 0 {
description to-R2;
family inet {
address 10.10.10.1/30;
}
}
}
lo0 {
unit 0 {
family inet {
address 192.168.0.1/32;
}
}
}
user@R1# show protocols
bgp {
bgp-error-tolerance {
malformed-update-log-interval 10;
malformed-route-limit 5;
}
group internal-peers {
type internal;
local-address 192.168.0.1;
export local-direct;
neighbor 192.168.0.3;
}
group external-peers {
type external;
export local-direct;
peer-as 64511;
neighbor 10.10.10.2;
}
}
ospf {
area 0.0.0.0 {
interface fe-1/2/1.0;
interface fe-1/2/0.0;
interface lo0.0 {
passive;
}
}
}
user@R1# show policy-options
policy-statement local-direct {
from protocol [local direct];
then accept;
}
user@R1# show routing-options
router-id 192.168.0.1;
autonomous-system 64510;
Si vous avez terminé de configurer les périphériques, passez commit
en mode de configuration.
Vérification
Vérifiez que la configuration fonctionne correctement.
- Vérification des sessions BGP Neighbor
- Vérification des itinéraires cachés
- Vérification de la source des routes cachées
Vérification des sessions BGP Neighbor
But
Vérifiez que la tolérance d’erreur BGP est activée et affichez les compteurs associés aux attributs de chemin mal formés.
Action
user@R1# show bgp neighbor Peer: 10.10.10.2+50058 AS 64511 Local: 10.10.10.1+179 AS 64510 Type: External State: Established Flags: <Sync> Last State: OpenConfirm Last Event: RecvKeepAlive Last Error: None Export: [ local-direct ] Options: <Preference PeerAS Refresh> Holdtime: 90 Preference: 170 Number of flaps: 0 Malformed attributes log interval: 10 route limit: 5 Attribute: ORIGIN(1) Last Received: 0 Total Received: 3 Attribute: LOCAL_PREF(5) Last Received: 0 Total Received: 2 Peer ID: 192.168.10.2 Local ID: 192.168.10.1 Active Holdtime: 90 Keepalive Interval: 30 Group index: 0 Peer index: 0 BFD: disabled, down Local Interface: fe-1/2/1.0 NLRI for restart configured on peer: inet-unicast NLRI advertised by peer: inet-unicast NLRI for this session: inet-unicast Peer supports Refresh capability (2) Stale routes from peer are kept for: 300 Peer does not support Restarter functionality NLRI that restart is negotiated for: inet-unicast NLRI of received end-of-rib markers: inet-unicast NLRI of all end-of-rib markers sent: inet-unicast Peer supports 4 byte AS extension (peer-as 64511) Peer does not support Addpath Table inet.0 Bit: 10000 RIB State: BGP restart is complete Send state: in sync Active prefixes: 0 Received prefixes: 3 Accepted prefixes: 0 Suppressed due to damping: 0 Advertised prefixes: 2 Last traffic (seconds): Received 25 Sent 17 Checked 73 Input messages: Total 2702 Updates 10 Refreshes 0 Octets 51652 Output messages: Total 2701 Updates 6 Refreshes 0 Octets 51571 Output Queue[0]: 0 Peer: 192.168.10.3+179 AS 64510 Local: 192.168.10.1+51127 AS 64510 Type: Internal State: Established Flags: <Sync> Last State: OpenConfirm Last Event: RecvKeepAlive Last Error: None Export: [ local-direct ] Options: <Preference LocalAddress Refresh> Local Address: 192.168.10.1 Holdtime: 90 Preference: 170 Number of flaps: 0 Malformed attributes log interval: 10 route limit: 5 Peer ID: 192.168.10.3 Local ID: 192.168.10.1 Active Holdtime: 90 Keepalive Interval: 30 Group index: 1 Peer index: 0 BFD: disabled, down NLRI for restart configured on peer: inet-unicast NLRI advertised by peer: inet-unicast NLRI for this session: inet-unicast Peer supports Refresh capability (2) Stale routes from peer are kept for: 300 Peer does not support Restarter functionality NLRI that restart is negotiated for: inet-unicast NLRI of received end-of-rib markers: inet-unicast NLRI of all end-of-rib markers sent: inet-unicast Peer supports 4 byte AS extension (peer-as 64510) Peer does not support Addpath Table inet.0 Bit: 10001 RIB State: BGP restart is complete Send state: in sync Active prefixes: 0 Received prefixes: 3 Accepted prefixes: 0 Suppressed due to damping: 0 Advertised prefixes: 2 Last traffic (seconds): Received 5 Sent 24 Checked 51 Input messages: Total 417 Updates 3 Refreshes 0 Octets 8006 Output messages: Total 421 Updates 2 Refreshes 0 Octets 8136 Output Queue[0]: 0
Sens
Le champ Attributs mal formés indique que la tolérance d’erreur est activée. Les champs Intervalle de journalisation et Limite d’itinéraire affichent les valeurs configurées.
Les compteurs d’attributs montrent que sur la connexion EBGP, plusieurs attributs mal formés ont été reçus de l’appareil R2.
Vérification des itinéraires cachés
But
Affichez des informations sur les itinéraires masqués et découvrez pourquoi ils sont masqués.
Action
user@R1> show route hidden detail inet.0: 42 destinations, 45 routes (36 active, 0 holddown, 6 hidden) 10.0.0.0/32 (1 entry, 0 announced) BGP Next hop type: Router Address: 0x93d8b0c Next-hop reference count: 5 Source: 10.10.10.2 Next hop type: Router, Next hop index: 782 Next hop: via fe-1/2/1.0, selected Session Id: 0x1 State: <Hidden Ext> Local AS: 1 Peer AS: 1 Age: 5:32 Metric2: 1 Validation State: unverified Task: BGP_1.10.10.5.62+56218 AS path: I (MalformedAttr) Router ID: 192.168.0.2 10.0.0.1/32 (1 entry, 0 announced) BGP Next hop type: Router Address: 0x93d8b0c Next-hop reference count: 5 Source: 10.10.10.2 Next hop type: Router, Next hop index: 782 Next hop: via fe-1/2/1.0, selected Session Id: 0x1 Indirect next hop: 953c000 - INH Session ID: 0x3 State: <Hidden Int Ext> Local AS: 1 Peer AS: 1 Age: 5:32 Metric2: 1 Validation State: unverified Task: BGP_1.10.10.5.62+56218 AS path: I (MalformedAttr) Router ID: 192.168.0.2
Sens
Les routes cachées mal formées sont marquées avec MalformedAttr dans le champ Chemin AS.
Vous pouvez supprimer les routes cachées en exécutant la clear bgp neighbor 10.10.10.2 malformed-route
commande.
Vérification de la source des routes cachées
But
Affichez des informations sur les itinéraires masqués et découvrez pourquoi ils sont masqués.
Action
user@R1> show route receive-protocol bgp 10.10.10.2 detail hidden inet.0: 42 destinations, 45 routes (36 active, 0 holddown, 6 hidden) 10.0.0.0/32 (1 entry, 0 announced) Nexthop: 10.10.10.2 Localpref: 100 AS path: I (MalformedAttr) 10.0.0.1/32 (1 entry, 0 announced) Nexthop: 10.10.10.2 Localpref: 100 AS path: I (MalformedAttr)
Sens
Junos OS affiche MalformedAttr dans le champ Chemin d’accès AS de la sortie de la show route receive-protocol bgp 10.10.10.2 detail hidden
commande.
Vous pouvez supprimer les routes cachées en exécutant la clear bgp neighbor 10.10.10.2 malformed-route
commande.