Continuo TCP

Timer

è importante che il timer venga stimato nel modo corretto, perché:

  • troppo piccolo: i pacchetti non arrivano in tempo
  • troppo lungo: si ha una reazione lenta alla perdita di pacchetti

Come stimiamo RTT?

  • Sample RTT: il tempo trascorso tra l’invio del pacchetto e la ricezione dell’ACK, basandoci su questo andiamo a calcolare Estimated RTT come di seguito:
  • Estimated RTT: il valore tipico di è

La natura variabile del RTT ci porta a voler tener conto anche della deviazione standard dei valori Usando questo valore andiamo a calcolare il tempo massimo di ritrasmissione RTO(Retransmission TimeOut) come di seguito:

Nonostante RDT stabilisca che ad un pacchetto venga associato un timer, TCP riduce la complessita di gestione gestendo esclusivamente un timer alla volta. Dopo la ricezione dell’ACK dell’n-esimo pacchetto, il timer per il segmento n + 1 non ancora acknowledged viene avviato.

Per ridurre il tempo di attesa nasce la tecnica Fast Retransmit: se il sender manda tre ACK consecutivi per lo stesso pacchetto mancante (ovvero l’ACK dell’ultimo pacchetto consegnato con successo), viene attivata istantaneamente la ritrasmissione del pacchetto.

Controllo del flusso

Cosa succede se il ricevitore non è abbastanza veloce a riceve i pacchetti? Semplicemente viene usato un campo del pacchetto ACK chiamato receive window dove viene specificato dal mittente lo spazio massimo disponibile. Per gestire in modo ottimale questa finestra usiamo un algoritmo detto Nagle Algorithm che sarebbe questo:

if available_data > 0 then
    if window_size ≥ MSS & available_data ≥ MSS then
        send_a_MSS_segment
    else
        if waiting_for_an_ack == true then
            enqueue_data /* until an acknowledge is received */
        else
            send_data
        end if
    end if
end if

Questo algoritmo si comporta in modo diverso in base alla rete in cui si trova:

  • In reti con un basso RTT, questo algoritmo invia piccoli pacchetti con alta frequenza
  • In reti con un alto RTT, i dati vengono bufferizzati e inviati in grandi pacchetti Alcune volte per avere una forte reattività il sistema operativo disabilita questo algoritmo
Apertura della connessione

DANGER

Mi sono distratto, ha parlato di 2, 3, 4 way handshake

Chiusura della connessione

si usa un flag FIN dentro header TCP che viene impostato a 1 se quello è l’ultimo messaggio nella connessione.

Controllo di congestione

Il protocollo TCP gode di meccanismi per gestire la congestione, per ridurre la velocità di trasmissione e minimizzare i danni della congestione.

TCP Fairness

Ha fatto una dimostrazione che nel pdf di riferimento non c’è