soluzioni - Dipartimento di Informatica

Corso di Laurea in Informatica
Prova Scritta di Reti di Calcolatori
9 luglio 2014
Consegnare l’elaborato non oltre 60 minuti dalla distribuzione del testo. Non è consentito
l’uso di appunti, libri o lucidi.
Nome:
Cognome:
Matricola:
Esercizio 1. Un file di 10MB deve essere trasmesso da un elaboratore A ad un
elaboratore B collegati da un canale punto-punto (eventualmente virtuale). Il processo di
trasmissione termina quando lʼintero file è stato trasferito da A a B. Si assuma che:
1. il canale che collega A e B abbia Round Trip Time RTT = 100 ms,
2. il file sia trasmesso frammentato in pacchetti di 50KB ciascuno,
3. stabilire la comunicazione fra A e B comporti un overhead dovuto ad un handshake
iniziale Thandshake = 2RTT
4. il ritardo di frammentazione del file è trascurabile (i.e. 0) e non vi sono ritardi di
accodamento,
5. non si verificano errori durante la trasmissione.
Calcolare la latenza di trasferimento del file (i.e., il tempo totale Ttot necessario a trasferire
il file da A a B) nei seguenti 2 casi:
a) lʼampiezza di banda del canale è BW = 100Mbps e i pacchetti di dati possono essere
inviati uno dopo lʼaltro, senza attendere alcun acknowledgment;
b) lʼampiezza di banda del canale BW = ∞ ed i pacchetti vengono trasmessi con il
meccanismo chiamato “slow-start” in intervalli di 1 RTT. Quindi la trasmissione dei
pacchetti procede secondo la progressione: handshake, 1 pacchetto, nel 1º RTT 2
pacchetti, nel 2º RTT 4 pacchetti, nel 3º RTT 8 pacchetti, e così via fino alla
trasmissione del'intero file.
Risposta
a) Per definizione L = RdP + RdT + Q. Possiamo assumere Q = 0 in virtù dellʼipotesi 4.
Calcoliamo il RdP. Per definizione RdP = distanza/velocità della luce, che non sono note,
ma è noto lʼRTT; poichè sappiamo che l'RTT = 2RdP possiamo calcolare l' RdP = RTT/2 =
50ms; questo ritardo si applica allʼintero file, dato che la frammentazione è a costo 0 e in
questo caso non si attendono acknowledgments ai pacchetti prima di trasmettere (e quindi
è come se si trasferisse un unico oggetto di 10MB).
Poichè il nostro file deve essere tramesso frammentato in pacchetti di 50KB, calcoliamo il
numero di frammenti N da trasmettere:
N = 10MB/50KB = 10 x 220 x 23b / 50 x 210 x 23b = 210/5 = 1024/5 = 204.8
Pertanto il file di 10 MB verrà trasmesso utilizzando un totale di 205 pacchetti, 204 dei
quali avranno dimensione 50KB e l'ultimo avrà dimensione pari a 8/10 di 50KB, cioè 40KB.
Calcoliamo ora l'RdT di ciascun frammento. Per definizione RdT = size/bandwidth, quindi
l'RdT di ciascun frammento (RdTf) sarà:
RdTf = 50KB/100Mbps = 5 x 10 x 210 x 23b/102 x 106bps = 5 x 213/10 x 106s = 213/(2 x 106)s
= 212 x 10-6s = 4096µs
Quindi il tempo necessario a trasmettere tutti i frammenti sarà
Tfrags = RdTf x 204 + (8/10)RdTf = = (4096 x 204 + (8x4096/10))µs = 838860.8µs ≈ 0.84s
e il tempo totale Ttot di trasmissione del file sarà
Ttot = Thandshake + Tfrags + RdP = 200ms + 0.84s + 50ms = (0.2 + 0.84 + 0.05)s = 1.09s
b) Il meccanismo di slow start comporta che i pacchetti vengano trasmessi come segue:
handshake, 1 pkt, RTT, 2 pkts, RTT, 4 pkts, RTT, 8 pkts, RTT,…,RTT, 2npkts
Dopo n RTT dallʼhandshake saranno stati trasmessi un numero di pacchetti pari a
Npkts = 1 + 2 + 4 + 8 + 16 + … + 2n = 20 + 21 + 22 + 23 +...+ 2n = 2n+1 - 1.
Poiché nel nostro caso il file deve essere trasmesso frammentato in Nfrag = 205 pacchetti
(cf. esercizio a) ed ogni pacchetto ha RdT = 0 (dato che in questo caso BW = ∞, RdT =
size/BW si può assumere uguale a 0), occorreranno 7 RTT per trasmettere 205 pacchetti.
Infatti, per n = 7 si possono trasmettere fino a 28-1 = 255 pacchetti, mentre in 6 RTT ne
vengono trasmessi 27-1 = 127. Pertanto 205 – 127 = 78 pacchetti dovranno essere
trasmessi nel 7º RTT ed impegneranno una porzione di quel RTT che contribuirà a
determinare il valore Ttot. Si deve perciò calcolare la percentuale di questo RTT che sarà
impegnata dalla trasmissione dei 78 pacchetti. Cioè si tratta di calcolare la proporzione
78/255 = x/100 => x = 7800/255 = 30.5882352941176. Questo risultato indica che circa il
30% del settimo RTT sarà usato per la trasmissione dei pacchetti rimanenti. Quindi,
tenendo conto che la trasmissione del primo pacchetto è praticamente a costo 0 dato che
BW = ∞, il tempo totale sarà:
Ttot = (Thandshake + 6RTT + 30% RTT)ms = (200 + 6x100 + 30)ms = 830ms
Esercizio 2. Due nodi, collegati da un canale lungo 4600km (D), eseguono il protocollo
Automatic Repeat Request (ARQ), conosciuto anche come stop-and-wait.
1. Calcolare il ritardo di propagazione RdP unidirezionale per questo canale assumendo
che la velocità della luce su di esso sia VdL = 2.3 x 108m/s.
2. Indicare un valore di timeout plausibile da utilizzare nell’esecuzione del protocollo ARQ.
3. Spiegare perchè, non ostante il timeout, sia ancora possibile che, in assenza di perdita
di frame (sia dati che acknolwledgement), il timeout termini dopo la trasmissione di una
frame ed il protocollo ARQ la ritrasmetta.
Risposta:
1. Ritardo di propagazione unidirezionale:
RdP = D/VdL = 4.6 x 103 x 103m / 2.3 x 108 m/s = 2 x 10-2 s = 0.02s
2. Poichè il round trip time RTT è uguale al doppio del RdP calcolato al punto 1, i.e. RTT
= 0.04s, un valore di time-out plausibile potrebbe essere il doppio del RTT, cioè
0.08s. Valori inferiori, ma pur sempre maggiori del RTT, sono anche accettabili
dipendentemente da quanto varia il RTT nel tempo.
3. RdP, da cui discende il valore del timeout scelto, non tiene conto di eventuali ritardi
introdotti dal destinatario (p.e., dovuti a processing dell’informazione ricevuta, o al fatto
che il destinatario è impegnato in esecuzioni che gli impediscono di trasmettere
immediatamente l’acknowledgment previsto dal protocollo ARQ).
Esercizio 3. Il campo Sequence Number nel protocollo TCP è di 32 bit e consente di
identificare univocamente più di 4 miliardi di byte di dati. Quindi, in teoria è possibile che lo
stesso numero di sequenza venga utilizzato più volte per identificare byte diversi trasmessi
sulla medesima connessione. Anche se è improbabile che un numero così grande di byte
venga trasmesso in una singola connessione, perché TCP consente che i numeri di
sequenza possano ripetersi nell’intervallo [232 - 1; 0]?
Risposta: in TCP, i numeri di sequenza in un trasferimento dati non iniziano da 0 ma da
un valore casuale (generato all’interno dell’intervallo indicato nel testo dell’esercizio) per
minimizzare la probabilità che un numero di sequenza di una nuova connessione sia
confuso con quello ancora circolante di una connessione terminata (in modo sia normale
sia anormale) che utilizzava lo stesso port# della nuova.