Passa al contenuto principale

4. Packet Processing (Elaborazione dei pacchetti)

4. Packet Processing (Elaborazione dei pacchetti)

Questa sezione descrive l'elaborazione dei pacchetti SRv6 nei nodi sorgente SR, di transito e nei nodi endpoint di segmento SR.

4.1. SR Source Node (Nodo sorgente SR)

Un nodo sorgente indirizza un pacchetto verso una SR Policy. Se la SR Policy risulta in una Segment List contenente un singolo segmento, e non c'è bisogno di aggiungere informazioni al flag SRH o aggiungere TLV, la DA è impostata sulla singola voce della Segment List, e il SRH PUÒ essere omesso.

Quando necessario, il SRH viene creato come segue:

I campi Next Header e Hdr Ext Len sono impostati come specificato in [RFC8200].

Il campo Routing Type è impostato a 4.

La DA del pacchetto è impostata con il valore del primo segmento.

Il primo elemento della SRH Segment List è il segmento finale. Il secondo elemento è il penultimo segmento, e così via.

Il campo Segments Left è impostato a n-1, dove n è il numero di elementi nella SR Policy.

Il campo Last Entry è impostato a n-1, dove n è il numero di elementi nella SR Policy.

I TLV (incluso HMAC) possono essere impostati secondo le loro specifiche.

Il pacchetto viene inoltrato verso l'indirizzo di destinazione del pacchetto (il primo segmento).

4.1.1. Reduced SRH (SRH ridotto)

Quando una sorgente non richiede che l'intero elenco SID sia preservato nel SRH, può essere utilizzato un SRH ridotto.

Un SRH ridotto non contiene il primo segmento della SR Policy correlata (il primo segmento è già nella DA dell'intestazione IPv6), e il campo Last Entry è impostato a n-2, dove n è il numero di elementi nella SR Policy.

4.2. Transit Node (Nodo di transito)

Come specificato in [RFC8200], l'unico nodo autorizzato a ispezionare l'intestazione di estensione di routing (e quindi il SRH) è il nodo corrispondente alla DA del pacchetto. Qualsiasi altro nodo di transito NON DEVE ispezionare l'intestazione di routing sottostante e DEVE inoltrare il pacchetto verso la DA secondo la sua tabella di routing IPv6.

Quando un SID si trova nell'indirizzo di destinazione di un'intestazione IPv6 di un pacchetto, viene instradato attraverso una rete IPv6 come un indirizzo IPv6. I SID, o i prefissi che coprono i SID, e la loro raggiungibilità possono essere distribuiti con mezzi al di fuori dell'ambito di questo documento. Ad esempio, [RFC5308] o [RFC5340] possono essere utilizzati per annunciare un prefisso che copre i SID su un nodo.

4.3. SR Segment Endpoint Node (Nodo endpoint di segmento SR)

Senza vincolare i dettagli di un'implementazione, il nodo endpoint di segmento SR crea voci della Forwarding Information Base (FIB) per i suoi SID locali.

Quando un nodo compatibile SRv6 riceve un pacchetto IPv6, esegue una ricerca di corrispondenza del prefisso più lungo sull'indirizzo di destinazione del pacchetto. Questa ricerca può restituire uno dei seguenti:

  • Una voce FIB che rappresenta un SRv6 SID istanziato localmente

  • Una voce FIB che rappresenta un'interfaccia locale, non istanziata localmente come un SRv6 SID

  • Una voce FIB che rappresenta un percorso non locale

  • Nessuna corrispondenza

4.3.1. FIB Entry Is a Locally Instantiated SRv6 SID (La voce FIB è un SRv6 SID istanziato localmente)

Questo documento e questa sezione definiscono un singolo SRv6 SID. I documenti futuri possono definire SRv6 SID aggiuntivi. In tal caso, l'intero contenuto di questa sezione sarà definito in quel documento.

Se la voce FIB rappresenta un SRv6 SID istanziato localmente, elaborare la catena di intestazioni successive dell'intestazione IPv6 come definito nella Sezione 4 di [RFC8200]. La Sezione 4.3.1.1 descrive come elaborare un SRH; la Sezione 4.3.1.2 descrive come elaborare un'intestazione di livello superiore o l'assenza di un Next Header.

L'elaborazione di questo SID modifica il Segments Left e, se configurato per elaborare i TLV, può modificare i "dati di lunghezza variabile" dei tipi TLV che cambiano durante il percorso. Pertanto, Segments Left è mutabile, e i TLV che cambiano durante il percorso sono mutabili. Il resto del SRH (Flags, Tag, Segment List, e i TLV che non cambiano durante il percorso) sono immutabili durante l'elaborazione di questo SID.

4.3.1.1. SRH Processing (Elaborazione SRH)
S01. Quando un SRH viene elaborato {
S02. Se Segments Left è uguale a zero {
S03. Procedere con l'elaborazione dell'intestazione successiva nel pacchetto,
il cui tipo è identificato dal campo Next Header nell'
intestazione di routing.
S04. }
S05. Altrimenti {
S06. Se la configurazione locale richiede l'elaborazione TLV {
S07. Eseguire l'elaborazione TLV (vedere Elaborazione TLV)
S08. }
S09. max_last_entry = ( Hdr Ext Len / 2 ) - 1
S10. Se ((Last Entry > max_last_entry) oppure
S11. (Segments Left è maggiore di (Last Entry+1)) {
S12. Inviare un messaggio ICMP Parameter Problem, Code 0, all'
indirizzo sorgente, puntando al campo Segments Left,
e scartare il pacchetto.
S13. }
S14. Altrimenti {
S15. Decrementare Segments Left di 1.
S16. Copiare Segment List[Segments Left] dal SRH all'
indirizzo di destinazione dell'intestazione IPv6.
S17. Se il Hop Limit IPv6 è minore o uguale a 1 {
S18. Inviare un messaggio ICMP Time Exceeded -- Hop Limit Exceeded in
Transit all'indirizzo sorgente e scartare il pacchetto.
S19. }
S20. Altrimenti {
S21. Decrementare il Hop Limit di 1
S22. Riinviare il pacchetto al modulo IPv6 per la trasmissione
alla nuova destinazione.
S23. }
S24. }
S25. }
S26. }
4.3.1.1.1. TLV Processing (Elaborazione TLV)

La configurazione locale determina come i TLV devono essere elaborati quando il segmento attivo è un SID locale definito in questo documento. La definizione della configurazione locale è al di fuori dell'ambito di questo documento.

Solo a scopo illustrativo, di seguito sono forniti due esempi di configurazioni locali che possono essere associate a un SID.

Esempio 1: Per qualsiasi pacchetto ricevuto dall'interfaccia I2 Saltare l'elaborazione TLV

Esempio 2: Per qualsiasi pacchetto ricevuto dall'interfaccia I1 Se il primo TLV è HMAC { Elaborare il TLV HMAC } Altrimenti { Scartare il pacchetto }

4.3.1.2. Upper-Layer Header or No Next Header (Intestazione di livello superiore o nessun Next Header)

Quando si elabora l'intestazione di livello superiore di un pacchetto che corrisponde a una voce FIB istanziata localmente come un SRv6 SID definito in questo documento:

SE (L'intestazione di livello superiore è IPv4 o IPv6) e
la configurazione locale lo permette {
Eseguire la decapsulazione IPv6
Riinviare il pacchetto decapsulato al modulo IPv4 o IPv6
}
ALTRIMENTI {
Inviare un messaggio ICMP parameter problem all'indirizzo sorgente e
scartare il pacchetto. Codice di errore (4) "SR Upper-layer
Header Error", puntatore impostato all'offset dell'intestazione
di livello superiore.
}

Un codice di errore univoco consente a un nodo sorgente SR di riconoscere un errore nell'elaborazione del SID a un endpoint.

4.3.2. FIB Entry Is a Local Interface (La voce FIB è un'interfaccia locale)

Se la voce FIB rappresenta un'interfaccia locale e non è istanziata localmente come un SRv6 SID, il SRH viene elaborato come segue:

Se Segments Left è zero, il nodo deve ignorare l'intestazione di routing e procedere con l'elaborazione dell'intestazione successiva nel pacchetto, il cui tipo è identificato dal campo Next Header nell'intestazione di routing.

Se Segments Left è diverso da zero, il nodo deve scartare il pacchetto e inviare un messaggio ICMP Parameter Problem, Code 0, all'indirizzo sorgente del pacchetto, puntando al Routing Type non riconosciuto.

4.3.3. FIB Entry Is a Nonlocal Route (La voce FIB è un percorso non locale)

L'elaborazione non è modificata da questo documento.

4.3.4. FIB Entry Is a No Match (La voce FIB non ha corrispondenza)

L'elaborazione non è modificata da questo documento.