Il livello di trasporto

Transcript

Il livello di trasporto
Il livello di
trasporto
Appunti di Sistemi
A cura del prof. ing. Mario Catalano
Cosa fa il livello di trasporto:
 Fornisce una procedura per il trasporto
dei dati dalla sorgente alla destinazione.
 La rete di comunicazione è vista dal
livello come un tutto unico che collega
sorgente e destinazione.
 Il livello di trasporto è gestito in modo
che sia indipendente dalla rete di
comunicazione.
Rete e livello di trasporto
 L’utente non ha alcun controllo sulla rete
gestita dalla società di comunicazione.
 Non può fare nulla se la rete è
inaffidabile (perde pacchetti o li duplica)
o inadeguata alle esigenze di trasporto
(troppo lenta).
 Allora occorre che il livello di trasporto
faccia in modo da risolvere i problemi del
trasporto, o almeno di ridurli.
I compiti del livello di trasporto:
1. Gestione degli errori
2. Recupero dei guasti
3. Gestione dei collegamenti
A seconda della qualità del servizio offerto
dalla rete di comunicazione, il livello di
trasporto dovrà “negoziare” le
caratteristiche (per esempio la velocità)
della trasmissione.
La qualità del servizio (QoS):

2.
3.
La QoS offerta dalla rete di
telecomunicazione è valutata da una
serie di parametri:
Ritardo alla connessione: tempo che
intercorre tra la richiesta di
connessione e la ricezione della
conferma,
Probabilità di fallimento di
connessione: la connessione ha un
tempo massimo per stabilirsi,
Altri parametri di QoS (1):
1.
2.
3.
4.
Produttività: Numero di bit di dati
trasferiti al secondo,
Ritardo di transito: tempo tra l’invio e la
ricezione,
Tasso d’errore: percentuale di
messaggi persi o rovinati (sul totale),
Probabilità di fallimento del transito: in
termini di produttività, ritardo e tasso
d’errore.
Altri parametri di QoS (2):
1.
2.
3.
Ritardo alla disconnessione: come per
la connessione,
Probabilità di fallimento di
disconnessione: come per la
connessione,
Resilienza: probabilità che avvenga
una disconnessione a causa di
problemi tecnici o di congestione della
rete.
La Negoziazione delle opzioni
(1):
I parametri QoS sono indicati al momento
della richiesta della connessione.
Il livello di trasporto può dedurre
immediatamente l’impossibilità di
connettersi se sono troppo bassi.
Oppure si connette al massimo delle
opzioni se la rete garantisce il massimo
delle prestazioni richieste.
La Negoziazione delle opzioni
(2):
Nella maggior parte dei casi, invece, la
rete se sa di non poter raggiungere gli
obiettivi indicati, fa una controproposta,
indicando i valori che riesce a garantire
(abbassando, per esempio, la velocità).
Se la proposta è accettata dall’utente, la
connessione può essere attivata.
In alternativa è l’utente a fare una
controproposta a livelli più bassi e così
via.
La Negoziazione delle opzioni
(3):
E’ importante sottolineare che i parametri
QoS negoziati alla fine della trattativa
restano validi e fissati per tutta la durata
della connessione.
Poiché le reti di comunicazione hanno
prestazioni diverse, esistono diversi
protocolli di trasporto che garantiscono
diversi servizi (esempio: TCP e UDP).
Le primitive del livello di
trasporto:
Si dicono primitive le funzioni del livello di
trasporto.
Il livello di trasporto si gestisce con un
modello Server – Client.
Dal Server al Client le primitive sono
Comandi.
Dal Client al Server le primitive sono
Richieste.
Alcuni esempi di primitive:











Attivazione delle connessioni
Rifiuto della connessione
Trasferimento di dati
Rilascio normale della connessione
Trattamento di errori
Rilascio della connessione per errori
Trasferimento di dati prioritari
Controllo di flusso
Reset
Risincronizzazione dopo un reset
Multiplexing
Attivazione della connessione
Questa operazione può sembrare facile, ma non
lo è, perché la rete può perdere o duplicare (a
causa dei ritardi interni) dei pacchetti.
Il problema di fondo sta nella possibile presenza
dei duplicati ritardatari.
Ma durante il colloquio si può controllare il
numero di sequenza: quindi i doppioni
ritardatari sono automaticamente scartati.
Three-way hand-shaking
Resta il problema dei doppioni ritardatari
in fase di connessione.
Se arriva una richiesta connessione
duplicata e ritardata, come si fa a
distinguerla da una nuova “vera”
richiesta di connessione?
Il problema è stato risolto dal “three-way
handshaking” ( letteralmente: stretta di
mano a tre vie).
Threeway handshaking: I° fase
 Il mittente invia una
richiesta di
connessione con un
numero x proposto
come inizio della
sequenza.
Threeway handshaking: 2°fase
Il destinatario invia un
ack contenente:
 La conferma di x
 La proposta di un
proprio numero
identificativo y.
Threeway handshaking: 3°fase
Il mittente invia un
pacchetto
contenente:
 La conferma di y
 I primi dati.
Three-way hand-shaking: x e y
I valori x e y che identificano la connessione
possono essere generati ad esempio sfruttando
l’orologio di sistema in modo da avere ogni volta
valori diversi.
I valori x e y sono generati da entrambi i dispositivi
in colloquio e quindi non c’è possibilità d’errore
(una connessione aperta in un altro istante
avrebbe un x diverso e una connessione
accettata in un altro istante avrebbe un y
diverso.)
3-way handshaking in caso di
duplicazione e ritardi
 Se arriva una richiesta di connessione
duplicata e in ritardo, il destinatario
rimanda l’ack al mittente coi numeri x, y.
 Il mittente però sa di non aver attivato
una nuova richiesta di connessione e
risponde con un reject (rifiuto) della
connessione x,y.
3-way handshaking in caso di
duplicazione e ritardi (2)
 Se invece arriva in ritardo una richiesta
di connessione, il mittente rimanda l’ack
al mittente coi numeri x, y.
 Se al destinatario arriva (in ritardo)
anche l’accettazione della connessione
avrà due numeri identificativi diversi: il
mittente non li accetta e li scarta.
Disconnessione
Il problema della disconnessione non è meno
importante di quello della connessione. A causa di
disconnessioni brusche, infatti possono perdersi
pacchetti e restare vaganti in rete senza
destinazione (congestionandola).
Esistono due modi di disconnettersi:
 Asimmetrico,
 Simmetrico
Disconnessione asimmetrica
(brusca)
La connessione cade quando uno dei
dispositivi si disconnette
indipendentemente dall’altro. In questo
caso i dati inviati che non sono ancora
arrivati si perdono.
Disconnessione simmetrica
(negoziata)
La connessione è considerata come la coppia di
due “semiconnessioni” indipendenti: l’una dal
destinatario al mittente, l’altra dal mittente al
destinatario.
Se un dispositivo chiude una “semiconnessione”,
l’altra resta aperta: in questo modo i dati inviati
hanno il tempo di arrivare a destinazione (si
stabilisce un tempo massimo, dopo di che anche
l’altra direzione si chiude).
Negoziazione della
disconnessione:
 1° fase: il mittente invia un comando di
disconnessione (disconnect)
 2° fase: il destinatario riceve il disconnect dal
mittente, se ha finito invia un disconnect (che fa
da ack per il mittente)
 3° fase: il mittente invia il suo ack e si
disconnette.
 4° fase: il destinatario riceve l’ack e si disconnette
a sua volta.
Disconnessione negoziata
(quando va tutto bene).
 1: Lascia la connessione Mittente-Destinatario
 2: Lascia la connessione Destinatario-Mittente
Disconnessione in caso di
guasti (1):
 Se si perde
l’ack, il
destinatario
aspetta un
timeout e poi
chiude la
connessione
Disconnessione in caso di
guasti (2):
 Se invece si perde il
disconnect del
destinatario, il
mittente aspetta un
timeout e re-invia il
suo disconnect.
 Questa operazione si
può ripetere più volte
(se il disconnect si
perde sempre),
finchè il mittente non
chiude bruscamente.
Ultime notizie sulle
connessioni:
 Ovviamente occorre stabilire opportunamente i
time out in modo che non siano troppo corti o
troppo lunghi.
 I timeout si stabiliscono in genere intorno a 60
secondi.
 Se trascorre il timeout senza che arrivino dati, le
connessioni si chiudono automaticamente.
 Se non si vuole far cadere la connessione, anche
senza che si trasmetta nulla, occorre trasmettere
dei “DUMMY”, cioè dei pacchetti vuoti.
FINE