Istruttore: In questa
lezione introdurremo i concetti relativi all'IPv6,
o Protocollo Internet versione 6.
Finora abbiamo parlato
solo di IPv4, ma uno dei problemi che
abbiamo con l'IPv4 è che il suo spazio di
indirizzi è limitato.
Questo perché i bit che compongono un
indirizzo IPv4 sono solo 32, mentre i bit
che lo compongono sono solo 4. 2 miliardi di combinazioni di indirizzi possibili.
Ora, ne conosco 4. 2 miliardi sembrano un sacco di IP,
ma quando abbiamo eliminato intere porzioni di cose,
come gli indirizzi APIPA, gli indirizzi di host locali, gli IP privati,
e poi c'è stata un'enorme quantità di sprechi prima ancora
di iniziare a usare il subnetting, questo
ha portato a un grosso problema, e abbiamo
iniziato a esaurire gli indirizzi di rete all'interno
dell'IPv4.
Questo fenomeno è noto come esaurimento degli indirizzi ed è reale.
Infatti, nel novembre 2019, il RIPE NCC,
il Registro regionale di Internet per l'Europa,
l'Asia occidentale e l'ex URSS, e la NASA, hanno già esaurito l'intero
pool di indirizzi IPv4.
Fortunatamente, però, l'Internet
Engineering Task Force, o IETF, aveva già
iniziato a guardare al futuro
e aveva sviluppato l'IPv6 come standard già
nel 1995, con un RFC che documentava la visione dell'IPv6,
definito IP Next Generation o IPNG.
Ora vedete, l'IPv6 è in realtà un enorme miglioramento rispetto all'IPv4 in termini
di numero di indirizzi disponibili.
Invece di utilizzare un indirizzo a 32 bit come nell'IPv4,
l'IPv6 utilizzerà un indirizzo a 128 bit.
In questo modo si otterrà uno spazio di indirizzi molto più ampio.
In effetti, vi darà la possibilità
di 340 undecilioni di indirizzi IP.
Si tratta di un numero sufficiente
di indirizzi IP per ogni uomo, donna e bambino del pianeta.
Si tratta di due alla 128esima potenza.
In realtà, ci sono molti, molti indirizzi IP per ogni
uomo, donna e bambino del pianeta, perché ci
sono così tanti indirizzi IP disponibili.
Ora, potreste chiedervi:
"Ehi, siamo passati dall'IPv4 all'IPv6".
Cosa è successo alla versione 5?
Perché siamo passati direttamente alla versione 6?
La versione 5 è stata creata, ma non è mai stata adottata come protocollo
o standard ufficiale.
E quindi non è mai entrato in produzione.
Invece, molti dei concetti sviluppati
con la versione 5, perché si trattava
di un protocollo sperimentale, sono
stati inseriti nell'IPv6 quando è diventato
uno standard ufficiale.
Parliamo quindi dei vantaggi dell'IPv6.
Uno dei maggiori vantaggi
è lo spazio di indirizzamento molto più
ampio, grazie agli indirizzi a 128 bit.
Inoltre, l'IPv6 ha
aumentato l'efficienza delle nostre reti eliminando
il tipo di flusso di dati broadcast dell'IPv4.
Ora, l'IPv6 è anche più sicuro, perché lo standard
IPv6 non prevede la frammentazione dei pacchetti
o dei datagrammi.
Inoltre, non esiste un'unità massima di trasmissione
per la scoperta all'interno di ogni sessione, a differenza di IPv4 che
contiene un MTU con una certa dimensione per ogni pacchetto.
In IPv4, se si invia un pacchetto più grande
della dimensione massima dell'unità di trasmissione,
questo viene frammentato
e inviato sulla rete.
E poi, una volta giunto a destinazione,
sarebbe stato riassemblato e letto.
Si trattava in realtà di un rischio per la sicurezza.
Inoltre, richiedeva un'elaborazione supplementare
e poteva effettivamente rallentare le reti perché
diventava un modo molto inefficiente di fare le cose nelle nostre
reti moderne con velocità di connessione
a Internet più elevate.
Con l'IPv6, quindi, si è deciso di eliminare completamente
la frammentazione.
Ora, oltre a fornire tutti questi nuovi vantaggi,
i creatori dell'IPv6 sono stati molto intelligenti
e hanno capito che l'IPv6, per essere abbracciato e accettato pienamente,
avrebbe dovuto essere retrocompatibile con l'IPv4
e consentire la coesistenza di IPv6 e IPv4 sulla stessa rete.
Dopo tutto, era già la fine degli anni '90 quando
l'IPv6 è stato sviluppato e rilasciato e molte
reti di computer erano
già presenti in tutto il mondo.
Non sarebbe quindi possibile
cambiare tutto in un solo giorno.
Pensate all'attuale migrazione
dai veicoli a gas a quelli
elettrici.
Ciò avverrà per tutti gli
anni 2020 e 2030.
Ora, sarebbe impossibile dire: "Ehi,
il 1° gennaio 2025 nessuno potrà più utilizzare
veicoli a gas".
A partire da quella data
saranno tutti sostituiti da veicoli elettrici.
Se un governo provasse a farlo,
probabilmente si troverebbe per le mani una rivoluzione,
perché molte persone possiedono già auto a gas e hanno speso una tonnellata
di denaro e di investimenti per quelle auto e per le infrastrutture
che le supportano.
Per questo motivo, non sostituiremo semplicemente tutte
le auto a gas da un giorno all'altro.
Ci sarà invece una lenta transizione dall'alimentazione
a gas a quella elettrica, che si protrarrà fino al 2030 o forse al 2040,
quando un numero sempre maggiore di auto nuove vendute
nel mondo sarà venduto come elettrico e si smetterà
di vendere veicoli a gas.
La stessa cosa sta accadendo con l'IPv6.
Quindi l'IPv6 consente la coesistenza di IPv4 e IPv6 sulle stesse
reti e le apparecchiature che gestiscono
queste reti diventano note come dual
stack, il che significa semplicemente
che possono eseguire simultaneamente
i protocolli IPv4 e IPv6 sugli stessi dispositivi di
rete.
Con i dispositivi dual stack, se un client supporta IPv6, lo
switch del router preferisce utilizzare IPv6
e parlerà con questo metodo.
Ora, se un dispositivo non è in grado di supportare
l'IPv6, torna indietro e dice:
"Ok, ti parlerò usando il vecchio protocollo IPv4".
In questo modo, posso continuare a sostenerla.
Un altro metodo che utilizziamo è il cosiddetto tunneling.
Questo è il caso in cui l'IPv6 verrà inserito in un tunnel su un dispositivo IPv4.
In questo modo i router IPv4 più vecchi possono
continuare a trasportare il traffico IPv6.
L'IPv6 sarà essenzialmente un tunnel
come meccanismo per incapsulare i pacchetti IPv6 all'interno
di intestazioni IPv4 e trasportare questi dati IPv6 attraverso
i router IPv4 e altre infrastrutture
già esistenti.
A tal fine, crea un tunnel punto-punto
tra la sorgente e la destinazione
e poi incapsula le informazioni.
Ciò consente ai client e ai server IPv6 isolati di comunicare
senza dover aggiornare tutti i router
e l'infrastruttura di switch che utilizzano
ancora l'IPv4 che possono essere presenti tra loro.
Ora, un giorno, potremmo assistere al completo ritiro dell'IPv4.
Ma finora non è successo.
E personalmente non sto trattenendo il fiato.
Da alcuni articoli
che ho letto, le previsioni dicono che l'IPv4
rimarrà con noi almeno fino al 2040, quindi come tecnici
di rete dovrete saper lavorare sia con l'IPv4 che
con l'IPv6 per il prossimo futuro.
Un altro vantaggio dell'IPv6 è l'intestazione semplificata.
Quindi, invece dei 12 campi che avevamo nell'IPv4, abbiamo
solo cinque campi nell'IPv6, il che rende l'intestazione
più snella e molto più efficiente
da inviare sulle nostre reti.
Vi starete chiedendo: che
aspetto ha un'intestazione IPv6?
Ve lo mostrerò, ma non dovete memorizzarlo
per l'esame.
Invece, questo è solo per mostrare i diversi
campi dell'IPv4, che è in alto, rispetto
all'IPv6, che è in basso.
Ora potete vedere quanto sia
più semplice l'IPv6 rispetto all'IPv4.
Bene, torniamo ad alcune cose
che dovete capire per l'esame.
Ad esempio, che aspetto ha un indirizzo IPv6?
Ho già detto che la lunghezza è di 128 bit, il
che significa che se lo scrivessimo in binario avrebbe
128 uno o zero, e mi sembra
una pessima idea, quindi non lo faremo.
Ora, potremmo usare la notazione decimale
punteggiata come nel caso dell'IPv4,
ma ci sarebbero comunque molti ottetti da scrivere,
perché avremmo bisogno di 16 ottetti per rappresentare tutti i 128 bit.
Per risolvere questo problema,
l'IETF ha deciso di utilizzare invece
le cifre esadecimali.
L'esadecimale è in base 16, come forse ricorderete
dalle lezioni di algebra
del liceo.
Ora, in esadecimale, ogni
cifra esadecimale è in realtà quattro bit.
Questo ci permetterà di rappresentare un indirizzo IPv6
combinando insieme quattro cifre esadecimali per formare
quello che chiamiamo segmento.
Ora, un segmento conterrà 16 bit.
Questo è rappresentato da queste quattro cifre esadecimali.
Poi aggiungeremo i due punti
e continueremo ad aggiungere
segmenti fino ad arrivare a 128 bit, il che richiederà
otto segmenti, ognuno dei quali
con quattro cifre esadecimali.
In questo modo si ottiene un totale di 32 cifre esadecimali,
che sono comunque piuttosto lunghe.
Ora, con 128 bit rappresentati in un indirizzo IPv6, ciò significa
che non avremo più di 32 cifre esadecimali all'interno di
tutti questi segmenti.
Perché ho detto che il totale di questi otto segmenti
non deve superare le 32 cifre?
Perché non dovrebbero essere solo 32 cifre
esadecimali, dato che 32 cifre per quattro bit
per cifra corrispondono a 128 bit?
Questo perché l'IPv6 ci permette di utilizzare una
stenografia per semplificare i nostri
lunghissimi indirizzi IPv6.
Ora, le regole della stenografia sono molto importanti
perché su di esse si possono fare domande d'esame.
Quindi, se si hanno quattro zeri per un segmento,
è possibile inserire uno zero al posto di questi,
eliminando gli zeri iniziali.
Ad esempio, facciamo finta di avere un indirizzo
IPv6 molto lungo, 2018:0000:0000:0000:0000:0000:4815:54ae.
Utilizzando la regola semplice,
posso sostituire tutti i segmenti che hanno più zeri con
un singolo zero.
Questo mi darebbe 2018:0:0:0:0:0:4815:54ae.
Bene, in questo modo ho ridotto il numero di cifre
esadecimali da 32 a solo 17, quindi la lunghezza è circa la metà.
Stiamo migliorando, ma non mi fermerò qui.
C'è un'altra regola che posso
usare nel mondo della stenografia IPv6.
Questa regola dice che se ci sono più segmenti
in cui sono presenti degli zeri
e in cui non sono rappresentate altre cifre esadecimali,
posso riassumere il tutto usando i doppi due punti e togliendo
tutti gli zeri.
Ora, questa regola è speciale
perché si possono fare i doppi due punti solo una volta all'interno
di un indirizzo IPv6.
Quindi, utilizzando la regola dei
doppi due punti, posso riassumere 2018:0:0:0:0:0:4815:54ae rimuovendo tutte
queste cinque serie di zeri e sostituendole
con un doppio punto e ottenendo
2018::4815::54ae.
Così sono passato da 32 cifre esadecimali
a 17 cifre esadecimali e ora
da 17 cifre sono sceso a 12 cifre,
molto più piccole, molto
più facili da usare.
Si può capire come questa stenografia sia davvero utile.
Come si riconosce un indirizzo IPv6 rispetto
a un indirizzo IPv4?
Il primo modo è quello di vedere cos'è l'IPv4.
IPv4 utilizzerà sempre la notazione decimale punteggiata
con quattro ottetti.
L'IPv6, invece, utilizzerà
i due punti tra i numeri e sarà scritto
in esadecimale.
Bene, ora, una delle domande che potreste
vedere il giorno del test è quella
di identificare un indirizzo IPv6 quando ne vedete uno.
Ad esempio, si potrebbe ricevere una domanda
del tipo: "Quale dei seguenti è un indirizzo IPv6?
Questa è una domanda giusta da porre.
Avrete a disposizione alcune opzioni come 192. 168. 1. 1, che sappiamo non
essere tale perché è un indirizzo IPv4.
Si otterrà 12:34:56:78:90:AB
o 1234::5678::90AB.
Aspettate un attimo, le ultime due cose che ho appena detto
sono molto simili, non è vero?
Sì, ma solo uno di questi è un indirizzo IPv6 valido.
Sai qual è?
Perché la maggior parte degli studenti si confonde qui.
La seconda opzione non è un indirizzo IPv6.
Si tratta invece di un indirizzo MAC.
Ricordate che gli indirizzi
MAC, che sono indirizzi fisici di livello
2, sono sempre composti da 12 cifre esadecimali e
separati da due punti.
Di solito vengono scritti
come sei gruppi di due cifre ciascuno e
ognuno di essi è separato da un singolo punto.
Un indirizzo IPv6, invece, deve sempre essere scritto
in segmenti di quattro cifre ciascuno
e deve sempre avere 16 segmenti, a meno che non
si veda un doppio punto.
In questo esempio, abbiamo un doppio punto tra
il primo e il secondo segmento della terza opzione.
Si tratta quindi di una buona abbreviazione che possiamo usare
per identificare che si tratta di un indirizzo IPv6 perché
abbiamo rimosso tutti gli zeri tra il
primo e il secondo segmento all'interno di questo indirizzo.
Quindi, se si conta qualcosa
che assomiglia a un indirizzo IPv6
e ha 12, esattamente 12 cifre esadecimali separate da singoli punti,
e non si vedono doppi punti da
nessuna parte, si tratta di un indirizzo
MAC, non di un indirizzo IPv6.
Altrimenti, se ha un aspetto simile
a questo e comprende cifre esadecimali,
il giorno dell'esame sarà un indirizzo IPv6.
Per l'esame, è sufficiente essere in
grado di riconoscere l'aspetto di
un indirizzo IPv6 e di riassumerne uno
togliendo gli zeri e consolidandoli
con il trucco dei due punti.
Se riuscite a fare queste due cose,
sarete a posto per l'indirizzamento IPv6 il giorno dell'esame.
Per quanto riguarda l'indirizzamento
IPv6, è possibile utilizzare tre diversi tipi
di indirizzo: indirizzi unicast,
multicast e anycast.
Uno degli aspetti interessanti dell'IPv6,
che lo distingue dall'IPv4, è la possibilità
di assegnare più indirizzi IPv6 a una singola interfaccia
di un client.
Queste assegnazioni possono
essere un misto di tre tipi diversi:
unicast, multicast e anycast.
Quindi, anche se si dispone di una sola scheda di interfaccia
di rete sulla propria workstation
o laptop, si possono avere più indirizzi IPv6
e diversi tipi di indirizzi IPv6 assegnati
a quell'unica scheda.
Gli indirizzi unicast verranno utilizzati
per identificare una singola interfaccia.
Questi sono suddivisi in indirizzi unicast instradati a livello
globale e indirizzi link-local.
Un indirizzo unicast instradato a livello
globale è simile a quello che abbiamo come indirizzo pubblico con
l'IPv4, che utilizza indirizzi unicast di classe A, B e C.
Ora, in IPv6, un indirizzo unicast instradato
a livello globale inizierà
sempre con il suo primo segmento contenente 2000-3999.
Se si vede 2000-3999 come primo segmento, significa che si tratta di
un indirizzo unicast instradato a livello globale.
Ad esempio, l'indirizzo IPv6
2584:0db8:8583:1234:5678:882e:0370:7334 verrebbe instradato
globalmente come indirizzo unicast perché
il suo primo segmento contiene 2584, che
è compreso tra 2000 e 3999.
Un indirizzo link-local, invece, chiamato
anche indirizzo di uso locale, viene utilizzato
come un indirizzo IP privato nell'IPv4.
Un indirizzo link-local in
IPv6 può essere utilizzato solo
su una rete locale e inizierà sempre con FE80 come primo segmento
di un indirizzo IPv6.
Ora, ogni volta che un sistema IPv6 si avvia, viene creato
un indirizzo link-local per ogni interfaccia
IPv6 del sistema, anche se un indirizzo instradabile a livello
globale è già stato configurato
manualmente o ottenuto tramite
un protocollo di configurazione come il DHCP.
Per farlo, utilizzerà un metodo noto come SLAAC,
l'autoconfigurazione stateless degli indirizzi o S-L-A-A-C.
Con l'autoconfigurazione stateless,
l'host non deve ottenere indirizzi o altre
informazioni di configurazione
da un server centralizzato come il DHCP.
Invece, può assegnarsi autonomamente un indirizzo
link-local, verificare l'unicità
di tale indirizzo, assegnare l'indirizzo link-local
a se stesso, contattare il router e fornire
indicazioni al nodo su come procedere con l'autoconfigurazione.
E può anche configurare l'indirizzo unicast globale
da utilizzare.
Torneremo su questo concetto tra qualche minuto, quando
ci addentreremo un po' di più nell'argomento,
iniziando a parlare di EUI-64 e del protocollo di scoperta dei vicini,
poiché entrambi questi processi
sono utilizzati con il protocollo di autoconfigurazione
stateless degli indirizzi noto come SLAAC.
Poi ci sono gli indirizzi multicast.
Ora, gli indirizzi multicast vengono utilizzati
per identificare un gruppo di interfacce,
in modo che un pacchetto possa essere inviato a un indirizzo multicast
e quindi consegnato a tutte le interfacce del gruppo.
In IPv6, un indirizzo multicast conterrà sempre FF come
prime due cifre del primo segmento.
Se vedete FF all'inizio di un indirizzo
IPv6, ricordate che è multicast.
L'ultimo tipo di indirizzo che
abbiamo è noto come indirizzo anycast.
Gli indirizzi anycast sono utilizzati per identificare un insieme di interfacce in
modo che un pacchetto possa essere inviato a qualsiasi membro dell'insieme.
Gli indirizzi anycast sono in realtà allocati
dallo spazio degli indirizzi unicast.
Quindi non c'è modo di determinare
se un indirizzo IPv6 è unicast o anycast solo guardando
l'indirizzo IPv6.
Ora, quando si tratta di multicast o di link-local,
si ha un modo molto semplice per farlo,
ma non si ha un modo semplice per capire
se si tratta di unicast o anycast.
Bene, torniamo a parlare
un po' di più di SLAAC, il processo di
autoconfigurazione degli indirizzi stateless.
Come ho già detto, in IPv6 esiste un processo
di autoconfigurazione noto come SLAAC, che viene utilizzato
per scoprire la rete corrente in cui
si trova l'interfaccia e quindi
consentirle di selezionare il proprio ID host in base
all'indirizzo MAC utilizzando un processo noto come EUI-64.
Ora, questo processo di EUI-64 o Extended Unique Identifier consentirà
a un host di assegnarsi un identificatore
unico di interfaccia IPv6 a 64 bit, chiamato EUI-64.
Ora, questo indirizzo in formato EUI-64 si ottiene
utilizzando l'indirizzo MAC a 48 bit dell'interfaccia.
L'indirizzo MAC viene prima separato in due porzioni da 24 bit.
La prima metà dell'indirizzo MAC contiene l'OUI (Organizational
Unique Identifier).
La seconda metà conterrà la scheda
di interfaccia di rete specifica.
Ora, tra questi, inseriremo
un valore esadecimale a 16 bit, FFFE.
In questo modo, posso prendere 24 bit, 16 bit e 24 bit
e metterli insieme per ottenere un indirizzo EUI a 64 bit.
In questo modo si ottengono i 64 bit necessari per
identificare l'interfaccia sulla rete.
Quindi l'interfaccia utilizzerà l'autodiscovery
per determinare la rete in cui
si trova e aggiungere la porzione di rete dell'indirizzo IPv6,
che sarà costituita dai primi 64 bit dei nostri indirizzi.
Ora, metteremo i primi 64 bit che
rappresentano la rete davanti ai 64 bit dell'indirizzo
EUI-64 creato dal nostro indirizzo MAC per creare un indirizzo
IPv6 unicast instradabile a livello globale che possiamo usare.
Si può quindi vedere come tutto questo funzioni insieme utilizzando
l'indirizzo MAC per creare questo
indirizzo instradabile a livello globale.
Ora, il DHCP può essere utilizzato anche nell'ambito dell'IPv6, se si
preferisce utilizzarlo.
In questo caso, dovrete utilizzare il protocollo DHCPv6.
In questo modo si può fare in
modo che il DHCP assegni automaticamente le cose da un server DHCPv6.
Ma poiché il processo di autoconfigurazione con EUI-64 è già incorporato nel
protocollo IPv6 per impostazione predefinita, non è necessario
utilizzare il DHCPv6.
Tuttavia, se si desidera utilizzare il DHCPv6, è possibile farlo e questo
consente di assegnare gli indirizzi
che ogni interfaccia riceverà, invece di consentire
l'utilizzo del protocollo
di autoconfigurazione SLAAC.
Come ho detto, l'IPv6 sceglierà il proprio indirizzo in base
all'indirizzo MAC per impostazione predefinita,
quindi utilizzerà il protocollo NDP (neighbor
discovery protocol) per conoscere
gli altri indirizzi Layer 2 della rete in base ai loro indirizzi MAC e quindi sceglierà
il proprio ID host.
Per l'esame non è necessario conoscere a fondo l'NDP, ma è necessario
capire che l'NDP, questo protocollo di scoperta
dei vicini, è utilizzato in IPv6 e prende molte delle funzioni
della pubblicità dei router e della
scoperta dei vicini e le gestisce per voi.