IPv6: Header, Formato Indirizzi e Tipologie
Dall'esaurimento di IPv4 al nuovo paradigma a 128 bit: header semplificato, regole di compressione, unicast, multicast, anycast e autoconfigurazione SLAAC con rete Dual Stack.
1. Perché IPv6? Il problema dell'esaurimento degli indirizzi
IPv4 usa indirizzi a 32 bit: circa 4,3 miliardi di combinazioni possibili. Nel 1981, quando RFC 791 definiva IPv4, pareva uno spazio sterminato. Non lo era.
Il 5 febbraio 2011 IANA (Internet Assigned Numbers Authority) ha assegnato gli ultimi blocchi /8 ai cinque RIR regionali. Gli indirizzi IPv4 erano ufficialmente esauriti. I RIR hanno continuato a distribuire gli spazi rimanenti fino al 2012–2019, secondo la regione.
NAT (Network Address Translation) ha "allungato la vita" di IPv4 mascherando intere reti private dietro un singolo IP pubblico. Funziona, ma rompe il modello end-to-end di Internet, complica VoIP, gaming, VPN e le applicazioni che richiedono connessioni inbound. NAT è un cerotto, non una soluzione strutturale.
IPv6, definito da RFC 8200 (2017), usa indirizzi a 128 bit: 3,4 × 10³⁸ indirizzi. Per dare un'idea: si potrebbero assegnare 100 indirizzi IPv6 a ogni atomo della superficie terrestre.
32 bit – 4,3 miliardi
Esaurito IANA 2011. NAT necessario per sopravvivere.
128 bit – 340 undecilioni
End-to-end ripristinato, no NAT necessario, autoconfigurazione nativa.
Header semplificato
Elaborazione più rapida nei router, QoS con Flow Label, IPsec nativo.
2. L'header IPv6 – 40 byte fissi ed extension header
L'header base IPv6 è sempre lungo 40 byte: 8 campi fissi, niente opzioni variabili. Le opzioni sono spostate in extension header concatenati solo se necessari.
Una delle scelte di design più significative di IPv6 è l'header di dimensione fissa: 40 byte. L'header IPv4 era variabile (20–60 byte) per via delle opzioni. IPv6 sposta le opzioni negli extension header, inseriti tra l'header base e il payload solo quando necessari.
| Campo | Bit | Descrizione |
|---|---|---|
| Version | 4 | Sempre 0110 (6) per IPv6 |
| Traffic Class | 8 | Equivalente di DSCP+ECN in IPv4. Priorità del traffico (QoS) |
| Flow Label | 20 | Identifica un flusso tra sorgente e destinazione. Permette QoS senza esaminare il payload. Novità rispetto a IPv4. |
| Payload Length | 16 | Lunghezza in byte del payload (escluso header base). Max 65535 byte; con Jumbo Payload extension header si superano i 4 GB. |
| Next Header | 8 | Tipo del prossimo header: protocollo superiore (58=ICMPv6, 6=TCP, 17=UDP) oppure tipo di extension header. |
| Hop Limit | 8 | Equivalente del TTL di IPv4. Decrementato di 1 a ogni hop. Pacchetto scartato quando raggiunge 0. |
| Source Address | 128 | Indirizzo IPv6 del mittente |
| Destination Address | 128 | Indirizzo IPv6 del destinatario |
In IPv6 sono stati eliminati: Header Checksum (demandato ai livelli superiori e al data link), Header Length (header fisso, non serve), Identification/Flags/Fragment Offset (la frammentazione avviene solo al sorgente, non ai router intermedi), Options (sostituite dagli extension header). Risultato: i router elaborano i pacchetti molto più velocemente.
Extension Header
Gli extension header vengono inseriti tra header base e payload solo quando servono, formando una catena: ogni header punta al successivo tramite il campo Next Header.
| Tipo | Next Header value | Uso |
|---|---|---|
| Hop-by-Hop Options | 0 | Esaminato da ogni router sul percorso (es. Jumbo Payload) |
| Routing | 43 | Source routing: specifica lista di hop intermedi |
| Fragment | 44 | Frammentazione (solo il mittente può farlo in IPv6) |
| ESP / AH | 50/51 | Sicurezza IPsec integrata nello stack IPv6 |
| Destination Options | 60 | Opzioni esaminate solo dalla destinazione finale |
3. Formato degli indirizzi IPv6 e regole di compressione
Un indirizzo IPv6 è 128 bit = 8 gruppi di 4 cifre esadecimali separati da : . Ogni gruppo rappresenta 16 bit (2 byte). Si scrive compresso con due regole standard.
Forma completa esempio:
Regole di compressione
Scrivere sempre 32 cifre esadecimali è scomodo. Si applicano due regole:
Ometti gli 0 iniziali di ogni gruppo
0DB8 → DB80000 → 0FF00 → FF00 (invariato)
Una sola sequenza :: per gruppi zero contigui
Sostituisce una sola sequenza contigua di gruppi tutti-zero con ::. Usabile una sola volta altrimenti ambiguo.
Non si può usare :: due volte. L'indirizzo 2001::42::1 è ambiguo: non si sa quanti zeri sostituisce ciascun ::. Il tool ping6 e i parser lo rifiutano. Regola d'oro in verifica: :: una sola volta, mai due.
Indirizzi speciali
| Indirizzo | Significato |
|---|---|
::1 | Loopback (equivalente di 127.0.0.1 in IPv4) |
:: | Indirizzo non specificato (equivalente di 0.0.0.0) |
2001:DB8::/32 | Range riservato alla documentazione e agli esempi (RFC 3849) – usa sempre questo nei laboratori |
4. Tipologie di indirizzi IPv6: Unicast, Multicast, Anycast
IPv6 introduce una distinzione fondamentale rispetto a IPv4: non esiste il broadcast. Al suo posto si usa il multicast (e il meccanismo anycast per alcuni servizi). Questo riduce il traffico non necessario su tutti i nodi della rete.
Unicast — un mittente, un destinatario
| Tipo | Prefisso | Descrizione |
|---|---|---|
| Global Unicast | 2000::/3 | Indirizzi instradabili su Internet (equivalente IP pubblico IPv4). Attualmente assegnati nel range 2000::→3FFF:FFFF:… |
| Link-Local | FE80::/10 | Validi solo sul link locale (stesso segmento). Assegnati automaticamente a ogni interfaccia. Non vengono instradati dai router. Essenziali per NDP e SLAAC. |
| Unique Local | FC00::/7 | Equivalente degli indirizzi privati IPv4 (RFC 1918). Usati in reti private, non instradati su Internet. Prefisso tipico: FD00::/8 con 40 bit pseudo-random. |
| Loopback | ::1/128 | Solo interfaccia loopback locale |
Multicast — un mittente, molti destinatari
Il multicast IPv6 ha prefisso FF00::/8. Sostituisce completamente il broadcast IPv4.
| Indirizzo | Scope | Uso |
|---|---|---|
FF02::1 | Link-local | All-nodes: tutti i nodi IPv6 sul segmento |
FF02::2 | Link-local | All-routers: tutti i router IPv6 sul segmento |
FF02::1:FFxx:xxxx | Link-local | Solicited-node multicast: usato da NDP per risolvere indirizzi (vedi L06) |
FF05::101 | Site-local | NTP servers nel sito |
Anycast — un mittente, il più vicino tra molti
Un indirizzo anycast è assegnato a più interfacce su nodi diversi. Il pacchetto viene consegnato all'interfaccia più vicina secondo la metrica di routing. Usato per DNS root server, CDN, servizi distribuiti. Non esiste un range specifico: un indirizzo unicast diventa anycast quando viene assegnato a più interfacce.
5. Autoconfigurazione: SLAAC e EUI-64
SLAAC = Stateless Address Autoconfiguration (RFC 4862): un host IPv6 si configura da solo senza DHCP, combinando prefisso /64 annunciato dal router + Interface ID derivato dal MAC con EUI-64.
IPv6 include un meccanismo di autoconfigurazione stateless (SLAAC — Stateless Address Autoconfiguration, RFC 4862) che permette a un host di configurarsi autonomamente senza DHCP:
- L'host genera un indirizzo link-local (
FE80::+ identificatore interfaccia) - Verifica che non sia duplicato con DAD (Duplicate Address Detection)
- Invia un Router Solicitation al multicast
FF02::2 - Il router risponde con Router Advertisement: prefisso di rete (/64) e altre info
- L'host combina il prefisso ricevuto con il suo EUI-64 → indirizzo global unicast
Dato un MAC address: 00:1A:2B:3C:4D:5E
- Dividi a metà:
00:1A:2B|3C:4D:5E - Inserisci
FF:FEnel mezzo:00:1A:2B:FF:FE:3C:4D:5E - Inverti il bit U/L (bit 7 del primo byte):
00→02 - Risultato:
021A:2BFF:FE3C:4D5E
Con prefisso 2001:DB8:1::/64 → indirizzo completo: 2001:DB8:1::021A:2BFF:FE3C:4D5E (documentazione) → compresso 2001:DB8:1::21A:2BFF:FE3C:4D5E
6. Coesistenza IPv4/IPv6: strategie di transizione
La migrazione a IPv6 non è flag-day: le due versioni devono coesistere a lungo. Le tre strategie standard sono:
| Meccanismo | Come funziona | Uso tipico |
|---|---|---|
| Dual Stack | Il nodo ha sia un indirizzo IPv4 sia un IPv6. Comunica in v4 o v6 in base all'interlocutore. | Approccio preferito. Tutti i moderni SO lo supportano. Vedi video lab dual-stack. |
| Tunneling (6in4) | Pacchetti IPv6 incapsulati in datagrammi IPv4 per attraversare reti solo-IPv4. | Connettere isole IPv6 attraverso backbone IPv4. |
| NAT64 + DNS64 | Traduce indirizzi IPv6 in IPv4 a livello di gateway. Permette a host solo-IPv6 di raggiungere server solo-IPv4. | Reti mobili 5G, reti "IPv6-only". |
In laboratorio Packet Tracer apri IPv6-dual-stack.pkt: verifica che ogni PC abbia sia IPv4 sia IPv6. Prova ping e ping6 verso il server, osserva ipconfig e show ipv6 interface brief. Dual Stack è la strategia consigliata per l'esame.
7. Verifica / Esercizio Dual Stack
🔬 Attività di laboratorio
Usa i file .pkt forniti e gli esercizi PDF. Obiettivo: configurare una piccola rete dual-stack e dimostrare la coesistenza.
- Comprimi al massimo:
2001:0DB8:0000:013A:0000:0000:0000:0001eFE80:0000:0000:0000:0000:0000:0000:0001– indica dove applichi Regola 1 e Regola 2. - Da MAC
AC:DE:48:12:34:56ricava l'Interface ID EUI-64 e costruisci l'indirizzo link-local e global con prefisso2001:DB8:CAFE::/64. - In Packet Tracer (IPv6-dual-stack.pkt) attiva
ipv6 unicast-routinge assegna2001:DB8:1::1/64e2001:DB8:2::1/64sulle interfacce router. Verifica SLAAC sui PC e pingFF02::1. - Spiega differenza tra Global Unicast, Link-Local, Multicast
FF02::1e Anycast: quando useresti ciascuno? - Dual Stack vs NAT64: in quale scenario sceglieresti l'uno o l'altro? Collega alla tipologia di rete (enterprise, 5G, ISP legacy).
1) 2001:0DB8:0000:013A:0000:0000:0000:0001 → Regola1: 2001:DB8:0:13A:0:0:0:1 → Regola2 longest zero run: 2001:DB8:0:13A::1. FE80:0000:0000:0000:0000:0000:0000:0001 → FE80::1 (run di 6 zeri).
2) MAC AC:DE:48:12:34:56 → dividi AC:DE:48|12:34:56 → AC:DE:48:FF:FE:12:34:56 → inverti U/L bit: AC=10101100 → AE=10101110 → AEDE:48FF:FE12:3456. Link-local: FE80::AEDE:48FF:FE12:3456. Global: 2001:DB8:CAFE::AEDE:48FF:FE12:3456.
3) Vedi configurazione sopra + show ipv6 route, show ipv6 neighbors (sostituisce ARP).
4) Global instradabile Internet, Link-Local solo segmento e indispensabile per NDP/SLAAC, FF02::1 = tutti i nodi (no broadcast), Anycast = servizio più vicino (DNS/CDN).
5) Enterprise/misto → Dual Stack (compatibilità totale). Rete mobile greenfield IPv6-only o 5G → NAT64/DNS64 per raggiungere IPv4 legacy, meno indirizzi IPv4 pubblici necessari.
8. Riepilogo e concetti chiave
📚 Prossimo passo - ARP, NDP e Default Gateway
Ora che sai scrivere un indirizzo IPv6 e cosa c'è nel suo header, nel prossimo modulo vedrai come si risolvono gli indirizzi su LAN: ARP in IPv4 e NDP in IPv6 con i multicast solicited-node. Avrai bisogno della tabella dei prefissi e di EUI-64.