Importanza di IP
Il protocollo IP è considerato un protocollo chiave nella pila OSI: se si guarda la pila OSI, si nota che essa è a clessidra, con al centro IP. Questa particolare forma è data dal fatto che a livelli più bassi i protocolli si diversificano a seconda della struttura fisica della rete (Wifi, cablata, …) e a livelli più alti esistono protocolli diversi a seconda del tipo di informazione che si deve elaborare/trasportare (posta elettronica, audio/video, pagine web,…). IP è, invece, il più diffuso protocollo di trasmissione di livello 3. Al momento esistono due versioni di IP: v4 e v6.
All'interno di questo corso si analizzeranno le caratteristiche dell'IPv6, mentre per la descrizione approfondita dell'IPv4 è rimandata ad altri corsi.
Limiti di IPv4
L'IPv4 è la versione al momento più usata in tutto l'Occidente (Nord America, Europa), ma presenta diversi limiti, che porteranno, probabilmente, all'adozione della nuova versione (IPv6) in tempi relativamente brevi.
I limiti di IPv4 più evidenti sono:
-esaurimento dello spazio di indirizzamento (32bit). Questo fatto è causato da:
--numero consistente di combinazioni riservate per indirizzi multicast, per indirizzi privati, indirizzi indeterminati, indirizzi broadcast.
--frammentazione degli indirizzi, data da un numero elevato di indirizzi assegnati, ma non effettivamente utilizzati.
-scalabilità del routing; siccome tutte le le reti IP per essere raggiunte devono essere annunciate, i pacchetti BGP, che si scambiano i vari Aunonomous System (AS), man mano che aumenta la frammentazione e il numero degli indirizzi assegnati diventano sempre più grandi, generando tabelle di routing sempre più difficili da consultare (al momento sono di circa 320MB per gli ISP più grandi).
-richiesta di servizi nuovi o più efficienti, in modo da ottimizzare le funzioni di instradamento (ad esempio implementarle in HW). Alcuni nuovi servizi che negli ultimi anni sono diventati fondamentali:
--mobilità, nel senso che si abbia la possibilità di mantenere l'indirizzo IP anche nel caso in cui si cambi l'interfaccia fisica di rete.
--sicurezza.
--plug & play (autoconfigurazione).
--qualità del servizio, QoS ( come la garanzia di un tempo massimo di attraversamento, …).
--multicast completamente automatico.
Metodi di attribuzione indirizzi IPv4
All'inizio degli anni '90 gli indirizzi IPv4 stavano finendo a causa dell'apparizione del WEB. Per limitare la velocità di crescita delle richieste di indirizzi di IPv4 sono state usate due strategie:
-NAT, anche se vanno contro l'idea che i router non possano spacchettare i pacchetti ad un livello superiore al 4, con il quale è possibile attribuire indirizzi logici differenti a gruppi di host con lo stesso indirizzo IP, mediante l'uso di porte TCP/UDP.
-criteri di assegnazione degli indirizzi più attenti. La IANA (divisa in 5 agenzie regionali) ha cominciato ad assegnare le reti "/8" alle agenzie regionali. Ogni agenzia può chiedere un nuovo /8 quando non ha più di "/9" indirizzi disponibili da assegnare oppure quando non si hanno abbastanza indirizzi da coprire tutti gli indirizzi che verranno utilizzati nei 18 mesi successivi (velocità di consumo degli indirizzi). Al momento restano circa 20 "/8" da assegnare.
-riassegnando parte degli indirizzi non utilizzati (per il momento questa strada non è ancora stata intrapresa), verificando quali gruppi di indirizzi non sono annunciati nei pacchetti BGP tra gli AS più importanti.
Funzionalità di IPv6
IETF nel 1992 ha proposto una "call for proposals" per introdurre una nuova versione del protocollo IP. La proposta vincente fu quella di SIPP.
Secondo IPv6, gli header risultano essere a lunghezza fissa (40B):
-versione (4bit), nella realtà non è utilizzato, in quanto il protocollo di livello 3 si conosce già in un campo del protocollo di livello 2.
-traffic class (8bit) gestisce la qualità del servizio (QoS).
-flow label (20bit).
-payload length (16 bit) indica la lunghezza del carico dati del pacchetto (max 64Kb).
-next header (8bit) indica se i bit successivi si riferiscono ad un altro header IPv6 oppure ad un protocollo di livello superiore (es. TCP). In questo modo è possibile specificare le opzioni dentro agli header successivi. Questa tecnica rende più difficile stabilire la posizione delle intestazioni di livello superiore (in IPv4 bastava vedere i campi header length e protocol type). Esiste un ordine degli header consigliato (Hop by hop, routing, fragment, authentication, ecrypted, destination option), ma non è detto che sia così (ad esempio il destination option può essere in seconda posizione). Tutte le opzioni specificate dal next header sono allineate a 32bit.
-hop limit (8bit) indica il numero massimo di router attraversabili prima che il pacchetto venga scartato. Questo campo è utile per evitare che i pacchetti IP continuino a girare nel caso di loop nella topologia della rete.
-source IP address (128bit).
-desitination IP address (128bit).
Caratteristiche di IPv6
IPv6 non ammette la frammentazione a livello router, come invece era in IPv4; infatti, la frammentazione deve effettuata direttamente da chi invia il pacchetto. In più, in IPv6 non è più presente il checksum, in quanto si è capito che i controlli degli errori a livelli più bassi sono abbastanza accurati.
IPv6 introduce nuove caratteristiche interessanti ma, introduce alcune problematiche:
-difficoltà nel localizzare le intestazioni di livello 4, in quanto il numero degli header non è fisso, e il tipo di protocollo di livello superiore è indicato solo nell'ultimo header.
-indirizzi molto grossi (tabelle di lookup e (T)CAM molto grosse).
-frammentazione affidata a chi invia il pacchetto, che magari non conosce la lunghezza massima dei pacchetti trasportabili da alcuni rami della rete.
-tabelle dei DNS non univoche, siccome è possibile avere più indirizzi per una stessa interfaccia.
Alcune caratteristiche introdotte dall'IPv6 erano già state inserite in IPv4, mediante l'utilizzo di soluzioni tampone (ad esempio per l'autoconfigurazione era stata inserita grazie al DHCP). La differenza con il passato è che in IPv6 queste nuove funzionalità sono definite all'interno del protocollo stesso.
Le soluzioni tampone stanno ostacolando la migrazione allo standard IPv6, anche se a breve sarà necessario.
Architettura di indirizzamento di IPv6
Come in IPv4, anche in IPv6 esistono diversi tipi di indirizzamento, ma a differenza della versione precedente, IPv6 consente la coesistenza di indirizzi diversi sulla stessa interfaccia, in modo da permettere il collegamento con ISP diversi o a reti diverse di una stessa interfaccia contemporaneamente.
Esistono 3 tipi di indirizzamento:
-unicast: il pacchetto inviato deve raggiungere una sola destinazione. Si riconosco due tipi di indirizzamento unicast:
--link local, che è l'indirizzo necessario per comunicare all'interno di una sottorete.
--global, che è l'indirizzo IP pubblico. Ci può essere più di un global address per interfaccia (in modo da favorire l'aggregazione e da permettere la connessione a ISP diversi su una stessa interfaccia).
--site-local, l'indirizzo privato all'interno di una sottorete (che può essere composta anche da più sottoreti).
-multicast: il pacchetto deve raggiungere tutte le interfacce di un gruppo multicast. Per individuare gli ascoltatori multicast presenti in una rete è presente un protocollo, che sostituisce l'IGMP di IPv4. L'indirizzo di un pacchetto multicast è dato da:
--gruop ID, gruppo multicast a cui si fa riferimento.
--flag, indica se è un indirizzo multicast transitorio o permanente.
--scope, che indica il livello del gruppo multicast (può essere a livello di nodo, link, sito, locale o globale).
-anycast: il pacchetto deve raggiungere almeno un'interfaccia di un gruppo anycast. E' utile, ad esempio, se si necessita di un servizio, offerto da un gruppo di server uguali. E' usato ad esempio per i DNS, per favorire l'autoconfigurazione.
Con IPv6, è stato tolto l'indirizzo di broadcast perché consuma troppe risorse di elaborazione e di banda. Esso è stato sostituito da gruppi multicast standard, che vengono attribuiti alle macchine nel momento in cui si connettono alla rete. Ad esempio per conoscere l'indirizzo di rete non viene più inviato un messaggio broadcast, ma un messaggio in multicast diretto a tutti i router della rete (utilizzando un gruppo multicast standard).
Rappresentazione degli indirizzi IPv6
Per rendere comprensibile la scrittura degli indirizzi IPv4 si ricorreva alla notazione decimale puntata (130.192.16.17).
In IPv6 si usa la base 16 in gruppi di 4 cifre divise da ":" (FEDC:BA98:876::7:AD:AL:3423).
I gruppi di zeri possono essere compattati con "::" (ovviamente solo una volta per indirizzo in modo da non creare ambiguità).
L'indirizzo di loopback si scrive "::1".
L'indirizzo non specificato è "::".
Tutti gli indrizzi che iniziano per ::xxx.xxx.xxx.xxx sono utilizzati per gli indirizzi IPv4, usati per renderli interfacciabili con IPv6. Gli indirizzi di compatibilità di IPv4 si scrivono in decimale puntato.
Tutti gli indirizzi che iniziano per ::FFFF:xxx:xxx:xxx:xxx sono utilizzati per mappare un indirizzo IPv4 su macchine dual-stack, in modo da non dover duplicare i socket su cui è in ascolto una macchina (un socket IPv4 e uno IPv6).
Non si usano più le net mask, poiché il concetto è sostituito con il prefix di rete con notazione /n.
Tutti gli indirizzi che iniziano per 2o3 sono indirizzi unicast aggregabili.
Tutti gli indirizzi che iniziano per FE sono link local.
Tutti gli indirizzi che iniziano FD sono privati. Per evitare sovrapposizioni di indirizzi in caso si uniscano reti private differenti si estrae la base casualmente, in modo da rendere questo fatto improbabile. Altrimenti si possono usare due NAT in entrambe le direzioni.
Tutti gli indirizzi multicast iniziano per FF.
Tutti gli indirizzi che iniziano per 0000:010 sono per IPX
Tutti gli indirizzi 0000:001 sono per NSAP.
Molti range di indirizzi non sono utilizzabili come indirizzi IP ma gli verranno date funzioni specifiche.
Gerarchia di indirizzamento in IPv6
La struttura della rete web IPv6 è molto simile a quella di IPv4, in quanto anche essa è strutturata in livelli:
-Top Level Autority sono gli ISP di livello più alti.
-Next Level Autority
-Provider
-Clienti
Questa gerarchia non è obbligata in quanti alcuni clienti possono connettersi direttamente ai Top Level, oppure è possibile che due blocchi dello stesso livello siano collegati tra di loro. Questa gerarchia logica è però utile per dividere in parti gli indirizzi IP:
-48 bit per la topologia di rete pubblica (prefisso di rete):
--2o3.
--id di top level authority (circa 13).
--clienti e sottoclienti delle top level.
-16 bit per la topologia di rete privata.
-64bit per numerare le interfacce. Questo numero è diventato più grosso addirittura del MAC-address (48bit). E' quindi possibile utilizzare l'indirizzo fisico per costruire questa parte dell'indirizzo IP: la traduzione viene effettuata dividendo il MAC address in due blocchi da 24bit. I 24 bit più alti vengono messi nella parte alta dei 64 bit, poi viene messo un blocco FFFE ed infine la parte bassa del MAC address.
| Succ. > |
|---|






