I progettisti hanno definito alcuni tipi di indirizzo e ne hanno lasciati parecchi per future definizioni, attualmente sconosciute. RFC 2373 [Luglio 1998] / IP Version 6 Addressing Architecture definisce l'attuale schema di indirizzamento anche se c'è già una nuova bozza disponibile: draft-ietf-ipngwg-addr-arch-*.txt.
Si dia ora uno sguardo ai differenti tipi di prefisso (e quindi tipi di indirizzo):
Sono particolari indirizzi, validi soltanto nel link di un interfaccia. Usando questo indirizzo come destinazione, il pacchetto non attraverserà mai un router. È usato per comunicazioni link quali:
c'è qualcun'altro su questo link?
c'è qualcuno con un particolare indirizzo (per esempio per la ricerca di un router)?
Essi iniziano con (dove "x" è qualsiasi carattere esadecimale, normalmente "0")
fe8x: <- attualmente l'unico utilizzato. fe9x: feax: febx: |
Un indirizzo con questo prefisso si trova su ogni interfaccia abilitata IPv6 dopo una configurazione automatica stateless (che è il caso classico).
Questi sono indirizzi simili a quelli specificati dalla RFC 1918 / Address Allocation for Private Internets, oggi utilizzati da IPv4, con il vantaggio che chiunque usi questo tipo di indirizzo ha la possibilità di utilizzare 16 bit per gestire fino a 65536 sottoreti. È analogo alla 10.0.0.0/8 di IPv4.
Un altro vantaggio: poiché è possibile assegnare più di un indirizzo ad un'interfaccia IPv6, si può anche assegnare tale indirizzo locale in aggiunta ad uno globale.
Questo tipo di indirizzo inizia con:
fecx: <- il più comunemente usato. fedx: feex: fefx: |
(dove "x" è qualsiasi carattere esadecimale, normalmente "0")
Si noti che ci sono dibattiti sul fatto di dismettere questo tipo di indirizzi poiché esistono diversi problemi. Per maggiori dettagli si veda draft-ietf-ipv6-deprecate-site-local-XY.txt.
A mio modesto parere, questo tipo di indirizzi sono ancora una buona scelta per prove di laboratorio.
Attualmente, c'è un unico indirizzo di tipo globale definito (il primo progetto, chiamato "provider based" fu cestinato alcuni anni fà RFC 1884 / IP Version 6 Addressing Architecture [obsoleto], se ne possono trovare alcune tracce nei più vecchi sorgenti del kernel Linux).
Inizia con (le x sono caratteri esadecimali)
2xxx: 3xxx: |
Nota: il prefisso "aggregabile" (aggregatable) è stato depennato dalle bozze attuali. Ci sono alcuni ulteriori sottotipi definiti, come di seguito riportato:
Questi sono i primi indirizzi globali che sono stati definiti ed utilizzati. Iniziano con
3ffe: |
Esempio:
3ffe:ffff:100:f102::1 |
Un particolare indirizzo 6bone di test che non sarà mai globalmente unico, inizia con
3ffe:ffff: |
ed è generalmente mostrato negli esempi, perché se venissero mostrati indirizzi reali, sarebbe possibile per qualcuno fare un copia & incolla sui suoi file di configurazione. In questo modo si potrebbe causare inavvertitamente la duplicazione di un indirizzo globalmente unico. Ciò potrebbe causare seri problemi all'host originale (per esempio potrebbe ricevere pacchetti di risposta per richieste che non sono mai state inviate da esso). Tuttavia è possibile richiedere uno di questi prefissi, si veda Come far parte del 6bone. Anche alcuni tunnel brokers distribuiscono prefissi di indirizzi 6bone di test.
Questi indirizzi, pensati per uno speciale meccanismo di tunneling [RFC 3056 / Connection of IPv6 Domains via IPv4 Clouds e RFC 2893 / Transition Mechanisms for IPv6 Hosts and Routers], codificano un dato indirizzo IPv4 ed una possibile sottorete. Essi iniziano con
2002: |
Per esempio, per rappresentare 192.168.1.1/5:
2002:c0a8:0101:5::1 |
Un semplice comando di shell può aiutare a generarli a partire da indirizzi IPv4:
ipv4="1.2.3.4"; sla="5"; printf "2002:%02x%02x:%02x%02x:%04x::1" `echo $ipv4 | tr "." " "` $sla |
Si veda anche tunneling con il 6to4 e informazioni sui relay router 6to4.
Questi indirizzi sono delegati agli Internet service provider (ISP) ed iniziano con
2001: |
I prefissi ai maggiori ISP (proprietari di backbone, anche detti LIR) sono delegati dai local registries ed attualmente assegnano prefissi di lunghezza 35.
Ogni ISP minore, può ottenere un prefisso di lunghezza 48.
Attualmente, due intervalli di indirizzi sono riservati per esempi e documentazione:
3ffe:ffff::/32 2001:0DB8::/32 EXAMPLENET-WF |
Questi intervalli di indirizzi dovrebbero essere filtrati in base agli indirizzi di provenienza e possibilmente NON dovrebbero essere instradati sui router di confine verso Internet.
Gli indirizzi multicast sono usati per servizi ad essi relativi.
Essi iniziano sempre con (xy è il valore dell'ambito di applicabilità - scope)
ffxy: |
Si suddividono in ambiti di applicabilità (scope) e tipi:
L'ambito di applicabilità multicast (multicast scope) è un parametro che specifica la distanza massima che può percorrere un pacchetto a partire dall'entità che lo invia.
Attualmente, vengono definite le seguenti regioni (ambiti di applicabilità):
ffx1: node-local, i pacchetti non lasciano mai il nodo.
ffx2: link-local, i pacchetti non sono mai inoltrati dai router, in questo modo non lasciano mai il link specificato.
ffx5: site-local, i pacchetti non lasciano mai il sito.
ffx8: organization-local, i pacchetti non lasciano mai l'organizzazione (non così facile da implementare, la gestione deve essere effettuata dal protocollo di instradamento).
ffxe: global scope.
gli altri sono riservati.
Ci sono numerosi tipi già definiti/riservati (si veda RFC 2373 / IP Version 6 Addressing Architecture per i dettagli). Alcuni esempi sono:
Indirizzo di tutti i nodi: ID = 1h, indirizza tutti gli host sul nodo locale (ff01:0:0:0:0:0:0:1) o sul link connesso (ff02:0:0:0:0:0:0:1).
Indirizzo di tutti i router: ID = 2h, indirizza tutti i router sul nodo locale (ff01:0:0:0:0:0:0:2), sul link connesso (ff02:0:0:0:0:0:0:2), o sul sito locale (ff05:0:0:0:0:0:0:2).
Speciale indirizzo multicast utilizzato come destinazione nella scoperta del vicinato, perché a differenza di IPv4, ARP non esiste più in IPv6.
Un esempio di questo indirizzo somiglia a
ff02::1:ff00:1234 |
Il prefisso utilizzato mostra che questo è un indirizzo multicast link-local. Il suffisso viene generato dall'indirizzo di destinazione. In questo esempio, un pacchetto dovrebbe essere inviato all'indirizzo "fe80::1234" ma lo stack di rete non conosce l'attuale indirizzo di livello 2 (MAC). I 104 bit più significativi vengono rimpiazzati con "ff02:0:0:0:0:1:ff00::/104" ed i 24 bit meno significativi vengono lasciati inalterati. Questo indirizzo viene quindi usato `on-link' per trovare il corrispondente nodo che deve inviare una risposta contenente il suo indirizzo di livello 2 (MAC).
Gli indirizzi anycast sono indirizzi speciali e vengono utilizzati per trattare cose come il server DNS più vicino, il server DHCP più vicino o simili gruppi dinamici. Questi vengono presi dallo spazio degli indirizzi unicast (aggregatable global o site-local per il momento). Il meccanismo anycast (dal punto di vista del client) sarà gestito dai protocolli di routing dinamici.
Nota: gli indirizzi anycast non possono essere usati come indirizzo del mittente, ma sono validi soltanto come indirizzi di destinazione.
Un semplice esempio di un indirizzo anycast è il tipo subnet-router. Assumendo che un nodo abbia il seguente indirizzo globale IPv6:
3ffe:ffff:100:f101:210:a4ff:fee3:9566/64 <- Indirizzo del nodo |
L'indirizzo anycast subnet-router sarà creato svuotando completamente il suffisso (i 64 bit meno significativi):
3ffe:ffff:100:f101::/64 <- indirizzo anycast subnet-router |