Questo sito viene visualizzato meglio in un browser che supporti gli ultimi web standards, ma e' accessibile a ogni browser o applicativo Internet.

Eserciziario di Reti di Calcolatori

Università degli Studi di Padova, a.a. 2004-05, prof. Satta

Capitolo 1

Esercizio #1 tema d'esame del 20.07.04

Testo:
Si consideri una rete a 10Mbps con 2 switch intermedi. Ciascun link ha un ritardo di propagazione Δp pari a 15μs. Ciascun switch è di tipo store-and-forward, ed inizia ad inoltrare un pacchetto 30μs (Δr) dopo la sua completa ricezione. Si devono trasmettere 15000 bit utilizzando tale rete. Rispondere alle seguenti domande, discutendo i passaggi intermedi.
(a) Calcolare la latenza dal primo bit inviato all’ultimo bit ricevuto, nel caso tutti i bit siano inviati in un singolo pacchetto;
(b) Calcolare la latenza come nel caso (1a), considerando 3 pacchetti di 5000 bit ciascuno;
(c) Calcolare la latenza come nel caso (1b), assumendo che la sorgente debba attendere un pacchetto di acknowledgment di 40 bytes prima di inviare ciascun pacchetto successivo.

Soluzione:
Caso (a):
Conviene osservare l’ultimo bit dei 15000 del messaggio che si vuole trasmettere: così facendo si può produrre il seguente schema temporale

t=0 -> il primo bit entra nel canale
t=Δt -> è il tempo che devo aspettare affinché tutti i bit entrino nel canale di comunicazione:
a questo istante entra nel canale l’ultimo bit
t=Δt + Δp -> l’ultimo bit arriva al primo switch (che d’ora in poi chiameremo sw1).
A questo punto il buffer di memoria di sw1 è pieno
t=Δt + Δp + Δr = t1 -> il primo bit che compone il pacchetto parte dal buffer di sw1
t= t1 + Δt -> parte anche l’ultimo bit dal buffer di sw1
t= t1 + Δt + Δp -> l’ultimo bit del pacchetto entra nel buffer del secondo switch (d’ora in poi sw2)
t= t1 + Δt + Δp + Δr = t2 -> il primo bit che compone il pacchetto parte dal buffer di sw2
t= t2 + Δt -> anche l’ultimo bit esce dal buffer di sw2
t= t2 + Δt + Δp -> l’ultimo bit del pacchetto arriva all’host B

In totale quindi la latenza è

L = 3(Δt + Δp) + 2Δr

Ora calcolo Δt ricordando che la banda è B= 10 Mbps e che voglio inviare 15000 bit

Δt = quantità_dati_da_trasmettere * 1/B = 15 * 103 bit * 1/ 107 bit/sec = 15 * 10-4 sec = 1500 μsec

Complessivamente quindi la latenza nel caso (a) vale:

L = 3(Δt + Δp) + 2Δr = 4605 μsec

Confrontando i valori di Δt, Δp, 2Δr si può rilevare che in questo caso il collo di bottiglia è la banda, in quanto all’aumentare della disponibilità di banda (B) il valore Δt diminuisce proporzionalmente.

Caso (b)
Prima di iniziare a risolvere questo caso è conveniente fare ulteriori considerazione sullo switch di tipo store-and-forward: c’è da annotare infatti che quando tale switch sta svuotando il proprio buffer di memoria è consentito comunque ricevere dati e immagazzinarli nel buffer (si può immaginare che la memoria sia implementata con un buffer circolare). Così il primo pacchetto riempie il buffer e incomincia ad essere processato dallo switch per un tempo pari a Δr: in questo tempo (nel nostro caso Δr=30 μsec) un’altra parte del buffer incomincia ad essere riempita con i bit appartenenti al secondo pacchetto trasmesso, e quindi quando l’ultimo bit del primo pacchetto lascia il buffer, il buffer stesso è già occupato da tutto il secondo pacchetto che è anche già stato processato, in quanto lo svuotamento del buffer dovuto all’uscita del primo pacchetto è durato Δt + Δr tempo.
Osservo il comportamento dell’ultimo bit dell’ultimo pacchetto da inviare (cioè del terzo):

t=0 -> il primo bit del primo pacchetto entra nel canale
t=3Δt -> l’ultimo bit dell’ultimo pacchetto entra nel canale:
l’ultimo bit infatti deve aspettare che partano tutti i bit dei pacchetti precedenti
t=3Δt + Δp -> l’ultimo bit arriva al primo switch (che d’ora in poi chiameremo sw1).
t=3Δt + Δp + Δr = t1 -> il primo bit che compone l’ultimo pacchetto parte dal buffer di sw1
t= t1 + Δt -> parte anche l’ultimo bit dal buffer di sw1
t= t1 + Δt + Δp -> l’ultimo bit del pacchetto entra nel buffer del secondo switch (d’ora in poi sw2)
t= t1 + Δt + Δp + Δr = t2 -> il primo bit che compone l’ultimo pacchetto parte dal buffer di sw2
t= t2 + Δt -> anche l’ultimo bit dell’ultimo pacchetto esce dal buffer di sw2
t= t2 + Δt + Δp -> l’ultimo bit dell’ultimo pacchetto (il terzo) arriva all’host B

In totale quindi la latenza

L = 5Δt + 3Δp + 2Δ

Ora calcolo Δt, che sarà differente da quello del precedente caso (a), infatti la banda vale B= 10 Mbps ma non ho più un flusso unico di dati da 15000 bit, bensì 3 pacchetti da 5000 bit ciascuno.

Δt = quantità_dati_pacchetto * 1/B = 5 * 103 bit * 1/ 107 bit/sec = 5 * 10-3 sec = 500 μsec

Complessivamente quindi la latenza nel caso (b) vale:

L = 5Δt + 3Δp + 2Δr = 2605 μsec

La trasmissione di questo messaggio spezzato in tre pacchetti è più veloce rispetto a quella del caso (a) proprio perché ho spezzato il messaggio in pacchetti e non in un unico pacchetto: diminuire la dimensione dei pacchetti allora è stata la scelta vincente, dovuta all’innesco del meccanismo di parallelismo dello switch di tipo store-and-forward.

Caso (c)
A causa dell’attesa dovuta all’ acknowledgment (d’ora in poi abbreviato con ACK) non è più sfruttabile il parallelismo rilevato nel caso (b).
Scomponiamo il problema in due problemi minori
Per prima cosa vediamo quanto tempo impiega un pacchetto per essere trasmesso dall’host A all’host B: questa problematica è già stata risolta nel caso (a). Il tempo impiegato per questo passaggio è

L = 3(Δt + Δp) + 2Δr.

C’è da notare però che rispetto al caso (a) si deve considerare un diverso Δt poiché siamo in presenza di pacchetti di dimensione minore. In questo caso Δt vale 500 μsec, quindi la latenza di un pacchetto è:

L = 3(Δt + Δp) + 2Δr = 1605 μsec

Il secondo problema è il calcolo della latenza dell’ACK una volta consegnato all’host B il primo pacchetto. Anche l’ACK impiega un tempo pari a L = 3(Δt + Δp) + 2Δr per fare il percorso inverso, cioè da host B a host A. In questo caso il parametro Δt vale:

Δt = quantità_dati_ACK * 1/B = 40 * 8 bit * 1/ 107 bit/sec = 32 μsec

Allora la latenza di un ACK è

L = 3(Δt + Δp) + 2Δr = 201 μsec

Chiamiamo Lp la latenza di un pacchetto e Lack la latenza di un ACK.
Allora, sfruttando i risultati dei due problemi “minori” risolti in precedenza, si può affermare che la latenza totale nel caso della trasmissione descritta nel caso (c) è

L = 3*Lp + 2*Lack = 5217 μsec

Da notare che per calcolare la latenza totale si sommano tre volte la latenza di trasmissione di un pacchetto in quanto si vogliono trasmettere tre pacchetti, ma si sommano solo due volte le latenze degli ACK in quanto si richiede la latenza dal primo bit inviato all’ultimo bit ricevuto, e quindi non si considera il tempo di latenza dovuto all’invio dell’ACK al ricevimento del terzo ed ultimo pacchetto.
Come considerazione finale si può notare che in presenza di ACK non è conveniente spezzare i pacchetti in pacchetti di piccole dimensioni, come invece conveniva nel caso (b).

ˆtop

Esercizio # 1.5

Testo:
Calcolare il tempo totale necessario per trasferire un file di 1000 KB nei seguenti casi, ipotizzando un RTT di 100 msec, una dimensione del pacchetto di 1 KB ed un tempo iniziale utilizzato per impostare la comunicazione (“handshaking”) prima di inviare dati di durata pari a due volte RTT.
a) L’ampiezza di banda è 1.5 Mbps e i pacchetti di dati possono essere inviati uno dopo l’altro.
b) L’ampiezza di banda è 1.5 Mbps, ma dobbiamo attendere un intervallo di tempo di durata RTT dopo aver inviato un pacchetto, prima di inviare il successivo.
c) L’ampiezza di banda è “infinita”, cioè possiamo assumere uguale a zero il tempo di trasmissione, e in ciascun intervallo di tempo di durata pari a RTT si possono inviare sino a 20 pacchetti.
d) L’ampiezza di banda è infinita; durante il primo intervallo di tempo di durata pari a RTT possiamo inviare un pacchetto 21-1, durante il secondo intervallo di tempo di durata pari a RTT possiamo inviare 2 pacchetti 22-1, durante il terzo ne possiamo inviare quattro 23-1, e così via.

Soluzione:
Caso (a):
I pacchetti sono spediti uno dopo l’altro, quindi il SEND spedisce in modo continuo.La trasmissione inizia quando il primo bit entra nel canale e finisce quando l’ultimo bit esce dal canale, quindi si può riassumere quanto detto con il seguente schema temporale:

t = 2 * RTT -> handshake tra SEND e RECEIVE;
t = 2 * RTT -> il primo bit entra nel canale;
t = 2 * RTT + Δt -> è il tempo che devo aspettare affinché tutti i bit entrino nel canale di comunicazione:
a questo istante entra nel canale l’ultimo
t = 2 * RTT + Δt + (RTT / 2) -> l’ultimo bit esce dal canale: trasmissione finita.
(N.B. RTT/2 è il tempo di propagazione)

Quindi in possiamo dire che il tempo di trasmissione è pari a

2 * RTT + Δt + (RTT / 2).

Ora calcolo Δt ricordando che la banda è B = 1.5 Mbps e che voglio inviare 1000 KB

Δt = quantità_dati_da_trasmettere * 1 / B = (1 * 103 *210* 8) bit * 1/ (1.5 *106) bit/sec = 5.46 sec

Complessivamente il tempo di trasmissione è:

2 * RTT + Δt + (RTT / 2) = 200 msec + 5.46 sec + 50 msec = 5.71 sec

Caso (b):
In questo caso non abbiamo più una trasmissione continua di pacchetti, ma dobbiamo attendere un RTT dopo l’invio di un pacchetto. Bisogna comunque ricordare che la trasmissione dei dati si deve ritenere conclusa quando l’ultimo bit del file esce dal canale, di conseguenza dovendo spedire 1000 pacchetti non dobbiamo attendere 1000 RTT, ma 999 RTT, dato che l’ultimo bit arriva prima di dover attendere un ulteriore RTT. Vediamo ora come poter suddividere la nostra trasmissione:
2 * RTT + Δt + RTT/2 -> Tempo necessario per l’invio del file -> 5.71 sec (da punto a)
Sommo 999 RTT al tempo ottenuto precedentemente:

(2 * RTT + Δt + RTT/2) + 999 * RTT = 5.71 sec + 999 * 1/10 sec = 105.61 sec

Caso (c):
Devo considerare ora la banda infinita, questo significa che in questa situazione si avrà un Δt pari a zero, infatti: Δt = quantità_dati_da_trasmettere * 1 / B = quantità_dati_da_trasmettere / +∞ = 0. Tenendo conto del fatto che in un tempo pari a RTT mando 20 pacchetti, posso dedurre che si devono spedire 50 blocchi di pacchetti (per blocchi di pacchetti si intende dei pacchetti contigui) e ricevere un Acknowledgement (che da qui in poi chiamo ACK) per blocco che confermi l’avvenuta ricezione dei pacchetti trasmessi. Di conseguenza il tempo impiegato per inviare un solo ACK e pari a RTT dato che per inviare i blocchi non provoca ritardo; quindi considero solo l’invio di 49 blocchi dato che l’invio del 50-esimo blocco non mi causa perdite di tempo e mi fa terminare la trasmissione inviando l’ultimo bit. Schematicamente avviene questo:

t = 0 -> inizio trasmissione;
t = 2 * RTT -> 1° blocco nel canale;
t = 3 * RTT -> ricevo 1° ACK;
t = 3 * RTT à 2° blocco nel canale;
t = 4 * RTT -> ricevo 2° ACK;
...
t = 51 * RTT -> ricevo 49° ACK;

Riassumendo possiamo vedere che il tempo totale di trasmissione è dato da:

2 * RTT + 49 * RTT + (RTT / 2) = 51.5 RTT = 51.5 * 1/10 sec = 5.15 sec

Caso (d):
Questo caso introduce un metodo di trasmissione chiamato EXPONENTIAL BACKOFF (utilizzato da TCP) il quale consiste nell’aumentare esponenzialmente la quantità di dati trasmessa sino a quando la rete non si satura, in tal modo riesco sfruttare al massimo la rete:
1° tentativo -> 2^0 pacchetti
2° tentativo -> 2^1 pacchetti
...
n° tentativo -> 2n-1 pacchetti
quindi nel nostro caso abbiamo: 20+ 21+ 22+...+ 2n-1+2n= 2n+1 - 1 ≥ 1000 KB, per cui con n = 9 si ottiene 1023 KB ≥ 1000 KB e ciò mi da la sicurezza che tutti i pacchetti vengono inviati, inoltre mi servono 9 ACK che mi danno un ritardo pari a 9 RTT per poter completare la trasmissione.
Infine, posso scrivere:

2 * RTT + 9 * RTT + (RTT / 2) = 11.5 RTT = 1.15 sec

ˆtop

Esercizio # 1.6

Soluzione:
Caso (a)
Per prima cosa calcolo Δt ricordando che la banda è B= 10 Mbps e che voglio inviare 1,5 MB di stream dati in flusso continuo

Δt = quantità_dati_da_trasmettere * 1/B = 1,5 * 8 * 220 bit * 1/ 107 bit/sec = 1258 msec

Ora posso calcolare la latenza , considerando anche l’handshake, cioè il tempo dedicato dagli host per impostare la comunicazione:

L = handshake + Δt + Δp = 2*RTT + 1258 + RTT/2 = 1458 msec = 1,258 sec

Caso (b)
Per prima cosa troviamo il numero di pacchetti in cui devono essere spezzati i dati che si vogliono inviare:

#pacchetti = (1,5 * 220)/ (1 * 220) = 1536 pacchetti

Osserviamo ora cosa succede prendendo in esame il comportamento del primo e del secondo pacchetto inviato: il primo pacchetto viene caricato dall’host A nel canale, impiegando Δt tempo, e viene spedito; il primo pacchetto impiega Δp = RTT/2 tempo (tempo di propagazione) per raggiungere l’host B. Dopo che il primo pacchetto è partito, cioè dopo Δt, l’host A potrebbe caricare il secondo pacchetto, ma gli è impedito dall’ipotesi che l’invio di pacchetti deve essere distanziato di RTT tempo (si potrebbe pensare come se l’host B, una volta ricevuto un pacchetto da A, dovesse mandare un ACK infinitesimo, e che quindi impiegherebbe RTT/2 trascurando così la dimensione stessa dell’ACK, all’host A). Quindi nel canale di comunicazione si ha per RTT/2 trasmissione dei un pacchetto e per altri RTT/2 attesa.
Ora quindi bisogna calcolare il tempo necessario per inserire un singolo pacchetto nel canale di comunicazione:

Δt = dimensione_pacchetto * 1/B = 8 * 210 bit * 1/ 107 bit/sec = 0,819 msec = 819,2 msec

Ora consideriamo un singolo pacchetto: la sua latenza, indicata con Latenzap è la somma del tempo appena calcolato e del tempo di propagazione Δp = RTT/2

Latenzap = Δt + Δp = Δt + RTT/2 = 40,8192 msec

La trasmissione deve essere ripetuta per il #pacchetti che rappresenta il numero di pacchetti che compone il messaggio che A deve mandare a B.
Ora al tempo impiegato da ciascun pacchetto, moltiplicato per il numero di pacchetti totali che bisogna inviare, è necessario sommare RTT/2 che è il tempo che si deve attendere prima di inviare un nuovo pacchetto: questo vale per tutti i pacchetti tranne l’ultimo, in quanto non si devono più inviare pacchetti (tutto il messaggio è stato ricevuto dall’host B): quindi sono 1535 pacchetti.
Oltre a questi due addendi c’è anche un termine pari a 2*RTT che rappresenta l’handshake.

Latenzatot = handshake + #pacchetti* Latenzap + (#pacchetti - 1)* attesa =

= 2*RTT + #pacchetti*(Δt + Δp) + (#pacchetti - 1)*RTT/2 = 160 + 1536 * 40,8192 + 1535 * 40 = 124258,29 msec = 124,26 sec

Caso (c)
Dire che l’ampiezza di banda è infinita, vuol dire assumere che il tempo di trasmissione Δt sia pari a zero. Inoltre sempre per ipotesi si possono inviare in un RTT fino a 20 pacchetti.
Per questa ultima ipotesi si può affermare che il tempo di propagazione Δp di ciascun pacchetto rimane RTT/2, ma si possono inviare 10 pacchetti “aggregati” ogni RTT/2; quindi se i pacchetti sono 1536 come visto nel caso (b), si possono inviare 153,6 ~ 154 blocchi da 10 pacchetti ogni RTT/2.
Allora si ha che la latenza totale è

Latenza = handshake + 154*RTT/2 = 160 msec + 6160 msec = 6,32 sec

Bisogna notare che non si possono considerare 153,6 blocchi anzichè 154, in quanto il numero di “invii” di blocchi deve essere un numero intero.

Caso (d)
Come nel caso (c), dire che l’ampiezza di banda è infinita, vuol dire assumere che il tempo di trasmissione Dt sia pari a zero. Inoltre si possono inviare pacchetti in modo esponenziale, cioè si inviano 2n-1 pacchetti al passo n-esimo, con n=1,2,3,…
Bisogna quindi inviare in tutto 1536 pacchetti in n passi, quindi

SUM(k=1,n) 2k-1 = 2n-1 pacchetti

Per cui

2n-1 >= 1536

Questa disequazione è soddisfatta per n = 11
Bisogna quindi compiere n = 11 passi per inviare tutti i pacchetti. Ciò vuol dire che il tempo di trasmissione sarà:

L = handshake + n * RTT/2 + (n-1) * RTT/2 = 2*RTT + 21*RTT/2 = 160 + 840 = 1000 ms = 1 sec

Come era già accaduto nel caso (b), anche nell’espressione precedente al tempo impiegato da ciascun pacchetto, moltiplicato per il numero di pacchetti totali che bisogna inviare, è stato necessario sommare RTT/2 che rappresenta il tempo che si deve attendere prima di inviare un nuovo pacchetto: questo vale per tutti i pacchetti tranne l’ultimo, in quanto non si devono più inviare pacchetti (tutto il messaggio è stato ricevuto dall’host B).

ˆtop

Esercizio # 1.7

Testo:
Considerare un collegamento punto-punto con lunghezza di 2 Km. Quale valore di ampiezza di banda rende il ritardo di propagazione (ad una velocità di 2 * 108 m/sec) uguale al ritardo di trasmissione per pacchetti di 100 byte (a)? E per pacchetti di 512 byte (b)?

Soluzione:

Trovo il ritardo di propagazione che mi servirà nei casi specifici (punto a e b):

ritardo_propagazione= (lunghezza_canale_trasmissione)/(velocità) = (2*103m)/(2*108m/s) = 10 µsec

Caso (a):
Trovo l’ampiezza di banda nel caso in cui si hanno pacchetti da 100 B:

B= (dimensione_pacchetto)/(ritardo_propagazione)= (8*102 bit)/(10*10-6 sec)= 80Mbps

Caso (b):
Trovo l’ampiezza di banda nel caso in cui si hanno pacchetti da 512 B:

B= (dimensione_pacchetto)/(ritardo_propagazione)= (8*512 bit)/(10*10-6 sec)= 409.6Mbps

ˆtop

Esercizio # 1.8

Testo:
Considerare un collegamento punto-punto con lunghezza di 50 Km. Quale valore di ampiezza di banda rende il ritardo di propagazione (ad una velocità di 2 * 108 m/sec) uguale al ritardo di trasmissione per pacchetti di 100 byte (a)? E per pacchetti di 512 byte (b)?

Soluzione:

Soluzione:
Trovo il ritardo di propagazione che mi servirà nei casi specifici (punto a e b):

ritardo_propagazione= (lunghezza_canale_trasmissione)/(velocità) = (50*103m)/(2*108m/s) = 250 µsec

Caso (a):
Trovo l’ampiezza di banda nel caso in cui si hanno pacchetti da 100 B:

B= (dimensione_pacchetto)/(ritardo_propagazione)= (8*102 bit)/(250*10-6 sec)= 3.2Mbps


Caso (b):
Trovo l’ampiezza di banda nel caso in cui si hanno pacchetti da 512 B:

B= (dimensione_pacchetto)/(ritardo_propagazione)= (8*512 bit)/(250*10-6 sec)= 16.4Mbps

ˆtop

Esercizio # 1.14

Soluzione:
Soluzione:
Il tempo di trasmissione per inviare x KB su un collegamento a y Mbps è:

Δt = x KB * ( 1/y Mbps) = (x * 8 * 210) / (y * 106) = 8,192 * x/y msec

ˆtop

Esercizio # 1.18

Soluzione:
Caso (a):
Dal testo del problema si ricavo i dati:
banda B = 10 Mbps
dimensione_pacchetto = 5000 bit
tempo di propagazione Δp = 10 msec
Switch di tipo store-and-forward

Conviene al solito osservare l’ultimo bit dei 5000 del pacchetto che si vuole trasmettere: così facendo si può produrre il seguente schema temporale

t=0 -> il primo bit entra nel canale
t=Δt ->è il tempo che devo aspettare affinché tutti i bit del pacchetto entrino nel canale di comunicazione: a questo istante entra nel canale l’ultimo bit
t=Δt + Δp -> l’ultimo bit arriva allo switch. A questo punto il buffer di memoria dello switch è pieno. Il primo bit del pacchetto parte verso l’host B
t= Δt + Δp + Δt -> parte anche l’ultimo bit dal buffer di switch
t= 2*Δt + Δp + Δp -> l’ultimo bit del pacchetto arriva all’host B

In totale quindi la latenza è

L = 2*(Δt + Δp)

Ora calcolo Δt ricordando che la banda è B= 10 Mbps e che voglio inviare 5000 bit

Δt = quantità_dati_da_trasmettere * 1/B = 5 * 103 bit * 1/ 107 bit/sec = 5 * 10-4 sec = 500 msec

Complessivamente quindi la latenza nel caso (a) vale:

L = 2(Δt + Δp) = 1,02 msec

Caso (b)
Il ragionamento è simile al caso (a), solo che si è in presenza di tre switch. Ogni switch introduce un ritardo di Δt ed ogni link (in totale ci sono quattro link) introduce un ritardo di Δp (tempo di propagazione). Inoltre bisogna considerare il tempo di trasmissione del pacchetto dall’host A al link (canale di comunicazione) che occupa Δt tempo. I valori di Δp e Δt sono gli stessi del caso (a), e quindi si ha:

L = 3 * Δt + 4 * Δp + Δt = 4(Δt + Δp) = 2,04 msec

Caso (c)
In questo caso lo switch è di tipo cut-through ovvero inizia ad inoltrare i bit di un pacchetto dopo averne ricevuto i primi n bit ( in questo esercizio n=200 bit )
Con la formula riportata nel caso (a) ci possiamo ricavare il valore di Δt = 500 msec
E’ conveniente ricavare quanto tempo impiega l’host A per inviare nel canale di trasmissione i primi 200 bit di un pacchetto:

Δt200bit = primi_200_bit * 1/B = 200 bit * 1/ 107 bit/sec = 20 msec

Quindi a tempo t = Δt200bit + Δp il 200-esimo bit arriva allo switch cut-through e quindi lo switch inoltra verso l’host B il primo bit del pacchetto.

Quindi la latenza totale è:

L = Δt + 2 * Δp + Δt200bit = 500 + 20 + 20 = 540 msec = 0,54 msec

ˆtop

Esercizio # 1.19

Soluzione:
Caso (a):
Dal testo del problema si ricavo i dati:
banda B = 1 Gbps
dimensione_pacchetto = 5000 bit
tempo di propagazione Δp = 10 msec
Switch di tipo store-and-forward
Conviene al solito osservare l’ultimo bit dei 5000 del pacchetto che si vuole trasmettere: così facendo si può produrre il seguente schema temporale

t=0 -> il primo bit entra nel canale
t=Δt -> è il tempo che devo aspettare affinché tutti i bit del pacchetto entrino nel canale di comunicazione: a questo istante entra nel canale l’ultimo bit
t=Δt + Δp -> l’ultimo bit arriva allo switch. A questo punto il buffer di memoria dello switch è pieno. Il primo bit del pacchetto parte verso l’host B
t= Δt + Δp + Δt -> parte anche l’ultimo bit dal buffer di switch
t= 2*Δt + Δp + Δp -> l’ultimo bit del pacchetto arriva all’host B

In totale quindi la latenza è

L = 2*(Δt + Δp)

Ora calcolo Δt ricordando che la banda è B= 1 Gbps e che voglio inviare 5000 bit

Δt = quantità_dati_da_trasmettere * 1/B = 5 * 103 bit * 1/ 109 bit/sec = 5 * 10-6 sec = 5 msec

Complessivamente quindi la latenza nel caso (a) vale:

L = 2(Δt + Δp) = 30 msec

Caso (b)
Il ragionamento è simile al caso (a), solo che si è in presenza di tre switch. Ogni switch introduce un ritardo di Δt ed ogni link (in totale ci sono quattro link) introduce un ritardo di Δp (tempo di propagazione). Inoltre bisogna considerare il tempo di trasmissione del pacchetto dall’host A al link (canale di comunicazione) che occupa Δt tempo. I valori di Δp e Δt sono gli stessi del caso (a), e quindi si ha:

L = 3 * Δt + 4 * Δp + Δt = 4(Δt + Δp) = 60 msec

Caso (c)
In questo caso lo switch è di tipo cut-through ovvero inizia ad inoltrare i bit di un pacchetto dopo averne ricevuto i primi n bit ( in questo esercizio n=128 bit )
Con la formula riportata nel caso (a) ci possiamo ricavare il valore di Δt = 5 msec
E’ conveniente ricavare quanto tempo impiega l’host A per inviare nel canale di trasmissione i primi 128 bit di un pacchetto:

Δt128bit = primi_128_bit * 1/B = 128 bit * 1/ 109 bit/sec = 0,128 msec

Quindi a tempo t = Δt128bit + Δp il 128-esimo bit arriva allo switch cut-through e quindi lo switch inoltra il primo bit del pacchetto nel successivo link. In questo caso (a differenza del caso (c) dell’esercizio 1.18) gli switch di tipo cut-through sono tre.
Quindi la latenza totale è:

L = Δt + 4 * Δp + 3 * Δt128bit = 5 + 40 + 0,384 = 45,384 msec

ˆtop

Esercizio # 1.28

Soluzione:
Caso (a)
Per prima cosa calcolo il numero di pixel da cui è formato un singolo frame e, conoscendo la dimensione di memoria occupata da un pixel, posso calcolare che dimensione in byte ha il frame:

Pixel_singolo_frame = 640 * 480 = 307200 pixel
Dimensione_singolo_frame = 307200 pixel * 3 B/pixel = 921600 B = 900 KB

Ora calcoliamo la dimensione del flusso video in termini di KB/sec.

Dimensione_flusso_video_al_sec = dimensione_singolo_frame * frame/secondo =
= 900 * 30 = 27000 KB/sec

Quindi l’ampiezza di banda necessaria per la trasmissione in tempo reale è data da:

B = Dimensione_flusso_video_al_sec = 27000 KB/sec = 26,37 MBps = 210,96 Mbps

Caso (b)
Anche in questo caso per prima cosa calcolo il numero di pixel da cui è formato un singolo frame e, conoscendo la dimensione di memoria occupata da un pixel, posso calcolare che dimensione in byte ha il frame:

Pixel_singolo_frame = 160 * 120 = 19200 pixel
Dimensione_singolo_frame = 19200 pixel * 1 B/pixel = 19200 B

Ora calcoliamo la dimensione del flusso video in termini di KB/sec.

Dimensione_flusso_video_al_sec = dimensione_singolo_frame * frame/secondo =
= 19200 * 5 = 96000 B/sec = 93,75 KB/sec

Quindi l’ampiezza di banda necessaria per la trasmissione in tempo reale è data da:

B = Dimensione_flusso_video_al_sec = 93,75 KB/sec = 750 Kbps

Caso (c)
Calcoliamo quanti secondi di musica sono contenuti in un cd da 650 MB:

Sec_musica = 75 * 60 = 4500 sec

Ora il rapporto tra la quantità di dati immagazzinati nel cd, cioè 650 MB, e il tempo di riproduzione totale che il cd offre rappresenta l’ampiezza di banda necessaria per la trasmissione in tempo reale:

B = 650 MB / 4500 sec = 5200 M / 4500 sec = 1,15 Mbps = 1183,3 Kbps

Caso (d)
Calcoliamo dapprima l’area dell’immagine in pollici, e in seguito, conoscendo la risoluzione, calcoliamo tale area espressa in pixel:

Areapollici = 8 * 10 = 80 pollici
Areapixel = Areapollici * risoluzione = 5760 pixel

Ora possiamo fare alcune considerazioni: ad ogni pixel dell’immagine deve essere associato un bit di informazione che determina se il colore del pixel è bianco o nero (l’immagine infatti è in b/n). Ora potremmo seguire due strade.
Come avviene comunemente nei fax, l’immagine viene letta come una sequenza di un bit per pixel e in ordine da sinistra a destra e dall’alto in basso: non sono quindi necessari ulteriori bit di informazione per identificare la posizione dei pixel in quanto i pixel sono “letti” in modo sequenziale e predeterminato (magari inserendo una specie di header con un campo che dica quanto lunga è l’immagine).
Quindi si ha che l’immagine occupa 1 bit/pixel, e quindi:

Dimensione_immagine = 5760 pixel * 1bit/pixel = 5760 bit = 720 B
Tempo_di_invio = 720 B / 14.4 Kbps = 400 * 10-3 sec = 0,3 sec

Un’altra strada che si può percorrere è la seguente : oltre ad avere associato un bit ad ogni pixel che rappresenta l’informazione di colore, si associa ad ogni pixel 10 bit per la coordinata orizzontale (8*72= 576 pixel) e 10 bit per la coordinata verticale (10*72 = 720 pixel). In totale quindi ogni pixel è identificato univocamente da 21 bit: uno per il colore e 20 per le coordinate. Questa soluzione permette di non dover memorizzare le informazioni legate ai pixel in sequenze ordinate come era nella precedente risoluzione, a scapito però della dimensione e quindi del tempo di invio, infatti:

Dimensione_immagine = 5760 pixel * 21bit/pixel = 120960 bit = 15120 B
Tempo_di_invio = 15120 B / 14.4 Kbps = 8400 * 10-3 sec = 8,4 sec

ˆtop

Esercizio # 1.32

Soluzione:

Caso (a)
Non è necessario il numero di sequenza perché i pacchetti vengono inviati e in seguito sempre ricevuti (non c’è perdita) in ordine: inoltre per ipotesi non c’è duplicazione, quindi lo stesso pacchetto non può essere inviato più volte (e quindi ricevuto più volte).
Caso (b)

In linea generale sia per algoritmi di tipo stop-and-wait sia sliding window i numeri di sequenza possibili devono essere più del numero di frame non confermati a cui è consentito essere in transito sulla linea. Nel nostro caso l’algoritmo consente un solo frame non confermato e ha quindi due numeri di sequenza: quindi è sufficiente avere numeri di sequenza di 1 bit per l’algoritmo stop-and-wait.

ˆtop

Esercizio 1 tema d'esame del 1.06.04

Testo:
Si consideri una rete Ethernet a 10 Mbps con 4 switch lungo il percorso, avente 5 µsec di ritardo su ciascun link e dimensione di pacchetto pari a 250 B. Calcolare le seguenti quantità, discutendo i passaggi intermedi.
(a) Calcolare la latenza dal primo bit inviato all’ultimo bit ricevuto, nel caso ciascuno switch sia di tipo store-and-forward, cioè inizi ad inoltrare un pacchetto immediatamente dopo la sua completa ricezione.
(b) Calcolare la latenza come nel caso (a), ma considerando switch di tipo cut-through, in grado di inoltrare un pacchetto immediatamente dopo averne ricevuto i primi 128 bit.
(c) Si assuma che nel caso (a) la sorgente debba attendere un pacchetto di acknowledgment di 20 B prima di inviare ciascun pacchetto successivo. Calcolare la effective bandwidth, definita come rapporto tra dimensione di bit di ciascun pacchetto ed intervallo di tempo dall’invio del primo bit di un pacchetto all’invio del primo bit del pacchetto successivo.

Soluzione:
Prima di iniziare a svolgere i vari punti del seguente esercizio occorre fare un breve descrizione dei vari tipi di switch per poter ben focalizzare il loro funzionamento. Gli switch posso suddividersi in tre categorie:
1. store-and-forward: prima di trasmettere il pacchetto, aspettano di averlo memorizzato interamente in un buffer interno;
2. cut-through: i dati passano attraverso lo switch come se non ci fosse;
3. cut-through con ritardo: i dati passano attraverso lo switch ma accumulano ritardo senza venire memorizzati all’interno di esso.
Da ora in avanti chiameremo il ritardo sul link Δp.
Caso (a):
u Costruiamo uno scema temporale per vedere come si comporta il pacchetto quando viene inserito nel canale:

t = 0 -> il primo bit entra nel canale;
t = Δt -> l’ultimo bit viene inserito nel canale: il pacchetto è stato completamento inserito;
t = Δt + Δp -> l’ultimo bit è entrato nel primo switch;
t = Δt + Δp + Δt -> l’ultimo bit esce dallo switch ed entra nel secondo tratto di canale;

t = Δt + Δp + Δt + Δp + Δt + Δp + Δt + Δp + Δt -> l’ultimo bit esce dal quarto switch ed entra nel canale;
t = Δt + Δp + Δt + Δp + Δt + Δp + Δt + Δp + Δt + Δp -> l’ultimo bit arriva a destinazione.
Quindi possiamo vedere che la Latenza è data da: L = (Δt + Δp) * 5.

Per cui non resta che calcolare Δt:

Δt = quantità_dati_da_trasmettere * 1/B = (250 * 8 bit) / (10 * 10-6 bit/sec) = 200 µsec.

Ora calcoliamo la latenza:

L = (Δt + Δp) * 5 = (200 µsec + 5 µsec) * 5 = 1025 µsec

Caso (b):
Questo caso è molto simile al precedente, solo che occorre fare un piccola considerazione. Nel caso precedente lo switch era di tipo store-and-forward, per cui prima memorizzava tutto il pacchetto e poi lo metteva nel canale. In questo caso invece, lo switch è di tipo cut-through; però bisogna fare bene attenzione che prima di spedire deve ricevere 128 bit, quindi questo comporta un ritardo. Di conseguenza dobbiamo considerare il caso in cui lo switch sia di tipo cut-through con ritardo.
Molto facilmente si può notare che l’informazione viaggia nei vari tratti di canale (link) accumulando un ritardo di 5 µsec, in più passando all’interno dello switch accumulano un ulteriore ritardo che chiameremo Δts.Calcoliamo ora Δts:

Δts = 128 bit / (10 * 10-6bit/sec) = 12.8 µsec

cioè è dato dal rapporto tra i dati che deve attendere e la banda della rete.
La latenza è data quindi dalla seguente relazione:

L = Δt + Δp * 5 + Δts * 4 = 200 µsec + (5 µsec * 5) + (12.8 µsec * 4) = 276.2 µsec

(N.B.: Δt non viene calcolato perché è stato fatto nel punto precedente, e in questo caso il conto non si differenzia)
Caso (c):
Per calcolare la effective bandwidth analizziamo come avviene la comunicazione in quest’ultimo caso. Il trasmettitore invia il pacchetto utilizzando una rete con caratteristiche uguali al punto (a). Quando il ricevente ha ricevuto il pacchetto manda un acknowledgment (che da ora in poi chiameremo ACK) per confermare l’avvenuta ricezione del pacchetto. Successivamente il trasmettitore invia il secondo pacchetto, e il ricevente dopo aver ricevuto i dati invia l’ACK. La comunicazione tra i due host continua in questo modo sino a quando il messaggio non termina. Si vuole quindi sapere se la banda (che ricordiamo è di 10 Mbps) viene quindi sfruttata pienamente oppure ne viene utilizzata solo una parte.
Essendo la effective bandwidth definita come:

dimensione_pacchetto / tempo_trasmissione_pacchetto

dove per tempo_trasmissione_pacchetto si intende l’intervallo di tempo dall’invio del primo bit di un pacchetto all’invio del primo bit del pacchetto successivo. Per determinare tale tempo analizziamo l’invio di un pacchetto:

t = 0 -> il primo bit entra nel canale;
t = Δt -> l’ultimo bit viene inserito nel canale: il pacchetto è stato completamento inserito;
t = Δt + Δp -> l’ultimo bit è entrato nel primo switch;
t = Δt + Δp + Δt -> l’ultimo bit esce dallo switch ed entra nel secondo tratto di canale;
...
t = Δt + Δp + Δt + Δp + Δt + Δp + Δt + Δp + Δt -> l’ultimo bit esce dal quarto switch ed entra nel canale;
t = Δt + Δp + Δt + Δp + Δt + Δp + Δt + Δp + Δt + Δp -> l’ultimo bit arriva a destinazione;
t = (Δt + Δp) * 5 + Δtack -> l’ultimo bit dell’ACK entra nel canale;
t = (Δt + Δp) * 5 + Δtack + Δp -> l’ultimo bit dell’ACK entra nel quarto switch;
t = (Δt + Δp) * 5 + Δtack + Δp + Δtack -> l’ultimo bit dell’ACK esce dal quarto switch ed entra nel canale;
...
t = (Δt + Δp) * 5 + (Δtack + Δp) * 5 -> l’ACK arriva al trasmettitore;

Calcoliamo quanto vale Δtack:

Δtack=quantità_dati_ACK * 1/B = (20 * 8 bit) / (10 * 10-6 bit/sec) = 16 µsec

Per gli altri valori non effettuo il calcolo perché è già presente nei punti precedenti.
Quindi

tempo_trasmissione_pacchetto è pari a: (Δt + Δp) * 5 + (Δtack + Δp) * 5 = 1025 µsec + (16 µsec + 5 µsec) * 5 = 1130 µsec

Infine calcoliamo l’effective bandwidth:

(250 * 8 bit) / (1130 * 10-6sec) = 1.77 Mbps

Possiamo concludere dicendo che la banda sfruttata da questo tipo di trasmissione è solo del 17.7% quindi ben al di sotto delle sue potenzialità.

ˆtop

Esercizio # 1.9

Testo:
Quali proprietà degli indirizzi postali andrebbero bene anche per una schema di indirizzamento di rete?
Quali differenze vi aspettate di trovare?
Quali proprietà della numerazione telefonica andrebbero bene anche per uno schema di indirizzamento in una rete?

Soluzione:
Le proprietà degli indirizzi postali che andrebbero bene anche per uno schema di indirizzamento di rete sono:
l'univocità
Mentre un indirizzo postale specifica in modo gerarchico dove la posta deve essere spedita, quindi la nazione la provincia la città, la via il numero civico, e la persona a cui è indirizzata ed obbliga quindi un certo tipo di percorso o meglio una direzione, un indirizzo di rete in se per se non identifica una macchina ma non dove si trova geograficamente.
Le proprietà della numerazione telefonica che andrebbero bene anche per uno schema di indirizzamento di rete sono:
l'univocità

ˆtop

Esercizio # 1.10

Testo:
Una proprietà degli indirizzi è quella di essere unici: se due nodi avessero lo stesso indirizzo sarebbe impossibile distinguerli.
Quali altre proprietà sarebbero utili per gli indirizzi in una rete?
Potete immaginare una situazione in cui gli indirizzi in una rete (o gli indirizzi postali o i numeri di telefonici) potrebbero non essere unici?

Soluzione:
Il sistema di indirizzi di una rete (intesa come sistema generico che evolve) deve consentire l'aggiunta di nuovi nodi e quindi nuovi indirizzi nel tempo senza limtare il numero massimo di nodi aggiungibili.
Una situazione in cui gli indirizzi in una rete potrebbero non essere unici porterebbe al problema delivering: a chi consegnare un pacchetto se esistono due nodi con lo stesso indirizzo? Ad entrambi?
Potrebbe inoltre succedere che uno dei due abbia utilizzato volontariamente lo stesso indirizzo per vedere i pacchetti dell'altro, sorgono in questo caso problemi di sicurezza.

ˆtop

Esercizio # 1.11

Testo:
Fornite un esempio di una situazione in cui gli indirizzi multicast potrebbero essere utili.

Soluzione:
Un indirizzo mulicast è un indirizzo che specifica più di una destinazione, un tale indirizzo può essere usato in tutti quei casi in cui si vuole mandare un messaggio ad una comunità di nodi. Per esempio un messaggio di richiesta di aggiornamento.

ˆtop

Esercizio # 1.12

Testo:
Quali differenze nella tipologia di traffico rendono conto del fatto che STDM è una modalità di multiplexing efficiente dal punto di vista del costo per una rete che trasporta telefonia vocale e che FDM lo è per le reti radiotelevisive, ma entrambe non lo sono per una rete di calcolatori ad utilizzo generico?

Soluzione:
STDM utilizzata nella telefonia è una modalità di multiplexing efficiente dal punto di vista del costo perché si conoscono a priori i clienti (telefoni) che si devono collegare, in un qualunque momento ogni telefono deve trovare la linea libera. STDM ha un numero massimo di canali che dovrebbe essere di 32 per utenza.
FDM d’altro canto per le reti televisive alloca una banda di frequenze per ogni stazione emittente, questa trasmette tutto il giorno 24 ore su 24 ciò rende necessaria una allocazione fissa.

ˆtop

Esercizio # 1.13

Testo:
Quanto è "ampio" un bit su un collegamento a 1Gbps? E quanto lo è in un cavo di rame, dove la velocità di propagazione è 2.3*108 m/s?

Soluzione:
Su un collegamento a 1Gbps 1 bit è ampio (come ampiezza temporale):

L’ampiezza di un bit in un cavo con v=2.3*108m/s senza specificare altri dati non è determinabile perché dipende dal tempo di trasmissione.Se consideriamo un collegamento a 1Gbps con v=2.3*108m/s allora un bit è ampio (occupa uno spazio):


Se nei casi seguenti si intende ampiezza come spazio occupato:
Su un collegamento a 1Gbps 1 bit è ampio considerando la massima velocità di propagazione possibile (velocità della luce):

L’ampiezza di un bit in un cavo con v=2.3*108m/s con ampiezza di banda infinita:

Il bit è ampio un istante.

ˆtop

Esercizio # 1.15

Testo:
Supponete che sia stato stabilito un collegamento punto-punto a 100Mbps fra la Terra e una nuova colonia lunare. La distanza fra la Terra e la Luna è circa 385000 km e i dati viaggiano lungo la connessione alla velocità della luce 3*108 m/s.
a) Calcolate il valore minimo di RTT per il collegamento.
b) Usando RTT come valore per il ritardo, calcolate il prodotto ritardo*ampiezza di banda per il collegamento.
c) Qual è il significato del prodotto ritardo*ampiezza di banda calcolato al punto precedente.

Soluzione:
a) RTT = Round Trip Time (tempo di andata e ritorno):

b) Scegliamo di fare il prodotto ritardo*ampiezza di banda in due modi diversi:
con il ritardo = RTT/2(*) e con ritardo = RTT(**):
*
**
c) Il prodotto ritardo per ampiezza di banda ha i seguenti significati:
* Quantità di dati che sta viaggiando nel canale e quindi è contenuta nel canale da un nodo all’altro collegati dal canale in considerazione.
** B*RTT è la quantità di dati che ho trasmesso nel tempo RTT sfruttando tutta la banda B. RTT è però il tempo che un bit impiega per andare da un nodo all’altro e tornare indietro; perciò B*RTT è la quantità di dati inviata sul canale (non è detto che stia tutta sul canale, anzi probabilmente circa metà è già arrivata) nel tempo in cui il primo bit va e torna dalla sorgente; è quindi la quantità di memoria (dati inviati) che mi conviene tenere come buffer nel nodo sorgente.
d) Supponiamo:
richiesta terra->luna RTT/2 +
invio luna->terra trasmissione +
ritardo di propagazione RTT/2 +

ˆtop

Esercizio # 1.16

Testo:
Supponete che sia stato stabilito un collegamento punto-punto a 128Kbps fra la terra ed un veicolo di esplorazione su Marte. La distanza fra la Terra e Marte (quando sono massimamente vicini) è circa 55Gm e i dati viaggiano lungo la connessione alla velocità della luce, 3*108m/s.
a) Calcolate il valore minimo di RTT per il collegamento.
b) Calcolate li prodotto ritardo*ampiezza di banda per il collegamento.
c) Un apparecchio fotografico sul veicolo di esplorazione raccoglie immagini dell’ambiente circostante e le invia sulla Terra. Dopo quanto tempo da quando è stata acquisita l’immagine giunge al Controllo Missione sulla Terra? Ipotizzate che ciascuna immagine abbia le dimensioni di 5Mb.

Soluzione:
Soluzione:
a) RTT = Round Trip Time (tempo di andata e ritorno):

b) Scegliamo di fare il prodotto ritardo*ampiezza di banda in due modi diversi:
con il ritardo = RTT/2(*) e con ritardo = RTT(**):
*
**
c) Supponiamo:
trasmissione Trasmissione +
ritardo di propagazione RTT/2

ˆtop

Esercizio # 1.21

Testo:
Calcolare il prodotto ritardo*ampiezza di banda per i seguenti collegamenti, usando il ritardo di sola andata, misurato dal primo bit inviato al primo bit ricevuto.
a) Ethernet a 10Mbps con ritardo di 10µs.
b) Ethernet a 10Mbps con un unico switch di tipo store-and-froward, come nell’Esercizio 18(a), pacchetti di 5000bit e ritardo di propagazione di 10µs per ciascuna linea.
c) Collegamento T1 a 1.5Mbps con un ritardo transcontinentale di sola andata di 50ms.
d) Collegamento T1 a 1.5Mbps attraverso un satellite in orbita geostazionaria, all’altitudine di 35900km. L’unico ritardo è il ritardo di propagazione dovuto alla velocità della luce

Soluzione:
a) Considerando l’invio di un solo bit:

b) Siamo nella seguente situazione:

*


**


* Sono i bit esattamente contenuti nel canale: quando questo è pieno i due link contengono 100bit ciascuno e 5000bit lo switch (è la sua capacità di buffer).
** Il ritardo è calcolato secondo richiesta dell’esercizio cioè come tempo di trasmissione del pacchetto dal primo bit inviato all’ultimo ricevuto.
c) Consideriamo l’invio di un solo bit:

d) Anche in questo caso consideriamo l’invio di un solo bit, siamo nella seguente situazione:


ˆtop

Esercizio # 1.23

Testo:
Supponete che un host abbia un file di 1MB ad inviare ad un altro host. Serve 1 secondo di tempo di CPU per comprimere la dimensione del file del 50%, oppure 2 secondi per comprimerla del 60%.
a) Calcolare l’ampiezza di banda per la quale ciascuna opzione di compressione dà luogo allo stesso tempo totale, sommando tempo di compressione e tempo di trasmissione.
b) Spiegate perché la latenza non ha influenza sulla vostra risposta.

Soluzione:
a) Uguagliamo il tempo di trasmissione di 1MB con il tempo di trasmissione del file compresso più il tempo di comprimerlo; calcoliamo prima le dimensioni compresse.






b) La latenza non ha avuto nessuna influenza sulla risposta perché è richiesto il solo tempo di trasmissione

ˆtop

Esercizio # 1.29

Testo:
Come nel problema precedente, ipotizzate che non si effettui alcuna compressione dei dati. Calcolate l’ampiezza di banda necessaria per la trasmissione in tempo reale:
a) di un flusso video ad alta definizione (HDTV) alla risoluzione di 1920*1080pixel, 24bit/pixel, 30frame/secondo;
b) di un flusso audio vocale POTS(Plain Old Telephone Service, vecchio servizio telefonico ordinario) con campionamenti di 8bit a 8KHz;
c) di un flusso audio vocale per la telefonia mobile GSM con campionamenti di 260bit a 50Hz;
d) di un flusso audio ad alta definizione (HDCD) con campionamenti di 24bit a 88.2KHz.

Soluzione:
a) Calcoliamo prima di tutto quanti bit abbiamo bisogno per disegnare un frame:

Dopo di che calcoliamo la banda necessaria per il flusso:

b) Considerando un campionamento a 8bit mono alla frequenza di 8KHz avremo:

c) Come il precedente:

d) Ancora come il precedente:

ˆtop

Esercizio # 1.17

Testo:
Per ciascuna delle seguenti operazioni su un server di file remoto, argomentare sul fatto che sia più sensibile al ritardo o all’ampiezza di banda.
a) Aprire un file.
b) Leggere il contenuto di un file.
c) Elencare il contenuto di una directory.
d) Visualizzare gli attributi di un file.

Caso (a): sensibile al ritardo.
Caso (b): se il messaggio ha grandi dimensioni e il protocollo permette di trasmettere il file in un unico pacchetto il server è più sensibile al ritardo. In questo caso, se utilizzo la tecnica software con finestra larga il server diventa sensibile alla banda.
Caso (c): più sensibile al ritardo della rete.
Caso (d): più sensibile al ritardo della rete.

ˆtop

Esercizio # 1.24

Testo:
Supponete che un certo protocollo di comunicazione abbia bisogno di 100 byte aggiuntivi per ogni pacchetto, per le intestazioni e le informazioni di frame. Inviamo un milione di byte di dati usando questo protocollo, ma un byte risulta essere corrotto e l’intero pacchetto che lo contiene deve essere scartato. Calcolare per pacchetti di dimensione uguali a 1000, 5000, 10000, 20000 byte, il numero totale di byte aggiuntivi più perduti. Qual è la dimensione ottimale?

Soluzione:
Per calcolare quanti byte aggiuntivi devo inserire all’interno del messaggio affinché il protocollo venga rispettato, si deve eseguire un semplice operazione:

num_pack = dimensione_messaggio / grandezza_pacchetto,
num_agg = num_pack * 100 byte.

Si noti una cosa, il testo dice di calcolare il numero di byte aggiuntivi più perduti, ma il numero di quelli perduti è pari ad un pacchetto, quindi quello che si andrà a calcolare è il numero di byte aggiuntivi (compresi anche quelli che vengono scartati) ma senza contare la ritrasmissione del pacchetto scartato, in quanto non si sa come il protocollo funzioni nel caso in cui un pacchetto venga scartato. Vediamo ora i vari calcoli:

1000000 byte / 1000 byte = 1000 pacchetti --> 1000 pacchetti * 100 byte = 100000 byte
1000000 byte / 2000 byte = 500 pacchetti --> 500 pacchetti * 100 byte = 50000 byte
1000000 byte / 10000 byte = 100 pacchetti --> 100 pacchetti * 100 byte = 10000 byte
1000000 byte / 20000 byte = 50 pacchetti --> 50 pacchetti * 100 byte = 5000 byte

Possiamo quindi vedere che nel caso in cui la trasmissione abbia un probabilità molto bassa di perdere pacchetti, è più utile utilizzare pacchetti di dimensione pari a 20000 byte in quanto si devono trasmettere meno byte di "controllo" e quindi risulta essere più snella. Nel caso in cui si ha un elevato rischio di perdere pacchetti, è più conveniente utilizzare un pacchetto da 1000 byte, in quanto se è prevista la ritrasmissione dei pacchetti persi o danneggiati essa si conclude in modo più rapido.

ˆtop

Esercizio # 1.26

Testo:
Considerate una rete chiusa ad anello (ad esempio, un rete token ring) con ampiezza di banda di 100 Mps e velocità di propagazione di 2 * 108 m/sec. Quale dovrebbe essere la circonferenza dell’anello per contenere esattamente un pacchetto di 250 byte, nell’ipotesi che i nodi non introducano ritardi? Quale dovrebbe essere la circonferenza se ci fosse un nodo ogni 100 m e ciascun nodo introducesse un ritardo di 10 bit?

Soluzione:

Il primo caso, cioè quello in cui non avviene ritardo nel passaggio fra i vari nodi, è come se ci fosse una rete point-to-point, quindi si può facilmente calcolare utilizzando formule già note (esercizi 7 e 8 cap.1). Vediamo come si calcola la circonferenza:

Ritardo_prop = dim_pacchetto / banda = (250 * 8 bit) / (100 * 106bit/sec) = 20 µsec
Circonferenza = ritardo_prop * velocità_prop = (20 µsec) * (2 * 108m/sec) = 4000 m = 4 Km

Quindi occorre una circonferenza da 4 Km per contenere esattamente un pacchetto da 250 byte
Nel secondo caso invece si suppone di avere un nodo ogni 100 m e che provochi un ritardo di 10 bit.
Quindi possiamo vedere quale lunghezza è necessaria per poter contenere un solo ritardo da 10 bit:

Ritardo_prop10 = 10 bit / banda = 10 bit / (100 *106bit/sec) = 0.1 µsec
Lungh10 = ritardo_prop10 * velocità_prop = (0.1 µsec) * (2 * 108m/sec) = 20 m

Ora vediamo quante postazioni ci sono in 4000m:

Circonferenza / 100 m = 40 nodi

Quindi si se ogni nodo introduce un ritardo di 10 bit (cioè 20 m) allora alla lunghezza iniziale si deve aggiungere

20m * 40 nodi = 800 m

di circonferenza in più. In conclusione la circonferenza sarà pari a 4800 m ovvero 4.8 Km

ˆtop