Protocolli a Finestra Flashcards
Cos’è e cosa permette di fare un protocollo a finestra?
permette di migliorare l’efficienza e la sicurezza delle trasmissioni e soprattutto
- controllare il flusso
- recupero di errori
Tra che intervalli varia la probabilità di errori sui bit?
da 10^-12 della fibra ottica a 10^-3 di un canale rumoroso
Cos’è il bit di parità e cosa permette di fare?
- caso particolare di CRC ovvero cycling redundancy check
- conta gli 1 presenti nel dato e mette 1 se sono in numero dispari e 0 se sono in numero pari
- riconosce gli errori in numero dispari
- non corregge
Cos’è il CRC?
- cycling redundancy check
- viene calcolato prima e dopo la trasmissione e confrontato
Cos’è il codice a ripetizione e cosa permette di fare? Qual è lo svantaggio?
- ongi byte di dato è mandato tre volte
- si riconosce il dato corretto per maggioranza
- svantaggio: c’è più ridondanza
Cos’è la parità di riga e di colonna e cosa permette di fare? Qual è lo svantaggio?
MANCA
Cosa sono FEC e ARQ?
FEC: forward error correction
ARQ: automatic repeat request
Quali sono gli algoritmi dei protocolli a finestra?
FEC e ARQ
Caratteristiche FEC
FEC: forward error correction
ci sono tanti bit di parità e vengono usati per correggere gli errori senza che venga ritrasmesso il pacchetto
Caratteristiche ARQ: cosa utilizza e cosa permette di fare
ci sono pochi bit di parità che si accorgono dell’errore in ricezione e richiedono la ritrasmissione -> i pacchetti sbagliati vengono buttati via
Per il controllo di sequenza bisogna avere anche il numero di sequenza oltre ai bit di parità
Quali sono le tecniche ARQ
- stop and wait
- go back n
- selective repeat
Cos’è l’ACK e cosa contiene?
È la PCI del pacchetto di riscontro e contiene i bit di parità e il numero di sequenza
Come funziona lo stop and wait?
- Il trasmettitore fa una copia della PDU da inviare
- invia la PDU
- fa partire il timeout e attende l’ACK
- Il ricevitore controlla se la PDU è corretta (altrimenti la scarta), poi controlla il numero di sequenza e se non ci sono errori viene inviata una conferma di ricezione, ovvero il numero della PDU
- Se il numero di sequenza è errato il ricevitore manda il numero del pacchetto atteso.
- Successivamente la PDU viene consegnata ai livelli superiori.
- Se il timeout scade prima dell’arrivo della conferma, il trasmettitore ripete la trasmissione facendo ripartire il timeout.
- Se invece riceve l’ACK ne controlla la correttezza: se è errato viene buttato via, se è corretto viene controllato il numero di sequenza. Se entrambi i parametri sono corretti il trasmettitore butta la copia e prosegue con la PDU successiva: aumentando il proprio numero di sequenza.
Il protocollo Stop and Wait in assenza di errori permette di trasferire con successo un pacchetto per RTT (Round Trip Time) e ciò può essere poco efficiente a causa di elevati ritardi di attesa delle conferme.
Cos’è l’RTT?
Durata del ciclo di trasmissione - ricezione (andata e ritorno)
Alternating bit
Questa variante prevede che il numero di sequenza possa assumere in modo alternato solo i valori $(0, 1)$.
- ACK(1): riceve il pacchetto 0 e si aspetta il pacchetto 1
- ACK(0): riceve il pacchetto 1 e si aspetta il pacchetto 0
Cosa cambia nel Go back N rispetto allo stop and wait?
si possono mandare N PDU mentre la finestra di ricezione è sempre la stessa
da cosa dipende la dimensione di W_T e W_R?
dallo quantità di memoria allocata in trasmissione e ricezione
Quanto valgono W_R e W_T nel go back n?
W_T è generico mentre W_R = 1
Come sono WT e WR tra loro?
indipendenti
Qual è il termine corretto per la WT? Perchè?
sliding window, pensare all’immagine
Quando la finestra scorre?
Alla ricezione di un’ACK
algoritmo go back n
il trasmettitore:
- può inviare fino a N = W_T PDU e di ognuna si fa una copia
- attiva un solo orologio per le N PDU che viene resettato ad ogni trasmissione: se per esempio si mandano i pacchetti da 1 a 10 viene attivato l’orologio per l’1 che passerà al 2 quando l’ACK dell’1 è arrivato
- per ogni ACK in sequenza ricevuto fa scorrere in avanti la finestra di tanti pacchetti quanti sono i pacchetti confermati
- se il timeout scade prima della conferma di ricezione \textit{relativa alla PDU che ha settato il timeout} ripete la trasmissione di tutte le PDU non ancora confermate
Il ricevitore invece:
- controlla la correttezza della PDU e controlla il numero di sequenza
- se la PDU è corretta invia la conferma di ricezione
- se la PDU contiene il primo numero di sequenza non ancora ricevuto, viene consegnata ai livelli superiori
problemi stop and wait
permette di trasferire un solo pacchetto per RTT
problemi go back n
il ricevitore può accettare solo PDU in sequenza
POI?
problemi selective repeat
se si usano gli ACK cumulativi e se il trasmettiore riceve la richiesta del pacchetto i-esimo (ACK(i)), dal momento che non sa se ci siano stati problemi solo con l’i-esimo o anche con i successivi, mandi anche tutti quelli dopo sovraccaricando il canale.
Se invece l’ACK è selettivo viene rimandato solo il singolo pacchetto.
POI?
cosa cambia nel selective repeat
- W_T = N e W_R = M (di solito N=M).
- Se nel protocollo Go Back N il ricevitore può accettare solo PDU in sequenza, nel selective repeat il ricevitore può accettare anche PDU corrette ma fuori sequenza.
algoritmo selective repeat
Esistono diverse possibili implementazioni: qui consideriamo ACK cumulativi e timer associati alla finestra.
Questo protocollo è molto utile nei canali non sequenziali poiché si ha modo di immagazzinare i pacchetti fuori sequenza nell’attesa di quelli che li precedono.
Il trasmettitore si comporta come nel Go-Back-N, mentre il ricevitore deve:
- controllare la correttezza della PDU
- controllare il numero di sequenza
- se la PDU è corretta ed in sequenza viene consegnata al livello superiore (eventualmente a tutte le altre PDU ricevute in sequenza)
- se la PDU è corretta ma non in sequenza: se è dentro la finestra di ricezione la memorizza, altrimenti la scarta.
- invia comunque un ACK relativo all’ultima PDU ricevuta in sequenza
Il rischio è che se si usano gli ACK cumulativi e se il trasmettiore riceve la richiesta del pacchetto i-esimo (ACK(i)), dal momento che non sa se ci siano stati problemi solo con l’i-esimo o anche con i successivi, mandi anche tutti quelli dopo sovraccaricando il canale.
Se invece l’ACK è selettivo viene rimandato solo il singolo pacchetto.
tipi di ack
ACK cumulativo: si notifica la corretta ricezione di tutti i pacchetti con numero di sequenza inferiore a quello specificato nell’ACK (utilizzato negli esercizi)
ACK selettivo (o individuale): si notifica la corretta ricezione di un pacchetto particolare (“ho ricevuto il pacchetto n, ma non ti do indicazioni sui pacchetti successivi o precedenti”)
ACK negativo (NAK): si notifica la richiesta di ritrasmissione di un singolo pacchetto (se l’ACK significa \textit{è stato ricevuto}, il NACK significa \textit{non è stato ricevuto})). In questo caso è il ricevitore che ha la responsabilità di identificare pacchetti persi. NAK(n) significa “ritrasmetti il pacchetto n” ma non dà indicazioni su quali pacchetti siano stati ricevuti.
Piggybacking: nel caso di flussi di informazione bidirezionali, è sovente possibile scrivere l’informazione di riscontro (ACK) nella intestazione di PDU di informazione che viaggiano nella direzione opposta. Permette di risparmiare ACK.
efficienza e throughput
manca
Cosa si intende per finestra di trasmissione e di ricezione?
La finestra di trasmissione $W_T$ rappresenta la quantità massima di PDU in sequenza che il trasmettitore è autorizzato ad inviare in rete senza averne ricevuto riscontro (ACK). La dimensione della $W_T$ è limitata dalla quantità di memoria allocata in trasmissione. La finestra di trasmissione $W_T$ rappresenta anche il numero massimo di PDU presenti contemporaneamente sul canale o in rete (inviate da uno stesso trasmettitore).
La finestra di ricezione $W_R$ rappresenta la sequenza di PDU che il ricevitore è disposto ad accettare e memorizzare. La dimensione della finestra è limitata dalla quantità di memoria allocata in ricezione.
Questa finestra di ricezione serve per memorizzare i pacchetti nel caso in cui durante l’invio in sequenza qualche pacchetto venga perso (i pacchetti non possono essere inviati subito al livello superiore ma bisogna aspettare la ritrasmissione del pacchetto perso).