Title: TCP
1TCP
2Referencias
- Cerf, V., and R. Kahn, "A Protocol for Packet
Network Intercommunication", IEEE Transactions on
Communications, Vol. COM-22, No. 5, pp 637-648,
May 1974. - J. Postel, RFC-793 "Transmission Control
Protocol" September 1981. - ( Various errors and inconsistencies were
detected) - Clarifications and bug fixes in RFC 1122 October
1989 - Extensions in RFC 1323
- Peterson and Davie , pp 378-405
3Agenda
- Revisión Nivel de Transporte
- El Protocolo TCP
- Características
- TCP Connection setup
- Segmentos TCP
- Números de Secuencia TCP
- TCP Sliding Window
- Control de Flujo
- Timeouts y Retransmisiones (RTX)
4Recordar los modelos de capas.
5Nivel Transporte
stone.ac.upc.es
milagros.dc.uba.ar
Enri
Lean
6Modelo OSI
layer-to-layer communication
Application
Application
7
7
Presentation
Presentation
6
6
Session
Session
5
5
Peer-layer communication
Transport
Transport
Router
Router
4
4
Network
Network
Network
Network
3
3
Link
Link
Link
Link
2
2
Physical
Physical
Physical
Physical
1
1
7TCP Características
- TCP es orientado a conexion
- Manejo de la conexión 3-way handshake usado
para setup y 2-2 o 4 way handshake para la
liberación - TCP provee un servicio de flujo de bytes
(stream-of-bytes ) - TCP es confiable ( estableciendo una suerte de
conexión lógica entre los sockets) - Acknowledgements ACKs
- Checksums
- Números de secuencia para detectar datos perdidos
o desordenados - Datos perdidos o corruptos se RTX después de un
timeout. - Datos desordenados se podrían reordenar.
- Control de Flujo evita inundar al receptor .
- TCP implementa mecanismos de control de
congestión ( se le dedica una clase la semana
próxima ).
8TCP orientado a conexión
(Activo) Cliente
(Pasivo) Server
Syn
Syn Ack
Ack
3-way handshake
Caso ideal , en el RFC 793 Se plantean varios
escenarios
9TCP soporta un stream de bytes
Host A
Byte 0
Byte 1
Byte 2
Byte 3
Byte 80
Host B
Byte 0
Byte 1
Byte 2
Byte 3
Byte 80
10dicho servicio se emula usando segmentos TCP
Host A
Byte 0
Byte 1
Byte 2
Byte 3
Byte 80
- Un segmento se envía cuando
- Segmento full (MSS bytes),
- No esta full , pero sucede time out,
- Pushed por la aplicación.
TCP Data
TCP Data
Host B
Byte 0
Byte 1
Byte 2
Byte 3
Byte 80
11Formato del Segmento TCP
IP Data
IP Hdr
TCP Hdr
TCP Data
0
15
31
Src port
Dst port
Sequence
Los números de port Src/dst y la direcciones
identifican unívocamente un socket
Ack Sequence
TCP Header y Data dirección IP
Flags
Window Size
HLEN 4
RSVD 6
URG
ACK
PSH
RST
SYN
FIN
Checksum
Urg Pointer
(TCP Options)
Veremos concepto de pseudo header
TCP Data
12Números de Secuencia
Host A
ISN (initial sequence number)
Seq_Num 1er byte
TCP HDR
TCP Data
ACK Seq_Num Próximo byte esperado
TCP HDR
TCP Data
Host B
13Initial Sequence Numbers
(Active) Client
(Passive) Server
Syn ISNA
Syn Ack ISNB
Ack
Connection Setup 3-way handshake
14TCP Sliding Window
- How much data can a TCP sender have outstanding
in the network? - How much data should TCP retransmit when an error
occurs? Just selectively repeat the missing data? - How does the TCP sender avoid over-running the
receivers buffers?
15TCP Sliding Window
Window Size
Outstanding Un-ackd data
Data OK to send
Data not OK to send yet
Data ACKd
- Retransmission policy is Go Back N.
- Current window size is advertised by receiver
- (usually 4k 8k Bytes when connection set-up).
16TCP Sliding Window
Round-trip time
Window Size
Host A
Host B
ACK
ACK
(1) RTT gt Window size
17Jacobson ( 1988)
18TCP Retransmission and Timeouts
Round-trip time (RTT)
Retransmission TimeOut (RTO)
Guard Band
Host A
Estimated RTT
Data1
Data2
ACK
ACK
Host B
TCP uses an adaptive retransmission timeout
value Congestion Changes in Routing
RTT changes frequently
19TCP Retransmission and Timeouts
- Picking the RTO is important
- Pick a values thats too big and it will wait too
long to retransmit a packet, - Pick a value too small, and it will unnecessarily
retransmit packets. - The original algorithm for picking RTO
- EstimatedRTT ? EstimatedRTT (1 - ?)
SampleRTT - RTO 2 EstimatedRTT
- Characteristics of the original algorithm
- Variance is assumed to be fixed.
- But in practice, variance increases as congestion
increases.
20TCP Timer Management
Of the several timers TCP maintains the most
important is the retransmission timer RTO, (also
called timeout) . After each segment is sent,
TCP starts a retransmission timer, if ACK arrives
before timer expires, cancel timer. If timer
expires first, consider segment lost. How long
should RTO be ? Typically some small multiple of
RTT. So how to measure RTT ? Measure time
between segment sent and ACK receiver. Unfortuna
tely, in the Internet RTT are not constant, they
a vary a lot.
21TCP Timer Management
- (a) Probability density of ACK arrival times in
the data link layer. - (b) Probability density of ACK arrival times for
TCP.
22Retransmisión Adaptiva (Algoritmo Original)
- Mide SampleRTT para cada par segmento/ ACK
- Calcula el promedio ponderado de RTT
- EstimatedRTT a x EstimatedRTT b x SampleRTT
- donde a b 1
- 0.8 lt a lt 0.9
- 0.1 lt b lt 0.2
- Fijar timeout basado en EstimatedRTT
- TimeOut 2 x EstimatedRTT
23Algoritmo de Karn/Partridge
Sender
Receiver
Sender
Receiver
Original transmission
Original transmission
TT
TT
ACK
Retransmission
SampleR
SampleR
Retransmission
ACK
- No considerar RTT cuando se retransmite
- Duplicar timeout luego de cada retransmisión
24Algoritmo de Jacobson/ Karels
- Nueva forma de calcular el promedio de RTT
- Diff sampleRTT - EstRTT
- EstRTT EstRTT ( ? x Diff)
- Dev Dev ? ( Diff - Dev)
- donde ? es un factor entre 0 y 1 (Por ejemplo
1/8) - Considerar varianza cuando fijamos el timeout
- TimeOut m x EstRTT f x Dev
- donde m 1 y f 4
- Notas
- Los algoritmos son tan buenos/malos como la
granularidad del reloj (500ms en Unix) - Un preciso mecanismo de timeout es importante
para controlar la congestión (más adelante) - Además de controlar congestión, la idea es no
retransmitir cuando no es necesario.
25RTO ( Ret. Timeout) exceptions
Assume a segment times out and is then
retransmitted. An ACK for the segment
arrives. So for purposes for calculating M how
do we decide if the ack is for the first send or
the retransmission ? We cannot. It might be
for the first, but very delayed, or might be for
the second. So we cannot use ACKs of
retransmitted segments for calculating M (or
updating RTT). Rule Don't use acks of
retransmitted segments to update RTT. Instead, if
segment times out, simply double RTO. This is
called the Karn's algorithm.
26Ejemplo de estimación de RTT
27TCP
28TCP
- Repaso ( basado en el Peterson)
29Protocolos End-to-End
- Se apoyan en la capa Red, la cual es de mejor
esfuerzo (best-effort) - descarta mensajes
- re-ordena mensajes
- puede entregar múltiples copias de un mensaje
dado - limita los mensajes a algún tamaño finito
- entrega mensajes después de un tiempo
arbitrariamente largo - Servicios comunes ofrecidos/deseados end-to-end
- garantía de entrega de mensajes
- entrega de mensajes en el mismo orden que son
enviados - entrega de a lo más una copia de cada mensaje
- soporte para mensajes arbitrariamente largos
mensajes - soporte de sincronización
- permitir al receptor controlar el flujo de datos
del transmisor - soportar múltiples procesos de nivel aplicación
en cada máquina
30Demultiplexor Simple (UDP User Datagram
Protocol)
- Servicio de entrega no confiable y no ordenado de
datagramas - Agrega multiplexión
- No hay control de flujo
- Hay puertos definidos en cada extremo
- servidor posee un puerto bien conocido
- ver /etc/services en Unix (o Linux)
- Formato de encabezado
- Chequeo se suma opcional
- psuedo header(IP) UDP header data
31Contexto para encabezado UDP
IP
Pseudo encabezado
UDP
Largo de encabezado datos
32TCP Generalidades
- Orientado a conexión
- flujo de byte
- app escriben bytes
- TCP envía segmentos
- app lee bytes
- Full duplex
- Control de flujo evita que el Tx rebalse al
receptor - Control de congestión evita que el Tx
sobrecargue la red
33Enlace de Datos Versus Transporte
- Potencialmente conecta muchas máquinas diferentes
- requiere de establecimiento y término de conexión
explícitos - Potencialmente diferentes RTT
- requiere mecanismos adaptivos para timeout
- Potencialmente largos retardos en la red
- requiere estar preparado par el arribo de
paquetes muy antiguos - Potencialmente diferente capacidad en destino
- requiere acomodar diferentes capacidades de nodos
- Potencialmente diferente capacidad de red
- requiere estar preparado para congestión en la red
34Contexto Formato de Segmento
IP
Pseudo encabezado
TCP
URGACKPSHRSTSYNFIN
35Formato de Segmento
36Formato de Segmento (cont)
- Cada conexión es identificada por la 4-tupla
- (SrcPort, SrcIPAddr, DsrPort, DstIPAddr)
- Ventana deslizante control de flujo
- acknowledgment, SequenceNum, AdvertisedWinow
- Flags
- SYN, FIN, RESET, PUSH, URG, ACK
- Checksum
- pseudo header(IP) TCP header data
37Establecimiento y Término de Conexión
Active participant
Passive participant
(client)
(server)
SYN, SequenceNum
x
,
y
1
SYN ACK, SequenceNum
x
Acknowledgment
ACK, Acknowledgment
y
1
38Diagrama de Estado de Transmisión
39Revisión de Ventana Deslizante
- Lado Receptor
- LastByteRead lt NextByteExpected
- NextByteExpected lt LastByteRcvd 1
- Se tiene en buffer los bytes entre NextByteRead y
LastByteRcvd
- Lado Transmisor
- LastByteAcked lt LastByteSent
- LastByteSent lt LastByteWritten
- Se tiene en buffer los bytes entre LastByteAcked
y LastByteWritten
LastByteRead1
40Control de Flujo
- Tamaño del buffer de envío MaxSendBuffer
- Tamaño del buffer de recepción MaxRcvBuffer
- Lado receptor
- LastByteRcvd - LastByteRead lt MaxRcvBuffer
- AdvertisedWindow MaxRcvBuffer - (LastByteRcvd -
NextByteRead) - Lado Transmisor
- LastByteSent - LastByteAcked lt AdvertisedWindow
- EffectiveWindow AdvertisedWindow -
(LastByteSent - LastByteAcked) - LastByteWritten - LastByteAcked lt MaxSendBuffer
- Bloquear Tx si (LastByteWritten - LastByteAcked)
y gt MaxSenderBuffer, y bytes que se desean
escribir. - Siempre enviar ACK en respuesta a la llegada de
segmentos de datos - Tx persiste enviando 1 byte cuando
AdvertisedWindow 0
41Síndrome de Ventana estúpida (Silly)
- Qué tan agresivamente el Tx explota la apertura
de ventana? - Soluciones en lado Receptor
- Retardar los acuses de recibo
42Silly Window Syndrome
43Algoritmo de Nagle
- Qué tanto tiempo el Tx retarda la transmisión de
datos? - Demasiado largo afecta aplicaciones interactivas
- Demasiado corto Utilización de la red es pobre
- Estrategias Basadas en timers v/s auto relojes
- Cuando la aplicación genera datos adicionales
- Si se llena un segmento (y la ventana está
abierta) enviar - Sino
- Si hay datos sin ack en Tx dejar en buffer hasta
llegada de ack - sino enviar datos
44Nagle's algorithm
Purpose is to allow the sender TCP to make
efficient use of the network, while still being
responsive to the sender applications. Idea If
application data comes in byte by byte, send
first byte only. Then buffer all application data
till until ACK for first byte comes in. If
network is slow and application is fast, the
second segment will contain a lot of data. Send
second segment and buffer all data till ACK for
second segment comes in. This way the algorithm
is clocking the sends to speed of the network and
simultaneously preventing sending several one
byte segments back to back. An exception to this
rule is to always send (not wait for ACK) if
enough data for half the receiver window or MSS.
45Protección contra reapariciones de igual número
de secuencia
- SequenceNum de 32 bits
- Bandwidth Tiempo hasta tener problema
- T1 (1.5 Mbps) 6.4 hours
- Ethernet (10 Mbps) 57 minutes
- T3 (45 Mbps) 13 minutes
- FDDI (100 Mbps) 6 minutes
- STS-3 (155 Mbps) 4 minutes
- STS-12 (622 Mbps) 55 seconds
- STS-24 (1.2 Gbps) 28 seconds
46Mantención de la tubería llena
- AdvertisedWindow de 16 bits
- Bandwidth Delay x Bandwidth Product
- T1 (1.5 Mbps) 18KB
- Ethernet (10 Mbps) 122KB
- T3 (45 Mbps) 549KB
- FDDI (100 Mbps) 1.2MB
- STS-3 (155 Mbps) 1.8MB
- STS-12 (622 Mbps) 7.4MB
- STS-24 (1.2 Gbps) 14.8MB
- Asumiendo RTT de 100 ms
64 KB
47Extensiones de TCP
- Son implementadas como opciones del encabezado
- Almacenar marcas de tiempo en segmentos de salida
- Extender espacio de secuencia con marca de tiempo
de 32-bit (PAWS) - Desplazar (escalar) ventana avisada. La idea es
medir la ventana en unidades de 2, 4, 8 bytes.
48TCP Options
Some TCP options are Maximum segment size
(MSS) Specified what is the payload the sender
is able to receive. (Default MSS 536 bytes,
i.e., Segment size MSS 20). SMSS/RMSS is
Sender/Receiver MSS. Window scale The window
size field allows for upto 216 bytes of data.
But this might be inefficient for high bw x delay
situations. This options TCP indicate a scaling
factor. Negative acknowledgement Lets receiver
user NAKs to get realize selective repeat rather
than the normal go-back-N TCP behaviour.
49Recordemos MSS
Application Message
MSS
TCP Segment
TCP data
TCP hdr
IP Packet
20 bytes
IP data
IP hdr
20 bytes
Ethernet Frame
Ethernet data
Ethernet
4 bytes
MTU 1500 bytes
14 bytes
50Checksum
- Se calcula entre el TCP Header , Data y el pseudo
header
51Window Management
52Initial Sequence Number
- Select initial sequence numbers (ISN) to protect
against segments from prior connections (that may
circulate in the network and arrive at a much
later time) - Select ISN to avoid overlap with sequence numbers
of prior connections - Use local clock to select ISN sequence number
- Time for clock to go through a full cycle should
be greater than the maximum lifetime of a segment
(MSL) Typically MSL120 seconds
53TCP Connection Establishment
6-31
- (a) TCP connection establishment in the normal
case. - (b) Call collision.
Initial sequence numbers are not 0. TCP uses a
clock tick counter (at 4 usecs rate) to setup the
initial sequence numbers. This scheme prevents
delayed duplicates.
54Connection Establishment (cont)
Active participant
Passive participant
(client)
(server)
SYN, SequenceNum
x
SYNACK, SequenceNumy,
Acknowledgment x1
ACK, Acknowledgment y1
55TCP Connection Release
- Graceful release
- Each side of the connection released
independently. - Either side send TCP segment with FIN1.
- When FIN acknowledged, that direction is shut
down for data. - Connection released when both sides shut down.
- 4 segments 1 FIN and 1 ACK for each direction
1st. ACK2nd. FIN combined. - Two-army problem , Timers , 2 MSL
56TCP Connection Management Modeling
TCP connection management finite state machine.
The heavy solid line is the normal path for a
client. The heavy dashed line is the normal path
for a server. The light lines are unusual
events. Each transition is labeled by the event
causing it and the action resulting from it,
separated by a slash.
57TCP Connection Management Modeling
- The states used in the TCP connection management
finite state machine.
58Maximum Segment Size
- Maximum Segment Size
- largest block of data that TCP sends to other end
- Each end can announce its MSS during connection
establishment - Default is 576 bytes including 20 bytes for IP
header and 20 bytes for TCP header - Ethernet implies MSS of 1460 bytes
- IEEE 802.3 implies 1452
59Tear-down Packet Exchange
Sender
Receiver
FIN
FIN-ACK
Data write
Data ack
FIN
FIN-ACK
60Connection Tear-down
61Detecting Half-open Connections
62TIME-WAIT Assassination