Aller au contenu principal

5. Path Attributes (Attributs de chemin)

  1. Path Attributes (Attributs de chemin)

    Cette section traite des attributs de chemin du message UPDATE.

    Les attributs de chemin se divisent en quatre catégories distinctes:

    1. Well-known mandatory (Bien connus obligatoires)
    2. Well-known discretionary (Bien connus discrétionnaires)
    3. Optional transitive (Optionnels transitifs)
    4. Optional non-transitive (Optionnels non transitifs)

    Les implémentations BGP doivent (MUST) reconnaître tous les attributs bien connus. Certains de ces attributs sont obligatoires et doivent (MUST) être inclus dans chaque message UPDATE contenant NLRI. D'autres sont discrétionnaires et peuvent (MAY) ou ne peuvent pas être envoyés dans un message UPDATE particulier.

    Une fois qu'un pair BGP a mis à jour des attributs bien connus, il doit (MUST) transmettre ces attributs à ses pairs dans toutes les mises à jour qu'il transmet.

    En plus des attributs bien connus, chaque chemin peut (MAY) contenir un ou plusieurs attributs optionnels. Il n'est ni requis ni attendu que toutes les implémentations BGP prennent en charge tous les attributs optionnels. Le traitement d'un attribut optionnel non reconnu est déterminé par le paramétrage du bit Transitive dans l'octet des drapeaux d'attribut. Les chemins avec des attributs optionnels transitifs non reconnus devraient (SHOULD) être acceptés. Si un chemin avec un attribut optionnel transitif non reconnu est accepté et transmis à d'autres pairs BGP, alors l'attribut optionnel transitif non reconnu de ce chemin doit (MUST) être transmis, avec le chemin, aux autres pairs BGP avec le bit Partial dans l'octet Attribute Flags défini sur 1. Si un chemin avec un attribut optionnel transitif reconnu est accepté et transmis à d'autres pairs BGP et que le bit Partial dans l'octet Attribute Flags est défini sur 1 par un AS précédent, il ne doit (MUST) pas être remis à 0 par l'AS actuel. Les attributs optionnels non transitifs non reconnus doivent (MUST) être ignorés silencieusement et ne pas être transmis à d'autres pairs BGP.

    De nouveaux attributs optionnels transitifs peuvent (MAY) être attachés au chemin par l'initiateur ou par tout autre haut-parleur BGP dans le chemin. S'ils ne sont pas attachés par l'initiateur, le bit Partial dans l'octet Attribute Flags est défini sur 1. Les règles d'attachement de nouveaux attributs optionnels non transitifs dépendront de la nature de l'attribut spécifique. La documentation de chaque nouvel attribut optionnel non transitif devrait inclure de telles règles (la description de l'attribut MULTI_EXIT_DISC en donne un exemple). Tous les attributs optionnels (transitifs et non transitifs) peuvent (MAY) être mis à jour (si approprié) par les haut-parleurs BGP dans le chemin.

    L'émetteur d'un message UPDATE devrait (SHOULD) ordonner les attributs de chemin dans le message UPDATE par ordre croissant de type d'attribut. Le récepteur d'un message UPDATE doit (MUST) être préparé à gérer les attributs de chemin dans les messages UPDATE qui sont dans le désordre.

    Le même attribut (attribut du même type) ne peut pas apparaître plus d'une fois dans le champ Path Attributes d'un message UPDATE particulier.

    La catégorie obligatoire fait référence à un attribut qui doit (MUST) être présent dans les échanges IBGP et EBGP si NLRI est contenu dans le message UPDATE. Les attributs classés comme optionnels aux fins du mécanisme d'extension de protocole peuvent être purement discrétionnaires, discrétionnaires, requis ou interdits dans certains contextes.

    attribute EBGP IBGP ORIGIN mandatory mandatory AS_PATH mandatory mandatory NEXT_HOP mandatory mandatory MULTI_EXIT_DISC discretionary discretionary LOCAL_PREF see Section 5.1.5 required ATOMIC_AGGREGATE see Section 5.1.6 and 9.1.4 AGGREGATOR discretionary discretionary

5.1. Path Attribute Usage (Utilisation des attributs de chemin)

L'utilisation de chaque attribut de chemin BGP est décrite dans les clauses suivantes.

5.1.1. ORIGIN

ORIGIN est un attribut bien connu obligatoire. L'attribut ORIGIN est généré par le haut-parleur qui initie les informations de routage associées. Sa valeur ne devrait (SHOULD) pas être modifiée par un autre haut-parleur.

5.1.2. AS_PATH

AS_PATH est un attribut bien connu obligatoire. Cet attribut identifie les systèmes autonomes à travers lesquels les informations de routage transportées dans ce message UPDATE sont passées. Les composants de cette liste peuvent être des AS_SET ou des AS_SEQUENCE.

Lorsqu'un haut-parleur BGP propage une route qu'il a apprise du message UPDATE d'un autre haut-parleur BGP, il modifie l'attribut AS_PATH de la route en fonction de l'emplacement du haut-parleur BGP auquel la route sera envoyée:

a) Lors de l'annonce de la route à un pair interne, le haut-parleur annonçant ne doit (SHALL) pas modifier l'attribut AS_PATH associé à la route.

b) Lors de l'annonce de la route à un pair externe, le haut-parleur annonçant met à jour l'attribut AS_PATH comme suit:

  1. si le premier segment de chemin de l'AS_PATH est de type AS_SEQUENCE, le système local ajoute son propre numéro AS comme dernier élément de la séquence (le place dans la position la plus à gauche par rapport à la position des octets dans le message de protocole). Si l'acte d'ajout provoquera un débordement dans le segment AS_PATH (c'est-à-dire plus de 255 AS), il devrait (SHOULD) ajouter un nouveau segment de type AS_SEQUENCE et ajouter son propre numéro AS à ce nouveau segment.

  2. si le premier segment de chemin de l'AS_PATH est de type AS_SET, le système local ajoute un nouveau segment de chemin de type AS_SEQUENCE à l'AS_PATH, incluant son propre numéro AS dans ce segment.

  3. si l'AS_PATH est vide, le système local crée un segment de chemin de type AS_SEQUENCE, place son propre AS dans ce segment et place ce segment dans l'AS_PATH.

Lorsqu'un haut-parleur BGP initie une route alors:

a) le haut-parleur d'origine inclut son propre numéro AS dans un segment de chemin, de type AS_SEQUENCE, dans l'attribut AS_PATH de tous les messages UPDATE envoyés à un pair externe. Dans ce cas, le numéro AS du système autonome du haut-parleur d'origine sera la seule entrée du segment de chemin, et ce segment de chemin sera le seul segment dans l'attribut AS_PATH.

b) le haut-parleur d'origine inclut un attribut AS_PATH vide dans tous les messages UPDATE envoyés aux pairs internes. (Un attribut AS_PATH vide est un attribut dont le champ de longueur contient la valeur zéro).

Chaque fois que la modification de l'attribut AS_PATH nécessite d'inclure ou d'ajouter le numéro AS du système local, le système local peut (MAY) inclure/ajouter plus d'une instance de son propre numéro AS dans l'attribut AS_PATH. Ceci est contrôlé via la configuration locale.

5.1.3. NEXT_HOP

Le NEXT_HOP est un attribut bien connu obligatoire qui définit l'adresse IP du routeur qui devrait (SHOULD) être utilisé comme prochain saut vers les destinations listées dans le message UPDATE. L'attribut NEXT_HOP est calculé comme suit:

  1. Lors de l'envoi d'un message à un pair interne, si la route n'est pas d'origine locale, le haut-parleur BGP ne devrait (SHOULD) pas modifier l'attribut NEXT_HOP à moins qu'il n'ait été explicitement configuré pour annoncer sa propre adresse IP comme NEXT_HOP. Lors de l'annonce d'une route d'origine locale à un pair interne, le haut-parleur BGP devrait (SHOULD) utiliser l'adresse d'interface du routeur par lequel le réseau annoncé est accessible pour le haut-parleur comme NEXT_HOP. Si la route est directement connectée au haut-parleur, ou si l'adresse d'interface du routeur par lequel le réseau annoncé est accessible pour le haut-parleur est l'adresse du pair interne, alors le haut-parleur BGP devrait (SHOULD) utiliser sa propre adresse IP pour l'attribut NEXT_HOP (l'adresse de l'interface utilisée pour atteindre le pair).

  2. Lors de l'envoi d'un message à un pair externe, X, et que le pair est à un saut IP du haut-parleur:

    • Si la route annoncée a été apprise d'un pair interne ou est d'origine locale, le haut-parleur BGP peut utiliser une adresse d'interface du routeur pair interne (ou du routeur interne) par lequel le réseau annoncé est accessible pour le haut-parleur pour l'attribut NEXT_HOP, à condition que le pair X partage un sous-réseau commun avec cette adresse. Il s'agit d'une forme d'attribut NEXT_HOP "tiers".

    • Sinon, si la route annoncée a été apprise d'un pair externe, le haut-parleur peut utiliser une adresse IP de tout routeur adjacent (connue de l'attribut NEXT_HOP reçu) que le haut-parleur lui-même utilise pour le calcul de route local dans l'attribut NEXT_HOP, à condition que le pair X partage un sous-réseau commun avec cette adresse. Il s'agit d'une deuxième forme d'attribut NEXT_HOP "tiers".

    • Sinon, si le pair externe auquel la route est annoncée partage un sous-réseau commun avec l'une des interfaces du haut-parleur BGP annonçant, le haut-parleur peut (MAY) utiliser l'adresse IP associée à une telle interface dans l'attribut NEXT_HOP. C'est ce qu'on appelle un attribut NEXT_HOP "première partie".

    • Par défaut (si aucune des conditions ci-dessus ne s'applique), le haut-parleur BGP devrait (SHOULD) utiliser l'adresse IP de l'interface que le haut-parleur utilise pour établir la connexion BGP au pair X dans l'attribut NEXT_HOP.

  3. Lors de l'envoi d'un message à un pair externe X, et que le pair est à plusieurs sauts IP du haut-parleur (alias "EBGP multihop"):

    • Le haut-parleur peut (MAY) être configuré pour propager l'attribut NEXT_HOP. Dans ce cas, lors de l'annonce d'une route que le haut-parleur a apprise de l'un de ses pairs, l'attribut NEXT_HOP de la route annoncée est exactement le même que l'attribut NEXT_HOP de la route apprise (le haut-parleur ne modifie pas l'attribut NEXT_HOP).

    • Par défaut, le haut-parleur BGP devrait (SHOULD) utiliser l'adresse IP de l'interface que le haut-parleur utilise dans l'attribut NEXT_HOP pour établir la connexion BGP au pair X.

Normalement, l'attribut NEXT_HOP est choisi de telle sorte que le chemin disponible le plus court sera pris. Un haut-parleur BGP doit (MUST) pouvoir prendre en charge la désactivation de l'annonce d'attributs NEXT_HOP tiers afin de gérer les médias imparfaitement pontés.

Une route initiée par un haut-parleur BGP ne doit (SHALL) pas être annoncée à un pair en utilisant une adresse de ce pair comme NEXT_HOP. Un haut-parleur BGP ne doit (SHALL) pas installer une route avec lui-même comme prochain saut.

L'attribut NEXT_HOP est utilisé par le haut-parleur BGP pour déterminer l'interface sortante réelle et l'adresse de prochain saut immédiat qui devrait (SHOULD) être utilisée pour transférer les paquets de transit vers les destinations associées.

L'adresse de prochain saut immédiat est déterminée en effectuant une opération de recherche de route récursive pour l'adresse IP dans l'attribut NEXT_HOP, en utilisant le contenu de la table de routage, en sélectionnant une entrée si plusieurs entrées de coût égal existent. L'entrée de la table de routage qui résout l'adresse IP dans l'attribut NEXT_HOP spécifiera toujours l'interface sortante. Si l'entrée spécifie un sous-réseau attaché, mais ne spécifie pas d'adresse de prochain saut, alors l'adresse dans l'attribut NEXT_HOP devrait (SHOULD) être utilisée comme adresse de prochain saut immédiat. Si l'entrée spécifie également l'adresse de prochain saut, cette adresse devrait (SHOULD) être utilisée comme adresse de prochain saut immédiat pour le transfert de paquets.

5.1.4. MULTI_EXIT_DISC

Le MULTI_EXIT_DISC est un attribut optionnel non transitif destiné à être utilisé sur les liens externes (inter-AS) pour discriminer parmi plusieurs points de sortie ou d'entrée vers le même AS voisin. La valeur de l'attribut MULTI_EXIT_DISC est un nombre non signé de quatre octets, appelé métrique. Tous les autres facteurs étant égaux, le point de sortie avec la métrique la plus faible devrait (SHOULD) être préféré. S'il est reçu via EBGP, l'attribut MULTI_EXIT_DISC peut (MAY) être propagé via IBGP à d'autres haut-parleurs BGP dans le même AS (voir aussi 9.1.2.2). L'attribut MULTI_EXIT_DISC reçu d'un AS voisin ne doit (MUST) pas être propagé à d'autres AS voisins.

Un haut-parleur BGP doit (MUST) implémenter un mécanisme (basé sur la configuration locale) qui permet de supprimer l'attribut MULTI_EXIT_DISC d'une route. Si un haut-parleur BGP est configuré pour supprimer l'attribut MULTI_EXIT_DISC d'une route, alors cette suppression doit (MUST) être effectuée avant de déterminer le degré de préférence de la route et avant d'effectuer la sélection de route (phases 1 et 2 du processus de décision).

Une implémentation peut (MAY) également (en fonction de la configuration locale) modifier la valeur de l'attribut MULTI_EXIT_DISC reçu via EBGP. Si un haut-parleur BGP est configuré pour modifier la valeur de l'attribut MULTI_EXIT_DISC reçu via EBGP, alors la modification de la valeur doit (MUST) être effectuée avant de déterminer le degré de préférence de la route et avant d'effectuer la sélection de route (phases 1 et 2 du processus de décision). Voir la section 9.1.2.2 pour les restrictions nécessaires à ce sujet.

5.1.5. LOCAL_PREF

LOCAL_PREF est un attribut bien connu qui doit (SHALL) être inclus dans tous les messages UPDATE qu'un haut-parleur BGP donné envoie à d'autres pairs internes. Un haut-parleur BGP doit (SHALL) calculer le degré de préférence pour chaque route externe en fonction de la politique configurée localement, et inclure le degré de préférence lors de l'annonce d'une route à ses pairs internes. Le degré de préférence le plus élevé doit (MUST) être préféré. Un haut-parleur BGP utilise le degré de préférence appris via LOCAL_PREF dans son processus de décision (voir la section 9.1.1).

Un haut-parleur BGP ne doit (MUST) pas inclure cet attribut dans les messages UPDATE qu'il envoie aux pairs externes, sauf dans le cas des confédérations BGP [RFC3065]. S'il est contenu dans un message UPDATE reçu d'un pair externe, alors cet attribut doit (MUST) être ignoré par le haut-parleur récepteur, sauf dans le cas des confédérations BGP [RFC3065].

5.1.6. ATOMIC_AGGREGATE

ATOMIC_AGGREGATE est un attribut bien connu discrétionnaire.

Lorsqu'un haut-parleur BGP agrège plusieurs routes dans le but de les annoncer à un pair particulier, l'AS_PATH de la route agrégée inclut normalement un AS_SET formé à partir de l'ensemble des AS à partir desquels l'agrégat a été formé. Dans de nombreux cas, l'administrateur réseau peut déterminer si l'agrégat peut être annoncé en toute sécurité sans l'AS_SET, et sans former de boucles de route.

Si un agrégat exclut au moins certains des numéros AS présents dans l'AS_PATH des routes agrégées en raison de la suppression de l'AS_SET, la route agrégée, lorsqu'elle est annoncée au pair, devrait (SHOULD) inclure l'attribut ATOMIC_AGGREGATE.

Un haut-parleur BGP qui reçoit une route avec l'attribut ATOMIC_AGGREGATE ne devrait (SHOULD) pas supprimer l'attribut lors de la propagation de la route à d'autres haut-parleurs.

Un haut-parleur BGP qui reçoit une route avec l'attribut ATOMIC_AGGREGATE ne doit (MUST) pas rendre le NLRI de cette route plus spécifique (tel que défini dans 9.1.4) lors de l'annonce de cette route à d'autres haut-parleurs BGP.

Un haut-parleur BGP qui reçoit une route avec l'attribut ATOMIC_AGGREGATE doit être conscient du fait que le chemin réel vers les destinations, tel que spécifié dans le NLRI de la route, tout en ayant la propriété sans boucle, peut ne pas être le chemin spécifié dans l'attribut AS_PATH de la route.

5.1.7. AGGREGATOR

AGGREGATOR est un attribut optionnel transitif, qui peut (MAY) être inclus dans les mises à jour formées par agrégation (voir la section 9.2.2.2). Un haut-parleur BGP qui effectue l'agrégation de routes peut (MAY) ajouter l'attribut AGGREGATOR, qui doit (SHALL) contenir son propre numéro AS et son adresse IP. L'adresse IP devrait (SHOULD) être la même que l'identifiant BGP du haut-parleur.