Comprendre mieux l’attribut AS Path et l’utilisation d’AS Path Prepending dans le...

Comprendre mieux l’attribut AS Path et l’utilisation d’AS Path Prepending dans le Routage BGP

    as_pathDans les articles précédents, on a analysé les attributs du protocole BGP – Next Hop et Local Preference. Maintenant, nous allons examiner l’attribut AS_PATH, ainsi que AS4_PATH.

    Qu’est-ce qu’un AS PATH?

    L’AS PATH est un attribut du protocole BGP, étant présent pour tous les préfixes échangés entre les voisins BGP (BGP neighbors). Une fois que le routeur BGP envoie une mise à jour à un voisin appartenant à un système autonome différent (un voisin externe ou eBGP), il rajoutera en même temps son numéro AS à l’avant (côté gauche) du AS Path. Ainsi, dans l’AS Path seront mentionnés tous les systèmes autonomes à être traversés afin d’accéder à l’emplacement où le préfixe dont le chemin est attaché, est annoncé. De cette façon,  par le biais d’un traceroute on pourra rencontrer ces systèmes autonomes.

    L’objectif principal de l’attribut AS Path c’est d’éviter les boucles de routage. Sans AS Path, le protocole BGP aurait un mode de fonctionnement très similaire à celui du protocole RIP. Le RIP et le BGP sont des protocoles de routage à vecteur de distance. Ceci veut dire que le routeur enverra une copie de sa propre table de routage à ses voisins, qui vont ensuite utiliser ces itinéraires au cas où ils seraient meilleurs que ceux connus auparavant.

    Un problème souvent rencontré en ce qui concerne les protocoles à vecteur de distance est celui de comptage à l’infini. Imaginons-nous que les routeurs A et C sont les voisins du routeur B. Le routeur A annonce le préfixe 192.0.2.0/24 au routeur B. Ainsi, le routeur B est maintenant informé qu’il peut atteindre 192.0.2.0/24 via le routeur A à distance d’un saut et l’annonce au routeur C, qui peut ensuite atteindre le préfixe par le routeur B à distance de deux sauts. Supposons que le routeur A tombe en panne, de sorte que B ne peut plus atteindre le prefixe 192.0.2.0/24 via le routeur A. Pourtant, le routeur C informe ses voisins qu’il peut atteindre le préfixe sur deux sauts. Le routeur B changera donc sa table de routage pour atteindre le préfixe 192.0.2.0/24. à distance de trois sauts. Le routeur C constate maintenant la mise à jour du routeur B et change la distance jusqu’à quatre sauts, ce que le routeur B voit et donc il change la distance jusqu’à cinq sauts. Mais pour éviter que ce processus dure une éternité, le protocole RIP va considérer une destination inaccessible au moment que cette distance aura 16 sauts.

    D’autre part, le protocole BGP peut voir immédiatement que le chemin de routeur B à routeur C en direction du routeur A retourne à routeur B, puisque que le numéro AS du routeur  B est présent dans l’attribut AS Path. En conséquence, le routeur B va ignorer cette mise à jour et n’utilisera jamais des chemins contenant des boucles de routage. (Cependant, BGP essayera toujours d’utiliser des chemins de plus en plus légitimes et non bouclés. Cette situation est souvent appelée path hunting.)

    Un autre objet d’utilisation de l’attribut AS Path est de favoriser que le protocole BGP trouve le meilleur chemin. Dans l’article précédent, on a lancé l’algorithme de sélection du meilleur chemin BGP avec les sept chemins suivants:

     

    Network Next Hop Metric LocPrf Weight Path
    192.0.2.0/24 1.1.1.1 20 0 1010 1011 286 4040 i
    2.2.2.2 20 0 2020 1011 4040 i
    3.3.3.3 10 100 0 2020 702 4040 i
    4.4.4.4 0 90 0 4040 i
    5.5.5.5 2659 0 5050 1011 4040 i
    6.6.6.6 80 0 6060 4040 i
    7.7.7.7 10 100 0 7070 3356 3356 4040 i

     

    Lorsque le quatrième et sixième chemins ne partagent pas la préférence locale la plus élevée, ils n’ont pas passé l’algorithme de sélection de chemin durant l’étape de préférence locale (Local preference). En conséquence, les cinq chemins restants, participent dans l’étape suivante, afin que l’attribut AS Path soit evalué:

    Network Next Hop Metric LocPrf Weight Path
    192.0.2.0/24 1.1.1.1 20 0 1010 1011 286 4040 i
    2.2.2.2 20 0 2020 1011 4040 i
    3.3.3.3 10 100 0 2020 702 4040 i
    5.5.5.5 2659 0 5050 1011 4040 i
    7.7.7.7 10 100 0 7070 3356 3356 4040 i

     

    A cette étape, seront choisis uniquement les chemins avec le plus court AS_PATH. Le chemin avec un prochain saut de 3.3.3.3 semble d’être le plus court, mais c’est juste parce que le numéro d’AS dans le chemin est composé de trois chiffres, alors que l’AS Path des chemins avec les prochains sauts de 2.2.2.2 et 5.5.5.5 est composé de quatre chiffres.  Mais ce qui vraiment compte ici, c’est pas la longueur de la représentation textuelle sinon le nombre de sauts AS. Ainsi, tous les trois chemins qui se trouvent au milieu ont la même longueur en ce qui concerne l’algorithme du meilleur chemin BGP: trois sauts AS, pendant que le premier chemin et le dernier ne sont plus pris en compte, en ayant quatre sauts. En conséquence, seulement les trois chemins du milieu passent à l’étape suivante de l’algorithme.

    Contrairement à la plupart d’autres attributs, les modifications apportées au AS Path sont propagées aux systèmes autonomes en aval. Cela permet d’utiliser l’AS Path afin de faire de l’ingénierie du trafic d’une manière qui n’est pas possible avec les autres attributs. Par exemple, considérons un AS (AS 1) qui annonce le préfixe P pour deux FAI (Fournisseur Accès Internet): AS 10 et AS 20. Les AS 100, 200, 300 et 400 sont en arrière sur 10 et 20. Trois d’entre eux préfèrent d’envoyer leur trafic vers AS 10 et un – vers AS 20, juste comme nous indiquent les flèches noires, pendant que les flèches jaunes indiquent le chemin non-préféré. En conséquence, comme est indiqué par la largeur des flèches dans l’image suivante, les trois quarts du trafic sont envoyés vers AS 10 et seulement un quart – vers AS 20.
    as_path1

    Vu que la longueur du AS Path est la même pour les AS 100 à 400, les chemins entre 10 et 20 sont identiques. La sélection du meilleur chemin revient donc à un autre attribut BGP – au Discriminateur de Sorties Multiples (MED) et aux chemins avec les meilleurs résultats dans l’algorithme de sélection du chemin BGP.

    Si AS 1 n’est pas satisfait par cette répartition du trafic: 75% / 25%, il peut préfixer son chemin vers l’AS 10 pour le rendre plus long.

    Qu’est-ce que l’AS PATH PREPEND?

    Le processus, nommé “prepending” consiste à rajouter un ou plusieurs numéros AS sur le côté gauche du AS Path. Normalement, cela est fait en utilisant son propre numéro AS, lorsque l’utilisation du numéro d’AS d’une autre organisation peut avoir des effets secondaires indésirables. L’image ci-dessous montre que l’AS 1 prédomine une fois vers AS 10, ce qui allonge le chemin à travers AS 10 pour les AS 100 à 400:
    as_path2

    La configuration à suivre sur un routeur Cisco est la suivante:

    !
    router bgp 65123
    neighbor 198.51.100.90 remote-as 65456
    neighbor 198.51.100.90 description IX peer
    neighbor 198.51.100.90 route-map prepend out
    !
    route-map prepend permit 10
    set as-path prepend 65123
    !

    Vu que l’AS Path à travers AS20 est maintenant plus court que celui à AS 10, chacun des AS 100 à 400 envoie le trafic vers l’AS 20, de telle sorte que tout le trafic arrive vers AS 20 et aucun vers AS 10. En pratique, le processus de “prepending” généralement n’apporte pas de si graves résultats, mais les effets du “AS Path Prepending” sont d’habitude plus forts que prévus.

    Une autre option dans ce contexte, c’est d’utiliser une communauté sur les annonces à un FAI, qui lui demande de faire le “prepending”d’une manière sélective vers certains clients ou peers ou juste dans de certaines régions. Les grands opérateurs ont généralement de telles communautés. Ou, lors de l’annoncement de plusieurs préfixes, on peut mettre le “prepending” uniquement pour certains d’eux, mais pas pour les tous.

    L’AS Path Prepending est souvent effectué par le biais des mises à jour sortantes de BGP vers les FAI de transit ou les “peers”, afin d’influencer le trafic entrant. Cependant, il peut également être utilisé pour les mises à jour entrantes du BGP et donc pour le trafic sortant. Cela peut être également utile le moment manoeuvrer la préférence locale est un processus bien difficile. En ayant une préférence locale plus élevée, un itinéraire avec un très long AS Path peut toujours être préféré, alors qu’un seul “prepend” peut détourner une bonne quantité de trafic.

    Les numéros AS dans l’AS Path initialement  avaient des valeurs de 16 bits, ce qui permet de créer environ 64 000 numéros d’AS uniques dans le monde. Aujourd’hui, on a plus de 70000 systèmes autonomes. Afin de s’adapter à ce numéro, le BGP-4 a été mis à jour, prennant en charge les numéros d’AS a 32 bits (ou 4 octets). Lorsque deux voisins BGP sont connectés, on fait  tout d’abord l’échange des capacités et si tous les deux sont en mesure de prendre en charge les numéros d’AS à 32 bits, ceux-ci peuvent être utilisés. Cependant, plutôt que de mettre les numéros d’AS a 32 bits dans l’attribut AS_PATH, les plus longs numéros d’AS seront placés dans un nouvel attribut séparé: AS4_PATH.

    Lorsque deux routeurs compatibles à 32 bits communiquent, tous les deux vont mettre à jour selon le cas les attributs suivants: AS_PATH et AS4_PATH. Les numéros d’AS à 32 bits (supérieurs à 65 535) seront remplacés par «23456» dans l”AS Path à 16 bits. Toutefois, au moment qu’un routeur compatible à 16 bits reçoit une mise à jour BGP, il ne met à jour que l’AS Path à 16 bits. Il comprendra toujours l’AS4_PATH avec les mises à jour, vu qu les concepteurs de BGP-4 avaient prevu d’autoriser ce traitement des attributs de chemins inconnus. Lorsque la mise à jour arrive ensuite à un routeur compatible à 32 bits, on compare les attributs AS_PATH et AS4_PATH et rétablit les informations manquantes dans l’AS4_PATH par les informations présentes dans l’attribute AS_PATH.

    Par conséquence, la mise à jour des numéros d’AS à 32 bits est totalement transparente pour les routeurs plus anciens, qui continuent à fonctionner sans aucune difficulté. Ils juste verront de plus en plus de chemins contenant l’AS 23456.

    Dans le prochain article, nous allons examiner un autre attribut BGP – le MED, le Discriminateur de Sorties Multiples.

    Accéder à la version anglaise de cet article – Understanding the AS path and AS path prepending


    Boost BGP Preformance

    Automate BGP Routing optimization with Noction IRP

    NO COMMENTS

    Leave a Reply