Università degli studi Roma Tre Tesi di laurea in Ingegneria Elettronica Esplorazione automatica di reti multiprotocollo Tesista: Lorenzo Colitti Relatore: Prof. Giuseppe Di Battista Esplorazione automatica di reti • Applicazioni: – – – – Isolamento di guasti Analisi delle prestazioni e pianificazione Simulazione Posizionamento efficace di servizi di rete • Perché esplorazione automatica? • Le reti attuali, anche in ambito locale, sono notevolmente complesse • La struttura di Internet rende impensabile l’esplorazione manuale o il ricorso a informazioni statiche – È costituita da centinaia di milioni di nodi – È gestita da decine di migliaia di soggetti diversi con competenze locali – È in continuo mutamento Esplorazione: stato dell’arte • Approcci diversi: • Basato sui registri – Hermes – Flap viewer • Basato sull’interrogazione degli apparati di rete – Polyphemus • Basato sul comportamento della rete – Utilizzo di traceroute – Skitter, Argus, Mercator, NetBird, NetHunter IPv6 e IPv4 • Perché IPv6? La scarsità degli indirizzi IPv4 limita le applicazioni attuali Protocollo più semplice, razionale ed estendibile Caratteristiche di sicurezza, multicast, supporto alla mobilità Supporto al “pervasive networking” del futuro L’interesse per IPv6 in questo momento è in crescita • IPv4 e IPv6 sono incompatibili. Per avere successo, IPv6 deve garantire l’interoperabilità con IPv4 al livello di rete della pila OSI (livello 3) Meccanismi di compatibilità Meccanismi di compatibilità a livello 3: • Nodi bi-protocollo (dual stack) • Traduttori di protocollo (NAT-PT) • Tunnel IPv6 in IPv4 Isola IPv6 Configurati Automatici 6to4 • Altri Link IPv4 Link IPv6 Tunnel IPv6 su IPv4 Router IPv4 Router IPv6 Router dual stack Lo sviluppo di IPv6: reti miste • Se IPv6 prende piede, avremo, almeno per i primi anni, una rete mista fatta di zone IPv6 e zone IPv4 • Questo complica la rete e rende ancor più necessaria l’esplorazione automatica • Abbiamo due topologie di livello 3 distinte – In linea di principio, si dovrebbero ispezionare singolarmente – In realtà ci interessano maggiormente i rapporti tra le due • L’ispezione della rete IPv6 è complicata dai tunnel – La topologia di livello 3 è diversa da quella dei collegamenti fisici – I tunnel appaiono come un solo hop – Il traceroute non è più sufficiente Obiettivi • Determinare i nodi e il tipo (IPv4 o IPv6) dei collegamenti in una zona di Internet • Rilevare l’incidenza dei tunnel nella rete IPv6 • Essere il meno invasivi possibile • Realizzare degli strumenti elementari che possano essere usati in strumenti più sofisticati Fasi di realizzazione • Realizzazione di una rete IPv6 di test • La rete collega Roma Tre, CASPUR e una sottorete privata • Piattaforme utilizzate: Cisco e Linux – Parte della rete di Roma Tre è emulata attraverso User Mode Linux • Presto sarà disponibile la rete IPv6 nativa del GARR (progetto 6net) • Studio di metodologie e tecniche di esplorazione di reti miste • Sviluppo di strumenti di supporto e tool di esplorazione • • • • Script di configurazione automatica per la rete virtuale Implementazione su Linux della MIB IPv6 tunneltrace findmtu La rete di test CASPUR woodstock IPv4 2001:760:4:ffff::/64 6net-gw 2001:760:2:ffff::/64 2001:760:4:f010::/64 2001:760:2::/64 DIA dia-v6 UML 2001:760:4::/64 2001:760:4:f000:/60 brunello dolcetto giga dns, www client UML Linux Win2k Linux Link IPv4 Link IPv6 Tunnel IPv6 su IPv4 Router IPv4 Router IPv6 Router dual stack User Mode Linux • Permette di far girare uno o più macchine virtuali (VM) Linux come processi su un sistema ospite Linux • Virtualizzazione • Le VM sono sistemi Linux a tutti gli effetti • Il nucleo di una VM è un processo sul sistema ospite • I processi delle macchine virtuali girano direttamente sul sistema ospite, sono intercettate solo le chiamate di sistema • Emulazione dell’hardware • Dischi virtuali: file sul sistema ospite • Terminale utente • Rete – Le macchine virtuali possono essere messe in rete tra loro – Le capacità di Linux permettono di costruire reti complesse – Le VM possono accedere alla rete esterna attraverso l’ospite La rete IPv6 UML • 6 macchine virtuali IPv6 con Linux Red Hat 7.2 • Rete 2001:760:4:f000::/60, ripartita in 6 sottoreti IPv6 • Instradamento dinamico con protocollo RIPng e demone di routing zebra • Collegamento alla rete IPv6 reale attraverso il sistema ospite • Configurazione delle macchine virtuali e dei file DNS effettuata automaticamente attraverso script Esempio: un traceroute parzialmente virtuale e parzialmente reale Esplorazione di reti miste • Obiettivo fondamentale: caratterizzazione dei tunnel IPv6 in IPv4 • I tunnel sono l’unico meccanismo di transizione utilizzato nelle aree interne (core) della rete • Problema di base: ricerca di tunnel in un percorso • Dato un percorso, per ogni coppia di nodi consecutivi vorremmo sapere: – Se il collegamento avviene per mezzo di un tunnel – Quali sono gli indirizzi IPv4 degli estremi del tunnel – Quali e quanti sono i nodi IPv4 intermedi Fonti di informazioni sui tunnel • Si possono ottenere informazioni da varie fonti: • Struttura degli indirizzi – Indirizzi IPv4-compatibili – Indirizzi 6to4 (es. ::193.204.161.2) (es. 2002:c1cc:a102:f:19::1) • Dimensione massima dei pacchetti (MTU) permessa dal percorso • Nomi associati agli indirizzi IP (DNS) • Comunicazione con gli apparati di rete (metodo invasivo) – SNMP (Simple Network Management Protocol) – IPv6 Node Information Query • Le fonti hanno diversi gradi di disponibilità e di affidabilità • Spesso occorre fondere informazioni provenienti da più fonti Tunneltrace • Strumento sviluppato: tunneltrace • Funzionamento simile al comando traceroute • Parte dai risultati del comando traceroute6, analizzandoli una riga alla volta • Evidenzia la presenza di tunnel tra due nodi • Cerca di stabilire gli indirizzi degli estremi del tunnel • Architettura modulare – È possibile aggiungere altre fonti di informazioni in maniera semplice – Attualmente utilizza MTU, DNS, e SNMP – In futuro potrà utilizzare anche ICMPv6 Node Information query ed eventuali altri Tunneltrace: fonti informative • MTU • Funzionamento: – Un tunnel IPv6-in-IPv4 aggiunge ad ogni pacchetto una intestazione IPv4, che riduce la dimensione massima di pacchetto trasportabile (MTU) di 20 byte – È sufficiente verificare che tra un nodo e il successivo la dimensione massima del pacchetto trasportabile scenda di 20 byte • Caratteristiche: – – – – Sempre disponibile Media affidabilità Non ci dice gli indirizzi IPv4 degli estremi Permette di scoprire solo il primo tunnel in un percorso Tunneltrace: fonti informative (2) • DNS • Funzionamento: – Si cerca nel DNS il nome corrispondente all’indirizzo IPv6 e, se esiste, l’indirizzo IPv4 corrispondente al nome. Se esiste l’indirizzo IPv4, è probabile che ci sia un tunnel • Caratteristiche: – La disponibilità dipende da come l’amministratore della rete che si attraversa ha definito i nomi – Bassa affidabilità – Le informazioni possono essere vecchie o non esatte – Non assicura la presenza di un tunnel: potrebbe essere invece un collegamento nativo IPv6 – Ci dice solo l’indirizzo IPv4 dell’estremo remoto del tunnel Tunneltrace: fonti informative (3) • SNMP • Funzionamento: – Interrogazioni SNMP direttamente ai nodi del percorso con opportuni accorgimenti per dedurre la presenza di tunnel e gli indirizzi IPv4 degli estremi • Caratteristiche: – Utilizzabile solo su reti a cui si ha accesso amministrativo – Ottima affidabilità – Può essere usato su trasporto IPv6 o IPv4 (ma in questo caso dipende dal metodo DNS per ottenere l’indirizzo IPv4 da interrogare) – Le informazioni che fornisce dipende da quali funzionalità sono supportate dal nodo che viene interrogato – Cisco non fornisce informazioni sui tunnel – Linux fornisce le informazioni su IPv6 grazie ad una estensione sviluppata nel corso della tesi Tunneltrace: risultati (1) • L’affidabilità dei risultati ottenuti dipende molto da quali fonti sono disponibili • SNMP permette di ottenere ottimi risultati • DNS tende a fornire falsi positivi sh-2.05$ ./tunneltrace –q 2 2001:760:4:f005::2 traceroute to 2001:760:4:f005::2 (2001:760:4:f005::2) from 2001:760:4:f010:250:daff:fedf:b56b, 30 hops max, 16 byte packets 1 2001:760:4:f010:: (2001:760:4:f010::) 0.345 ms 0.239 ms | | v6-in-v4 X.X.X.X->X.X.X.X (mtu) | 2 2001:760:4:ffff:: (2001:760:4:ffff::) 41.499 ms 39.268 ms 3 2001:760:4:0:204:76ff:fe22:5ba0 (2001:760:4:0:204:76ff:fe22:5ba0) 40.567 ms 52.182 ms 4 2001:760:4:f000::2 (2001:760:4:f000::2) 39.989 ms 38.18 ms | | v6-in-v4 10.0.0.1->10.0.0.2 (snmp) | 5 2001:760:4:f002::1 (2001:760:4:f002::1) 40.127 ms 39.014 ms 6 2001:760:4:f005::2 (2001:760:4:f005::2) 41.93 ms 38.626 ms Tunneltrace: risultati (2) colitti@giga:~/tesi/tunneltrace/v1.0$ ./tunneltrace -q 2 www.6bone.net traceroute to 6bone.net (3ffe:b00:c18:1::10) from 2002:c1cc:a102:0:204:76ff:fe22:5ba0, 30 hops max, 16 byte packets 1 2002:c1cc:a102:: (2002:c1cc:a102::) 2.241 ms 1.03 ms | | v6-in-v4 X.X.X.X->X.X.X.X guess (mtu) | 2 swi6T1-A1-0-2.switch.ch (2001:620:0:39::2) 60.913 ms 73.437 ms 3 2001:798:12:200::2 (2001:798:12:200::2) 73.86 ms 71.112 ms 4 * it.ch6.ch.6net.org (2001:798:0:3::1) 70.641 ms 5 de.at6.at.6net.org (2001:798:0:9::2) 72.297 ms * 6 nl.uk6.uk.6net.org (2001:798:0:6::2) 61.244 ms nl.de6.de.6net.org (2001:798:0:5::1) 71.012 ms 7 surfnet.nl6.nl.6net.org (2001:798:22:200::1) 59.663 ms 71.958 ms 8 2001:798:22:200::2 (2001:798:22:200::2) 72.186 ms * | | v6-in-v4 X.X.X.X->145.145.166.37 guess (dns) | 9 Gi5-1-2.BR2.Amsterdam1.surf.net (2001:610:16:6036::37) 60.024 ms * | | v6-in-v4 X.X.X.X->193.148.15.48 guess (dns) | 10 ams-ix.sara.xs4all.net (2001:7f8:1::a500:3265:1) 69.241 ms 59.881 ms | | v6-in-v4 X.X.X.X->194.109.5.13 guess (dns) | 11 0.ge-0-3-0.xr1.pbw.xs4all.net (3ffe:8280:0:201::) 71.764 ms 73.968 ms 12 xs4all-edt.ipv6.edisontel.it (2001:750:e::3) 70.973 ms 59.367 ms 13 rap.ipv6.viagenie.qc.ca (3ffe:b00:c18:1:290:27ff:fe17:fc0f) 400.171 ms 388.05 ms | | v6-in-v4 X.X.X.X->131.243.129.43 guess (dns) | 14 www.6bone.net (3ffe:b00:c18:1::10) 389.526 ms 392.516 ms FindMTU • L’MTU del percorso verso una destinazione ci dice se tra i due punti della rete c’è un tunnel • È possibile realizzare una sonda che data una lista di reti ci dica quali di esse sono raggiunte tramite un tunnel e quali tramite IPv6 nativo • I risultati forniscono una misura del grado di transizione tra IPv4 e IPv6 della porzione di Internet intorno al nodo che effettua i rilevamenti • Disponendo un insieme di sonde in punti strategici della rete IPv6 è possibile ottenere informazioni sul grado di transizione ad IPv6 di Internet nel suo complesso Conclusione. Punti salienti • Realizzazione della rete mista IPv4/IPv6, in parte reale e in parte virtuale • Sviluppo degli strumenti di configurazione automatica della rete virtuale • Realizzazione su Linux del software nativo necessario per fornire via SNMP informazioni relative a IPv6 • Sviluppo di metodologie di esplorazione di reti miste • Implementazione di un sistema di esplorazione e test dei risultati