[successivo] [precedente] [indice]

Testate di Estensione

L'introduzione di testate di estensione (Extension Headers)ha lo scopo di:

  • velocizzare il trattamento di pacchetti standard, che non contengono opzioni
  • permettere un numero variabile di opzioni di pacchetto, al prezzo di una penalita' nella velocita' di trattamento

    Le testate di estensione sono poste di seguito in catena. Ciascun campo "tipo della testata successiva" descrive il tipo della testata di estensione che segue. Quando non vi e' testata di estensione successiva il codice di tale campo indica dati dei protocolli TCP, UDP o simili a livello trasporto.

    Tipi di Protocollo e Testate

    Sono correntemente definiti i seguenti tipi di testate di estensione:

    Le testate Authentication e Encrypted Security hanno a che fare con controlli di sicurezza.

    La Testata di Routing

    E' esemplificativa di una testata di estensione.

    Testata di Routing

    I campi sono:

    Testata Successiva
    Tipo della eventuale testata di estensione che segue.
    Tipo di routing
    Al momento settato al valore zero. Per espansioni future.
    Numero di Indirizzi
    Numero totale di indirizzi nella lista. Al momento e' previsto un massimo di 24 indirizzi.
    Indirizzo Successivo
    Il numero dell'indirizzo succesivo della lista
    Riservato
    Campo per estensioni future
    Maschera Strict / Loose Maschera di 24 bit (una per ogni indirizzo della lista) per indicare se il routing sia vincolante (strict) od opzionale (loose).

    I router controllano la testata di routing solo se riconoscono uno dei loro indirizzi nel campo destinazione della testata principale.

    I router intermedi non menzionati nella lista eseguono un routing normale senza ulteriore processamento.

    Il router che riconosce un proprio indirizzo nella destinazione della testata principale esamina la testata di routing.

    Se il valore del campo Indirizzo Successivo e' uguale o superiore al numero di indirizzi della lista, significa che il pacchetto e' arrivato a destinazione.

    Viene controllato che il campo Indirizzo[Indirizzo Successivo] sia un vicino del router. Se non lo e', ed il bit della maschera indica Strict Routing (1), il pacchetto viene scartato. Se il bit indica invece Loose Routing (0), il pacchetto viene inviato con routing normale ad un vicino qualsiasi.

    Se il vicino esiste, il router inverte i campi di Indirizzo Destinazione della testata principale e Indirizzo[Indirizzo Successivo] della testata di routing, incrementa il campo Indirizzo Successivo della testata di routing, e invia il pacchetto.

    Testata di Frammento

    La frammentazione puo' essere eseguita solo dal mittente iniziale, in seguito a negoziazione del Path MTU. In ogni frammento viene inserita una Testata di Frammento e i frammenti vengono quindi inviati indipendentemente.

    Testata di Frammento

    Il campo Identificativo equivale all'identificativo di frammento di IPv4, ma codificato a 32 bit.

    Il campo Offset di Frammento contiene i 13 bit piu' significativi di una parola a 16 bit, mentre in IPv4 erano i bit meno significativi. In entrambe le versioni i frammenti devono cadere ad un confine di 64 bit. Mentre IPv4 moltiplica per 8 lo Offset di Frammento per ottenere lo Offset vero, IPv6 azzera i tre bit meno significativi.

    Il campo M (more fragments) e' posto a 1 per tutti i frammenti tranne l'ultimo.

    Otto bit piu due rimangono riservati.

    Testata di Opzioni di Destinazione

    Il Destination Options Header contiene come parametri una o piu' opzioni identificate da tipi specifici.

    Il formato della testata e' minimo.

    Opzioni di Destinazione

    Il campo Lunghezza specifica il numero di parole a 64 bit della testata, non includendo i primi 64 bit. Questo evita il test del valore zero come valore illegale.

    Ogni opzione e' un numero variabile di byte.

    Formato di una Opzione

    Il tipo e' l'identificativo di opzione. Segue la lunghezza in byte del campo dati.

    Gli identificativi di tipo opzione hanno una struttura definita.

    Struttura del Campo Tipo

    I due bit alti identificano l'azione da intraprendere se l'opzione non e' riconosciuta.

    Azioni Consentite

    Il terzo bit, C, indica se l'opzione puo' cambiare durante il percorso. Queste opzioni non devono essere considerate nei checksum.

    L'ultimo campo e' l'opzione vera e propria. Le opzioni ammissibili saranno specificate in futuro.

    Testata Hop-by-Hop Options

    Alcune funzioni di gestione o di debugging richiedono informazioni da passare a tutti i router intermedi, e questa e' la funzione della testata di Opzioni Hop-by-Hop.

    Il formato e' lo stesso che per le Opzioni di Destinazione, e con la stessa codifica.

    In aggiunta e' definita una opzione di Jumbo Payload, per pacchetti di dimensione superiore a 64 kbyte. Il tipo di questa opzione e' 194.

    Jumbo Payload Option

    La lunghezza del carico utile e' codificata a 32 bit. In caso di questa opzione, il campo Lunghezza del Carico della testata principale e' posto a zero.

    L'opzione 194 e' allineata in modo che il campo Lunghezza del Carico cada ad un confine di 32 bit.

    Ordine delle Testate di Estensione

    Vi possono essere piu' testate di estensione consecutivamente. L'ordine raccomandato e':

    1. Testata Principale
    2. Hop-by-hop Options
    3. Destination Options (1)
    4. Routing
    5. Fragment
    6. Authentication
    7. Destination Options (2)
    8. Testata di Protocolli ad Alto Livello

    La testata di Opzioni di Destinazione puo' essere inserita in due locazioni diverse: