4. Fonctionnement
Un membre d'une confédération BGP DOIT (MUST) utiliser son identifiant de confédération AS dans toutes les transactions avec des pairs qui ne sont pas membres de sa confédération. Cet identifiant de confédération AS est le numéro AS « visible de l'extérieur », et ce numéro est utilisé dans les messages OPEN et annoncé dans l'attribut AS_PATH.
Un membre d'une confédération BGP DOIT (MUST) utiliser son numéro de Member-AS dans toutes les transactions avec des pairs qui sont membres de la même confédération que le locuteur BGP local.
Un locuteur BGP recevant un attribut AS_PATH contenant un système autonome correspondant à son propre identifiant de confédération AS DOIT (SHALL) traiter le chemin de la même manière que s'il avait reçu un chemin contenant son propre numéro AS.
Un locuteur BGP recevant un attribut AS_PATH contenant un AS_CONFED_SEQUENCE ou AS_CONFED_SET qui contient son propre numéro de Member-AS DOIT (SHALL) traiter le chemin de la même manière que s'il avait reçu un chemin contenant son propre numéro AS.
4.1. Règles de modification de l'AS_PATH
Lors de l'implémentation des confédérations BGP, la section 5.1.2 de [BGP-4] est remplacée par le texte suivant :
AS_PATH est un attribut obligatoire bien connu. Cet attribut identifie les systèmes autonomes par lesquels les informations de routage transportées dans ce message UPDATE sont passées. Les composants de cette liste peuvent être des AS_SET, AS_SEQUENCE, AS_CONFED_SET ou AS_CONFED_SEQUENCE.
Lorsqu'un locuteur BGP propage une route qu'il a apprise à partir du message UPDATE d'un autre locuteur BGP, il modifie l'attribut AS_PATH de la route en fonction de l'emplacement du locuteur BGP auquel la route sera envoyée :
a) Lorsqu'un locuteur BGP donné annonce la route à un autre locuteur BGP situé dans son propre Member-AS, le locuteur annonceur NE DOIT PAS (SHALL NOT) modifier l'attribut AS_PATH associé à la route.
b) Lorsqu'un locuteur BGP donné annonce la route à un locuteur BGP situé dans un système autonome voisin qui est membre de la confédération locale, le locuteur annonceur met à jour l'attribut AS_PATH comme suit :
-
si le premier segment de chemin de l'AS_PATH est de type AS_CONFED_SEQUENCE, le système local préfixe son propre numéro de Member-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 du protocole). Si l'acte de préfixage provoque un débordement dans le segment AS_PATH (c'est-à-dire plus de 255 AS), il DEVRAIT (SHOULD) préfixer un nouveau segment de type AS_CONFED_SEQUENCE et préfixer son propre numéro AS à ce nouveau segment.
-
si le premier segment de chemin de l'AS_PATH n'est pas de type AS_CONFED_SEQUENCE, le système local préfixe un nouveau segment de chemin de type AS_CONFED_SEQUENCE à l'AS_PATH, incluant son propre numéro de Member-AS dans ce segment.
-
si l'AS_PATH est vide, le système local crée un segment de chemin de type AS_CONFED_SEQUENCE, place son propre numéro de Member-AS dans ce segment et place ce segment dans l'AS_PATH.
c) Lorsqu'un locuteur BGP donné annonce la route à un locuteur BGP situé dans un système autonome voisin qui n'est pas membre de la confédération locale, le locuteur annonceur DOIT (SHALL) mettre à jour l'attribut AS_PATH comme suit :
-
si l'un des segments de chemin de l'AS_PATH est de type AS_CONFED_SEQUENCE ou AS_CONFED_SET, ces segments DOIVENT (MUST) être supprimés de l'attribut AS_PATH, laissant l'attribut AS_PATH nettoyé être traité par les étapes 2, 3 ou 4.
-
si le premier segment de chemin de l'AS_PATH restant est de type AS_SEQUENCE, le système local préfixe son propre identifiant de confédération 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 du protocole). Si l'acte de préfixage provoque un débordement dans le segment AS_PATH (c'est-à-dire plus de 255 AS), il DEVRAIT (SHOULD) préfixer un nouveau segment de type AS_SEQUENCE et préfixer son propre numéro AS à ce nouveau segment.
-
si le premier segment de chemin de l'AS_PATH restant est de type AS_SET, le système local préfixe un nouveau segment de chemin de type AS_SEQUENCE à l'AS_PATH, incluant son propre identifiant de confédération AS dans ce segment.
-
si l'AS_PATH restant est vide, le système local crée un segment de chemin de type AS_SEQUENCE, place son propre identifiant de confédération AS dans ce segment et place ce segment dans l'AS_PATH.
Lorsqu'un locuteur BGP origine une route, alors :
a) le locuteur d'origine inclut son propre identifiant de confédération AS dans un segment de chemin, de type AS_SEQUENCE, dans l'attribut AS_PATH de tous les messages UPDATE envoyés aux locuteurs BGP situés dans des systèmes autonomes voisins qui ne sont pas membres de la confédération locale. Dans ce cas, l'identifiant de confédération AS du système autonome du locuteur 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 locuteur d'origine inclut son propre numéro de Member-AS dans un segment de chemin, de type AS_CONFED_SEQUENCE, dans l'attribut AS_PATH de tous les messages UPDATE envoyés aux locuteurs BGP situés dans des systèmes autonomes membres voisins qui sont membres de la confédération locale. Dans ce cas, le numéro de Member-AS du système autonome du locuteur 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.
c) le locuteur d'origine inclut un attribut AS_PATH vide dans tous les messages UPDATE envoyés aux locuteurs BGP résidant dans le même Member-AS. (Un attribut AS_PATH vide est un dont le champ de longueur contient la valeur zéro).
Chaque fois que la modification de l'attribut AS_PATH appelle à inclure ou préfixer l'identifiant de confédération AS ou le numéro de Member-AS du système local, le système local PEUT (MAY) inclure/préfixer plus d'une instance de cette valeur dans l'attribut AS_PATH. Ceci est contrôlé via la configuration locale.