complementi sul controllo d’errore (parte iii)

10
Complementi sul controllo d’errore (parte III)

Upload: chase

Post on 09-Jan-2016

29 views

Category:

Documents


0 download

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

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.