Introduzione a Internet
Transcript
Introduzione a Internet
RETI INTERNET MULTIMEDIALI Introduzione ai protocolli ed alla rete Internet Il documento è adattato da materiale cortesemente messo a disposizione dal Prof. Stefano Paris INTERNET Introduzione al paradigma e alla rete “internet”: il paradigma Rete di reti Rete logica indipendente dalle tecniche trasmissive utilizzate Virtualizzare la rete e rendere le applicazioni indipendenti dai dettagli del trasporto Una piattaforma per lo sviluppo delle applicazioni, indipendente dall’evoluzione delle tecnologie di rete (WAN, LAN) Basata su protocolli standard sia per l’interlavoro tra reti che per le applicazioni Il protocollo di rete non presuppone servizi particolari dai livelli protocollari sottostanti (nessuna garanzia di consegna o riscontri) Standard pubblicamente disponibili Il modello a clessidra email WWW phone... SMTP HTTP RTP... TCP UDP… IP ethernet PPP… CSMA async SDH ... copper fiber radio... Internet: la rete mondiale Un insieme di reti indipendenti interconnesse Nata da un nucleo iniziale di stampo accademico e no-profit, migrato ad utilizzi universali Ciascuna rete interconnessa ha un proprio: finanziamento gestione politica d’uso Impiega una famiglia di protocolli comune, detta comunemente TCP/IP Modello di interconnessione La rete logica è ottenuta interconnettendo reti fisiche e realizzando l’interlavoro a livello 3 del modello OSI Router: nodi che svolgono il compito di interconnettere le reti fisiche, instradando verso la destinazione l’informazione contenuta nei pacchetti di livello 3 OSI, secondo la modalità “datagram” (senza connessione-store&forward- best-effort) Host: nodi terminali che espletano compiti che corrispondono a tutti i livelli della pila OSI Packet Payload Header A B C Paradigmi di commutazione ALTA Circuiti Dedicati Capacità di garantire qualità Circuiti Commutati Commutazione di Circuito Circuiti Virtuali Permanenti Commutazione di Pacchetto Circuiti Virtuali Commutati Commutazione Datagramma BASSA BASSA Capacità di condividere le risorse Risorse: Capacità trasmissiva, memoria, capacità elaborativa Qualità del Servizio: caratteristiche del trasporto in termini di: ritardo, varianza, volume di dati trasferiti nell’unità di tempo, tasso di perdita, disponibilità della comunicazione ALTA Pila internet e modello OSI Application Presentation Application Application SMTP, NNTP Telnet, SNMP, HTTP Session Transport Network Transport TCP Network IP Data Link Physical OSI stack UDP Internet stack ICMP Esempio Pila completa Video VoIP Telnet FTP End User Applications SMTP HTTP Application RTSP SNMP RTP/RTCP DNS DHCP SCTP MobileIP IPSec IPv6 SIP RIPv1 RIPv2 UDP IGMP OSPF RSVP TCP IPv4 BGP NAPT ICMP NAT Network Management & Control Applications Transport Internet ICMPv6 ARP/RARP Some Internet protocols & their dependencies Some links represent mostly used configuration Data Link IEEE 802, PPP Physical Layer Twisted Pairs, Coax, Fiber, Radio, Powerline, .. Data Link & Physical Protocolli di controllo e di trasporto dati Il “medioevo” di Internet Fonte: Prof. Jim Kurose 2008 Il sistema di interconnessione Interconnessione tra ISP: Peering e Transito Peering Due ISP offrono mutuamente la connettività tra i loro clienti (solitamente senza compenso) Non transitivo Transito Un ISP offre connettività verso ogni rete ad esso nota (dietro compenso) Transito Peering Tipologie di peering Peering pubblico Ci si connette ai Peer attraverso un IXP Peering privato La connessione col Peer avviene con collegamento diretto Paid peering Connessione tra Peer in cui una delle due parti chiede un compenso (rapporto sbilanciato) Depeering A luglio 2013 Telecom Italia ha interrotto unilateralmente le interconnessioni esistenti tra sé e quasi tutte le altre reti italiane: depeering Nuovo criterio per il peering settlement free: [essere] suoi “Pari”, ossia Operatori di Telecomunicazioni rispondenti a criteri quali, /inter alia/, volumi bilanciati, una base di clienti finali significativa, traffico elevato, punti di ridondanza, e altro Peering solo privato Peering a pagamento in alternativa Architettura Internet alle origini http://conferences.infotoday.com/documents/150/2012CDNSummit-Deepfield.pdf Architettura Internet attuale Più piatta e densamente interconnessa Disintermediazione tra fornitori di contenuti e “eyeball providers” (ISP di accesso) Modelli commerciali complessi tra fornitori di contenuti, di transito e consumatori IXP: Internet eXchange Points www.monkey.org/~labovit/papers/gpf_2011.pdf Tier 1, IXP e CDN Rete gerarchica Al centro un numero piccolo di grandi reti interconnesse “tier-1” commercial ISPs (es. Verizon, Sprint, AT&T, Qwest, Level3) con copertura nazionale e internazionale Grandi Content Delivery Networks - CDN (Google, Akamai, Microsoft) Si comportano in modo paritetico e non prevedono compensi Hanno accesso a tutte le rotte Internet Tier-1 ISPs & Grandi CDN si interconnettono (peer) privatamente IXP IXP large content distributor (e.g., Google) Tier 1 ISP large content distributor (e.g., Akamai) … o presso gli Internet exchange points IXPs Tier 1 ISP Tier 1 ISP Catena del valore di Internet “The Internet is a network of networks interconnected with one another, and operated by different Internet providers Five different roles in the value chain of content delivery over the Internet” CA: Content Aggregator CA OTT: Over The Top Telco/ISP Fonte: elaborazione Analsysis Mason, 2011 ISP: Internet Service Provider TSP: Transit Service Provider OTT Telco/ISP TSP Player di Internet OTT Content Aggregator (CA) TELCO/ISP Transit service Provider (TSP) Offre agli end-user dei Telco uno o più servizi, sfruttando la connettività della rete Internet Attraverso una rete di delivery rende maggiormente efficace la fruizione dei contenuti e sei servizi OTT da parte degli end user Il Telco offre agli end-user suoi clienti un accesso ad Internet attraverso una linea trasmissiva dati Distribuisce traffico da e verso una rete di terza parte, sfruttando la propria infrastruttura di rete in fibra ottica high-speed di dimensione internazionale End user L’end-user (eyeball-ISP) accede ad Internet attraverso un dispositivo fisso o mobile connesso ad Internet tramite un Telco Evoluzione del paradigma Fase 1 Prezzi dell’accesso costanti -Banda commodity - forse non l’accesso - certamente non il mobile www.monkey.org/~labovit/papers/gpf_2011.pdf Fase 2 Prezzi dell’accesso costanti -Banda commodity - forse non l’accesso -certamente non il mobile Aumento costi infrastruttura (porte, transito, …) Fase 3 Prezzi dell’accesso costanti -Banda commodity - forse non l’accesso -certamente non il mobile Miliardi di ricavi per servizi OTT (Cloud) Pubblicità su Internet Provider in cerca di margini e in forte competizione per la stessa “torta” Netflix paga Comcast Il 24 febbraio 2014 Netflix ha raggiunto un accordo con il maggiore cable-operator americano, Comcast, per ottenere un trattamento privilegiato del traffico video streaming a fronte di un compenso (Paid Peering) Primo atto a valle di una sentenza a favore di Verizon vs Netflix sulla «Network Neutrality» Top 10 Traffico Internet • I primi 10 player di Internet generano una quota notevole del traffico totale • Negli ultimi anni player che rivestono un ruolo importante nei contenuti hanno scalato la classifica Traffico video in grande evidenza • Negli Stati Uniti la percentuale di traffico Internet nell’ora di punta è principalmente imputabile al video streaming di Netflix • Google (incluso Youtube) vale quasi il 25% del traffico in US P2P e direct download Nel 2007 il traffico P2P contabilizzava il 30% del traffico Internet Successivamente soppiantato da direct download http://www.deepfield.net/blog/ Tendenza del traffico Internet 1 EB = 1000000000000000000B = 1018bytes = 1000petabytes = 1 million terabytes = 1 billion gigabytes http://www.cisco.com/en/US/solutions/collateral/ns341/ns525/ns537/ns705/ns827/VNI_Hyperconnectivity_WP.html Il traffico cresce complessivamente Video e mobile sono i contributi in maggior crescita Il cloud computing si sta inserendo come elemento di innovazione importante http://www.caida.org/workshops/wie/1212/slides/wie1212_selalufcalderwood.pdf Tendenza del traffico (US) https://www.sandvine.com/downloads/general/global-internet-phenomena/2013/sandvine-global-internet-phenomena-report-1h-2013.pdf Tendenza del traffico (EU) https://www.sandvine.com/downloads/general/global-internet-phenomena/2013/sandvine-global-internet-phenomena-report-1h-2013.pdf Tendenza del traffico VoIP Il traffico telefonico a commutazione di circuito (TDM) è ancora l’elemento portante dei ricavi degli operatori di telecomunicazioni fisse e mobili Inizialmente il VoIP come strumento di efficienza interna per tratte a lunga distanza o come nicchia per chiamate a lunga distanza con scarsi requisiti di qualità In atto una trasformazione progressiva dei ricavi verso i servizi dati a larga banda Spinta indotta dai player OTT (in particolare Skype, ora Microsoft) per la telefonia Operatori Mobili e VoIP http://www.telegeography.com/page_attachments/products/website/research-services/telegeography-report-database/0004/6341/TG_executive_summary.pdf Nuovi strumenti per i messaggi SMS e nuova messaggistica Gli SMS rappresentano una fonte importante di ricavi per gli operatori mobili, ma Internet offre una moltitudine di vie sostitutive dirette oltre all’Email: Instant Messaging e Chat in modalità isolata (MSN, Yahoo Messanger, Whatsapp, …) o inseriti in suite più ampie di comunicazione unificata (es. Skype) o di Social networking (es. Facebook) A questi si affiancano strumenti che cavalcano paradigmi innovativi che superano la logica della messaggistica tra persone (uno a uno o uno a molti per mailing massivi) es. Twitter Tutte queste novità trasformano traffico e ricavi della messaggistica Ricavi e traffico per i messaggi http://www.slideshare.net/patricksteemers/mobile-messaging-trends-capgemini-consulting-13116899 Ricavi “core” dei Telco La trasformazione dei ricavi core dei telco impatta pesantemente lo sviluppo delle reti: Il bilanciamento di ricavi ed investimenti per potenziare le infrastrutture è chiave per determinare lo sviluppo Source: European regulators, Mobile operators, Barclays Capital, STL Partners assumptions and analysis http://www.telco2research.com/articles/PR_European-mobile-future-brutal_Full http://www.telco2research.com/articles/20131126 Interventi nelle reti mobili http://www.telco2research.com/articles/EB_disruptive-innovations-mobile-broadband_Summary Tendenza del traffico Video IPTV IP video Consegna gestita Enfasi sulla qualità TV lineare e VOD Servizi a pagamento Consegna best-effort Qualità non garantita Principalmente on-demand A pagamento o free La consegna di contenuti TV tradizionali in rete a larga banda aiuta a contenere il churn e ad aumentare l’ARPU http://blog.idate.fr/wp-content/uploads/2012/08/Three-patterns-for-video-distribution-in-the-long-term.jpg Il fenomeno Netflix Il fenomeno Netflix Netflix è nata come azienda che distribuiva contenuti video su supporto DVD con consegna postale ed ha progressivamente abbandonato questo business per concentrarsi sullo streaming on-line in Internet di contenuti video e TV premium (tariffazione flat all-you-can-view) La grande crescita del traffico impone grande sforzo nell’usare forme di codifica e di distribuzione in rete del traffico: uso spinto delle CDN commerciali ed introduzione di una propria CDN http://ptt.br/pttforum/6/doc/Netflix-Open-Connect-Network-BR-December-2012-v1.pdf http://www.digitalsociety.org/2010/12/division-of-labor-between-broadband-and-cdn/ Il fenomeno Netflix Altre tendenze emergenti Internet of things Cloud computing services Smart mobile devices Pervasive video Social technology 1 miliardo di smartphone nel Q3Y12 122 milioni di tablet venduti nel 2012 1 Miliardo di utenti attivi 4 miliardi di video visionati ogni giorno nel 2012 ogni minuto vengono caricate 60 ore di video 200 milioni di utenti attivi al mese 175 milioni di membri Ecosistemi OTT dominanti IPv4 Internet Protocol (version 4) Reti TCP/IP La suite di protocolli di Internet definisce un’architettura di internetworking Mediante quest’insieme di protocolli è possibile collegare reti diverse e calcolatori diversi per il trasferimento di informazioni e per la creazione di servizi avanzati di comunicazione Il protocollo base è l’Internet Protocol (IP) IP: le funzionalità locali richieste IP aggiunge delle funzionalità di comunicazione che si basano su funzionalità disponibili a livello di rete locale Si assume un insieme minimo di funzionalità di trasferimento locale: indirizzamento locale (indirizzo fisico) trasferimento di pacchetti a destinazione in ambito locale (anche non garantito) capacità di indirizzamento broadcast IP: le funzionalità base Assegna un indirizzamento universale Trasferisce pacchetti in modo “datagram” Non garantisce né l’integrità né la consegna né la sequenza dei pacchetti Consegna “best effort” dei pacchetti Frammenta i pacchetti se il livello locale lo richiede (sia alla sorgente che nei router intermedi) Ricostruisce i frammenti solo in ricezione L’architettura IP Il protocollo IP ha le funzionalità di un protocollo di livello 3 (rete) e si appoggia sopra i livelli delle reti che serve Tipico l’esempio delle reti locali (LAN): G 3 2 1 IP IP LLC LLC LLC IP LLC MAC MAC MAC MAC PHY PHY PHY PHY LAN A LAN B Lo stack TCP/IP base L4 L3 TCP UDP ICMP IP routing ARP Livelli inferiori Indirizzi e nomi Gli indirizzi IP sono assegnati su base globale Internet fa uso anche di nomi simbolici che sono anch’essi assegnati su base globale (sistema DNS) IANA (Internet Assigned Numbers Authority) 1998 (Jon Postel) ICANN (Internet Corporation for Assigned Names and Numbers) Gli indirizzi IP Sono costituiti da 32 bit solitamente raggruppati in gruppi di 8 bit (byte) 1 0 0 0 0 0 1 1 1 0 1 0 1 1 1 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 I byte sono usualmente riportati in notazione decimale divisi da punti (dotted decimal notation) e possono assumere valori compresi tra 0 e 255 131.175.21.1 1 Gli indirizzi IP L’indirizzo è diviso in due parti NetID HostID La NetID (indirizzo di rete) identifica la rete La HostID (indirizzo di host) identifica l’host nella rete Tutti gli host all’interno della stessa rete hanno lo stesso indirizzo di rete (NetID) Rete Host Le classi Indirizzamento “Classful” Primo ottetto Classe A (0-127) 8 16 0 NetID 24 32 HostID Classe B (128-191) 10 Classe C (192-223) 110 Classe D (224-239) 1110 Multicast Classe E (240-255) 1111 Experimental/Future use NetID HostID NetID HostID Indirizzi speciali Indirizzo di rete L'indirizzo con il campo HostID posto a 0 serve ad indicare la rete il cui indirizzo è contenuto nel campo NetID (usato solo nelle tabelle di instradamento) Esempio: • rete in classe B: 131.175.0.0 • rete in classe C: 193.17.31.0 193.17.31.76 193.17.31.55 193.17.31.0 193.17.31.45 Indirizzi speciali Indirizzo broadcast diretto: Un indirizzo con il campo HostID di soli 1 assume il significato di indirizzo broadcast della rete indicata nel campo NetID. Esempio: 193.17.31.255 193.17.31.76 193.17.31.55 193.17.31.0 193.17.31.45 Indirizzi speciali Indirizzo broadcasting limitato: Un indirizzo di tutti 1 (255.255.255.255) assume il significato di indirizzo broadcast nella stessa rete di chi invia il pacchetto. Il pacchetto non può oltrepassare dei router 193.17.31.76 193.17.31.55 193.17.31.0 193.17.31.45 Indirizzi speciali Quando il campo NetID è posto a zero, l'indirizzo indica l'host il cui indirizzo è contenuto nel campo host sulla stessa rete del mittente. Esempio: 0.0.21.173 (in una rete in classe B) Se anche il campo host è posto a zero l'indirizzo indica il mittente stesso del pacchetto (usato quando l’host non conosce il proprio indirizzo). Esempio: 0.0.0.0 Infine, l'indirizzo con il primo ottetto pari a 127 e gli altri campi qualsivoglia indica il loopback sullo stesso host (usato nei sistemi operativi per testare le funzionalità di rete). Esempio: 127.0.0.0 Indirizzi Speciali: riassunto Questo host Tutti 0 Host su questa rete Tutti 0 Broadcast Limitato Tutti 1 Broadcast Diretto Loopback HostID NetID 127 Tutti 1 Qualunque cosa Primi due indirizzi possono essere usati solo durante lo startup di sistema, e non rappresentano mai un indirizzo di destinazione valido Il 3° e 4° indirizzo non rappresentano mai un indirizzo sorgente valido Il 5° indirizzo non dovrebbe mai comparire in rete Indirizzamento IP L’indirizzo IP indica l’interfaccia (ovvero il collegamento) di un dispositivo con la rete Se un dispositivo ha più interfacce su più reti deve avere un indirizzo per ciascuna interfaccia Rete 131.175.0.0 131.175.1.254 Rete 131.30.0.0 131.30.18.254 131.30.78.4 131.175.23.24 Subnetting RFC 950, del 1985, introduce con il concetto di “subnet” un terzo livello nella organizzazione gerarchica degli indirizzi IP (rete, sottorete, host) Il subnetting aggiunge un grado di flessibilità e elimina la rigidità e i limiti del classful addressing Tutti gli host collegati alla stessa rete fisica (ossia non vi sono router o dispositivi di interconnessione più complessi che li separano), hanno lo stesso indirizzo di sottorete (subnet) Con una granularità più fine nell’assegnazione degli indirizzi riduco lo spreco nell’uso dello spazio d’indirizzamento Con il subnetting il dettaglio della ripartizione in sottoreti è noto solo alla periferia della rete per evitare la crescita delle tabelle di routing Questo è possibile solo se le sottoreti che partizionano una data Net sono localizzate nella stessa regione della rete Supernetting Molte organizzazioni hanno più di 256 host e molte meno ne hanno oltre 1600: anziché assegnare ad un organizzazione un indirizzo di classe B, si assegnano più indirizzi di classe C contigui Gli indirizzi di classe C contigui condividono i MSB dell’indirizzo: questo corrisponde all’identificazione di una “supernet” Si aumenta la quantità di informazione scambiata, memorizzata ed elaborata dai router Il supernetting si applica solo a indirizzi di classe C Esempio di supernet Subnet Mask La “Subnet mask” indica la porzione dell’indirizzo IP che interessa Net e subnet Alternativamente, si può usare un formalismo che identifica la lunghezza del “prefisso”:/N Network number Host number Class B address 111111111111111111111111 00000000 Subnet mask (255.255.255.0) Network number Subnet ID Subnetted address Host ID Variable Length Subnet Masks RFC 1009 del 1987 Lo stesso network ID ammette diverse subnet mask per le proprie subnet Applicazione ricorsiva della regola delle subnet mask senza confini pre-assegnati bbbbbbbb.bbbbbbbbb.xxxx0000.00000000 • sottorete #x bbbbbbbb.bbbbbbbbb.xxxxyyyy.0000000 • sottorete #x – y Vantaggi: possibilità di ritagliare la dimensione delle subnet in modo mirato, riducendo al minimo l’inefficienza nell’uso dello spazio di indirizzamento possibilità di “sommarizzare” gli indirizzi in modo da ridurre le dimensioni delle tabelle di instradamento L’instradamento si basa sulla regola del Longest Prefix Match: se più regole di instradamento sono applicabili, si utilizza quella con la maschera più lunga Il pacchetto/datagramma IP (RFC 791) 1 Header 32 bit Ver HLEN TOS Total length Fragment Identification Flags Frag. Offset TTL Protocol Header Checksum Source address Destination address IP Options (if any) Padding Dati (Payload) 20 BYTE Il pacchetto IP Ver (4 bit) Version: indica la versione del protocollo; quella che noi studiamo è la versione 4 HLEN (4 bit) Header length: indica la lunghezza dell’header del pacchetto (comprese opzioni e padding) espressa in parole da 32 bit (4 byte). Minimo valore valido: 5 TOS (8 bit) Type Of Service: un campo che adesso prende il nome di DS field (RFC 2474) e può essere utilizzato per la gestione delle priorità nelle code dei router Total length (16 bit) Indica la lunghezza totale del pacchetto in byte: valore massimo 216=65536; una volta sottratta la dimensione dell’header, si ha la lunghezza del payload TOS: raccomandazione IANA http://www.iana.org/assignments/ip-parameters TOS: raccomandazione IANA http://www.iana.org/assignments/ip-parameters Evoluzione delle classi di servizio RFC2474 “Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers “, 2008 Utilizza il campo TOS dell’header IPv4 (campo Traffic Class per IPv6) per attuare le strategie di QoS in reti IP, secondo il modello DiffServ L’ottetto viene rinominato DS (Differentiated Services) Il trattamento differenziato dei pacchetti IP secondo il Per Hop Behavior (PHB) è basato sul valore del DSCP assegnato ad una classe di traffico IP Explicit Congestion Notification è stato introdotto successivamente nella RFC3168 (“The Addition of Explicit Congestion Notification (ECN) to IP”, 2001) DiffServ Code Point (DSCP) IP ECN Valori del campo DSCP EF: Expedited Forwarding (RFC3246) (DSCP 46) CSx: Class Selector (RFC2474) Ove x corrisponde all valore IP Precedence (1–7) (DSCP 8, 16, 24, 32, 40, 48, 56) AFxy: Assured Forwarding (RFC2597) In cui x corrisponde al valore IP Precedence (si usano solo valori tra 1-4 per AF) e y corrisponde al valore di Drop Preference (1, 2 o 3) valori più elevati indicano maggior esposizione alla perdita (DSCP 10/12/14, 18/20/22, 26/28/30, 34/36/38) BE: Best Effort o Default Marking Value (RFC2474) (DSCP 0) Mappatura secondo RFC4594 Configuration Guidelines for DiffServ Service Classes, http://tools.ietf.org/html/rfc4594 Mappatura a più livelli 802.1Q/p VLAN Frame Format IP Precedence (IPP) Format IPv4 ToS Bits DSCP Format Mappatura QoS in reti aziendali La frammentazione Identification, Flags, Fragment Offset Alcuni protocolli di livello inferiore a cui IP si appoggia richiedono una dimensione massima del pacchetto (MTU) inferiore a 65536 byte (tipico l’esempio di Ethernet che accetta pacchetti fino a 1500 byte) Prima di passare il pacchetto al livello inferiore, IP divide il pacchetto in frammenti, ciascuno con il proprio header I frammenti verranno ricomposti dall’entità IP del destinatario mentre la frammentazione può essere fatta da sorgente o da router intermedi (anche più volte) I campi Identification, Flags e Frag. Offset sono usati per questo scopo La frammentazione G IP IP LL (A) LL (A) Rete A IP frag. LL (B) LL (B) Rete B La frammentazione Identification (16 bit) Campo che identifica tutti i frammenti di uno stesso pacchetto in modo univoco. E’ scelto dall’IP Sender Frag. Offset (13 bit) I byte del pacchetto originale sono numerati da 0 al valore della lunghezza totale. Il campo Frag. Offset identifica la posizione del frammento nel datagramma IP originale (in multipli di 8 byte). Il primo frammento ha Offset pari a 0. Ad esempio: se un pacchetto di 2000 byte viene diviso in due da 1000 il primo frammento avrà un offset pari a 0 e il secondo pari a 1000 (ovvero: nel campo Frag. Offset del secondo troveremo scritto 1000/8=125) La frammentazione Flags (3 bit) 0 D M Il primo bit è riservato e deve contenere 0 il bit M (More) è pari a 0 solo nell’ultimo frammento (last fragment), ad 1 negli altri (more fragments) il bit D viene posto a 1 quando non si vuole che lungo il percorso venga applicata la frammentazione • in questo caso se la frammentazione fosse necessaria non viene applicata ma viene generato un messaggio di errore TTL (Time To Live) (8 bit) Il campo TTL viene settato ad un valore elevato da chi genera il pacchetto e viene decrementato da ogni router attraversato Se un router decrementa il valore e questo va a zero, il pacchetto viene scartato e viene generato un messaggio di errore verso la sorgente IP TIME TO LIVE PARAMETER The current recommended default time to live (TTL) for the Internet Protocol (IP) is 64 [RFC791, RFC1122] http://www.iana.org/assignments/ip-parameters TTL=250 TTL=2 TTL=1 TTL=0 messaggio d’errore: time exceeded Checksum (16 bit) Serve per individuare eventuali errori nell’header (e solo nell’header) Viene calcolato dal mittente e controllato dal destinatario (ad ogni hop) + + … … + campo checksum (si assumono tutti 0) = somma complemento a 1 L’header viene diviso in blocchi di 16 bit Viene fatta la somma modulo 2 dei bit corrispondenti in ciascun blocco Il risultato viene complementato e quindi inserito nel campo checksum Checksum In ricezione si calcola la somma e si verifica il complemento: se sono tutti 0 il + + … + checksum … = somma complemento a 1 pacchetto viene accettato altrimenti viene scartato! Checksum Nota: poiché esistono campi dell’header IP che cambiano a mano a mano che il pacchetto viene inoltrato (es. Time To Live, TTL), ogni entità IP lungo il percorso ricalcola il checksum L’entità IP del nodo successivo può così verificare l’integrità dell’header ed accettare o meno il pacchetto IP Protocol (8 bit) E’ un codice che indica il protocollo di livello superiore (RFC 790) Esempio: ICMP=1, TCP=6, UDP=17, IPv4=4, … più protocolli di livello superiore possono usare IP (multiplazione) il codice identifica il SAP (Service Access Point) tra IP e il protocollo di livello superiore TCP UDP IP Livelli inferiori Le opzioni La parte iniziale dell’header IP è di 20 byte ed è sempre presente In aggiunta è possibile la presenza di campi aggiuntivi (le opzioni) che possono allungare l’header fino ad un massimo di 60 byte 1 32 bit Ver HLEN TOS Total length Fragment Identification Flags Frag. Offset TTL Protocol Header Checksum Source address Destination address Options: security, source routing, record route, timestamp Dati 20 BYTE Le opzioni type 8 bit copy 1 bit length 8 bit class 2 bit Copy: 0 nel primo o unico frammento 1 negli altri (copied) Class 0 0 0 0 0 0 0 2 Number 0 1 2 3 7 8 9 4 Length 0 0 11 Var Var 4 Var Var data dimensione variabile option number 5 bit Class: 00 controllo del datagram 10 debugging e measurement Descrizione Fine di una lista di opzioni No Operation usata per allineare gli ottetti Sicurezza Usata per instradare su uno specifico path(loose) Traccia la via percorsa Stream Identifier (obsoleta) Usata per instradare su uno specifico path(strict) Raccoglie i Time-stamp lungo la strada 01 e 11 sono riservate per usi futuri Le opzioni Type sinonimo di Value (e di Option Number) http://www.iana.org/assignments/ip-parameters Record Route Il pointer indica l’ottetto con cui comincia la prossima area in cui registrare un indirizzo. Il puntatore è relativo a questa opzione. Tutti i campi address sono inizialmente vuoti e il pointer vale 4 (ovvero punta al primo campo address, che comincia appunto al 4° ottetto dall’inizio dell’opzione) ogni volta che viene attraversato un router viene registrato l’indirizzo nel campo puntato e il puntatore viene aumentato di 4, fino all’eventuale riempimento di tutti i campi address (per conoscere il percorso verso una destinazione esiste la possibilità di usare pacchetti ICMP come vedremo in seguito) 00000111 code Opt. length 8 bit 8 bit 1st address 2nd address pointer 8 bit 32 bit 32 bit … 9th address 32 bit Massimo 40 byte Strict Source Routing Implementa un meccanismo di source routing (percorso scelto dalla sorgente) Tutti i campi address sono inizialmente pieni e indicano i router che l’IP sender vuole vengano attraversati il puntatore viene incrementato di 4 ad ogni hop se viene raggiunto un router non previsto il pacchetto viene scartato e viene generato un messaggio di errore (usata molto raramente!!!) code length pointer 10001001 8 bit 8 bit 8 bit 1st address 32 bit 2nd address 32 bit … 9th address 32 bit Massimo 40 byte Loose Source Routing Come la precedente, ma è possibile visitare anche altri router (il pacchetto non viene scartato) (usata molto raramente!!!) 10000011 code 8 bit length 8 bit pointer 8 bit 1st address 32 bit 2nd address 32 bit … 9th address 32 bit Massimo 40 byte Timestamp Misura il tempo assoluto di uscita del pacchetto in un router Il campo Over-Flow indica il numero di router sul percorso che non hanno potuto aggiungere il timestamp (per mancanza di spazio nell’opzione, che al massimo può raggiungere i 40 byte) Il campo Flag indica la modalità operativa stabilita dal mittente (address riempiti dal mittente o dai router, ecc.) 01000100 code 8 bit length pointer 8 bit 8 bit 1st address 32 bit 1st time stamp 32 bit 2nd address 32 bit 2nd time stamp 32 bit … O-Flow 4 bit Flag 4 bit Internet Control Message Protocol ICMP: protocollo di supporto utilizzato per veicolare informazione di controllo e segnalazioni di errore - RFC 792 Incapsulato in datagrammi IP (ha una sua intestazione veicolata nel campo dati del datagramma IP) Nei router e negli host, viene inviato alla sorgente del datagramma a fronte di eventi particolari, tra cui situazioni di errore o di sovraccarico Offre uno strumento di base per la diagnostica e l’amministrazione delle reti IP Formato del datagramma ICMP 0 78 Type ICMP Header IP Header 31 Checksum Code Rilevamento errore su tutto il datagramma ICMP Frame Header 15 16 ICMP Data Datagram Data Area Frame Data Area Messaggi ICMP: campo TYPE TYPE (8 bit): identifica il tipo di messaggio Type Field 0 3 4 5 8 9 10 11 12 13 14 15 16 17 18 ICMP Message Type Echo Reply Destination Unreachable Source Quench Redirect (change a route) Echo Request Router Advertisement Router Solicitation Time Exceeded for a Datagram Parameter Problem on a Datagram Timestamp Request Timestamp Reply Information Request (obsolete) Information Reply (obsolete) Address Mask Request Address Mask Reply Messaggi ICMP: campo CODE CODE (8 bits): specifica ulteriormente il tipo di messaggio Esempio: nel caso di datagrammi ICMP con TYPE=3 (risposte di tipo “destination unreachable”) CODE 0 1 2 3 4 5 6 7 8 9 10 11 12 rete irraggiungibile host irraggiungibile protocollo irraggiungibile porta irraggiungibile frammentazione necessaria source route fallito rete dest. Sconosciuta host dest. Sconosciuto host sorgente isolato comunicazione con rete proibita comunicazione con host proibita rete irraggiungibile per TOS host irraggiungibile per TOS Uso dell’ICMP: comando “ping” Comando usato per verificare la raggiungibilità Usa i messaggi ICMP echo request/reply La sorgente invia un messaggio di ICMP echo request verso un certo indirizzo Il pacchetto di echo request contiene numero di sequenza e timestamp L’host indirizzato risponde con una ICMP echo reply contenente i dati del messaggio di richiesta La sorgente calcola il round trip time (RTT) Se non torna la risposta il programma ping restituisce una diagnosi della irraggiungibilità Uso del ping A R1 R2 B R3 Echo request Time Echo reply Uso dell’ICMP: comando “traceroute” Traceroute restituisce il percorso verso un host Si basa su un uso intelligente del campo TTL Un router che riceve un datagramma IP decrementa il campo TTL di 1 Se TTL=0, il router invia un datagramma ICMP time exceeded alla sorgente del datagramma IP Si trasmettono datagrammi IP successivi, in cui si aumenta progressivamente il valore TTL Ogni volta che viene ricevuto un datagramma ICMP con time exceeded, si registra l’indirizzo del router che lo ha generato Si itera fino a raggiungere l’host destinatario o a ricevere messaggi di errore Traceroute Te = Time exceeded Pu = Port unreachable A R1 R2 B R3 TTL=1, Dest = B, port = invalid Te (R1) Time TTL=2, Dest = B Te (R2) TTL=3, Dest = B Te (R3) TTL=4, Dest = B Pu (B) Corrispondenza tra indirizzi IP e indirizzi fisici Illustrando le tecniche di inoltro abbiamo ipotizzato la presenza di una tabella di corrispondenza tra indirizzi IP e indirizzi di livello inferiore (indirizzi fisici) Queste tabelle vengono create dinamicamente da ciascun host mediante il protocollo ARP IP-B: 193.17.31.55 MAC-B: 05:98:76:6c:4a:7b IP addr. MAC addr. 193.17.31.45 ... 00:9f:7a:89:90:7a ... B IP-A:193.17.31.45 MAC-A: 00:9f:7a:89:90:7a A 193.17.31.0 ARP (Address Resolution Protocol) Il meccanismo si basa sulla capacità di indirizzamento broadcast della rete locale quando nella tabella memorizzata nell’host (denominata ARP-cache) non è presente l’indirizzo cercato, viene generato un messaggio di ARP-request La ARP-request viene inviata in broadcast e contiene l’indirizzo IP di cui si chiede il corrispondente indirizzo MAC L’host che riconosce l’indirizzo IP come proprio invia una ARP-reply direttamente a chi aveva inviato la richiesta, con l’indicazione dell’indirizzo MAC ARP (Address Resolution Protocol) IP addr. MAC addr. ... ... IP-B: 193.17.31.55 MAC-B: 05:98:76:6c:4a:7b B MAC broadcast: ff:ff:ff:ff:ff:ff IP-A:193.17.31.45 MAC-A: 00:9f:7a:89:90:7a ARP-request A LAN src-MAC=MAC-B, dst-MAC=broadcast IP-mitt=IP-B MAC-mitt=MAC-B ARP-request IP-targ=IP-A MAC-targ=00:00:00:00:00:00 ARP (Address Resolution Protocol) IP addr. MAC addr. ... ... IP-B: 193.17.31.55 MAC-B: 05:98:76:6c:4a:7b B MAC broadcast: ff:ff:ff:ff:ff:ff IP-A:193.17.31.45 MAC-A: 00:9f:7a:89:90:7a ARP-reply A LAN src-MAC=MAC-A, dst-MAC=MAC-B IP-mitt=IP-A MAC-mitt=00:9f:7a:89:90:7a ARP-reply IP-targ=IP-B MAC-targ=MAC-B Formato dei pacchetti ARP 1 16 Tipo hardware Tipo protocollo Lunghezza Lunghezza indir. locale Ind. IP ARP_request / ARP_reply; Indirizzo IP del mittente (32 bit) Indirizzo locale del mittente (48 bit) Indirizzo IP richiesto (32 bit) Indirizzo locale richiesto (48 bit) ARP può essere usato per altri protocolli di livello 2 e livello 3 quindi occorre indicare il tipo di protocollo (IP nel nostro caso) e il tipo di hardware (Ethernet per esempio) Ovviamente: il formato di un pacchetto ARP (ovvero la lunghezza dei suoi campi) varia in funzione del tipo di hardware e di protocollo utilizzati! Domini di broadcast e reti IP Per il funzionamento del meccanismo di inoltro e dell’ARP abbiamo fin qui ipotizzato che una sottorete IP corrisponda uno a uno con una rete locale (Dominio di Broadcast) In realtà un’unica rete locale può corrispondere a diverse sottoreti IP (per es. perché la numerazione disponibile per una non è sufficiente) Non è possibile che più reti locali coesistano in un’unica sottorete IP perché non potrebbero comunicare (mancano apparati di routing che le interconnettono realizzando la convergenza allo strato IP) Domini di broadcast e reti IP: proxy ARP Un’alternativa è quella dell’installazione di un proxy ARP nel router La tecnica del proxy ARP consente a due reti fisicamente distinte di condividere lo stesso indirizzo di rete Il router conosce la collocazione fisica dei vari host nelle due reti Il router risponde alle richieste ARP su ciascuna delle due reti, “fingendosi” il destinatario. Dopodiché instrada i pacchetti al vero host destinatario A B Rete principale Router che funge da Proxy ARP Rete “nascosta” C D RARP (Reverse ARP) Il protocollo ARP consente di associare ad un indirizzo IP noto un indirizzo “fisico” non noto usando la capacità di broadcast della rete sottostante Il protocollo RARP (Reverse ARP) è in grado di effettuare l’operazione inversa: Un host che conosce il proprio indirizzo “fisico” chiede di sapere il proprio indirizzo IP Utile per macchine diskless che effettuano il bootstrap in rete Ma non è più usato !!! BOOT server RARP request RARP reply Indirizzi dinamici L’uso di procedure di questo tipo ha suggerito la possibilità di usare procedure per associare in modo flessibile gli indirizzi IP agli indirizzi fisici Può essere comodo non configurare i singoli host con l’indirizzo IP, ma usare un server per memorizzare tutte le configurazioni In molti casi non è necessario avere un’associazione stabile tra i due indirizzi ma si può usare un’associazione dinamica (più host degli indirizzi disponibili): Host spesso inattivi (es. collegamenti remoti con rete d’accesso telefonica) Host che usano IP solo per rari scambi di informazioni Indirizzi dinamici Supponiamo di avere un server in grado di fornire l’indirizzo IP ad un host su richiesta Sono possibili diversi casi: Associazione statica: il server ha una tabella di corrispondenza tra indirizzi fisici e indirizzi IP e all’arrivo di una richiesta consulta la tabella e invia la risposta Associazione automatica: la procedura di corrispondenza nella tabella è automatizzata dal server Associazione dinamica: l’insieme di indirizzi IP è più piccolo del numero di host che possono usarlo Associazione dinamica Il caso dell’allocazione dinamica è utile in situazioni nelle quali gli host non necessitano di avere sempre un indirizzo IP L’associazione deve essere temporanea (uso di timeout o procedure di rilascio esplicito) E’ possibile che all’arrivo di una richiesta non vi siano indirizzi disponibili (rifiuto della richiesta) Il dimensionamento del numero di indirizzi IP segue gli stessi principi del dimensionamento di un fascio di circuiti in telefonia Dynamic Host Configuration Protocol (DHCP) Per la configurazione di indirizzi IP non si usa il RARP, ma un protocollo più evoluto derivato dal BOOTP E’ un protocollo di tipo client-server DHCP server DHCP client LAN DHCP Un client che deve configurare il proprio stack IP invia in broadcast un messaggio di DHCPDISCOVER contenente il proprio indirizzo fisico Il server risponde con un messaggio di DHCPOFFER contenente un proprio identificativo e un indirizzo IP proposto DHCP server DHCP client LAN DHCP Il client può accettare l’offerta inviando una DHCPREQUEST contenente l’identificativo del server (anche questo messaggio viene inviato in broadcast) Il server crea l’associazione con l’indirizzo IP e manda un messaggio di DHCPACK contenente tutte le informazioni di configurazione necessarie DHCP server DHCP client LAN DHCP Parametri di configurazione IP address Netmask Default Gateway DNS server Il rilascio dell’indirizzo avviene con l’invio di un messaggio di DHCPRELEASE da parte del client DHCP server DHCP client LAN DHCP E’ possibile avere più server DHCP server DHCP client DHCP server LAN E’ possibile usare dei DHCP Relay DHCP Relay DHCP client LAN DHCP server Rete IP DHCP server Trasporto dei messaggi DHCP si appoggia su UDP per il trasporto dei messaggi I messaggi dei client fino all’assegnamento dell’indirizzo IP hanno: ind. IP di sorgente: 0.0.0.0 ind. IP di destinazione: 255.255.255.255 porta UDP sorgente: 68 porta UDP destinazione: 67 DHCP UDP IP 2 1 Messaggi CAMPO OP HTYPE HLEN HOPS XID (Transaction ID) SECS FLAGS CIADDR BYTE DESCRIZIONE 1 Tipo di messaggio (1 = BOOTREQUEST, 2 = BOOTREPLY) htype 1 Tipo di indirizzo fisico (1 = Eth 10Mb) hlen 1 Lunghezza ind. fisico ('6' per Eth 10Mb) hops 1 Settato dal client a 0 e incrementato dai relay agents xid 4 Numero casuale settato dal client e usato per evitare ambiguità secs 2 Settato dal client, numero di sec dall'inizio della procedura flags 2 Flags (si usa solo il primo bit per chiedere una risposta multicast o unicast). ciaddr 4 Indirizzo IP del client (settato dal client, zero se non noto) yiaddr 4 Indirizzo IP del client (settato dal server) siaddr 4 Indirizzo IP del server giaddr 4 Indirizzo del relay agent chaddr 16 Indirizzo fisico del client sname 64 Stringa Nome del server (opzionale) file 128 Stringa nome del file di boot (opzionale) 312 Lista di opzioni per il trasferimento di altre informazioni op YIADDR SIADDR GIADDR CHADDR SNAME FILE OPTIONS options INTRANET Indirizzamento Privato, NAT, Tunnelling Intranet EG sottorete IG rete IG IG Le reti private si sono evolute grazie alla tecnologia IP e sono passate da grandi reti collegate a livello 2 (bridge) a reti collegate con router IP Una INTRANET non è altro che una rete privata che utilizza tecnologia di interconnessione IP Di solito oggi con INTRANET si intende una rete IP collegata con la rete pubblica INTERNET mediante un ISP e dotata di servizi per gli utenti di Internet come server www, server di posta, ecc. Intranet L’evoluzione di servizi e protocolli ha però reso le Intranet strutturalmente differenti dalle reti pubbliche Problemi di sicurezza Problemi di gestione degli indirizzi Problemi di distinzione tra servizi offerti ai soli utenti della Intranet e servizi offerti anche agli utenti di Intenet Indirizzi L’aumento vertiginoso del numero di host collegati ad Internet ha reso il problema della disponibilità di indirizzi IPv4 pressante E’ questo problema che ha spinto alla standardizzazione di IPv6 Nel frattempo però si è trovata un’altra soluzione basata su indirizzi privati Se una rete IP non è collegata con INTERNET non deve sottostare alle regole di univocità degli indirizzi … Indirizzamento privato La comunità Internet ha individuato gruppi di indirizzi IP che non vengono usati nella rete pubblica possono essere usati più volte purché all’interno di Intranet Private non è ammesso che pacchetti con indirizzi privati (sorgente o destinazione) viaggino nella rete Internet pubblica IETF indica porzioni dello spazio di indirizzamento per indirizzi privati (RFC1918): • classe A: rete 10.xx.xx.xx (16 milioni di indirizzi) • classe B: da 172.16.0.0 a 172.31.255.255 (16 reti contigue da 65536 indirizzi) • classe C: reti 192.168.xx.xx (256 indirizzi) Utilizzo di indirizzi privati IETF Una rete privata ha normalmente una serie di servizi che sono accessibili dalla rete Internet pubblica (host esposti) I server per questi servizi devono avere un indirizzo pubblico mentre gli host interni alla rete possono avere un indirizzo privato web e-mail ISP R ind. pubblici R ind. privati Utilizzo di indirizzi privati IETF E’ chiaro comunque che in questo modo si impedisce agli host della rete privata di aver accesso a tutti servizi di Internet Prima o poi sorge l’esigenza di consentire lo scambio di pacchetti tra host con indirizzo pubblico e host con indirizzo privato I metodi più comunemente usati per consentire il colloqui sono il NAT e i Proxy web e-mail ISP R ind. pubblici NAT R NAT: Network Address Translation ind. privati Network Address Translator (NAT) E’ un meccanismo reso disponibile su un router/gateway Consente di associare, anche temporaneamente, un ridotto numero di indirizzi pubblici, ai numeri della numerazione privata (NAT statico, NAT dinamico) I pacchetti diretti all’esterno vengono riconosciuti e inviati al NAT Source Destination 10.24.1.177 145.13.2.34 NAT Pool disponibile: sottorete 131.175.13 IP privata IP pubblica Possibilità di blocco Source Destination 131.175.13.55 145.13.2.34 Application Proxy I proxy sono application gateway qualunque richiesta viene inviata al proxy che la inoltra con il proprio IP address pubblico occorre avere un proxy per tutte le applicazioni http proxy ftp proxy Internet R ind. pubblici R ind. privati remote web server NAT – Tabella di NAT Perché il colloquio sia bidirezionale occorre mantenere l’associazione tra indirizzo privato e pubblico in una tabella di NAT Corrispondenza statica Corrispondenza dinamica Tabella di NAT NAT Pool disponibile: sottorete 131.175.13 Source Destination 10.24.1.177 145.13.2.34 IP privata IP pubblica 10.24.1.177 … … 131.175.13.55 … … Source Destination 131.175.13.55 145.13.2.34 NAT – assegnamento dinamico L’assegnamento dinamico si basa sul concetto di sessione Quando il NAT vede il primo pacchetto di una sessione crea l’associazione tra indirizzo privato e pubblico Al termine della sessione l’indirizzo viene rilasciato Cos’è una sessione? Dipende dal protocollo utilizzato Per TCP e UDP una sessione viene identificata dall’indirizzo di socket Per ICMP dalla terna IP sorgente, IP destinazione e Identifier Per direzione di una sessione si intende il verso di percorrenza del primo pacchetto NAT – assegnamento dinamico Definita la sessione occorre capire quando inizia e quando finisce Inizio sessione: TCP: pacchetto di SYN UDP, ICMP: sono connection-less, non vi è un metodo unico Fine sessione: TCP: pacchetti di FIN per entrambe i lati (però possono non arrivare mai …) Altri protocolli: non vi è un metodo univoco Occorrono sempre dei time-out per recuperare situazioni d’errore o perdita di pacchetti NAT – Application Level Gateway Alcune applicazioni trasportano nel Payload dei loro messaggi indirizzi IP (in formato ASCII o binario) e numeri di porta Gli Application Level Gateway (ALG) sono funzionalità aggiuntive che servono per un corretto funzionamento del NAT Sulla base del tipo di applicazione e del tipo di messaggio si preoccupano di modificare i messaggi applicativi in transito e, se del caso, adattare i segmenti TCP Traditional NAT Detto anche Outbound NAT Permette solo sessioni iniziate dall’interno (verso della sessione dall’interno verso l’esterno) Le informazioni di routing possono essere distribuite dall’esterno verso l’interno ma non viceversa 2 sotto-tipi Basic NAT NAPT (Network Address and Port Translator) Traditional NAT Basic NAT Viene traslato il solo indirizzo IP C’è una corrispondenza uno-a-uno nell’assegnamento degli indirizzi durante una sessione e due host non possono usare lo stesso indirizzo contemporaneamente Ci può essere blocco se si esauriscono gli indirizzi pubblici disponibili quando il traffico (numero di sessioni attive) è elevato NAPT Viene traslata la coppia (indirizzo,porta) Molti indirizzi interni possono usare lo stesso indirizzo esterno Ci sono problemi con flussi diversi da UDP e TCP (per ICMP si può usare il campo Identifier) Nel caso di frammenti tutto si complica ulteriormente Bi-directional NAT Si può iniziare una sessione in entrambe i versi Problema: Come fa un host pubblico ad iniziare un sessione con un host privato senza avere un indirizzo pubblico a cui raggiungerlo? Occorre usare dei nomi simbolici e il servizio DNS deve usare un unico spazio dei nomi DNS query: server.azienda.com? DNS DNS resp: 10.43.55.6 Intranet DNS resp: 131.175.21.8 DNS ALG Internet R Tabella di NAT server.azienda.com 10.43.55.6 10.43.55.6 … … 131.175.21.8 … … NAT – alcune considerazioni Il cambio di indirizzo non è un’operazione indolore Esso impone: Il ricalcolo del Header Checksum Sostituzione degli indirizzi dei messaggi ICMP e ricalcolo header checksum Il ricalcolo dei checksum di TCP o UDP con il nuovo pseudo-header Sorgono poi dei problemi con alcuni ALG per via del trasporto degli indirizzi e porte nei messaggi di livello applicativo (es. caso FTP) NAT – alcune considerazioni Il caso del FTP Si usa il comando di PORT (FTP Active mode) PORT n1,n2,n3,n4,n5,n6 dove: • n1.n2.n3.n4 è l’indirizzo IP del client • N5x256+n6 = numero di porta del client per la connessione dati Occorre tradurre il payload del comando PORT con un ALG, ma la cosa genera problemi: • Da 10.43.55.6 (privato) in 131.175.21.1(pubblico) • Ma FTP usa codice ASCII e nel mapping la codifica dell’indirizzo si allunga di due caratteri e quindi si sballano il conteggio dei byte per i SN e AN del TCP • ALG per FTP deve dunque costruirsi una tabella di mapping al volo anche per i numeri di sequenza e di ACK del TCP!!! FTP active e passive https://learningnetwork.cisco.com/thread/31455 Connessione WAN di intranet remote Una volta create le Intranet può sorgere il problema di collegarle tra loro (ad es. sedi diverse di una stessa azienda) Problemi: costo uso di indirizzi privati sicurezza Intranet Intranet Intranet Connessione WAN di intranet remote Uso di canali dedicati Problemi: l’uso può non giustificare il costo elevato Intranet Intranet Intranet Connessione WAN di intranet remote Uso di reti a pacchetto pubbliche (ad es. Frame Relay o VPLS) Problemi: l’uso può non giustificare il costo elevato Intranet Intranet Rete pubblica FR o VPLS Intranet Connessione WAN di intranet remote Uso di INTERNET (Virtual Private Network - VPN) Problemi: uso di indirizzi privati sicurezza prestazioni ISP Intranet ISP Intranet Virtual Private Networks Tunnel di collegamento ISP Intranet tunnel ISP Intranet IP tunneling Il tunnel si costruisce incapsulando trame IP in altre trame IP Il payload che viaggia nel segmento pubblico può essere crittato (utilizzando IPSEC) Gli indirizzi A e B possono essere privati Router/gateway IP Tunneling Destination Source Payload Tunnel destination/source Destination Source Destination IP Source Payload Tunnel payload IP tunneling ISP Intranet tunnel ISP Intranet IPv6 Internet Protocol version 6 IPv6 IP versione 6 è la nuova versione dell’Internet Protocol il cui processo di standardizzazione è iniziato negli anni ’90 Mantiene l’impostazione fondamentale di IPv4 ma cambia molti aspetti … e soprattutto aumenta la lunghezza degli indirizzi da 32 a 128 bit Funzioni chiave di IPv6 Funzioni chiave di IPv6 340,282,366,920,938,463,463,374,607,431,768,211,456 indirizzi IP teorici corrispondenti a 667 * 1021 (667 sestilioni) di indirizzi per m2 della Terra (superficie 0.51 * 1015) Spazio di indirizzamento capiente (128 bit) Febbraio 2011: Internet Assigned Numbers Authority (IANA) distribuisce gli ultimi blocchi di indirizzi liberi IPv4 ai Regional Internet Registries (RIR) Aprile 2011: APNIC inizia ad allocare l’ultimo blocco /8 Miglioramento prestazioni (assenza segmentazione, assenza opzioni, header ridotto e fisso, assenza NAT,…) Integrazione delle funzioni di identificazione di flusso (e QoS) Integrazione nativa della sicurezza (IPsec) e del mobile IP Autoconfigurazione dei dispositivi Indirizzi anycast http://www.potaroo.net/tools/ipv4/index.html IPv6: le novità principali IPv6 Indirizzi, gestione delle opzioni, gestione della frammentazione, identificazione flussi, classi di traffico, niente header checksum, ecc. ICMPv6: Nuova versione di ICMP con funzionalità aggiuntive ARP: Eliminato e sostituito da ICMPv6 DHCPv6 Modificato per il nuovo protocollo (alcune funzioni sono svolte da ICMPv6) Routing RIPng e OSPFv6 Header IPv6 Basic Header 32 bit 1 Vers. Traffic class Payload length Flow label Next Header Hop count Source address Destination address 40 byte Header IPv6 Campo Lung. (bit) Descrizione Version 4 Versione del Protocollo (6) Traffic Class 8 Campo utilizzabile per distinguere diversi tipi di traffico nelle reti Differentiated Services Flow Label 20 Campo utilizzabile per identificare un flusso di pacchetti (stessa lunghezza di MPLS) Payload Length 16 Lunghezza del pacchetto (eccetto basic header) Next Header 8 Identifica il tipo di header che segue il basic header (può essere di livello superiore come TCP o un extension header) Hop Limit 8 Stessa funzione del TTL di IPv4 Source Address 128 Indirizzo di sorgente Destination Address 128 Indirizzo di destinazione IPv4 vs IPv6 • • • • • 14 campi, almeno 20 byte Indirizzi su 32 bit Frammentazione possibile ad ogni hop Ricalcolo del header checksum ad ogni hop campo Options di lunghezza variabile • • • • • • 8 campi, lunghezza fissa pari a 40 byte Indirizzi su 128 bit Frammentazione solo alla sorgente Assenza di checksum Nuovo campo flow label di 20 bit Le opzioni negli Extension Headers Confronto tra intestazioni bit 0 8 Version IHL 16 24 Service Type Identifier Time to Live Total Length Flags Protocol Fragment Offset 31 bit 0 4 Version 12 Class 16 24 31 Flow Label Payload Length Next Header Hop Limit Header Checksum 32 bit Source Address 128 bit Source Address 32 bit Destination Address Options and Padding IPv4 Header 128 bit Destination Address 20 octets, 12 fields, including 3 flag bits + fixed max number of options Changed Removed IPv6 Header 40 octets, 8 fields + Unlimited Chained Extension (options) Header Next Header Next Header IPv6 Basic Header Next Header Next Header IPv6 Extension Header IPv6 Extension Header … Upper Layer Protocol IPv6 Extension Headers Hop-by-hop option: Deve essere interpretato dai router Ha varie opzioni per pacchetti lunghi e gestione di allineamenti a 32 bit Source Routing: Serve a obbligare i router a seguire un particolare percorso per il pacchetto Fragmentation: Implementa la frammentazione, ma questa può essere eseguita solo dal mittente che deve conoscere la massima MTU del path (la ottiene mediante i messaggi di MTU Path discovery di ICMPv6) Autenticazione Serve per l’autenticazione del mittente Encrypted security payload Serve per crittare il payload (altro pacchetto IP o livelli superiori) Indirizzi IPv6 Lunghi 128 bit – Notazione sintetica valori 8 x 16 bit separati da “:” – 1040: 0000: 0000: 0000: 0008: 0020: 400B: 516B – Sintesi: 1040: 0: 0: 0: 8: 20: 400B: 516B or 1040:: 8: 20: 400B: 516B IPv6 prevede un ricca varietà di indirizzi e assume che normalmente una interfaccia abbia più di un indirizzo associato Uso: globale o locale allo stesso link (o sito) IPv6 non prevede indirizzi broadcast Il primo campo dell’indirizzo IPv6 è il Format Prefix (FP) che descrive il tipo di indirizzo: – Unicast (uno) – Multicast (tutti gli appartenenti a un gruppo) – Anycast (almeno uno tra gli appartenenti a un gruppo) – IPv4 Compatible/ Mapped – Speciale – es. loopback Prefissi IPv6 Così come IPv4 anche IPv6 assume i prefissi per una individuazione del campo che identifica l’interfaccia La notazione è la stessa (ad. Es. /60) I tipi diversi di indirizzi sono individuati dalla prima parte del prefisso (format prefix - FP) Format Prefix Restante parte dell’indirizzo variabile 128 bit Tipi di indirizzi IPv6 Prefix (binary) 0000 0000 0000 0001 0000 001 0000 010 0000 011 0000 1 0001 001 010 011 100 101 110 1110 1111 0 1111 10 1111 110 1111 1110 0 1111 1110 10 1111 1110 11 1111 1111 Usage Reserved for IPv4 addresses Unassigned OSI NSAP addresses Novell Netware IPX addresses Unassigned Unassigned Unassigned Aggregatable Global Unicast add. Unassigned Unassigned Unassigned Unassigned Unassigned Unassigned Unassigned Unassigned Unassigned Unassigned Link local use addresses Site local use addresses Multicast Fraction 1/256 1/256 1/128 1/128 1/128 1/32 1/16 1/8 1/8 1/8 1/8 1/8 1/8 1/16 1/32 1/64 1/128 1/512 1/1024 1/1024 1/256 Indirizzi speciali Unspecified address (0:0:0:0:0:0:0:0) Usato come indirizzo di sorgente quando il nodo non conosce altri suoi indirizzi Non può essere usato come indirizzo di destinazione Loopback address (0:0:0:0:0:0:0:1) Indirizzo di loopback analogo al 127.x.y.z di IPv4 IPv4-compatible IPv6 address (::IPv4_addr) Utilizzato per far comunicare host IPv6 quando occorre attraversare una rete IPv4 (96 zero + 32 bit IPv4_addr) IPv4-mapper IPv6 address (::FFFF:IPv4_addr) Utilizzati per far comunicare host IPv6 con host IPv4 (80 zero + 16 uno + IPv4_addr) Aggregatable Global Unicast Address Formato unicast globale Struttura gerarchica per ridurre i problemi di scalabilità delle tabelle di routing 3 macrolivelli: Public Topology, Site Topology, Interface_ID 001 TLA Res NLA SLA FP 13 bit 3 bit 8 bit 24 bit 16 bit TLA (Top Level Aggregation) NLA (Next Level Aggregation) Interface ID 64 bit SLA (Site Level Aggregation) Aggregatable Global Unicast Address TLA (Top Level Aggregation) Livello gerarchico più elevato normalmente assegnato su base geografica o agli ISP di backbone Res (Reserved) – future espansioni NLA (Next Level Aggregation) Ogni ISP con un TLA può strutturare gerarchicamente le sue reti con diversi NLA SLA (Site Level Aggregation) Livello legato al singolo sito (sottorete) Interface ID 64 bit con formato derivato da IEEE EUI-64 Extended Unique Identifier (EUI-64) I livelli NLA e SLA possono essere ulteriormente divisi gerarchicamente Link-Local Unicast Address FP = 1111 1110 10 Sono indirizzi utilizzabili sono per l’indirizzamento su un singolo link (sottorete) IPv6 prevede che ogni interfaccia disponga di almeno un link-local unicast address normalmente assegnato per autoconfigurazione a partire dall’indirizzo fisico di interfaccia (IEEE EUI-64) Questi indirizzi sono fondamentali nel processo di Neighbour Discovery 1111 1110 10 FP – 10 bit 00…00 54 bit Interface ID 64 bit Site-Local Unicast Address FP = 1111 1110 11 Anche questi destinati ad uso locale Definiscono una spazio di indirizzamento privato 1111 1110 11 FP – 10 bit 00…00 Subnet 38 bit 16 bit Interface ID 64 bit Multicast Address FP = 1111 1111 Diversi sotto-tipi Multicast global Multicast link-local Multicast site-local All’interno esistono indirizzi per usi speciali 1111 1111 FP 8 bit 000T Flags 4 bit Scope 4 bit Group identifier 112 bit Multicast Address Flags: T=1 indirizzo temporaneo T=0 indirizzo permanente Scope: 0: reserved 1: node-local scope 2: link-local scope 5: site-local scope 8: organization-local scope E: global scope Altri: unassigned 1111 1111 FP 8 bit 000T Flags 4 bit Scope 4 bit Group identifier 112 bit Multicast indirizzi speciali FF01::1 = all systems node-local scope FF02::1 = all systems link-local scope FF01::2 = all-routers node-local scope FF02::2 = all-routers link-local scope FF05::2 = all-routers site-local scope Indirizzi utilizzati in modo simile al broadcast locale suddividendo tra tutti i sistemi e tutti i router Multicast indirizzi speciali Solicited-Node Multicast address Ogni sistema IPv6 deve avere un “solicited-node multicast address” per ogni indirizzo unicast o anycast configurato Tale indirizzo viene costruito automaticamente concatenando il prefix FF02::1:FF00:0/104 con gli ultimi 24 bit del corrispondente indirizzo unicast o anycast XXXX XXXX XXXX XXXX XXXX XXXX XXyy yyyy FF02 0000 0000 0000 0000 0001 FFyy yyyy Molti indirizzi per diversi scopi IPv6 prevede l’uso di processi di autoconfigurazione Normalmente un nodo deve: Autoconfigurarsi un link-local address a partire dall’indirizzo fisico di 64 bit Autoconfigurarsi un solicited-node multicast address per ogni indirizzo Può autoconfigurarsi altri indirizzi mediante diverse procedure (vedi ICMP e DHCP) ICMP version 6 ICMP ha un importanza molto maggiore con IPv6 Vengono svolte molte funzioni: Error reporting e diagnostica di rete Risoluzione degli indirizzi di livello link Individuazione del router corretto Controllo degli indirizzi IPv6 assegnati Autoconfigurazione degli indirizzi IPv6 Calcolo del PATH-MTU per la frammentazione ICMPv6: struttura dei messaggi Next header =58 ICMP_Type ICMP_Code Checksum Message Body Alcuni tipi comuni (ICMP_Type) Type=1 – destination unreachable Type=2 – Packet too big Type=3 – Time exceeded Type=4 – Parameter problem, Type=128 – Echo request Type=129 – Echo reply http://www.iana.org/assignments/icmpv6-parameters/icmpv6-parameters.xml ICMPv6 Neighbor Discovery Sono previste diverse procedure di ND Address Resolution • Funzione analoga a quella di ARP per IPv4 Router Discovery • Segnalare e scoprire presenza di router sul link Redirection • Simile all’opzione redirect di IPv4 Neighbor Unreachability Detection • Scopre irraggiungibilità di host noti ICMPv6 Neighbor Discovery Sono utilizzati molti indirizzi speciali (link-scope): All-systems Multicast Address (FF02::1) All-Routers Multicast Address (FF02::1) Solicited-node Multicast Address Unicast Link-Local Address Unspecified Address (0::0) E sono introdotti 5 nuovi tipi di messaggio: Router Solicitation message: type=133 Router Advertisement message: type=134 Neighbor Solicitation message: type=135 Neighbor Advertisement message: type=136 Redirect message: type=137 ICMPv6 Address Resolution Stessa funzione di ARP Servono indirizzi multicast/broadcast sul livello inferiore Si suppone l’esistenza di un mappaggio tra indirizzi multicast IPv6 e multicast/broadcast a livello link Si fa uso dei messaggi di “Neighbor Solicitation” e “Neighbor Advertisement” ICMPv6 Address Resolution Il messaggio di Neighbor Solicitation viene inviato all’indirizzo nodesolicited multicast address che può essere ricavato anche dal richiedente Il messaggio di Neighbor Advertisement viene inviato all’indirizzo IPv6 di sorgente del pacchetto di richiesta IPv6_addr FE80::0800:2001:C782 Neighbor Solicitation msg Chi è FE80::0:C033:6382? Neighbor Advertisement msg Io sono FE80::0:C033:6382 IPv6_addr FE80::0:C033:6382 ICMPv6 Address Resolution IP-A primi 104 bit ultimi 24 bit primi 104 bit ultimi 24 bit IP-B FF02::1FF00:0 ultimi 24 bit S-B FF02::1 = all systems link-local scope S-A FF02::1FF00:0 ultimi 24 bit Solicited-node multicast address Algoritmo di corrispondenza dipendente dal tipo di link. HX Multicast fisico HA A Multicast fisico Unicast fisico ICMP Neighbor Solicitation Target_addr=IP-B Sender_link_addr=HA Dest. HA HY Src_addr=IP-B Dst_addr=IP-A Src_addr=IP-A Dst_addr=S-B HB Unicast fisico B Dest. HY ICMP Neighbor Advertisement Target_addr=IP-B Sender_link_addr=HB Router Discovery Invio periodico da parte dei router All’indirizzo multicast All-systems link-localscope (FF02::1) ICMP Router Advertisement IPv6_addr (link local)= FE80::0:ABCD:9999 Prefix: 2000:111::0/64 Invio su richiesta ad indirizzo unicast richiedente ICMP Router Advertisement ICMP Router Solicitation Indirizzo multicast all-routers link-local scope (FF02::2) Autoconfigurazione Indirizzi Oltre agli indirizzi Link-local si possono autoconfigurare indirizzi globali Stateful configuration (tramite DHCPv6) Stateless configuration (tramite ICMP) • Noto il prefisso annunciato dai router • Si può ricavare l’indirizzi a partire dall’indirizzo fisico a 64 bit MTU Path Discovery Obiettivo: Il mittente deve sapere la MTU più piccola sul percorso Invia 1 pacchetto lungo quanto MTU primo link Se arriva messaggio ICMP errore “Packet too big” ridurre MTU Fino a che non arrivano più messaggi di errore Migrazione IPv4 – IPv6 Si basa sull’uso delle seguenti componenti Dual stack Sistemi con doppio stack IPv4 e IPv6 Tunneling Attraversamento di porzioni di rete IPv4 mediante tunneling Header translation Traduzione degli header dei due formati Dual-stack Tunneling IPv6 inside IPv4 where needed v6 e v4: migrazione /coesistenza Source: AT&T, “Embracing IPv6”, Z. Ghadialy. April 23, 2012 IETF ha definito meccanismi di transizione e coesistenza: Dual-stack è basato sulla simultanea coesistenza di stack IPv4 e IPv6 su nodi e terminali; Tunneling si basa sull’incapsulamento di pacchetti IPv6 in IPv4 (e viceversa quando sarà diffuso in rete IPv6 ); Translation consente a nodi con solo stack IPv6 di comunicare con nodi con stack IPv4 (e viceversa). IPv6 IPv6 IPv4 IPv6 IPv4 IPv6 Mitigazione esaurimento IPv4 NAT IPv6 - IPv4 IPv4 IPv6 IPv4 IPv6 Trasporto IPv6 IPv6 Dual Stack Abilitare l’accesso IPv6 su rete IPv4: 6to4 (RFC3056) Teredo (RFC4380) IPv6 rapid deployment – 6rd (RFC5569) Intra-Site Automatic Tunnel Addressing Protocol - ISATAP (RFC5214) NAT444 (RFC6264) NAT indipendente dal terminale Dual Stack Lite (DS-Lite), RFC6333 Address plus Port (A+P ), RFC6346 RFC6144 NAT-PT (deprecated) ICMP, Tracert ALG DNS ALG NAT64 (RF6146) DNS64 NAT66 ALG IPv6: Approfondimenti Altro materiale didattico: Materiale del corso di Infrastrutture e Protocolli per Internet del Prof. Giuseppe Rossi (http://www.elet.polimi.it/upload/grossi) Libri: C. Huitema, IPv6: The Next Generation Protocol, Prentice Hall, Englewood Cliffs, NJ, 1997. Articoli: W. Stallings, “IPv6: the new Internet protocol”, IEEE Communications Magazine , July 1996, pp. 96 –108. D.C. Lee et alt., “The next generation of the Internet: aspects of the Internet protocol version 6”, IEEE Network , vol. 12, no 1, Jan.-Feb. 1998, pp. 28 –33. Links: IP Next Generation (R. Hinden), http://playground.sun.com/pub/ipng/html/ipng-main.html