Descrizione dell`esercitazione

Transcript

Descrizione dell`esercitazione
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
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
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
8
8
9
a
.
.
.
.
.
.
.
.
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 . . . . . . . . . . . . . . . .
11
11
11
11
12
13
15
15
19
5 Misure di prestazioni
21
5.1 Scopo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.2 Configurazione della scheda di rete . . . . . . . . . . . . . . . 22
5.3 Analisi del comando nttcp . . . . . . . . . . . . . . . . . . . . 23
5.4 Impatto delle topologie e degli apparati di livello 2 sulle prestazioni. 23
5.4.1 Controllo di congestione . . . . . . . . . . . . . . . . . 26
5.5 Emulazione di reti geografiche . . . . . . . . . . . . . . . . . . 28
2
5.5.1 Emulare ritardi rete . . . . . . . . . . . . . . . .
5.5.2 Perdita di pacchetti . . . . . . . . . . . . . . . .
5.6 Verifica del funzionamento dell’emulazione . . . . . . . .
5.7 Impatto dei ritardi sulle prestazioni del protocollo TCP
5.8 Prestazioni di Streaming Video . . . . . . . . . . . . . .
5.8.1 Configurazione Streaming su UDP . . . . . . . .
5.8.2 Configurazione Streaming su TCP . . . . . . . .
5.9 Confronto prestazioni UDP/TCP . . . . . . . . . . . . .
5.10 Impatto della probabilitá di perdita . . . . . . . . . . .
5.11 Impatto della capacitá del canale . . . . . . . . . . . . .
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. . . . .
6.4.7 Conclusioni . . . . . . . . . . . . . . . . .
6.5 Topologia ad anello con routing distanza minima
6.5.1 Configurazione . . . . . . . . . . . . . . .
6.6 Topologia ad anello con routing unidirezionale . .
6.7 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
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
28
29
29
29
30
31
32
33
33
33
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
34
34
34
34
35
36
36
37
37
38
38
39
39
39
39
39
40
40
40
40
41
.
.
.
.
42
42
42
43
44
1
Introduzione
Questa è una raccolta di esercitazioni da svolgere durante il corso di Laboratorio di Protocolli. Sono descritte 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 esperienze. Ciascuna esperienza
può richiedere diverse ore, per cui non vi è nessuna corrispondenza tra la
divisione dei laboratori e le settimane di corso.
Per lo svolgimento del corso, gli studenti hanno a disposizione i PC del
LAIB, switch e cavi di rete. I PC dovranno fare il boot da CD fornito
dal docente, sul quale è stata installata una versione di Linux con tutti gli
applicativi necessari per poter effettuare le esercitazioni.
Esiste tutta una serie di documentazione on line, e online all’indirizzo
http://www.tlc-networks.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.
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 Sistema
Operativo Linux.
• tre cavi UTP
• 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 richiamate 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,
kwrite, ...). 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/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 è capire i meccanismi di configurazione di host
e router IP, provando a creare delle reti locali. I PC a disposizione verranno
connessi tramite switch, 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/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 è consentito l’uso di analizzatore di protocolli 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: nel
caso sia presente una porta denominata di UPLINK, non utilizzarla.
1. Si disegni la topologia corrispondente sia a livello fisico che a livello
collegamento.
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 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
ifconfig -a
Quale delle informazioni a disposizione riuscite a capire? 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 raggiungibili 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 -c 10
Per verificare quale scheda di rete risulta collegata allo switch e i relativi
parametri di livello fisico è 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 è il significato preciso dei valori X,Y e Z ? Che cosa indica i
campi icmp seq, ttl e time?
7
3.3.3
Verifica modalità di funzionamento consegna diretta
1. 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 è possibile determinare il nuovo massimo range di
indirizzi 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 broadcast?
4. 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.
5. Il comando netstat -i fornisce delle informazioni ridondanti rispetto
a quelle di ifconfig. Quali sono?
6. Il comando netstat -r fornisce delle informazioni ridondanti rispetto
a quelle di route. Quali sono?
Il comando netstat -r -c fornisce delle informazioni ridondanti rispetto a quelle di route. Quali sono?
7. Spiegare brevemente tutte le opzioni di ifconfig, ping, route e
netstat utilizzate finora.
8. Descrivere la configurazione corrente del proprio host, commentando 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 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 deve creare
una PDU Ethernet contenente come SDU la PDU IP. Come indirizzo MAC,
l’host dovrà inserire quello del terminale remoto. Per poter conoscere tale
8
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. 3.3.1. Dopo aver eseguito dei
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 sia di ARP-reply, quali sono
gli host che aggiornano le tabelle di ARP, spiegando la metodologia
adottata. Quali altre possibilità ci sono per la gestione dei messaggi
di ARP da parte degli host? Quali sono i vantaggi e svantaggi di tali
soluzioni?
3. Si provi a contattare un host inesistente appartenente alla propria
sottorete e verificare il risultato a video e il contenuto delle ARP tables.
4. Si provi a contattare un host inesistente non appartenente alla propria
sottorete e verificare il risultato a video e 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.
Il comando date visualizza l’ora del PC e può essere utile per la
misurazione.
3.3.5
Configurazioni di indirizzamento atipiche e sbagliate
1. 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. Cosa succede se gli host che hanno lo
stesso indirizzo contattano il terzo host?
2. Si configurino due host in modo che un host A veda l’host B come
appartenente alla medesima sottorete ma non viceversa. Verificare la
connettività 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’indirizzo
10.1.0.255/23. Si verifichi la connettività reciproca tra i due host. Cosa
succede in questo caso? Che indirizzo usa A per B ? Che indirizzo usa
B per A?
10
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 a livello applicazione dati dall’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 usati. Grazie
alla possibilità delle schede Ethernet di attivare la modalità promiscua, è
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, administrator in Windows). È 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
• 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 è circa 20 ore.
11
4.3.1
Analisi di base.
Lo scopo di questa prima parte della esercitazione è prendere confidenza
con Wireshark, il programma di cattura e analisi pacchetti. Lo sniffer viene
lanciato 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 (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, 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.
Nota: Wireshark ha abilitato di default la traduzione degli indirizzi numerici in nomi logici. Per evitare confusione, si consiglia di disabilitare tale
funzionalità. Dal menu, selezionare la voce View, quindi Name Resolution
e disabilitare la voce Enable MAC layer.
Al fine di poter selezionare quali pacchetti si intende visualizzare e analizzare, esistono due tipi di filtri in Wireshark:
• 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 cattura vengono applicati
al momento della cattura dei pacchetti. I pacchetti che non superano il
filtro, non saranno catturati, e pertanto non saranno visualizzati.
I filtri di visualizzazione invece permettono di mostrare solo le PDU comunque catturate che soddisfano il filtro impostato. La sintassi dei filtri
12
di visualizzazione è diversa da quella dei filtri di cattura, in quanto propria
di Wireshark. Una descrizione dei filtri di visualizzazione è disponibile sul
manuale di Wireshark. Inoltre risulta molto utile usare i filtri di visualizzazione 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 che
coinvolgono due host. Avendo catturato tutti i pacchetti che sono stati
trasmessi, possono apparire infatti pacchetti non dovuti al comando
ping digitato.
2. Si descrivano i filtri in visualizzazione per selezionare solo i pacchetti
che coinvolgono due host.
3. Si descrivano i filtri per colorare in modo 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 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 è 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.
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 è attivata la cattura su un altro terminale.
13
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. 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.
3. 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)
4. 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è?
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. È 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 questi tempi 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.
14
8. È 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 nelle tabelle ARP
evitando di usare il protocollo ARP?
9. 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 accedere al servizio, occorre
• attivare il relativo servizio sul server
• usare una applicazione su un client che usi il servizio offerto dal
server
Per abilitare il servizio sul server, occorre fare riferimento alla configurazione del processo inetd che controlla quali servizi sono attivi
sull’host. Per modificare la configurazione dello stesso, occorre agire
sui file di configurazione /etc/inetd.conf. Si ricorda che per poter
modificare la configurazione dei servizi attivi sul sistema, occorre avere
i permessi di root. Modificare quindi la configurazione di ogni terminale a disposizione affinché risultino attivi i servizi echo e chargen.
Una volta modificate le configurazioni, occorre far partire il processo
inetd 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 terminale remoto, che tenta di aprire una connessione TCP 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? Attenzione:
Wireshark usa la numerazione relativa e non assoluta! Come
avviene la selezione delle porte? Commentare brevemente il significato dei campi di della PCI del protocollo IP e del protocollo
TCP. È possibile multiplare più sessioni contemporaneamente?
Perchè?
3. Come vengono generati e trasmessi gli ACK di TCP? Valutare il
numero di segmenti confermati da ACK, distinguendo tra le due
direzioni.
4. 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.
5. 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.
16
Per rendere inaccessibile il servizio, fermare il demone inetd con
il comando
/etc/init.d/inetd stop
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. È 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
1. Avviare lo sniffer e connettersi da un host ad server mediante il
comando dopo aver abilitato il servizio telnet su server.
17
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 Wireshark 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. È 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 =
18
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.
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. È 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.
19
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.
20
5
Misure di prestazioni
5.1
Scopo
Lo scopo di questa esercitazione è valutare la differenza di prestazioni tra
TCP e UDP 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. Esso permette di attivare dei trasmettitori e dei ricevitori a livello applicazione che trasferiscono predeterminate quantità di dati usando
a livello trasporto protocollo TCP o UDP. Il programma misura il goodput
ottenuto durante il trasferimento, ovvero la quantità di dati ricevuti dal
ricevitore per unità di tempo a livello applicazione, 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. La porta TCP
utilizzata per rispondere alle richieste è la 5037. Verificare con il comando
netstat -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 specificati, Numero=2048 e Lunghezza=4096 Byte, per un totale di 8MByte di
dati.
-u permette di usare UDP a livello trasporto, mentre l’opzione -r permette di attivare un flusso dati dal server al client (ricezione dati invece che
trasmissione dati).
La macchina client inizierà un trasferimento di Numero blocchi dati generati
dall’applicazione ciascuno di lunghezza Lunghezza. Al termine del trasferimento verrà mostrato il goodput misurato. 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 misurate dal
terminale remoto.
21
root@3[~]# nttcp -T 10.1.0.4
Bytes Real s
CPU s Real-MBit/s CPU-MBit/s
l 8388608
0.01
1.01
83.5591
8389.6567
1 8388608
0.01
1.01
83.2757 13421.7728
5.2
Calls Real-C/s
CPU-C/s
2048 172593.97 256032.0
2049 167937.05 409800.0
Configurazione della scheda di rete
I PC del laboratorio sono dotati di moderne schede di rete che implementano funzionalità avanzate di offloading della CPU. In particolare, alcune
delle funzionalità che dovrebbero essere eseguite dai livelli TCP/UDP e IP
sono invece implementate nella schede ethernet. Ad esempio, il calcolo del
CRC TCP può non essere fatto dalla CPU (che cosı̀ rimane libera per altri
compiti) e essere poi completato dalla scheda di rete prima di trasmettere il
segmento. Tra le funzionalità offerte dalle schede di rete, vi è il TCP SEGMENTATION OFFLOADING - TSO per cui la segmentazione dei messaggi
di livello applicazione viene implementata dalla scheda di rete.
Per verificare quali funzionalità siano offerte ed attive sulla scheda di
rete, 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 è possibile imporre la velocità del livello fisico che la
scheda di rete può supportare usando il comando
ethtool -s ethX speed N
[duplex half|full]
[autoneg on|off]
ove N è la velocità in MB/s
Per questa esercitazione
• Disabilitare tutte le funzionalità di offloading eventualmente presenti
sulla scheda
• Impostare una velocità di trasmissione di 10Mb/s
• Impostare una modalità FULL duplex quando si vuole considerare la
presenza di uno SWITCH
• Impostare una modalità HALF duplex quando si vuole considerare la
presenza di un HUB
22
5.3
Analisi del comando nttcp
1. Spiegare analizzando una traccia il funzionamento del protocollo usato
dal comando nttcp. Identificare tutte le connessioni utilizzate, e per
ciascuna, identificare le fasi di apertura della connessione tramite il
Three-way handshake, di scambio dati, e di chiusura della connessione
stessa.
2. Che impatto hanno i parametri Numero e Lunghezza? Se Numero=1000
e Lunghezza=10000 o se Numero=100000 e Lunghezza=100 che cosa
cambia? Se si usa UDP al posto di TCP che impatto hanno i due
parametri? Come scegliere Lunghezza affinchè non ci sia mai frammentazione a livello IP?
3. [Opzionale] 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, distinguendo tra le due direzioni.
4. [Opzionale] Si effettui un confronto tra il goodput riportato dall’applicazione e quello medio ricavabile a partire dalle tracce Wireshark.
Quale definizione di goodput ritenete sia la più opportuna ?
5.4
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 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 mediati
sulle prove fatte.
Considerando gli scenari di cui sotto, rispondere alle seguenti domande
riassumendo i risultati nelle tabelle in fondo. Prima di effettuare il test,
provare a predire il risultato che si attende. Che cosa si verifica di diverso
rispetto a quanto predetto? Perché?
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 più flussi attivi, che goodput ci si aspetta per un
flusso usa il protocollo TCP e per uno che usa il protocollo UDP?
4. Ci possono essere collisioni? Perchè? Qual è la probabilità di collisione? Suggerimento: utilizzare il comando ifconfig per verificare la
presenza di collisioni e il loro numero.
5. Ci possono essere perdite di frame a livello collegamento? Perchè?
6. Ci possono essere perdite di dati a livello applicazione? Perchè?
A - Flusso singolo monodirezionale - HALF DUPLEX
Impostare la modalità HALF duplex sulle schede di rete. 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.
B - Flusso singolo monodirezionale - SWITCH
Ripetere quanto sopra usando una modalità FULL duplex sulle schede
di rete
C - Flusso singolo bidirezionale - HALF DUPLEX
Impostare la modalità HALF duplex sulle schede di rete. Attivare un
flusso tra l’host A e l’host B e contemporaneamente attivare un flusso
tra l’host B e l’host A. Assicurarsi che la prova sia abbastanza lunga
affinchè i due flussi siano contemporaneamente attivi.
Per attivare due flussi in modo contemporaneo è utile combinare più
comandi 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 modalità FULL duplex sulle schede
di rete
24
E - Due flussi monodirezionali verso un unico ricevitore - HALF
DUPLEX
Impostare la modalità HALF duplex sulle schede di rete. Attivare un
flusso tra l’host A e l’host B e contemporaneamente attivare un flusso
tra 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 modalità FULL duplex sulle schede
di rete
G - Due flussi monodirezionali generati da un unico trasmettitore
- HALF DUPLEX
Impostare la modalità HALF duplex sulle schede di rete. 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 se un flusso usa UDP e uno usa TCP?
H - Due flussi monodirezionali generati da un unico trasmettitore
- SWITCH
Ripetere quanto sopra usando una modalità FULL duplex sulle schede
di rete
I - Tre flussi bidirezionali - HALF DUPLEX
Impostare la modalità HALF duplex sulle schede di rete. 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
Ripetere quanto sopra usando una modalità FULL duplex sulle schede
di rete
Riassumere i risultati precedenti in nella tabella 1:
25
Prova
Goodput TCP
prev.
oss.
Collisioni
prev. oss.
Perdite
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 un
link a 100Mb/s FULL DUPLEX mentre il PC B e C sono connessi usando
10Mb/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 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.
26
Prova
Goodput UDP
prev.
oss.
Collisioni
prev. oss.
Perdite
prev. oss.
A
B
C
D
E
F
G
H
I
L
Tabella 2: Riassunto prestazioni con flussi UDP
Prova
Goodput TCP
prev.
oss.
Goodput UDP
prev.
oss.
Collisioni
prev. oss.
Perdite
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 ritardo
nella trasmissione dei pacchetti ed emulare una certa probabilità di perdita
dei pacchetti stessi. Per questo scopo, Linux offre una gestione avanzata
delle code di uscita che sono presenti davanti alle interfacce di trasmissione.
Il comando che permette di gestirle si chiama tc, e permette di gestire
funzioni di gestione delle code molto avanzate. La sintassi generica è
tc qdisc <add|change|del> dev <ethX> root netem delay <D>ms loss <l>%
Il comando permette di aggiungere/modificare/togliere un elemento di
emulazione di rete alla scheda ethX in cui i pacchetti siano ritardati di D ms
e di cui l % verrà scartato.
5.5.1
Emulare ritardi rete
In questo semplice esempio si aggiunge un ritardo fisso pari a 100ms a tutti
i 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 mostrerà un RTT superiore a 100 millisecondi. Attenzione: il ritardo è limitato dalla risoluzione
orologio del kernel (Hz). Sulla maggior parte dei sistemi moderni basati su
kernel 2.6, l’orologio di sistema funziona a 1000Hz, che consente ritardi in
incrementi di 1ms.
Per emulare un ritardo non costante (tipico delle reti geografiche) è
possibile aggiungere una variazione casuale:
tc qdisc change dev eth0 root netem delay 100ms 10ms
Ciò causa il ritardo aggiunto con media 100ms e distribuito in [90,110]ms.
Ancora, è possibile introdurre una correlazione nel ritardo dei pacchetti:
tc qdisc change dev eth0 root netem delay 100ms 10ms 25%
Ciò causa il ritardo aggiunto con media 100ms e distribuito uniformemente in [90,110]ms. Il successivo pacchetto avrà un ritardo pesato in cui
il 25% dello stesso sarà pari a quello del pacchetto precedente (D(n+1)=
0.25D(n)+0.75Random)
Ultimo, è 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, paretonormal.
5.5.2
Perdita di pacchetti
Specificando un valore diverso da 0 al parametro l è possibile impostare una
probabilità di perdita di pacchetti. Il valore è specificato in percentuale.
tc qdisc change dev eth0 root netem loss 0.1%
Ciò corrisponde ad una perdita media di un pacchetto ogni 1000. Anche
in questo caso è possibile aggiungere una correlazione opzionale. Questo può
essere utile per emulare le perdite di pacchetti in burst.
tc qdisc change dev eth0 root netem loss 0.3% 25%
Questo farà sı̀ che il 0.3% dei pacchetti venga perso, ed la probabilità
di perdere il pacchetto successivo dipende da un quarto dalla probabilità di
aver 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 subiscano
un ritardo medio di 100ms distribuito secondo una gaussiana con deviazione
standard 10ms e probabilità di perdita di 3%. Usando il comando ping, verificare il corretto funzionamento del testbed. Riportare in un grafico la densità di probabilià del ritardo misurata. Per fare il grafico, raccogliere almeno
1000 campioni di ritardo (suggerimento: usare l’opzione -i 0.1 per accelerare la raccolta dei dati), quindi ordinare i dati raccolti in ordine crescente
tramite 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 all’aumentare del Round Trip Time (RTT) medio tra trasmettitore e
ricevitore? Riportare in un grafico i valori osservati facendo variare il
29
RTT medio nell’intervallo [0,500]ms. Ripetere le prove più volte per
verificare eventuali effetti casuali.
Che cosa cambia se il ritardo è presente sul link del trasmettitore? Sul
link del ricevitore? Metà sul link del trasmettitore e metà sul link del
ricevitore?
2. Come varia il goodput di una connessione TCP al variare della probabilità di perdita di pacchetti dati? Riportare in un grafico i valori
osservati facendo variare la probabilità di perdita media nell’intervallo [0,0.1]. Ripetere le prove più volte per verificare eventuali effetti
casuali.
3. Come varia il goodput di una connessione TCP al variare della probabilità di perdita di pacchetti ACK? Riportare in un grafico i valori
osservati facendo variare la probabilità di perdita media nell’intervallo [0,0.1]. Ripetere le prove più volte per verificare eventuali effetti
casuali.
4. Ripetere la prova in presenza di RTT di 200ms e 400ms. Cosa cambia?
5. Provare a cambiare l’algoritmo di controllo di congestione implementato dal protocollo TCP usando TCP-RENO, HTCP e CUBIC. Per
fare 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 da
http://www.videolan.org/vlc. VLC è un player che permette la riproduzione e la trasmissione di contenuti multimediali. Il programma è in grado
30
di gestire i più diffusi formati audio e video, fra cui: MPEG-4, H.264, MP3,
AAC. La distribuzione di Ubuntu utilizzata durante le esercitazioni contiene
già una copia preinstallata di VLC. Per lanciare l’interfaccia grafica di VLC,
è sufficiente digitare da terminale il comando
vlc
In questa fase utilizziamo VLC per trasmettere/ricevere un video. In
particolare, l’applicazione è basata su un’architettura client-server. Il server
trasmette il video a un client che lo riceve e lo riproduce sullo schermo. Sia
il server che il client vengono gestiti con il comando vlc.
VLC mette a disposizione due meccanismi per la trasmissione di video
basati sul protocollo TCP o UDP. Vengono di seguito riportate le operazioni
per 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> è l’indirizzo di multicast al qual il client è iscritto e <local port> è la porta del client associata all’applicazione. Se
l’indirizzo di multicast non viene specificato, il client si registra all’indirizzo
di unicast attualmente in uso. Nel nostro caso, si configura il client ad usare la porta 1234 e l’indirizzo di unicast attualmente in uso (configurato in
precedenza tramite il comando ifconfig):
vlc udp://:1234
A questo punto viene aperta automaticamente l’interfaccia grafica di VLC
e il client è pronto a ricevere il flusso.
Verificare con il comando netstat -n -u -p lo stato dei socket UDP
attualmente in uso.
Per far partire la trasmissione, occorre configurare il server tramite il
comando:
vlc <video> ":sout=#std{access=udp,mux=ts,dst=<multicast ip>[:<local port>]}" --loop
dove <video> è il file contenente il video che si vuole trasmettere (specificare il path completo), <multicast ip> è l’indirizzo di multicast al quale
sono registrati i client e <local port> é la porta utilizzata dai client per
ricevere il video. L’opzione --loop forza il server a trasmettere il video in
31
maniera continua. Ai fini dell’esercitazione, utilizziamo il video contenuto
nella cartella Videos e l’indirizzo unicast del client. Ad esempio, se si vuole
trasmettere 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 é correttamente configurato e il video viene riprodotto dal client.
5.8.2
Configurazione Streaming su TCP
In questa parte bisogna configurare prima il server e poi il client. Inizialmente si configura il server tramite il comando:
vlc <video> ":sout=#std{access=http,mux=ts,dst=<server address>:<port>}" --loop
dove <video> é il file contenente il video da trasmettere, <server address>
é l’indirizzo IP del server e <port> é la porta del server associata all’applicazione. 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, si
utilizza 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 TCP
attualmente in uso.
Come passo successivo, si fa partire il video dal client tramite il seguente
comando:
vlc http://<server address>[:<server port>]/[<file>]
dove <server address> é l’indirizzo IP del server, <server port> é la porta del server associata all’applicazione e <file> é il nome del file che si vuole
ricevere. Ad esempio, se si esegue il comando:
vlc http://192.168.10.1:8080
é possibile ricevere e visualizzare tutto il flusso video proveniente dal server
con indirizzo IP 192.168.10.1 e porta 8080.
Verificare con il comando netstat -n -t -p lo stato dei socket TCP
attualmente in uso.
32
5.9
Confronto prestazioni UDP/TCP
Configurare il sistema in modo che i pacchetti uscenti dall’host subiscano un
ritardo medio di 200ms. Impostare un rate di 10Mb/s tramite il comando
ethtool. Eseguire lo streaming per il caso UDP e poi per quello TCP.
Catturare il traffico in entrambi i casi. Verificare con Wireshark i protocolli
utilizzati e commentare la traccia osservata nei due casi.
Plottare su un grafico la variazione temporale della dimensione del pacchetto nei due casi. Plottare anche l’Inter Packet Gap. Come variano i
due andamenti? Suggerimento: usare le funzionalità di Wireshark per fare
grafici che si trovano nel menu Statistiche-¿ IO Graphs.
5.10
Impatto della probabilitá di perdita
Ripetere il punto precedente variando anche la probabilitá di perdita ploss
fra 0% e 10%.
Riportare su un grafico la variazione del numero di frame persi al variare della probabilitá di perdita (il numero di frame persi si ricava in VLC
da Strumenti/Informazioni Media/Statistiche). Per la misura considerare
una durata del video di almeno 3 minuti. Che differenze ci sono fra la
trasmissione su UDP e quella su TCP? Perché?
5.11
Impatto della capacitá del canale
Impostare a la scheda di rete del canale fra server e switch a 100Mb/s full
duplex, mentre lasciare invariato a 10Mb/s il canale fra switch e client.
Introdurre del traffico TCP in background tramite il comando nttcp durante
la trasmissione dello streaming video.
Plottare su un grafico l’andamento dei frame persi al variare del numero
di flussi di background, considerando i casi TCP e UDP. Come cambia la
qualitá del video ricevuto? Perché?
33
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
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.
34
6.3.1
ICMP-redirect
1. Configurazione router errata
Si spieghi la configurazione necessaria per evidenziare l’attivazione di
messaggi di ICMP-redirect 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.
35
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:
• 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
Interfaccia X del router:
I=1
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
36
PC saranno collegati ad un unica LAN. 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.1.0.0/24. Il router di default per uscire su
rete geografica ha interfaccia 10.1.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:
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.1.0.1/24
10.1.0.2/24
10.1.0.3/24
10.1.0.4/24
10.1.0.5/24
Router accesso
10.1.0.1/24
10.1.0.1/24
10.1.0.1/24
10.1.0.1/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 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? Si verifichi lo stato delle perdite e
ritrasmissioni 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. 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.
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 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.
• 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.
39
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). È 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
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 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/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 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.
42
(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.
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
Wireshark ? 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?
43
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
Wireshark ? 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?
44