Reti di Calcolatori a.a. 2005/06 Lezione 15 Reti di Calcolatori Andrea Frosini 1 Nel modello di riferimento: Application Transport Network Data Link Fisico Reti di Calcolatori Andrea Frosini 2 Indirizzi IP Ciascun host in Internet è identificato da un indirizzo IP costituito da: • l’indirizzo della rete (network address) in cui è l’host • l’indirizzo dell’host (host address) all’interno della rete di cui fa parte I router in Internet hanno un indirizzo IP per ciascuna interfaccia di rete: ad esempio, un router che collega due LAN possiede due indirizzi IP (uno per ciascuna scheda di rete) Un indirizzo IP è l’identificatore di una interfaccia di rete, non di un calcolatore Gli indirizzi IP sono globali ed assegnati, al giorno d’oggi, da varie organizzazioni coordinate da una autorità internazionale chiamata ICANN (Internet Corporation for Assigned Names and Numbers). Il braccio operativo di ICANN è chiamato IANA (Internet Assigned Numbers Authority) Reti di Calcolatori Andrea Frosini 3 Dotted Decimal Notation Ciascun indirizzo IP è costituito da 32 bit (4 byte) In genere sono rappresentati con la dotted decimal notation: quattro numeri decimali che rappresentano il valore dei quattro byte dell’indirizzo Ad esempio, l’indirizzo (in binario) 10100000 01010000 00011011 00000001 è rappresentato come 160.80.27.1 Reti di Calcolatori Andrea Frosini 4 Schema del formato degli indirizzi IP Reti di Calcolatori Andrea Frosini 5 Formato degli indirizzi IP • Classe A da 1.0.0.0 a 126.255.255.255: contiene gli indirizzi di 126 reti con circa 16 milioni di host in ciascuna rete • Classe B da 128.0.0.0 a 191.255.255.255: contiene gli indirizzi di 16382 reti con circa 65500 host in ciascuna rete • Classe C da 192.0.0.0 a 223.255.255.255: contiene gli indirizzi di circa 2 milioni di reti con 254 host in ciascuna rete • Classe D da 224.0.0.0 a 239.255.255.255: contiene gli indirizzi multicast che permettono di inviare un pacchetto a diversi host contemporaneamente • Classe E da 240.0.0.0 a 255.255.255.255: indirizzi riservati per future estensioni Reti di Calcolatori Andrea Frosini 6 Indirizzi IP speciali I • Un indirizzo IP in cui l’host address è composto da tutti 0 fa riferimento all’intera rete indicata dal network address Ad esempio, l’indirizzo 160.80.0.0 è l’indirizzo della rete 160.80. • Un indirizzo IP in cui l’host address è composto da tutti 1 è un indirizzo di broadcast per tutti gli host nella rete indicata dal network address Ad esempio, un pacchetto con indirizzo 160.80.255.255 è destinato a tutti gli host nella rete 160.80. • L’indirizzo 255.255.255.255 è il limited broadcast: il pacchetto è destinato a tutti gli host nella rete locale a cui appartiene l’host sorgente Reti di Calcolatori Andrea Frosini 7 Indirizzi IP speciali II • L’indirizzo 0.0.0.0 significa questo host: può essere usato solo durante l’inizializzazione di un host e mai come indirizzo destinazione • Un indirizzo IP avente network address nullo e host address non nullo indica un host sulla stessa rete a cui appartiene l’host sorgente: può essere usato solo durante l’inizializzazione di un host • Gli indirizzi 127.xxx.yyy.zzz sono riservati per il loopback: i pacchetti non vengono inviati ad una interfaccia di rete, ma gestiti come se fossero pacchetti entranti nell’host sorgente Reti di Calcolatori Andrea Frosini 8 Limitazioni del formato degli indirizzi IP I principali difetti degli indirizzi IP sono strutturali: • la rete a cui appartiene l’host è codificata nell’indirizzo: un host non può cambiare di posizione su Internet e mantenere lo stesso indirizzo IP (portatili, computer palmari,...) • l’indirizzo IP è l’identificatore di una scheda di rete, non di un host: se un calcolatore ha più di una interfaccia di rete non esiste un identificatore univoco • la suddivisione in classi degli indirizzi IP è troppo rigida: ad esempio, cosa succede se una organizzazione a cui è stato dato un indirizzo di classe A ha bisogno di più di un network address? Oppure se in una rete di classe C vengono installati più di 254 calcolatori? Reti di Calcolatori Andrea Frosini 9 IP routing tradizionale La procedura di routing (instradamento) dei pacchetti IP è molto semplice, in quanto nell’indirizzo IP di un pacchetto è codificato il numero della rete alla quale appartiene l’host destinazione Ogni router possiede una tabella di routing aggiornata staticamente (nel caso delle reti più piccole) o dinamicamente La tabella di routing in genere determina i percorsi verso intere reti, non verso singoli host. Infatti da ciascun indirizzo IP è sempre possibile determinare la classe (A, B, C) e ricavare quindi il numero della rete La tabella di routing può però contenere, se necessario, informazioni su come raggiungere gli host appartenenti alle reti collegate direttamente al router Reti di Calcolatori Andrea Frosini 10 La tabella di routing tradizionale La tabella di routing contiene: • per ciascuna rete broadcast collegata direttamente al router, un singolo record con l’indicazione dell’interfaccia di rete (NIC) verso la rete • per ciascun host collegato al router ma non facente parte di una rete broadcast, un record con l’indicazione dell’interfaccia di rete (NIC) da utilizzare per raggiungerlo • un numero variabile di record per reti non collegate direttamente al router, insieme con l’indicazione di un router adiacente a cui i pacchetti devono essere inviati • un record per un router adiacente di default, a cui inviare i pacchetti destinati a reti sconosciute Reti di Calcolatori Andrea Frosini 11 Subnet addressing La rigida divisione in classi degli indirizzi IP è un grosso problema. Ad esempio, gli indirizzi di classe B (reti di media dimensione) sono esauriti da tempo Una delle soluzioni consiste in una estensione del protocollo tradizionale: il subnet addressing (od anche subnetting) L’indirizzo IP non viene più suddiviso in network address e host address, ma in: • internet part: corrisponde al vecchio network address, ed è la porzione dell’indirizzo che viene interpretata dai router all’esterno della propria internetwork “locale” • local part: è suddivisa nel numero di una rete all’interno della internetwork locale, ed in un numero di host nella rete Reti di Calcolatori Andrea Frosini 12 Maschera della subnet All’interno di ciascuna internetwork locale è necessario adottare un unico formato per la local part dell’indirizzo IP A tale scopo si utilizza una maschera di subnet (subnet mask) E’ un numero di 32 bit, in cui: • i bit 1 indicano i bit che codificano i numeri di network • i bit 0 indicano i bit che codificano il numero di host La maschera si codifica in genere con la dotted decimal notation Reti di Calcolatori Andrea Frosini 13 Esempio di subnetting Se in una internetwork si utilizza la maschera 255.255.255.0, l’indirizzo IP 160.80.27.1 rappresenta: 255.255.255.0 1111111111111111 11111111 00000000 160.80.27.1 1010000001010000 00011011 00000001 • 160.80: indirizzo di rete di classe B • 27: indirizzo della rete nella internetwork locale • 1: indirizzo dell’host nella rete Si potrebbero avere perciò 256 subnet nella internetwork locale, e 254 host in ciascuna subnet Se la maschera fosse invece 255.255.252.0, l’indirizzo della subnet sarebbe 24 e l’indirizzo dell’host sarebbe 769; si avrebbero al massimo 64 subnet e 1022 host in ciascuna subnet Reti di Calcolatori Andrea Frosini 14 Routing con subnetting I Il subnet addressing complica la procedura di routing dei pacchetti Ogni record della tabella di routing ha 3 campi principali: • un network address • una maschera di subnet • l’indirizzo IP di un router (raggiungibile con un hop) La tabella contiene sempre un record per ciascuna rete connessa direttamente al router, ed un record per il router di default La tabella può anche contenere record per reti non direttamente connesse al router Reti di Calcolatori Andrea Frosini 15 Routing con subnetting II Per ricavare l’indirizzo del router a cui va inviato un pacchetto destinato all’host con indirizzo IP D: per ciascun record della tabella di routing con maschera di subnet M, indirizzo di rete N e indirizzo di router R: – calcola l’AND logico (bit a bit) tra D e M – se il risultato è uguale a N, invia il pacchetto a R (o direttamente all’host se è in una rete connessa direttamente al router) – se il risultato non è uguale a N, continua con il prossimo record della tabella I record della tabella sono analizzati cominciando da quelli con le maschere più lunghe (maggior numero di bit ‘1’) Il record per il router di default è sempre analizzato per ultimo Reti di Calcolatori Andrea Frosini 16 Esempio di routing con subnetting Reti di Calcolatori Andrea Frosini 17 Network Address Translation Poiché gli indirizzi IP scarseggiano, molte aziende usano un singolo indirizzo IP per tutti i calcolatori della internetwork interna per mezzo di un meccanismo chiamato Network Address Translation (NAT), od anche IP Masquerading Funziona soltanto con pacchetti IP che trasportano pacchetti di livello Transport appartenenti al protocollo TCP oppure al protocollo UDP Infatti, sfrutta i numeri di porta propri dei protocolli TCP e UDP, che sono memorizzati in opportuni campi dei pacchetti di livello Transport A tutti i calcolatori della internetwork interna viene assegnato un diverso indirizzo IP in una delle seguenti tre zone: 10.0.0.0:8, 172.16.0.0:12, e 192.168.0.0:16 (questi indirizzi sono riservati per il NAT) Tutta la internetwork è collegata ad Internet tramite un unico router che opera anche come dispositivo NAT; l’interfaccia di rete verso Internet è identificata dall’indirizzo IP ufficiale dell’azienda Reti di Calcolatori Andrea Frosini 18 Inoltro dei pacchetti con NAT Per ogni pacchetto IP in uscita dall’internetwork, il dispositivo NAT: • Sostituisce l’indirizzo IP del mittente con l’indirizzo IP ufficiale • Sovrascrive il numero di porta mittente nel pacchetto Transport con un identificatore del calcolatore mittente • Memorizza in una tabella l’indirizzo IP interno, il numero di porta mittente originario, e l’identificatore del calcolatore • Inoltra il pacchetto Per ogni pacchetto IP in entrata sull’internetwork, il dispositivo NAT compie l’operazione inversa: • Legge l’identificatore memorizzato come numero di porta destinatario nel pacchetto Transport, e determina l’indirizzo IP interno ed il numero di porta originale • Sostituisce il numero di porta destinatario nel pacchetto Transport, e sostituisce l’indirizzo IP destinatario nel pacchetto IP • Inoltra il pacchetto sulla internetwork Reti di Calcolatori Andrea Frosini 19 Altri protocolli del livello Network di IPS Oltre al protocollo IP, che è utilizzato per la trasmissione dei datagram, il livello Network di IPS definisce diversi altri protocolli, tra cui: • Internet Control Message Protocol • Address Resolution Protocol • Reverse Address Resolution Protocol, Bootstrap Protocol e Dynamic Host Configuration Protocol • Open Shortest Path First • Border Gateway Protocol Reti di Calcolatori Andrea Frosini 20 Internet Control Message Protocol Il protocollo ICMP (Internet Control Message Protocol) è utilizzato per lo scambio di messaggi tra i router IP; questi messaggi sono incapsulati in normali pacchetti IP RFC 792 e l’archivio on-line di IANA definisce vari tipi di messaggi ICMP, tra cui: • DESTINATION UNREACHABLE (destinazione non raggiungibile): impossibile localizzare un host destinazione, oppure non esiste un percorso valido • TIME EXCEEDED (tempo scaduto): un pacchetto è stato scartato perché il suo TTL è stato azzerato • PARAMETER PROBLEM (parametro non valido): un campo dell’header di un pacchetto contiene un valore illegale • REDIRECT: un router ritiene che un pacchetto sia stato inviato a lui per errore • ECHO e ECHO REPLY: utilizzati per controllare se un router od un host sono raggiungibili; ad ogni “request” si risponde con un “reply” • TIMESTAMP e TIMESTAMP REPLY: come ECHO e ECHO REPLY, ma la replica contiene alcuni timestamp che consentono la misurazione del tempo di trasmissione Reti di Calcolatori Andrea Frosini 21 Il protocollo ARP I A livello Data Link, la destinazione dei frame è individuata dall’indirizzo hardware delle schede di rete A livello Network la destinazione è individuata da un indirizzo IP E’ necessario avere un meccanismo che permetta di collegare questi indirizzi tra loro Il protocollo ARP (Address Resolution Protocol) del livello Network: • serve per derivare dall’indirizzo IP dell’host di destinazione l’indirizzo hardware della sua scheda di rete • utilizza i servizi del livello Data Link per spedire un pacchetto ARP E’ definito dall’RFC 826 Il protocollo RARP (Reverse ARP) consente, al contrario, di derivare l’indirizzo hardware di un host dal suo indirizzo IP Reti di Calcolatori Andrea Frosini 22 Il protocollo ARP II Se un host A vuole conoscere l’indirizzo hardware associato all’indirizzo IP di B: • A invia un pacchetto ARP con l’indirizzo IP di B incapsulato in un frame broadcast • solo B risponde al frame broadcast, indirizzando un pacchetto ARP ad A contenente l’indirizzo hardware associato al proprio indirizzo IP • A inserisce temporaneamente l’indirizzo hardware in una tabella (cache ARP), in modo da non ripetere l’operazione nel prossimo futuro Ottimizzazioni: • il pacchetto ARP di A contiene l’indirizzo hardware e l’indirizzo IP di A, in modo da evitare una ulteriore richiesta ARP da parte di B • tutti i calcolatori che ricevono frame broadcast con pacchetti ARP, estraggono le informazioni contenute e le memorizzano nella cache ARP Reti di Calcolatori Andrea Frosini 23 Inoltro dei pacchetti IP da parte di router su rete broadcast Si supponga che un router R1 riceva un pacchetto IP originato da un host A e destinato ad un host B remoto. Allora: • R1 determina (consultando la tabella di routing) l’indirizzo IP di un router R2 al quale deve essere inoltrato il pacchetto IP; determina anche l’interfaccia di rete N che permette di raggiungere R2 • R1 consulta la cache ARP cercando il record relativo all’indirizzo IP di R2; se tale record non esiste, invia un pacchetto di richiesta ARP con un frame broadcast sull’interfaccia di rete N • dopo aver determinato l’indirizzo hardware (Data Link) di R2, R1 incapsula il pacchetto IP in un frame con destinazione R2, e lo trasmette sull’interfaccia N • R2 riceve il pacchetto IP, e ripete l’intero processo Nota bene: gli indirizzi IP di R1 e R2 non sono scritti nel pacchetto IP da inoltrare! Reti di Calcolatori Andrea Frosini 24 Il protocollo DHCP Il protocollo DHCP (Dynamic Host Configuration Protocol, definito in RFC 1541, 2131 e 2132) fornisce parametri di configurazione agli host Internet. Consta di due parti: un protocollo per comunicare tali parametri dal server DHCP agli host ed un sistema di allocazione degli indirizzi di rete. Un server DHCP ha a disposizione un gruppo di indirizzi IP che possono essere assegnati liberamente ai client che ne fanno richiesta: • E’ possibile assegnare ad un determinato client (indirizzo hardware) uno specifico indirizzo IP • E’ possibile anche assegnare ad ogni client che ne fa richiesta un indirizzo IP scelto liberamente in un gruppo di indirizzi a disposizione del server • Gli indirizzi IP possono essere dati in prestito (leasing): l’assegnazione di un indirizzo IP ha un tempo limite, dopo il quale l’indirizzo viene considerato nuovamente libero ed assegnabile, a meno che il client prima della scadenza non rinnovi la richiesta Per i più curiosi: http://cdc.roma2.infn.it/supporto/dhcp.html Reti di Calcolatori Andrea Frosini 25 Protocolli di routing per Internet In Internet ogni AS è gestito da una singola autorità, che può scegliere liberamente l’algoritmo di routing da adottare all’interno dell’AS • Il routing all’interno di ciascun AS è gestito da un algoritmo interior gateway protocol (o IGP); ad esempio: – RIP (Routing Information Protocol), di tipo distance vector (oggi quasi scomparso) – OSPF (Open Shortest Path First), di tipo link state • Il routing tra gli AS è gestito da un algoritmo exterior gateway protocol (o EGP) – EGP era anche il nome del primo algoritmo utilizzato in Internet, oggi abbandonato – BGP (Border Gateway Protocol), essenzialmente di tipo distance vector Reti di Calcolatori Andrea Frosini 26 Limitazioni del protocollo IP La versione attuale del protocollo IP (numero 4) è oramai superata tecnologicamente: • lo spazio di indirizzi IP è praticamente esaurito • Internet è ormai più commerciale che accademica, quindi serve più sicurezza • portatili, cellulari (WAP) e computer palmari spingono verso un modello in cui gli host si muovono dinamicamente nello spazio • in futuro ogni televisore potrebbe essere un nodo Internet che offre programmi interattivi (video on demand) Reti di Calcolatori Andrea Frosini 27 Internet Protocol version 6 I Per superare le limitazioni del protocollo IP versione 4, la IETF ha cominciato a lavorare nel 1990 alla nuova versione del protocollo IP (numero 6) La nuova versione (RFC 2460–2466) è chiamata IPv6 (in precedenza, il tentativo di definire un nuovo protocollo era conosciuto come IP Next Generation, IPng) Idealmente, il nuovo protocollo: • supporta miliardi di host, anche assegnando gli indirizzi in modo inefficiente • riduce la dimensione delle tabelle di routing • semplifica il protocollo per aumentare la velocità dei router • fornisce maggiore sicurezza tramite meccanismi di autenticazione e crittografia • prende in considerazione il tipo di servizio del traffico, particolarmente il traffico real-time Reti di Calcolatori Andrea Frosini 28 Internet Protocol version 6 II • migliora il supporto per la trasmissione di tipo multicast • permette ad un host di muoversi senza cambiare il proprio indirizzo • il protocollo è aperto: può evolversi in futuro restando compatibile con le precedenti versioni • coesiste pacificamente con la versione 4 del protocollo IP Anche se non tutti questi obiettivi sono stati completamente raggiunti, IPv6 rappresenta una decisiva evoluzione rispetto a IPv4 Reti di Calcolatori Andrea Frosini 29 Formato del pacchetto IPv6 Reti di Calcolatori Andrea Frosini 30 L’header IPv6 • Version (4 bit): numero di versione del protocollo IP (ossia 6) • Traffic class (8 bit): distingue pacchetti aventi diversi requisiti di trasmissione in tempo reale • Flow label (20 bit): utilizzato quando vogliamo predeterminate caratteristiche di qualità del servizio • Payload length (16 bit): lunghezza del pacchetto escludendo i primi 40 byte della testata • Next header (8 bit): indica quale sub-header opzionale segue questa testata, oppure il protocollo di livello Transport al quale appartengono i dati che seguono questo header • Hop limit (8 bit): un contatore TTL decrementato ad ogni hop; quando si azzera il pacchetto viene scartato • Source address (128 bit): l’indirizzo IPv6 dell’host sorgente • Destination address (128 bit): l’indirizzo IPv6 dell’host destinazione Reti di Calcolatori Andrea Frosini 31 Extension header Facoltativamente, un pacchetto IP può contenere uno o più extension header tra i seguenti: • Hop per hop: informazioni varie per i router (supporto per jumbogrammi) • Destination: informazioni aggiuntive relative alla destinazione (attualmente non utilizzata) • Routing: lista di router da utilizzare (simile all’opzione loose source routing di IPv4) • Fragment: gestione dei frammenti del datagramma (contiene identificatore di datagramma, posizione del frammento nel datagramma originale e bit che indica se il frammento è seguito da altri frammenti) • Autenticazione: verifica dell’identità del trasmittente • Carico utile cifrato: informazioni relative al contenuto cifrato Reti di Calcolatori Andrea Frosini 32 Indirizzi IPv6 I Nei 16 byte dell’indirizzo IPv6 si possono codificare 2128 = 340 282 366 920 938 463 463 374 607 431 768 211 456 identificatori diversi, ossia 700 000 miliardi di miliardi per metro quadro di superficie del globo. Speriamo che siano sufficienti! I bit iniziali di un indirizzo IPv6 indicano l’utilizzo dell’indirizzo stesso; le sequenze di bit iniziali fino ad oggi assegnate sono: 0000 0000 Riservato (contiene gli indirizzi IPv4 compatibili) 0000 001 Riservato per assegnazioni NSAP (protocolli ISO) 0000 010 Riservato per assegnazioni IPX (protocolli Novell) 001 Indirizzi unicast e aggregabili (classi A, B e C di IPv4) 1111 1110 10 Indirizzi da usare su una linea locale 1111 1110 11 Indirizzi da usare in un sito locale 1111 1111 Indirizzi di tipo multicast (classe D di IPv4) Reti di Calcolatori Andrea Frosini 33 Indirizzi IPv6 II La rappresentazione degli indirizzi IPv6 è costituita da parole di 16 bit in esadecimale separate da “ : ”: 47CD:0000:0000:0000:0022:1234:A456:0124 Un indirizzo con un gran numero di zeri contigui può essere scritto in modo compatto omettendo i campi che valgono zero: 47CD::0022:1234:A456:0124 Un indirizzo IPv6 avente i primi 96 bit nulli rappresenta un indirizzo IPv4 ::A050:5001 equivale a ::160.80.80.1 Alcuni indirizzi IPv6 codificano indirizzi IPv4 assegnati alla stessa interfaccia di rete: ::FFFF:A050:5001 codifica 160.80.80.1 Reti di Calcolatori Andrea Frosini 34 Confronto tra i pacchetti IPv6 e IPv4 • Il campo Protocol in IPv4 è stato inserito come caso particolare di Next header in IPv6 • Il campo Options in IPv4 è stato sostituito da header aggiuntivi dopo l’header principale; l’header seguente è indicato da Next header • Niente campi relativi alla frammentazione: ogni host e router IPv6 deve funzionare con pacchetti di almeno 1280 byte; se un router non riesce a inviare un pacchetto troppo lungo invia un messaggio d’errore all’host sorgente, che frammenterà il pacchetto utilizzando un header aggiuntivo • E’ scomparso il campo Checksum: per motivi di efficienza i router non effettuano alcun controllo d’errore sulla testata (il controllo è comunque svolto dai livelli superiori) • Usando un extension header, è possibile creare pacchetti di dimensione enorme (jumbogrammi, cioè datagrammi di dimensione superiore a 65535 byte); sono utili per linee ad altissima velocità tra supercalcolatori Reti di Calcolatori Andrea Frosini 35 Transizione da IPv4 a IPv6 La transizione da IPv4 a IPv6 sarà graduale: isole IPv6 di dimensione sempre maggiore si fonderanno insieme, fino a coprire l’intera Internet Come trasportare pacchetti IPv6 in reti che ancora utilizzano IPv4? • tunneling: il pacchetto IPv6 è incapsulato in un pacchetto IPv4, che è inviato per mezzo del tunnel ad un router od ad un host in grado di funzionare sia con IPv4 che con IPv6 • dual stack operation: tutti i nodi IPv6 possono eseguire sia IPv6 che IPv4, a seconda del campo Version all’interno dei pacchetti Reti di Calcolatori Andrea Frosini 36