BGP – Les attributs BGP Cisco vs Juniper

Ce billet a pour objectif de décrire les attributs BGP. Il sera présenté deux visions de l’implémentation de ces attributs par le biais de la  description des séquences permettant de sélectionner un chemin BGP.  Deux visions seront décrites à la fin de cet article, celle de l’IOS (Cisco) et celle de JUNOS (Juniper).

Ce billet est  principalement destiné à des personnes ayant déjà des connaissances dans le fonctionnement du protocole BGP (RFC 1771), BGP se base sur des attributs dans le cadre de la sélection d’un chemin.

Les categories d’attributs BGP:

  • Well-known Mandatory
  • Well-known Discretionary
  • Optional Transitive
  • Optional Non-transitive

Les attributs Well-known sont reconnus pour toutes les implémentations BGP, et propagés à tous les voisins BGP :

Les attributs Mandatory well-known doivent apparaitre dans la description de la route.

  • As_path, next-hop, origin

Les attributs Discretionary n’ont pas à apparaitre dans la description des routes (ils ne sont pas obligatoires).

  • Local preference, atomic aggregate

Les attributs optionnels sont facultatifs et peuvent ne pas être supportés par toutes les implémentations BGP:

Le bit transitif (Transitive) détermine si un attribut optionnel est transmis au voisins BGP. Si un attribut est transitif mais non supporté par le voisin (neighbor), il sera transmis et marqué comme étant partiel.

  • Aggregator, community

Le bit non transitif (Non transitive), indique qu’un voisin ne supporte pas l’attribut et le supprime.

  • Multi-exit-discriminator (MED)

Les attributs BGP:

Aux routes apprises via BGP  sont associés un ensemble de propriétés utilisées afin de déterminer le meilleur chemin pour une destination lorsque plusieurs chemins existent. Ces propriétés sont ce que l’on appels des attributs BGP, l’objectif est de comprendre comment ces attributs BGP influes sur la sélection d’une route.

Les attributs présents ci-dessous sont issues de la RFC, certains constructeurs tel que Cisco ont implémentés des attributs propriétaires (exemple l’attribut WEIGHT). Ci-dessous sont décrits les différents attributs BGP utilisés dans le processus BGP lors de la sélection du chemin :

  • ORIGIN

L’attribut « ORIGIN«  est de type well-known mandatory.

Cet attribut est propagé dans les informations de routage BGP afin d’identifier l’AS d’origine de la route au sein de la table de routage.

Celui-ci indique au sein de la table de routage si le préfixe annoncé est un IGP, un EGP ou incomplète (exemple, la redistribution depuis un IGP non BGP vers BGP ou bien une route d’origine inconnue).

  • AS_PATH

L’attribut  « AS_PATH«  est de type well-known mandatory attribute.

Il permet d’indiquer la liste des systèmes autonomes (AS) traversés afin de joindre le préfixe annoncé.

Cet attribut est modifié dans les annonces lorsque celui-ci traverse plusieurs systèmes autonomes. Lorsque que l’annonce effectuée a pour origine le même système autonome que celui qui apprend le préfixe propagé, le champ AS PATH reste inchangé puisque le numéro d’AS est le même.

  • NEXT_HOP

L’attribut  « NEXT_HOP«  est de type well-known mandatory.

Il permet d’identifier le point de passage pour un préfix donné. Il identifie l’adresse IP du prochain saut, soit le voisin BGP par lequel passeront les paquets pour joindre un réseau.

  • MULTI_EXIT_DISC

L’attribut  » MULTI_EXIT_DISC  » est de type optional, nontransitive.

Cet attribut intervient principalement dans l’échange d’information entre systèmes autonomes (inter AS pour reprendre la RFC). Il permet d’influencer la décision consistant à joindre un AS plutôt qu’un autre, l’AS ayant la métrique la plus faible sera préféré aux autres. Cet attribut est utilisé entre les AS, il est également propagé aux autres voisins d’un même AS.

  • LOCAL_PREF

L’attribut « LOCAL_PREF«  est de type well-known mandatory.

Cet attribut est une valeur comprise entre « 0 et 4 294 967 295 » dont la valeur préféré est la plus haute. Par défaut cette valeur est à 100. Cette valeur est fixée sur le routeur en bordure afin de déterminer quel sera le meilleur chemin si deux chemins dispos de propriétés similaires.

Le routeur possédant la valeur de « local_pref » la plus élevée propagera cette information aux autres routeurs de l’AS afin d’indiquer qu’il possède le chemin préféré.

L’attribut « local pref » n’est pas propagé aux routeurs faisant partie d’un système autonome différent. Si la mise à jour BGP provient d’un autre AS, celle-ci incluant une valeur de « local pref » dans le message, il se verra ignoré l’information indiquant la valeur de la « local preference ».

  • ATOMIC_AGGREGATE

Cet attribut est de type well-known discretionary.

Attribut utilisé pour l’envoi de messages indiquant l’utilisation de route moins précise, plutôt que l’utilisation de routes précise.

  • AGGREGATOR

Cet attribut est de type optional transitive.

Cet attribut contient le dernier numéro de système autonome dont la route est originaire, il contient également l’adresse de l’équipement d’origine.

  • WEIGHT

Cet attribut est optionnel, il est n’est pas propagé au voisin BGP. On doit la création de cet attribut à Cisco qui est principalement le seul à le supporté. L’affectation de cette valeur est réalisée sur l’instance de routage local par le biais d’une valeur comprise entre 0 et 65535, par défaut la valeur est fixée à 32768. Il permet principalement de déterminer quelle sera le prochain saut préféré par le biais de l’affectation d’un poids à un peer en particulier.

La sélection du chemin par BGP :

BGP peut recevoir plusieurs annonces pour une même route depuis plusieurs sources. BGP sélectionnera uniquement une seule route comme étant le meilleur chemin parmi les différentes annonces reçus. Une fois la route sélectionnée, BGP l’insère dans la table de routage et propage la route à ses voisins. BGP se base sur les critères suivants dans l’ordre décrit pour sélectionner la route afin d’e l’y insérer dans la table et joindre un réseau.

Sélection du chemin par BGP avec l’IOS de Cisco :

  1. Si la route spécifie un saut qui est inaccessible, la mise à jour est supprimée.
  2. La route préférée sera la route avec le poids (WEIGHT) le plus élevé.
  3. Si les routes ont le même poids, la route disposant de la LOCAL PREFERENCE la plus élevée sera sélectionnée.
  4. Si les valeurs de l’attribut local préférence sont les même, Il sera préféré la route apprise par le processus BGP du routeur.
  5. S’il n’y a pas de route d’origine BGP, il sera préféré la route ayant la valeur d’AS_path la plus courte.
  6. Si toutes les routes ont la même valeur d’AS_path, il sera préféré la route disposant de la valeur de type origin la plus faible (quand un IGP est plus faible qu’un EGP  et un EGP plus faible qu’un incomplète).
  7. Si les valeurs de l’attribut origin sont les mêmes, il sera préféré l’attribut ayant la plus faible valeur MED.
  8. Les routes possèdent la même valeur de MED, il sera préféré les routes externes des routes internes.
  9. Si les chemins possèdent des attributs équivalents, il sera préféré la route transitant via le voisin IGP le plus proche.
  10. Il sera préféré la route disposant de la valeur d’adresse IP la plus petite, spécifié comme étant le routeur ID BGP.

Sélection du chemin par BGP avec JUNOS de Juniper :

  1. Est-il possible de résoudre  le prochain saut « next hop » BGP.
  2. La route disposant de la « LOCAL PREFERENCE » la plus élevée sera sélectionnée.
  3. Il sera préféré la route ayant la valeur « d’AS_path » la plus courte.
  4. Il sera préféré la route disposant de la valeur de type « origin » la plus faible.
  5. Il sera préféré la route disposant de l’attribut ayant la plus faible valeur « MED ».
  6. Seront préférées les routes externes des routes internes.
  7. Si les chemins possèdent des attributs équivalents, il sera préféré la route transitant via le voisin IGP le plus proche.
    1. Seront consultés les tables inet.0 (table de routage par défaut « IPV4 ») et inet.3 (table contenant les informations sur les LSP MPLS) suivant le saut BGP. Sera sélectionné la route possédant la meilleure préférence.
    2. La liaison utilisant un saut présent dans la table inet.3 sera préférée.
    3. Si deux liens le même niveau de préférence au sein de la table, il sera sélectionné.
  8. Il sera préféré la route avec le cluster ayant la longueur la plus faible.
  9. Il sera préféré la route dont le peer dispose de la valeur RID la plus petite.
  10. Il sera préféré la route disposant de la valeur du peer ID la plus petite (l’adresse du peering BGP).

Laisser une réponse

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *