La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

1 TCP Notas de la clase 25 Octubre del 2011. 2 Referencias Cerf, V., and R. Kahn, "A Protocol for Packet Network Intercommunication", IEEE Transactions.

Presentaciones similares


Presentación del tema: "1 TCP Notas de la clase 25 Octubre del 2011. 2 Referencias Cerf, V., and R. Kahn, "A Protocol for Packet Network Intercommunication", IEEE Transactions."— Transcripción de la presentación:

1 1 TCP Notas de la clase 25 Octubre del 2011

2 2 Referencias 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. ( varios errores e inconsistencias) RFC 1122 October 1989 ( se salvan bugs del 793) Extensiones de TCP en el RFC 1323 Peterson and Davie, pp 378-405 Paxon, Allman, Chu and Sargent RFC 6298 “Computing TCP’s Retransmission Timer” June 2011

3 3 Agenda o Revisión Nivel de Transporte o 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)

4 4 Recordar los modelos de capas…. 1 Parte de la clase

5 5 Nivel Transporte : “End to End” EnriLean milagros.dc.uba.ar stone.ac.upc.es Nivel de Red Nivel de Enlace Nivel de Aplicación Nivel de Transporte O.S. HeaderDataHeaderData HD HD HD HDHD HD

6 6 Modelo OSI Session Network Link Physical Application Presentation Transport Network Link Network Transport Session Presentation Application Network Link Physical Peer-layer communication layer-to-layer communication Router 1 2 3 4 5 6 7 1 2 3 4 5 6 7

7 7 TCP : 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 ( “problema de los dos ejércitos”)  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 ).

8 8 TCP : orientado a conexión 3-way handshake (Activo) Cliente (Pasivo) Server Syn Syn + Ack Ack 4-way handshake (Activo) Cliente (Pasivo) Server Fin (Data +) Ack Fin Ack Caso ideal, en el RFC 793 Se plantean varios escenarios

9 9 TCP soporta un “stream de bytes” Byte 0Byte 1 Byte 2Byte 3 Byte 0Byte 1Byte 2Byte 3 Host A Host B Byte 80

10 10 …dicho servicio se emula usando segmentos TCP Byte 0Byte 1 Byte 2Byte 3 Byte 0Byte 1Byte 2Byte 3 Host A Host B Byte 80 TCP Data Byte 80 Un segmento se envía cuando: 1.Segmento full (MSS bytes), 2.No esta “full”, pero sucede time out, 3.“Pushed” por la aplicación.

11 11 Formato del Segmento TCP IP Hdr IP Data TCP HdrTCP Data Src portDst port Sequence # Ack Sequence # HLEN 4 RSVD 6 URGACK PSH RSTSYNFIN Flags Window Size ChecksumUrg Pointer (TCP Options) 01531 TCP Data TCP Header y Data + dirección IP Los números de port Src/dst y la direcciones identifican unívocamente un “socket” Veremos concepto de pseudo header

12 12 Números de Secuencia Host A Host B TCP Data TCP HDR TCP HDR ISN (initial sequence number) Seq_Num = 1 er byte ACK Seq_Num = Próximo byte esperado

13 13 ISN: Initial Sequence Numbers Connection Setup 3-way handshake (Active) Client (Passive) Server Syn +ISN A Syn + Ack +ISN B Ack

14 Spring 200514 TCP 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 receiver’s buffers?

15 15 “TCP Sliding Window” Window Size Outstanding Un-ack’d data Data OK to send Data not OK to send yet Data ACK’d Politica de retransmision “Go Back N”. window size es “advertised” por el receptor ( server) (usualmente 4k – 8k Bytes en connection set-up).

16 16 TCP Sliding Window Host A Host B ACK Window Size Round-trip time (1) RTT > Window size ACK Window Size Round-trip time (2) RTT = Window size ACK Window Size ???

17 RTO 17

18 18 Jacobson ( 1988)

19 19 TCP: Retransmisión y Timeouts Host A Host B ACK Round-trip time (RTT) ACK Retransmission TimeOut (RTO) Estimated RTT Data1Data2 Guard Band valor adaptativo de timeout de RTX ( lazo cerrado !!!!!, teoria de control) : Congestion Changes in Routing RTT es muy variable

20 20 Concepto :TCP Timer Management (a) Función densidad de probabilidad para tiempos de llegadas de ACK a nivel 2 (b) Función densidad de probabilidad para tiempos de llegadas de ACK TCP Figuras : Tanembaum 4 edicion

21 21 Retransmisión Adaptiva (Algoritmo Original) Mide SampleRTT para cada par segmento/ ACK Calcula el promedio ponderado de RTT –EstimatedRTT =  x EstimatedRTT +  x SampleRTT –donde  +  = 1  <= 0.9  <= 0.2 Fijar timeout basado en EstimatedRTT –TimeOut = 2 x EstimatedRTT

22 22 Algoritmo de Karn/Partridge [KP87] No considerar RTT cuando se retransmite Duplicar timeout luego de cada retransmisión SenderReceiver Original transmission ACK SampleR TT Retransmission SenderReceiver Original transmission ACK SampleR TT Retransmission [KP87] Karn, P. and C. Partridge, "Improving Round-Trip Time Estimates in Reliable Transport Protocols", SIGCOMM 87.

23 23 Algoritmo de Jacobson/ Karels [JK88] Proponen un nueva forma de calcular Timeout de RTX 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 =  x EstRTT +  x Dev –donde  = 1 y  = 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 ( como veremos en la próxima clase) –Además de ayudar a controlar la congestión, la idea es no retransmitir cuando no es necesario. [JK88] Jacobson, V. and M. Karels, "Congestion Avoidance and Control", ftp://ftp.ee.lbl.gov/papers/congavoid.ps.Z.

24 24 Ejemplo de estimación de RTT:

25 RFC 6298 "Computing TCP's Retransmission Timer", June 2011 El algoritmo básico del emisor TCP mantiene dos variables de estado Para computar el RTO  SRTT (smoothed round-trip time) and  RTTVAR (round-trip time variation) Hasta que el emisor realice la medición para el primer segmento: – “SHOULD set” RTO <- 1 segundo ( versiones anteriores 3 segundos o mas) Cuando se realiza la primera medida R ; RTT el host “debe” setear  SRTT <- R  RTTVAR <- R/2  RTO <- SRTT + max (G, K*RTTVAR), siendo K=4, G = 1seg (granularidad) 25

26 RFC 6298 "Computing TCP's Retransmission Timer", continuación Las subsiguientes mediciones R’ del RTT el host debe setear :  RTTVAR <- (1 - beta) * RTTVAR + beta * |SRTT - R’| (1)  SRTT <- (1 - alpha) * SRTT + alpha * R’ (2) Con alpha=1/8 y beta=1/4 (sugeridos en [JK88]). Nota : el valor de SRTT usado para actualizar RTTVAR en (1) es el valor antes de su propia actulizacion en (2). RTTVAR y SRTT debe calcularse en el orden precedente. Luego se debe setear el RTO :  RTO <- SRTT + max (G, K*RTTVAR) 26

27 RFC 6298 "Computing TCP's Retransmission Timer", continuación Si el RTO is calculado es menor a 1 segundo entonces deberia redondear a 1…… siguen las consideraciones para evaluar cual es un valor conservativo y evitar retransmisiones espureas …… 27

28 28 TCP 2 parte de la Clase

29 29 TCP Repaso ( basado en el Peterson)

30 30 Protocolos 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

31 31 TCP Generalidades Orientado a conexión flujo de byte –app escriben bytes –TCP envía segmentos –app lee bytes Application process Write bytes TCP Send buffer Segment Transmit segments Application process Read bytes TCP Receive buffer … …… Full duplex Control de flujo: evita que el Tx rebalse al receptor Control de congestión: evita que el Tx sobrecargue la red

32 32 Enlace 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

33 33 VersionHLen TOSLength IdentFlagsOffset TTLProtocolChecksum SourceAddr DestinationAddr Options (variable) Pad (variable) 048161931 Contexto Formato de Segmento Options (variable) Data Checksum SrcPortDstPort HdrLen 0Flags UrgPtr AdvertisedWindow SequenceNum Acknowledgment IP TCP Pseudo encabezado URG|ACK|PSH|RST|SYN|FIN

34 34 Formato de Segmento

35 35 Formato de Segmento (cont) Cada conexión es identificada por la 4-tupla: –(SrcPort, SrcIPAddr, DsrPort, DstIPAddr) Ventana deslizante + control de flujo –acknowledgment, SequenceNum, AdvertisedWindow Flags –SYN, FIN, RESET, PUSH, URG, ACK Checksum –pseudo header(IP) + TCP header + data Sender Data(SequenceNum) Acknowledgment + AdvertisedWindow Receiver

36 36 Establecimiento y Término de Conexión Active participant (client) Passive participant (server) SYN, SequenceNum = x SYN + ACK, SequenceNum = y, ACK, Acknowledgment = y + 1 Acknowledgment = x + 1

37 37 Diagrama de Estado de Transmisión CLOSED LISTEN SYN_RCVDSYN_SENT ESTABLISHED CLOSE_WAIT LAST_ACKCLOSING TIME_WAIT FIN_WAIT_2 FIN_WAIT_1 Passive openClose Send/SYN SYN/SYN + ACK SYN + ACK/ACK SYN/SYN + ACK ACK Close/FIN FIN/ACKClose/FIN FIN/ACK ACK + FIN/ACK Timeout after two segment lifetimes FIN/ACK ACK Close/FIN Close CLOSED Active open/SYN

38 38 Revisión de Ventana Deslizante Lado Transmisor LastByteAcked < = LastByteSent LastByteSent < = LastByteWritten Se tiene en buffer los bytes entre LastByteAcked y LastByteWritten Sending application LastByteWritten TCP LastByteSentLastByteAcked Receiving application LastByteRead TCP LastByteRcvdNextByteExpected Lado Receptor LastByteRead < NextByteExpected NextByteExpected < = LastByteRcvd +1 Se tiene en buffer los bytes entre NextByteRead y LastByteRcvd LastByteRead+1

39 39 Control de Flujo Tamaño del buffer de envío: MaxSendBuffer Tamaño del buffer de recepción: MaxRcvBuffer Lado receptor –LastByteRcvd - LastByteRead < = MaxRcvBuffer –AdvertisedWindow = MaxRcvBuffer - (LastByteRcvd - NextByteRead) Lado Transmisor –LastByteSent - LastByteAcked < = AdvertisedWindow –EffectiveWindow = AdvertisedWindow - (LastByteSent - LastByteAcked) –LastByteWritten - LastByteAcked < = MaxSendBuffer –Bloquear Tx si (LastByteWritten - LastByteAcked) + y > 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 Sending application LastByteWritten TCP LastByteSentLastByteAcked Receiving application LastByteRead TCP LastByteRcvdNextByteExpected

40 40 ¿Qué tan agresivamente el Tx explota la apertura de ventana? Soluciones en lado Receptor –Retardar los acuses de recibo Síndrome de Ventana estúpida (Silly) SenderReceiver

41 41 Silly Window Syndrome

42 42 Algoritmo 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

43 Spring 200543 Protección contra reapariciones de igual número de secuencia SequenceNum de 32 bits BandwidthTiempo 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

44 44 Mantención del “caño lleno” AdvertisedWindow de 16 bits BandwidthDelay 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

45 45 Extensiones 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.

46 46 Recordemos MSS Application Message TCP dataTCP hdr MSS TCP Segment IP dataIP hdr IP Packet Ethernet dataEthernet Ethernet Frame 20 bytes 14 bytes 4 bytes MTU 1500 bytes

47 47 Checksum !!!!!!!!! Se calcula entre el TCP Header, Data y el pseudo header

48 Tanembaum 4 Edicion48 Window Management

49 49 Initial 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 MSL=120 seconds

50 Spring 200550 TCP Connection Establishment ( a) TCP connection establishment in the normal case. (b) Call collision. 6-31 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.

51 Spring 200551 Connection Establishment (cont) Active participant (client) Passive participant (server) SYN, SequenceNum = x ACK, Acknowledgment =y+1 Acknowledgment =x+1 SYN+ACK, SequenceNum=y,

52 Spring 200552 TCP Connection Release Graceful release: –Each side of the connection released independently. Either side send TCP segment with FIN=1. 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. ACK+2nd. FIN combined. –Two-army problem, Timers, 2 MSL

53 Spring 200553 TCP 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.

54 54 TCP Connection Management Modeling The states used in the TCP connection management finite state machine.

55 Spring 200555 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

56 Spring 200556 Tear-down Packet Exchange SenderReceiver FIN FIN-ACK FIN FIN-ACK Data write Data ack

57 Spring 200557 Connection Tear-down

58 Spring 200558 Detecting Half-open Connections

59 Spring 200559 TIME-WAIT Assassination

60 Berkeley Sockets The socket primitives for TCP.

61 Socket Programming Example: Internet File Server Client code using sockets. 6-6-1

62 Socket Programming Example: Internet File Server (2) Client code using sockets.


Descargar ppt "1 TCP Notas de la clase 25 Octubre del 2011. 2 Referencias Cerf, V., and R. Kahn, "A Protocol for Packet Network Intercommunication", IEEE Transactions."

Presentaciones similares


Anuncios Google