L'informatica non riguarda i computer più di quanto l'astronomia riguardi i telescopi.

— Edsger Wybe Dijkstra

IPv6, una breve overview (2/4)

Tagged:

http://www.stenoweb.it/files/blog/ipv6.jpg Dopo una dovuta introduzione ad IPv6 e dopo aver accennato al contesto storico in cui nacque e fu iniziato lo sviluppo, diamo uno sguardo alle caratteristiche del protocollo.

La prima e importante novità rispetto alla precedente versione è rappresentata dall’espansione dello spazio degli indirizzi. Se la versione 4 di IP prevede 32 bit, la versione 6 ne prevede addirittura 128 per l’indirizzo. Ciò significa che è possibile identificare univocamente un numero di terminali pari a 2 elevato 128. In questo senso il problema dell’esaurimento degli indirizzi appare scongiurato per un bel po’ di tempo. Ma l’espansione dell’indirizzamento non è l’unica novità: ad esempio con la versione 6, si abbandona il vecchio paradigma delle classi presente in IPv4 preferendo una suddivisione per uso.

Ciò evidenzia un naturale sviluppo che la tecnologia avrà negli anni a venire e l’estrema pervasività, che la connessione e i terminali avranno nel nostro prossimo futuro. Così i primi 10 bit dell’indirizzo individuano un prefisso: quest’ultimo fornisce un’indicazione del tutto generale sull’uso che il terminale fa della connessione e addirittura sul tipo stesso di terminale (PDA, smartphone, laptop). In vista della transizione dalla versione 4 alla versione 6 del protocollo IP è stato predisposto un prefisso speciale riservato ai nodi IPv6 compatibili con IPv4, cioè in grado di indirizzare sia terminali IPv6 che IPv4: semplicemente l’indirizzo versione 4 sarà esteso a 128 bit anteponendo gli zeri prima dei 32 bit IPv4. Modalità, tecniche e implementazione sono ancora poco note.

Una situazione spinosa riguarda la notazione per indirizzi IPv6: un conto è infatti la dotted decimal notation (notazione decimale puntata) relativa a soli 32 bit di un indirizzo IPv4 per la quale bastano quattro numeri, un conto è un indirizzo composto da 128 bit. La soluzione proposta, in ottica del minor numero di informazioni da conservare e ricordare, vede l’uso della rappresentazione esadecimale per ogni segmento di 16 bit. Un indirizzo IPv6 da 128 bit può allora essere scritto nella forma x:x:x:x:x:x:x:x, dove ogni x è la rappresentazione esadecimale dei vari segmenti a 16 bit, partendo dal più significativo.

Almeno agli inizi della versione IPv6, sarà molto probabile che l’indirizzo contenga molti zero contigui nella configurazione a bit. Per ridurre ulteriormente la scrittura è possibile evidenziare la presenza di tali zeri contigui scrivendo in questa forma: x:x::x:x. In fase di traduzione basterà estendere i due punti con tanti zeri quanti ne servono per giungere ad un indirizzo di 128 bit. E ancora, nelle more del periodo di transizione, si potrà usare un’altra scrittura degli indirizzi IPv4-mapped-IPv6 (cioè gli indirizzi IPv4 estesi a indirizzi IPv6) del tipo: ::x:a.b.c.d, dove a.b.c.d è l’indirizzo IPv4.

Come cambia la struttura del datagram IPv6? Senza scendere troppo nei dettagli, ci basta una rapida cavalcata. I campi principali sono:

  • version: identifica la versione di IP, quindi sarà 6;
  • TrafficClass e FlowLabel: usati insieme, identificano la qualità e il tipo di servizio assolto dal datagram;
  • PayloadLength: lunghezza del datagram misurata in byte, escludendo da tale somma l’intestazione IPv6; è un campo da 16 bit e ciò significa che il carico utile trasportabile non può superare i 2 alla 16 bit;
  • NextHeader: se sono presenti opzioni ulteriori indica appunto la loro presenza, altrimenti identifica il protocollo di livello superiore cui il datagram deve essere passato;
  • HopLimit: limita il tempo di vita del datagram in rete, in particolare viene settato ad un numero maggiore di zero ed un router lo decrementerà ad ogni rilancio tranne quando il valore è pari a zero, nel qual caso viene scartato;
  • SourceAddress: indirizzo a 128 bit del sender;
  • DestinationAddress: indirizzo a 128 bit del receiver.

Un datagram IPv6 consta sempre di 40 byte, indipendentemente da opzioni ulteriori presenti (che andrebbero inserite dopo l’intestazione IP e la cui presenza sarebbe rilevata dal campo NextHeader). Il fatto che un datagram abbia dimensione fissa permette di perfezionare il lavoro dei router e, almeno attraverso simulazioni, si è visto come ciò contribuisca ad un miglioramento delle prestazioni. Nel prossimo ed ultimo articolo accenneremo alle novità introdotte in IPv6, alla tecnica del tunneling e faremo alcune considerazioni sulla transizione dalla versione 4 alle versione 6 di IP.