Passa al contenuto principale

3.5.1. Messaggio Notification

Un LSR invia un messaggio Notification per informare un peer LDP di un evento significativo. Un messaggio Notification segnala un errore fatale o fornisce informazioni indicative, come l'esito dell'elaborazione di un messaggio LDP o lo stato della sessione LDP.

La codifica del messaggio Notification è:

 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 Valore a 32 bit usato per identificare questo messaggio.

Status TLV Indica l'evento segnalato. La codifica del TLV Status è specificata nella sezione "Status TLV".

Optional Parameters Questo campo di lunghezza variabile contiene 0 o più parametri, ciascuno codificato come TLV. I seguenti parametri opzionali sono generici e possono comparire in qualsiasi messaggio Notification:

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

Possono comparire altri parametri opzionali, specifici del particolare evento segnalato dai messaggi Notification. Questi sono descritti altrove.

Extended Status Il valore di 4 ottetti è un codice di stato esteso (Extended Status Code) che codifica informazioni aggiuntive che integrano le informazioni di stato contenute nel Notification Status Code.

Returned PDU Un LSR usa questo parametro per restituire parte di una PDU LDP all'LSR che l'ha inviata. Il valore di questo TLV è l'intestazione della PDU e tanti dati della PDU successivi all'intestazione quanti sono appropriati per la condizione segnalata dal messaggio Notification.

Returned Message Un LSR usa questo parametro per restituire parte di un messaggio LDP all'LSR che l'ha inviato. Il valore di questo TLV è i campi message type e length e tanti dati del messaggio successivi ai campi type e length quanti sono appropriati per la condizione segnalata dal messaggio Notification.

3.5.1.1. Procedure del messaggio Notification​

Se un LSR incontra una condizione che richiede di notificare al proprio peer informazioni indicative o di errore, invia al peer un messaggio Notification contenente un TLV Status che codifica l'informazione e, facoltativamente, TLV aggiuntivi che forniscono maggiori informazioni sulla condizione.

Se la condizione è un errore fatale, lo Status Code trasportato nel Notification lo indicherà. In questo caso, dopo aver inviato il messaggio Notification, l'LSR DOVREBBE (SHOULD) terminare la sessione LDP chiudendo la connessione TCP della sessione e scartare tutto lo stato associato alla sessione, comprese tutte le associazioni etichetta-FEC apprese tramite la sessione.

Quando un LSR riceve un messaggio Notification che trasporta uno Status Code che indica un errore fatale, DOVREBBE (SHOULD) terminare immediatamente la sessione LDP chiudendo la connessione TCP della sessione e scartare tutto lo stato associato alla sessione, comprese tutte le associazioni etichetta-FEC apprese tramite la sessione.

L'affermazione precedente non si applica all'elaborazione del messaggio Shutdown nella procedura di inizializzazione della sessione. Quando un LSR riceve un messaggio Shutdown durante l'inizializzazione della sessione, DOVREBBE (SHOULD) trasmettere un messaggio Shutdown e poi chiudere la connessione di trasporto.

3.5.1.2. Eventi segnalati dai messaggi Notification​

Ai fini descrittivi è utile classificare gli eventi segnalati dai messaggi Notification nelle seguenti categorie.

3.5.1.2.1. PDU o messaggio malformato​

Le PDU o i messaggi LDP malformati che fanno parte del meccanismo di LDP Discovery vengono gestiti scartandoli silenziosamente.

Una PDU LDP ricevuta su una connessione TCP per una sessione LDP è malformata se:

  • L'LDP Identifier nell'intestazione della PDU è sconosciuto al ricevitore, oppure è noto ma non è l'LDP Identifier che il ricevitore associa al peer LDP per questa sessione LDP. Questo è un errore fatale segnalato dallo Status Code Bad LDP Identifier.

  • La versione del protocollo LDP non è supportata dal ricevitore, oppure è supportata ma non è la versione negoziata per la sessione durante l'instaurazione della sessione. Questo è un errore fatale segnalato dallo Status Code Bad Protocol Version.

  • Il campo PDU Length è troppo piccolo (< 14) o troppo grande (> lunghezza massima della PDU). Questo è un errore fatale segnalato dallo Status Code Bad PDU Length. La sezione "Initialization Message" descrive come viene determinata la lunghezza massima della PDU per una sessione.

Un messaggio LDP è malformato se:

  • Il Message Type è sconosciuto.

    Se il Message Type è < 0x8000 (bit di ordine alto = 0), si tratta di un errore segnalato dallo Status Code Unknown Message Type.

    Se il Message Type è >= 0x8000 (bit di ordine alto = 1), il messaggio viene scartato silenziosamente.

  • Il Message Length è troppo grande, cioè indica che il messaggio si estende oltre la fine della PDU LDP che lo contiene. Questo è un errore fatale segnalato dallo Status Code Bad Message Length.

  • Il Message Length è troppo piccolo, cioè minore del più piccolo componente di valore possibile. Questo è un errore fatale segnalato dallo Status Code Bad Message Length.

  • Al messaggio mancano uno o più Mandatory Parameters. Questo è un errore non fatale segnalato dallo Status Code Missing Message Parameters.

3.5.1.2.2. TLV sconosciuto o malformato​

I TLV malformati contenuti nei messaggi LDP che fanno parte del meccanismo di LDP Discovery vengono gestiti scartando silenziosamente il messaggio che li contiene.

Un TLV contenuto in un messaggio LDP ricevuto su una connessione TCP di un LDP è malformato se:

  • Il TLV Length è troppo grande, cioè indica che il TLV si estende oltre la fine del messaggio che lo contiene. Questo è un errore fatale segnalato dallo Status Code Bad TLV Length.

  • Il tipo di TLV è sconosciuto.

    Se il tipo di TLV è < 0x8000 (bit di ordine alto = 0), si tratta di un errore segnalato dallo Status Code Unknown TLV.

    Se il tipo di TLV è >= 0x8000 (bit di ordine alto = 1), il TLV viene scartato silenziosamente.

  • Il TLV Value è malformato. Ciò si verifica quando il ricevitore gestisce il TLV ma non riesce a decodificare il TLV Value. Questo è interpretato come indicativo di un bug nell'LSR mittente o ricevente. È un errore fatale segnalato dallo Status Code Malformed TLV Value.

3.5.1.2.3. Scadenza del timer KeepAlive della sessione​

Questo è un errore fatale segnalato dallo Status Code KeepAlive Timer Expired.

3.5.1.2.4. Chiusura unilaterale della sessione​

Questo è un evento fatale segnalato dallo Status Code Shutdown. Il messaggio Notification può facoltativamente includere un TLV Extended Status per fornire una motivazione dello Shutdown. L'LSR mittente termina la sessione immediatamente dopo aver inviato il Notification.

3.5.1.2.5. Eventi del messaggio Initialization​

La negoziazione di inizializzazione della sessione (vedere la sezione "Session Initialization") può fallire se i parametri di sessione ricevuti nel messaggio Initialization non sono accettabili. Questo è un errore fatale. Lo Status Code specifico dipende dal parametro ritenuto non accettabile ed è definito nelle sezioni "Initialization Message".

3.5.1.2.6. Eventi risultanti da altri messaggi​

Messaggi diversi dal messaggio Initialization possono dar luogo a eventi che devono essere segnalati ai peer LDP tramite messaggi Notification. Questi eventi e gli Status Code usati nei messaggi Notification per segnalarli sono descritti nelle sezioni che descrivono tali messaggi.

3.5.1.2.7. Errori interni​

Un'implementazione LDP può essere in grado di rilevare condizioni problematiche specifiche della propria implementazione. Quando tale condizione impedisce a un'implementazione di interagire correttamente con un peer, l'implementazione dovrebbe, quando è in grado di farlo, usare lo Status Code Internal Error per segnalarlo al peer. Questo è un errore fatale.

3.5.1.2.8. Eventi vari​

Sono eventi che non rientrano in nessuna delle categorie precedenti. Non ci sono eventi vari definiti in questa versione del protocollo.