Complementi sul controllo d’errore (parte I)
Introduzione Lo schema di gestione d’errore Idle RQ garantisce che i pacchetti: – arrivino non corrotti al ricevente; – vengano sempre ricevuti nel corretto ordine. R richiede a M la ripetizione dell’invio dei pacchetti che non sono stati ricevuti correttamente. Sia M che R possono avere buffer minimi: basta siano in grado di memorizzare un singolo pacchetto.
Problemi con Idle RQ M invia a R un solo pacchetto alla volta: -mentre M attende l’ACK per il pacchetto appena trasmesso, non può trasmettere altri pacchetti. Lo schema Idle RQ non è molto efficiente: -quando la velocità di connessione (bit rate) della linea è molto elevata; -quando il link che collega M a R è molto lungo.
Continuous RQ Lo schema di controllo Continuous RQ cerca di aumentare l’efficienza di utilizzo della connessione a spese della dimensione dei buffer di ricezione e trasmissione, che devono essere più capienti. L’idea di base: il mittente trasmette pacchetti continuamente “continuous” = continuo vs. “idle” = inattivo
Schema generale senza errori di trasmissione (1) Il mittente M: spedisce continuamente pacchetti [distinti dal numero progressivo di trasmissione I(N)]. conserva ogni frame spedito in un buffer detto lista di ritrasmissione o retransmission list. quando riceve l’ACK[N], M rimuove il pacchetto N corrispondente dal buffer. per ciascun frame spedito viene attivato un timer. Allo scadere del timer, se il pacchetto è ancora nella lista di ritrasmissione viene rispedito a R. memorizza in una variabile V(S) il numero del prossimo pacchetto da trasmettere.
Schema generale senza errori di trasmissione (2) Il ricevente R: quando riceve correttamente il pacchetto N, manda a M un pacchetto ACK(N) per confermare la ricezione. L’ACK contiene il numero N del frame ricevuto. mette il pacchetto ricevuto in una lista di attesa: la lista di ricezione o receive list. la variabile V(R) contiene il numero del successivo pacchetto da trasferire al livello applicativo superiore (che attende da M).
Schema generale senza errori di trasmissione (3)
Osservazioni In attesa del primo ACK, la retrasmission list cresce. Il tempo che intercorre tra quando M spedisce il pacchetto N e quando riceve la conferma ACK[N] è RTT=2T p (RTT=“Round Trip Time”). Il numero di pacchetti che M può spedire in questo intervallo di tempo è: K=(T ix +2T p )/ T ix =1+2RL/Dv = 1+2 dove: La retrasmission list deve contenere almeno K frame -> M deve avere un buffer ben più grande rispetto a Idle RQ. T p =L/v è il tempo di propagazione del segnale da M a R, ottenuto dividendo la lunghezza L della linea per la velocità v di propagazione del segnale. T ix =D/R è il tempo di trasmissione, cioè il tempo che M impiega a trasmettere il pacchetto, ottenuto dividendo la dimensione D del pacchetto per il bit-rate R della linea. FINE