Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP...

73
Griglie Computazionali File Transfer in Grids 1 File Transfer in Grids: TCP [email protected] INFN – CNAF Corso di Laurea specialistica in Informatica Anno Acc. 2005/2006

Transcript of Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP...

Page 1: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 1

File Transfer in Grids: [email protected]

INFN – CNAF

Corso di Laurea specialistica in Informatica

Anno Acc. 2005/2006

Page 2: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 2

Outline

• PART I: Transport Control Protocol (TCP)

• PART II: TCP: Controllo e prevenzione della congestione

• PART III: Ottimizzazioni

• References

Page 3: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 3

PART ITransport Control Protocol

Page 4: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 4

Application

Fabric

Connectivity

Resource

Collective

Grid Architecture

Transport ControlProtocol

Page 5: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 5

TCP secondo l’RFC 793 (*)

• 1 Basic Data Transfer

• 2 Reliability Flow Control

• 3 Multiplexing

• 4 Connections

• 5 Precedence and Security

• (*) RFC: Request For Comment

Page 6: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 6

TCP secondo l’RFC 793 (1)

• Basic Data Transfer: – The TCP is able to transfer a continuous stream of octets in each direction

between its users by packaging some number of octets into segments for transmission through the internet system. In general, the TCPs decide when to block and forward data at their own convenience. Sometimes users need to be sure that all the data they have submitted to the TCP has been transmitted. For this purpose a push function is defined. To assure that data submitted to a TCP is actually transmitted the sending user indicates that it should be pushed through to the receiving user. A push causes the TCPs to promptly forward and deliver data up to that point to the receiver. The exact push point might not be visible to the receiving user and the push function does not supply a record boundary marker.

Page 7: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 7

TCP secondo l’RFC 793 (2)• Reliability:

– The TCP must recover from data that is damaged, lost, duplicated, or delivered out of order by the internet communication system. This is achieved by assigning a sequence number to each octet transmitted, and requiring a positive acknowledgment (ACK) from the receiving TCP. If the ACK is not received within a timeout interval, the data is retransmitted. At the receiver, the sequence numbers are used to correctly order segments that may be received out of order and to eliminate duplicates. Damage is handled by adding a checksum to each segment transmitted, checking it at the receiver, and discarding damaged segments. As long as the TCPs continue to function properly and the internet system does not become completely partitioned, no transmission errors will affect the correct delivery of data. TCP recovers from internet communication system errors.

Page 8: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 8

TCP secondo l’RFC 793 (3)

• Flow Control: – TCP provides a means for the receiver to govern the amount of data sent by

the sender. This is achieved by returning a "window" with every ACK indicating a range of acceptable sequence numbers beyond the last segment successfully received. The window indicates an allowed number of octets that the sender may transmit before receiving further permission.

Page 9: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 9

TCP secondo l’RFC 793 (4)

• Multiplexing: – To allow for many processes within a single Host to use TCP

communication facilities simultaneously, the TCP provides a set of addresses or ports within each host. Concatenated with the network and host addresses from the internet communication layer, this forms a socket. A pair of sockets uniquely identifies each connection. That is, a socket may be simultaneously used in multiple connections. The binding of ports to processes is handled independently by each Host. However, it proves useful to attach frequently used processes (e.g., a "logger" or timesharing service) to fixed sockets which are made known to the public. These services can then be accessed through the known addresses. Establishing and learning the port addresses of other processes may involve more dynamic mechanisms.

Page 10: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 10

TCP secondo l’RFC 793 (5)• Connections:

– The reliability and flow control mechanisms described above require that TCPs initialize and maintain certain status information for each data stream. The combination of this information, including sockets, sequence numbers, and window sizes, is called a connection. Each connection is uniquely specified by a pair of sockets identifying its two sides. When two processes wish to communicate, their TCP's must first establish a connection (initialize the status information on each side). When their communication is complete, the connection is terminated or closed to free the resources for other uses. Since connections must be established between unreliable hosts and over the unreliable internet communication system, a handshake mechanism with clock-based sequence numbers is used to avoid erroneous initialization of connections.

Page 11: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 11

TCP secondo l’RFC 793 (6)

• Precedence and Security: – The users of TCP may indicate the security and precedence of their

communication. Provision is made for default values to be used when these features are not needed.

Page 12: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 12

Le funzioni di TCP nel dettaglio• Scambio di informazioni di controllo tra mittente e destinatario

• Affidabilita’ (reliability): dato un sistema trasmissivo inaffidabile – cioè soggetto ad errori di trasmissione e a perdita di unità di dati – viene simulata l’affidabilità attraverso la ritrasmissione delle unità di dato perse. Ciò avviene attraverso 1. identificazione della perdita di messaggio

2. segnalazione dell’avvenuta perdita attraverso il meccanismo di positive acknowledgement: periodicamente il destinatario comunica il numero di sequenza dell’ultimo byte ricevuto

• Identificazione dell’esatto processo di destinazione presente sull’end-node ricevente (piu’ processi possono ricevere dati in modo concorrente)

• Controllo di congestione

• Prevenzione della congestione

• Unita’ dati TCP: l’unita’ di dati generata dal protocollo TCP (e poi incapsulata in un messaggio IP) viene detta segmento

Page 13: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 13

Caratteristiche generali• Viene creata una connessione virtuale tra mittente e destinatario

attraverso lo scambio di informazioni di controllo (fase di call set-up).

• La creazione della connessione è seguita dalla fase di trasferimento dati vera e propria. Durante la trasmissione il protocollo TCP continua a scambiare informazioni di controllo. La connessione e’ di tipo bidirezionale: una direzione viene utilizzata per scambiare i byte di informazione utile (mittente destinatario), mentre la direzione opposta viene utilizzata per lo scambio di informazione di controllo (destinatario sorgente)

• Per le applicazioni di natura interattiva in cui deve essere minimizzato il ritardo di ricezione delle unità di dato (e.g. telnet), viene forzato l’invio di pacchetti non appena è disponibile qualche byte di informazione (meccanismo di data push)

Page 14: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 14

Send e receive buffer• Si dice “buffer” un’area della memoria dell’applicazione che contiene i dati da

scambiare tra mittente e destinatario. I dati vengono mano mano copiati - in unità di memoria di dimensione configurabile da parte di una applicazione - nell’area di memoria del sistema operativo attraverso la system call write().

Per ottimizzare il rapporto tra le informazioni di controllo poste nell’intestazione e la quantità di byte di dati disponibili nell’area data, un dato messaggio vene inviato soltanto nel momento in cui la parte di dati disponibile nel buffer eccede una data soglia configurabile.

• Send buffer: area di memoria in cui TCP pone i messaggi in attesa di trasmissione; il send buffer è anche detto “send socket buffer”.

• Receive buffer: area di memoria del sistema operativo in cui TCP pone i messaggi ricevuti; il receive buffer è anche detto “receive socket buffer”

• Per ogni nuova connessione vengono allocati una nuova coppia di send e receive buffer

Page 15: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 15

Send e receive buffer (cont)

dati dati

Applicazione 1 Applicazione n

...

Connessione 1

Connessione n

SEND SOCKET

RECEIVE SOCKET

write() write()

AREE DI MEMORIA DELLE APPLICAZIONI

AREA DI MEMORIA DELLE SISTEMA OPERATIVO

Page 16: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 16

Segmento

• Viene definita segmento la parte dati di una unita’ di trasmissione del protocollo TCP .

• Viene definito messaggio l’unione del segmento e dell’intestazione TCP.

• La dimensione massima di un segmento e’ pari alla dimensione massima del pacchetto IP, esclusi i byte dell’intestazione TCP e IP. Essa viene definita Maximum Segment Size (MSS):

MSS = MTU – sizeof(TCP header) – sizeof(IP header)

Intestazione TCPdati

SEGMENTO TCP

MESSAGGIO TCP

Page 17: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 17

Intestazione TCP: formatoSource port Destination port

Sequence number

Acknowledgement number

Offset Reserved Code Window

Checksum Urgent pointer

Options Padding

Data

...0 8 16 31

Source/destination port: identificazione dell’applicazione mittente/ricevente attive rispettivamente sul nodo mittente IP_source e nodo destinatario IP_destSequence number: numero di sequenza del primo byte del campo Data nell’ambito del flusso di byte generati dalla sorgente (ne identifica la posizione)Acknowledgement number: numero di sequenza del primo byte di dati atteso. Tale numero corrisponre al numero di sequenza successivo al numero di sequenza dell’ultimo segmento correttamente ricevuto. Il numero di sequenza si riferisce al flusso generato nel senso opposto del traffico (gli ackknowledgement sono generati sempre dal ricevente di un dato stream e quindi viaggiano nel senso inverso del flusso dati).

Page 18: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 18

Intestazione TCP: formato (cont)Offset: indica la dimensione della porzione Data del segmento TCPReserved: campo non specificato, riservato ad usi futuriCode: codice che identifica la funzione del segmento (e.g. Segmento di apertura di una connession: SYN, segmento di chiusura: FIN, segmento dati, segmento che include esclusivamente informazione di acknowledgement URG: urgent pointer set, il segmento non è soggetto a buffering al lato ricevente ACK: campo ACK valido PUSH: il segmento non è soggetto a buffering al lato mittente RST: reset della connessione SYN: synchronize sequence numbers FIN: il mittente ha raggiunto la fine del byte stream generato dalla

applicazioneWindow: il mittente/ricevente comunica al ricevente/mittente la quantità di memoria disponibile per momorizzare datiOptions: le opzioni servono per scambiare specifici elementi di informazione tra mittente e destinatario, come il Maximum Segment Size (la massima dimensione del segmento che può essere accettata)Checksum: controllo d’errore applicato alla sola intestazione TCP (non alla parte data), per il calcolo del codice di controllo d’errore si assume che il campo checksum contenga una stringa di 0

Page 19: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 19

Multiplexing di connessioni• Il multiplexing di connessioni consiste nella possibilita’ di stabilire molteplici

connessioni TCP concorrenti in trasmissione o ricezione in un dato nodo.A questo scopo, vengono utilizzate le porte TCP: ogni punto terminale di una

connessione in un dato host H e’ definito da un coppia di identificatori detta socket cosi’ formata:

Socket = (TCP port, IP address(H))Dunque una connessione TCP tra due nodi H1 e H2 e’ identificata dalla coppia di

socket:

Connessione = ( TCP source port, add(H1), TCP destination port, add(H2) )Dunque in un dato istante un socket puo’ essere utilizzato da piu’ di una connessione:

es. il socket associato ad un www server o ad un ftp server.

131.154.3.41

131.154.3.1

131.154.3.10Sock2=(port2, 131.154.3.41)

Sock1=(port1, 131.154.3.1)

Sock3=(port3, 131.154.3.41)Sock4=(port4, 131.154.3.10)

Sock5=(port5, 131.154.3.10)

conn1

conn2

conn3

Conn1=(sock1, sock4)Conn2=(sock2, sock4)Conn3=(sock3, sock5)

Page 20: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 20

Positive acknowledgement

P1 P2 P3 P4 P4 P5

ACK(s1+1) ACK(s2+1) ACK(s3+1) ACK(s3+1) ACK(s3+1)

timeout t

t

Sn: numero di sequenza dell’ultimo byte dell’n-esimo messaggio; il numero di sequenzaIniziale del primo byte nel flusso di dati viene definito in fase di call set-up

Svantaggio: ritardo tra la trasmissione di un messaggio e il successivo derivante dall’attesadell’acknowledgement

s1P1

s2P2

s3P3

s4P4

s5P5

Numero di sequenza del byteMITTENTE

RICEVENTE

ACK duplicati

Page 21: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 21

Sliding window• Ottimizzazione dell’algoritmo di positive acknowledgement in cui il mittente e’

autorizzato ad inviare m pacchetti (n byte) prima di porsi in attesa della ricezione dell’acknowledgement relativo al primo messaggio inviato.

• n rappresenta la dimensione della window, ovvero la quantita’ di dati che il mittente e’ autorizzato ad inviare dopo essersi posto in attesa dell’ack del primo messaggio della window stessa

• Nel caso in cui il tempo che intercorre tra l’invio del primo messaggio e la ricezione del relativo acknowledgement sia piccolo, il mittente può inviare dati in modo continuativo senza mai sperimentare periodi di inattività che limitano le prestazioni dell’applicazione.

• Il fenomeno contrario, in cui il mittente trascorre la maggior parte del tempo attendendo la ricezione dell’ack (per esempio su connessioni ad elevato tempo di propagazione, come nelle connessioni satellitari) viene detto: stop-and-wait.

• Il ricevente deduce la presenza di un messaggio perso nel caso in cui ack(Sn) non sia ricevuto entro un intervallo prestabilito, al termine del quale si procede con la ritrasmissione. La durata ottimale di tale timeout viene determinata stimando la media e la variazione del ritardo che intercorre tra la trasmissione di un messaggio e la ricezione del corrispondente acknowledgement (Round Trip Time)

Page 22: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 22

Sliding window (cont)

P1 P2

100by

P3 P4 P5 P6

ACK(s1) ACK(s2) ACK(s3) ACK(s4) ACK(s5)

timeout t

t

Sn: numero di sequenza dell’ultimo byte dell’n-esimo messaggio; il numero di sequenzaIniziale del primo byte nel flusso di dati viene definito in fase di call set-up

Ipotesi: ogni messaggio ha lunghezza costante di 100 by, la dimensione della window e’costante e pari a 400 by.

200by 300by 400by by

ACK(s3)

500by 600by 700by

P4 P5

ACK(s3)

800by

P6 P7 P5

ACK(s6) ACK(s7)

Page 23: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 23

Terminologia

• 1: sequence number vecchi che hanno già ricevuto un acknowledgement• 2: sequence number che non hanno ancora ricevuto un acknowledgement• 3: sequence number di pacchetti che non sono stati ancora trasmessi ma che posono essere

trasmessi essendo essi all’interno della window (SEND WINDOW)• 4: sequence number futuri relativi a dati che non possono essere trasmessi, essendo essi

esterni alla window

• 1: sequence number di pacchetti di cui è già stato inviato l’ack• 2: spazio di memoria disponibile per la ricezione di nuovi dati (RECEIVE WINDOW)• 3: sequence number futuri che non sono ancora ammessi

Byte sequence number1 2 3 4

AL LATO MITTENTE:

AL LATO RICEVENTE:

Byte sequence number

windowsend windowacked not acked

1 2 3receive windowacked Seq number non ancora autorizzati

Page 24: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 24

Terminologia (cont)

• offered window: la dimensione della finestra segnalata dal ricevente. L’offered window varia nel tempo, il valore massimo equivale alla dimensione di memoria disponibile per la memorizzazione di dati.

• Usable window: min [send window, offered window]

Page 25: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 25

PART IITCP: Controllo e prevenzione della congestione

Page 26: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 26

Controllo della congestione

• Per scoprire la presenza di un punto di congestione sul cammino di collegamento di due end-node, utilizzando un metodo che NON introduca traffico di monitoraggio aggiuntivo, può essere sufficiente effettuare una stima del ritardo di propagazione di un messaggio sul cammino (mittente destinatario mittente): RTT (Round Trip Time)

• Acknowledgement: messaggio inviato dal destinatario alla sorgente per segnalare che un dato messaggio Mi e’ stato ricevuto correttamente

• Data una stima del round trip time RTT, se dopo RTT sec ack(Mi) non e’ stato ancora ricevuto si assume che Mi sia stato perso e si procede con la ritrasmissione e la fase di controllo della congestione

Page 27: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 27

One-way delay e RTT• One-way delay: tempo che intercorre tra l’istante in cui l’ultimo bit del

messaggio viene trasmesso e l’istante in cui il primo bit raggiunge la destinazione remota (one-way delay RTT/2)

• data una connessione con n hop, detta Li la latenza dovuta alla memorizzazione e al forwarding del messaggio introdotta dall’i-esimo router, M la dimensione del messaggio, Ci e propi rispettivamente la capacita’ dell’i-esimo link di output e il tempo di propagazione del segnale fisico nel mezzo trasmissivo:

1-way Delay = ( M/ Ci + Li + propi )• Connessioni dominate dal delay:

Si tratta delle connessioni in cui il RTT e’ principalmente dovuto al tempo di propagazione fisica del segnale e dal tempo dovuto alle operazioni di memorizzazione e di forwarding nei router

Es: connessioni intercontinentali caratterizzate da un numero elevato di hop

• Connessioni dominate dalla capacita’ dei link di collegamento:Si tratta delle connessioni caratterizzate da link a bassa velocita’, per le quali il RTT di

un messaggio e’ fortemente influenzato dalla dimensione media del messaggio stesso, cioe’ 1-way delay e’ demoniato dal termine M/ Ci (Es: connessioni ISDN)

Page 28: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 28

Stima del Round Trip Time (RTT)• Componente dell’algoritmo di ritrasmissione necessaria per prevedere il tempo

necessario di ricezione di un acknowledgement; é importante non sottostimare RTT per evitare ristrasmissioni nel caso di aumento del tempo di trasmissione dovuto ad un aumentato carico di traffico

• Smoothed RTT (SRTT): SRTT(i) := SRTT(i-1)+(1- )M

– : filtro, valore raccomandato 0.90

– M: misura relativa al messaggio di cui si e’ ricevuto l’ack piu’ recente

• Retransmit timeout interval I: I = min[limSUP, max [limINF, ( *SRTT)]]

– : fattore di varianza del delay (es. =2 per un carico di traffico 30% capacita’ di linea)

– limSUP : limite superiore dell’intervallo (es. 1 min)

– limINF : limite inferiore dell’intervallo (es. 1 sec)

Page 29: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 29

Meccanismi di controllo di flusso

• Si dividono in due gruppi:– Congestion control (implementato dall’algoritmo “slow start”), serve per

fronteggiare situazioni di congestione grave, ovvero quando scade il timeout al lato mittente. E’ caratterizzato da un incremento esponenziale della usable window.

– Congestion avoidance viene adottato in assenza di congestione grave, ovvero solo in presenza di acknowledgement duplicati. Permette un incremento graduale della usable window (lineare)

Page 30: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 30

Congestion Control (Slow Start) e Congestion Avoidance: meccanismo di base

Slow Start Congestion Avoidance

Connection opening : cwnd = 1 segment

Exponential increase for cwnd until cwnd = SSTHRESH

cwnd = SSTHRESHAdditiveincrease for cwnd

Retransmission timeoutSSTHRESH:=cwnd/2cwnd:= 1 segment

Retransmission timeout SSTHRESH:=cwnd/2

•Exponential increase for cwnd :for every useful acknowledgment received, cwnd := cwnd + (1 segment size)

•Additive increase for cwnd : for every useful acknowledgment received, cwnd := cwnd + (segment size)*(segment size) / cwnd it takes a full window to increment the window size by one.

Page 31: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 31

CONGESTION CONTROL

Page 32: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 32

Slow startTCP entra nella fase slow start ogni volta che viene riscontrata la perdita di un messaggio

(cioè come conseguenza dello scadere di un timeout). TCP è nella fase di Slow start anche inizialmente, in apertura della connessione, e ogni qual volta una connessione TCP viene riattivata dopo un periodo di pausa

La fase slow start serve per limitare il numero di pacchetti in transito tra la sorgente e il destinatario in presenza di congestione oppure inizialmente, quando deve essere ancora determinata la frequenza di trasmissione dei pacchetti ottimale, per incrementare in modo graduale la frequenza di trasmissione

IMPLEMENTAZIONE: viene utilizzata una variabile chiamata “congestion window” (indicata con la sigla: cwind). Cwind è un parametro il cui valore varia durante le varie fasi di un trasferimento TCP secondo le seguenti regole:

• all’inizio e per ogni restart di una trasmissione: cwind=1 ack ricevuto: cwind=cwind+const (e.g. const=1)• Usable Window = min (cwind, RCV advertized window)

Il tempo necessario affinché cwind raggiunga una ampiezza pari a W (supponendo che W sia espresso in pacchetti) varia secondo la regola:

time = RTT * log2 W

CONGESTION CONTROL

Page 33: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 33

Slow Start (cont)• Vantaggi:

– non vengono inviati burst (=sequenze di pacchetti affiancati) che peggiorano la situazione di congestione nei colli di bottiglia della rate e nei router che iniettano traffico da una interfaccia I di input ad una di output O, dove

capacita(I) > capacita(O)

• Svantaggi:– Poiché la window viene ridotta di dimensione in presenza di congestione, in caso

di elevata percentuale di pacchetti persi (packet loss) la connessione non è mai in grado di sfruttare pienamente la banda disponibile su alcuni tratti della rete

– In caso di connessioni ad alto tempo di propagazione (RTT >>, per esempio su link satellitari, in cui il tempo di propagazione e’ la componente più significativa della latenza end-to-end), la durata della fase slow start è considerevole, con un conseguente calo delle prestazione e una latenza superiore necessaria per raggiungere uno stato di “equilibrio”

CONGESTION CONTROL

Page 34: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 34

P1

t

P2 P3

Ack(P1)Cwin=2Cwin=1

Ack(P4)Cwin=5

Ack(P5)Cwin=6

Ack(P6)Cwin=7

Ack(P7)Cwin=8

P8 P9 P10 P11 P12 P13 P14 P15

t

Ack(P2)Cwin=3

Ack(P3)Cwin=4

P4 P5 P6 P7

t

RTTPacket Time: intervallo di tempo fra 2 pacchetti consecutivi

Esempio

Ack(P8)Cwin=9

CONGESTION CONTROL

Page 35: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 35

CONGESTION AVOIDANCE

Page 36: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 36

Congestion avoidance• TCP si trova nella fase di congestion avoidance quando raggiunge una situazione di

equilibrio (cioè TCP non è soggetto a perdita di pacchetti). In questa fase TCP tenta ancora di aumentare il parametro cwind allo scopo di verificare la possibilità di aumentare la frequenza di trasmissione dei pacchetti per raggiungere la MASSIMA frequenza trasmisssiva ammessa dai link di collegamento presenti nel cammino tra la sorgente e il destinatario.

• AUMENTO DELLA FREQUENZA TRASMISSIVA: Nella fase di congestion avoidance il parametro cwind viene aumentato in modo più lento e

graduale, per esempio facendo in modo che anziché incremenatare esponenzialmente nel tempo (come nella fase di slow start), l’aumento sia lineare.

In fase slow start: ack ricevuto, cwind=cwind+const

In fase di congestion avoidance: ack ricevuto, cwind = cwind + const/cwind

1. const = 1 // se cwin espresso in numero di segmenti2. const = MSS*MSS // cwin espresso in byteovvero ad ogni scadere di 1 RTT, cwind aumenta all’incirca di 1 messaggio. Lo scopo e’ quello di

evitare la sovrastima della banda disponibile per non entrare nuovamente nella fase di slow start.

CONGESTION AVOIDANCE

Page 37: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 37

Congestion avoidance (cont)• DIMINUZIONE DELLA FREQUENZA TRASMISSIVA:

1. In presenza di ack duplicati (ack del medesimo sequence number Si) la window size viene ridotta secondo la regola moltiplicativa:

cwindi = d * cwindi-1 (d < 1, e.g. 1/2)

cwind e’ espresso in byte2. In presenza di un timeout che scade si passa alla fase di slow start:

cwind=1

In caso di congestione persistente la formula al punto 1. produce un effetto di decrescita esponenziale nel tempo del parametro (essendo applicata ad ogni messaggio iterativamente)

Anche in fase di congestion avoidance, in ogni istante:

W = min(cwind, RCV advertized win)

CONGESTION AVOIDANCE

Page 38: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 38

• Come si passa dalla fase di congestion control a quella di congestion avoidance e viceversa?Si utilizza una variabile (threshold T) tale che:

– Inizialmente T=64 KB

– Se cwind < T: TCP in fase di slow start (congestion control)

– Se cwind T: TCP in fase di congestion avoidance

• Quando si passa dalla fase di congestion avoidance a quella di congestion control?Al lato mittente ogni qual volta scade un timeout, il parametro T viene

dimezzato: T := cwind/2, e cwind=1

A questo punto comincia la fase di slow start.

CONGESTION AVOIDANCE CONGESTION CONTROL

Page 39: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 39

Slow start e congestion avoidance: esempio

Cwnd average of the last 10 samples.

Cwnd average over the life of the connection to that point

Slow start Congestion Avoidance

SSTHRESH

•Slow start : incremento rapido di cwnd•Congestion Avoidance : incremento piu’ lento della cwnd

Page 40: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 40

Infulenza del parametro threshold T sulle prestazioni

SSTHRESH = 730Kbyte

SSTHRESH = 1460Kbyte

Slow start

Congestion avoidance

Durante la fase di congestion avoidance e in assenza di perdite di paccheti, cwnd incrementa di un segmento per ogni RTT. Nel nostro caso, essendo tutti i pacchetti ricevuti correttamente, la window incrementa di 1460 byte (supponendo una MTU di 1500 by) ogni 175 ms.

Se la cwnd e’ pari a 730 kbyte, sono necessari almeno 4 minuti per ottenere una cwnd piu’ larga del prodotto bandwidth*delay (nel nostro esempio pari a 2,65 MByte). In altri termini, sono necessari almeno 4 min per ottenere un pieno utilizzo della banda.

Page 41: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 41

Oscillazioni di cwnd in caso di perdita di pacchetti

2) Fast Recovery (Temporary state to repair the lost)

1) A packet is lost

New loss

Cwnd when packets are lost because the window size is too large

Losses occur when the cwnd is larger than 3,5 Mbyte

Nei casi in cui la cwnd e’ in grado di superare il bandwidth-delay product, possono verificarsi perdite di dati che comportano un abbassamento delle prestazioni. Nell’esempio illustrato dal grafico, la cwnd supera il bandwidth delay product e il throughput medio (dati trasmessi/tempo) viene drasticamente ridotto. Le perdite sono dovute all’insufficiente quantita’ di memoria in una o piu’ code trasmissive lungo il cammino tra il mettente e il ricevente.

Slow start

Page 42: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 42

Linux 2.4: Auto-tuning• In nel kernel Linux 2.4, TCP adotta dei meccanismi di adattamento dinamico della

dimensione dei socket buffer (da cui dipende cwnd) in funzione della banda disponibile tra una data coppia di nodi.

• Se l’applicazione setta esplicitamente le dimensioni dei socket attraverso la funzione setsocketopt(), allora auto-tuning e’ disabilitato.

• La dimensione dei socket buffer dipende da:– La domanda di memoria kernel (in caso di penuria di memoria la dimensione dei socket viene

limitata o addirittura ridotta)

– Un insieme di parametri del kernel che regolano il meccanismo di auto-tuning (vedi slide successiva)

• Linux 2.4 duplica l’ammontare di memoria richiesta da una applicazione attraverso la funzione setsocketopt()

• Linux 2.4 limita la dimensione di cwnd (cwnd moderation) attraverso la stima in ogni istante della quantita’ di pacchetti in viaggio verso il ricevente (di cui il mittente non ha ancora ricevuto il corrispondente ACK). In questo modo non viene ecceduto il prodotto bandwidth*delay e vengono minimizzati fenomini di elevato ritardo (per l’effetto dell’accumulo di dati nel send socket buffer al lato mittente) e perdita dovuti all’accodamento negli apparati di transito.

Page 43: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 43

Parametri TCP nel Kernel Linux

• Linux: (http://www.iglu.org.il/lxr/source/Documentation/networking/ip-sysctl.txt)

• tcp_wmem – vector of 3 INTEGERs: min, default, max – min: Amount of memory reserved for send buffers for TCP socket. Each

TCP socket has rights to use it due to fact of its birth. Default: 4K

– Default: Amount of memory allowed for send buffers for TCP socket by default. This value overrides net.core.wmem_default used by other protocols, it is usually lower than net.core.wmem_default. Default: 16K

– max: Maximal amount of memory allowed for automatically selected send buffers for TCP socket. This value does not override net.core.wmem_max, "static" selection via SO_SNDBUF is referred to net.core.wmem_max. Default: 128K

Page 44: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 44

Parametri TCP nel Kernel Linux (cont)

• tcp_rmem - vector of 3 INTEGERs: min, default, max

• min: Minimal size of receive buffer used by TCP sockets. It is guaranteed to each TCP socket, even under memory pressure. – Default: 8K

• default: default size of receive buffer used by TCP sockets. This value overrides net.core.rmem_default used by other protocols. This value results in window of 65535 with default setting of tcp_adv_win_scale. – Default: 87380 bytes

• max: maximal size of receive buffer allowed for automatically selected receiver buffers for TCP socket. This value does not override net.core.rmem_max, "static" selection via SO_RCVBUF does not use this. Default: 87380*2 bytes.

Page 45: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 45

Parametri TCP nel Kernel Linux (cont)

• tcp_mem - vector of 3 INTEGERs: low, pressure, high

• low: below this number of pages TCP is not bothered about its memory appetite.

• pressure: when amount of memory allocated by TCP exceeds this number of pages, TCP moderates its memory consumption and enters memory pressure mode, which is exited when memory consumtion falls under "low".

• high: number of pages allowed for queueing by all TCP sockets. Defaults are calculated at boot time from amount of available memory.

Num pages < LOW

Num pages > LOW

Num pages > PRESSURE

TCP_r/wmem_minMEMORY PRESSURE MODE

Num pages < PRESSURE

TCP_r/wmem_defaultTCP_r/wmem_max

creation of additional TCP connections not allowed

Num pages < HIGH

Num pages > HIGH

Page 46: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 46

Parametri TCP nel Kernel Linux (cont)

If sockets are explicitly set at the application level, no autotuning is applied and these are the parameters checked:

• net.ipv4.tcp_rmem_max: max receive socket buffer size

• net.ipv4.tcp_wmem_max: max send socket buffer size

• net.ipv4.tcp_rmem_default: default receive socket buffer size

• net.ipv4.tcp_wmem_default: default send socket buffer size

Page 47: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 47

PARTE III

TCP: Transport Control ProtocolOttimizzazioni del protocollo

Page 48: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 48

Introduzione

Fast Recovery + Fast Retransmit

TCP SACK

Active Queue Management: Random Early Discard

Early Congestion Notification

Conclusioni

Sommario

Page 49: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 49

• Diverse ottimizzazioni proposte negli ultimi anni:– High Speed, Wireless, Link satellitari

• Congestion Control: migliorare il recupero dei pacchetti persi (quando la congestione si è già verificata)1. Fast Retransmit 2. Fast Recovery3. SACK

– Congestion Avoidance: prevenire la congestione in modo proattivo, riducendo il rate di trasmissione prima che essa si verifichi1. RED2. ECN

Introduzione

Page 50: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 50

Slow Start

Incremento Esponenziale

Incrementa CWND finche’CWND= SSTHRESH

Incremento Lineare

Congestion Avoidance

Cwnd = SSTHRESH

Retransmission TimeoutSSTHRESH = CWND/2CWND = 1 MSS

Open connection

CWND = 1 MSS

Retransmission TimeoutSSTHRESH = CWND/2CWND = 1 MSS

Incremento Esponenziale: CWND = CWND +MSS

Incremento lineare: CWND = CWND + (MSS * MSS) / CWND

Richiamo: Slow Start e Congestion Avoidance

Page 51: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 51

• OBIETTIVO:– la ritrasmissione di un pacchetto perso viene attivata senza dover attendere la

scadenza del’RTT Time Out. Infatti il periodo di inattivita` durante lo scadere del timeout causa un sottoutilizzo del canale trasmissivo.

• MECCANISMO:– Come nel TCP standard, nel caso che un pacchetto venga ricevuto fuori ordine

(per via di un cambiamento nell’ordine di consegna dei segmenti TCP al nodo ricevente o a causa della perdita di uno o piu` segmenti TCP), il ricevente rispedisce un ACK duplicato.

– Quando il mittente rileva un ACK duplicato, puo’ dedurre che l’altro end-node ha ricevuto un segmento fuori ordine e che probabilmente il pacchetto mancante e’ stato perso. Per questo motivo effettua la ritrasmissione singola del segmento atteso.

– Poiche’ il segmento mancante potrebbe essere stato oggetto di un ritardo, il mittente aspetta 3 ACK duplicati prima di procedere con la ritrasmissione. (L’assunzione e’ che in caso di permutazione nell’ordine di consegna, il numero di ack duplicati sia contenuto, mentre in caso di vera e propria perdita tale numero sia piu’ elevato)

1. Fast Retransmit

Page 52: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 52

PC

KT

1

PC

KT

5

PC

KT

6

PC

KT

2

PC

KT

3

PC

KT

4

PC

KT

3

AC

K 1

AC

K 2

AC

K 6

mittente

destinatario

RTT

AC

K 2

AC

K 2

AC

K 2

Congestion Window = 4 PCKT

Scenario con Fast Retransmit

(1) (2) (3)

Page 53: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 53

2. Fast Recovery

• OBIETTIVO:– Ottimizzazione delle prestazioni di TCP in caso di moderata congestione.

Infatti, ogni qual volta un timeout scade, il protocollo TCP standard pone CWND = 1 e passa nello stato slow start. Questo tipo di comportamento risulta eccessivamente aggressivo in caso di perdite sporadiche ed isolate di segmenti TCP.

• MECCASNISMO:– Dopo la ritrasmissione del segmento mancante, non si passa in slow start,

ma piuttosto si rimane in congestion avoidance:

• Fast retransmit e fast recovery sono normalmente implementati insieme

Page 54: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 54

Fast Recovery (cont)• Sequenza dell’algoritmo (*):

1. alla ricezione del terzo ack duplicato: ssthresh:= max (2*MSS, cwnd /2);

2. Il segmento mancante viene ritrasmesso (fast retransmit)3. Si assume che i tre ack duplicati corrispondano a tre segmenti correttamente

ricevuti: cwnd := ssthresh + 3*MSS4. Al primo ack ricevuto che garantisce un avanzamento della congestion window

(non si tratta di un ack duplicato): cwnd := ssthresh

Si assume che take ack sia quello ottenuto grazie alla ritrasmissione effettuata al passo 2. L’ack number contenuto in tale ack dovrebbe includere tutti i segmenti intermedi inviati dopo il segmento perso e prima della ricezione del primo ack duplicato.

(*) si assume che cwnd sia espresso in numero di MSS

Page 55: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 55

Slow Start

Incremento Esponenziale

Incrementa CWND finche’CWND= SSTHRESH

Incremento Lineare

Congestion Avoidance

Cwnd = SSTHRESH

Retransmission TimeoutSSTHRESH = CWND/2CWND = 1 MSS

Open connection

CWND = 1 MSS

Retransmission TimeoutSSTHRESH = CWND/2CWND = 1 MSS

SSTHRESH = CWND/2

Incremento Esponenziale

Fast Recovery

3 DUP ACK 3 DUP ACK

Ricevuto ACK mancante CWND = CWND/2

Retransmission TimeoutSSTHRESH = CWND/2CWND = 1 MSS

Fast Recovery (cont)

Page 56: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 56

• TCP puo’ sperimentare scarse prestazioni quando si verificano perdite multiple in una singola finestra di spedizione, poiche’ in questo caso l’utilizzo ripetuto del protocollo fast recovery comporta comunque delle interruzioni della trasmissione: il mittente deve infatti ogni volta attendere la ricezione di 3 ack duplicati (o nel caso peggiore lo scadere di un timeout).

• OBIETTIVO:– Informare il mittente in modo esplicito dei pacchetti che NON sono stati ricevuti

correttamente attraverso un meccanismo di Acknowledgement potenziato (attraverso il campo option dell’header TCP)

– Al contrario, il protocollo TCP standard utilizza un semplice meccanismo di ACK cumulativo, il quale permette al mittente di notificare al massimo della perdita di un singolo messaggio.

– Il mittente e’ autorizzato a ritrasmettere in ordine sequenziale solo i pacchetti che sono stati persi

• La possibilita’ di utilizzare l’opzione SACK viene negoziata all’apertura della connessione tramite il pacchetto SYN

• L’opzione SACK e’ spedita dal ricevente per informare il mittente dei blocchi non contigui di dati ricevuti ed e’ utilizzata solo in caso di presenza di blocchi di dati ricevuti in modo non contiguo (a causa della perdita di messaggi TCP o alla ricezione in un ordine diverso da quello di invio).

3. Selective Acknowledgment (SACK)

Page 57: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 57

ACK 1, []

ACK 1, [3]

ACK 3, [5,6]

ACK 1, [3], [5]

ACK 6, []

PCKT 1

PCKT 2

PCKT 2

PCKT 3

PCKT 4

PCKT 5

PCKT 4

PCKT 6

ACK 1, [3], [5,6]

Esempio: trasmissione di messaggi SACK

Nota: questo esempio mostra ilcomportamento del ricevente TCP che implementa il protocollo SACK, su ricezione di una data sequenza di messaggi TCP (e non rispecchia il reale meccanismo di congestion avoidance/control adottato dalla sorgente su ricezione di messaggi SACK e di ACK duplicati).

Page 58: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 58

Comportamento del nodo mittente• Il comportamento di un mittente TCP su ricezione di un messaggio SACK deve

rispettare le seguenti regole:– Non si deve procedere alla ritrasmissione di dati se un solo SACK è ricevuto

(questo per rendere il protcollo più robusto in caso di riordino di pacchetti).

– Il principio di ritrasmissione allo scadere di un timeout deve essere rispettato, così come il meccanismo di congestion control e avoidance.

– Uno o più messaggi mancanti (NON appartenenti ad un blocco SACK) possono essere ri-inviati, se il parametro cwnd lo permette (a differenza di Fast retransmit)

• In “esempio del meccanismo di acknowledgement”: – il mittente provvede alla trasmissione di uno o più messaggi mancanti (in base a

quanto permesso dal parametro cwnd) su ricezione del secondo SACK duplicato. Questo consente di partire con la ritrasmissione prima ancora di ricevere 3 ACK duplicati (in base all’algoritmo di fast retransmit).

– Viene inviato un nuovo messaggio solo su ricezione di un nuovo SACK.

Page 59: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 59

Block: blocco contiguo di byte ricevuti correttamente dal riceventeLength: numero dei blocchi non contigui contenuti nel campo “option”Left Edge: il numero di sequenza (32 bit) del primo byte del blocco Right Edge: il minimo numero di sequenza (32 bit) di byte non appartenente al blocco

Length

Left Edge of 1st Block

Right Edge of 1st Block

Left Edge of nth Block

Right Edge of nth Block

Destination portSequence number

Acknowledgement numberoffset Res Code Window

Checksum Urgent pointer

Options

Data...

Source Port

Formato del header TCPFormato dell’opzione SACK

Formato dell’opzione SACK

Byte sequence number

acked received received

Ack num Left edge Right edge

Page 60: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 60

Numero max di blocchi

• Data offset: è il campo dell’intestazione TCP che indica il numero di word di 32 bit contenute nell’header TCP. Essendo tale campo di 4 bit il numero massimo di word che una intestazione può contenere è pari a 15.

• Lunghezza minima dell’intestazione si registra quando il campo “options” è assente. La lunghezza minima è pari a 5 word (20 byte). Qundi la lunghezza massima dell’opzione SACK è pari a 10 word (40 byte).

• La lunghezza dell’opzione SACK è pari a ½ w + 2w*n dove n è il numero di blocchi contenuti nell’opzione, quindi in numero massimo di blocchi che possono essere inclusi è pari a 4. In presenza di altre opzioni, il numero reale di blocchi può essere inferiore.

Page 61: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 61

SACK: Esempi di spedizione di messaggi SACK• Esempio 1: The first 4 segments are received but the last 4 are dropped.

– The data receiver will return a normal TCP ACK segment acknowledging the sequence number of the first missing byte, with no SACK option.

• Esempio 2: The first segment is dropped but the remaining 7 are received. Upon receiving each of the last seven packets, the data receiver will return a TCP ACK segment that acknowledges sequence number 5000 and contains a SACK option specifying one block of queued data: Triggering Segment ACK Left Edge Right Edge

5000 (lost)

5500 5000 5500 6000

6000 5000 5500 6500

6500 5000 5500 7000

7000 5000 5500 7500

7500 5000 5500 8000

8000 5000 5500 8500

8500 5000 5500 9000

Page 62: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 62

SACK: Esempi di spedizione di messaggi SACK (cont)

• Esempio 3: The 2nd, 4th, 6th, and 8th (last) segments are dropped. – The data receiver ACKs the first packet normally. The third, fifth, and

seventh packets trigger SACK options as follows:

Triggering Seg. ACK 1st Blck 2nd Blck 3rd Blck Left Right Left Right Left Right Edge

5000 5500

5500 (lost)

6000 5500 6000 6500

6500 (lost)

7000 5500 7000 7500 6000 6500

7500 (lost)

8000 5500 8000 8500 7000 7500 6000 6500

8500 (lost)

Page 63: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 63

SACK: esempio del meccanismo di acknowledgement

Page 64: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 64

• Obiettivo: prevenire la congestione riducendo il rate di trasmissione prima che essa si verifichi.

• Il meccanismo classico di controllo della congestione di TCP considera la rete come una “scatola nera”.

• Usare la perdita dei pacchetti come la sola indicazione della congestione non e’ sufficiente per applicazioni sensibili alla perdita e al ritardo dei pacchetti (e.g. applicazioni multimediali)

• Due strategie:– Router-Centric: ogni router monitora la lunghezza della propria coda e ,

prima che la congestione si verifichi, notifica esplicitamente o implicitamente gli end-node (e.g. esempio di algoritmo: ECN)

– Host-Centric: gli end-point osservano il numero di pacchetti che riescono ad arrivare a destinazione e adattano il rate di conseguenza (e.g. TCP classico)

Metodi di Congestion Avoidance avanzati

Page 65: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 65

• Le perdite dei pacchetti in caso di congestione sono causate dalla saturazione dei buffer all’interno dei router

• Drop Tail: – il router in caso di overflow elimina i pacchetti eccedenti in modo

indiscriminato, non distinguendo tra i diversi flussi di pacchetti

– sincronizzazione delle perdite tra i flussi

• Active Queue Management: – gestione piu’ articolata delle code

Router-Centric: Active Queue Management

Page 66: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 66

• I meccanismi di AQM differiscono in base a:– Il metodo utilizzato per rilevare l’imminente congestione

– Il tipo di azione utilizzata per notificare la congestione

• Nel caso in cui la lunghezza stimata della coda ecceda una certa soglia configurabile, i pacchetti in arrivo vengono scartati in base ad una probabilità P.

SampleLen: lunghezza istantanea della codaAvgLen: lunghezza media della codaWeight: parametro compreso tra 0 e 1 che determina il peso del valore istantaneo rispetto alla media finora calcolata

AvgLen = (1 - Weight) * AvgLen + Weight * SampleLen

4. Random Early Detection (RED)

Page 67: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 67

MinThresholdMaxThreshold

AvgLen

If AvgLen <= MinThreshold

queue the packet

Else if MinThreshold < AvgLen < MaxThreshold

calculate probability P

drop the arriving packet with probability P

Else if MaxThreshold <= AvgLen

drop the arriving packet (i.e. drop probability is equal to 1)

RED (cont)

Page 68: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 68

5. Explicit Congestion Notification• La presenza di congestione viene stimata anche in assenza di pacchetti persi.• Comporta una modifica sia del software di gestione dei router sia degli stack

negli end-node. • L’indicazione da parte del router del superamento di una soglia di allerta per una

determinata lunghezza di coda, viene effettuata marcando i pacchetti IP in transito dalla coda.

• Grazie alla notifica di una imminente congestione, il mittente può ridurre la velocità di trasmissione senza subire una degradazione della prestazione dovuta alla perdita e alla conseguente ritrasmissione di un pacchetto.

• ECN non richiede che tutti i router intermedi debbano neccesariamente supportare il protocollo, in altre parole, ECN può essere implementato in modo incrementale.

• ECN richiede:– Segnalazione a livello IP (per notificare che un dato nodo è in grado di settare i 2 bit

ECN nell’intestazione IP, e per permettere ad un router di segnalare uno stato di cogestione imminente)

– Segnalazione a livello TCP:• per comunicare al mittente TCP che un messaggio ha sperimentato congestione • per comunicare al ricevente TCP che il parametro cwnd è stato ridotto in risposta alla

notifica del destinatario)

Page 69: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 69

ECN: riduzione della congestion window

• Meccanismo di reazione alla notifica di presenza di congestione:– Il mittente adotta il meccanismo di fast recovery (TTHRESH = ½ CWND;

CWND’ = ½ CWND)

– Il parametro CWND è ridotto secondo le seguenti regole:

• E’ ridotto solo una volta, i successivi messaggi SACK non generano ulteriori modifiche del parametro.

• Una volta ridotto, il parametro non viene più dimezzato fin tanto che il numero di byte pari al valore di di CWND appena prima della ricezione del messaggio SACK, non riceve il corrispondente ACK.

• Il parametro CWND non viene modificato nel caso in cui esso sia già stato ridotto recentemente (nel precedente intervallo di tempo pari al RTT).

Page 70: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 70

DS Field ECN

Campo TOS header IP

version Hlen TOS

Ident

PAD

Length

Offset

Checksum

Options (variable)

Destination Addr

Source Addr

ProtocolTTL

Flags

TOS: Type Of Service

DS Field: Differentiated Service

ECN: Explicit Congestion Notification

ECN Codepoint

Page 71: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 71

• Il campo CE del header IP e’ di 2 bit

• 10, 01 – usati dal mittente pe indicare che il protocollo di trasporto puo’

utilizzare l’opzione ECN

– i router devono trattarli come equivalenti

• 00 : indica un pacchetto che non usa ECN

• 11 : utilizzato dal router per notificare la presenza di congestione

ECN Codepoint

Page 72: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 72

• Il successo di Internet si basa sulla capacita’ di TCP di assicurare un servizio di trasporto efficiente, robusto e adattivo

• Le esigenze delle applicazioni e degli ambienti attuali sono molto diverse rispetto a quelle che hanno portato alla definizione dei sui mecchanismi originali– Wires Vs Wireless– Durata sessione – Reti ad alta velocita’

• Fairness: modifiche che portano ad un comportamento troppo aggressivo da parte del mittente porterebbe al collasso della rete

Conclusioni

Page 73: Griglie ComputazionaliFile Transfer in Grids1 File Transfer in Grids: TCP Tiziana.Ferrari@cnaf.infn.it INFN – CNAF Corso di Laurea specialistica in Informatica.

Griglie Computazionali File Transfer in Grids 73

Bibliografia

1. RFC 2001 (1997): TCP SLOW START, CONGESTION AVOIDANCE, FAST RETRANSMIT, FAST RECOVERY

2. RFC 1072: TCP Extensions for Long-Delay Paths 3. RFC 2018 (1996): TCP SELECTIVE ACKNOWLEDGMENT OPTIONS4. S. Floyd and V. Jacobson, Random Early Detection Gateways for Congestion

Avoidance, IEEE/ACM Transactions on Networking, 1(4), August 1993.5. RFC 3168 (2001): The Addition of Explicit Congestion Notification (ECN) to

IP 6. TCP VEGAS: END TO END CONGESTION AVOIDANCE ON A GLOBAL

INTERNET (L.S.Brakmo and L.L.Peterson, 1995)7. END TO END CONGESTION DETECTION AND AVOIDANCE IN WIDE

AREA NETWORKS (L.S.Brakmo, 1996)