TCP
Università
di Palermo
TCP
1
LA
Transport Control Protocol
Protocollo di trasporto usato più largamente nel mondo
La RFC 793 recita:
TCP is a connection-oriented, end-to-end reliable protocol designed to fit into
a layered hierarchy of protocols which support multi-network applications.
The TCP provides for reliable inter-process communication between pairs of
processes in host computers attached to distinct but interconnected computer
communication networks.
Very few assumptions are made as to the reliability of the communication
protocols below the TCP layer.
Università
di Palermo
TCP
2
LA
Evoluzione del TCP
Formalizzato nel Sep 1981
RFC 793 – Transmission Control Protocol
TCP fu definito formalmente in RFC 793 anche se successivamente furono
scoperti vari errori e inconsistenze che vennero corrette con la pubblicazione
di nuove RFC (Cfr. RFC 813, RFC 1122, RFC 1323)
In breve tempo è divenuto così popolare che l’ISO
derivò da esso uno standard, il TP-4
Università
di Palermo
TCP
3
LA
Evoluzione del TCP
(cont)
A partire dalla nascita evoluzione continua
RFC 813 – Delayed ACK
RFC 1072 – TCP Extension for Long-Delay Paths
RFC 1122 – Requirements for Internet Hosts
RFC 1185 – TCP Extension for High-Speed Paths
RFC 1323 - TCP Extensions for High Performance
RFC 2001 – TCP Slow start, Congestion avoidance, Fast retransmit and …….
RFC 2581 – TCP Congestion Control
RFC 2988 – TCP’s computing retransmission timer
..........................................
Università
di Palermo
TCP
4
LA
Protocol Architecture
TCP sopra IP (un layer connection-less e con poche funzioni)
Upper
Layers
Upper
Layers
Ampio range di richieste in un ambiente dinamico
End-to-End communication
TCP
TCP
IP
IP
IP
IP
Data Link
Data Link
Data Link
Data Link
Physical
Physical
Physical
Physical
S.net_1
Università
di Palermo
TCP
S.net_2
S.net_3
5
LA
Overview
TCP non risiede nei router
IP non fornisce sequenziamento
TCP deve fornire sequenziamento
IP non fornisce traffic acknowledgment
TCP deve fornire reliability
IP è connectionless
TCP deve fornire flow control
TCP deve fornire multiplexing
Università
di Palermo
TCP
6
LA
Major Features of TCP
Servizi all’ULP:
Connection oriented data management
Reliable data transfer
Resequencing
Go-back n protocol
Flow control (sliding window / credits)
Multiplexing
Full-duplex transmission
Precedence and security
Graceful close
Stream oriented data transfer
Push function
Università
di Palermo
TCP
7
LA
Stream Data Transfer
L’applicazione consegna quantità arbitrarie di dati al TCP come
un un flusso (stream) senza confini di record; il TCP non garantisce
che i dati verranno ricevuti negli stessi blocchi come trasmessi
Il TCP spezza questi dati in segmenti, ciascuno
dei quali si adatta ad un datagram IP
Lo stream originario è numerato per byte
Il segmento, formato da un numero intero di bytes, contiene il numero
di sequenza dei byte di dati
Università
di Palermo
TCP
8
LA
TCP connection
Process X
…
Process Y
port N
TCP
…
…
reliable
TCP connection
IP
port M
…
connections
sockets
TCP
IP
IP addresses
unreliable
host A
Università
di Palermo
TCP
IP datagrams
host B
9
LA
Transport address
Conosciamo Physical, Data Link e Network adddresses
In uno stesso host possibili più applicazioni contemporanee
Insufficienza degli address degli strati inferiori
Servono indirizzi per gli strati di trasporto e applicazione
In OSI
T-SAP
In TCP/IP
Protocol ID, Port, Socket
Università
di Palermo
TCP
10
LA
Layer’s addresses
Sending computer
Receiving computer
User Application
User Application
Internet Application
Internet Application
Protocol ID
Transport
Transport
Protocol ID
IP address
Network
Network
IP address
SAPs
EtherType
LLC
LLC
SAPs
EtherType
MAC address
MAC
MAC
MAC address
Physical
Physical
User
names
Ports
Università
di Palermo
TCP
User
names
Ports
11
LA
Port & Socket
Numeri di Port
255 per porte usate frequentemente (Well Known)
23
Telnet
25
SMTP
137
NETBIOS-NS
Socket = Port + IP Address
Una coppia di socket identifica una connessione
Università
di Palermo
TCP
12
LA
TCP Flow Control
TCP use a credit scheme to perform the flow control
This feature decouples acknowledgement from flow control
Each transmitted segment have to include in its header
three fields required for this flow control type:
Sequence Number
(SN)
Acknowledgement Number (AN)
Window
Università
di Palermo
TCP
(W)
13
LA
TCP Segments
Source Port
Destination Port
Sequence Number (SN)
Acknowledgment Number (AN)
Data
Offset
Reserved
Window
Flags
Checksum
Urgent pointer
Options + Padding
Data
Università
di Palermo
TCP
14
LA
Sequence Number
Rappresenta (a parte un valore iniziale) il numero del primo
byte di dati nel segmento
Si tratta di un numero di 32 bit , quindi può avere come valore
massimo 2 32-1
Tutti i calcoli riguardanti i sequence numbers devono essere modulo 2 32
Università
di Palermo
TCP
15
LA
Data Offset/Reserved bits
Data Offset (4 bits)
Il numero di word da 32 bit presenti nell’ header TCP
Indica il punto di inizio del campo data
Reserved bits (6 bits)
Reserved for future use
Must be zero
Università
di Palermo
TCP
16
LA
Flags
6 control bits
URG: Urgent Pointer field significant
ACK: Acknowledgment field significant
PSH: Push Function
RST: Reset the connection
SYN: Synchronize sequence numbers
FIN: No more data from sender
Università
di Palermo
TCP
17
LA
Window/Urgent Pointer
Window
TCP è un protocollo sliding window
Il numero di Bytes di dati, ad iniziare da quello indicato nel campo
Acknowledgement che il sender del segmento è disposto ad accettare
Urgent Pointer
Questo valore, sommato al sequence number del segmento, fornisce
il sequence number dell’ultimo ottetto in una sequenza di dati urgenti
Il ricevitore viene a conoscere la quantità di dati urgenti
Università
di Palermo
TCP
18
LA
Pseudo Header
32
Source IP Address
Destination IP Address
zero
Protocol
8
8
Università
di Palermo
TCP
TCP Length
16
19
LA
Options
In origine solo tre options:
Oggi molte altre
Università
di Palermo
TCP
Kind
Length
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
19
4
3
2
N
6
6
10
2
3
Option
End of option list
No operation
Maximum segment size
Window scale factor
SACK Permitted
SACK
Echo (obsoleted by option 8)
Echo Reply (obsoleted by option 8)
Timestamp
Partial Order Connection Permitted
Partial Order Service Profile
CC
CC.NEW
3
N
18
CC.ECHO
TCP Alternate Checksum Request
TCP Alternate Checksum Data
MD5 Signature
20
LA
Window Scale Option
Definita nella RFC 1323
Con TCP normale la SEG.WND definita tramite un campo da 16 bit
16
Dimensione massima della finestra = 2
1 = 65535 Bytes
Dimensione troppo piccola nel caso delle LFT (elephan)
Con Window Scale Option finestra definita con 32 bit
Per compatibilità SEG.WND espressa sempre con 16 bit
Nella option è trasmesso uno shift.cnt che fornisce lo shift per
passare dall’una all’altra finestra
Entambi i sistemi devono accettare la option, altrimenti non si applica
L’option è negoziata soltanto nell’handshake iniziale (SYN)
Università
di Palermo
TCP
21
LA
Port Assignmet
Host A
Host B
Host C
3
2
1
Source Port = 400
Destination Port = 25
+ IP Address
Source Port = 400
Destination Port = 25
+ IP Address
Source Port = 401
Destination Port = 25
Università
di Palermo
TCP
+ IP Address
22
LA
Passive and Active Opens
Instaurazione di connessione:
Controllo dell’esistenza del corrispondente
Negoziazione dei parametri opzionali
Allocazione delle risorse
Due tipologie:
Passive-open
Active-open
Università
di Palermo
TCP
23
LA
Transmission Control Block
Insieme di variabili che identifica la connessione ed il suo stato
Local and remote socket numbers
Pointers to send and receive buffers
Pointers to the retransmit queue
Security and precedence value for the connection
Current segment
Variables associated with send and receive sequence numbers
ISS
Initial send sequence number
SND.UP
Sequence number of last octet of urgent data
RCV.NXT Sequence number of next octet to be received
Università
di Palermo
TCP
RCV.IRS
Initial receive sequence number
…………
………………………………………………
24
LA
Retransmission Operation
TCP non usa NAK
In assenza di ACK, ritrasmissione
A
B
SN = 3
(300 bytes sent)
1
AN = 303
2
SN = 303
(300 bytes sent)
AN = 303
3
4
SN = 603
(300 bytes sent)
5
AN = 303
6
7
{
8
Università
di Palermo
TCP
SN = 303
(300 bytes sent)
SN = 603
(300 bytes sent)
AN = 903
25
LA
User Interfaces
Service Request
Primitives
Service Response
Primitives
UNSPECIFIED-PASSIVE
OPEN-ID
OPEN
OPEN-FAILURE
FULL-PASSIVE-OPEN
OPEN-SUCCESS
ACTIVE-OPEN
DELIVER
ACTIVE-OPEN-WITH-DATA
CLOSING
SEND
TERMINATE
RECEIVE
STATUS-RESPONSE
ALLOCATE
ERROR
CLOSE
ABORT
STATUS
Università
di Palermo
TCP
26
LA
Items Passed to IP
Il TCP passa alcuni parametri al sottostante modulo IP
Precedence
Normal/Low Delay
Normal/High Throughput
Normal/High Reliability
Security
Università
di Palermo
TCP
27
LA
Connection Establishment
Process A
Process B
Active OPEN
Passive OPEN,
waits for active request
SYN = 1; SN = k
SYN = 1; ACK = k+1; SN = j
ACK = j+1
Università
di Palermo
TCP
28
LA
Initial Sequence Numbers (ISN)
Possibili diverse istanze (incarnazioni) della stessa connessione
Problema:
Come evitare confusioni con i segmenti duplicati delle incarnazioni precedenti?
Bisogna evitare che i segmenti di una incarnazione utilizzino gli stessi SN dei
segmenti di una precedente incarnazione che possono ancora trovarsi in rete
Alla creazione di una connessione, uso di generatore di ISN legato al tempo
Scatto di un bit ogni
4 µs
Riciclo dopo 2^32 * 4*10^-6
4,55 h
Tempo di riciclo > MSL
Università
di Palermo
TCP
29
LA
Connection Management
CLOSED
Passive OPEN
Create TCB
rcv SYN
snd SYN, ACK
CLOSE
Delete TCB
CLOSE
Delete TCB
LISTEN
rcv SYN, snd ACK
SYN RCVD
rcv ACK of SYN
CLOSE
snd FIN
ESTAB
rcv FIN
Snd ACK
SYN SENT
rcv SYN, ACK
snd ACK
rcv FIN
snd ACK
Closed
Snd FIN
FIN WAIT-1
Active OPEN
Create TCB
Send SYN
CLOSE WAIT
CLOSE
snd FIN
CLOSING
LAST-ACK
rcv ACK of FIN
rcv ACK of FIN
rcv FIN
snd ACK
FIN WAIT-2
Università
di Palermo
TCP
TIME WAIT
rcv ACK of FIN
Time=2 MSL
del TCB
CLOSED
30
LA
Retransmission Timer
Problema: Stima del timer per Ritrasmissione
Send Delay (SD)
A
B
Processing
Time (PT)
Receive Delay (RD)
RTT = SD + RD + PT
Università
di Palermo
TCP
31
LA
Early Version
Media semplice
k
ARTT( k ) =
ARTT( k ) =
i =1
RTT( i )
k
k 1
RTT( k )
ARTT( k 1) +
k
k
k>1
Valori descrescenti
Valori crescenti
20
15
15
10
Osservazione
Media semplice
10
5
5
0
0
0
5
Università
di Palermo
10
TCP
15
20
25
30
0
5
10
15
20
25
32
30
LA
Smoothed Round-Trip Time
SRTT( k ) =
0
RTT( k ) +
1
RTT( k 1) +
2
RTT( k 2) + . . . +
cost
Per congruenza:
i
cost =
i =0
=
Università
di Palermo
cost
= RTT
i=0
<1
1
TCP
i =1
i
1
SRTT( k ) =
RTT(1)
i
SRTT( ) = RTT
Da cui
k 1
k
i =1
k i
(1
) RTT( i )
33
LA
Smoothed Round-Trip Time
) RTT( k ) +
SRTT( k ) = (1
SRTT( k ) = (1
k 1
k 1 i
(1
k 1
k i
i =1
) RTT( k ) +
k 1
(1
k 1 i
i =1
(2)
) RTT( i )
(1
) RTT( i )
) RTT( i ) = SRTT( k 1)
i =1
In conclusione relazione ricorsiva:
SRTT( k ) = (1
Università
di Palermo
TCP
) RTT( k ) +
SRTT( k 1)
34
LA
Smoothed and Simple Average
Valori decrescenti
Valori crescenti
12
25
10
20
8
Osserv .
15
Med. semplice
6
Med. sm.d a=0,5
4
Med. sm.d a=0,875
10
2
5
0
0
0
5
10
15
20
25
30
0
5
10
15
20
25
30
12
10
8
Osserv.
Med. semplice
6
Med. sm.d a=0,5
Med. sm.d a=0,875
4
2
Università 0
di Palermo
0
TCP
5
10
15
20
25
30
35
LA
Retransmission Timeout
IL Value for Timeout (VT) non può essere uguale a
VT = SRTT +
Logica migliore
RFC 793 presenta
Logica scorretta
VT =
SRTT
TCP
( > 1)
as an illustration la relazione
VT = min[Ubound, max(Lbound,
Università
di Palermo
SRTT
SRTT)]
= 0,8 ÷ 0 ,9
= 1,3 ÷ 2
Ubound = 60 s
Lbound = 1 s
36
LA
Round Trip Time variance
SRTT( k ) = (1
) RTT( k ) +
SRTT( k ) = SRTT( k 1) + (1
SRTT( k 1)
) [RTT( k )
SRTT( k 1)]
Lo standard originale non funziona bene con varianza elevata
3 problemi:
Con bit rate basso stima dipendente fortemente dai dati
Brusche ed imprevedibili variazioni di RTT provocata dal traffico internet
Possibile assenza di un riscontro immediato dei singoli segmenti
Università
di Palermo
TCP
37
LA
Round Trip Time Variance
(2)
RFC 793 tiene conto della variabilità di RTT con il fattore costante
Procedura migliore: basarsi sulla varianza di RTT
mdev
mean deviation
mdev ( X ) = E[ X
mdev ( X ) =
Università
di Palermo
TCP
n
i =1
E[X ] ]
xi E[ X ] pi
38
LA
Round Trip Time Variance
(3)
Nel caso presente
1
mdev ( X ) = n
1
mdev ( X ) = 2
n
2
n
i =1
n
i =1
xi E [ X ]
2
2
xi E [ X ]
1
(X ) =
n
n
i =1
(xi
2
E[ X ])
X n^2
n
i =1
Università
di Palermo
2
xi E [ X ]
TCP
n
n
i =1
(xi
2
E[ X ])
39
LA
Round Trip Time Variance
(4)
Per distribuzione gaussiana
mdev 2 ( X ) =
2
2
(X)
mdev approssimazione della varianza
Si vuole stimare
mdev
Si definiscono
ARRT( i ) = round -trip time stimato
AERR( i ) = RTT ( i )
Università
di Palermo
TCP
ARTT( i 1)
= errore di stima
40
LA
Round Trip Time Variance
(5)
Si può esprimere la mean deviation calcolata su k samples come
1
mdev k =
k
k
i =1
RTT( i ) E[ X ]
Si sostituisce ad E[X] il valor medio stimato su i -1 samples ARTT(i -1)
Si ottiene un valore stimato ADEV della mean deviation
1
ADEV( k ) =
k
k
i =1
RTT ( i ) ARTT( i 1)
1
ADEV( k ) =
k
Università
di Palermo
TCP
k
i =1
AERR( i )
41
LA
Round Trip Time variance
ADEV( k ) =
(6)
k 1
1
ADEV( k 1) +
AERR(k)
k
k
Valore di ADEV ottenuto con media semplice
Opportunità di pesare in modo differente i samples
Procedura di Van jacobson
Uso della media esponenziale
Espressione di SRTT
SRTT( k ) = (1
Università
di Palermo
TCP
) RTT( k ) +
SRTT( k 1)
42
LA
Round Trip Time Variance
(7)
1-g
SRTT( k ) = (1 g ) SRTT( k 1) + g RTT( k )
In analogia a:
AERR(k) = RTT(k) - ARTT(k-1)
Errore per media smoothed
SERR(k) = RTT(k) - SRTT(k-1)
Università
di Palermo
TCP
43
LA
Round Trip Time Variance
(8)
In analogia alla media smoothed di RTT media smoothed della deviation
SDEV(k) = (1-h)·SDEV(k-1) + h·|SERR(k)|
Ora più correttamente:
RTO(k) = SRTT(k) + f·SDEV(k)
Van Jacobson ha proposto:
g = 0,125
(
= 0,875)
h = 0,25
f = 2
Università
di Palermo
TCP
f = 4
44
LA
Round Trip Time Variance
Valori crescenti
(9)
Valori decrescenti
40
25
35
20
30
Osserv .
15
25
SDEV
10
RTO
f=2
RTO
f=4
20
15
10
5
5
0
0
0
5
Università
di Palermo
10
15
TCP
20
25
30
0
5
10
15
20
25
30
45
LA
Window Management
TCP self-clocking
Pr
Pb
Receiver
Sender
Ab
As
Università
di Palermo
TCP
Ar
46
LA
Window Management
•
(2)
Congestion Window
Congestion Window fissata dal sender
Allowed_Window =
min (receiver_advertisement, congestion_window)
Strategy:
Multiplicative Decrease Congestion Avoidance: Upon loss of a segment, reduce the
congestion window by half (down to a minimum of at least one segment).
For those segments that remain in the allowed window,
backoff the transmission timer exponentially.
Università
di Palermo
TCP
47
LA
Window Management
(3)
Segment Sequence Number [KB]
• Slow-start
Università
di Palermo
Send Time [s]
TCP
48
LA
Window Management
(4)
Con RFC 2001 introduzione di una partenza graduale
Avvio con finestra da un segmento e incremento fino al massimo
Slow Start (additive) Recovery
Whenever starting traffic on a new connection or increasing traffic
after a period of congestion, start the congestion window at the
size of a single segment and increase the congestion window by
one segment each time an acknowledgement arrives.
Università
di Palermo
TCP
49
LA
Window Management
(5)
Congestion window
increases exponentially
RTT
Increase by 1
segment per ACK
Time
Topening (W ) = RTT log 2 W
Sender
Università
di Palermo
TCP
Receiver
50
LA
Backoff esponenziale dell’RTO
RTO = Round trip Time Out
Siccome il timeout è dovuto probabilmente ad una congestione (pacchetto perduto
o round trip lungo), il mantenimento di RTO non è una buona idea
RTO viene incrementato ogni volta che un segmento è ritrasmesso
RTO =
*RTO
Normalmente
=2
Binary exponential backoff
Università
di Palermo
TCP
51
LA
Delayed ACK - SWS
• Silly Window Syndrome ( SWS)
RFC 793 asserisce genericamente che i dati devono essere
promptly acknowledged
Il receiver invia al sender la offered window
Il sender in base alla offered window calcola la usable window
Usable Window = Offered Window – Unacknowledged Data
Esempio:
Ricevitore
1000 bytes
Sender invia 5 segmenti da 200
Dopo il primo segmento il receiver invia un ACK
Al ricevitore nuovamente disponibile spazio per 1000
Università
di Palermo TCP
52
LA
Silly Window Syndrome
Il sender ricalcola la Usable Window = 1000 – 800 = 200
Il sender ha 50 bytes da inviare fino all’arrivo di un “push” point
Il sender invia un segmento da 50 bytes
Il sender invia un segmento da 150 bytes
Il receiver riceve il segmento da 50 bytes e comunica una
offered window di 1000 bytes
Nuova usable window di 50 bytes
Il sender invia un segmento da 50 bytes (anche in presenza di molti bytes)
Università
di Palermo
TCP
53
LA
Silly Window Syndrome
(2)
Occasionalmente, a causa di confini naturali, la finestra viene spezzata in due
La finestra non viene riunita naturalmente
Continuo invio di piccoli segmenti
Silly Window Syndrome
Per evitarla: Improved Window Algorithm
# Quando il receiver dispone di una piccola quantità di dati, riduce la O_w
Il sender non può inviare altri dati
Quando il receiver ha ricevuto abbastanza dati incremento la O_w
Università
di Palermo
TCP
54
LA
Silly Window Syndrome
(3)
Quando si deve riaprire la finestra ?
Troppo presto
SWS
Troppo tardi
Ritardo
Rule of thumb Reduce the offered window until the reduction
constitutes one half of the available space
Altro algoritmo:
Il sender calcola una U_w,
La confronta con la O_w,
Si ferma finchè la U_w non è maggiore di una frazione della O_w
Tipicamente 25 %
Università
di Palermo
TCP
55
LA
RTT Measurement
RTT calcolato partendo dalla differenza tra l’istante di trasmissione
e quello di arrivo ACK
Problema: Gli ACK non portano informazione circa il pacchetto a cui si riferiscono
Ambiguità dell’Acknowledgement
Scelta dell’istante della prima trasmissione
Scelta dell’istante di ritrasmissione
Università
di Palermo
TCP
Sovrastima di RTT
Sottostima di RTT
56
LA
Karn Algorithm
Risoluzione del problema della ambiguità con:
Echo option (Oct. 1988)
Algoritmo di Karn (Nov. 1991)
In caso di segmenti ritrasmessi il sender non misura RTT ( e non aggiorna RTO)
In caso di ritrasmissione calcolo di RTO non in base a RTT ma con la formula di backoff
RTO = 2 RTO
Uso ripetuto procedura di backoff fino a trasmissione singola
Università
di Palermo
TCP
57
LA
Scarica

Transport Control Protocol