Lezione 9 di 11

Sistemi e Reti 8

Modulo 8 — IPv6 | Hands on Stem
Modulo 8 di 10

IPv6 — La Nuova Generazione

128 bit, autoconfigurazione, header semplificato: perché IPv6 è il futuro dell’indirizzamento e come funziona la transizione da IPv4.

Prof. D. Bertolino Hands on Stem Sistemi e Reti

8.1 Perché serve IPv6?

IPv4 ha circa 4,3 miliardi di indirizzi. Nel 2011 la IANA ha distribuito gli ultimi blocchi /8 ai registri regionali, e nel corso degli anni successivi tutti i RIR hanno esaurito i propri pool. Il NAT ha guadagnato tempo, ma è una toppa, non una soluzione. IPv6 risolve il problema alla radice.

2128 = 340.282.366.920.938.463.463.374.607.431.768.211.456
≈ 3,4 × 10³⁸ indirizzi — abbastanza per dare un IP a ogni atomo sulla superficie terrestre
Spazio enorme
128 bit = 2¹²⁸ indirizzi. Non si esauriranno mai, nemmeno con IoT, smart city e dispositivi indossabili.
NAT non necessario
Ogni dispositivo può avere un IP pubblico univoco. Fine del NAT, ritorno al modello end-to-end.
Header più efficiente
Header fisso a 40 byte (IPv4: variabile 20-60). I router processano i pacchetti più velocemente.

8.2 Formato dell’Indirizzo IPv6

Struttura

Un indirizzo IPv6 è lungo 128 bit, scritto come 8 gruppi di 4 cifre esadecimali (16 bit ciascuno), separati da due punti (:). Ogni cifra esadecimale rappresenta 4 bit.

2001:0db8:85a3:0000:0000:8a2e:0370:7334
8 gruppi × 16 bit = 128 bit — notazione esadecimale con due punti

Regole di abbreviazione

Gli indirizzi IPv6 sono lunghi, ma due regole permettono di accorciarli significativamente:

Regola 1: Ometti gli zeri iniziali

All’interno di ogni gruppo, gli zeri iniziali possono essere omessi. 0db8 diventa db8, 0000 diventa 0, 0370 diventa 370.

Regola 2: Comprimi una sequenza di gruppi tutti-zero

Una (e una sola) sequenza consecutiva di gruppi 0000 può essere sostituita con ::. Si può usare :: una sola volta nell’indirizzo.

Esempio di abbreviazione passo per passo
Completo 2001:0db8:85a3:0000:0000:8a2e:0370:7334
Regola 1 2001:db8:85a3:0:0:8a2e:370:7334
Regola 2 2001:db8:85a3::8a2e:370:7334
Attenzione: :: si usa UNA sola volta

Se un indirizzo ha due sequenze separate di zeri, puoi comprimere solo la più lunga. Esempio: 2001:0000:0000:00a1:0000:0000:0000:0001 → 2001:0:0:a1::1 (il :: comprime i 3 gruppi finali di zeri, non i 2 iniziali). Se usassi :: due volte, sarebbe ambiguo: non sapresti quanti zeri reinserire in ciascun punto.

Esercizi di abbreviazione

Indirizzo completoAbbreviato
2001:0db8:0000:0000:0000:0000:0000:00012001:db8::1
fe80:0000:0000:0000:020c:29ff:fe8d:4a52fe80::20c:29ff:fe8d:4a52
0000:0000:0000:0000:0000:0000:0000:0001::1 (loopback!)
0000:0000:0000:0000:0000:0000:0000:0000:: (non specificato)
ff02:0000:0000:0000:0000:0000:0000:0001ff02::1 (multicast all-nodes)

8.3 Struttura: Prefisso e Interface ID

Come in IPv4, un indirizzo IPv6 si divide in due parti. Ma qui il confine è quasi sempre a /64: i primi 64 bit sono il prefisso di rete, gli ultimi 64 bit identificano l’interfaccia.

Prefisso di Rete
64 bit — identifica la sottorete
2001:db8:85a3:1
Interface ID
64 bit — identifica l’host
::8a2e:370:7334
Come si genera l’Interface ID?

EUI-64: derivato automaticamente dal MAC address dell’interfaccia (48 bit → 64 bit inserendo FF:FE al centro e invertendo il bit U/L). Esempio: MAC 00:0C:29:8D:4A:52 → Interface ID 020C:29FF:FE8D:4A52.
Privacy Extensions: genera un Interface ID casuale per proteggere la privacy (il MAC non viene esposto). Attivo di default su Windows e macOS moderni.
Manuale: configurato dall’amministratore, tipicamente per server e router (es. ::1, ::2).

8.4 Tipi di Indirizzi IPv6

IPv6 elimina il broadcast (sostituito dal multicast) e introduce nuovi tipi di indirizzo:

TipoPrefissoEquivalente IPv4Descrizione
Global Unicast2000::/3IP pubblicoInstradabile su Internet. Assegnato dai RIR. Inizia con 2 o 3.
Link-Localfe80::/10169.254.x.x (APIPA)Valido solo sul link locale. Generato automaticamente su ogni interfaccia. Essenziale per il funzionamento IPv6.
Unique Localfc00::/7 (fd00::/8)10.x.x.x, 172.16.x.x, 192.168.x.x“Privato” IPv6. Non instradato su Internet. Per reti interne.
Multicastff00::/8224.x.x.xInviato a un gruppo di interfacce. Sostituisce il broadcast.
Loopback::1127.0.0.1Indirizzo del dispositivo stesso.
Non specificato::0.0.0.0Indica assenza di indirizzo (usato nelle richieste DHCP/SLAAC).
IPv6 NON ha il broadcast

In IPv4 l’indirizzo 255.255.255.255 o il broadcast diretto raggiungono tutti gli host. In IPv6 non esiste il broadcast: è sostituito dal multicast. L’indirizzo ff02::1 (all-nodes) raggiunge tutti i dispositivi sul link locale — funzione simile al broadcast, ma più efficiente perché solo i dispositivi “iscritti” al gruppo processano il pacchetto.

8.5 Autoconfigurazione: SLAAC

Una delle innovazioni più importanti di IPv6 è la possibilità di autoconfigurarsi senza un server DHCP. Il meccanismo si chiama SLAAC (Stateless Address Autoconfiguration).

L’interfaccia genera automaticamente un indirizzo link-local (fe80::...) basato sul MAC o casuale.
Invia un messaggio Router Solicitation (RS) al multicast ff02::2 (all-routers): “c’è un router qui?”
Il router risponde con un Router Advertisement (RA) contenente: il prefisso di rete (es. 2001:db8:1::/64), il gateway, i flag di configurazione.
L’host combina il prefisso ricevuto con il proprio Interface ID (EUI-64 o random) per creare l’indirizzo global unicast completo.
L’host verifica che l’indirizzo sia unico con DAD (Duplicate Address Detection) inviando un Neighbor Solicitation.
Se nessuno risponde, l’indirizzo è confermato. L’host è ora raggiungibile su Internet — senza DHCP.
SLAAC vs DHCPv6: quando usare cosa?

SLAAC (stateless): il router annuncia il prefisso, l’host si autoconfigura. Semplice, nessun server necessario. Non assegna DNS (serve RA con opzione RDNSS oppure DHCPv6 stateless).
DHCPv6 stateless: SLAAC per l’IP + DHCPv6 solo per informazioni aggiuntive (DNS, dominio).
DHCPv6 stateful: il server assegna tutto (IP, DNS, opzioni). Simile al DHCP di IPv4. Usato quando serve controllo centralizzato.

8.6 Header IPv6 vs IPv4

L’header IPv6 è stato completamente ridisegnato per essere più semplice e più veloce da processare per i router.

IPv4 Header
  • Dimensione: 20-60 byte (variabile)
  • 13 campi + opzioni
  • Checksum header (ricalcolato ad ogni hop)
  • Frammentazione possibile nei router
  • Campo Options variabile
  • IHL (lunghezza header variabile)
vs
IPv6 Header
  • Dimensione: 40 byte (fisso!)
  • 8 campi — molto più semplice
  • Nessun checksum (affidato a L2 e L4)
  • Frammentazione solo al mittente
  • Opzioni in extension headers separati
  • Flow Label per QoS nativo
Campi dell’header IPv6 (40 byte fissi)
Version4 bit (= 6)
Traffic Class8 bit
Flow Label20 bit
Payload Length16 bit
Next Header8 bit
Hop Limit8 bit (≈ TTL)
Source Address128 bit
Destination Address128 bit
Campi chiave dell’header IPv6

Next Header — indica cosa viene dopo l’header: TCP (6), UDP (17), ICMPv6 (58), o un extension header. Sostituisce il campo “Protocol” di IPv4.
Hop Limit — equivalente del TTL di IPv4. Decrementato di 1 ad ogni router. Se arriva a 0, il pacchetto viene scartato.
Flow Label — identifica un flusso di pacchetti per trattamento QoS differenziato. Novità di IPv6 (IPv4 non l’aveva).

8.7 Transizione da IPv4 a IPv6

IPv4 e IPv6 sono incompatibili: un pacchetto IPv6 non può viaggiare su una rete IPv4 e viceversa. La transizione è graduale e usa tre strategie principali:

Dual Stack

Ogni dispositivo ha sia un indirizzo IPv4 che IPv6. Sceglie quale usare in base alla destinazione. È la strategia più diffusa oggi.

Il tuo PC ha già entrambi: prova ipconfig / ip addr!

Tunneling

I pacchetti IPv6 vengono incapsulati dentro pacchetti IPv4 per attraversare reti che non supportano IPv6. Esempio: 6to4, Teredo, ISATAP.

Come mettere una lettera in una busta con indirizzo diverso per attraversare un paese straniero.

Translation (NAT64)

Un dispositivo intermedio traduce tra IPv4 e IPv6 al volo. Usato quando un host IPv6-only deve comunicare con un server IPv4-only.

Un interprete simultaneo tra due lingue diverse.

Perché la transizione è così lenta?

IPv6 esiste dal 1998, ma nel 2025 circa il 45% del traffico globale è IPv6 (Google stats). Le ragioni della lentezza: il NAT ha “funzionato” abbastanza bene, aggiornare milioni di dispositivi e configurazioni costa, molte applicazioni legacy supportano solo IPv4, e la formazione degli amministratori è graduale. Ma la tendenza è chiara: i grandi operatori (Google, Facebook, Apple, mobile carriers) sono già al 90%+ IPv6.

8.8 Confronto IPv4 vs IPv6

CaratteristicaIPv4IPv6
Lunghezza indirizzo32 bit (4 ottetti decimali)128 bit (8 gruppi esadecimali)
Spazio indirizzi~4,3 × 10⁹~3,4 × 10³⁸
NotazioneDecimale puntata (192.168.1.1)Esadecimale con : (2001:db8::1)
HeaderVariabile (20-60 byte), 13 campiFisso (40 byte), 8 campi
Checksum headerSì (ricalcolato ad ogni hop)No (eliminato → più veloce)
FrammentazioneAnche nei router intermediSolo al mittente
BroadcastSì (255.255.255.255)No — sostituito dal multicast
ConfigurazioneManuale o DHCPSLAAC (automatica) + opzionale DHCPv6
NATNecessario (IP privati)Non necessario
QoSCampo ToS (poco usato)Flow Label + Traffic Class (nativo)
SicurezzaIPsec opzionaleIPsec integrato nello standard
Protocollo ausiliarioARP (indirizzo MAC)NDP (Neighbor Discovery Protocol)

8.9 NDP e ICMPv6

In IPv4, ARP (Address Resolution Protocol) traduce IP → MAC. In IPv6, ARP non esiste più: è sostituito da NDP (Neighbor Discovery Protocol), che usa messaggi ICMPv6.

FunzioneIPv4IPv6 (NDP/ICMPv6)
Risoluzione IP → MACARP Request/Reply (broadcast)Neighbor Solicitation/Advertisement (multicast)
Scoperta routerDHCP o configurazione manualeRouter Solicitation / Router Advertisement
Verifica unicità IPGratuitous ARPDAD (Duplicate Address Detection)
RedirectICMP RedirectICMPv6 Redirect
MTU discoveryICMP “Fragmentation Needed”ICMPv6 “Packet Too Big”
Perché multicast e non broadcast?

Il broadcast di IPv4 raggiunge tutti i dispositivi sulla rete, anche quelli che non sono interessati (spreco di CPU). Il multicast di IPv6 raggiunge solo i dispositivi iscritti a quel gruppo. Esempio: un Neighbor Solicitation per trovare il MAC di 2001:db8::5 viene inviato all’indirizzo multicast solicited-node corrispondente, non a tutti.

8.10 Riepilogo del Modulo

128 bit
8 gruppi esadecimali, abbreviabili con 2 regole. Spazio praticamente infinito.
Tipi di indirizzo
Global Unicast, Link-Local, Unique Local, Multicast. Niente broadcast.
SLAAC
Autoconfigurazione senza DHCP: il router annuncia il prefisso, l’host genera l’indirizzo.
Transizione
Dual-stack, tunneling, NAT64. Graduale ma inevitabile.

🧪 Verifica di Autovalutazione

01 Quanti bit ha un indirizzo IPv6? Quanti gruppi e in quale base numerica?
02 Abbrevia: 2001:0db8:0000:0000:0000:ff00:0042:8329
03 Espandi: fe80::1
04 Perché il :: si può usare una sola volta in un indirizzo?
05 Qual è la differenza tra un indirizzo Global Unicast e Link-Local?
06 Cos’è SLAAC e come funziona in 3 parole chiave?
07 Perché IPv6 non ha bisogno del NAT?
08 Cita 3 differenze tra l’header IPv4 e IPv6.
09 Cos’è il dual-stack? Perché è la strategia di transizione più diffusa?
10 Quale protocollo sostituisce ARP in IPv6? Come funziona?

Soluzioni

Domanda 01 — Bit, gruppi e base
128 bit, scritti come 8 gruppi di 4 cifre in base esadecimale (0-9, a-f), separati da due punti. Ogni gruppo = 16 bit. Esempio: 2001:db8::.
Domanda 02 — Abbreviazione
Passo 1 (zeri iniziali): 2001:db8:0:0:0:ff00:42:8329.
Passo 2 (sequenza di zeri): 2001:db8::ff00:42:8329.
I tre gruppi :0:0:0: diventano ::.
Domanda 03 — Espansione di fe80::1
fe80::1 = fe80:0000:0000:0000:0000:0000:0000:0001. Il :: rappresenta 6 gruppi di 0000 (perché l’indirizzo deve avere 8 gruppi totali: fe80 + 6 zeri + 0001 = 8).
Domanda 04 — Perché :: una sola volta
Se :: comparisse due volte, sarebbe ambiguo: non sapresti quanti gruppi di zeri inserire in ciascun punto. Esempio: 2001::1::5 potrebbe essere 2001:0:0:0:1:0:0:5 o 2001:0:0:1:0:0:0:5 o molte altre combinazioni. Con un solo ::, il numero di gruppi mancanti è calcolabile: 8 − (gruppi espliciti) = gruppi da reinserire.
Domanda 05 — Global Unicast vs Link-Local
Global Unicast (inizia con 2 o 3): è l’equivalente dell’IP pubblico IPv4. Instradabile su Internet, assegnato dai RIR. Link-Local (fe80::/10): valido solo sul segmento di rete locale. Non instradato dai router. Generato automaticamente su ogni interfaccia IPv6. Usato per la comunicazione locale (NDP, SLAAC).
Domanda 06 — SLAAC in 3 parole chiave
Router Advertisement (il router annuncia il prefisso), Interface ID (l’host genera la seconda metà dell’indirizzo), DAD (verifica che l’indirizzo sia unico). In breve: il router dice “la rete è 2001:db8:1::/64”, l’host aggiunge il proprio Interface ID, verifica l’unicità e si autoconfigura — senza server DHCP.
Domanda 07 — Perché niente NAT
IPv6 ha uno spazio di indirizzamento talmente vasto (2¹²⁸) che ogni dispositivo al mondo può avere un IP pubblico univoco. Non c’è scarsità di indirizzi, quindi non serve tradurre IP privati in IP pubblici. Il modello end-to-end originale di Internet viene ripristinato: ogni host è direttamente raggiungibile (la sicurezza è gestita dal firewall, non dal NAT).
Domanda 08 — 3 differenze header
1) Dimensione: IPv4 variabile (20-60 byte), IPv6 fisso (40 byte). 2) Checksum: IPv4 ha il checksum header (ricalcolato ad ogni hop), IPv6 lo elimina (affidato ai livelli 2 e 4). 3) Frammentazione: in IPv4 qualsiasi router può frammentare, in IPv6 solo il mittente. Altre: IPv6 ha il Flow Label per QoS, IPv4 no; IPv6 ha 8 campi vs 13 di IPv4.
Domanda 09 — Dual-stack
Il dual-stack significa che un dispositivo ha sia un indirizzo IPv4 che un indirizzo IPv6 e può comunicare con entrambi i protocolli. Sceglie quale usare in base alla destinazione (se il server supporta IPv6, usa IPv6; altrimenti IPv4). È la strategia più diffusa perché non richiede di dismettere IPv4 tutto in una volta: le due versioni coesistono durante la transizione graduale.
Domanda 10 — Sostituto di ARP
ARP è sostituito da NDP (Neighbor Discovery Protocol), che usa messaggi ICMPv6. Per risolvere IP → MAC, NDP invia un Neighbor Solicitation all’indirizzo multicast solicited-node (non broadcast). Il destinatario risponde con un Neighbor Advertisement contenente il proprio MAC. Vantaggio: usa multicast (più efficiente del broadcast ARP) e aggiunge funzioni come DAD e Router Discovery.
Hands on Stem — Corso di Sistemi e Reti — Prof. D. Bertolino