Aller au contenu principal

4.3. UPDATE Message Format (Format de Message UPDATE)

4.3. UPDATE Message Format (Format de Message UPDATE)

Les messages UPDATE sont utilisés pour transférer des informations de routage entre pairs BGP. Les informations contenues dans le message UPDATE peuvent être utilisées pour construire un graphe décrivant les relations entre les différents Systèmes Autonomes. En appliquant des règles à discuter, les boucles d'information de routage et certaines autres anomalies peuvent être détectées et supprimées du routage inter-AS.

Un message UPDATE est utilisé pour annoncer des routes faisables qui partagent des attributs de chemin communs à un pair, ou pour retirer plusieurs routes infaisables du service (voir 3.1). Un message UPDATE PEUT simultanément annoncer une route faisable et retirer plusieurs routes infaisables du service. Le message UPDATE inclut toujours l'en-tête BGP de taille fixe, et inclut également les autres champs, comme indiqué ci-dessous (notez que certains des champs indiqués peuvent ne pas être présents dans chaque message UPDATE) :

      +-----------------------------------------------------+
| Withdrawn Routes Length (2 octets) |
+-----------------------------------------------------+
| Withdrawn Routes (variable) |
+-----------------------------------------------------+
| Total Path Attribute Length (2 octets) |
+-----------------------------------------------------+
| Path Attributes (variable) |
+-----------------------------------------------------+
| Network Layer Reachability Information (variable) |
+-----------------------------------------------------+

Withdrawn Routes Length (Longueur des Routes Retirées) :

Cet entier non signé de 2 octets indique la longueur totale du champ Withdrawn Routes en octets. Sa valeur permet de déterminer la longueur du champ Network Layer Reachability Information, comme spécifié ci-dessous.

Une valeur de 0 indique qu'aucune route n'est retirée du service et que le champ WITHDRAWN ROUTES n'est pas présent dans ce message UPDATE.

Withdrawn Routes (Routes Retirées) :

Il s'agit d'un champ de longueur variable qui contient une liste de préfixes d'adresse IP pour les routes qui sont retirées du service. Chaque préfixe d'adresse IP est codé sous la forme d'un 2-uplet de la forme <longueur, préfixe>, dont les champs sont décrits ci-dessous :

                  +---------------------------+
| Length (1 octet) |
+---------------------------+
| Prefix (variable) |
+---------------------------+

L'utilisation et la signification de ces champs sont les suivantes :

a) Length (Longueur) :

Le champ Length indique la longueur en bits du préfixe d'adresse IP. Une longueur de zéro indique un préfixe qui correspond à toutes les adresses IP (avec un préfixe, lui-même, de zéro octet).

b) Prefix (Préfixe) :

Le champ Prefix contient un préfixe d'adresse IP, suivi du nombre minimum de bits de fin nécessaires pour faire tomber la fin du champ sur une limite d'octet. Notez que la valeur des bits de fin n'est pas pertinente.

Total Path Attribute Length (Longueur Totale des Attributs de Chemin) :

Cet entier non signé de 2 octets indique la longueur totale du champ Path Attributes en octets. Sa valeur permet de déterminer la longueur du champ Network Layer Reachability comme spécifié ci-dessous.

Une valeur de 0 indique que ni le champ Network Layer Reachability Information ni le champ Path Attribute ne sont présents dans ce message UPDATE.

Path Attributes (Attributs de Chemin) :

Une séquence d'attributs de chemin de longueur variable est présente dans chaque message UPDATE, à l'exception d'un message UPDATE qui ne transporte que les routes retirées. Chaque attribut de chemin est un triplet <type d'attribut, longueur d'attribut, valeur d'attribut> de longueur variable.

Le Type d'Attribut (Attribute Type) est un champ de deux octets qui consiste en l'octet Indicateurs d'Attribut (Attribute Flags), suivi de l'octet Code de Type d'Attribut (Attribute Type Code).

               0                   1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Attr. Flags |Attr. Type Code|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Le bit de poids fort (bit 0) de l'octet Indicateurs d'Attribut est le bit Optionnel (Optional bit). Il définit si l'attribut est optionnel (si réglé à 1) ou bien connu (si réglé à 0).

Le deuxième bit de poids fort (bit 1) de l'octet Indicateurs d'Attribut est le bit Transitif (Transitive bit). Il définit si un attribut optionnel est transitif (si réglé à 1) ou non transitif (si réglé à 0).

Pour les attributs bien connus, le bit Transitif DOIT être réglé à 1. (Voir la section 5 pour une discussion sur les attributs transitifs.)

Le troisième bit de poids fort (bit 2) de l'octet Indicateurs d'Attribut est le bit Partiel (Partial bit). Il définit si les informations contenues dans l'attribut transitif optionnel sont partielles (si réglé à 1) ou complètes (si réglé à 0). Pour les attributs bien connus et pour les attributs non transitifs optionnels, le bit Partiel DOIT être réglé à 0.

Le quatrième bit de poids fort (bit 3) de l'octet Indicateurs d'Attribut est le bit Longueur Étendue (Extended Length bit). Il définit si la Longueur d'Attribut est d'un octet (si réglé à 0) ou de deux octets (si réglé à 1).

Les quatre bits de poids faible de l'octet Indicateurs d'Attribut sont inutilisés. Ils DOIVENT être à zéro lors de l'envoi et DOIVENT être ignorés lors de la réception.

L'octet Code de Type d'Attribut contient le Code de Type d'Attribut. Les Codes de Type d'Attribut actuellement définis sont discutés dans la Section 5.

Si le bit Longueur Étendue de l'octet Indicateurs d'Attribut est réglé à 0, le troisième octet de l'Attribut de Chemin contient la longueur des données d'attribut en octets.

Si le bit Longueur Étendue de l'octet Indicateurs d'Attribut est réglé à 1, les troisième et quatrième octets de l'attribut de chemin contiennent la longueur des données d'attribut en octets.

Les octets restants de l'Attribut de Chemin représentent la valeur de l'attribut et sont interprétés selon les Indicateurs d'Attribut et le Code de Type d'Attribut. Les Codes de Type d'Attribut pris en charge, ainsi que leurs valeurs d'attribut et utilisations sont les suivants :

a) ORIGIN (Code de Type 1) :

ORIGIN est un attribut obligatoire bien connu qui définit l'origine des informations de chemin. L'octet de données peut prendre les valeurs suivantes :

  • Valeur 0 (IGP) - Les Informations de Accessibilité de Couche Réseau sont intérieures à l'AS d'origine
  • Valeur 1 (EGP) - Informations de Accessibilité de Couche Réseau apprises via le protocole EGP [RFC904]
  • Valeur 2 (INCOMPLETE) - Informations de Accessibilité de Couche Réseau apprises par d'autres moyens

L'utilisation de cet attribut est définie en 5.1.1.

b) AS_PATH (Code de Type 2) :

AS_PATH est un attribut obligatoire bien connu qui est composé d'une séquence de segments de chemin d'AS. Chaque segment de chemin d'AS est représenté par un triplet <type de segment de chemin, longueur de segment de chemin, valeur de segment de chemin>.

Le type de segment de chemin est un champ de longueur de 1 octet avec les valeurs suivantes définies :

  • Valeur 1 (AS_SET) : ensemble non ordonné d'AS qu'une route dans le message UPDATE a traversé
  • Valeur 2 (AS_SEQUENCE) : ensemble ordonné d'AS qu'une route dans le message UPDATE a traversé

La longueur de segment de chemin est un champ de longueur de 1 octet, contenant le nombre d'AS (pas le nombre d'octets) dans le champ valeur de segment de chemin.

Le champ valeur de segment de chemin contient un ou plusieurs numéros d'AS, chacun codé comme un champ de longueur de 2 octets.

L'utilisation de cet attribut est définie en 5.1.2.

c) NEXT_HOP (Code de Type 3) :

C'est un attribut obligatoire bien connu qui définit l'adresse IP (unicast) du routeur qui DEVRAIT être utilisé comme le prochain saut vers les destinations listées dans le champ Network Layer Reachability Information du message UPDATE.

L'utilisation de cet attribut est définie en 5.1.3.

d) MULTI_EXIT_DISC (Code de Type 4) :

C'est un attribut non transitif optionnel qui est un entier non signé de quatre octets. La valeur de cet attribut PEUT être utilisée par le Processus de Décision d'un locuteur BGP pour discriminer entre plusieurs points d'entrée vers un système autonome voisin.

L'utilisation de cet attribut est définie en 5.1.4.

e) LOCAL_PREF (Code de Type 5) :

LOCAL_PREF est un attribut bien connu qui est un entier non signé de quatre octets. Un locuteur BGP l'utilise pour informer ses autres pairs internes du degré de préférence du locuteur annonceur pour une route annoncée.

L'utilisation de cet attribut est définie en 5.1.5.

f) ATOMIC_AGGREGATE (Code de Type 6) :

ATOMIC_AGGREGATE est un attribut discrétionnaire bien connu de longueur 0.

L'utilisation de cet attribut est définie en 5.1.6.

g) AGGREGATOR (Code de Type 7) :

AGGREGATOR est un attribut transitif optionnel de longueur 6. L'attribut contient le dernier numéro d'AS qui a formé la route agrégée (codé sur 2 octets), suivi de l'adresse IP du locuteur BGP qui a formé la route agrégée (codé sur 4 octets). Cela DEVRAIT être la même adresse que celle utilisée pour l'Identifiant BGP du locuteur.

L'utilisation de cet attribut est définie en 5.1.7.

Network Layer Reachability Information (Informations de Accessibilité de Couche Réseau) :

Ce champ de longueur variable contient une liste de préfixes d'adresse IP. La longueur, en octets, des Informations de Accessibilité de Couche Réseau n'est pas codée explicitement, mais peut être calculée comme :

Longueur du message UPDATE - 23 - Longueur Totale des Attributs de Chemin - Longueur des Routes Retirées

où Longueur du message UPDATE est la valeur codée dans l'en-tête BGP de taille fixe, Longueur Totale des Attributs de Chemin, et Longueur des Routes Retirées sont les valeurs codées dans la partie variable du message UPDATE, et 23 est une longueur combinée de l'en-tête BGP de taille fixe, du champ Longueur Totale des Attributs de Chemin, et du champ Longueur des Routes Retirées.

Les informations d'accessibilité sont codées sous la forme d'un ou plusieurs 2-uplets de la forme <longueur, préfixe>, dont les champs sont décrits ci-dessous :

                  +---------------------------+
| Length (1 octet) |
+---------------------------+
| Prefix (variable) |
+---------------------------+

L'utilisation et la signification de ces champs sont les suivantes :

a) Length (Longueur) :

Le champ Length indique la longueur en bits du préfixe d'adresse IP. Une longueur de zéro indique un préfixe qui correspond à toutes les adresses IP (avec un préfixe, lui-même, de zéro octet).

b) Prefix (Préfixe) :

Le champ Prefix contient un préfixe d'adresse IP, suivi par suffisamment de bits de fin pour faire tomber la fin du champ sur une limite d'octet. Notez que la valeur des bits de fin n'est pas pertinente.

La longueur minimale du message UPDATE est de 23 octets -- 19 octets pour l'en-tête fixe + 2 octets pour la Longueur des Routes Retirées + 2 octets pour la Longueur Totale des Attributs de Chemin (la valeur de la Longueur des Routes Retirées est 0 et la valeur de la Longueur Totale des Attributs de Chemin est 0).

Un message UPDATE peut annoncer, au plus, un ensemble d'attributs de chemin, mais plusieurs destinations, à condition que les destinations partagent ces attributs. Tous les attributs de chemin contenus dans un message UPDATE donné s'appliquent à toutes les destinations transportées dans le champ NLRI du message UPDATE.

Un message UPDATE peut lister plusieurs routes qui doivent être retirées du service. Chaque telle route est identifiée par sa destination (exprimée sous forme de préfixe IP), qui identifie sans ambiguïté la route dans le contexte de la connexion locuteur BGP - locuteur BGP à laquelle elle a été précédemment annoncée.

Un message UPDATE pourrait annoncer uniquement des routes qui doivent être retirées du service, auquel cas le message n'inclura pas d'attributs de chemin ou d'Informations de Accessibilité de Couche Réseau. Inversement, il peut annoncer uniquement une route faisable, auquel cas le champ WITHDRAWN ROUTES n'a pas besoin d'être présent.

Un message UPDATE NE DEVRAIT PAS inclure le même préfixe d'adresse dans les champs WITHDRAWN ROUTES et Network Layer Reachability Information. Cependant, un locuteur BGP DOIT être capable de traiter les messages UPDATE sous cette forme. Un locuteur BGP DEVRAIT traiter un message UPDATE de cette forme comme si les WITHDRAWN ROUTES ne contenaient pas le préfixe d'adresse.