Descrizione dell`esercitazione

Transcript

Descrizione dell`esercitazione
POLITECNICO di TORINO
Dipartimento di Elettronica
Dispense corsi
Laboratorio di Protocolli
Laboratorio di Telecomunicazione - reti
Marco Mellia, Paolo Giaccone
E-mail: {mellia,giaccone}@tlc.polito.it
25 ottobre 2005
1
Indice
1 Introduzione
1.1 Materiale richiesto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
4
2 Argomenti del corso
2.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.1 Scopo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.2 Materiale utile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
5
5
5
3 Configurazione software e hardware degli host: analisi a livello utente
3.1 Scopo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Documentazione disponibile . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3 Descrizione dell’esercitazione . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.1 Configurazione di una rete . . . . . . . . . . . . . . . . . . . . . . . .
3.3.2 Verifica connettività a livello rete . . . . . . . . . . . . . . . . . . . .
3.3.3 Verifica modalità di funzionamento consegna diretta . . . . . . . . .
3.3.4 Protocollo ARP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.5 Configurazioni di indirizzamento atipiche e sbagliate . . . . . . . . .
.
.
.
.
.
.
.
.
6
6
6
6
6
7
7
8
9
4 Configurazione software e hardware degli host: analisi a livello rete
4.1 Scopo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Documentazione disponibile . . . . . . . . . . . . . . . . . . . . . . . . .
4.3 Descrizione dell’esercitazione . . . . . . . . . . . . . . . . . . . . . . . .
4.3.1 Analisi di base. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.2 Consegna diretta e risoluzione di indirizzi: il protocollo ARP . .
4.4 Cattura e analisi di protocolli di livello trasporto/applicazione . . . . . .
4.4.1 Protocollo TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.2 Analisi del comando nmap . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
10
10
10
10
10
12
13
13
16
5 Misure di prestazioni
5.1 Scopo . . . . . . . . . . . . . . . . . . . .
5.2 Analisi del comando nttcp . . . . . . . . .
5.3 Impatto delle topologie e degli apparati di
5.3.1 Controllo di congestione . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
livello 2 sulle prestazioni.
. . . . . . . . . . . . . . .
6 Configurazione rete mediante routing statico
6.1 Scopo . . . . . . . . . . . . . . . . . . . . . . .
6.2 Documentazione disponibile . . . . . . . . . . .
6.3 Configurazione instradamento statico intra-isola
6.3.1 ICMP-redirect . . . . . . . . . . . . . .
6.4 Configurazione instradamento statico inter-isola
6.4.1 Topologia a stella . . . . . . . . . . . . .
6.4.2 Scoperta della topologia . . . . . . . . .
6.4.3 Prestazioni con rete carica . . . . . . . .
6.4.4 Prestazioni per traffico uniforme . . . .
6.4.5 Prestazioni per traffico sbilanciato . . .
6.4.6 Riconfigurazione in caso di guasto. . . .
2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
17
17
17
18
19
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
20
20
20
21
21
22
22
23
23
23
23
24
6.5
6.6
6.7
6.4.7 Conclusioni . . . . . . . . . . . . . . . . .
Topologia ad anello con routing distanza minima
6.5.1 Configurazione . . . . . . . . . . . . . . .
Topologia ad anello con routing unidirezionale . .
Analisi di protocolli a livello geografico . . . . . .
6.7.1 Analisi del comando traceroute . . . . . .
6.7.2 Analisi del comando ping “Record route”
6.7.3 Analisi del protocollo DNS . . . . . . . .
6.7.4 Analisi del protocollo HTTP . . . . . . .
7 Protocolli di routing dinamico
7.1 Scopo . . . . . . . . . . . . .
7.2 Configurazione di base . . . .
7.3 Il protocollo RIP . . . . . . .
7.4 Il protocollo OSPF . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
24
24
24
25
25
25
25
25
26
.
.
.
.
27
27
27
27
28
1
Introduzione
Questa vuole essere una raccolta di esercitazioni da svolgere durante il corso di Laboratorio
di Protocolli o dell’equivalente parte nel corso di Laboratorio di Telecomunicazioni. Verranno proposte diverse esercitazioni da svolgere in laboratorio, che verranno di volta in volta
proposte dal docente. Il corso presenta contenuti fortemente sperimentali, e permette agli
studenti di applicare le nozioni apprese nei corsi precedenti riguardanti il funzionamento delle
reti locali (LAN) e dei protocolli della rete Internet.
Per semplicità , il corso viene diviso in sei laboratori. Ciascuna esperienza può richiedere
diverse ore, per cui non c’è nessuna corrispondenza tra la divisione dei laboratori e le settimane
di corso.
Per lo svolgimento del corso, gli studenti hanno a dispozione un laboratorio attrezzato
con diversi apparati di rete, quali hub, switch, cavi, router etc. Sono inoltre a disposizione
dei Personal Computer dotati di sistema operativo Linux, i quali verranno di volta in volta
configurati come host e/o router.
Esiste tutta una serie di documentazione on line, e online all’indirizzo http://www.tlcnetworks.polito.it/mellia/corsi/. Essa raccoglie una serie di documenti che possono essere utili
durante lo svolgimento del laboratorio. In parte, essa è stata prodotta appositamente; in
parte invece è frutto di lavoro di altri, raccolto e messo a disposizione degli studenti.
1.1
Materiale richiesto
Per lo svolgimento del corso, ogni gruppo ha a disposizione:
• Personal Computer dotati di due o più interfacce Ethernet e dotato di Sistema Operativo
Linux.
• cavi UTP, connettori RJ45 e pinze crimpatrici
• 1 hub e 1 switch a 4/5 porte
4
2
Argomenti del corso
2.1
2.1.1
Introduzione
Scopo
Verrà introdotto il corso, nonchè verranno richiamati i concetti di base che devono essere a
conoscenza degli studenti. In particolare, verranno richiamati le problematiche di indirizzamento del protocollo IP, i concetti di classi di indirizzo e subnet masks. Verranno richiamati
i meccanismi di consegna diretta e indiretta dei pacchetti su reti locali.
Infine, verrà introdotto il sistema operativo Linux, includendo una descrizione dei principali comandi utente (man, ls, more, mv, cp, rm, mkdir, rmdir, chmod, ps, kill, mtools, nedit,
...). Verranno spiegati i meccanismi di configurazione di rete propri del 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/05-06/Laboratorio/doc/dispe internet.pdf
• Slides corso di reti su IP (ripasso)
http://www.telematica.polito.it/mellia/corsi/05-06/Laboratorio/doc/ip icmp routing.pdf
• Tutorial in italiano sull’uso base di Linux
http://www.telematica.polito.it/mellia/corsi/05-06/Laboratorio/doc/appunti linux.html
5
3
Configurazione software e hardware degli host: analisi a
livello utente
3.1
Scopo
Lo scopo di questa esperienza è capire i meccanismi di configurazione di host e router IP,
provando a creare delle reti locali. Verranno connessi tramite hub/switch i PC a disposizione,
e verrà controllato il corretto funzionamento delle reti create. Il tempo atteso richiesto è circa
10 ore.
3.2
Documentazione disponibile
• Manuali dei comandi ifconfig, ping, traceroute, netstat, arp, route
http://www.telematica.polito.it/mellia/corsi/05-06/Laboratorio/doc/ifconfig.html http://www.telematica.
06/Laboratorio/doc/ping.html http://www.telematica.polito.it/mellia/corsi/05-06/Laboratorio/doc/tracer
http://www.telematica.polito.it/mellia/corsi/05-06/Laboratorio/doc/netstat.html http://www.telematica.
06/Laboratorio/doc/arp.html
• Tutorial sulla crimpatura di un cavo di rete UTP RJ45
http://www.telematica.polito.it/mellia/corsi/05-06/Laboratorio/doc/cat5cable.htm
3.3
Descrizione dell’esercitazione
Nota: In questa esercitazione non è consentito l’uso di analizzatore di protocolli di rete.
3.3.1
Configurazione di una rete
Ogni gruppo deve disporre di cavi UTP, il cui funzionamento deve essere testato tramite
l’apposito tester. In ogni isola, si connettano, mediante hub, i terminali a disposizione tramite
l’hub.
1. Si disegni la topologia corrispondente sia a livello fisico che a livello logico.
2. Si disabilitino entrambe le interfacce con i comandi:
ifconfig eth0 down
ifconfig eth1 down
ifconfig eth2 down (per gli host dotati di 3 schede di rete)
Si crei una rete con al massimo 128 hosts, utilizzando indirizzi privati IP di classe B.
Per configurare l’indirizzo IP IP ADDRESS (nel formato decimale X.X.X.X) e la subnet
mask NET MASK (nel formato decimale 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
6
ifconfig -a
Quante interfacce 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 raggiungili secondo le tabelle di routing? Provare a configurare una
interfaccia aggiuntiva. Come variano le tabelle di routing?
3.3.2
Verifica connettività a livello rete
Verificare la connettività da un host verso un’altro (e viceversa) con indirizzo IP IP ADDRESS
mediante il comando
ping IP_ADDRESS
Si indichi con una targhetta il nome della interfaccia eth0. Suggerimento: nel caso in cui non
funzionasse il comando ping, provare a connettere la seconda interfaccia Ethernet e riprovare.
1. In che modo il Sistema Operativo associa i nomi logici alle interfacce?
2. Eseguendo il comando di ping, si riceve il seguente output:
PING web01.polito.it (130.192.73.1) from 130.192.9.142 : X(Y) bytes of data.
Z bytes from 130.192.73.1: icmp_seq=0 ttl=253 time=3.3 ms
quale è il significato preciso dei valori X,Y e Z ?
3.3.3
Verifica modalità di funzionamento consegna diretta
1. Si determini l’indirizzo MAC di TUTTE le schede di rete disponibili sull’host.
2. Si determini sperimentalmente il massimo range di indirizzi IP raggiungibili da un host,
usando il comando ping.
Si ponga la netmask a 255.255.0.0 su tutti gli host. Supponendo di non conoscere la
netmask (e quindi la dimensione della sottorete a cui si è connessi), come E’ possibile
determinare il nuovo massimo range di indirizzi IP raggiungibile da un host.
3. Cosa succede se si mandano pacchetti ICMP verso l’indirizzo di rete?
4. Cosa succede se si mandano pacchetti ICMP verso l’indirizzo broadcast?
5. Si determini la dimensione effettiva della MTU mediante il comando ping con l’opzione
DON’T FRAGMENT, facendo diversi tentativi con dimensioni del pacchetto differenti. Il
comando da usare è
ping -M do -s DIM_PACCHETTO IP_ADDRESS
7
6. Si sostituisca solo per questo punto dell’esercitazione l’hub con lo switch e si verifichi
la connettività . E’ cambiato qualcosa nel comportamento e nella configurazione degli
host?
7. Il comando netstat fornisce delle informazioni ridondanti rispetto a quelle di ifconfig.
Quali sono?
8. Spiegare brevemente tutte le opzioni di ifconfig, ping, route e netstat utilizzate
finora.
9. Descrivere la configurazione corrente del proprio host, commentando tutti i campi di
vostra conoscenza dell’output dei comandi route, ifconfig e netstat.
3.3.4
Protocollo ARP
Ricordando che tutti gli host appartengono alla stessa sottorete IP, i terminali scambiano
tra loro delle PDU mediante il meccanismo di consegna diretta. Questo prevede che l’host
sorgente crei una PDU di livello rete contenente come indirizzo di destinazione quello del
terminare che si vuole contattare. Per poter trasmettere tale PDU, l’host sorgente devecreare
una PDU Ethernet contenente come SDU la PDU IP. Come indirizzo MAC, l’host dovrà
inserire quello del terminale remoto. Per poter conoscere tale indirizzo, l’host dovrà associare
all’indirizzo IP (noto) della destinazione con l’indirizzo MAC (non noto) della stessa. Per
fare questo si usa il protocollo ARP Address Resolution Protocol. Una volta effettuata
l’associazione, il terminale mantiene tali informazioni in tabelle, dette tabelle di ARP. Per
capire il funzionamento di tali meccanismi, si eseguano di seguenti punti.
1. Si configuri la rete come nel punto Sec. ??. Dopo aver eseguito in ping tra tutte le
stazioni, si consultino le tabelle di ARP mediante il comando
arp
Spiegare il significato dell’output del comando.
2. Si individui, sia nel caso di ARP-request che di ARP-reply, quali sono gli host che
aggiornano le tabelle di ARP, spiegando la metodologia adottata. Ci potrebbero essere
soluzioni alternative? Quali sono i vantaggi e svantaggi di tali soluzioni, se esistono?
3. Si provi a contattare un host inesistente appartenente alla propria sottorete e verificare
il contenuto delle ARP tables.
4. Si provi a contattare un host inesistente non appartenente alla propria sottorete e
verificare il contenuto delle ARP tables.
5. Verificare la durata delle entry nella tabella di ARP. Suggerimento: cancellare la tabella,
e far creare due entry, una per un host raggiungibile, e una per un host non raggiungibile.
Cronometrare usando il comando date.
8
3.3.5
Configurazioni di indirizzamento atipiche e sbagliate
1. Si configurino due host in modo che un host veda l’altro come appartenente alla medesima sottorete ma non viceversa. Verificare la connettività tra i due host.
Si configuri l’host A con indirizzo 10.0.0.1/24 e l’host B con l’indirizzo 10.0.0.255/23.
Si verifichi la connettività reciproca tra i due host. Cosa succede? Che indirizzo usa A
per B? Che indirizzo usa B per A?
2. Cosa succede se due host hanno lo stesso indirizzo IP? Verificare attentamente la
connettività da un terzo host verso l’indirizzo comune consultando le tabelle ARP.
9
4
Configurazione software e hardware degli host: analisi a
livello rete
4.1
Scopo
Lo scopo di questa seconda esercitazione è ripetere alcune esperienze svolte durante l’esercitazione precedente, osservando le PDU che vengono generate a seguito dei comandi utente.
Grazie all’uso di analizzatori di protocollo software, o sniffer, si potranno osserverare le sequenze di PDU scambiate dagli host al seguito di comandi utente. Grazie alla possibilità delle
schede Ethernet di attivare la modalità promiscua, E’ possibile da una stazione osservare tutte
le PDU che vengono ricevute dal livello fisico dal terminale, indipendentemente se destinate
al terminale stesso o meno a livello collegamento. Questo permette quindi di osservare la
sequenza di PDU che vengono trasmesse/ricevute sulla LAN.
Nota: per motivi di sicurezza, per poter attivare la cattura di pacchetti in modalità
promiscua, è necessario avere i privilegi di amministratore di sistema (root in UNIX). E’
necessario ricordare che l’abuso nell’uso di sniffer può violare il diritto alla riservatezza dei
dati e pertanto è perseguibile legalmente. Pertanto si consiglia di non usare queste capacità
in reti operative di cui non si hanno le autorizzazioni per l’uso di tali mezzi.
4.2
Documentazione disponibile
• Ethereal home page
http://www.ethereal.com
• RFC sourcebook
http://www.networksorcery.com/enp/
• Manuali dei comandi route, nmap
http://www.telematica.polito.it/mellia/corsi/05-06/Laboratorio/doc/route.html http://www.telematica.po
06/Laboratorio/doc/nmap.html
4.3
Descrizione dell’esercitazione
Il tempo atteso richiesto è circa 20 ore.
4.3.1
Analisi di base.
Lo scopo di questa prima parte della esercitazione è prendere confidenza con Ethereal, il
programma di cattura PDU. Lo sniffer viene lanciato mediante il comando
ethereal &
(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 (eth0 o eth1). Da un host,
si lanci il comando ping verso un altro host della propria sottorete. Dopo alcuni secondi, si
clicchi su STOP per fermare l’operazione di cattura. Sulla finestra principale del programma,
10
comparirà la lista completa dei pacchetti catturati. Cliccando su ciscuno di essi, sarà possibile
verificare il contenuto a livello di frame Ethernet, pacchetto IP, ICMP, o qualunque altro tipo
di protocollo riconosciuto dal programma di cattura.
Si faccia ora il ping da un host agli altri due dell’isola contemporaneamente, usando due
finestre con interpreti dei comandi.
Per poter distingure i pacchetti trasmessi da un terminale o dall’altro, è possibile usare
dei filtri. Esistono due tipi di filtri in Ethereal:
• filtri di cattura
• filtri di visualizzazione.
I filtri di cattura vengono attivati direttamente durante la cattura delle PDU. Se la PDU
appena ricevuta non passa il filtro di cattura, questa verrà scartata e non verrà mostrata. La
sintassi dei filtri di cattura è specificata dalla libreria libpcap. Essa è di fatto uno standard
per programmi di cattura, che pertanto permettono tutti di specificare dei filtri di cattura
secondo la stessa sintassi. Per una descrizione dei filtri di cattura possibili, fare riferimento
al manuale di tcpdump.
I filtri di visualizzazione permettono di mostrare solo le PDU già catturate che soddisfano il
filtro impostato. La sintassi dei filtri di visualizzazione è diversa da quella dei filtri di cattura,
in quanto propria di Ethereal. Una descrizione dei filtri di visualizzazione è disponibile sul
manuale di Ethereal. Inoltre risulta molto utile usare i filtri di visualizzazione per evidenziare
PDU particolari, per esempio usando colori diversi.
1. Si descrivano i filtri in cattura per selezionare solo i pacchetti che coinvolgono due host.
2. Si descrivano i filtri in visualizzazione per selezionare solo i pacchetti che coinvolgono
due host.
3. Si descrivano i filtri per colorare di colore differente i pacchetti ICMP Echo request e
ICMP Echo reply.
4. Mediante i risultati riportati dallo sniffer, si disegni l’incapsulamento 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 web01.polito.it (130.192.73.1) from 130.192.9.142 : X(Y) bytes of data.
Z bytes from 130.192.73.1: icmp_seq=0 ttl=253 time=3.3 ms
quale è il significato preciso dei valori X,Y e Z? Rispetto a quanto identificato senza
l’uso dell’analizzatore di protocolli, cosa è stato possibile identificare in aggiunta?
6. Verificare il tipo di protocollo di livello collegamento (IEEE 802.3 o Ethernet II) viene
usato per comunicare tra i diversi host.
11
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 un ping, mentre si è attivata la cattura su un altro terminale.
1. Descrivere lo scambio di messaggi che avvengono mediante un diagramma spazio-tempo.
Eseguire la prova per almeno 70 secondi.
Per i pacchetti ARP-request e ARP-reply, quali sono gli indirizzi MAC di destinazione?
2. Si utilizzi una dimensione dei pacchetti di ICMP pari a 1,10,100,5000 bytes. 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 ECHO REQUEST/REPLY, numero di tentativo di
ping, dimensione del pacchetto di ping (1,10,100,5000)
3. Nel caso la dimensione del pacchetto ping sia impostato a 1, vengono indicate tutte le
informazioni che normalmente vengono esposte con il ping di default? Perché?
4. Si descriva come avviene la frammentazione a livello IP nel caso in cui si dia il comando:
ping -s 5000
5. Se si perde connettività tra due host a causa dell’interruzione del cavo, durante un ping,
cosa succede?
6. Se si perde connettività a causa di un guasto tra due host a causa del cambiamento
temporaneo di indirizzo dell’interfaccia, durante un ping, cosa succede? Se il guasto
dura meno di 5 secondi? Più di 5 secondi? Oltre 60 secondi?
7. Come viene calcolato il Round Trip Time (RTT) mediante il comando ping? Mostrare
un caso in cui il RTT del primo pacchetto ICMP del ping sia chiaramente superiore a
quello calcolato tramite i successivi pacchetti e spiegarne il motivo.
8. E’ possile calcolare la velocità del collegamento tra due host appartenenti ad una stessa
subnet usando il comando ping?
Suggerimento: considerare un modello di trasmissione delle PDU in cui siano presenti
il tempo di trasmissione, il tempo di propagazione, il tempo di elaborazione. Quali di
questi è legato alla capacità del canale? Come variano al variare della dimensione della
PDU? Cosa succede se si supera la MTU con conseguente frammentazione di PDU a
livello IP? Disegnare un diagramma che riporti sulle ordinate i diversi valori di RTT
ottenuti rispetto a diversi valori di dimensione di PDU. Si faccia variare la dimensione
della PDU fino al valore massimo possibile.
12
9. E’possibile identificare un host che, avendo attivato la cattura di pacchetti con un programma di PDU, ha la scheda ethernet in modalità promiscua? Suggerimento: essendo
in modalità promiscua, la scheda di rete non applica alcun filtro a livello ethernet.
Cosa succede se si imposta manualmente un indirizzo MAC errato evitando di usare il
protocolla ARP?
10. Ripetere il punto Sec. 3.3.5 della esercitazione precedente, mostrando lo scambio dei
pacchetti coinvolti.
4.4
4.4.1
Cattura e analisi di protocolli di livello trasporto/applicazione
Protocollo TCP
Lo scopo di questa parte della esercitazione è analizzare protocolli di livello trasporto, ed
in particolare TCP. Tale protocollo offre un servizio affidabile, offre un servizio orientato
alla connessione di tipo full-duplex, effettua controllo di flusso, controllo di errore, controllo
di congestione. Di seguito sono proposte diverse esercitazioni che evidenziano i meccanismi
implementati da TCP per realizzare le funzioni di sopra.
A Analisi servizio echo.
Il servizio echo è un semplicissimo servizio di livello applicativo che replica tutti i caratteri che vengono ricevuti. Esso opera, se abilitato, sulla porta 7. Per attivarlo, usare il
comando
telnet <host> echo
Il comando telnet esegue sulla macchina locale un programma di terminale remoto, che
tenta di aprire una connessione verso l’host host. Se presente il secondo parametro
indica la porta del servizio a cui si intende collegarsi. Se non diversamente specificato,
il comando aprirà una connessione verso la porta 23 assegnata al servizio telnet di terminale remoto. Nell’esempio di sopra, viene invece specificato di aprire una connessione
verso la porta legata al servizio echo, che il sistema operativo traduce nella well-known
port 7. Questo avviene tramite la consultazione del file di configurazione presente in
/etc/services. Suggerimento: provare a visualizzare tale file e a riconoscere alcuni servizi
e rispettive well-known port.
1. Spiegare analizzando una traccia il funzionamento del servizio echo. Identificare le
fasi di apertura della connessione tramite il Three-way handshake, di scambio dati,
e di chiusura della connessione stessa.
2. Come avviene la selezione dei numeri di sequenza? Come avviene la selezione delle
porte? Commentare brevemente il significato dei campi di della PCI del protocollo
IP e del protocollo TCP. E’ possibile multiplare più sessioni contemporaneamente?
Perché?
3. Come/quando avviene la trasmissione dei caratteri digitati verso il server? Disegnare la distribuzione della dimensione del payload TCP, calcolandone la media e
distinguendo la direzione della comunicazione.
13
4. Verificare cosa avviene nel caso in cui la sessione viene interrotta dall’utente, oppure
il servizio diventa non più accessibile. Per interrompere la connessione occorre
avvisare il programma telnet tramite la pressione dei tasti CTRL+]. In questo
modo il programma telnet non invierà più i caratteri digitati usando la connessione
TCP verso il server, e sarà possibile uscire dal programma stesso usando il comando
quit.
Per disabilitare il servizio, occorre fare riferimento alla configurazione del processo
xinetd che controlla quali servizi sono attivi sull’host. Per modificare la configurazione dello stesso, occorre agire sui file di configurazione in /etc/xinetd.d/nomeservizio.
Una volta modificate le configurazioni, istruire il processo a rileggere le stesse
tramite il comando
killall -HUP xinetd
5. Come vengono generati e trasmessi gli ACK di TCP? Valutare il numero di segmenti confermati da ACK, distinguendo tra le due direzioni.
6. Come vengono gestiti i numeri di sequenza? Visualizzare e commentare il grafico
temporale dei numeri di sequenza, della lunghezza dei segmenti trasmessi e delle
finestre in ricezione.
B Analisi servizio chargen
Il servizio chargen è un semplice servizio il cui scopo è trasmettere una sequenza infinita
di caratteri. Quando viene contattato il server, esso inizia a trasmettere verso il client
una sequenza di caratteri, scartando qualunque dato venga trasmesso dal client.
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 comunicazione.
3. E’ possibile multiplare più sessioni contemporaneamente? Perché?
4. Verificare cosa avviene nel caso in cui: i)la sessione viene interrotta dall’utente, ii)
il servizio diventa non più accessibile.
5. Valutare il numero di segmenti confermati da ack, distringuendo tra le due direzioni.
6. Visualizzare e commentare il grafico temporale dei numeri di sequenza, della lunghezza dei segmenti trasmessi e delle finestre in ricezione nei casi precedentemente
elencati.
7. Nel caso si interrompa la sorgente tramite la pressione dei tasti CTRL+] e la
si faccia riprendere premendo il tasto Enter, visualizzare 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 e commentare sulla necessità di
adottarli entrambi. Cosa potrebbe succedere se venisse usato solo uno dei due
meccanismi?
C Analisi protocollo telnet
14
1. Avviare lo sniffer e connettersi da un host ad un altro mediante il comando
telnet <host>
2. Eseguire il comando cat /etc/services e terminare la connessione.
3. Spiegare, durante la fase di negoziazione delle opzioni, quali opzioni vengono negoziate e chi vince la negoziazione. Suggerimento: attivare la modalità di debug
della fase di option processing. Come vengono 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, calcolandone media
e varianza e distinguendo: i) la direzione della comunicazione, ii) le fasi di option
negoziation, login e user commands.
6. Spiegare la metodologia da utilizzare per catturare username e password in una
sessione telnet che coivolge due altri host. Quali filtri possono essere impostati
in ethereal per catturare il minimo numero di pacchetti per automatizzare tale
processo?
7. Verificare cosa avviene nel caso in cui: i) la sessione viene interrotta dall’utente,
ii) il servizio diventa non più accessibile, iii) il telnet viene fatto su una porta non
utilizzata da alcun servizio.
8. E’ possibile multiplare più sessioni contemporaneamente? Perché?
9. Come varia il TOS durante le sessioni telnet?
10. Valutare il numero di segmenti confermati da ACK, distringuendo tra le due
direzioni.
11. Visualizzare e commentare il grafico temporale dei numeri di sequenza, della lunghezza dei segmenti trasmessi e delle finestre in ricezione.
12. Si effettui uno studio quantitativo dell’overhead dovuto all’incapsulamento, nelle
fasi di option negotiation, login e user commands. Nello specifico, si definiscano le
quantità e se ne tracci l’andamento:
overhead =
totallenght − payloadlength
totallenght
rendimento =
payloadlength
totallenght
13. Quale relazione lega overhead e rendimento? Scendendo ad un ulteriore livello
di dettaglio, si quantifichino (graficamente e/o tabularmente) i contributi portati all’overhead dall’incapsulamento nei vari livelli dello stack protocollare (i.e.
a quanto ammonta l’overhead Ethernet, IP, TCP, TELNET) nelle differenti fasi
precedentemente elencate.
D Analisi protocollo ftp
1. Si esegua una sessione FTP per scaricare un file da un host remoto.
15
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 comunicazione.
4. Cosa avviene se il trasferimento del file viene interrotto?
5. E’ possibile multiplare più sessioni contemporaneamente? Perché?
6. Visualizzare e commentare il grafico temporale dei numeri di sequenza, della lunghezza dei segmenti trasmessi e delle finestre in ricezione.
7. Si ripeta l’analisi quantitativa dell’overhead dovuto all’incapsulamento, 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/o tabulari ottenuti.
8. Come cambia il comportamento del protocollo se si usa o meno la modalità passiva
di download, dis/attivabile tramite il comando passive una volta completato il
login?
4.4.2
Analisi del comando nmap
Il comando nmap è stato progettato per permettere ad amministratori di sistemi e/o curiosi
di effettuare scan di intere reti per determinare quali host siano attivi e quali servizi siano
da essi offerti. nmap supporta un larghissimo numero di metodi di analisi, che si basano sia
su UDP che su TCP. Il programma è molto completo e complesso allo stesso tempo. Non è
scopo di questa parte di esercitazione capire tutti i meccanismi usati. Si consiglia tuttavia di
leggere il manuale di nmap per capire come sia possibile abusare del normale funzionamento
dei protocolli per scopi diversi. Si ricorda altresı̀ le implicazioni legali di tali abusi.
1. Effettuare lo scan di un servizio attivo e uno inattivo di un host usando il comando
nmap <host> -p 7,199
Analizzare la traccia corrispondente, evidenziando le diverse fasi dello scan.
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 presentate.
3. Effettuare lo scan di i) un host e ii) di una intera rete. Come il programma effettua la
scansione delle porte? Rapresentare graficamente la 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 scansione è cosı̀ lenta? Quante volte
viene analizzata una porta? Perché? Suggerimento: limitare il range di porte analizzate
per accelerare il test.
16
5
Misure di prestazioni
5.1
Scopo
Lo scopo di questa esercitazione è valutare la differenza di prestazioni tra hub e switch, e
verificare i meccanismi di controllo di congestione adottati da TCP.
Tramite la creazione di flussi dati scambiati tra i PC di un isola, verranno proposte diverse
configurazioni, in cui sarà possibile osservare gli impatti di diversi fenomeni che possono
verificarsi nelle reti dati, quali per esempio fenomeni di congestione, di collisione, di perdita
pacchetti etc.
Lo strumento per la misura delle prestazioni adottato è il comando nttcp, evoluzione del
comando ttcp. Esso permette di attivare dei trasmettitori e dei ricevitori a livello applicazione
che trasferiscono predeterminate quantità di dati usano a livello trasporto procotollo TCP o
UDP. Il programma misura
il goodput ottenuto durante il trasferimento, ovvero la quantità di dati ricevuti dal ricevitore per unità di tempo, al netto di overhead e ritrasmissioni. Per eseguire un test, lanciare
su una macchina il comando nttcp con l’opzione server, ovvero eseguire
nttcp -i
Il server resterà attivo fino a che non si preme CTRL+C, e attende connessioni sulla porta
5037. Sulla macchina client, eseguire il comando
nttcp -T -n <Numero>
-l <Lunghezza> IP_ADDR_SERVER
La macchina client a questo punto inizierà un trasferimento di Numero buffer di lunghezza
Lunghezza, e al termine mostrerà il goodput misurato. Se non specificati, Numero=2048 Byte
e Lunghezza=4096 Byte, per un totale di 8MByte di dati. L’output del programma indica
diverse misure, come mostrato sotto. La prima riga corrisponde alle misure effettuate dal
terminale locale, mentre la seconda alle stesse ottenute dal terminale remoto.
root@3[~]# nttcp -T 10.0.0.4
Bytes Real s
CPU s Real-MBit/s CPU-MBit/s
l 8388608
0.01
0.01
5655.5591
8389.6567
r 8388608
0.01
0.01
5500.2757 13421.7728
5.2
Calls Real-C/s
2048 172593.97
2049 167937.05
CPU-C/s
256032.0
409800.0
Analisi del comando nttcp
1. Spiegare analizzando una traccia il funzionamento del protocollo usato dal comando
nttcp. Identificare le fasi di apertura della connessione tramite il Three-way handshake,
di scambio dati, e di chiusura della connessione stessa.
2. Disegnare la distribuzione della dimensione del payload TCP, calcolandone la media e distinguendo la direzione della comunicazione. Valutare il numero di segmenti
confermati da ACK, distringuendo tra le due direzioni.
3. Si effettui un confronto tra il goodput riportato dall’applicazione e quello medio ricavabile a partire dalle tracce ethereal. Quale definizione di goodput ritenete sia la più
opportuna ?
17
5.3
Impatto delle topologie e degli apparati di livello 2 sulle prestazioni.
Lo scopo di questa esercitazione è valutare l’impatto degli apparti di rete di livello 2 e dei
meccanismi di controllo di congestione adottati dal protocollo TCP. Nel seguito verranno
proposte diverse configurazioni. Per ognuna di esse, ripetere la prova 5 volte e riportare i
valori medi ottenuti.
A - Flusso singolo monodirezionale - HUB
Effettuare un test usando un HUB per interconnettere i calcolatori. Attivare un flusso
tra l’host A e l’host B. Provare a vedere come cambiano le prestazioni nel caso di
download o di upload (opzioni -r e -t rispettivamente).
Che goodput viene ottenuto se si usa il protocollo TCP?
Che goodput viene ottenuto se si usa il protocollo UDP (opzione -u)?
Ci sono state perdite di collisioni? Perché?
Ci sono state perdite di pacchetti? Perché?
B - Flusso singolo monodirezionale - SWITCH
Sostituire l’HUB con uno switch di livello 2. Attivare un flusso tra l’host A e l’host B
e rispondere alle stesse domande di prima. Attenzione: lo switch ha capacità a livello
fisico di 100Mbit/s, quindi 10 volte più veloce. Assicurarsi che la prova abbia quindi
una durata sufficientemente lunga da permettere delle misure accurate.
C - Flusso singolo bidirezionale - HUB
Effettuare un test usando un HUB per interconnettere i calcolatori. Attivare un flusso
tra l’host A e l’host B e contemporaneamente attivare un flusso tra l’host B e l’host
A. Attenzione: che cosa succede se non si cambiano le porte del server e del client
se si usa il protocollo TCP? E se si usa il protocollo UDP? Assicurarsi che la prova
sia abbastanza lunga affinché i due flussi siano contemporaneamente attivi. Provare a
vedere come cambiano le prestazioni nel caso di download o di upload (opzioni -r e -t
rispettivamente).
Che goodput viene ottenuto se si usa il protocollo TCP?
Che goodput viene ottenuto se si usa il protocollo UDP (opzione -u)?
Ci sono state perdite di collisioni? Perché?
Ci sono state perdite di pacchetti? Perché?
D - Flusso singolo bidirezionale - SWITCH
Sostituire l’HUB con uno switch di livello 2. Attivare un flusso tra l’host A e l’host B
e contemporaneamente attivare un flusso tra l’host B e l’host A. Rispondere alle stesse
domande di prima, confrontando attentamente i risultati ottenuti usando UDP o TCP
a livello trasporto.
E - Due flussi monodirezionali verso un unico ricevitore - HUB
Effettuare un test usando un HUB per interconnettere i calcolatori. Attivare un flusso
tra l’host A e l’host B e contemporaneamente attivare un flusso tra l’host C e l’host
18
B. Provare a vedere come cambiano le prestazioni nel caso di download o di upload
(opzioni -r e -t rispettivamente).
Che goodput viene ottenuto se entrambi i flussi usano usa il protocollo TCP?
Che goodput viene ottenuto se entrambi i flussi usano usa il protocollo UDP?
Che goodput viene ottenuto se un flusso usa il protocollo UDP e l’altro usa il protocollo
TCP? Che cosa succede? Ci sono problemi di equità?
Ci sono state perdite di pacchetti? Perché?
F - Due flussi monodirezionali verso un unico ricevitore - SWITCH
Effettuare lo stesso test usando uno switch per interconnettere i calcolatori. Che cosa
succede usando il protocollo UDP? Ci sono state perdite di pacchetti? Che cosa è
cambiato rispetto ai casi precedenti?
Che goodput viene ottenuto se un flusso usa il protocollo UDP e l’altro usa il protocollo
TCP? Che cosa succede? Ci sono problemi di equità?
G - Due flussi monodirezionali generati da un unico trasmettitore - HUB
Effettuare un test usando un HUB per interconnettere i calcolatori. Attivare un flusso
tra l’host A e l’host B e contemporaneamente attivare un flusso tra l’host A e l’host C.
Che cosa succede adesso?
Che goodput viene ottenuto se un flusso usa il protocollo UDP e l’altro usa il protocollo
TCP? Che cosa succede? Ci sono problemi di equità?
H - Due flussi monodirezionali generati da un unico trasmettitore - SWITCH
Effettuare lo stesso test usando uno switch per interconnettere i calcolatori. Che cosa
succede adesso? Ci possono essere delle perdite di pacchetti? Perché?
I - Tre flussi bidirezionali - HUB
Effettuare un test usando un HUB per interconnettere i calcolatori. Attivare un flusso
tra ogni coppia di calcolatori. Che cosa succede? Quale goodput vi apettate? Sono
state rispettate le vostre previsioni?
Che cosa succede se si usa UDP? Ci possono essere delle perdite di pacchetti o delle
collisioni?
L - Tre flussi bidirezionali - SWITCH
Effettuare lo stesso test usando uno switch per interconnettere i calcolatori. Quale
goodput sarà possibile ottenere? Le previsione che avete fatto sono corrette? Che cosa
succede adesso? Ci possono essere delle perdite di pacchetti? Perché?
Riassumere i risultati precedenti in nella tabella 1:
5.3.1
Controllo di congestione
Configurare la proria isola connettendo un PC ad uno switch, a sua volta collegato ad un
hub a cui sono collegati gli altri terminali dell’isola. Ripetere le prove ai punti E e G, ove il
ricevitore (trasmettitore) sia l’host collegato allo switch. Che cosa succede se si trasmettono
i dati usando il protocollo TCP o UDP? Disegnare la topologia, mostrando il carico offerto
sui canali e le percentuali di perdite di pacchetti sugli stessi nodi.
19
Prova
A
B
C
D
E
F
G
H
I
L
Goodput TCP
Goodput UDP
Collisioni?
perdite
Tabella 1: Riassunto prestazioni
6
Configurazione rete mediante routing statico
6.1
Scopo
Lo scopo di questa esercitazione è apprendere le conoscenze di base riguardanti la configurazione del routing IP. Si affronteranno problematiche di routing usando solo configurazioni
statiche, ovvero in assenza di protocolli e algoritmi automatici di instradamento.
Verranno proposte configurazioni in cui diverse topologie logiche saranno configurate usando la stessa topologia fisica. Sarà quindi possibile analizzare l’impatto della topologia sulle
prestazioni di rete.
Tra le diverse configurazioni, verranno create situazioni errate in cui saranno presenti
configurazioni parziali che possono essere corrette tramite messaggi ICMP-redirect e loop di
instradamento. Infine, verrà configurata la possibilità di accedere ad Internet tramite un
router che svolgerà anche funzione di Network Address Translation (NAT). L’esercitazione
permetterà di completare anche l’analisi dei protocolli, grazie alla possibilità di raggiungere
server reali in rete geografica.
Il tempo atteso richiesto è circa 10 ore. Si noti che per il buon esito dell’esercitazione è
necessario un buon coordinamento tra le isole.
Per lo svolgimento di questa esercitazione, occorre configurare i PC a disposizione come
Router IP. Sarà necessario utilizzare più di una interfaccia per personal computer, in modo
da poter creare reti diverse interconnesse a livello rete.
Al fine di abilitare il forwarding di pacchetti a livello IP, occorre configurare 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
20
6.3
Configurazione instradamento statico intra-isola
Sfruttando i tre Personal Computer a disposizione in ogni isola, configurare le interfacce a
disposizione in modo da evidenziare gli effetti di configurazioni parziali o errate.
6.3.1
ICMP-redirect
1. Configurazione router errata
Si spieghi la configurazione necessaria per evidenziare l’attivazione di messaggi di ICMPredirect all’interno della stessa isola. Come fa un router a capire che deve mandare un
redirect? Quali condizioni devono essere 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’esterno avvenga senza ICMP
redirect.
• ICMP-Redirect
La comunicazione tra un qualunque host dell’isola e l’esterno avvenga, se possibile,
sempre con ICMP redirect
Spiegare con un esempio come avviene il forwarding di un pacchetto diretto fuori dalla
isola, nel caso in cui ci sia ICMP redirect e non, evidenziando lo scambio dei pacchetti
e specificando gli indirizzi a livello Ethernet e IP. Quali sono i vantaggi e gli svantaggi
dovuti alla presenza di ICMP redirect?
3. Analisi topologia lineare con due router
• Due Router
Configurare due host dell’isola come router in modo da mostrare eventualmente il
decremento totale del TTL di un pacchetto IP dovuto alla presenza di un anello
nell’instradamento. Spiegare la configurazione e mostrare il fenomeno. Se non è
possibile osservarlo, spiegarne il motivo.
• Due router e un host.
Configurare due host dell’isola come router in modo da mostrare eventualmente il
decremento totale del TTL di un pacchetto IP dovuto alla presenza di un anello
nell’instradamento. Utilizzare un terzo host come generatore di PDU. Spiegare la
configurazione e mostrare il fenomeno. Se non è possibile osservarlo, spiegarne il
motivo.
4. Conclusioni
Quando si osserva un fenomeno di ICMP redirect? Spiegare il fenomeno mediante un
semplice diagramma spazio-temporale.
Spiegare il contenuto delle routing tables (minime) nel caso in cui:
21
• 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 è interconnettere le varie isole per poter accedere alla rete
Internet tramite un router/nat.
Si consideri lo schema della rete del laboratorio come rappresentato in Figura 1.
I=2
I=3
I=4
I=1
Interfaccia X del router:
IP: 130.192.71.201/24
DNS:130.192.71.39
Default gw: 130.192.71.17
X
I=5
Rete geografica
6.4.1
Topologia a stella
Si consideri una rete in cui è presente un backbone che interconnette tutte le isole, e un router
di accesso collegato ad Internet. A livello fisico, tutti i PC saranno collegati ad un unica LAN
tramite HUB. A livello logico invece, ogni isola è una rete, con indirizzi come da Tabella 1.
Un PC dell’isola sarà collegato al backbone (logico), rete 10.0.0.0/24. Il router di default per
uscire su rete geografica ha interfaccia 10.0.0.1, mentre una seconda interfaccia lo collegherà
verso la rete Internet. In figura 1 è mostrata l’interfaccia del router di accesso X, e tutte le
isole con la relativa numerazione.
Si configurino il minimo numero di interfacce presenti su un isola, seguendo il piano di
indirizzamento indicato in Tabella 2:
• Disegnare la topologia logica e fisica della rete.
22
Isola
1
2
3
4
5
Rete privata
192.168.1.0/29
192.168.2.0/29
192.168.3.0/29
192.168.4.0/29
192.168.5.0/29
Interfaccia sul backbone
10.0.0.1/24
10.0.0.2/24
10.0.0.3/24
10.0.0.4/24
10.0.0.5/24
Router accesso
10.0.0.1/24
10.0.0.1/24
10.0.0.1/24
10.0.0.1/24
10.0.0.1/24
Tabella 2: Piano di indirizzi
• Descrivere le configurazioni di rete e di routing, sia degli host che dei router convolti, necessarie per garantire la connettività bidirezionale tra 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 esplicitamente ai colleghi!)
nel laboratorio e si spieghi la metodologia utilizzata. Come riesco a capire quale è 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 (che non 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?
mediante il comando netstat.
Si verifichi lo stato delle perdite e ritrasmissioni
• Utilizzare traceroute per verificare il percorso seguito dai pacchetti. Si mostrino alcuni
esempi significativi.
• Come varia il TTL a seconda della destinazione dentro la rete del laboratorio?
6.4.4
Prestazioni per traffico uniforme
Nel caso in cui il traffico sia uniforme secondo la matrice riportata in Tabella 2, dove X è
la velocità del flusso, si calcoli approssimativamente il numero medio di router che vengono
attraversati, e si individui il carico sui principali link 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 è la velocità del flusso, si calcoli il numero medio di router
che vengono attraversati, e si individui il carico sui principali link e router.
23
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 3: 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 4: Matrice di traffico sbilanciato
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 Internet? Quali riconfigurazioni sono
necessarie per ristabilire la connessione con le altre isole?
6.4.7
Conclusioni
Quali sono i vantaggi e svantaggi di questa topologia? In termini di affidabilità ?
6.5
Topologia ad anello con routing distanza minima
Mantenendo il piano di numerazione identico a quello utilizzato per la rete privata in ogni
isola nel caso di topologia logica a stella, si configuri (coordinandosi 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 dei router convolti,
necessarie garantire per la connettività tra le isole e con la rete geografica Internet.
• Utilizzare traceroute per verificare il percorso seguito dai pacchetti. Si mostrino alcuni
esempi significativi.
• Si ripeta la domanda sulle prestazioni per traffico uniforme.
• Si ripeta la domanda sulle prestazioni per traffico sbilanciato.
24
• Se uno dei link del router di accesso ad Internet si guastasse, che riconfigurazioni sono
necessarie per ristabilire la connessione con Internet? Basta una riconfigurazione locale
sull’isola che ha perso il link con il router di accesso?
6.6
Topologia ad anello con routing unidirezionale
Si configuri la rete ad anello in modo da forzare un trasferimento sempre in senso orario dei
pacchetti da un’isola all’altra.
Si ripetano le domande poste nella topologia ad anello con routing a minima distanza, in
cui l’ultima domanda sia sostituita dalla seguente:
• Se uno dei link del router di accesso ad Internet si rompesse, che riconfigurazioni sono
necessarie per ristabilire la connessione con Internet?
• Basta una riconfigurazione locale sull’isola che ha perso il link con il router di accesso?
6.7
6.7.1
Analisi di protocolli a livello geografico
Analisi del comando traceroute
Spiegare l’output del programma traceroute, ad esempio quando si verifica la connettività
con www.stanford.edu, o 171.64.10.77 o con un altro sito a 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 è pari all’interfaccia di ingresso o di uscita di un router?
Come è possibile saperlo?
Spiegare possibili limiti di traceroute nell’identificare il routing verso un host. Perché
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. Perché di tale regole?
6.7.2
Analisi del comando ping “Record route”
Utilizzare l’opzione “Record route” del comando ping per evidenziare il percorso verso www.polito.it,
o 130.192.73.1.
Che differenza c’è tra usare ping e traceroute verso la medesima destinazione? Quali
sono i vantaggi e gli svantaggi di ciascun protocollo?
Se possibile, individuare tutte le interfacce coinvolte nel routing dei pacchetti 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 fisicamente vicini siano raggiunti da percorsi
completamente diversi? Mostrare un esempio.
6.7.3
Analisi del protocollo DNS
Per configurare il servizio DNS occorre editare il file
/etc/hosts
aggiungendo l’indicazione del server DNS che si intende usare. Per esempio
25
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 sarà 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 altro sito fuori dall’Europa).
Verificare lo scambio di messaggi a livello DNS e confrontare con quelli ricavabili mediante il
comando dig. Ripetere la prova più volte.
Spiegare la filosofia di politiche di load balancing basate sul DNS: quali siti la utilizzano?
6.7.4
Analisi del protocollo HTTP
Descrivere il protocollo HTTP nel caso in cui ci si connetta ad una pagina web semplice (ad
esempio, http://www.tlc-networks.polito.it/mellia/corsi/05-06/laboratorio/)
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?
26
7
Protocolli di routing dinamico
7.1
Scopo
Gli obiettivi di questo laboratorio sono quelli di studiare il funzionamento di protocolli di
routing dinamico, quali RIP e OSPF. Dopo aver appreso le configurazione di base di questi
protocolli, si evidenzieranno le differenze tra di loro, e verranno proposti possibili problemi
che si possono verificare negli scenari gestiti da questi protocolli.
7.2
Configurazione di base
Progettare una rete anello con i PC a disposizione nell’isola di lavoro come quella illustrata
nella Figura 7.1 per il caso di tre PC. Separare le ret anche a livello di topologia fisica.
Rete A
H1
H3
Rete B
Rete C
H2
1. Scegliere gli indirizzi IP e la maschera di ciascuna rete in modo da minimizzare lo spreco
di indirizzi, immaginando che circa 100 host siano 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 la comunicazione
tra tutte le reti; nel caso in cui ci sia più di un modo per raggiungere una rete, aggiungere
tutte le route possibili con la relativa distanza (metrica) misurata in numero di hops.
3. Verificare il raggiungimento di tutti gli indirizzi usando tutte le strade a disposizione
(Suggerimento: usare la opzione -I del comando ping per selezionare le interfacce).
4. Iniziare un ping verso una interfaccia che sia raggiunta attraverso un altro router (ovvero
l’interfaccia da raggiungere non sia in consegna diretta). Togliere il cavo corrispondente
al link dell’anello attraverso il quale sta avvenendo il ping.
(a) Quali problemi compaiono?
(b) Come si può ristabilire la connettività?
(c) Quanto tempo avete impiegato per ristabilire la connettività completa tra gli host?
7.3
Il protocollo RIP
Verrà ora introdotto l’uso di protocolli di routing dinamico basati su distance vector. Dopo
aver analizzato la parte iniziale di cold start, verrà analizzata la gestione dei guasti da parte
di questa famiglia di protocolli.
27
1. Nella rete precedente eliminare la configurazione di routing statico e configurare il routing dinamico prima usando il protocollo RIP versione 1 e dopo la versione 2. Catturare
il traffico dall’inizio della configurazione 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 tipo ethereal? Descrivere il filtro di visualizzazione.
(b) Come vengono fatti gli annunci della tabella di routing in ciascuna versione?
(c) Quali indirizzi IP vengono usati per distribuire le tabelle di routing? 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 raggiungimento di tutti gli
indirizzi della rete, iniziare un ping verso una interfaccia che sia raggiunta attraverso
un altro router (ovvero tramite consegna indiretta). Togliere il cavo corrispondente al
link 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 la connetività?
(c) Come si possono mappare questi messaggi del ping con gli stati della routing table?
7.4
Il protocollo OSPF
Verranno ora riproposti punti della precedente esercitazione usando protocolli di routing
basati su Link State, quali OSPF.
1. Nella rete precedente eliminare il routing RIP e configurare il routing dinamico usando
il protocollo OSPF.
(a) Come si può visualizzare questo protocollo con uno sniffer tipo ethereal? Come
viene incapsulato (TCP, UDP, altro)? Descrivere il filtro di visualizzazione.
(b) Come vengono fatti gli annunci dello stato di links? Quali indirizzi IP vengono
usati per distribuirli ? Che tipo di indirizzi sono?
(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 un ping verso
una interfaccia che sia raggiunta attraverso un altro router (ovvero tramite consegna
indiretta). Togliere il cavo corrispondente al link 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 la connetività? Cosa
significano?
28