Está en la página 1de 47

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INGENIERA TELEMTICA

TCP AVANZADO

Celeste Campo celeste@it.uc3m.es

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 1

NDICE
1. Introduccin. 2. Establecimiento y finalizacin de la conexin. 3. Flujo de datos interactivo. 4. Flujo de datos masivo. 5. Timeouts y retransmisiones. 6. Temporizador persistente. 7. Temporizador keepalive. 8. Futuro y prestaciones.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 2

BIBLIOGRAFA
Bsica:
W. R. Stevens: "TCP/IP Illustrated Vol.1 The protocols". Prentice Hall, 1994. (Chapter 17 Chapter 24). D.E. Comer: "Internetworking with TCP/IP vol I.", 4 Ed., Prentice Hall, 2000. Andrew S. Tanenbaum: "Computer Networks", 3 Ed., Prentice Hall International, 1996.

Complementaria:
A. Rodrguez, J. Gatrell, J. Karas, R. Peschke: "TCP/IP Tutorial and Technical Overview", 7 Ed, IBM Redbooks, 2001.

W. Stallings. High-speed networks: TCP/IP and ATM design principles.Prentice Hall, 1998.

RFCs:
RFC 793: Transmission Control Protocol.1981.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 3

NDICE
1. Introduccin:
A. Definicin. B. Formato segmento TCP. C. Campos cabecera segmento TCP.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 4

Definicin
TCP es un protocolo orientado a conexin que proporciona un servicio de transporte fiable de un flujo de bytes entre aplicaciones:
Orientado a conexin previo al intercambio de datos los extremos (aplicaciones) tienen que establecer una conexin. Fiable garantiza la entrega ordenada del flujo de bytes entre los extremos de la conexin. Flujo de bytes por la conexin se transmite un flujo de bytes.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 5

Definicin: fiabilidad
TCP divide los datos pasados por las aplicaciones en bloques denominados segmentos TCP. TCP cuando enva un segmento establece un temporizador esperando asentimiento. TCP cuando recibe un segmento enva un asentimiento. TCP emplea un cdigo de redundancia (checksum) de su cabecera y datos. TCP reordena los datos si es necesario. TCP descarta paquetes duplicados. TCP proporciona control de flujo.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 6

Formato segmento TCP


Los segmentos TCP se encapsulan en datagramas IP.
Segmento TCP

CABECERA IP

CABECERA TCP

DATOS APLICACIN

Datagrama IP
CABECERA ETHERNET CABECERA IP CABECERA TCP DATOS APLICACIN ETHERNET TRAILER

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 7

Formato segmento TCP


0
puerto origen (16 bits)

15 16
puerto destino (16 bits)

31

nmero de secuencia (32 bits) nmero de asentimiento (ACK) (32 bits) URG ACK PSH RST SYN FIN

20 octetos

longitud reservado cabecera (6 bits) (4 bits)

tamao ventana (16 bits) puntero datos urgentes

cdigo redundancia (16 bits)

campos opcionales + relleno (si hay)

datos (si hay)

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 8

Campos cabecera TCP


Puertos origen y destino: indican la conexin lgica entre las dos aplicaciones que se estn comunicando (FTP, TELNET, SMTP, etc.).
Identificador nico de conexin:
Par de socket
socket (definido en la RFC 793) = direccin IP + puerto

Direccin IP origen, Puerto origen, Direccin IP destino, Puerto destino

Nmero de secuencia: posicin del primer octeto en el campo de datos en relacin con la secuencia original.

Campo de 32 bits rango entre 0 y 2-1. Si el flag SYN est activo, este campo contiene el nmero de secuencia inicial (n) y el primer octeto de datos es el n+1. El flag SYN consume un nmero de secuencia. Servicio full-duplex cada extremo de la conexin mantiene su nmero de secuencia de flujo de datos en esa direccin.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 9

Campos cabecera TCP


Nmero de asentimiento: nmero de secuencia siguiente al octeto confirmado, indica la posicin que ocupara el prximo octeto que se espera recibir.
Slo es vlido si est activo el flag ACK.

Longitud cabecera: nmero de palabras de 32 bits que componen la cabecera.


Necesario porque la cabecera es de longitud variable (opciones). Campo de 4 bits cabecera TCP limitada a 60 octetos. Sin opciones la longitud de la cabecera son 20 octetos.

Reservado: reservados para uso futuro, deben estar a cero.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 10

Campos cabecera TCP


Flags:
URG: indica que el campo Puntero Datos Urgentes tiene validez. ACK: indica que el campo Nmero de Asentimiento tiene validez. PSH: indica que el segmento requiere envo y entrega inmediata. RST: indica aborto de la conexin. SYN: sincroniza nmeros de secuencia en el establecimiento de conexin.
Confirmacin con ACK

FIN: indica liberacin de conexin.


Confirmacin con ACK.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 11

Campos cabecera TCP


Tamao ventana: indica el nmero de octetos, adicionales al apuntado por ACK, que est dispuesto aceptar.
Mecanismo de control de flujo de TCP. Anunciado por cada extremo de la conexin. Campo de 16 bits tamao limitado a 65535 octetos.

Cdigo de redundancia: campo obligatorio que debe ser calculado por el emisor y verificado por el receptor.
Incluye todo el segmento TCP, tanto cabecera como datos.

Puntero datos urgentes: indica el offset (positivo) que debe ser aadido al nmero de secuencia del segmento para obtener el nmero de secuencia del ltimo octeto de datos urgentes.
Slo es vlido si est activo el flag URG.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 12

Campos cabecera TCP


Campos opcionales: para incluir opciones.
Tamao mximo de datos en un segmento (MSS Maximun Segment Size):
Utilizada en el establecimiento de la conexin. Indica la longitud mxima de datos en un segmento que puede recibir un extremo.

Escala del tamao de la ventana:


Expandir el tamao de la ventana TCP.

Datos:
Opcional.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 13

NDICE
2. Establecimiento y finalizacin de la conexin:
A. B. C. D. Establecimiento conexin (three-way handshake). Finalizacin conexin. TCP Half-close. Tamao mximo del segmento (MSS - Maximun Segment Size). E. Estados de TCP. F. Apertura simultnea. G. Cierre simultneo.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 14

Establecimiento conexin
Uso de three way handshake. Se emplea el bit SYN en la solicitud de conexin y SYN + ACK en la respuesta. La respuesta es a su vez confirmada con ACK. Se fija el nmero de secuencia inicial en ambas direcciones.
TCP 1 SYN (seq=x) ACK (seq=x+1,ack=y+1) RED 1 2 3 SYN (seq=y,ack=x+1) TCP 2

DATA (seq=x+1,ack=y+1)

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 15

Finalizacin conexin
Liberacin ordenada e independiente por cada uno de los sentidos de transmisin. El extremo que desea cesar de transmitir enva segmento con FIN, que debe ser confirmado por el corresponsal con FIN, ACK.

TCP 1 FIN (seq=x)

RED 1 2

TCP 2 ACK (seq=y,ack=x+1) (informa a la aplicacin)

3 ACK (seq=x+1,ack=y+1) 4

FIN, ACK (seq=y, ack=x+1)

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 16

Ejemplo
srv4 % telnet bsdi discard Trying 192.82.148.3... Connected to it011.lab.it.uc3m.es. Escape character is '^]'. ^]

telnet> quit Connection closed

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 17

Ejemplo: Notacin tcpdump


Fuente > destino n secuencia inicial n secuencia final (n de octetos de datos)

Flag

Abreviatura (3 carac.)

Descripcin Sincroniza nmeros de secuencia Emisor ha acabado de enviar datos Aborto conexin El segmento requiere envo y entrega inmediata Ninguno de los cuatro flags activos

S F R P .

SYN FIN RST PSH -

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 18

Ejemplo: Salida tcpdump


1 2 3 4 5 6 7
0.0 svr4.1037 > bsdi.discard: S 1415531521:1415531521(0) win 4096 <mss 1024> S 1823083521:1823083521(0) ack 1415531522 win 4096 <mss 1024> . ack 1823083522 win 4096

0.002402 (0.0024)

bsdi.discard > svr4.1037:

0.007224 (0.0048)

svr4.1037 > bsdi.discard:

4.155441 (4.1482)

svr4.1037 > bsdi.discard:

F 1415531522:1415531522(0) ack 1823083522 win 4096 . ack 1415531523 win 4096

4.156747 (0.0013)

bsdi.discard > svr4.1037:

4.158144 (0.0014)

bsdi.discard > svr4.1037:

F 1823083522:1823083522(0) ack 1415531523 win 4096

4.180662 (0.0225)

svr4.1037 > bsdi.discard:

. ack 1823083523 win 4096

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 19

Ejemplo: Lnea temporal


Active open Pasive open
ESTABLECIMIENTO (three-way handshake) 3 segmentos

Active close

Pasive close

FINALIZACIN 4 segmentos

FINALIZACIN

ESTABLECIMIENTO

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 20

TCP Half-Close
TCP, al establecer una conexin full-duplex, cada extremo puede finalizar la transmisin de datos de forma independiente. Pocas aplicaciones hacen uso de esta caracterstica.
TCP 1 aplicacin shutdown
FIN

RED

TCP 2 entrega EOF a la aplicacin

AC

l FI N K de OS DAT

aplicacin write

aplicacin read

ACK de D ATOS

aplicacin close
FIN

entrega EOF a la aplicacin

ACK de lF

IN

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 21

Ejemplo
sun % rsh bsdi sort < datafile
host sun host bdi conexin TCP

datafile entrada

estndar salida terminal estndar

rsh

sort

Programa sort en bdi no puede generar ninguna salida hasta que no haya recibido el fichero datafile. Cuando sun finaliza de transmistir el contenido del fichero realiza un half-close de la conexin TCP. El host bdi enva la salida de sort a sun y cuando finaliza cierra la conexin TCP.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 22

MSS: Maximum Segment Size


MSS: longitud mxima de datos que se enviarn en un segmento al otro extremo TCP. El datagrama IP resultante normalmente ser 40 octetos mayor que este valor. En el establecimiento de la conexin, cada extremo puede anunciar el MSS que espera recibir (si no se establece, por defecto es 536 octetos).
Se incluye como una opcin en segmentos TCP SYN. MTU tamao cabecera IP tamao cabecera TCP (ej. Ethernet se anunciara 1460 octetos)

MTU = Maximum Transmission Unit

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 23

Estados de TCP
Estado
CLOSED LISTEN SYN_RCVD SYN_SENT ESTABLISHED FIN_WAIT_1 FIN_WAIT_2 TIME_WAIT CLOSING CLOSE_WAIT LAST_ACK

Descripcion
No existe conexin activa ni pendiente El servidor est esperando por una conexin Una peticin de conexin ha llegado, espera ACK El cliente ha comenzado a abrir una conexin Estado de transferencia de datos El cliente ha dicho que ha acabado El servidor ha aceptado liberacin conexin Espera por paquetes pendientes (2MSL wait state) Ambos extremos han intentado cerrar la conexin simultneamente. Servidor ha iniciado liberacin conexin Espera por ACK del FIN

(mismo nombre de estados que el programa netstat)

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 24

Estados TCP en un establecimiento y finalizacin normal de la conexin


SYN_SENT
(active open)

SYN (seq = x)
, SYN (seq = y ac k = x + 1 )
(ack = y + 1 )

LISTEN
(passive open)

SYN_RCVD

ESTABLISHED

ESTABLISHED

FIN_WAIT_1
(active close)

FIN (seq = m)

(ack = m+ 1 )
FIN_WAIT_2

CLOSE_WAIT
(passive close)

FIN (seq = n )
TIME_WAIT

LAST_ACK

(ack = n+1 )
CLOSED

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 25

Nomenclatura
transiciones habituales para el cliente transiciones habituales para el servidor appl: recv: send: indica transicin entre estados debida a operaciones de la aplicacin indica transicin entre estados debida a la recepcin de un segmento indica lo que se enva en esta transicin

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 26

Diagrama de transicin entre estados


starting point CLOSED
appl: pasive open ap pl send: <nothing> : se ac K nd tiv C :S eo N,A a LISTEN Y pp YN pe :S d l: n en pasive open s s s e n en N; ST Y R d: d d S v: v: SY at rec rec N a recv: SYN SYN_RCVD SYN_SENT send: SYN, ACK
re cv se : S nd YN :A ,A C CK K

simultaneous open

active open

appl: close or timeout

appl: close send: FIN

Diagrama de transicin entre estados


ESTABLISHED send:ACK data transfer state
ap p se l:clo nd : F se IN

> CK ng : A thi cv o re : <n nd se

IN d:F n e s

ESTABLISHED rec v:F data transfer state IN

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 27

recv:FIN

CLOSE_WAIT
appl: close send: FIN

appl: close send: FIN

LAST_ACK simultaneous close passive close

recv: ACK send:<nothing>

recv:FIN FIN_WAIT_1 CLOSING send:ACK re recv: ACK recv: ACK se cv: nd F send: <nothing> send: <nothing> I : AC N, A K CK

FIN_WAIT_2

recv:FIN send:ACK

TIME_WAIT 2MSL timeout

active close

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 28

Estado 2MSL Wait State


2MSL Wait State = TIME_WAIT
TCP despus de realizar un active close y enviar el ACK del FIN debe esperar un tiempo TIME_WAIT. Por qu?:
Permite a TCP reenviar el ACK del FIN si ste se pierde (el otro extremo, en este caso, reenviar el FIN cuando venza su temporizador)

Hasta que no finalice este temporizador no se liberan el par de sockets de la conexin. Cada implementacin selecciona un valor de MSL (Maximun Segment Lifetime): tpicamente 2 minutos o 1 minuto o 30 segundos.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 29

Resetting de conexiones
Se indica activando el flag RST. Normalmente generados automticamente por el software TCP. Cundo se activa el flag RST?
Llega un peticin de conexin y no existe un proceso servidor escuchando en el puerto destino. Llega un segmento TCP que no corresponde con ninguna conexin activa. Abortar una conexin a nivel aplicacin (en vez de enviar un FIN se enva un RST):
El receptor tira todos los datos pendientes de transmisin. No asiente el segmento RST. Se finaliza la conexin.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 30

Apertura simultnea
Dos aplicaciones realizan un active open simultneamente. TCP est especialmente diseado para que en este caso slo se establezca una conexin NO dos conexiones (otros protocolos crean dos conexiones). La apertura de la conexin requiere el intercambio de 4 segmentos, NO 3.
TCP 1
(active open)

RED
SYN J

TCP 2
S YN K

SYN_SENT SYN_RCVD

SYN_SENT (active open) SYN_RCVD

SYN J,

ACK K

+1

, AC YN K

1 K J+

ESTABLISHED ESTABLISHED

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 31

Finalizacin simultnea
Dos aplicaciones realizan un active close simultneamente. En la finalizacin de la conexin se siguen intercambiando 4 segmentos.
TCP 1
(active close)

RED
FIN J

TCP 2
FIN K

FIN_WAIT_1 CLOSING

FIN_WAIT_1 (active close) CLOSING

ACK K

+1

ACK

J+1

TIME_WAIT TIME_WAIT

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 32

NDICE
3. Flujo de datos interactivo: A. Entrada interactiva. B. Asentimientos retardados. C. Algoritmo de Nagle.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 33

Flujo de datos interactivos


Estudio de estadsticas sobre el trfico TCP:
Medido en nmero de paquetes:
~ 50% son datos interactivos (ej. Telnet o Rlogin). ~ 50% son flujo de datos masivo (ej. FTP, correo electrnico).

Medido en bytes:
~ 10% son datos interactivos. ~ 90% son flujo de datos masivo.

TCP tiene diferentes mecanismos para gestionar estos dos tipos de transferencia de datos.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 34

Entrada interactiva
3. Enva eco del carcter y/o salida

Host con cliente Telnet


1. Enva carcter

2. Interpreta carcter

Host con servidor Telnet

Aplicaciones de terminal remoto (ej. Telnet) envan cada carcter escrito por el usuario al servidor. El servidor interpreta el carcter y lo enva de nuevo al cliente. Podemos ver que por cada carcter se transmiten 3 segmentos TCP:
Cliente Servidor: incluyendo el carcter. Servidor Cliente: haciendo eco del carcter y asintiendo el segmento anterior. Cliente Servidor: asintiendo el segmento anterior.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 35

Entrada interactiva
CLIENTE SERVIDOR
CARCTER
ACK DEL CA RCTER CTER

Por qu tres segmentos y no cuatro?:


Se combina el ACK del carcter enviado por el cliente, con el carcter de eco enviado por el servidor. Este caracterstica se conoce como asentimientos retardados

R ECO DEL CA

ACK DEL CA

RCTER EC O

CARCTER
DEL CARCT ER

ACK Y ECO

ACK DEL CA

RCTER EC O

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 36

Asentimientos retardados
Normalmente los ACKs no se envan inmediatamente despus de recibir datos. Un ACK se puede retardar:
Hasta que existan datos para enviar haca el otro extremo:
El ACK se incluye en el segmento de datos (ACK piggyback con los datos).

Hasta un mximo de 200 ms. (valor habitual en las implementaciones):


RFC indica que debera implementarse un retardo en el envo de los ACKs y que este retardo debe ser menor de 500 ms.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 37

Asentimientos retardados: Ejemplo


bsdi:~> rlogin srv4 srv4:~> date Sat Feb 6 07:52:17 MST 1993 srv4:~>

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 38

Asentimientos retardados: Ejemplo


1 0.0 0.016497 (0.0165) 0.139955 (0.1235) bsdi.1023 > srv4.login: srv4.login > bsdi.1023: bsdi.1023 > srv4.login: P 0:1(1) ack 1 win 4096 P 1:2(1) ack 1 win 4096 . ack 2 win 4096

d a t e \n
(CR + LF)

2 3

4 5 6

0.458037 (0.3181) 0.474386 (0.0163) 0.539943 (0.0656)

bsdi.1023 > srv4.login: srv4.login > bsdi.1023: bsdi.1023 > srv4.login:

P 1:2(1) ack 2 win 4096 P 2:3(1) ack 2 win 4096 . ack 3 win 4096

7 8 9

0.814582 (0.2746) 0.831108 (0.0165) 0.940112 (0.1090)

bsdi.1023 > srv4.login: srv4.login > bsdi.1023: bsdi.1023 > srv4.login:

P 2:3(1) ack 3 win 4096 P 3:4(1) ack 3 win 4096 . ack 4 win 4096

10 11 12

1.191287 (0.2512) 1.207701 (0.0164) 1.339994 (0.1323)

bsdi.1023 > srv4.login: srv4.login > bsdi.1023: bsdi.1023 > srv4.login:

P 3:4(1) ack 4 win 4096 P 4:5(1) ack 4 win 4096 . ack 5 win 4096

13 14 15

1.680646 (0.3407) 1.697977 (0.0173) 1.739974 (0.0420)

bsdi.1023 > srv4.login: srv4.login > bsdi.1023: bsdi.1023 > srv4.login:

P 4:5(1) ack 5 win 4096 P 5:7(2) ack 5 win 4096 . ack 7 win 4096

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 39

Asentimientos retardados: Ejemplo


date

Sat Feb 6 07:52:17 MST 1993 + CR + LF


16 17 1.799841 (0.0599) 1.940176 (0.1403) srv4.login > bsdi.1023: bsdi.1023 > srv4.login: P 7:37(30) ack 5 win 4096 . ack 37 win 4096

prompt

srv4:~>
18 19 1.944338 (0.0042) 2.140110 (0.1958) srv4.login > bsdi.1023: bsdi.1023 > srv4.login: P 37:44(7) ack 5 win 4096 . ack 44 win 4096

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 40

Algoritmo de Nagle
El algoritmo de Nagle (RFC 896) plantea una solucin al problema siguiente:
En algunos casos, se envan pocos octetos de datos en cada segmento (tinygrams) y por lo tanto, se aumenta el sobrecarga debido a las cabeceras. Sin efecto en redes LAN, pero puede aumentar la congestin en redes WAN. Ejemplo anterior:
Cada octeto se enva en un datagrama IP de 41 octetos:
20 octetos de la cabecera IP. 20 octetos de la cabecera TCP. 1 octeto de datos.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 41

Algoritmo de Nagle
El algoritmo de Nagle dice:
Una conexin TCP slo puede tener un segmento TCP pendiente de asentimiento. Mientras se espera el asentimiento se van acumulando los datos pendientes, que se enviarn juntos en el siguiente segmento.

El algoritmo de Nagle tiene la propiedad:


Cuanto ms rpido llegan los asentimientos, ms rpido se envan los segmentos de datos (self-clocking). As en una WAN los asentimientos llegarn ms lentos y por lo tanto se reducir el nmero de tinygrams enviados (se envan menos segmentos de mayor tamao).

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 42

Deshabilitar el algoritmo de Nagle


Es posible y deseable en algunos casos deshabilitar el algoritmo de Nagle:
Servidor de ventanas:
Los movimientos de ratn deben enviarse sin ningn retraso.

Envo de teclas de funcin en un login:


Teclas de funcin estn compuestas de varios caracteres. Es necesario que esos caracteres vayan juntos para que el usuario no detecte retardos en la interaccin con el servidor remoto.

Las implementaciones permiten deshabilitar este algoritmo.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 43

Algoritmo de Nagle: Ejemplo


slip.1023 0.0 1
PSH 5:6(1) ACK 47, WIN 4096
K 6, WIN 8192

vangogh.login

PSH 47:48(1) AC

0.197694 (0.1977) 0.232457 (0.0348) 0.437593 (0.2051) 0.464257 (0.0267) 0.677658 (0.2134) 0.707709 (0.0301) 7 5 3

PSH 6:7(1) ACK 48,

WIN 4096
K 7, WIN 8192

PSH 48:49(1) AC

PSH 7:9(2) ACK 49,

WIN 4095
K 9, WIN 8192

PSH 49:51(2) AC

PSH 9:10(1) ACK 51,

WIN 4094
K 10, WIN 8192

PSH 51:52(1) AC

0.917762 (0.2101) 0.945862 (0.0281) 9


PSH 10:12(2) ACK 52, WIN 4095
K 10, WIN 8192

PSH 52:54(2) AC

10

1.157640 (0.2118) 1.187501 (0.0299)


PSH 12:14(2) ACK 54, WIN 4094

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 44

NDICE
3. Flujo de datos masivo:
A. Flujo normal de datos. B. Mecanismo de control de flujo:
1. Ventana deslizante en TCP.

C. Mecanismo de control de congestin:


1. Slow start.

D. Flag PUSH. E. Modo urgente (flag URG).

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 45

Flujo normal de datos


Idea: permitir al emisor enviar mltiples segmentos, antes de parar y esperar por el asentimiento:
Transferencia ms rpida de los datos.

Los mecanismos de control de flujo previenen que el emisor sature al receptor con datos:
TCP emplea como mecanismo de control de flujo una ventana deslizante:
Permite que el emisor transmita varios paquetes antes de parar y esperar por un asentimiento pero sin saturar al receptor.

Los mecanismos de control de congestin previenen que el emisor sature la red con datos:
TCP emplea como mecanismos bsico de control de congestin slowstart (comienzo lento):
Permite que el emisor enve datos a la misma velocidad con la que se envan asentimientos desde el otro extremo.

Ms mecanismos aadidos basados en temporizadores.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 46

Ventana deslizante en TCP


Permite el control de flujo:
El envo de ACK es independiente del establecimiento de tamao de la ventana del receptor. Los ACKs no incrementan automticamente el tamao de la ventana. Los ACK son acumulativos.
ventana ofrecida (anunciada por el receptor) ventana utilizable

2
enviado y asentido

10

11

no puede enviarse enviado, no asentido puede enviarse ASAP hasta ampliar la ventana

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 47

Ventana se cierra
1 2 3 4 5 6 7 8 9 10 11

Se transmite un nico octeto con (seq=7)

10

11

Se recibe un asentimiento (ack=6 y win=4)

10

11

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 48

Ventana se abre
El receptor abre la ventana cuando el buffer TCP se vaca (significa que los datos se han entregado a la aplicacin).

10

11

Se recibe un asentimiento (ack=6 y win=6)

10

11

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 49

Ventana se encoge
En la RFC se recomienda fuertemente no encoger la ventana.

10

11

Se recibe un asentimiento (ack=5 y win=3)

10

11

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 50

Gestin de la ventana deslizante en TCP


El receptor enva dos parmetros al emisor:
ACK
32 bits

WIN
16 bits

La interpretacin es:
estoy preparado para recibir nuevos datos, desde seq=ack, ack+1,,ack+win-1.

El receptor puede asentir datos sin abrir la ventana. El receptor puede cambiar el tamao de la ventana sin asentir datos.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 51

Ventana deslizante: Ejemplo


Transferencia de 8192 octetos desde la mquina srv4 a la mquina bsdi: bsdi% sock i s 7777 svr4% sock i n8 bsdi 7777 El cliente (svr4) realiza ocho escrituras de 1024 bytes, el servidor (bsdi) lee los datos recibidos y los descarta.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 52

Ventana deslizante: Ejemplo


svr4.1056 0.017868 0.022699 (0.0048) 0.027650 (0.0050) 0.027799 (0.0001) 0.031881 (0.0041) 0.034789 (0.0029) 0.039276 (0.0045) 0.044618 (0.0053) 0.050326 (0.0057) 0.055286 (0.0050) 0.055441 (0.0002) 0.061742 (0.0063) 11 7 8 9
PSH 4097:5121(1024) ACK 1, WIN 4096 PSH 5121: 6145(1024 ) ACK 1, WIN 4096 PSH 6145:7169(1024) ACK 1, WIN 4096
ACK 6145, WIN 4096

bsdi.7777
K 1, WIN 4096 ACK 1, WIN 4096 ACK 1, WIN 4096

1 2 3

PSH 1:1025(1024) AC PSH 1025:2049(1024) PSH 2049:3073(1024)

4096 ACK 2049, WIN 3072 IN W , 73 30 ACK

4 5

PSH 3073:4097(1024)

ACK 1, WIN 4096


4096

ACK 4097, WIN

10

PSH 7169:8193(1024)

ACK 1, WIN 4096


4096

ACK 8193, WIN

12

0.066206 (0.0045)

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 53

si emisor rpido, receptor lento


svr4.1056 0.006806 0.008838 (0.0020) 0.010490 (0.0017) 0.012057 (0.0016) 0.038562 (0.0265) 0.055994 (0.0174) 0.057815 (0.0018) 0.059777 (0.0020) 0.061439 (0.0017) 0.062992 (0.0016) 7 8 9 10 1 2 3 4
PSH 1:1025(1024) AC PSH 1025:2049(1024) PSH 2049:3073(1024) PSH 3073:4097(1024) K 1, WIN 4096 ACK 1, WIN 4096 ACK 1, WIN 4096 ACK 1, WIN 4096

bsdi.7777

0 ACK 4097, WIN 96 40 ACK 4097, WIN

5 6

4097:5121(1024) AC 5121:6145(1024) AC 6145:7169(1024) AC

K 1, WIN 4096 K 1, WIN 4096

K 1, WIN 4096 FIN, PSH 7169:8193 (1024) ACK 1, WIN


ACK 8194, WIN

4096

11 12

0.071915 (0.0089) 0.074313 (0.0024)

ACK 8194, WIN

4096

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 54

Slow Start
Algoritmo que permite el control de la congestin, es decir, evita que el emisor sature la red:
En redes LAN la seleccin de parmetros de conexin es sencilla. En redes WAN pueden ocurrir dificultades cuando routers intermedios tienen paquetes encolados.

El algoritmo de slow start consiste en:


La velocidad de envo de paquetes depende de la velocidad de los asentimientos recibidos. Se introduce una ventana en el emisor, que se denomina, ventana de congestin (cwnd).

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 55

Algoritmo de Slow Start


Cuando se establece la conexin se establece el valor inicial cwnd=1 (unidades de segmentos). Cada vez que se recibe un asentimiento (ACK), la ventana de congestin se incrementa en un segmento cwnd=cwnd+1.
Normalmente, se recibe un ACK por cada segmento:
pero se puede recibir un ACK que asiente varios segmentos, o recibir un ACK que asiente menos de un segmento

En cualquier caso, siempre se incrementa en 1 segmento.

El emisor podr enviar tantos datos como el mnimo entre la ventana de congestin y la ventana anunciada. El crecimiento de la ventana de congestin normalmente se incrementa exponencialmente:
No es as si se envan ACK acumulados.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 56

Algoritmo de Slow Start


cwnd = 1 cwnd = 2
Segmento 1

ento 1 ACK del segm


Segmento 2 Segmento 3

cwnd = 4

ento 2 ACK del segm ento 3 ACK del segm Segmento 4 Segmento 5 Segmento 6
Segmento 7

ento 4 ACK del segm to 5 en ACK del segm to 6 en gm ACK para se to 7 en gm ACK para se

cwnd = 8

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 57

Slow Start: Ejemplo


sun.1118 0.0 0.716330 (0.7163) 0.716967 (0.0006) 0.717640 (0.0007) 1.466086 (0.7484) 1.466778 (0.0007) 1.467425 (0.0006) cwnd = 3 6 7 cwnd = 4 9 10 cwnd = 5 cwnd = 6 cwnd = 1 1 cwnd = 2 3 4
513:1025(512) ACK 1, WIN 4096 1025:1537(512) ACK 1, WIN 4096
ACK 1025, WIN 8192

vangogh.discard
1:513(512) ACK 1, WI N 4096

8192 ACK 513, WIN

1537:2049(512) ACK 2049:2561(512) ACK

1, WIN 4096 1, WIN 4096


8192

ACK 1537, WIN

1.946065 (0.4786) 1.946709 (0.0006) 1.947350 (0.0006) 2.576084 (0.6287) 2.576294 (0.0002)

2561:3073(512) ACK 3073:3585(512) ACK

1, WIN 4096 1, WIN 4096


8192

ACK 2049, WIN

11 12

8192 ACK 2561, WIN

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 58

Flag PUSH
Notificacin del emisor al receptor para que el receptor pase inmediatamente los datos que ha recibido a la aplicacin receptora:
Todos los contenidos en el segmento con PUSH activo. Datos previos almacenados por TCP.

Inicialmente las aplicaciones podan indicar al stack TCP que activase el flag de PUSH para que los datos se enviaran de manera inmediata:
Pero la mayora de implementaciones actuales no soportan esta caracterstica a nivel API.

Implementaciones actuales (Berkeley y derivadas):


Activan PUSH en el segmento que vaca el buffer de transmisin. Siempre entregan de forma inmediata los datos en recepcin, por lo tanto ignoran el flag PUSH.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 59

Datos urgentes (flag URG)


Notificacin para indicar que existen datos urgentes en el flujo de octetos:
Activar el flag de URG. Valor del puntero a datos urgentes:
Indica el offset (positivo) que debe ser aadido al nmero de secuencia del segmento para obtener el nmero de secuencia del ltimo octeto de datos urgentes (RFC). En muchas implementaciones este offset apunta al siguiente octeto despus de los datos urgentes.

El extremo TCP receptor debe indicar la llegada de datos urgentes a la aplicacin receptora. Por qu se utiliza?:
Permite al extremo emisor enviar un segmento aunque el tamao de la ventana ofrecida sea cero.

Cundo se utiliza?:
Tecla de interrupcin para una conexin remota (rlogin, telnet). Interrumpir la transferencia de un fichero en FTP.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 60

Datos urgentes: Ejemplo


Arrancamos un programa sock en la mquina bsdi y est en pausa durante 10 seg. despus del establecimiento de la conexin:
bsdi % sock i s P10 5555

Arrancamos un cliente en la mquina sun, indicndole que va a utilizar un buffer de transmisin de 8192 octetos y que realice seis escrituras de 1024 octetos, e indicamos que enve un octeto de datos urgentes justo antes de realizar la quinta escritura (-U5 ):
sun % sock v i n6 S8192 U5 bsdi 5555
connected on 140.252.13.33.1305 a 140.252.13.35.5555 SO_SNDBUF = 8192 TCP_MAXSEG = 1024 wrote 1024 bytes wrote 1024 bytes wrote 1024 bytes wrote 1024 bytes wrote 1 bytes of urgent data wrote 1024 bytes wrote 1024 bytes

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 61

Datos urgentes: Ejemplo


1 2 3 4 5 0.0 0.073743 (0.0737) 0.096969 (0.0232) 0.157514 (0.0605) 0.164267 (0.0068) sun.1305 > bsdi.5555: sun.1305 > bsdi.5555: sun.1305 > bsdi.5555: bsdi.5555 > sun.1305: sun.1305 > bsdi.5555: P 1:1025(1024) ack 1 win 4096 P 1025:2049(1024) ack 1 win 4096 P 2049:3073(1024) ack 1 win 4096 . ack 3073 win 1024 P 3073:4097(1024) ack 1 win 4096

Aplicacin escribe 1 octeto de datos urgentes (seq=4097)


6 0.167961 (0.0037) sun.1305 > bsdi.5555: . ack 1 win 4096 urg 4098

Aplicacin escribe 1024 octetos


7 0.171969 (0.0040) sun.1305 > bsdi.5555: . ack 1 win 4096 urg 4098

Aplicacin escribe 1024 octetos


8 0.176196 (0.0042) sun.1305 > bsdi.5555: . ack 1 win 4096 urg 4098

Aplicacin realiza close


9 10 0.180373 (0.0042) 0.180768 (0.0004) sun.1305 > bsdi.5555: sun.1305 > bsdi.5555: . ack 1 win 4096 urg 4098 . ack 1 win 4096 urg 4098

11 12

0.367533 (0.1868) 0.368478 (0.0009)

bsdi.5555 > sun.1305: sun.1305 > bsdi.5555:

. ack 4097 win 0 . ack 1 win 4096 urg 4098

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 62

Datos urgentes: Ejemplo


Receptor abre la ventana anunciada (aplicacin se despierta)
13 9.829712 (9.4612) bsdi.5555 > sun.1305: . ack 4097 win 2048

TCP enva el octeto urgente en este segmento


14 9.831578 (0.0019) sun.1305 > bsdi.5555: . 4097:5121(1024) ack 1 win 4096 urg 4098

Se desactiva el modo urgente porque ya ha sido enviado el octeto de datos urgentes


15 9.833303 (0.0017) sun.1305 > bsdi.5555: . 5121:6145(1024) ack 1 win 4096

Receptor abre la ventana anunciada


9.835089 (0.0018) bsdi.5555 > sun.1305: . ack 4097 win 4096

TCP enva el ltimo octeto de datos e inicia el fin de la conexin


9.835913 (0.0008) 9.840264 (0.0044) 9.842386 (0.0021) 9.843622 (0.0012) 9.844320 (0.0007) sun.1305 > bsdi.5555: bsdi.5555 > sun.1305: bsdi.5555 > sun.1305: bsdi.5555 > sun.1305: sun.1305 > bsdi.5555: FP 6145:6146(1) ack 1 win 4096 . ack 6147 win 2048 . ack 6147 win 4096 F 1:1(0) ack 6147 win 4096 . ack 2 win 4096

TCP AVANZADO Pag. 63

NDICE
4. Timeouts y retransmisiones:
A. Temporizadores en TCP. B. Retransmisiones y temporizador de retransmisin en TCP. C. Algoritmo de Karn/Partridge. D. Algoritmo para evitar la congestin (congestion avoidance). E. Fast recovery y Fast retransmit.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 64

Temporizadores en TCP
TCP gestiona cuatro temporizadores por cada conexin:
Temporizador de retransmisin:
Permite retransmitir datos si no se recibe un asentimiento del receptor.

Temporizador persistente:
Permite el flujo de informacin del tamao de la ventana aunque el otro extremo haya cerrado la ventana anunciada.

Temporizador de keepalive:
Permite detectar cuando el otro extremo de la conexin se cae o se reinicializa.

Temporizador 2MSL:
Permite esperar un tiempo para garantizar que se cierra correctamente la conexin. Tiempo que permanece en el estado TIME_WAIT.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 65

Retransmisiones en TCP
Se debe realizar control de errores porque:
Se pueden perder segmentos. Se pueden recibir segmentos errneos.

Tcnicas de control de errores:


Esquemas de deteccin de errores (CRC). Esquema de retransmsiones.

TCP emplea como esquema de retransmisin una versin de Go-Back-N ARQ (Automatic Repeat Request). TCP retransmite un segmento cuando asume que se ha perdido:
No se recibe asentimiento y vence el temporizador de retransmisin. Se reciben mltiples asentimientos para el mismo segmento.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 66

Temporizador de retransmisiones en TCP


Por cada conexin se establece un temporizador de retransmisiones. Cuando el temporizador vence (timeout), el emisor retransmite el primer segmento que no ha sido asentido:
RTO = Retransmission Timeout

El temporizador se activa cuando:


Se enva un segmento con datos y el temporizador no estaba activo. Llega un ACK que asiente nuevos datos. Se retransmite un segmento.

El temporizador se desactiva cuando:


Todos los segmentos enviados son asentidos.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 67

Cmo se establece el RTO?


El valor del RTO es crucial para obtener unas buenas prestaciones de TCP:
Un valor demasiado pequeo implica retransmisiones innecesarias. Un valor demasiado grande implica esperar demasiado tiempo antes de realizar la retransmisin.

Principal problema para establecer su valor es que los retardos en la red no son fijos:
RTO debe tener un valor variable y que se adapte dinmicamente a las condiciones de la red. Por lo tanto, va a estar basado en la medida de round-trip time (RTT) que realiza TCP.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 68

Medida del RTT


TCP debe medir la diferencia de tiempos entre la transmisin de un segmento y la recepcin del correspondiente ACK. Se realiza una nica medida simultneamente, es decir, no existen medidas que se solapen.
Segmento 1

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 69

Clculo del RTO a partir de RTT


srtt n +1 = srtt n + (1 ) RTT
RTOn +1 = srtt n +1

Siendo: srtt estimador suave de RTT.


= 0.9 y = 2 (valores recomendados).

RTT #1 RTT #2 RTT #3


ACK se ACK seg

ACK segmen

to 1

Segmento 2 Segmento 3
ACK seg mento 2 +3

S e g me

nto 4

Segmento 5
gmento 4 mento 5

Modificacin de Jacobson en 1999:


Mejora el estimador cuando existen grandes fluctuaciones en el RTT (tiene en cuenta la varianza).

srtt n +1 = RTT + (1 ) srtt n rtt var n +1 = ( RTT srtt n ) + (1 ) rtt var n RTO n +1 = srtt n +1 + 4 rtt var n +1
Siendo: rttvar estimador varianza de RTT. = 0.125 y = 0.25

Valores iniciales:

RTO0 = 6 seg ( srtt o = 0 seg. rtt var0 = 3seg.) ( RTO0 = srtt 0 + 2rtt var0 ) srtt1 = RTT + 0.5 rtt var1 = srtt1 / 2

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 70

Algoritmo de Karn/Partridge
Problema de ambigedad de los asentimientos:
Si se recibe un asentimiento de un segmento retransmitido, el emisor no sabe si el asentimiento corresponde al segmento original o al segmento retransmitido.

Algoritmo de Karn/Partridge:
Cada vez que TCP retransmite un segmento, se paran la medidas de RTT, hasta que se reciba un asentimiento asociado con un segmento no retransmitido:
Si es preciso se reutiliza el ltimo RTO.

Cada vez que se retransmite un segmento, el valor del RTO se establece de la forma siguiente (backoff exponencial):

RTOn +1 = max(2 RTOn ,64)

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 71

Control de la congestin
La mayora de segmentos perdidos se deben a problemas de congestin en la red. Los mecanismos de retransmisin:
Valor de RTO en funcin del RTT. Backoff exponencial.

Algoritmos especficos:
Slow start [Jacobson 88]. Congestion avoidance [Jacobson 88]. Fast retransmit y fast recovery [Jacobson 90].

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 72

Congestion avoidance
Se considera que existe congestin cuando se pierden segmentos:
Vence el temporizador de retransmisin. Llegan asentimientos duplicados.

Se evita la congestin empleado los algoritmos de slow start y congestion avoidance juntos:
cwnd debe decrecer mucho cuando aumenta la congestin. cwnd debe crecer lentamente cuando la congestin mejora.

Se introduce la variable ssthresh (Slow Start Threshold Size):


Si cwnd < ssthresh TCP en modo slow start. Si cwnd >= ssthresh TCP en modo congestion avoidance.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 73

Slow start + Congestion avoidance


1. Valores iniciales:
cwnd=1(segmento) y ssthresh=65535 octetos.

2. El emisor puede transmitir el mnimo entre ventana anunciada y ventana de congestin, es decir, ventana efectiva. 3. Si se detecta congestin:
stthresh = max(2 segmentos, ventana_efectiva/2). Si es debida a un timeout adems cwnd=1(segmento).

4. Cuando se recibe un asentimiento:


Si estamos en slow start (cwnd < ssthresh):
cwnd se actualiza a (cwnd + 1) (segmentos).

Si estamos en congestion avoidance (cwnd >= ssthresh):


cwnd se actualiza a (cwnd + 1/cwnd)(segmentos)

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 74

Slow start + Congestion avoidance


ssthresh=8 (segmentos)
cwnd (en segmentos)

14 12 10 8 6 4 2 0
t= 0 t= 2 t= 4
Roundtrip times

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 75

Fast retransmit y Fast recovery


Fast retransmit se aplica cuando se reciben tres o ms asentimientos duplicados:
Motivo: si TCP recibe un segmento fuera de secuencia debe generar sin retardos un asentimiento (duplicado). Algoritmo:
Se enva inmediatamente (sin esperar a que venza el timeout correspondiente) el segmento que parece que se ha perdido. Actualiza el valor de ssthresh=cwnd/2(segmentos). Entra en slow start cwnd=1(segmentos).

Fast recovery evita entrar en modo slow start despus de un fast retransmit:
Motivo: si se reciben asentimientos es que fluyen los datos.

t= 6

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 76

Fast retransmit + Fast recovery


En la prctica ambos algoritmos se implementan juntos, as cuando se recibe el tercer ACK duplicado: 1. Realiza los siguientes pasos:
ssthresh=(cwnd/2) (segmentos).

se retransmite el segmento perdido. cwnd=(ssthresh+3)(segmentos).

3. Cada vez que llega un ACK duplicado:


cwnd se actualiza a (cwnd+1)(segmentos). transmite un segmento si se puede.

4. Cuando llega un ACK de nuevos datos:


cwnd=ssthresh (segmentos).

TCP AVANZADO Pag. 77

NDICE
5. Temporizador persistente:
A. Sndrome de la ventana tonta (Silly window syndrome)

TCP AVANZADO-TEMPORIZADOR PERSISTENTE Pag. 78

Temporizador persistente
En TCP puede ocurrir:
El receptor cierre la ventana ofrecida (tamao cero). El receptor enva un asentimiento para abrir la ventana pero este segmento se pierde. Como los asentimientos no se envan de forma fiable, podra darse una situacin de deadlock.

Solucin a travs del temporizador persistente:


El emisor enva segmentos (window probe) periodicamente para saber si la ventana se ha abierto. La periodicidad de estos segmentos la establece el temporizador persistente.

TCP AVANZADO-TEMPORIZADOR PERSISTENTE Pag. 79

Temporizador persistente: Ejemplo


El servidor (svr4) est dormido durante 100000 segundos, por lo tanto no leer los datos recibidos:
svr4 % sock i s P100000 5555

1 2 3 4 5 6 7 8 9 10 11 12 13

El cliente (bsdi) realiza escrituras de 1024 octetos.


0.0 bsdi.1027>svr4.5555: P 1:1025(1024) ack 1 win 4096 . ack 1025 win 4096 3 . 1025:2049(1024) ack 1 win 4096 . 2049:3073(1024) ack 1 win 4096 . ack 3073 win 4096 6 . 3073:4097(1024) ack 1 win 4096 P 4097:5121(1024) ack 1 win 4096 P 5121:6145(1024) ack 1 win 4096 . ack 5121 win 4096 10 P 6145:7169(1024) ack 1 win 4096 P 7169:8193(1024) ack 1 win 4096 P 8193:9217(1024) ack 1 win 4096 . ack 9217 win 0

0.191961(0.1920) svr4.5555>bsdi.1027: 0.196950(0.0050) bsdi.1027>svr4.5555: 0.200340(0.0034) bsdi.1027>svr4.5555: 0.207506(0.0072) svr4.5555>bsdi.1027: 0.212676(0.0052) bsdi.1027>svr4.5555: 0.216113(0.0034) bsdi.1027>svr4.5555: 0.219997(0.0039) bsdi.1027>svr4.5555: 0.227882(0.0079) svr4.5555>bsdi.1027: 0.233012(0.0051) bsdi.1027>svr4.5555: 0.237014(0.0040) bsdi.1027>svr4.5555: 0.240961(0.0039) bsdi.1027>svr4.5555: 0.402143(0.1612) svr4.5555>bsdi.1027:

NOTA: Antes de cerrar la ventana acepta 9216 octetos es por motivos de implementacin del stack TCP/IP de svr4.

TCP AVANZADO-TEMPORIZADOR PERSISTENTE Pag. 80

Temporizador persistente: Ejemplo


Activa el temporizador persistente (enva window probe ~5 seg. despus)
14 15 5.351561(4.9494) 5.355571(0.0040) bsdi.1027>svr4.5555: svr4.5555>bsdi.1027: . 9217:9218(1) ack 1 win 4096 . ack 9217 win 0

Enva window probe ~5 seg despus


16 17 10.351714(4.9961) 10.355670(0.0040) bsdi.1027>svr4.5555: svr4.5555>bsdi.1027: . 9217:9218(1) ack 1 win 4096 . ack 9217 win 0

Enva window probe ~6 seg despus


18 19 16.351881(5.9962) 16.355849(0.0040) bsdi.1027>svr4.5555: svr4.5555>bsdi.1027: . 9217:9218(1) ack 1 win 4096 . ack 9217 win 0

Enva window probe ~12 seg despus


20 21 28.352213(11.9964) 28.356178(0.0040) bsdi.1027>svr4.5555: svr4.5555>bsdi.1027: . 9217:9218(1) ack 1 win 4096 . ack 9217 win 0

Enva window probe ~24 seg despus


22 23 52.352874(23.9967) 52.356839(0.0040) bsdi.1027>svr4.5555: svr4.5555>bsdi.1027: . 9217:9218(1) ack 1 win 4096 . ack 9217 win 0

Enva window probe ~48 seg despus


24 25 100.354224(47.9974) bsdi.1027>svr4.5555: 100.358207(0.0040) svr4.5555>bsdi.1027: . 9217:9218(1) ack 1 win 4096 . ack 9217 win 0

Enva window probe ~60 seg despus


26 160.355914(59.9977) bsdi.1027>svr4.5555: . 9217:9218(1) ack 1 win 4096

TCP AVANZADO-TEMPORIZADOR PERSISTENTE Pag. 81

Temporizador persistente: Ejemplo


Normalmente el temporizador persistente sigue un mecanismo de backoff exponencial.
Por qu en la traza son 5, 6, 12, 24, 48, 60?
El valor debe estar entre 5 y 60 segundos. Por ejemplo, para un LAN tpicamente:
Primer valor = 1,5 seg. 5 seg. Segundo valor = 1,5 * 2 = 3 seg. 5 seg. Tercer valor = 3 * 2 = 6 seg. Sptimo valor = 2 * 48 = 96 seg. 60 seg.

El segmento de window probe contiene un octeto:


TCP puede enviar un octeto ms all de la ventana ofrecida. NOTA: en la traza los ACKs no asienten este octeto este octeto debe retransmitirse.

TCP contina enviando window probe (cada 60 seg.) hasta que:


Se abre la ventana. Finaliza la aplicacin.

TCP AVANZADO-TEMPORIZADOR PERSISTENTE Pag. 82

Silly window syndrome


Es un efecto que se puede producir en todos los protocolos que emplean un mecanismo de ventana deslizante para el control de flujo. Problema: pueden intercambiarse pequeas cantidades de datos en una conexin en vez de segmentos completos (MSS):
El receptor anuncia ventana de tamao pequeo, en vez de esperar y propagar una ventana mayor. El emisor transmite pequeas cantidades de datos, en vez de esperar por datos adicionales que completen el MSS.

Solucin: ambos extremos tienen que evitar el silly window syndrome (SWS).

TCP AVANZADO-TEMPORIZADOR PERSISTENTE Pag. 83

Evitar SWS en el receptor


No debe anunciar ventanas de tamao pequeo:
No anunciar una ventana mayor hasta que la ventana pueda incrementarse hasta:
MSS del receptor, o La mitad del buffer del receptor. (el mnimo de los dos valores)

TCP AVANZADO-TEMPORIZADOR PERSISTENTE Pag. 84

Evitar SWS en el emisor


No transmite hasta que una de las siguientes condiciones se cumpla:
a) Pueda enviarse un segmento completo (MSS). b) Pueda enviarse al menos la mitad del tamao mximo de la ventana que ha anunciado el otro extremo. c) Pueda enviar todo los datos disponibles siempre que:
Si est habilitado Nagle: no tenga ningn segmento enviado anteriormente pendiente de asentimiento, o Si est deshabilitado Nagle.

Consideraciones:
La condicin (b) aborda el problema de receptores que anuncian ventanas de tamao pequeo (menor que el MSS). Esta condicin slo se observa con host antiguos. La condicin (c) es el algoritmo de Nagle.

TCP AVANZADO-TEMPORIZADOR PERSISTENTE Pag. 85

SWS: Ejemplo
Programa cliente, realiza 6 escrituras de 1024 octetos: sun% sock i n6 bsdi 7777 Programa servidor, se detiene 4 seg. despus de la primera escritura, y 2 seg. despus de cada una de las siguientes: bsdi% sock i s P4 p2 r256 7777 La aplicacin realiza lecturas de 256 octetos.

TCP AVANZADO-TEMPORIZADOR PERSISTENTE Pag. 86

SWS: Ejemplo
Tiempo # segmento Enva TCP 0.000 0.002 0.003 0.005 0.170 3.99 5.151 5.17 5.99 7.99 9.99 10.151 10.170 11.99 13.99 8 9 4098:4099(1) ACK 4099, WIN 0 read 256 read 256 2818 2562 1278 1534 6 7 4097:4098(1) ACK 4098, WIN 0 read 256 read 256 read 256 3585 3329 3073 3074 511 767 1023 1022 1 2 3 4 5 1:1025(1024) 1025:2049(1024) 2049:3073(1024) 3073:4097(1024) ACK 4097, WIN 0 read 256 3840 3841 256 255 Accin Recibe TCP Aplicacin buffer receptor (4096) Datos 1024 2048 3072 4096 Disponible 3072 2048 1024 0

TCP AVANZADO-TEMPORIZADOR PERSISTENTE Pag. 87

SWS: Ejemplo
Tiempo # segmento Enva TCP 15.151 15.170 15.172 15.730 15.99 17.99 19.99 20.151 20.170 21.99 23.99 25.151 25.170 25.171 25.174 16 17 18 19 FIN 5634:6145(511) ACK 6146,WIN 767 5633:5634(1) ACK 5634,WIN 1279 3328 768 14 15 5124:5633(509) ACK 5633, WIN 0 read 256 read 256 3072 2816 2817 1024 1280 1279 10 11 12 13 4100:5124(1024) ACK 5124,WIN 509 read 256 read 256 read 256 3331 3075 2819 3328 765 1021 1277 768 4099:4100(1) ACK 4100,WIN 1533 3587 509 Accin Recibe TCP Aplicacin buffer receptor (4096) Datos 2563 Disponible 1533

TCP AVANZADO-TEMPORIZADOR PERSISTENTE Pag. 88

SWS: Ejemplo
Tiempo # segmento Enva TCP 25.99 27.99 29.99 31.99 33.99 35.99 37.99 39.99 39.99 41.99 43.99 45.99 47.99 49.99 51.99 20 ACK 6146, WIN 2816 read 256 read 256 read 256 read 256 read 256 read 256 (EOF) 1024 768 512 256 0 0 3072 3328 3584 3840 4096 4096 Accin Recibe TCP Aplicacin read 256 read 256 read 256 read 256 read 256 read 256 read 256 read 256 buffer receptor (4096) Datos 3072 2816 2560 2304 2048 1792 1536 1280 Disponible 1024 1280 1536 1792 2048 2304 2560 2816

TCP AVANZADO-TEMPORIZADOR PERSISTENTE Pag. 89

SWS: Ejemplo
Segmento 6: Vence el temporizador de persistencia. Segmento 8: Vence el temporizador de persistencia. Segmento 10 y 11: Vence el temporizador de persistencia y se anuncia un tamao de ventana de 1533 (mayor que el MSS). Segmento 14: Se anuncia un tamao de ventana de 509 porque sino produciramos un estrechamiento de la ventana. Segmento 16 y 17: Vence el temporizador de persistencia y se anuncia un tamao de ventana de 1279 (mayor que el MSS). Segmento 19: FIN ocupa un nmero de secuencia y tambin un espacio en el buffer de recepcin. Segmento 20: Anuncia un nuevo tamao de ventana porque puede aumentarse en ms de la mitad del buffer del receptor (dependiente de la implementacin, podra enviarlo antes)

TCP AVANZADO Pag. 90

NDICE
6. Temporizador keepalive.

TCP AVANZADO-TIMEOUTS Y RETRANSMISIONES Pag. 91

Temporizador de keepalive
Aunque no exista intercambio de datos no se cierra la conexin TCP (no existen mecanismos de polling). Se introduce en TCP el temporizador de keepalive para detectar inactividad en el otro extremo de la conexin. Algoritmo: si no existe actividad en dos horas, un extremo enva un segmento de prueba a otro extremo, puede ocurrir:
Responde normalmente se activa de nuevo el temporizador. No responde (cado, reinicializado, o no alcanzable) se envan hasta 10 segmentos de prueba cada 75 seg. antes de dar por finalizada la conexin. Se recibe un reset (cado o reinicializado) finaliza la conexin.

TCP AVANZADO Pag. 92

NDICE
7. Futuro y prestaciones.

TCP AVANZADO-FUTURO Y PRESTACIONES Pag. 93

Futuro y prestaciones
Modificaciones que mejoran las prestaciones de TCP:
Descubrimiento del MTU del camino (Path MTU Discovery). Opcin de escalado de la ventana. Opcin de sello temporal (timestamp).

También podría gustarte