A.2. Procedure comuni di distribuzione delle etichette
Questa sezione specifica le procedure di utilità usate dagli algoritmi che gestiscono gli eventi di distribuzione delle etichette.
A.2.1. Send_Label
Riepilogo:
La procedura Send_Label alloca, se possibile, un'etichetta per una FEC per un peer LDP e invia al peer una mappatura di etichette per la FEC. Se l'LSR non è in grado di allocare l'etichetta e se ha una label request in sospeso dal peer, invia al peer LDP una notifica No Label Resources.
Parametri:
-
Peer. Il peer LDP a cui inviare la mappatura di etichette.
-
FEC. La FEC per cui inviare una mappatura di etichette.
-
Attributes. Gli attributi da includere con la mappatura di etichette.
Contesto aggiuntivo:
-
LSR. L'LSR che esegue la procedura.
-
Label. L'etichetta allocata e inviata a Peer.
Algoritmo:
SL.1 L'LSR ha un'etichetta da allocare? In caso negativo, vai a SL.9.
SL.2 Alloca Label e associala alla FEC.
SL.3 Installa Label per l'uso in inoltro/commutazione.
SL.4 Esegui la procedura Send_Message (Peer, Label Mapping, FEC, Label, Attributes).
SL.5 Registra che la mappatura di etichette per la FEC con Label e Attributes è stata inviata a Peer.
SL.6 L'LSR ha una registrazione di una label request per la FEC da Peer contrassegnata come in sospeso? In caso negativo, vai a SL.8.
SL.7 Elimina la registrazione della label request in sospeso per la FEC da Peer.
SL.8 Restituisci successo.
SL.9 L'LSR ha una label request per la FEC da Peer contrassegnata come in sospeso? In caso negativo, vai a SL.13.
SL.10 Esegui la procedura Send_Notification (Peer, No Label Resources).
SL.11 Elimina la registrazione della label request in sospeso per la FEC da Peer.
SL.12 Registra che la notifica No Label Resources è stata inviata a Peer. Vai a SL.14.
SL.13 Registra che la mappatura di etichette per la FEC e Attributes è necessaria per Peer, ma che non vi sono risorse di etichette. (Vedere la Nota 1.)
SL.14 Restituisci fallimento.
Nota:
- SL.13 gestisce il caso della distribuzione di etichette Downstream Unsolicited quando l'LSR non è in grado di allocare un'etichetta per una FEC da inviare a un Peer.
A.2.2. Send_Label_Request
Riepilogo:
Un LSR usa la procedura Send_Label_Request per inviare a un peer LDP una richiesta di un'etichetta per una FEC, se attualmente è consentito farlo.
Parametri:
-
Peer. Il peer LDP a cui inviare la label request.
-
FEC. La FEC per cui inviare una label request.
-
Attributes. Gli attributi da includere nella label request, ad esempio Hop Count, Path Vector.
Contesto aggiuntivo:
- LSR. L'LSR che esegue la procedura.
Algoritmo:
SLRq.1 Una label request per la FEC è stata precedentemente inviata a Peer ed è contrassegnata come in sospeso? In caso affermativo, restituisci successo. (Vedere la Nota 1.)
SLRq.2 La registrazione di stato che indica che è possibile inviare label request a Peer è impostata? In caso negativo, vai a SLRq.6
SLRq.3 Esegui la procedura Send_Message (Peer, Label Request, FEC, Attributes).
SLRq.4 Registra che la label request per la FEC è stata inviata a Peer e contrassegnala come in sospeso.
SLRq.5 Restituisci successo.
SLRq.6 Rinvia la label request registrando che la mappatura di etichette per la FEC e Attributes da Peer è necessaria ma che non sono disponibili risorse di etichette.
SLRq.7 Restituisci fallimento.
Nota:
- Se l'LSR è un LSR non soggetto a merge, deve distinguere tra i tentativi di inviare label request per una FEC innescati da peer LDP a monte diversi e le richieste duplicate. Questa procedura non invierà una label request duplicata.
A.2.3. Send_Label_Withdraw
Riepilogo:
Un LSR usa la procedura Send_Label_Withdraw per ritirare un'etichetta per una FEC da un peer LDP. A tale scopo, l'LSR invia al peer un messaggio Label Withdraw.
Parametri:
-
Peer. Il peer LDP a cui inviare il label withdraw.
-
FEC. La FEC per cui viene ritirata un'etichetta.
-
Label. L'etichetta che viene ritirata.
Contesto aggiuntivo:
- LSR. L'LSR che esegue la procedura.
Algoritmo:
SWd.1 Esegui la procedura Send_Message (Peer, Label Withdraw, FEC, Label).
SWd.2 Registra che il label withdraw per la FEC è stato inviato a Peer e contrassegnalo come in sospeso.
A.2.4. Send_Notification
Riepilogo:
Un LSR usa la procedura Send_Notification per inviare a un peer LDP un messaggio Notification.
Parametri:
-
Peer. Il peer LDP a cui inviare il messaggio Notification.
-
Status. Il codice di stato da includere nel messaggio Notification.
Contesto aggiuntivo:
Nessuno.
Algoritmo:
SNt.1 Esegui la procedura Send_Message (Peer, Notification, Status)
A.2.5. Send_Message
Riepilogo:
Un LSR usa la procedura Send_Message per inviare a un peer LDP un messaggio LDP.
Parametri:
-
Peer. Il peer LDP a cui inviare il messaggio.
-
Message Type. Il tipo di messaggio da inviare.
-
Altri contenuti del messaggio . . . .
Contesto aggiuntivo:
Nessuno.
Algoritmo:
Questa procedura è il mezzo con cui un LSR invia un messaggio LDP del tipo specificato al peer LDP specificato.
A.2.6. Check_Received_Attributes
Riepilogo:
Controlla gli attributi ricevuti in un messaggio Label Mapping o Label Request. Se gli attributi includono un Hop Count o un Path Vector, esegui un controllo di Loop Detection. Se viene rilevato un loop, fai in modo che venga inviato un messaggio Notification Loop Detected a MsgSource.
Parametri:
-
MsgSource. Il peer LDP che ha inviato il messaggio.
-
MsgType. Il tipo di messaggio ricevuto.
-
RAttributes. Gli attributi nel messaggio.
Contesto aggiuntivo:
-
LSR Id. L'LSR Id univoco di questo LSR.
-
Hop Count. L'Hop Count, se presente, negli attributi ricevuti.
-
Path Vector. Il Path Vector, se presente, negli attributi ricevuti.
Algoritmo:
CRa.1 RAttributes includono un Hop Count? In caso negativo, vai a CRa.5.
CRa.2 L'Hop Count supera il numero massimo di hop consentito? In caso affermativo, vai a CRa.6.
CRa.3 RAttributes includono un Path Vector? In caso negativo, vai a CRa.5.
CRa.4 Il Path Vector include LSR Id? OPPURE La lunghezza del Path Vector supera la lunghezza massima consentita? In caso affermativo, vai a CRa.6
CRa.5 Restituisci No Loop Detected.
CRa.6 MsgType è LabelMapping? In caso affermativo, vai a CRa.8. (Vedere la Nota 1.)
CRa.7 Esegui la procedura Send_Notification (MsgSource, Loop Detected).
CRa.8 Restituisci Loop Detected.
CRa.9 FINE.
Nota:
- Quando gli attributi controllati sono stati ricevuti in un messaggio Label Mapping, l'LSR invia la notifica Loop Detected in un TLV Status Code all'interno di un messaggio Label Release. (Vedere la sezione "Receive Label Mapping".)
A.2.7. Prepare_Label_Request_Attributes
Riepilogo:
Questa procedura è usata ogni volta che una Label Request deve essere inviata a un Peer per calcolare l'Hop Count e il Path Vector, se presenti, da includere nel messaggio.
Parametri:
-
Peer. Il peer LDP a cui inviare il messaggio.
-
FEC. La FEC per cui inviare una label request.
-
RAttributes. Gli attributi che questo LSR associa all'LSP per la FEC.
-
SAttributes. Gli attributi da includere nel messaggio Label Request.
Contesto aggiuntivo:
- LSR Id. L'LSR Id univoco di questo LSR.
Algoritmo:
PRqA.1 L'Hop Count è richiesto per questo Peer? (Vedere la Nota 1.) OPPURE RAttributes includono un Hop Count? OPPURE Il rilevamento dei loop è configurato sull'LSR? In caso negativo, vai a PRqA.14.
PRqA.2 L'LSR è l'ingress per la FEC? In caso negativo, vai a PRqA.6.
PRqA.3 Includi Hop Count di 1 in SAttributes.
PRqA.4 Il rilevamento dei loop è configurato sull'LSR? In caso negativo, vai a PRqA.14.
PRqA.5 L'LSR è capace di merge? In caso affermativo, vai a PRqA.14. In caso negativo, vai a PRqA.13.
PRqA.6 RAttributes includono un Hop Count? In caso negativo, vai a PRqA.8.
PRqA.7 Incrementa l'Hop Count di RAttributes e copia l'Hop Count risultante in SAttributes. (Vedere la Nota 2.) Vai a PRqA.9.
PRqA.8 Includi Hop Count sconosciuto (0) in SAttributes.
PRqA.9 Il rilevamento dei loop è configurato sull'LSR? In caso negativo, vai a PRqA.14.
PRqA.10 RAttributes hanno un Path Vector? In caso affermativo, vai a PRqA.12.
PRqA.11 L'LSR è capace di merge? In caso affermativo, vai a PRqA.14. In caso negativo, vai a PRqA.13.
PRqA.12 Aggiungi LSR Id all'inizio del Path Vector da RAttributes e copia il Path Vector risultante in SAttributes. Vai a PRqA.14.
PRqA.13 Includi in SAttributes un Path Vector di lunghezza 1 contenente LSR Id.
PRqA.14 FINE.
Note:
-
Il collegamento con Peer può richiedere che l'Hop Count sia incluso nei messaggi Label Request; per esempio, vedere [RFC3035] e [RFC3034].
-
Per l'aritmetica dell'hop count, sconosciuto + 1 = sconosciuto.
A.2.8. Prepare_Label_Mapping_Attributes
Riepilogo:
Questa procedura è usata ogni volta che una Label Mapping deve essere inviata a un Peer per calcolare l'Hop Count e il Path Vector, se presenti, da includere nel messaggio.
Parametri:
-
Peer. Il peer LDP a cui inviare il messaggio.
-
FEC. La FEC per cui inviare una label request.
-
RAttributes. Gli attributi che questo LSR associa all'LSP per la FEC.
-
SAttributes. Gli attributi da includere nel messaggio Label Mapping.
-
IsPropagating. L'LSR sta inviando il messaggio Label Mapping per propagarne uno ricevuto dal next hop della FEC.
-
PrevHopCount. L'Hop Count, se presente, che questo LSR associa all'LSP per la FEC.
Contesto aggiuntivo:
- LSR Id. L'LSR Id univoco di questo LSR.
Algoritmo:
PMpA.1 I RAttributes includono TLV sconosciuti? In caso negativo, vai a PMpA.4.
PMpA.2 Le impostazioni dei bit U e F richiedono l'inoltro di questi TLV? In caso negativo, vai a PMpA.4.
PMpA.3 Copia i TLV sconosciuti in SAttributes.
PMpA.4 L'Hop Count è richiesto per questo Peer? (vedere la Nota 1.) OPPURE RAttributes includono un Hop Count? OPPURE Il rilevamento dei loop è configurato sull'LSR? In caso negativo, vai a PMpA.24.
PMpA.5 L'LSR è l'egress per la FEC? In caso negativo, vai a PMpA.7.
PMpA.6 Includi Hop Count di 1 in SAttributes. Vai a PMpA.24.
PMpA.7 RAttributes hanno un Hop Count? In caso negativo, vai a PMpA.11.
PMpA.8 L'LSR è un membro dell'edge set di un dominio LSR i cui LSR non effettuano il TTL decrement E Peer è in quel dominio? (Vedere la Nota 2.) In caso negativo, vai a PMpA.10.
PMpA.9 Includi Hop Count di 1 in SAttributes. Vai a PMpA.12.
PMpA.10 Incrementa l'Hop Count di RAttributes e copia l'Hop Count risultante in SAttributes. (Vedere la Nota 2.) Vai a PMpA.12.
PMpA.11 Includi Hop Count sconosciuto (0) in SAttributes.
PMpA.12 Il rilevamento dei loop è configurato sull'LSR? In caso negativo, vai a PMpA.24.
PMpA.13 RAttributes hanno un Path Vector? In caso affermativo, vai a PMpA.22.
PMpA.14 L'LSR sta propagando un Label Mapping ricevuto? In caso negativo, vai a PMpA.23.
PMpA.15 L'LSR supporta il merge? In caso negativo, vai a PMpA.17.
PMpA.16 L'LSR ha precedentemente inviato un Label Mapping per la FEC a Peer? In caso negativo, vai a PMpA.23.
PMpA.17 RAttributes includono un Hop Count? In caso negativo, vai a PMpA.24.
PMpA.18 L'Hop Count in RAttributes è sconosciuto (0)? In caso affermativo, vai a PMpA.23.
PMpA.19 L'LSR ha precedentemente inviato un Label Mapping per la FEC a Peer? In caso negativo, vai a PMpA.24.
PMpA.20 L'Hop Count in RAttributes è diverso da PrevHopCount? In caso negativo, vai a PMpA.24.
PMpA.21 L'Hop Count in RAttributes è > PrevHopCount? OPPURE PrevHopCount è sconosciuto (0)? In caso negativo, vai a PMpA.24.
PMpA.22 Aggiungi LSR Id all'inizio del Path Vector da RAttributes e copia il Path Vector risultante in SAttributes. Vai a PMpA.24.
PMpA.23 Includi in SAttributes un Path Vector di lunghezza 1 contenente LSR Id.
PMpA.24 FINE.
Note:
-
Il collegamento con Peer può richiedere che l'Hop Count sia incluso nei messaggi Label Mapping; per esempio, vedere [RFC3035] e [RFC3034].
-
Se l'LSR si trova al bordo di una cloud di LSR che non effettuano il TTL-decrement e sta propagando il messaggio Label Mapping a monte nella cloud, imposta l'Hop Count a 1 affinché l'Hop Count attraverso la cloud sia calcolato correttamente. Ciò garantisce una corretta gestione del TTL per i pacchetti inoltrati attraverso la parte dell'LSP che attraversa la cloud.
-
Per l'aritmetica dell'hop count, sconosciuto + 1 = sconosciuto.