dispensecorso laboratoriodiprotocolli - retitlc.polito.it · 6.7.1 analisi del comando traceroute...

44
POLITECNICO di TORINO Dipartimento di Elettronica Dispense corso Laboratorio di Protocolli Marco Mellia E-mail: {mellia}@tlc.polito.it 17 giugno 2011 1

Upload: hoangduong

Post on 04-Jun-2018

221 views

Category:

Documents


0 download

TRANSCRIPT

POLITECNICO di TORINO

Dipartimento di Elettronica

Dispense corso

Laboratorio di Protocolli

Marco Mellia

E-mail: {mellia}@tlc.polito.it

17 giugno 2011

1

Indice

1 Introduzione 4

1.1 Materiale richiesto . . . . . . . . . . . . . . . . . . . . . . . . 4

2 Argomenti del corso 5

2.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.1.1 Scopo . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.1.2 Materiale utile . . . . . . . . . . . . . . . . . . . . . . 5

3 Configurazione software e hardware degli host: analisi a

livello utente 6

3.1 Scopo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63.2 Documentazione disponibile . . . . . . . . . . . . . . . . . . . 63.3 Descrizione dell’esercitazione . . . . . . . . . . . . . . . . . . 6

3.3.1 Configurazione di una rete . . . . . . . . . . . . . . . 63.3.2 Verifica connettivita a livello rete . . . . . . . . . . . . 73.3.3 Verifica modalita di funzionamento consegna diretta . 83.3.4 Protocollo ARP . . . . . . . . . . . . . . . . . . . . . . 83.3.5 Configurazioni di indirizzamento atipiche e sbagliate . 9

4 Configurazione software e hardware degli host: analisi a

livello rete 11

4.1 Scopo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114.2 Documentazione disponibile . . . . . . . . . . . . . . . . . . . 114.3 Descrizione dell’esercitazione . . . . . . . . . . . . . . . . . . 11

4.3.1 Analisi di base. . . . . . . . . . . . . . . . . . . . . . . 124.3.2 Consegna diretta e risoluzione di indirizzi: il protocol-

lo ARP . . . . . . . . . . . . . . . . . . . . . . . . . . 134.4 Cattura e analisi di protocolli di livello trasporto/applicazione 15

4.4.1 Protocollo TCP . . . . . . . . . . . . . . . . . . . . . . 154.4.2 Analisi del comando nmap . . . . . . . . . . . . . . . . 19

5 Misure di prestazioni 21

5.1 Scopo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215.2 Configurazione della scheda di rete . . . . . . . . . . . . . . . 225.3 Analisi del comando nttcp . . . . . . . . . . . . . . . . . . . . 235.4 Impatto delle topologie e degli apparati di livello 2 sulle prestazioni. 23

5.4.1 Controllo di congestione . . . . . . . . . . . . . . . . . 265.5 Emulazione di reti geografiche . . . . . . . . . . . . . . . . . . 28

2

5.5.1 Emulare ritardi rete . . . . . . . . . . . . . . . . . . . 285.5.2 Perdita di pacchetti . . . . . . . . . . . . . . . . . . . 29

5.6 Verifica del funzionamento dell’emulazione . . . . . . . . . . . 295.7 Impatto dei ritardi sulle prestazioni del protocollo TCP . . . 295.8 Prestazioni di Streaming Video . . . . . . . . . . . . . . . . . 30

5.8.1 Configurazione Streaming su UDP . . . . . . . . . . . 315.8.2 Configurazione Streaming su TCP . . . . . . . . . . . 32

5.9 Confronto prestazioni UDP/TCP . . . . . . . . . . . . . . . . 335.10 Impatto della probabilita di perdita . . . . . . . . . . . . . . 335.11 Impatto della capacita del canale . . . . . . . . . . . . . . . . 33

6 Configurazione rete mediante routing statico 34

6.1 Scopo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346.2 Documentazione disponibile . . . . . . . . . . . . . . . . . . . 346.3 Configurazione instradamento statico intra-isola . . . . . . . . 34

6.3.1 ICMP-redirect . . . . . . . . . . . . . . . . . . . . . . 356.4 Configurazione instradamento statico inter-isola . . . . . . . . 36

6.4.1 Topologia a stella . . . . . . . . . . . . . . . . . . . . . 366.4.2 Scoperta della topologia . . . . . . . . . . . . . . . . . 376.4.3 Prestazioni con rete carica . . . . . . . . . . . . . . . . 376.4.4 Prestazioni per traffico uniforme . . . . . . . . . . . . 386.4.5 Prestazioni per traffico sbilanciato . . . . . . . . . . . 386.4.6 Riconfigurazione in caso di guasto. . . . . . . . . . . . 396.4.7 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . 39

6.5 Topologia ad anello con routing distanza minima . . . . . . . 396.5.1 Configurazione . . . . . . . . . . . . . . . . . . . . . . 39

6.6 Topologia ad anello con routing unidirezionale . . . . . . . . . 396.7 Analisi di protocolli a livello geografico . . . . . . . . . . . . . 40

6.7.1 Analisi del comando traceroute . . . . . . . . . . . . . 406.7.2 Analisi del comando ping “Record route” . . . . . . . 406.7.3 Analisi del protocollo DNS . . . . . . . . . . . . . . . 406.7.4 Analisi del protocollo HTTP . . . . . . . . . . . . . . 41

7 Protocolli di routing dinamico 42

7.1 Scopo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427.2 Configurazione di base . . . . . . . . . . . . . . . . . . . . . . 427.3 Il protocollo RIP . . . . . . . . . . . . . . . . . . . . . . . . . 437.4 Il protocollo OSPF . . . . . . . . . . . . . . . . . . . . . . . . 44

3

1 Introduzione

Questa e una raccolta di esercitazioni da svolgere durante il corso di Lab-oratorio di Protocolli. Sono descritte diverse esercitazioni da svolgere inlaboratorio, che verranno di volta in volta proposte dal docente. Il corsopresenta contenuti fortemente sperimentali, e permette agli studenti di ap-plicare le nozioni apprese nei corsi precedenti riguardanti il funzionamentodelle reti locali (LAN) e dei protocolli della rete Internet.

Per semplicita, il corso viene diviso in esperienze. Ciascuna esperienzapuo richiedere diverse ore, per cui non vi e nessuna corrispondenza tra ladivisione dei laboratori e le settimane di corso.

Per lo svolgimento del corso, gli studenti hanno a disposizione i PC delLAIB, switch e cavi di rete. I PC dovranno fare il boot da CD fornitodal docente, sul quale e stata installata una versione di Linux con tutti gliapplicativi necessari per poter effettuare le esercitazioni.

Esiste tutta una serie di documentazione on line, e online all’indirizzohttp://www.tlc-networks.polito.it/mellia/corsi/. Essa raccoglie una serie didocumenti che possono essere utili durante lo svolgimento del laboratorio.In parte, essa e stata prodotta appositamente; in parte invece e frutto dilavoro di altri, raccolto e messo a disposizione degli studenti.

Gli studenti del corso dovranno lavorare in gruppi da 3/4 studenti.

1.1 Materiale richiesto

Per lo svolgimento del corso, ogni gruppo ha a disposizione:

• tre Personal Computer in grado di fare il boot da CD e avente SistemaOperativo Linux.

• tre cavi UTP

• 1 switch a 4/5 porte

4

2 Argomenti del corso

2.1 Introduzione

2.1.1 Scopo

Verra introdotto il corso, nonche verranno richiamati i concetti di base chedevono essere a conoscenza degli studenti. In particolare, verranno richia-mate le problematiche di indirizzamento del protocollo IP, i concetti di classidi indirizzo e subnet masks. Verranno richiamati i meccanismi di consegnadiretta e indiretta dei pacchetti su reti locali. Infine, verra introdotto ilsistema operativo Linux, includendo una descrizione dei principali comandiutente (man, ls, more, mv, cp, rm, mkdir, rmdir, chmod, ps, kill, mtools,kwrite, ...). Verranno spiegati i meccanismi di configurazione di rete propridel sistema operativo, includendo quindi i comandi ifconfig, route, arp, etc.

2.1.2 Materiale utile

• Dispense corso di reti su IP

http://www.telematica.polito.it/mellia/corsi/LaboratorioTLM/doc/dispe internet.pdf

• Slides corso di reti su IP (ripasso)

http://www.telematica.polito.it/mellia/corsi/LaboratorioTLM/doc/ip icmp routing.pdf

• Tutorial in italiano sull’uso base di Linux

http://www.telematica.polito.it/mellia/corsi/LaboratorioTLM/doc/appunti linux.html

5

3 Configurazione software e hardware degli host:

analisi a livello utente

3.1 Scopo

Lo scopo di questa esperienza e capire i meccanismi di configurazione di hoste router IP, provando a creare delle reti locali. I PC a disposizione verrannoconnessi tramite switch, e verra controllato il corretto funzionamento dellereti create. Il tempo atteso richiesto e circa 10 ore.

3.2 Documentazione disponibile

• Manuali dei comandi ifconfig, ping, traceroute, netstat, arp,

route

http://www.telematica.polito.it/mellia/corsi/LaboratorioTLM/doc/ifconfig.html

http://www.telematica.polito.it/mellia/corsi/LaboratorioTLM/doc/ping.html

http://www.telematica.polito.it/mellia/corsi/LaboratorioTLM/doc/traceroute.html

http://www.telematica.polito.it/mellia/corsi/LaboratorioTLM/doc/netstat.html

http://www.telematica.polito.it/mellia/corsi/LaboratorioTLM/doc/arp.html

• Tutorial sulla crimpatura di un cavo di rete UTP RJ45

http://www.telematica.polito.it/mellia/corsi/LaboratorioTLM/doc/cat5cable.htm

3.3 Descrizione dell’esercitazione

Nota: In questa esercitazione non e consentito l’uso di analizzatore di pro-tocolli di rete.

3.3.1 Configurazione di una rete

Ogni gruppo dispone di cavi UTP, di PC e di uno switch. In ogni isola,si connettano i terminali a disposizione tramite lo switch. Attenzione: nelcaso sia presente una porta denominata di UPLINK, non utilizzarla.

1. Si disegni la topologia corrispondente sia a livello fisico che a livellocollegamento.

2. Si disabiliti l’interfaccia di rete tramite il comando

ifconfig eth0 down

6

Si crei una rete con al massimo 128 hosts, utilizzando indirizzi privatiIP di classe B. Per configurare l’indirizzo IP IP ADDRESS (nel for-mato decimale X.X.X.X) e la subnet mask NET MASK (nel formatodecimale X.X.X.X) si utilizzi il comando

ifconfig eth0 IP_ADDRESS netmask NET_MASK

ifconfig eth0 up

3. Verificare la configurazione delle interfacce con il comando

ifconfig -a

Quale delle informazioni a disposizione riuscite a capire? Quante in-terfacce sono presenti? Come sono configurate? Gli indirizzi dell’host,di rete e di bradcast sono corretti?

4. Verificare l’aggiornamento delle tabelle di routing tramite il comando

route

Che host risultano raggiungibili secondo le tabelle di routing? Provarea configurare una interfaccia aggiuntiva. Come variano le tabelle dirouting?

3.3.2 Verifica connettivita a livello rete

Verificare la connettivita da un host verso un’altro (e viceversa) con indirizzoIP IP ADDRESS mediante il comando

ping IP_ADDRESS -c 10

Per verificare quale scheda di rete risulta collegata allo switch e i relativiparametri di livello fisico e utile il comando

ethtool eth0

Quale delle informazioni mostrate siete in grado di capire?

1. Eseguendo il comando di ping, si riceve un output simile al seguente:

PING 172.16.1.1 (172.16.1.1) from 172.16.1.2 : X(Y) bytes of data.

Z bytes from 130.192.73.1: icmp_seq=0 ttl=253 time=3.3 ms

quale e il significato preciso dei valori X,Y e Z ? Che cosa indica icampi icmp seq, ttl e time?

7

3.3.3 Verifica modalita di funzionamento consegna diretta

1. Si determini sperimentalmente il massimo range di indirizzi IP rag-giungibili da un host, usando il comando ping.

Si ponga la netmask a 255.255.0.0 su tutti gli host. Supponendo dinon conoscere la netmask (e quindi la dimensione della sottorete a cuisi e connessi), come e possibile determinare il nuovo massimo range diindirizzi IP raggiungibile da un host.

2. Cosa succede se si mandano pacchetti ICMP verso l’indirizzo di rete?

3. Cosa succede se si mandano pacchetti ICMP verso l’indirizzo broad-cast?

4. Si determini la dimensione effettiva della MTU mediante il coman-do ping con l’opzione DON’T FRAGMENT, facendo diversi tentativi condimensioni del pacchetto differenti.

5. Il comando netstat -i fornisce delle informazioni ridondanti rispettoa quelle di ifconfig. Quali sono?

6. Il comando netstat -r fornisce delle informazioni ridondanti rispettoa quelle di route. Quali sono?

Il comando netstat -r -c fornisce delle informazioni ridondanti rispet-to a quelle di route. Quali sono?

7. Spiegare brevemente tutte le opzioni di ifconfig, ping, route enetstat utilizzate finora.

8. Descrivere la configurazione corrente del proprio host, commentan-do tutti i campi di vostra conoscenza dell’output dei comandi route,ifconfig e ethtool.

3.3.4 Protocollo ARP

Ricordando che tutti gli host appartengono alla stessa sottorete IP, i ter-minali scambiano tra loro delle PDU mediante il meccanismo di consegnadiretta. Questo prevede che l’host sorgente crei una PDU di livello retecontenente come indirizzo di destinazione quello del terminare che si vuolecontattare. Per poter trasmettere tale PDU, l’host sorgente deve creareuna PDU Ethernet contenente come SDU la PDU IP. Come indirizzo MAC,l’host dovra inserire quello del terminale remoto. Per poter conoscere tale

8

indirizzo, l’host dovra associare all’indirizzo IP (noto) della destinazione conl’indirizzo MAC (non noto) della stessa. Per fare questo si usa il protocolloARP - Address Resolution Protocol. Una volta effettuata l’associazione, ilterminale mantiene tali informazioni in tabelle, dette tabelle di ARP. Percapire il funzionamento di tali meccanismi, si eseguano di seguenti punti.

1. Si configuri la rete come nel punto Sec. 3.3.1. Dopo aver eseguito deiping tra tutte le stazioni, si consultino le tabelle di ARP mediante ilcomando

arp

Spiegare il significato dell’output del comando.

2. Si individui, sia nel caso di ARP-request sia di ARP-reply, quali sonogli host che aggiornano le tabelle di ARP, spiegando la metodologiaadottata. Quali altre possibilita ci sono per la gestione dei messaggidi ARP da parte degli host? Quali sono i vantaggi e svantaggi di talisoluzioni?

3. Si provi a contattare un host inesistente appartenente alla propriasottorete e verificare il risultato a video e il contenuto delle ARP tables.

4. Si provi a contattare un host inesistente non appartenente alla propriasottorete e verificare il risultato a video e il contenuto delle ARP tables.

5. Verificare la durata delle entry nella tabella di ARP. Suggerimen-to: cancellare la tabella, e far creare due entry, una per un hostraggiungibile, e una per un host non raggiungibile.

Il comando date visualizza l’ora del PC e puo essere utile per lamisurazione.

3.3.5 Configurazioni di indirizzamento atipiche e sbagliate

1. Cosa succede se due host hanno lo stesso indirizzo IP? Verificare at-tentamente la connettivita da un terzo host verso l’indirizzo comuneconsultando le tabelle ARP. Cosa succede se gli host che hanno lostesso indirizzo contattano il terzo host?

2. Si configurino due host in modo che un host A veda l’host B comeappartenente alla medesima sottorete ma non viceversa. Verificare laconnettivita tra i due host. Cosa succede se A contatta B? E viceversa?

9

3. Si configuri l’host A con indirizzo 10.1.0.1/24 e l’host B con l’indirizzo10.1.0.255/23. Si verifichi la connettivita reciproca tra i due host. Cosasuccede in questo caso? Che indirizzo usa A per B? Che indirizzo usaB per A?

10

4 Configurazione software e hardware degli host:

analisi a livello rete

4.1 Scopo

Lo scopo di questa seconda esercitazione e ripetere alcune esperienze svoltedurante l’esercitazione precedente, osservando le PDU che vengono generatea seguito dei comandi a livello applicazione dati dall’utente. Grazie all’usodi analizzatori di protocollo software, o sniffer, si potranno osserverare lesequenze di PDU scambiate dagli host al seguito di comandi usati. Graziealla possibilita delle schede Ethernet di attivare la modalita promiscua, epossibile da una stazione osservare tutte le PDU che vengono ricevute dallivello fisico dal terminale, indipendentemente se destinate al terminale stes-so o meno a livello collegamento. Questo permette quindi di osservare lasequenza di PDU che vengono trasmesse/ricevute sulla LAN.

Nota: per motivi di sicurezza, per poter attivare la cattura di pacchettiin modalita promiscua, e necessario avere i privilegi di amministratore disistema (root in UNIX, administrator in Windows). E necessario ricordareche l’abuso nell’uso di sniffer puo violare il diritto alla riservatezza dei dati epertanto e perseguibile legalmente. Pertanto si consiglia di non usare questecapacita in reti operative di cui non si hanno le autorizzazioni per l’uso ditali mezzi.

4.2 Documentazione disponibile

• Wireshark home page

http://www.wireshark.org/

• RFC sourcebook

http://www.networksorcery.com/enp/

• Manuali dei comandi route, nmap

http://www.telematica.polito.it/mellia/corsi/LaboratorioTLM/doc/route.html

http://www.telematica.polito.it/mellia/corsi/LaboratorioTLM/doc/nmap.html

4.3 Descrizione dell’esercitazione

Il tempo atteso richiesto e circa 20 ore.

11

4.3.1 Analisi di base.

Lo scopo di questa prima parte della esercitazione e prendere confidenzacon Wireshark, il programma di cattura e analisi pacchetti. Lo sniffer vienelanciato mediante il comando

wireshark &

il carattere & permette di eseguire in comando che lo precede in background,ovvero restituendo immediatamente il controllo all’interprete dei comandi(shell),senza aspettare la fine dell’esecuzione del comando stesso.

Dal menu Capture, si avvii la cattura sull’interfaccia appropriata (eth0o eth1). Da un host, si lanci il comando ping verso un altro host dellapropria sottorete. Dopo alcuni secondi, si clicchi su STOP per fermarel’operazione di cattura. Sulla finestra principale del programma, comparirala lista completa dei pacchetti catturati. Cliccando su ciscuno di essi, sarapossibile verificare il contenuto a livello di frame Ethernet, pacchetto IP,ICMP, o qualunque altro tipo di protocollo riconosciuto dal programma dicattura.

Nota: Wireshark ha abilitato di default la traduzione degli indirizzi nu-merici in nomi logici. Per evitare confusione, si consiglia di disabilitare talefunzionalita. Dal menu, selezionare la voce View, quindi Name Resolutione disabilitare la voce Enable MAC layer.

Al fine di poter selezionare quali pacchetti si intende visualizzare e anal-izzare, esistono due tipi di filtri in Wireshark:

• filtri di cattura

• filtri di visualizzazione.

I filtri di cattura vengono attivati direttamente durante la cattura dellePDU. Se la PDU appena ricevuta non passa il filtro di cattura, questa verrascartata e non verra mostrata. La sintassi dei filtri di cattura e specificatadalla libreria libpcap. Essa e di fatto uno standard per programmi dicattura, che pertanto permettono tutti di specificare dei filtri di catturasecondo la stessa sintassi. Per una descrizione dei filtri di cattura possibili,fare riferimento al manuale di tcpdump. I filtri di cattura vengono applicatial momento della cattura dei pacchetti. I pacchetti che non superano ilfiltro, non saranno catturati, e pertanto non saranno visualizzati.

I filtri di visualizzazione invece permettono di mostrare solo le PDU co-munque catturate che soddisfano il filtro impostato. La sintassi dei filtri

12

di visualizzazione e diversa da quella dei filtri di cattura, in quanto propriadi Wireshark. Una descrizione dei filtri di visualizzazione e disponibile sulmanuale di Wireshark. Inoltre risulta molto utile usare i filtri di visualiz-zazione per evidenziare PDU particolari, per esempio usando colori diversi(menu view, voce Coloring Rules).

Si esegua ora il comando ping da un host ad un altro dell’isola.

1. Si descrivano i filtri in cattura per selezionare solo i pacchetti checoinvolgono due host. Avendo catturato tutti i pacchetti che sono statitrasmessi, possono apparire infatti pacchetti non dovuti al comandoping digitato.

2. Si descrivano i filtri in visualizzazione per selezionare solo i pacchettiche coinvolgono due host.

3. Si descrivano i filtri per colorare in modo differente i pacchetti ICMPEcho request e ICMP Echo reply.

4. Mediante i risultati riportati dallo sniffer, si disegni l’incapsulamen-to a livello collegamento (Ethernet), rete (IP) e controllo (ICMP),specificando le dimensioni dell’header e payload di ciascuno.

5. Eseguendo il comando di ping, si riceve il seguente output:

PING 172.16.1.1 (172.16.1.1) from 172.16.1.2 : X(Y) bytes of data.

Z bytes from 130.192.73.1: icmp_seq=0 ttl=253 time=3.3 ms

quale e il significato preciso dei valori X, Y e Z? Rispetto a quan-to identificato senza l’uso dell’analizzatore di protocolli, cosa e statopossibile identificare in aggiunta?

6. Verificare il tipo di protocollo di livello collegamento (IEEE 802.3 oEthernet II) viene usato per comunicare tra i diversi host.

4.3.2 Consegna diretta e risoluzione di indirizzi: il protocollo

ARP

Verificare che le tabelle di ARP siano vuote mediante il comando

arp

Eseguire il comando ping mentre si e attivata la cattura su un altro termi-nale.

13

1. Descrivere lo scambio di messaggi che avvengono mediante un dia-gramma spazio-tempo. Eseguire la prova per almeno 70 secondi.

Per i pacchetti ARP-request e ARP-reply, quali sono gli indirizzi MACdi destinazione?

2. Come viene calcolato il Round Trip Time (RTT) mediante il comandoping? Mostrare un caso in cui il RTT del primo pacchetto ICMP delping sia chiaramente superiore a quello calcolato tramite i successivipacchetti e spiegarne il motivo.

3. Si utilizzi una dimensione dei pacchetti di ICMP pari a 1,10,100,5000bytes. Si disegni l’incapsulamento a livello Ethernet, IP e ICMP,visualizzando tutte le informazioni relative all’incapsulamento.

Si osservino tutti i campi che variano nelle PDU Ethernet, IP e ICMP,al variare dei seguenti fattori: messaggi ICMP ECHOREQUEST/REPLY,numero di tentativo di ping, dimensione del pacchetto di ping (1,10,100,5000)

4. Nel caso la dimensione del pacchetto ping sia impostato a 1, vengonoindicate tutte le informazioni che normalmente vengono esposte con ilping di default? Perche?

5. Se si perde connettivita tra due host a causa dell’interruzione del cavo,durante un ping, cosa succede?

6. Se si perde connettivita a causa di un guasto tra due host a causadel cambiamento temporaneo di indirizzo dell’interfaccia, durante unping, cosa succede? Se il guasto dura meno di 5 secondi? Piu di 5secondi? Oltre 60 secondi?

7. E possile calcolare la velocita del collegamento tra due host apparte-nenti ad una stessa subnet usando il comando ping?

Suggerimento: considerare un modello di trasmissione delle PDU incui siano presenti il tempo di trasmissione, il tempo di propagazione,il tempo di elaborazione. Quali di questi e legato alla capacita delcanale? Come questi tempi variano al variare della dimensione dellaPDU? Cosa succede se si supera la MTU con conseguente frammen-tazione di PDU a livello IP? Disegnare un diagramma che riporti sulleordinate i diversi valori di RTT ottenuti rispetto a diversi valori didimensione di PDU. Si faccia variare la dimensione della PDU fino alvalore massimo possibile.

14

8. E possibile identificare un host che, avendo attivato la cattura di pac-chetti con un programma di PDU, ha la scheda ethernet in modalitapromiscua? Suggerimento: essendo in modalita promiscua, la sche-da di rete non applica alcun filtro a livello ethernet. Cosa succede sesi imposta manualmente un indirizzo MAC errato nelle tabelle ARPevitando di usare il protocollo ARP?

9. Ripetere il punto Sec. 3.3.5 della esercitazione precedente, mostrandolo scambio dei pacchetti coinvolti.

4.4 Cattura e analisi di protocolli di livello trasporto/applicazione

4.4.1 Protocollo TCP

Lo scopo di questa parte della esercitazione e analizzare protocolli di livellotrasporto, ed in particolare TCP. Tale protocollo offre un servizio affidabile,offre un servizio orientato alla connessione di tipo full-duplex, effettua con-trollo di flusso, controllo di errore, controllo di congestione. Di seguito sonoproposte diverse esercitazioni che evidenziano i meccanismi implementati daTCP per realizzare le funzioni di sopra.

A Analisi servizio echo.

Il servizio echo e un semplicissimo servizio di livello applicativo chereplica tutti i caratteri che vengono ricevuti. Esso opera, se abilitato,sulla porta 7. Per accedere al servizio, occorre

• attivare il relativo servizio sul server

• usare una applicazione su un client che usi il servizio offerto dalserver

Per abilitare il servizio sul server, occorre fare riferimento alla con-figurazione del processo inetd che controlla quali servizi sono attivisull’host. Per modificare la configurazione dello stesso, occorre agiresui file di configurazione /etc/inetd.conf. Si ricorda che per potermodificare la configurazione dei servizi attivi sul sistema, occorre averei permessi di root. Modificare quindi la configurazione di ogni termi-nale a disposizione affinche risultino attivi i servizi echo e chargen.Una volta modificate le configurazioni, occorre far partire il processoinetd tramite il comando

/etc/init.d/inetd start

15

Come applicazione client, invece usare:

telnet <host> echo

Il comando telnet esegue sulla macchina locale un programma di ter-minale remoto, che tenta di aprire una connessione TCP verso l’hosthost. Se presente il secondo parametro indica la porta del servizio acui si intende collegarsi. Se non diversamente specificato, il comandoaprira una connessione verso la porta 23 assegnata al servizio telnetdi terminale remoto. Nell’esempio di sopra, viene invece specifica-to di aprire una connessione verso la porta legata al servizio echo,che il sistema operativo traduce nella well-known port 7. Questoavviene tramite la consultazione del file di configurazione presentein /etc/services. Suggerimento: provare a visualizzare tale file e ariconoscere alcuni servizi e rispettive well-known port.

1. Spiegare analizzando una traccia il funzionamento del servizioecho. Identificare le fasi di apertura della connessione tramite ilThree-way handshake, di scambio dati, e di chiusura della con-nessione stessa.

2. Come avviene la selezione dei numeri di sequenza? Attenzione:Wireshark usa la numerazione relativa e non assoluta! Comeavviene la selezione delle porte? Commentare brevemente il sig-nificato dei campi di della PCI del protocollo IP e del protocolloTCP. E possibile multiplare piu sessioni contemporaneamente?Perche?

3. Come vengono generati e trasmessi gli ACK di TCP? Valutare ilnumero di segmenti confermati da ACK, distinguendo tra le duedirezioni.

4. Come/quando avviene la trasmissione dei caratteri digitati versoil server? Disegnare la distribuzione della dimensione del pay-load TCP, calcolandone la media e distinguendo la direzione dellacomunicazione.

5. Verificare cosa avviene nel caso in cui la sessione viene inter-rotta dall’utente, oppure il servizio diventa non piu accessibile.Per interrompere la connessione occorre avvisare il programmatelnet tramite la pressione dei tasti CTRL+]. In questo modoil programma telnet non inviera piu i caratteri digitati usandola connessione TCP verso il server, e sara possibile uscire dalprogramma stesso usando il comando quit.

16

Per rendere inaccessibile il servizio, fermare il demone inetd conil comando

/etc/init.d/inetd stop

6. Come vengono gestiti i numeri di sequenza? Visualizzare e com-mentare il grafico temporale dei numeri di sequenza, della lunghez-za dei segmenti trasmessi e delle finestre in ricezione.

B Analisi servizio chargen Il servizio chargen e un semplice servizio ilcui scopo e trasmettere una sequenza infinita di caratteri. Quandoviene contattato il server, esso inizia a trasmettere verso il client unasequenza di caratteri, scartando qualunque dato venga trasmesso dalclient.

1. Spiegare con una traccia il funzionamento del servizio chargen.

2. Disegnare la distribuzione della dimensione del payload TCP,calcolandone la media e distinguendo la direzione della comu-nicazione.

3. E possibile multiplare piu sessioni contemporaneamente? Perche?

4. Verificare cosa avviene nel caso in cui: i)la sessione viene inter-rotta dall’utente, ii) il servizio diventa non piu accessibile.

5. Valutare il numero di segmenti confermati da ack, distringuendotra le due direzioni.

6. Visualizzare e commentare il grafico temporale dei numeri di se-quenza, della lunghezza dei segmenti trasmessi e delle finestre inricezione nei casi precedentemente elencati.

7. Nel caso si interrompa la sorgente tramite la pressione dei tastiCTRL+] e la si faccia riprendere premendo il tasto Enter, visual-izzare e commentare il grafico temporale dei numeri di sequenza,della lunghezza dei segmenti trasmessi e delle finestre in ricezione.Quale tipo di controllo ha imposto il ricevitore al trasmettitore?Come/quando il trasmettitore ha ripreso a trasmettere caratteri?Identficare i due meccanismi adottati da TCP in questo caso ecommentare sulla necessita di adottarli entrambi. Cosa potrebbesuccedere se venisse usato solo uno dei due meccanismi?

C Analisi protocollo telnet

1. Avviare lo sniffer e connettersi da un host ad server mediante ilcomando dopo aver abilitato il servizio telnet su server.

17

telnet <host>

2. Eseguire il comando cat /etc/services e terminare la connes-sione.

3. Spiegare, durante la fase di negoziazione delle opzioni, quali opzionivengono negoziate e chi vince la negoziazione. Suggerimento: at-tivare la modalita di debug della fase di option processing. Comevengono suddivise le opzioni a livello di payload TCP?

4. Disegnare il diagramma spazio-temporale dei pacchetti scambiati.

5. Disegnare la distribuzione della dimensione del payload TCP, cal-colandone media e varianza e distinguendo: i) la direzione del-la comunicazione, ii) le fasi di option negoziation, login e usercommands.

6. Spiegare la metodologia da utilizzare per catturare username epassword in una sessione telnet che coivolge due altri host. Qualifiltri possono essere impostati in Wireshark per catturare il min-imo numero di pacchetti per automatizzare tale processo?

7. Verificare cosa avviene nel caso in cui: i) la sessione viene inter-rotta dall’utente, ii) il servizio diventa non piu accessibile, iii) iltelnet viene fatto su una porta non utilizzata da alcun servizio.

8. E possibile multiplare piu sessioni contemporaneamente? Perche?

9. Come varia il TOS durante le sessioni telnet?

10. Valutare il numero di segmenti confermati da ACK, distringuendotra le due direzioni.

11. Visualizzare e commentare il grafico temporale dei numeri di se-quenza, della lunghezza dei segmenti trasmessi e delle finestre inricezione.

12. Si effettui uno studio quantitativo dell’overhead dovuto all’in-capsulamento, nelle fasi di option negotiation, login e user com-mands. Nello specifico, si definiscano le quantita e se ne traccil’andamento:

overhead =totallenght− payloadlength

totallenght

rendimento =payloadlength

totallenght

18

13. Quale relazione lega overhead e rendimento? Scendendo ad un ul-teriore livello di dettaglio, si quantifichino (graficamente e/o tab-ularmente) i contributi portati all’overhead dall’incapsulamentonei vari livelli dello stack protocollare (i.e. a quanto ammon-ta l’overhead Ethernet, IP, TCP, TELNET) nelle differenti fasiprecedentemente elencate.

D Analisi protocollo ftp

1. Si esegua una sessione FTP per scaricare un file da un hostremoto.

2. Si descriva con un esempio il funzionamento del protocollo.

3. Disegnare la distribuzione della dimensione del payload TCP,calcolandone la media e distinguendo la direzione della comu-nicazione.

4. Cosa avviene se il trasferimento del file viene interrotto?

5. E possibile multiplare piu sessioni contemporaneamente? Perche?

6. Visualizzare e commentare il grafico temporale dei numeri di se-quenza, della lunghezza dei segmenti trasmessi e delle finestre inricezione.

7. Si ripeta l’analisi quantitativa dell’overhead dovuto all’incapsu-lamento, richiesta nel caso di telnet, e si confrontino i due casi.Nel caso di una sessione ftp, quante e quali fasi individuate ?Motivate i vostri commenti relazionandoli ai risultati grafici e/otabulari ottenuti.

8. Come cambia il comportamento del protocollo se si usa o meno lamodalita passiva di download, dis/attivabile tramite il comandopassive una volta completato il login?

4.4.2 Analisi del comando nmap

Il comando nmap e stato progettato per permettere ad amministratori di sis-temi e/o curiosi di effettuare scan di intere reti per determinare quali hostsiano attivi e quali servizi siano da essi offerti. nmap supporta un larghissi-mo numero di metodi di analisi, che si basano sia su UDP che su TCP. Ilprogramma e molto completo e complesso allo stesso tempo. Non e scopodi questa parte di esercitazione capire tutti i meccanismi usati. Si consigliatuttavia di leggere il manuale di nmap per capire come sia possibile abusaredel normale funzionamento dei protocolli per scopi diversi. Si ricorda altresıle implicazioni legali di tali abusi.

19

1. Effettuare lo scan di un servizio attivo e uno inattivo di un host usandoil comando

nmap <host> -p 7,199

Analizzare la traccia corrispondente, evidenziando le diverse fasi delloscan.

2. Ripetere la prova, attivando l’opzione host identification tramite l’opzione-O

nmap <host> -p 7,199 -O

Interpretare come il programma riesce a estrarre le informazioni pre-sentate.

3. Effettuare lo scan di i) un host e ii) di una intera rete. Come il pro-gramma effettua la scansione delle porte? Rapresentare graficamentela sequenza di porte analizzate.

4. Effettuare lo scan di i) un host usando il protocollo UDP (opzione-sU). Che tipo di risposte genera l’host analizzato? Come mai la scan-sione e cosı lenta? Quante volte viene analizzata una porta? Perche?Suggerimento: limitare il range di porte analizzate per accelerare iltest.

20

5 Misure di prestazioni

5.1 Scopo

Lo scopo di questa esercitazione e valutare la differenza di prestazioni traTCP e UDP e verificare i meccanismi di controllo di congestione adottatida TCP.

Tramite la creazione di flussi dati scambiati tra i PC di un isola, verrannoproposte diverse configurazioni, in cui sara possibile osservare gli impatti didiversi fenomeni che possono verificarsi nelle reti dati, quali per esempiofenomeni di congestione, di collisione, di perdita pacchetti etc.

Lo strumento per la misura delle prestazioni adottato e il comandonttcp. Esso permette di attivare dei trasmettitori e dei ricevitori a liv-ello applicazione che trasferiscono predeterminate quantita di dati usandoa livello trasporto protocollo TCP o UDP. Il programma misura il goodputottenuto durante il trasferimento, ovvero la quantita di dati ricevuti dalricevitore per unita di tempo a livello applicazione, al netto di overhead eritrasmissioni. Per eseguire un test, lanciare su una macchina il comandonttcp con l’opzione server, ovvero eseguire

nttcp -i

Il server restera attivo fino a che non si preme CTRL+C. La porta TCPutilizzata per rispondere alle richieste e la 5037. Verificare con il comandonetstat -t -l -n la presenza del server attivo.

Sulla macchina client, eseguire il comando

nttcp -T [-u] [-r] [-n <Numero>] [-l <Lunghezza>] IP_ADDR_SERVER

-N specifica il Numero di blocchi dati che l’applicazione genera.-L specifica la Lunghezza in Bytes di ciascun blocco dati. Se non spec-

ificati, Numero=2048 e Lunghezza=4096 Byte, per un totale di 8MByte didati.

-u permette di usare UDP a livello trasporto, mentre l’opzione -r per-mette di attivare un flusso dati dal server al client (ricezione dati invece chetrasmissione dati).

La macchina client iniziera un trasferimento di Numero blocchi dati generatidall’applicazione ciascuno di lunghezza Lunghezza. Al termine del trasferi-mento verra mostrato il goodput misurato. L’output del programma indicadiverse misure, come mostrato sotto. La prima riga corrisponde alle misureeffettuate dal terminale locale, mentre la seconda alle stesse misurate dalterminale remoto.

21

root@3[~]# nttcp -T 10.1.0.4

Bytes Real s CPU s Real-MBit/s CPU-MBit/s Calls Real-C/s CPU-C/s

l 8388608 0.01 1.01 83.5591 8389.6567 2048 172593.97 256032.0

1 8388608 0.01 1.01 83.2757 13421.7728 2049 167937.05 409800.0

5.2 Configurazione della scheda di rete

I PC del laboratorio sono dotati di moderne schede di rete che implemen-tano funzionalita avanzate di offloading della CPU. In particolare, alcunedelle funzionalita che dovrebbero essere eseguite dai livelli TCP/UDP e IPsono invece implementate nella schede ethernet. Ad esempio, il calcolo delCRC TCP puo non essere fatto dalla CPU (che cosı rimane libera per altricompiti) e essere poi completato dalla scheda di rete prima di trasmettere ilsegmento. Tra le funzionalita offerte dalle schede di rete, vi e il TCP SEG-MENTATION OFFLOADING - TSO per cui la segmentazione dei messaggidi livello applicazione viene implementata dalla scheda di rete.

Per verificare quali funzionalita siano offerte ed attive sulla scheda direte, usare il comando

ethtool -k ethX

Mentre per abilitare/disabilitare le stesse usare

ethtool -K ethX [rx on|off] [tx on|off] [sg on|off] [tso on|off]

[ufo on|off] [gso on|off] [gro on|off] [lro on|off]

In modo analogo e possibile imporre la velocita del livello fisico che lascheda di rete puo supportare usando il comando

ethtool -s ethX speed N [duplex half|full] [autoneg on|off]

ove N e la velocita in MB/sPer questa esercitazione

• Disabilitare tutte le funzionalita di offloading eventualmente presentisulla scheda

• Impostare una velocita di trasmissione di 10Mb/s

• Impostare una modalita FULL duplex quando si vuole considerare lapresenza di uno SWITCH

• Impostare una modalita HALF duplex quando si vuole considerare lapresenza di un HUB

22

5.3 Analisi del comando nttcp

1. Spiegare analizzando una traccia il funzionamento del protocollo usatodal comando nttcp. Identificare tutte le connessioni utilizzate, e perciascuna, identificare le fasi di apertura della connessione tramite ilThree-way handshake, di scambio dati, e di chiusura della connessionestessa.

2. Che impatto hanno i parametri Numero e Lunghezza? Se Numero=1000e Lunghezza=10000 o se Numero=100000 e Lunghezza=100 che cosacambia? Se si usa UDP al posto di TCP che impatto hanno i dueparametri? Come scegliere Lunghezza affinche non ci sia mai fram-mentazione a livello IP?

3. [Opzionale] Disegnare la distribuzione della dimensione del payloadTCP, calcolandone la media e distinguendo la direzione della comu-nicazione. Valutare il numero di segmenti confermati da ACK, dis-tinguendo tra le due direzioni.

4. [Opzionale] Si effettui un confronto tra il goodput riportato dall’ap-plicazione e quello medio ricavabile a partire dalle tracce Wireshark.Quale definizione di goodput ritenete sia la piu opportuna ?

5.4 Impatto delle topologie e degli apparati di livello 2 sulleprestazioni.

Lo scopo di questa esercitazione e valutare l’impatto degli apparti di rete dilivello 2 e dei meccanismi di controllo di congestione adottati dal protocolloTCP e UDP. Nel seguito verranno proposte diverse configurazioni.

Al fine di ottenere risultati affidabile di misura

1. la durata di ogni prova deve essere non inferiore a 5 secondi

2. la prova deve essere ripetuta almeno 5 volte e i risultati vanno mediatisulle prove fatte.

Considerando gli scenari di cui sotto, rispondere alle seguenti domanderiassumendo i risultati nelle tabelle in fondo. Prima di effettuare il test,provare a predire il risultato che si attende. Che cosa si verifica di diversorispetto a quanto predetto? Perche?

1. Che goodput ci si aspetta se si usa il protocollo TCP?

23

2. Che goodput ci si aspetta se si usa il protocollo UDP?

3. In scenari con due o piu flussi attivi, che goodput ci si aspetta per unflusso usa il protocollo TCP e per uno che usa il protocollo UDP?

4. Ci possono essere collisioni? Perche? Qual e la probabilita di colli-sione? Suggerimento: utilizzare il comando ifconfig per verificare lapresenza di collisioni e il loro numero.

5. Ci possono essere perdite di frame a livello collegamento? Perche?

6. Ci possono essere perdite di dati a livello applicazione? Perche?

A - Flusso singolo monodirezionale - HALF DUPLEX

Impostare la modalita HALF duplex sulle schede di rete. Attivareun flusso tra l’host A e l’host B. Provare a vedere come cambiano leprestazioni nel caso di download o di upload.

B - Flusso singolo monodirezionale - SWITCH

Ripetere quanto sopra usando una modalita FULL duplex sulle schededi rete

C - Flusso singolo bidirezionale - HALF DUPLEX

Impostare la modalita HALF duplex sulle schede di rete. Attivare unflusso tra l’host A e l’host B e contemporaneamente attivare un flussotra l’host B e l’host A. Assicurarsi che la prova sia abbastanza lungaaffinche i due flussi siano contemporaneamente attivi.

Per attivare due flussi in modo contemporaneo e utile combinare piucomandi nttpc eseguiti dallo stesso terminale come nell’esempio seguente.

nttcp -T IP_ADDR_SERVER > tx.dat & nttcp -T -r IP_ADDR_SERVER > rx.dat

Che cosa succede se un flusso usa UDP e uno usa TCP?

D - Flusso singolo bidirezionale - SWITCH

Ripetere quanto sopra usando una modalita FULL duplex sulle schededi rete

24

E - Due flussi monodirezionali verso un unico ricevitore - HALF

DUPLEX

Impostare la modalita HALF duplex sulle schede di rete. Attivare unflusso tra l’host A e l’host B e contemporaneamente attivare un flussotra l’host C e l’host B.

Che cosa succede se un flusso usa UDP e uno usa TCP?

F - Due flussi monodirezionali verso un unico ricevitore - SWITCH

Ripetere quanto sopra usando una modalita FULL duplex sulle schededi rete

G - Due flussi monodirezionali generati da un unico trasmettitore

- HALF DUPLEX

Impostare la modalita HALF duplex sulle schede di rete. Attivare unflusso tra l’host A e l’host B e contemporaneamente attivare un flussotra l’host A e l’host C.

Che cosa succede se un flusso usa UDP e uno usa TCP?

H - Due flussi monodirezionali generati da un unico trasmettitore

- SWITCH

Ripetere quanto sopra usando una modalita FULL duplex sulle schededi rete

I - Tre flussi bidirezionali - HALF DUPLEX

Impostare la modalita HALF duplex sulle schede di rete. Attivare unflusso tra ogni coppia di calcolatori. Che cosa succede? Quale goodputvi apettate? Sono state rispettate le vostre previsioni?

Che cosa succede se si usa UDP? Ci possono essere delle perdite dipacchetti o delle collisioni?

L - Tre flussi bidirezionali - SWITCH

Ripetere quanto sopra usando una modalita FULL duplex sulle schededi rete

Riassumere i risultati precedenti in nella tabella 1:

25

Prova Goodput TCP Collisioni Perditeprev. oss. prev. oss. prev. oss.

A

B

C

D

E

F

G

H

I

L

Tabella 1: Riassunto prestazioni con flussi TCP

5.4.1 Controllo di congestione

[Opzionale] Configurare la propria isola connettendo il PC A usando unlink a 100Mb/s FULL DUPLEX mentre il PC B e C sono connessi usando10Mb/s HALF DULPEX. Ripetere le prove ai punti E e G, ove il ricevitore(trasmettitore) sia l’host collegato a 100Mb/s FULL DUPLEX. Che cosasuccede se si trasmettono i dati usando il protocollo TCP o UDP? Disegnarela topologia, mostrando il carico offerto sui canali e le percentuali di perditedi pacchetti sugli stessi nodi.

26

Prova Goodput UDP Collisioni Perditeprev. oss. prev. oss. prev. oss.

A

B

C

D

E

F

G

H

I

L

Tabella 2: Riassunto prestazioni con flussi UDP

Prova Goodput TCP Goodput UDP Collisioni Perditeprev. oss. prev. oss. prev. oss. prev. oss.

C

D

E

F

G

H

I

L

Tabella 3: Riassunto prestazioni con flussi misti TCP e UDP

27

5.5 Emulazione di reti geografiche

Per emulare la presenza di reti geografiche, occorre poter inserire del ritardonella trasmissione dei pacchetti ed emulare una certa probabilita di perditadei pacchetti stessi. Per questo scopo, Linux offre una gestione avanzatadelle code di uscita che sono presenti davanti alle interfacce di trasmissione.Il comando che permette di gestirle si chiama tc, e permette di gestirefunzioni di gestione delle code molto avanzate. La sintassi generica e

tc qdisc <add|change|del> dev <ethX> root netem delay <D>ms loss <l>%

Il comando permette di aggiungere/modificare/togliere un elemento diemulazione di rete alla scheda ethX in cui i pacchetti siano ritardati di D mse di cui l % verra scartato.

5.5.1 Emulare ritardi rete

In questo semplice esempio si aggiunge un ritardo fisso pari a 100ms a tuttii pacchetti che sono trasmessi dalla scheda Ethernet locale:

tc qdisc add dev eth0 root netem delay 100ms

Eseguendo un ping ad un host della rete locale mostrera un RTT supe-riore a 100 millisecondi. Attenzione: il ritardo e limitato dalla risoluzioneorologio del kernel (Hz). Sulla maggior parte dei sistemi moderni basati sukernel 2.6, l’orologio di sistema funziona a 1000Hz, che consente ritardi inincrementi di 1ms.

Per emulare un ritardo non costante (tipico delle reti geografiche) epossibile aggiungere una variazione casuale:

tc qdisc change dev eth0 root netem delay 100ms 10ms

Cio causa il ritardo aggiunto con media 100ms e distribuito in [90,110]ms.Ancora, e possibile introdurre una correlazione nel ritardo dei pacchetti:

tc qdisc change dev eth0 root netem delay 100ms 10ms 25%

Cio causa il ritardo aggiunto con media 100ms e distribuito uniforme-mente in [90,110]ms. Il successivo pacchetto avra un ritardo pesato in cuiil 25% dello stesso sara pari a quello del pacchetto precedente (D(n+1)=0.25D(n)+0.75Random)

Ultimo, e possibile specificare anche una distribuzione non uniforme:

28

# tc qdisc change dev eth0 root netem delay 100ms 20ms distribution normal

Le distribuzioni che si possono usare sono: normale, Pareto, paretonor-mal.

5.5.2 Perdita di pacchetti

Specificando un valore diverso da 0 al parametro l e possibile impostare unaprobabilita di perdita di pacchetti. Il valore e specificato in percentuale.

tc qdisc change dev eth0 root netem loss 0.1%

Cio corrisponde ad una perdita media di un pacchetto ogni 1000. Anchein questo caso e possibile aggiungere una correlazione opzionale. Questo puoessere utile per emulare le perdite di pacchetti in burst.

tc qdisc change dev eth0 root netem loss 0.3% 25%

Questo fara sı che il 0.3% dei pacchetti venga perso, ed la probabilitadi perdere il pacchetto successivo dipende da un quarto dalla probabilita diaver perso il pacchetto precedente. Prob(n+1) = 0.25 * Prob(n-1) + 0.75 *Random

5.6 Verifica del funzionamento dell’emulazione

Configurare il sistema in modo che i pacchetti uscenti dall’host A subiscanoun ritardo medio di 100ms distribuito secondo una gaussiana con deviazionestandard 10ms e probabilita di perdita di 3%. Usando il comando ping, ver-ificare il corretto funzionamento del testbed. Riportare in un grafico la den-sita di probabilia del ritardo misurata. Per fare il grafico, raccogliere almeno1000 campioni di ritardo (suggerimento: usare l’opzione -i 0.1 per accel-erare la raccolta dei dati), quindi ordinare i dati raccolti in ordine crescentetramite il comando sort -g file.dat.

5.7 Impatto dei ritardi sulle prestazioni del protocollo TCP

[OPZIONALE]

1. Che cosa succede al goodput raggiunto da una connessione TCP al-l’aumentare del Round Trip Time (RTT) medio tra trasmettitore ericevitore? Riportare in un grafico i valori osservati facendo variare il

29

RTT medio nell’intervallo [0,500]ms. Ripetere le prove piu volte perverificare eventuali effetti casuali.

Che cosa cambia se il ritardo e presente sul link del trasmettitore? Sullink del ricevitore? Meta sul link del trasmettitore e meta sul link delricevitore?

2. Come varia il goodput di una connessione TCP al variare della prob-abilita di perdita di pacchetti dati? Riportare in un grafico i valoriosservati facendo variare la probabilita di perdita media nell’interval-lo [0,0.1]. Ripetere le prove piu volte per verificare eventuali effetticasuali.

3. Come varia il goodput di una connessione TCP al variare della prob-abilita di perdita di pacchetti ACK? Riportare in un grafico i valoriosservati facendo variare la probabilita di perdita media nell’interval-lo [0,0.1]. Ripetere le prove piu volte per verificare eventuali effetticasuali.

4. Ripetere la prova in presenza di RTT di 200ms e 400ms. Cosa cambia?

5. Provare a cambiare l’algoritmo di controllo di congestione implemen-tato dal protocollo TCP usando TCP-RENO, HTCP e CUBIC. Perfare questo, usare i comandi

#carica il modulo relativo a htcp e cubiv

/sbin/modprobe tcp_htcp

/sbin/modprobe tcp_cubic

#mostra quali algoritmi sono a disposizione

sysctl net.ipv4.tcp_available_congestion_control

#imposta cubic come algoritmo di controllo di congestione

sysctl -w net.ipv4.tcp_congestion_control=cubic

5.8 Prestazioni di Streaming Video

Durante questa parte vengono analizzate le prestazioni di streaming video.A tale scopo si utilizza il programma VLC media player, scaricabile dahttp://www.videolan.org/vlc. VLC e un player che permette la ripro-duzione e la trasmissione di contenuti multimediali. Il programma e in grado

30

di gestire i piu diffusi formati audio e video, fra cui: MPEG-4, H.264, MP3,AAC. La distribuzione di Ubuntu utilizzata durante le esercitazioni contienegia una copia preinstallata di VLC. Per lanciare l’interfaccia grafica di VLC,e sufficiente digitare da terminale il comando

vlc

In questa fase utilizziamo VLC per trasmettere/ricevere un video. Inparticolare, l’applicazione e basata su un’architettura client-server. Il servertrasmette il video a un client che lo riceve e lo riproduce sullo schermo. Siail server che il client vengono gestiti con il comando vlc.

VLC mette a disposizione due meccanismi per la trasmissione di videobasati sul protocollo TCP o UDP. Vengono di seguito riportate le operazioniper configurare correttamente il server ed il client nei due scenari.

5.8.1 Configurazione Streaming su UDP

Durante questa parte occorre configurare prima il client e poi il server.Inizialmente si configura il client con il seguente comando:

vlc udp://[@[<multicast address>][:<local port>]]

dove <multicast address> e l’indirizzo di multicast al qual il client e is-critto e <local port> e la porta del client associata all’applicazione. Sel’indirizzo di multicast non viene specificato, il client si registra all’indirizzodi unicast attualmente in uso. Nel nostro caso, si configura il client ad us-are la porta 1234 e l’indirizzo di unicast attualmente in uso (configurato inprecedenza tramite il comando ifconfig):

vlc udp://:1234

A questo punto viene aperta automaticamente l’interfaccia grafica di VLCe il client e pronto a ricevere il flusso.

Verificare con il comando netstat -n -u -p lo stato dei socket UDPattualmente in uso.

Per far partire la trasmissione, occorre configurare il server tramite ilcomando:

vlc <video> ":sout=#std{access=udp,mux=ts,dst=<multicast ip>[:<local port>]}" --loop

dove <video> e il file contenente il video che si vuole trasmettere (specifi-care il path completo), <multicast ip> e l’indirizzo di multicast al qualesono registrati i client e <local port> e la porta utilizzata dai client perricevere il video. L’opzione --loop forza il server a trasmettere il video in

31

maniera continua. Ai fini dell’esercitazione, utilizziamo il video contenutonella cartella Videos e l’indirizzo unicast del client. Ad esempio, se si vuoletrasmettere il video ’my video.mpeg’ al client 192.168.10.72 sulla porta 1234,si utilizza il comando:

vlc my_video.mpeg ":sout=#std{access=udp,mux=ts,dst=192.168.10.72:1234}" --loop

A questo punto il server e correttamente configurato e il video viene riprodot-to dal client.

5.8.2 Configurazione Streaming su TCP

In questa parte bisogna configurare prima il server e poi il client. Inizial-mente si configura il server tramite il comando:

vlc <video> ":sout=#std{access=http,mux=ts,dst=<server address>:<port>}" --loop

dove <video> e il file contenente il video da trasmettere, <server address>e l’indirizzo IP del server e <port> e la porta del server associata all’ap-plicazione. Ad esempio se si vuole impostare la trasmissione del video’my video.mpeg’ dal server con indirizzo IP 192.168.10.1 e porta 8080, siutilizza la seguente sintassi:

vlc my_video.mpeg ":sout=#std{access=http,mux=ts,dst=192.168.10.1:8080}" --loop

Verificare con il comando netstat -n -t -l -p lo stato dei socket TCPattualmente in uso.

Come passo successivo, si fa partire il video dal client tramite il seguentecomando:

vlc http://<server address>[:<server port>]/[<file>]

dove <server address> e l’indirizzo IP del server, <server port> e la por-ta del server associata all’applicazione e <file> e il nome del file che si vuolericevere. Ad esempio, se si esegue il comando:

vlc http://192.168.10.1:8080

e possibile ricevere e visualizzare tutto il flusso video proveniente dal servercon indirizzo IP 192.168.10.1 e porta 8080.

Verificare con il comando netstat -n -t -p lo stato dei socket TCPattualmente in uso.

32

5.9 Confronto prestazioni UDP/TCP

Configurare il sistema in modo che i pacchetti uscenti dall’host subiscano unritardo medio di 200ms. Impostare un rate di 10Mb/s tramite il comandoethtool. Eseguire lo streaming per il caso UDP e poi per quello TCP.Catturare il traffico in entrambi i casi. Verificare con Wireshark i protocolliutilizzati e commentare la traccia osservata nei due casi.

Plottare su un grafico la variazione temporale della dimensione del pac-chetto nei due casi. Plottare anche l’Inter Packet Gap. Come variano idue andamenti? Suggerimento: usare le funzionalita di Wireshark per faregrafici che si trovano nel menu Statistiche-¿ IO Graphs.

5.10 Impatto della probabilita di perdita

Ripetere il punto precedente variando anche la probabilita di perdita plossfra 0% e 10%.

Riportare su un grafico la variazione del numero di frame persi al vari-are della probabilita di perdita (il numero di frame persi si ricava in VLCda Strumenti/Informazioni Media/Statistiche). Per la misura considerareuna durata del video di almeno 3 minuti. Che differenze ci sono fra latrasmissione su UDP e quella su TCP? Perche?

5.11 Impatto della capacita del canale

Impostare a la scheda di rete del canale fra server e switch a 100Mb/s fullduplex, mentre lasciare invariato a 10Mb/s il canale fra switch e client.Introdurre del traffico TCP in background tramite il comando nttcp durantela trasmissione dello streaming video.

Plottare su un grafico l’andamento dei frame persi al variare del numerodi flussi di background, considerando i casi TCP e UDP. Come cambia laqualita del video ricevuto? Perche?

33

6 Configurazione rete mediante routing statico

6.1 Scopo

Lo scopo di questa esercitazione e apprendere le conoscenze di base riguardan-ti la configurazione del routing IP. Si affronteranno problematiche di rout-ing usando solo configurazioni statiche, ovvero in assenza di protocolli ealgoritmi automatici di instradamento.

Verranno proposte configurazioni in cui diverse topologie logiche sarannoconfigurate usando la stessa topologia fisica. Sara quindi possibile analizzarel’impatto della topologia sulle prestazioni di rete.

Tra le diverse configurazioni, verranno create situazioni errate in cuisaranno presenti configurazioni parziali che possono essere corrette tramitemessaggi ICMP-redirect e loop di instradamento. Infine, verra configuratala possibilita di accedere ad Internet tramite un router che svolgera anchefunzione di Network Address Translation (NAT). L’esercitazione permet-tera di completare anche l’analisi dei protocolli, grazie alla possibilita diraggiungere server reali in rete geografica.

Il tempo atteso richiesto e circa 10 ore. Si noti che per il buon esitodell’esercitazione e necessario un buon coordinamento tra le isole.

Per lo svolgimento di questa esercitazione, occorre configurare i PC adisposizione come Router IP. Sara necessario utilizzare piu di una interfacciaper personal computer, in modo da poter creare reti diverse interconnesse alivello rete.

Al fine di abilitare il forwarding di pacchetti a livello IP, occorre config-urare il Sistema Operativo tramite il comando

echo 1 > /proc/sys/net/ipv4/ip_forward

Per disabilitare il forwarding, in maniera del tutto simile, usare il comando

echo 0 > /proc/sys/net/ipv4/ip_forward

6.2 Documentazione disponibile

• Manuali dei comandi route, nmap

6.3 Configurazione instradamento statico intra-isola

Sfruttando i tre Personal Computer a disposizione in ogni isola, configurarele interfacce a disposizione in modo da evidenziare gli effetti di configurazioniparziali o errate.

34

6.3.1 ICMP-redirect

1. Configurazione router errata

Si spieghi la configurazione necessaria per evidenziare l’attivazione dimessaggi di ICMP-redirect all’interno della stessa isola. Come fa unrouter a capire che deve mandare un redirect? Quali condizioni devonoessere verificate? Mostrare con un esempio tale fenomeno.

2. Creazione anelli con Redirect.

Si descrivano le configurazione dentro l’isola per fare in modo che:

• No ICMP-redirect

La comunicazione tra un qualunque host dell’isola e l’esternoavvenga senza ICMP redirect.

• ICMP-Redirect

La comunicazione tra un qualunque host dell’isola e l’esternoavvenga, se possibile, sempre con ICMP redirect

Spiegare con un esempio come avviene il forwarding di un pacchettodiretto fuori dalla isola, nel caso in cui ci sia ICMP redirect e non,evidenziando lo scambio dei pacchetti e specificando gli indirizzi alivello Ethernet e IP. Quali sono i vantaggi e gli svantaggi dovuti allapresenza di ICMP redirect?

3. Analisi topologia lineare con due router

• Due Router

Configurare due host dell’isola come router in modo da mostrareeventualmente il decremento totale del TTL di un pacchetto IPdovuto alla presenza di un anello nell’instradamento. Spiegarela configurazione e mostrare il fenomeno. Se non e possibileosservarlo, spiegarne il motivo.

• Due router e un host.

Configurare due host dell’isola come router in modo da mostrareeventualmente il decremento totale del TTL di un pacchetto IPdovuto alla presenza di un anello nell’instradamento. Utilizzareun terzo host come generatore di PDU. Spiegare la configurazionee mostrare il fenomeno. Se non e possibile osservarlo, spiegarneil motivo.

35

4. Conclusioni

Quando si osserva un fenomeno di ICMP redirect? Spiegare il fenomenomediante un semplice diagramma spazio-temporale.

Spiegare il contenuto delle routing tables (minime) nel caso in cui:

• l’host sia isolato

• l’host sia in una LAN isolata

• l’host sia in una LAN connessa ad altre LAN

• l’host sia in una LAN connessa ad Internet.

6.4 Configurazione instradamento statico inter-isola

Lo scopo di questa esercitazione e interconnettere le varie isole per poteraccedere alla rete Internet tramite un router/nat.

Si consideri lo schema della rete del laboratorio come rappresentato inFigura 1.

IP: 130.192.71.201/24DNS:130.192.71.39Default gw: 130.192.71.17

Interfaccia X del router:I=1

I=2

I=4

I=5

I=3

X

Rete geografica

6.4.1 Topologia a stella

Si consideri una rete in cui e presente un backbone che interconnette tuttele isole, e un router di accesso collegato ad Internet. A livello fisico, tutti i

36

PC saranno collegati ad un unica LAN. A livello logico invece, ogni isola euna rete, con indirizzi come da Tabella 1. Un PC dell’isola sara collegatoal backbone (logico), rete 10.1.0.0/24. Il router di default per uscire surete geografica ha interfaccia 10.1.0.1, mentre una seconda interfaccia locolleghera verso la rete Internet. In figura 1 e mostrata l’interfaccia delrouter di accesso X, e tutte le isole con la relativa numerazione.

Si configurino il minimo numero di interfacce presenti su un isola, seguen-do il piano di indirizzamento indicato in Tabella 2:

Isola Rete privata Interfaccia sul backbone Router accesso

1 192.168.1.0/29 10.1.0.1/24 10.1.0.1/24

2 192.168.2.0/29 10.1.0.2/24 10.1.0.1/24

3 192.168.3.0/29 10.1.0.3/24 10.1.0.1/24

4 192.168.4.0/29 10.1.0.4/24 10.1.0.1/24

5 192.168.5.0/29 10.1.0.5/24 10.1.0.1/24

Tabella 4: Piano di indirizzi

• Disegnare la topologia logica e fisica della rete.

• Descrivere le configurazioni di rete e di routing, sia degli host che deirouter convolti, necessarie per garantire la connettivita bidirezionaletra le isole e con la rete geografica Internet.

6.4.2 Scoperta della topologia

Si determinino gli indirizzi di tutti gli host attivi (senza chiedere esplici-tamente ai colleghi!) nel laboratorio e si spieghi la metodologia utilizzata.Come riesco a capire quale e il default gateway di ciascuna rete?

6.4.3 Prestazioni con rete carica

Si carichi la rete attivando 3 flussi di chargen da un’host di ogni isola (chenon sia il default gateway) a un host (sempre che non sia il default gateway)delle altre isole (esclusa quella del router di accesso).

• Quale script potete utilizzare per agevolare tale compito?

• Ci possono essere delle perdite? Si verifichi lo stato delle perdite eritrasmissioni mediante il comando netstat.

37

Da/Verso Internet Isola 2 Isola 3 Isola 4 Isola 5

Internet 0 X X X X

Isola 2 X 0 X X X

Isola 3 X X 0 X X

Isola 4 X X X 0 X

Isola 5 X X X X 0

Tabella 5: Matrice di traffico uniforme

Da/Verso Internet Isola 2 Isola 3 Isola 4 Isola 5

Internet 0 X X X X

Isola 2 X 0 0 0 0

Isola 3 X 0 0 0 0

Isola 4 X 0 0 0 0

Isola 5 X 0 0 0 0

Tabella 6: Matrice di traffico sbilanciato

• Utilizzare traceroute per verificare il percorso seguito dai pacchetti. Simostrino alcuni esempi significativi.

• Come varia il TTL a seconda della destinazione dentro la rete dellaboratorio?

6.4.4 Prestazioni per traffico uniforme

Nel caso in cui il traffico sia uniforme secondo la matrice riportata in Tabella2, dove X e la velocita del flusso, si calcoli approssimativamente il numeromedio di router che vengono attraversati, e si individui il carico sui principalilink e router.

6.4.5 Prestazioni per traffico sbilanciato

Nel caso in cui il traffico sia di tipo hot-spot e diretto solo verso Internet,secondo la matrice rappresentata in Tabella 4, dove X e la velocita del flusso,si calcoli il numero medio di router che vengono attraversati, e si individuiil carico sui principali link e router.

38

6.4.6 Riconfigurazione in caso di guasto.

Se il link logico sul backbone del router di accesso ad Internet si guastasse,che riconfigurazioni sono necessarie per ristabilire la connessione con Inter-net? Quali riconfigurazioni sono necessarie per ristabilire la connessione conle altre isole?

6.4.7 Conclusioni

Quali sono i vantaggi e svantaggi di questa topologia? In termini di affid-abilita ?

6.5 Topologia ad anello con routing distanza minima

Mantenendo il piano di numerazione identico a quello utilizzato per la reteprivata in ogni isola nel caso di topologia logica a stella, si configuri (coor-dinandosi eventualmente con le altre isole) una topologia logica ad anello,con un routing a distanza minima tra un’isola e l’altra.

6.5.1 Configurazione

• Disegnare la topologia logica e fisica della rete.

• Descrivere le configurazioni di rete e di routing, sia degli host che deirouter convolti, necessarie garantire per la connettivita tra le isole econ la rete geografica Internet.

• Utilizzare traceroute per verificare il percorso seguito dai pacchetti. Simostrino alcuni esempi significativi.

• Si ripeta la domanda sulle prestazioni per traffico uniforme.

• Si ripeta la domanda sulle prestazioni per traffico sbilanciato.

• Se uno dei link del router di accesso ad Internet si guastasse, che ricon-figurazioni sono necessarie per ristabilire la connessione con Internet?Basta una riconfigurazione locale sull’isola che ha perso il link con ilrouter di accesso?

6.6 Topologia ad anello con routing unidirezionale

Si configuri la rete ad anello in modo da forzare un trasferimento sempre insenso orario dei pacchetti da un’isola all’altra.

39

Si ripetano le domande poste nella topologia ad anello con routing aminima distanza, in cui l’ultima domanda sia sostituita dalla seguente:

• Se uno dei link del router di accesso ad Internet si rompesse, che ricon-figurazioni sono necessarie per ristabilire la connessione con Internet?

• Basta una riconfigurazione locale sull’isola che ha perso il link con ilrouter di accesso?

6.7 Analisi di protocolli a livello geografico

6.7.1 Analisi del comando traceroute

Spiegare l’output del programma traceroute, ad esempio quando si verificala connettivita con www.stanford.edu, o 171.64.10.77 o con un altro sitoa piacere fuori dall’Europa.

Come funziona il programma nella particolare implementazione fornita?Che protocolli utilizza? Che tipi di messaggio ICMP vengono generati?

Cosa significa * se compare nell’output?L’indirizzo del router ottenuto e pari all’interfaccia di ingresso o di uscita

di un router? Come e possibile saperlo?Spiegare possibili limiti di traceroute nell’identificare il routing verso un

host. Perche traceroute usa il protocollo UDP?Spiegare come varia il valore di source port e di destination port tra i

diversi pacchetti utilizzati per calcolare la route a un host. Perche di taleregole?

6.7.2 Analisi del comando ping “Record route”

Utilizzare l’opzione “Record route” del comando ping per evidenziare ilpercorso verso www.polito.it, o 130.192.73.1.

Che differenza c’e tra usare ping e traceroute verso la medesima des-tinazione? Quali sono i vantaggi e gli svantaggi di ciascun protocollo?

Se possibile, individuare tutte le interfacce coinvolte nel routing dei pac-chetti dall’host nel laboratorio fino a www.polito.it e fino a www.stanford.edu(o altro sito a piacere fuori dall’Europa). E possibile che due server fisica-mente vicini siano raggiunti da percorsi completamente diversi? Mostrareun esempio.

6.7.3 Analisi del protocollo DNS

Per configurare il servizio DNS occorre editare il file

40

/etc/hosts

aggiungendo l’indicazione del server DNS che si intende usare. Per esempio

search polito.it

nameserver 130.192.71.39

nameserver 130.192.3.24

nameserver 130.192.3.21

indica tre server, e che il dominio di default se non specificato sara polito.it.Provare a contattare un host interno al Politecnico (ad esempio, www.polito.it)

ed uno esterno (ad esempio, www.stanford.edu e www.google.it, o un al-tro sito fuori dall’Europa). Verificare lo scambio di messaggi a livello DNS econfrontare con quelli ricavabili mediante il comando dig. Ripetere la provapiu volte.

Spiegare la filosofia di politiche di load balancing basate sul DNS: qualisiti la utilizzano?

6.7.4 Analisi del protocollo HTTP

Descrivere il protocollo HTTP nel caso in cui ci si connetta ad una paginaweb semplice (ad esempio, http://www.tlc-networks.polito.it/mellia/corsi/LaboratorioTLM/

Quante connessioni TCP sono attivate contemporaneamente?Descrivere il protocollo http nel caso in cui ci si connetta ad una pagina

web ricca di contenuti (ad esempio, http://www.repubblica.it )Quante connessioni TCP sono attivate contemporaneamente?

41

7 Protocolli di routing dinamico

7.1 Scopo

Gli obiettivi di questo laboratorio sono quelli di studiare il funzionamentodi protocolli di routing dinamico, quali RIP e OSPF. Dopo aver appreso leconfigurazione di base di questi protocolli, si evidenzieranno le differenze tradi loro, e verranno proposti possibili problemi che si possono verificare negliscenari gestiti da questi protocolli.

7.2 Configurazione di base

Progettare una rete anello con i PC a disposizione nell’isola di lavoro comequella illustrata nella Figura 7.1 per il caso di tre PC. Separare le ret anchea livello di topologia fisica.

Rete B Rete C

H3H1

H2

Rete A

1. Scegliere gli indirizzi IP e la maschera di ciascuna rete in modo daminimizzare lo spreco di indirizzi, immaginando che circa 100 hostsiano connessi alla rete A, 50 host sulla rete B e 30 host sulla rete C.

2. Configurare con Quagga il routing statico necessario per permettere lacomunicazione tra tutte le reti; nel caso in cui ci sia piu di un modo perraggiungere una rete, aggiungere tutte le route possibili con la relativadistanza (metrica) misurata in numero di hops.

3. Verificare il raggiungimento di tutti gli indirizzi usando tutte le stradea disposizione (Suggerimento: usare la opzione -I del comando pingper selezionare le interfacce).

4. Iniziare un ping verso una interfaccia che sia raggiunta attraverso unaltro router (ovvero l’interfaccia da raggiungere non sia in consegnadiretta). Togliere il cavo corrispondente al link dell’anello attraversoil quale sta avvenendo il ping.

42

(a) Quali problemi compaiono?

(b) Come si puo ristabilire la connettivita?

(c) Quanto tempo avete impiegato per ristabilire la connettivita com-pleta tra gli host?

7.3 Il protocollo RIP

Verra ora introdotto l’uso di protocolli di routing dinamico basati su distancevector. Dopo aver analizzato la parte iniziale di cold start, verra analizzatala gestione dei guasti da parte di questa famiglia di protocolli.

1. Nella rete precedente eliminare la configurazione di routing statico econfigurare il routing dinamico prima usando il protocollo RIP versione1 e dopo la versione 2. Catturare il traffico dall’inizio della configu-razione fino al momento in cui tutte le interfacce sono raggiungibili.Nota: RIP versione 1 supporta CIDR?

(a) Come si possono visualizzare questi protocolli con uno sniffer tipoWireshark? Descrivere il filtro di visualizzazione.

(b) Come vengono fatti gli annunci della tabella di routing in ciascunaversione?

(c) Quali indirizzi IP vengono usati per distribuire le tabelle di rout-ing? Che tipo di indirizzi sono?

(d) Ogni quanto tempo vengono effettuati questi annunci?

(e) Descrivere la struttura di questi messaggi.

2. Configurare soltanto RIP versione 2 e una volta verificato il raggiung-imento di tutti gli indirizzi della rete, iniziare un ping verso una in-terfaccia che sia raggiunta attraverso un altro router (ovvero tramiteconsegna indiretta). Togliere il cavo corrispondente al link dell’anelloattraverso il quale sta avvenendo il ping.

(a) Dopo quanto tempo (in secondi) viene ristabilito il ping?

(b) Che messaggi compaiono nel ping prima che si ristabilisca laconnetivita?

(c) Come si possono mappare questi messaggi del ping con gli statidella routing table?

43

7.4 Il protocollo OSPF

Verranno ora riproposti punti della precedente esercitazione usando proto-colli di routing basati su Link State, quali OSPF.

1. Nella rete precedente eliminare il routing RIP e configurare il routingdinamico usando il protocollo OSPF.

(a) Come si puo visualizzare questo protocollo con uno sniffer tipoWireshark? Come viene incapsulato (TCP, UDP, altro)? Descri-vere il filtro di visualizzazione.

(b) Come vengono fatti gli annunci dello stato di links? Quali in-dirizzi IP vengono usati per distribuirli ? Che tipo di indirizzisono?

(c) Ogni quanto tempo vengono effettuati questi annunci?

(d) Descrivere la struttura di questi messaggi.

2. Si verifichi il raggiungimento di tutti gli indirizzi della rete. Iniziare unping verso una interfaccia che sia raggiunta attraverso un altro router(ovvero tramite consegna indiretta). Togliere il cavo corrispondente allink dell’anello attraverso il quale sta avvenendo il ping.

(a) Dopo quanto tempo (in secondi) viene ristabilito il ping?

(b) Che messaggi compaiono nel ping prima che si ristabilisca laconnetivita? Cosa significano?

44