Complementi sul controllo d’errore (parte III)

10
Complementi sul controllo d’errore (parte III)

description

Complementi sul controllo d’errore (parte III). Selective Repeat (richiesta esplicita). Come nello schema Idle RQ, per velocizzare la ritrasmissione di un pacchetto difettoso, il mittente M può inviare al ricevente R il pacchetto NAK di not-acknowledgment. - PowerPoint PPT Presentation

Transcript of Complementi sul controllo d’errore (parte III)

Page 1: Complementi sul controllo  d’errore (parte III)

Complementi sul controllo

d’errore (parte III)

Page 2: Complementi sul controllo  d’errore (parte III)

Selective Repeat (richiesta esplicita)

• Come nello schema Idle RQ, per velocizzare la ritrasmissione di un pacchetto difettoso, il mittente M può inviare al ricevente R il pacchetto NAK di not-acknowledgment.

• Alternativamente, dopo un NAK, R può smettere di inviare ACK.

Page 3: Complementi sul controllo  d’errore (parte III)

X

ACK(N+4)

Usando l’explicit request, ACK(N) notifica la ricezione di tutti i frame fino ad N compreso!

Dopo l’invio di un NAK, R smette di inviare ACK. Altrimenti un NAK corrotto porterebbe alla perdita del pacchetto!

Selective Repeat [richiesta esplicita]

Frame N+1 corrotto

Page 4: Complementi sul controllo  d’errore (parte III)

Go-Back-N (1)

Il metodo Selective Repeat è molto costoso in termini di buffer al ricevente. Viene utilizzato soprattutto:

• quando l’ordine di ricezione dei pacchetti non è importante (per esempio, quando i pacchetti sono molto piccoli);

• quando i pacchetti vengono riassemblati direttamente dal ricevente, prima di essere inviati al livello superiore (bit rate elevati, pacchetti piccoli).

Nei casi in cui i pacchetti possono essere più grandi, viene preferito lo schema Go-Back-N.

Go-Back-N è lo schema usato per TCP/IP

Page 5: Complementi sul controllo  d’errore (parte III)

Frame N+1 corrotto Go-Back-N (2)

Page 6: Complementi sul controllo  d’errore (parte III)

ACK N e N+1 corrotti

ACK(N) notifica la ricezione di tutti i frame fino ad N compreso!

Go-Back-N (3)

Page 7: Complementi sul controllo  d’errore (parte III)

Go-Back-N lato mittente[V(S) = 0][RL] = retransmission list;start:switch(evento) { case ‘arriva pacchetto dal livello superiore’ : assegnagli il numero V(S); V(S)++; mettilo in [RL]; trasmettilo; Timer pacchetto V(S) start; case ‘ACK[N]’ : if(corretto) Elimina pacchetti <= N da [RL], Stop Timers; else Trascura ACK; case ‘NAK[N]’ : case ‘scade timer pacchetto’ : for(i=1; i<=numero pacchetti in [RL], i++) trasmetti pacchetto i in [RL]; Timer pacchetto start;}goto start;

Page 8: Complementi sul controllo  d’errore (parte III)

Go-Back-N lato destinatario[V(R) = 0]

stato = "normale"

start:

switch(evento) {

case ‘pacchetto[N]’ :

if(corretto)

if(N == V(R))

stato = "normale"; timer NAK stop;

manda ACK[V(R)];

passa pacchetto al livello superiore, V(R)++;

else if( (N > V(R)) && (stato == "normale") )

invia NAK[V(R)]; Timer NAK start; stato = "nak";

else

manda ACK[V(R)], elimina pacchetto;

else

elimina pacchetto;

case ‘scade timer nak’ :

invia NAK[V(R)]; Timer NAK start;

}

goto start;

Page 9: Complementi sul controllo  d’errore (parte III)

Commenti

• Con lo schema Go-Back-N, al ricevente è richiesta una finestra di ricezione di solo 1 frame.

• Il mittente invece deve avere una retransmission list abbastanza grande da contenere tutti i pacchetti in attesa di un ACK dal secondario.

• La lista deve quindi contenere almeno (Tix+2Tp)/Tix

pacchetti.

Page 10: Complementi sul controllo  d’errore (parte III)

Piggybacking

Nei tre schemi ARQ considerati abbiamo sempre supposto che la comunicazione fosse half-duplex.

FINE

• In genere, le connessioni sono full-duplex e ciascuno dei due host si comporta sia da mittente che da ricevente.

• In ciascuna delle due direzioni fluiscono quindi sia pacchetti che ACK e NAK.

Per ridurre il flusso di pacchetti si utilizza una tecnica detta piggyback (portare sulla schiena).

Tutti i pacchetti contengono un codice I(N) che indica il loro ordine nella sequenza di spedizione e un codice di ACK o NAK

N(R) che indica l’ ordine per la direzione opposta.