Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Sistemas Operativos Y Redes I: Trabajo Práctico 2 Año Lectivo 2016
Sistemas Operativos Y Redes I: Trabajo Práctico 2 Año Lectivo 2016
Trabajo Práctico 2
Año Lectivo 2016
Profesores:
Verghelet, Paula
Trigila, Mariano Diego
Alumnos:
Gerszenswit Rober, 36716590/2016, rober.gerszen@gmail.com
Barrientos Damiana, 32663440/2016, damianal.barrientos@gmail.com
Redes y sistemas operativos I | Trabajo Práctico 2
Índice
Introducción ............................................... 3
Encabezado TCP ............................................. 3
Handshake TCP .............................................. 5
Cierre de comunicación ..................................... 6
Control de congestión ...................................... 7
Control de flujo ........................................... 7
AIMD ....................................................... 7
Causas de congestión ....................................... 9
Ventana de congestión ..................................... 10
Slow Start ................................................ 10
Fast Retransmit y Fast Recovery ........................... 10
TCP Tahoe, Reno y Vegas ................................... 11
RSVP ...................................................... 12
Bibliografía .............................................. 13
P á g i n a 2 | 13
Redes y sistemas operativos I | Trabajo Práctico 2
Introducción:
El protocolo de control de transmisión (TCP, por sus siglas en ingles), cuya especificación se
encuentra en el RFC 793, publicado en septiembre de 1981, es junto con el protocolo UDP, la base
de la capa de transporte en la pila de protocolos TCP/IP sobre la que funciona Internet. [2005, The
TCP/IP guide v3, Charles M. Kozierok]
Se puede definir a TCP por los servicios que brinda a la capa de aplicación como un protocolo
orientado a la conexión, end-to-end, confiable y de flujo de bytes [2012 TCP/IP Illustrated Vol. 1
The protocols.,K.R. Fall & W.R. Stevens ; RFC 793, IETF]
Entre sus características más importantes se hallan las siguientes:
• Orientado a la conexión: Ningún flujo de datos de aplicación entre dos hosts se realiza
antes de establecer una conexión previa entre ambos. (Three way handshake TCP).
• Entrega confiable: Números de secuencia se utilizan para identificar los flujos de bytes
correctamente recibidos, cuales son los siguientes que se esperan recibir y cuales se están
enviando en el otro sentido. Si se detecta un segmento de bytes no recibido, la entidad
TCP retransmitirá ese segmento.
• Adaptación a la red: TCP se pensó para funcionar sobre un servicio de datagramas no
confiable sobre redes heterogéneas. TCP esta diseñado para aprender dinámicamente las
características de la red en la que opera y ajusta su funcionamiento para maximizar el
troughput útil/valido (algo que Tanenmabum llama "goodput") sin sobrecargar la red y por lo
tanto congestionarla (troughput alto pero goodput bajo). Para lograr este cometido
implementa una serie de técnicas teóricas tales como Max-Min fairness y AIMD.
• Control de flujo: TCP administra buferes de datos y coordina el trafico para evitar
overflow. Técnicas de ventana deslizante y ventana de congestión permiten cumplir con
este cometido.
Encabezado de TCP:
Antes de proceder a responder a las consignas propias del tp se pasa a describir brevemente el
encabezado TCP.[RFC 793]
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Acknowledgment Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data | |U|A|P|R|S|F| |
| Offset| Reserved |R|C|S|S|Y|I| Window |
| | |G|K|H|T|N|N| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | Urgent Pointer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
P á g i n a 3 | 13
Redes y sistemas operativos I | Trabajo Práctico 2
• PSH: Se debe ejecutar la función de push (pasar el flujo de bytes bufereado a la capa de
aplicación).
P á g i n a 4 | 13
Redes y sistemas operativos I | Trabajo Práctico 2
La figura muestra una linea de tiempo de lo que pasa durante el establecimiento de una conexión
TCP mediante el saludo de tres vías (Handshake TCP), generalmente toman lugar los siguientes
eventos:
1. El cliente envía un segmento de control SYN (osea un segmento TCP con el bit SYN en 1
dentro la cabecera TCP, sin datos de carga) especificando el numero de puerto del par al
que desea conectarse y el número de secuencia inicial ISN=x de su flujo de bytes
almacenado en el campo SEQ.Tipicamente se envia el segmento de control con una o mas
opciones en este punto.
2. El servidor responde con su propio segmento de control SYN conteniendo su propio
numero inicial de secuencia ISN=y almacenado en el campo SEQ. El servidor a su vez
tiene el bit ACK establecido en 1 y el campo acknowledgement indica un acuse de recibo
acumulativo (el segmento SYN consume una secuencia de bytes). El numero de este
campo en cuestión informa el siguiente byte de la secuencia que el servido espera recibir.
En caso de perdida este paquete es retransmitido.
3. El cliente hace acuse de recibo acumulativo del segmento SYN enviado por el servidor.
Notese que se incrementa el campo acknowledgement pero no el campo sequence, esto
es así debido a que un segmento de control ACK no consume secuencias de bytes.
El intercambio de estos tres segmentos entre hosts cliente y servidor completan el establecimiento
de la conexión y es lo que se conoce como el saludo de tres vías TCP. Posteriomente cliente y
servidor pueden intercambiar datos. [TCP/IP Illustrated vol. 1 2a Ed. pág. 596].
P á g i n a 5 | 13
Redes y sistemas operativos I | Trabajo Práctico 2
La figura muestra como una conexión tcp es terminada en (tambien llamado cierre de conexión) en
este caso por el cliente. Cualquier host o terminal puden iniciar una operación de cierre.
Tradicionalmente es más comun que el cliente sea quien inicia el cierre de una conexión sin
embargo hay servidores que suelen iniciar el cirre de la conexión cuando completan una solicitud, a
su vez es posible que se de el caso de un cierre simultaneo de conexión. [TCP/IP Illustrated vol
1. ].
La secuencia de cierre es como sigue:
1. El cliente envia un segmento de control FIN especificando en numero actual de secuencia
que el servidor espera recibir. El segmento FIN tambien incluye un ACK por los ultimos
datos enviados por el servidor.
2. El servidor reponde enviando un acuse de recibo acumulativo (el segmento FIN consume
un número de secuencia). En este momento la aplicación que hace uso de la conexión es
notificada para que tome las medidas necesarias ante este evento.
3. Posterior a esto el servidor envia su propio segmento de control FIN. Es recibido por el
cliente este envia un ACK al servidor y da por terminada la conexión en el sentido
cliente→servidor.
4. El servidor recibe el ACK y da por terminada la conexión en el sentido servidor→cliente.
Si el FIN del servidor se pierde, el mismo se retransmite hasta recibir un ACK.
Y así es cómo finalmente termina una conexión TCP de forma normal.
P á g i n a 6 | 13
Redes y sistemas operativos I | Trabajo Práctico 2
• slow start
• congestion avoidance
• fast retransmit
• fast recovery
Estos algoritmos trabajan ajustando el límite de datos que cualquier entidad TCP puede inyectar a
la red en un momento dado. La cantidad de datos que puede enviar una entidad TCP se actualiza
dinamicamente en un campo llamado “Ventana de congestión” y “Ventana de receptor”, la cantidad
máxima de datos a enviar esta determinado por el mínimo entre los valores de estos dos campos.
● ¿Qué es el control de flujos TCP?
El control de flujos en TCP es la comunación entre las distintas entidades TCP de sus respectivas
capacidades de procesamiento de datos a fin de disminuir o aumentar (si es posible) la cantidad de
datos que se intercambian de forma tal que no se produzca una sobrecarga que lleve a la perdida
de paquetes y a su vez aumentar lo más posible el througput. Esto se logra mediante el ajuste
dinámico y el intercambio de información relativa al tamaño de la ventana deslizante de cada host.
● Describir AIMD.
AIMD es una ley de control de asignación de ancho de banda a distintos usuarios de una red que
teoricamente garantiza o converge hacia una asignación equitativa (todos los usuarios
eventualmente terminan con un ancho de banda aproximadamente igual) y eficiente (el canal
eventualmente se aprovecha en su casi totalidad, evitando así desperdiciar los recursos de la red).
Sus siglas AIMD provienen del ingés Additive Increase / Multiplicative Decrease es decir,
incremento aditivo, decremento multiplicativo. Esto describe en esencia lo que esta ley hace a la
hora de establecer el aumento o la reducción del ancho de banda de distintos hosts en una red.
P á g i n a 7 | 13
Redes y sistemas operativos I | Trabajo Práctico 2
La figura muestra como la asignación del ancho de banda a los hosts/usuarios 1 y 2 varia a lo largo
del tiempo siguiendo la ley de control AIMD y como su distribución converge hacia la interseccion
entre la asignación equitativa y eficiente.
Si no se ha alcanzado la máxima utilización del ancho de banda disponible, ambos hosts
incrementan linealmente (esto es en cantidades fijas) su ancho de banda.
Cuando el ancho de banda de ambos supera la linea de eficiencia quiere decir que se esta
generando congestión, para subsanar este problema y a la vez buscar equidad en la asignación del
ancho de banda ambos hosts reducen en una cantidad multiplicativa su ancho de banda (así si por
ejemplo, el host 2 tiene asignado 4 unidades de ancho de banda y el host 1 solo tiene 2 al
momento de generar congestón. El host 2 verá reducido su ancho de banda en dos unidades,
mientras que el host 1 solo en una, en el caso de que el factor multiplicativo sea 1/2.)
Hecha la reducción de la asignación se vuelve a incrementar linealmente el ancho de banda de
ambos y el ciclo se repite.
Este patrón ciclico dictado por esta ley produce un gráfico de ancho de banda en función del
tiempo para un host dado que evoca a los dientes de una sierra y que oscila alrededor de la recta
que representa el ancho de banda máximo disponible en la red para ese host.
P á g i n a 8 | 13
Redes y sistemas operativos I | Trabajo Práctico 2
• Velocidad del enlace insuficiente: Veamos el caso del enlace de R2 a C. Digamos que R2
recibe a una tasa constante de 1mbps informacion desde R1 que tiene como destino a C,
como R2 puede 1mbps su bufer no esta sujeto a un eventual overflow por velocidad de
procesamiento insuficiente. Sin embargo la velocidad del enlace de R2 a C es de 0.5mbps
por lo que si el flujo de datos que R2 recibe de R1 es lo sufientemente grande,
eventualmente el buffer de R2 se llenará ya que no puede retransmitir la información a una
tasa mayor o igual a la que ingresa produciendo overflow, perdida de paquetes y
congestión.
La congestión como efecto no deseable en las redes se manifiesta a través de perdida de paquetes
(cuando ocurre un overflow) y por el aumento de la latencia (cuando los paquetes terminan
encolados en nodos intermedios).
P á g i n a 9 | 13
Redes y sistemas operativos I | Trabajo Práctico 2
SMSS: Sender maximum segment size (tamaño maximo de segmento del emisor)
P á g i n a 10 | 13
Redes y sistemas operativos I | Trabajo Práctico 2
segmento siguiente al ACK se perdió y lo retransmite y espera a que los ACKs duplicados dejen de
llegar o se produzca un timeout para volver a transmitir.
Por otro lado Fast Recovery es un algoritmo heurístico que infiere la llegada de segmentos al
receptor debido a la llegada de ACKs duplicados sucesivos. Cada vez que un ACK llega al emisor
quiere decir que un segmento abandono la red y ha llegado efectivamente al receptor. Valiendose
de este hecho, el algoritmo Fast Retransmit aumenta el tamaño de la ventana dezlizante en
cwnd/2 artificialmente e inyecta tantos segmentos nuevos a la red como la nueva ventana de
congestión le permite. Esto lo hace durante el tiempo en el que el algoritmo de Fast Retransmit se
encuentra a la espera de un ACK no duplicado. Cuando finalmente llega un ACK no duplicado y si
las perdidas de paquetes son generalmente raras, el uso de Fast Recovery habrá permitido
recuperar el flujo de la transimisión sin tiempos muertos.
● Describir las diferencias entre TCP Tahoe, TCP Reno y TCP Vegas.
• TCP Tahoe: Se refiere al algoritmo de control de congestión propuesto por Van Jacobson,
Utiliza Slow Start para iniciar la transmisión y el decrementa el tamaño de ventana de
congestion al valor de tamaño inicial cada vez que un timeout ocurre, lo que no es
deseable ya que disminuye en exceso la tasa de envio de datos y produce una sobrecarga
de la red.
Para congestion avoidance Tahoe usa AIMD. La perdida de un segmento se toma como un
signo de congestión y entonces Tahoe asigna como nuevo ssthresh a cwnd/2, decrementa
el tamaño de cwnd al tamaño inicial, lo aumenta exponecialmente usando slow start y
luego crece linealmente hasta volver a detectar congestión.
Tahoe no envía ACKs inmediatos sino acumulativos, debe esperar un RTT completo para
detectar perdida de segmentos. TCP Tahoe involucra al RFC 1122.
• TCP Reno: Reno mantiene los principios de Tahoe pero incorpora ACK inmediato y los
algoritmos Fast Retransmit y Fast Recovery, esto le permite detectar perdidas de
segmentos antes de un RTT y no detener el envío de paquetes totalmente sino
simplemente bajar la tasa de envio. TCP Reno involucra al RFC 2001
• TCP Vegas: Vegas se basa en Reno pero introduce modificaciones en fast retransmission,
congestion avoidance y slow start.
Para fast restransmit no espera a que se produzca una perdida de paquetes (y por lo tanto
congestión) para reenviar segmentos sino que usa una técnica que infiere el RTT para
cada segmento y por lo tanto su timeout. Cuando recibe un ACK duplicado Vegas compara
si el RTT real esta dentro del timeout calculado o lo supera. Si lo supera inmediatamente
retransmite el segmento que cree perdido.
Para congestion avoidance, Vegas estima el trhougput de la red y solo incrementa el
tamaño de la ventana de congestion cuando este es aproximadamente igual al medido en
la red. Si el througput real es significativemente menor lo toma como una señal de
congestión incipiente y no incrementa el tamaño cgwnd.
Con respecto a Slow Start, Vegas incorpora su mecanismo de deteccion de congestion a
slow-start con pequeñas modificaciones. Para detectar y evitar congestión durante slow
start Vegas solo permite el crecimiento exponencial de cwnd 1 vez por cada RTT. Entre
medio la ventana de congestión se mantiene fija así una comparación válida de las tasas
de envío estimadas y las actuales pueden ser hechas. Cuando la tasa de envio acutal cae
por debajo de la tasa esperada en una cierta cantidad (lo que los autores del paper llaman
el “límite”) Vegas cambia de Slow Start a AIMD.
TCP Vegas involucra al RFC1323 y es anunciado en el paper TCP Vegas: New techniques
for congestion detection and avoidance (1994), no se haya en un RFC propiamente dicho.
P á g i n a 11 | 13
Redes y sistemas operativos I | Trabajo Práctico 2
P á g i n a 12 | 13
Redes y sistemas operativos I | Trabajo Práctico 2
Bibliografía
RFC 2001 TCP Slow Start, Congestion Avoidance, Fat Retransmit, and Fast Recovery
Algorithms - https://tools.ietf.org/html/rfc2001
TCP Vegas: New techniques for congestion detection and avoidance (1994)
http://pages.cs.wisc.edu/~akella/CS740/S08/740-Papers/BOP94.pdf
P á g i n a 13 | 13