TCP-parte3
Transcript
TCP-parte3
protocollo TCP versioni e implementazioni implementazioni TCP implementations use Slow Start in as many as three different ways: (1) to start a new connection (2) to restart transmission after a long idle period (3) to restart transmission after a retransmit timeout 2 implementazioni (2) If one segment is dropped from the initial window, there are three different ways for TCP to recover: 1. 2. 3. Slow-starting from a window of one segment, as is done after a retransmit timeout, or after Fast Retransmit Fast Recovery as is done after three duplicate ACKs Fast Recovery with SACK, for TCP where both the sender and the receiver support the SACK option 3 In generale 4 Evolution of TCP 5 Post 1990 6 politiche di trasmissione 7 politiche di trasmissione ● cosa trasmettere ■ ■ ■ ● quando farlo ■ ■ ● Sliding Window ACK SACK timeout (RTO) DupACK (#3) come farlo ■ ■ ■ ■ ■ ■ TCP-zero: No SS (Slow Start) OldTahoe: SS + CA (CongestionAvoidance) Tahoe: SS + CA + FR (Fast Retransmit) Reno: SS + CA + FR + FRec (Fast Recovery) Vegas: SS + CA + FRec + New FR NewReno: SS + CA + FR + FRec (calcolo RTO più accurato) 8 versioni TCP Meccanismi OldTahoe (1988) Tahoe (1988) Reno (1990) SACK (1996) NewReno (1996) Stima varianza RTT X X X X X Exp. backoff X X X X X Alg. Karn X X X X X Slow start X X X X X Dynamic window control X X X X X X X X X+ X X X+ X X? Fast retransmit Fast recovery Selective ACK 9 BSD pre-4.3 : nessun meccanismo di controllo della congestione. Trasmette tanti pacchetti quanti necessari a riempire la finestra di ricezione. Stima del valore di RTT primitiva e controllo di flusso tipo GoBack-N BSD 4.3 Tahoe : calcolo di RTO con algoritmo di Jacobson e introduzione delle tecniche di controllo della congestione BSD 4.3 Reno : Introduzione di Fast Recovery BSD 4.4 : Multicasting e introduzione delle Long Fat Pipes. TCP Vegas : Nuovi meccanismi di stima per RTT e gestione delle finestre di spedizione. TCP Boston : TCP ottimizzato per reti ATM. 10 BSD 4.3 Tahoe ● ● realizzata da Jacobson (1988) meccanismi previsti: ■ ■ ■ ■ ■ ■ Slow start Congestion avoidance Fast Retransmit Variazioni all’algoritmo di stima RTT Exponential Backoff per la trasmissione Algoritmo di Karn 11 TCP Versions: Tahoe set window to 1, and do slow start! X X X X Sequence No Time 12 performance di Tahoe ● Tahoe TCP è sensibile alla perdita di pacchetti ■ Window Size is set to minimum value after packet loss. ■ Every packet loss is assumed to be serious congestion. ● La perdita dell'1% dei pacchetti causa una diminuzione del 50-75% del throughput 13 performance Tahoe 14 BSD 4.3 Reno ● ● modifiche alla versione Tahoe di TCP, introdotte da Van Jacobson nel 1990 presenta Fast Recovery ■ Timeout -> congestione rilevante ● cwnd al minimo. Slowstart ■ 3 DupACK -> congestione non grave ● … almeno tre pacchetti sono arrivati dopo quello perso ● cwnd dimezzata. Congestion avoidance 15 BSD 4.3 Reno ● altre meccanismi ■ SLIP header compression ● ■ TCP header prediction ● ● ■ SLIP header compression, ottimizzazione della dimensione dello header del pacchetto per comunicazioni che non sfruttano le capacità del link (per esempio Telnet) su collegamenti punto-punto Seq ricevuto successivo all'ultimo: elaborazione veloce Altrimenti: normale: ricostruzione dell'ordine Path MTU discovery 16 TCP Versions: Reno Recover 1 packet loss ok, but multiple loss => timeout X X X X Now what? - timeout Sequence No Time 17 performance Reno window SS time CA SS: Slow Start CA: Congestion Avoidance fast retransmission/fast recovery 18 Problemi di Reno ● non riesce a recuperare una situazione di congestione in cui più pacchetti di una stessa finestra di trasmissione sono stati persi. In questo caso è costretto a ripartire con Slow Start dopo lo scadere del timeout. ● SACK può risolvere il problema, ma deve essere implementato da mittente e destinatario 19 TCP Vegas ● ● ● ● nuova soluzione (1994) per TCP, non inclusa nelle varie versioni di BSD sviluppato presso il Science Departement of Arizona University da Brakmo e Peterson con il supporto di National Science Foundation e ARPA. evoluzione della versione Reno. Le modifiche riguardano solo il lato mittente, portando un incremento delle prestazioni pari al 40-70% (senza sottrarre banda alle altre connessioni presenti) Idea chiave: sfruttare l'RTT per prevenire le congestioni. (Perché?) 20 TCP Vegas ● cerca di prevenire la congestione, adattando la portata dei dati in rete, in base alle variazioni della stima del valore di RTT ● Un aumento dell'RTT indica un 'allungamento' delle code dei router Slow start interrotta basandosi su RTT Tentativo di utilizzare almeno una posizione nelle code (ma non più di tre) durante congestion avoidance ● ● 21 TCP Vegas 22 BSD 4.4. NewReno ● TCP Reno, presenta alcune lacune nella gestione di alcuni casi di congestione. (perdite multiple) ● nuova versione di TCP (NewReno) sviluppata dalla Berkeley University nel 1999. ● si introduce lo stato 'fase di recupero' (Fast Retransmission Phase) nel quale vengono spediti i pacchetti mancanti. ■ ■ ■ ● in questa fase, non vengono spediti nuovi dati fino a quando tutti i pacchetti rimasti da confermare al momento della congestione, non siano stati ricevuti correttamente dal destinatario. Gli ACK ricevuti in tale fase, verranno considerati in maniera leggermente diversa dal normale. Infatti, il numero di sequenza presente nell’ACK può solo confermare dei pacchetti ritrasmessi nella fase di recupero e non quelli trasmessi prima della congestione. Questo tipo di gestione degli ACK va sotto il nome di partial ACK. Se ci si trova di fronte alla perdita di più pacchetti in una finestra di spedizione, si possono prendere in considerazione le opzioni SACK [RFC2582]. 23 NewReno Recover multiple losses in successive RTTs using notion of “partial ack”. No timeout. X X X X Now what? – partial ack recovery Sequence No Time 24 SACK X X X X Sequence No Time Now what? – send retransmissions as soon as detected 25 TCP e gestione delle code (queue) ● ● Eliminazione della coda (tail drop) ■ Se la coda del router è piena vengono i datagrammi vengono scartati ■ Rischio di 'sincronizzazione globale' (slow-start per tutte le connessioni) Scarto casuale anticipato (RED: random early drop) ■ ■ ■ Se la coda è piena il datagramma viene sempre scartato Se la coda è quasi piena, il datagramma viene scartato con probabilità legata allo spazio disponibile in coda Utilizzo della media pesata dello spazio disponibile per ignorare picchi istantanei 26 Varianti di RED ● ● Stochastic Fair Blue ■ Simile a RED ma autoconfigurante (probabilità modificata ogni volta che la coda è vuota o piena) Weighted RED ■ ● Probabilità diverse secondo Type of Service Adaptive / Active RED (ARED) ■ La lunghezza media della coda viene utilizzata per decidere la rapidità di adattamento alle variazioni (parametri media pesata) 27 Source Quench ● ● ● In caso di congestione il router invia un messaggio "ICMP Source Quench" al mittente. Il mittente riduce (al minimo) la finestra Contro: ■ ● In caso di congestione aumenta il traffico Pro: ■ Individuazione delle congestioni rapida 28 Explicit Congestion Notification (ECN) ● ● ● In caso di congestione il router imposta gli "ECN bit" nell'IP header. Il ricevente imposta "ECN echo" Il mittente, dopo la ricezione di “ECN echo”, imposta la finestra al minimo 29 Explicit Congestion Notification (ECN) ● Contro ■ ● ECN è più lento di Source Quench. Pros. ■ ■ Può prevenire la perdita di pacchetti Non aumenta il traffico 30 Problemi di TCP in reti a banda larga ● Dimensioni delle code dei router ■ ● Dimensioni dei buffer di spedizione e ricezione ■ ● Possono causare perdite di pacchetti I dati da spediti devono essere conservati fino ad ACK Wireless: ■ TCP potrebbe confondere la perdita di pacchetti dovuta a problemi radio con problemi di congestione ● ● Diminuzione non necessaria della velocità di trasmissione Difficoltà a ripristinare la velocità ottimale 31 FAST (FAST AQM Scalable TCP) TCP ● ● ● ● Congestion Avoidance per Long fat network (alto valore bandwidth*delay) Modifiche sender side Usa RTT in modo simile a Vegas Obiettivo: ■ ● Mantenere costante il numero di 'flying bits' Problemi: ■ Coesistenza con versioni di TCP 'loss based': viene prevenuta al congestione a vantaggio di chi non la previene 32 H TCP ● Loss-based, additive increase, mult decrease ● Il rate di incremento addittivo aumenta al passare del tempo dal precedente loss ● Unfair.... 33 TCP Illinois 34 Scalable TCP 35 Westwood (+) ● ● Variante di NewReno, modifiche solo al mittente Pensato per ■ ■ ■ ● ● ● Cammini con alti valori banda*latenza (large pipes) Potenziali perdite di dati (leaky pipes) Carico variabile (dynamic pipes) Agile probing (modifica di slow start) Eligible Rate basata su rate di ricezione ACK ■ Utilizzata nel calcolo di ssthresh e cwin Persistent Non Congestion Detection (PNCD) ■ 'Accellera' in caso di mancata congestione 36 Westwood (+) 37 versioni commerciali di TCP/IP ● ● ● Windows Linux MacOS 38 Windows ● ● Network Device Interface (NDIS) : interfaccia posta tra il livello 2 e 3 del modello OSI. Transport Driver Interface Specification (TDI) : interfaccia per il livello 4 del modello OSI. ■ utilizzo di Selective ACK [RFC2018] ed estensioni di TCP per ottenere alte prestazioni [RFC1323]. 39 Windows (2) ● ● ● Keep-Alive Messages : vengono scambiati dei messaggi tra i due host in comunicazione per sapere se sono ancora connessi. Time-wait Delay : nella fase di chiusura della connessione, prima di terminare la comunicazione, si deve attendere un tempo pari a 2MSL. In Windows 2000, questo tempo viene fissato per default a quattro minuti Calcolo dimensione di Receiver Window e Scaling Window meccanismi che permettono la spedizione di dati in reti molto performanti e con grandi periodi di latenza ■ è possibile specificare un fattore di scala che può portare la dimensione massima di un pacchetto, a uno, due o più volte il limite massimo convenzionale di 64KByte. 40 Windows (3) ● ● ● ● Delayed ACK : per ridurre il numero di pacchetti spediti, si utilizza una tecnica che attende un certo periodo di tempo, prima di inviare gli ACK, sfruttando la possibilità di utilizzare gli ACK cumulativi. In generale, per verificare l’arrivo di un nuovo pacchetto da confermare, si attendono 200ms. Selective ACK : è previsto l’utilizzo della tecnica di Selective ACK. Agli header vengono aggiunti 2 byte per ospitare tale opzione. Timestamps : ad ogni pacchetto spedito, vengono allegate delle informazioni sul momento esatto di trasmissione, in modo tale da permettere una accuratezza maggiore nel calcolo del valore di RTT. Meccanismi di controllo della congestione : Slow start, Congestion Avoidance, Fast Retransmit e Fast Recovery analogamente alla versione Reno di TCP. 41 Macintosh ● ● ● In MacOS X, è stato utilizzato un sistema di comunicazione interamente basato sul NetBSD 4.4 versione NewReno, con funzionalità per Long Fat Pipes (analogo a Window Scaling) e nuove metodologie di calcolo del valore di RTT basate su timestamp. Vengono inoltre implementate le direttive per un protocollo TCP ad elevate performance [RFC1323] 42 UNIX ● ● gli ambienti UNIX come Linux, Solaris, e tutte le versioni commerciali, utilizzano come punto di riferimento le versioni di BSD, contenute nelle diverse distribuzioni (NetBSD, OpenBSD, FreeBSD). La differenza di implementazione fra i vari sistemi operativi è pressoché minima e, come MacOS X, tutte basate sulla versione 4.4 di BSD. 43 Linux sysctl -w net.ipv4.tcp_congestion_control=westwood oppure echo "westwood" > /proc/sys/net/ipv4/tcp_congestion_control Oppure (modifica permanente) In /etc/sysctl.conf net.ipv4.tcp_congestion_control=westwood 44