Aller au contenu principal

3.5.1. Message Notification

Un LSR envoie un message Notification pour informer un pair LDP d'un événement significatif. Un message Notification signale une erreur fatale ou fournit des informations à titre indicatif, telles que le résultat du traitement d'un message LDP ou l'état de la session LDP.

L'encodage du message Notification est :

 0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0| Notification (0x0001) | Message Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Status (TLV) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Optional Parameters |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Message ID Valeur de 32 bits utilisée pour identifier ce message.

Status TLV Indique l'événement signalé. L'encodage du Status TLV est spécifié dans la section "Status TLV".

Optional Parameters Ce champ de longueur variable contient 0 ou plusieurs paramètres, chacun encodé sous forme de TLV. Les Optional Parameters suivants sont génériques et peuvent apparaître dans n'importe quel message Notification :

  Optional Parameter     Type     Length  Value
      Extended Status        0x0301    4      See below
Returned PDU 0x0302 var See below
Returned Message 0x0303 var See below

D'autres Optional Parameters, spécifiques à l'événement particulier signalé par le message Notification, peuvent apparaître. Ils sont décrits ailleurs.

Extended Status La valeur de 4 octets est un Extended Status Code qui encode des informations supplémentaires complétant les informations de statut contenues dans le Notification Status Code.

Returned PDU Un LSR utilise ce paramètre pour renvoyer une partie d'un PDU LDP au LSR qui l'a envoyé. La valeur de ce TLV est l'en-tête du PDU et autant de données du PDU suivant l'en-tête qu'il est approprié pour la condition signalée par le message Notification.

Returned Message Un LSR utilise ce paramètre pour renvoyer une partie d'un message LDP au LSR qui l'a envoyé. La valeur de ce TLV est constituée des champs de type et de longueur du message et d'autant de données du message suivant les champs de type et de longueur qu'il est approprié pour la condition signalée par le message Notification.

3.5.1.1. Procédures du message Notification​

Si un LSR rencontre une condition l'obligeant à notifier à son pair des informations indicatives ou d'erreur, il envoie au pair un message Notification contenant un Status TLV qui encode l'information et, éventuellement, des TLV supplémentaires fournissant davantage d'informations sur la condition.

Si la condition est une erreur fatale, le Status Code transporté dans la Notification l'indiquera. Dans ce cas, après avoir envoyé le message Notification, le LSR DEVRAIT (SHOULD) terminer la session LDP en fermant la connexion TCP de la session et écarter tout état associé à la session, y compris toutes les liaisons label-FEC apprises via la session.

Lorsqu'un LSR reçoit un message Notification qui transporte un Status Code indiquant une erreur fatale, il DEVRAIT (SHOULD) terminer immédiatement la session LDP en fermant la connexion TCP de la session et écarter tout état associé à la session, y compris toutes les liaisons label-FEC apprises via la session.

L'affirmation ci-dessus ne s'applique pas au traitement du message Shutdown dans la procédure d'initialisation de session. Lorsqu'un LSR reçoit un message Shutdown pendant l'initialisation de session, il DEVRAIT (SHOULD) transmettre un message Shutdown puis fermer la connexion de transport.

3.5.1.2. Événements signalés par les messages Notification​

Il est utile, à des fins descriptives, de classer les événements signalés par les messages Notification dans les catégories suivantes.

3.5.1.2.1. PDU ou message malformé​

Les PDU ou messages LDP malformés qui font partie du mécanisme de découverte LDP sont traités en les écartant silencieusement.

Un PDU LDP reçu sur une connexion TCP pour une session LDP est malformé si :

  • Le LDP Identifier de l'en-tête du PDU est inconnu du récepteur, ou bien il est connu mais n'est pas le LDP Identifier que le récepteur associe au pair LDP pour cette session LDP. Il s'agit d'une erreur fatale signalée par le Status Code Bad LDP Identifier.

  • La version du protocole LDP n'est pas prise en charge par le récepteur, ou bien elle est prise en charge mais n'est pas la version négociée pour la session lors de l'établissement de la session. Il s'agit d'une erreur fatale signalée par le Status Code Bad Protocol Version.

  • Le champ PDU Length est trop petit (< 14) ou trop grand (> longueur maximale de PDU). Il s'agit d'une erreur fatale signalée par le Status Code Bad PDU Length. La section "Initialization Message" décrit comment la longueur maximale de PDU pour une session est déterminée.

Un message LDP est malformé si :

  • Le Message Type est inconnu.

    Si le Message Type est < 0x8000 (bit de poids fort = 0), il s'agit d'une erreur signalée par le Status Code Unknown Message Type.

    Si le Message Type est >= 0x8000 (bit de poids fort = 1), le message est écarté silencieusement.

  • Le Message Length est trop grand, c'est-à-dire qu'il indique que le message s'étend au-delà de la fin du PDU LDP qui le contient. Il s'agit d'une erreur fatale signalée par le Status Code Bad Message Length.

  • Le Message Length est trop petit, c'est-à-dire inférieur au plus petit composant de valeur possible. Il s'agit d'une erreur fatale signalée par le Status Code Bad Message Length.

  • Le message est dépourvu d'un ou plusieurs Mandatory Parameters. Il s'agit d'une erreur non fatale signalée par le Status Code Missing Message Parameters.

3.5.1.2.2. TLV inconnu ou malformé​

Les TLV malformés contenus dans les messages LDP qui font partie du mécanisme de découverte LDP sont traités en écartant silencieusement le message qui les contient.

Un TLV contenu dans un message LDP reçu sur une connexion TCP d'une session LDP est malformé si :

  • Le TLV Length est trop grand, c'est-à-dire qu'il indique que le TLV s'étend au-delà de la fin du message qui le contient. Il s'agit d'une erreur fatale signalée par le Status Code Bad TLV Length.

  • Le type de TLV est inconnu.

    Si le type de TLV est < 0x8000 (bit de poids fort = 0), il s'agit d'une erreur signalée par le Status Code Unknown TLV.

    Si le type de TLV est >= 0x8000 (bit de poids fort = 1), le TLV est abandonné silencieusement.

  • Le TLV Value est malformé. Cela se produit lorsque le récepteur traite le TLV mais ne parvient pas à décoder le TLV Value. Ceci est interprété comme révélateur d'un bogue dans le LSR émetteur ou récepteur. Il s'agit d'une erreur fatale signalée par le Status Code Malformed TLV Value.

3.5.1.2.3. Expiration du Session KeepAlive Timer​

Il s'agit d'une erreur fatale signalée par le Status Code KeepAlive Timer Expired.

3.5.1.2.4. Arrêt unilatéral de session​

Il s'agit d'un événement fatal signalé par le Status Code Shutdown. Le message Notification peut éventuellement inclure un Extended Status TLV pour fournir une raison du Shutdown. Le LSR émetteur termine la session immédiatement après avoir envoyé la Notification.

3.5.1.2.5. Événements liés au message Initialization​

La négociation d'initialisation de session (voir la section "Session Initialization") peut échouer si les paramètres de session reçus dans le message Initialization sont inacceptables. Il s'agit d'une erreur fatale. Le Status Code spécifique dépend du paramètre jugé inacceptable et est défini dans les sections "Initialization Message".

3.5.1.2.6. Événements résultant d'autres messages​

Les messages autres que le message Initialization peuvent produire des événements qui doivent être signalés aux pairs LDP via des messages Notification. Ces événements et les Status Codes utilisés dans les messages Notification pour les signaler sont décrits dans les sections qui décrivent ces messages.

3.5.1.2.7. Erreurs internes​

Une implémentation LDP peut être capable de détecter des conditions problématiques propres à son implémentation. Lorsqu'une telle condition empêche une implémentation d'interagir correctement avec un pair, l'implémentation devrait, lorsqu'elle est capable de le faire, utiliser le Status Code Internal Error pour le signaler au pair. Il s'agit d'une erreur fatale.

3.5.1.2.8. Événements divers​

Ce sont des événements qui n'entrent dans aucune des catégories ci-dessus. Aucun événement divers n'est défini dans cette version du protocole.