tcp - unipa.italcuri/materiale_telematica/transport control... · in osi t-sap in tcp/ip protocol...
TRANSCRIPT
TCP 1
Universitàdi Palermo LA
TCP
TCP 2
Universitàdi Palermo LA
Transport Control Protocol
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.
Protocollo di trasporto usato più largamente nel mondo
La RFC 793 recita:
TCP 3
Universitàdi Palermo 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
TCP 4
Universitàdi Palermo LA
Evoluzione del TCP (cont)
RFC 1122 – Requirements for Internet Hosts
RFC 2001 – TCP Slow start, Congestion avoidance, Fast retransmit and …….
RFC 1072 – TCP Extension for Long-Delay Paths
RFC 1185 – TCP Extension for High-Speed Paths
RFC 2581 – TCP Congestion Control
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
RFC 813 – Delayed ACK
RFC 1323 - TCP Extensions for High Performance
RFC 2988 – TCP’s computing retransmission timer
A partire dalla nascita evoluzione continua
TCP 5
Universitàdi Palermo LA
Protocol Architecture
TCP sopra IP (un layer connection-less e con poche funzioni)
Ampio range di richieste in un ambiente dinamico
IP
Data Link
Physical
IP
TCP
Data Link
Physical
Up
per
Laye
rs
IP
Data Link
Physical
IP
TCP
Data Link
Physical
Up
per
Laye
rs
S.net_2S.net_3S.net_1
End-to-End communication
TCP 6
Universitàdi Palermo 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
TCP 7
Universitàdi Palermo LA
Major Features of TCP
Servizi all’ULP:
� Resequencing
� Flow control (sliding window / credits)
� Multiplexing
� Full-duplex transmission
� Precedence and security
� Graceful close
� Stream oriented data transfer
� Push function
� Reliable data transfer
� Connection oriented data management
� Go-back n protocol
TCP 8
Universitàdi Palermo LA
Stream Data Transfer
Il segmento, formato da un numero intero di bytes, contiene il numero
di sequenza dei byte di dati
Lo stream originario è numerato per byte
Il TCP spezza questi dati in segmenti, ciascuno
dei quali si adatta ad un datagram IP
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
TCP 9
Universitàdi Palermo LA
TCP connection
Process X Process Y
TCP
port N… …
TCP
port M… …
IP IP
reliable
TCP connection
unreliable
IP datagrams
connections
sockets
IP addresses
host A host B
TCP 10
Universitàdi Palermo LA
Transport address
In uno stesso host possibili più applicazioni contemporanee
Insufficienza degli address degli strati inferiori
Conosciamo Physical, Data Link e Network adddresses
Servono indirizzi per gli strati di trasporto e applicazione
In OSI T-SAP
In TCP/IP Protocol ID, Port, Socket
TCP 11
Universitàdi Palermo LA
Layer’s addresses
Physical
Sending computer Receiving computer
Physical
Internet ApplicationPorts
User ApplicationUsernames
Internet Application Ports
Transport Protocol ID
Network IP address
LLCSAPsEtherTypeLLC
SAPsEtherType
User ApplicationUsernames
NetworkIP address
TransportProtocol ID
MAC MAC addressMAC address MAC
TCP 12
Universitàdi Palermo LA
Port & Socket
Socket = Port + IP Address
Una coppia di socket identifica una connessione
Numeri di Port ≤ 255 per porte usate frequentemente (Well Known)
23 � Telnet
25 � SMTP
137 � NETBIOS-NS
TCP 13
Universitàdi Palermo 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 (W)
TCP 14
Universitàdi Palermo LA
TCP Segments
DataOffset Reserved
Source Port Destination Port
Sequence Number (SN)
Acknowledgment Number (AN)
Window
Urgent pointerChecksum
Options + Padding
Flags
Data
TCP 15
Universitàdi Palermo 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 -132
Tutti i calcoli riguardanti i sequence numbers devono essere modulo 2 32
TCP 16
Universitàdi Palermo LA
Data Offset/Reserved bits
Il numero di word da 32 bit presenti nell’ header TCP
Indica il punto di inizio del campo data
Data Offset (4 bits)
Reserved bits (6 bits)
Must be zero
Reserved for future use
TCP 17
Universitàdi Palermo LA
Flags
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
6 control bits
TCP 18
Universitàdi Palermo LA
Window/Urgent Pointer
Il numero di Bytes di dati, ad iniziare da quello indicato nel campo
Acknowledgement che il sender del segmento è disposto ad accettare
TCP è un protocollo sliding window
Window
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
TCP 19
Universitàdi Palermo LA
Pseudo Header
Source IP Address
Destination IP Address
zero Protocol TCP Length
32
8 8 16
TCP 20
Universitàdi Palermo LA
Options
In origine solo tre options:
Oggi molte altre
0 - End of option list1 - No operation2 4 Maximum segment size
Kind Length Option
3 Window scale factor3SACK Permitted4 2SACK5 NEcho (obsoleted by option 8)6 6Echo Reply (obsoleted by option 8)7 6Timestamp8 10Partial Order Connection Permitted9 2Partial Order Service Profile10 3CC11CC.NEW12
13 CC.ECHO
14 TCP Alternate Checksum Request315 TCP Alternate Checksum DataN19 MD5 Signature18
TCP 21
Universitàdi Palermo LA
Window Scale Option
Definita nella RFC 1323
Con TCP normale la SEG.WND definita tramite un campo da 16 bit
Dimensione massima della finestra = Bytes162 1 65535− =
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 perpassare dall’una all’altra finestra
Entambi i sistemi devono accettare la option, altrimenti non si applica
L’option è negoziata soltanto nell’handshake iniziale (SYN)
TCP 22
Universitàdi Palermo LA
Port Assignmet
Source Port = 400Destination Port = 25
3
Host A Host B Host C
Source Port = 401Destination Port = 25
2
Source Port = 400Destination Port = 25
1
+ IP Address
+ IP Address
+ IP Address
TCP 23
Universitàdi Palermo LA
Passive and Active Opens
Instaurazione di connessione:
Passive-open
Active-open
Controllo dell’esistenza del corrispondente
Negoziazione dei parametri opzionali
Allocazione delle risorse
Due tipologie:
TCP 24
Universitàdi Palermo 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
RCV.IRS Initial receive sequence number
………… ………………………………………………
TCP 25
Universitàdi Palermo LA
Retransmission Operation
TCP non usa NAK In assenza di ACK, ritrasmissione
A B
SN = 3(300 bytes sent)
1
AN = 3032
4 AN = 303
SN = 303(300 bytes sent)
3
5SN = 603
(300 bytes sent)
6 AN = 303
7 {SN = 303
(300 bytes sent)SN = 603
(300 bytes sent)
8 AN = 903
TCP 26
Universitàdi Palermo LA
User Interfaces
Service RequestPrimitives
Service ResponsePrimitives
UNSPECIFIED-PASSIVE
OPEN
FULL-PASSIVE-OPEN
ACTIVE-OPEN
ACTIVE-OPEN-WITH-DATA
SEND
RECEIVE
ALLOCATE
CLOSE
ABORT
STATUS
OPEN-ID
OPEN-FAILURE
OPEN-SUCCESS
DELIVER
CLOSING
TERMINATE
STATUS-RESPONSE
ERROR
TCP 27
Universitàdi Palermo 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
TCP 28
Universitàdi Palermo LA
Connection Establishment
SYN = 1; SN = k
SYN = 1; ACK = k+1; SN = j
ACK = j+1
Process B
Passive OPEN,waits for active request
Process A
Active OPEN
TCP 29
Universitàdi Palermo LA
Initial Sequence Numbers (ISN)
Problema:
Possibili diverse istanze (incarnazioni) della stessa connessione
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
TCP 30
Universitàdi Palermo LA
Connection Management
Passive OPENCreate TCB CLOSE
Delete TCB
Active OPENCreate TCBSend SYNCLOSE
Delete TCB
rcv SYNsnd SYN, ACK
rcv SYN, snd ACK
rcv ACK of SYN rcv SYN, ACKsnd ACK
ClosedSnd FIN
rcv FINsnd ACK
rcv ACK of FIN
rcv FINSnd ACK
Time=2 MSLdel TCB
CLOSED
LISTEN
ESTAB
CLOSING
TIME WAIT
SYN SENT
CLOSED
rcv ACK of FINrcv FINsnd ACKFIN WAIT-2
rcv ACK of FIN
CLOSEsnd FIN
FIN WAIT-1
LAST-ACK
CLOSE WAIT
SYN RCVD
CLOSEsnd FIN
TCP 31
Universitàdi Palermo LA
Retransmission Timer
Problema: Stima del timer per Ritrasmissione
A B
Send Delay (SD)
Receive Delay (RD)
ProcessingTime (PT)
RTT = SD + RD + PT
TCP 32
Universitàdi Palermo LA
Early Version
Media semplice
k
iRTTkARTT
k
i∑== 1
)()(
Valori descrescenti
0
5
10
15
20
0 5 10 15 20 25 30
Valori crescenti
0
5
10
15
0 5 10 15 20 25 30
OsservazioneMedia semplice
1)()1(1)( >∀+−−= kk
kRTTkARTTk
kkARTT
TCP 33
Universitàdi Palermo LA
Smoothed Round-Trip Time
costRTTkRTTkRTTkRTTkSRTT
k )1(...)2()1()()(1210 −++−+−+= αααα
Per congruenza:
RTTcost
RTTSRTT i
i
=⋅=∞∑∞
=1)(α
11
10
<∀−
=∑∞
=α
αα
i
i
∑=
− −=k
i
ik iRTTkSRTT1
)()1()( αα
∑∞
==
0i
icost αDa cui
TCP 34
Universitàdi Palermo LA
Smoothed Round-Trip Time (2)
∑−
=
− −+−=1
1)()1()()1()(
k
i
ik iRTTkRTTkSRTT ααα
∑−
=
−− −⋅+−=1
1
1 )()1()()1()(k
i
ik iRTTkRTTkSRTT ααα α
)1()()1(1
1
1 −=−∑−
=
−− kSRTTiRTTk
i
ik αα
In conclusione relazione ricorsiva:
)1()()1()( −⋅+⋅−= kSRTTkRTTkSRTT αα
TCP 35
Universitàdi Palermo LA
Smoothed and Simple Average
Valori decrescenti
0
5
10
15
20
25
0 5 10 15 20 25 30
Valori crescenti
0
2
4
6
8
10
12
0 5 10 15 20 25 30
Osserv .
Med. semplice
Med. sm.d a=0,5
Med. sm.d a=0,875
0
2
4
6
8
10
12
0 5 10 15 20 25 30
Osserv.Med. sempliceMed. sm.d a=0,5Med. sm.d a=0,875
TCP 36
Universitàdi Palermo LA
Retransmission Timeout
IL Value for Timeout (VT) non può essere uguale a SRTT
δ+= SRTTVT Logica scorretta
Logica migliore
RFC 793 presenta as an illustration la relazione
s1Lbounds60Ubound
23,19,08,0
==
÷=÷= βα
)1( >⋅= βSRTTVT β
( )[ ]SRTTVT ⋅= βLbound,maxUbound,min
TCP 37
Universitàdi Palermo LA
Round Trip Time variance
)1()()1()( −⋅+⋅−= kSRTTkRTTkSRTT αα
( ) [ ])1()(1)1()( −−⋅−+−= kSRTTkRTTkSRTTkSRTT α
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
TCP 38
Universitàdi Palermo 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
mean deviation mdev
∑=
⋅−=n
iii pXxXmdev
1]E[)(
[ ]]E)( XXXmdev −= E[
TCP 39
Universitàdi Palermo LA
Round Trip Time Variance (3)
Nel caso presente
∑=
−n
ii Xx
1]E[
2
22 1)(mdev
⋅=
nX ( )∑
=−⋅=
n
ii Xx
nX
1
22 ]E1)(σ [
∑=
−n
ii Xx
1]E[
2
( )∑=
−⋅n
ii Xxn
1
2]E[
X n^2
∑=
−=n
ii XxXmdev
1]E)( [1
n ⋅
TCP 40
Universitàdi Palermo LA
Round Trip Time Variance (4)
Per distribuzione gaussiana
mdev approssimazione della varianza
Si vuole stimare mdev
stimatotimetrip-round)( =iARRT
Si definiscono
) = errore di stima1()()( −−= iARTTiRTTiAERR
)(2)(mdev 22 XX σ⋅=π
TCP 41
Universitàdi Palermo LA
Round Trip Time Variance (5)
Si può esprimere la mean deviation calcolata su k samples come
∑=
−⋅=k
ik XiRTT
k 1]E)(1mdev [
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
∑=
−−⋅=k
iiARTTiRTT
kk
1)1()(1)ADEV(
∑=
⋅=k
iiAERR
kk
1)(1)ADEV(
TCP 42
Universitàdi Palermo LA
Round Trip Time variance (6)
AERR(k)1)1ADEV(1)ADEV( ⋅+−⋅−=k
kk
kk
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
)1()()1()( −⋅+⋅−= kSRTTkRTTkSRTT αα
TCP 43
Universitàdi Palermo LA
Round Trip Time Variance (7)
α 1 - g
)RTT()1SRTT()1()SRTT( kgkgk ⋅+−⋅−=
In analogia a: AERR(k) = RTT(k) - ARTT(k-1)
Errore per media smoothed
SERR(k) = RTT(k) - SRTT(k-1)
TCP 44
Universitàdi Palermo 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 = 4f = 2
TCP 45
Universitàdi Palermo LA
Round Trip Time Variance (9)
Valori crescenti
0
5
10
15
20
25
0 5 10 15 20 25 30
Osserv .
SDEV
RTO f = 2
RTO f = 4
Valori decrescenti
0
5
10
15
20
25
30
35
40
0 5 10 15 20 25 30
TCP 46
Universitàdi Palermo LA
Window Management
TCP self-clocking
ReceiverSender
bP
rP
rAsA
bA
TCP 47
Universitàdi Palermo LA
Window Management (2)
• Congestion Window
Congestion Window fissata dal sender
Allowed_Window = (receiver_advertisement, congestion_window)min
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.
TCP 48
Universitàdi Palermo LA
Window Management (3)
• Slow-start
Send Time [s]
Segm
ent S
eque
nce N
umbe
r [K
B]
TCP 49
Universitàdi Palermo LA
Window Management (4)
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.
Con RFC 2001 introduzione di una partenza graduale
Avvio con finestra da un segmento e incremento fino al massimo
TCP 50
Universitàdi Palermo LA
Window Management (5)
Congestion windowincreases exponentially
Increase by 1segment per ACK
Sender Receiver
Time
RTT
WRTTWTopening 2log)( ⋅=
TCP 51
Universitàdi Palermo LA
Backoff esponenziale dell’RTO
Binary exponential backoff
� RTO viene incrementato ogni volta che un segmento è ritrasmesso
� RTO = β*RTO
� Normalmente β = 2
� Siccome il timeout è dovuto probabilmente ad una congestione (pacchetto perduto
o round trip lungo), il mantenimento di RTO non è una buona idea
RTO = Round trip Time Out
TCP 52
Universitàdi Palermo 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 ACKAl ricevitore nuovamente disponibile spazio per 1000
TCP 53
Universitàdi Palermo 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)
TCP 54
Universitàdi Palermo 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_wIl sender non può inviare altri datiQuando il receiver ha ricevuto abbastanza dati incremento la O_w
TCP 55
Universitàdi Palermo LA
Silly Window Syndrome (3)
Quando si deve riaprire la finestra ?
Rule of thumb Reduce the offered window until the reduction
constitutes one half of the available space
Troppo presto � SWS Troppo tardi � Ritardo
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 %
TCP 56
Universitàdi Palermo 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 � Sovrastima di RTT
Scelta dell’istante di ritrasmissione � Sottostima di RTT
TCP 57
Universitàdi Palermo LA
Karn Algorithm
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
RTO2RTO ⋅=
Uso ripetuto procedura di backoff fino a trasmissione singola
Risoluzione del problema della ambiguità con:
� Algoritmo di Karn (Nov. 1991)
� Echo option (Oct. 1988)