[Reti di calcolatori] Esercizio TCP con Fast Retransmit e Fast Recovery
Ciao a tutti!
Sto facendo un esercizio riguardante il protocollo TCP, ecco il testo:


1) Handshake a tre vie
2) Il tempo complessivo dovrebbe essere 3,5 secondi, mentre l'evoluzione della congestion window è: 1 - 2 - 4 - 8 - 16 - 20 - 21 - (21+ $17/21$)
3) Il testo dice che i segmenti che cominciano con i byte 2701 e 18001 vengono persi, per cui i sono il 3° e il 20° segmento, giusto? Quindi quando si perde il 3° segmento, si pone la $SSTHRESH = (CWND) / 2$ , si ritrasmette subito il segmento e si pone la $CWND = SSTHRESH+3$. Quello che non riesco a capire come avviene l'evoluzione dei pacchetti, cioè i pacchetti dopo la nuova CWND, vengono trasmessi con l'algoritmo di Slow Start oppure Congestion Avoidance?
Spero di essere stato chiaro.
Grazie!
Sto facendo un esercizio riguardante il protocollo TCP, ecco il testo:


1) Handshake a tre vie
2) Il tempo complessivo dovrebbe essere 3,5 secondi, mentre l'evoluzione della congestion window è: 1 - 2 - 4 - 8 - 16 - 20 - 21 - (21+ $17/21$)
3) Il testo dice che i segmenti che cominciano con i byte 2701 e 18001 vengono persi, per cui i sono il 3° e il 20° segmento, giusto? Quindi quando si perde il 3° segmento, si pone la $SSTHRESH = (CWND) / 2$ , si ritrasmette subito il segmento e si pone la $CWND = SSTHRESH+3$. Quello che non riesco a capire come avviene l'evoluzione dei pacchetti, cioè i pacchetti dopo la nuova CWND, vengono trasmessi con l'algoritmo di Slow Start oppure Congestion Avoidance?
Spero di essere stato chiaro.
Grazie!
Risposte
Qualcuno può aiutarmi?
[Forse era meglio in ingegneria?]
E' parecchio non tocco gli argomenti, comunque le risposte (1) e (2) mi sembrano corrette. Per (3) direi che si tratta del 4° e 21° pacchetto, e per il resto non posso essere molto d'aiuto ché non me lo ricordo.
E' parecchio non tocco gli argomenti, comunque le risposte (1) e (2) mi sembrano corrette. Per (3) direi che si tratta del 4° e 21° pacchetto, e per il resto non posso essere molto d'aiuto ché non me lo ricordo.

Si, giusto. Si tratta 4° e 21°, errore mio.
Quindi provando a ragionare:
1) L'algoritmo parte ovviamente in Slow Start quindi vengono inviati $1+2$ pacchetti;
2) viene perso il $4°$, quindi le $SSTHRESH$ viene posta a $2=$ ($(CWND)/2$);
3) il pacchetto perso viene subito ritrasmesso e la $CWND$ viene posta a $5=$ ($SSTHRESH+3$);
4) quando la sorgente riceve il riscontro del pacchetto ritrasmesso si pone $CWND = SSTHRESH$;
5) da questo momento l'invio dei pacchetti segue l'algoritmo di Congestion Avoidance;
6) quindi l'evoluzione dei pacchetti è: 1 + 2 + 4 (perdita del 4° pacchetto) + 5 + 6 ecc...
E' giusto così?
Quindi provando a ragionare:
1) L'algoritmo parte ovviamente in Slow Start quindi vengono inviati $1+2$ pacchetti;
2) viene perso il $4°$, quindi le $SSTHRESH$ viene posta a $2=$ ($(CWND)/2$);
3) il pacchetto perso viene subito ritrasmesso e la $CWND$ viene posta a $5=$ ($SSTHRESH+3$);
4) quando la sorgente riceve il riscontro del pacchetto ritrasmesso si pone $CWND = SSTHRESH$;
5) da questo momento l'invio dei pacchetti segue l'algoritmo di Congestion Avoidance;
6) quindi l'evoluzione dei pacchetti è: 1 + 2 + 4 (perdita del 4° pacchetto) + 5 + 6 ecc...
E' giusto così?
Novità?
Ciao,
ho fatto lo stesso esercizio e sono arrivato alla tua stessa conclusione!
Pero' prendila con le pinze !!
EDIT:
domanda: la modalitta' Fast Recovery viene attivata al ricevimento del 3° ACK duplicato: quindi al 4° ACK con lo stesso Sequence Number? oppure al 3° ACK con lo stesso Sequence number?
ho fatto lo stesso esercizio e sono arrivato alla tua stessa conclusione!
Pero' prendila con le pinze !!
EDIT:
domanda: la modalitta' Fast Recovery viene attivata al ricevimento del 3° ACK duplicato: quindi al 4° ACK con lo stesso Sequence Number? oppure al 3° ACK con lo stesso Sequence number?
Da quello che ho capito la Fast Recovery viene attivata dopo che è stato ritrasmesso il pacchetto perso; in questo caso al 4° ed al 21° pacchetto.