Efficienza e controllo d’errore Introduzione Come abbiamo visto il controllo d’errore, necessario per ottenere un trasporto affidabile, si basa su: • somme di controllo (checksum); • correzione degli errori. Le tecniche di controllo d’errore si basano sull’idea di ritrasmettere in modo controllato i dati errati. Vediamo ora la relazione tra tecniche di ritrasmissione per il controllo d’errore ed efficienza nell’uso del canale di trasmissione. Specifiche del Mittente (M) [La variabile di stato V(S) contiene il numero del prossimo pacchetto da spedire; viene inizializzata a 0] while(forever) 1. se è disponibile, accetta un pacchetto dal livello superiore e assegnagli il numero V(S) 2. trasmetti il pacchetto V(S); V(S)++; Fai partire il timer; 3. se ricevi un ACK, è corretto e se V(S)-1 == V(R) [cioè al numero contenuto nell’ACK], ferma il timer, GOTO 1 4. se ricevi un ACK, è corretto e V(S)-1 != V(R), GOTO 3 5. se ricevi un ACK, e non è corretto, GOTO 3 6. se ricevi un NAK, trasmetti V(S)-1, fai ripartire timer, GOTO 3 7. se scade il Timer, trasmetti V(S)-1, fai ripartire timer, GOTO 3 Specifiche del Ricevente (R) [La variabile di stato V(R) contiene il numero del prossimo paccetto atteso; viene inizializzata a 0] while(1) • Se ricevi un pacchetto corretto: – se V(R) == V(S), manda un ACK[V(R)], passa il pacchetto al livello superiore, V(R)++ – altrimenti se V(R) != V(S), elimina il pacchetto ma manda un ACK[V(S)] • Se il pacchetto non è corretto, invia un NAK[V(R)] (solo nel caso di notifica esplicita) Efficienza Il protocollo idle RQ garantisce che i pacchetti siano ricevuti integri e nel corretto ordine. Ma quale è l’efficienza? Definiamo l’efficienza di utilizzo: U = Tix / Tt • Tix è il tempo di invio del pacchetto (il tempo che il mittente impiega ad inviarlo). • Tt è il tempo totale che intercorre tra l’invio di un frame è il successivo. Calcolo di U Avremo: Tt = Tp + Tix + Tip + Tp + Tax + Tap Trascurando i termini di secondo ordine, Tt = Tix + 2 Tp Quindi si ottiene: U = Tix / (Tix + 2 Tp) = = 1 / (1 + 2 Tp/Tix) = = 1 / (1 + 2) Come calcolare Tix? Tix = (numero bit nel frame) / (bit rate in bps) FINE