Diferencia entre revisiones de «Práctica 4: End-to-End (Teoría de las Comunicaciones)»

De Cuba-Wiki
Línea 408: Línea 408:


== Ejercicio 33 ==
== Ejercicio 33 ==
'''Pendiente chequear!'''
Clasificar de acuerdo a la taxonomía dada en clase (lazo abierto, lazo cerrado, feedback, origen/destino), los mecanismos de control de congestión de los siguientes protocolos:
Clasificar de acuerdo a la taxonomía dada en clase (lazo abierto, lazo cerrado, feedback, origen/destino), los mecanismos de control de congestión de los siguientes protocolos:
* TCP
* TCP
Línea 418: Línea 420:
'''Rta:'''
'''Rta:'''
* TCP: Lazo cerrado, Feedback, Origen
* TCP: Lazo cerrado, Feedback, Origen
* UDP: no tiene control congestion: '''Eso quiere decir lazo abierto?'''
* UDP: no tiene control congestion:
* IP: no tiene control congestion: '''Eso quiere decir lazo abierto?'''
* IP: no tiene control congestion:
* Ethernet 802.3: ???
* Ethernet 802.3: No hay congesti'on en enlaces punto a punto.
* LLC: ???
* LLC: No hay congesti'on en enlaces punto a punto.
* HDLC: ???
* HDLC: No hay congesti'on en enlaces punto a punto.


== Ejercicio 34 ==
== Ejercicio 34 ==

Revisión del 14:26 20 nov 2007

Ejercicio 1

Especifique tres diferencias entre las funciones de la capa de transporte y las funciones de la capa de red.

Rta:

  • La capa de transporte es normalmente implementada en los sistemas operativos de los hosts y no en los routers o switches como la capa de red.
  • La capa de transporte provee multiplexación de procesos.
  • La capa de transporte suele proveer confiabilidad y orientación a conexión para protocolos de niveles más bajos que no lo proveen.
  • La mayoria de los procesos interactúan directamente con las primitivas de la capa de transporte, en cambio pocos de ellos conocen/interactúan con la capa de red.

Ejercicio 2

El nivel de enlace de datos al igual que el nivel de transporte debe tratar con control de errores, de flujo y de secuencia. Sin embargo existen diferencias significativas entre ambos niveles. ¿ Cuáles son ?

Rta:

  • El nivel de enlace trabaja sobre dos nodos, no hay nada en el medio.
  • El nivel de transporte trabaja host a host, entre estos hosts hay muchisimos nodos y se tiene que tener en cuenta la congestion de la red y el desordenamiento de los paquetes.
  • En el nivel de enlace se sabe la capacidad del enlace y el RTT, en el nivel de transporte no puede saberse y debe ser estimado.

Ejercicio 3

Explique con la ayuda de un diagrama qué se entiende por multiplexación en el nivel de transporte. ¿Podría una conexión de transporte dividirse entre varios circuitos virtuales? Ilustre la respuesta con un dibujo que muestre un caso de este tipo.

Respuesta:

La multiplexacion se refiere a que se envían múltiples streams de datos entre dos hosts, cada stream con un par de puertos origen-destino distinto.

Chequear: La conexión de transporte no deberia poder ser dividida en varios circuitos virtuales dependiendo de los puertos, ya que los circuitos virtuales se generan en nivel 3, que no tiene visibilidad de los puertos usados por nivel 4.

Ejercicio 4

¿ Qué es UDP ? ¿ Que tipo de servicio brinda ? ¿ Sobre qué protocolos de red puede trabajar ? Dibuje el esquema básico del paquete. Ejemplifique para que puede ser utilizado.

Rta:

  • UDP es un protocolo de transporte.
  • No confiable, no orientado a cx.
  • IP.
Header UDP
Puerto de origen Puerto de destino
Longitud Checksum
Opciones

Ejercicio 5

Describa las diferencias entre un servidor de nombres, un servidor standalone y un servidor de procesos. ¿En qué casos es conveniente usar cada uno? Ejemplifique.

Repsuesta:

  • Servidor Standalone: Se tiene un único proceso demonio escuchando por determinados puertos fijos, que sirve a una sola aplicación. Cuando llega un pedido, el proceso hace un fork de sí mismo (barato por ser memoria a memoria) para atender ese pedido. Por ejemplo, un servidor dedicado de FTP. Puede haber muchos standalones implementados en un mismo host físico. Es conveniente cuando hay muchas conexiones, si no, el desperdicio por tenes un daemon corriendo por aplicación no se aprovecha.
  • Servidor de procesos: Se tiene un único proceso escuchando a todos los puertos; al recibir un intento de conexión a uno de ellos, hace un fork y exec de la aplicación correspondiente para atenderlo. Cada thread atiende a una única conexión. El proceso padre, el inetd, generalmente sabe atender las conexiones más sencillas. Usa menos recursos que el standalone pues hay un único daemon, pero el fork y exec se hace sobre un proceso en disco (no en memoria) con lo que resulta más costoso atender cada pedido.
  • Servidor de Nombres: Hay un daemon escuchando por un well-known port (generalmente el 111) que indica al cliente a qué puerto referirse para hacer uso de una determinada aplicación. Puede responder con un puerto propio, en cuyo caso hace el fork y exec para que la aplicación atienda el pedido de conexión que recibirá del cliente; o puede responder con la dirección TSAP de otro servidor. Sirve cuando no se tiene conocimiento del puerto (o host) al cual conectarse para obtener un determinado servicio, o estos son móviles. Notar que el uso de un servidor de nombres no es transparente para el cliente, como era en los otros dos casos. Requiere del envío de más paquetes para establecer una conexión.

Ejercicio 6

¿ Con qué tipo de servicio de red está diseñado para trabajar el protocolo TCP ? ¿ y UDP ?

Rta:

Esta diseñado para funcionar sobre IP, es más, se implementan ambas capas juntas.

Ejercicio 7

¿ Porqué el máximo tiempo de vida de un paquete dentro de una red debe estar acotado y por qué hay que asegurar que no sólo el paquete sea eliminado de la red sino también todos los ACKs que le correspondan ?

Rta:

  • El packete para que no cicle infinitamente por la red.
  • ACKs para que no se confundan con nuevas encarnaciones de la misma cx.

Ejercicio 8

¿Por qué cree que en algunas redes los números de secuencia iniciales para comenzar una conexión de nivel de transporte se generan en función del reloj interno de la computadora? Si esto es así, ¿Genera alguna restricción en la emisión de datos luego de establecer la conexión?

Rta:

  • Para evitar que ACKs perdidos den problemas en una nueva encarnación de la misma cx anterior. Generando numerosros de secuencia "aleatorios" (con el reloj), la probabilidad de que el ACK perdido coincida con este nuevo numero es muy pequeña.
  • No. En el handshake las puntas se ponen de acuerdo en que numeros usar para cada lado. Si los números se pasaran del máximo no importa porque no tendríamos problemas hasta que el ciclo llegue al original de nuevo.

Ejercicio 9

Pendiente Chequear

¿ Qué sucede cuando una conexión de TCP no es cerrada en forma correcta ? Explique una posible causa, como puede ser detectado el hecho, describa la solución, especificando ventajas y desventajas de la misma. RESP: Deteccion: Se pone un contador de tiempo. Solucion: Luego de enviar un FIN, si se genera un timeout, se cierra la cx. Ventajas: Se puede cerrar la cx. Desventajas: Quizas el otro host no se entera nunca de que la cx se cerro.

Ejercicio 10

Supongamos que deseamos conectarnos con un host distante a través de una red que admite paquetes de tamaño X. Si el host emisor trabaja con TPDUs de Y bytes (con Y > X), éstos no podrán circular en la red. En el caso de que se use TCP/IP:

  • ¿Quién realiza la fragmentación de los TPDUs para que puedan ser procesados por la red?
  • Una vez hecho esto, ¿Debe el protocolo TCP encargarse de asegurar la llegada de los distintos fragmentos en el orden correcto?

Rta:

  • IP los fragmenta.
  • No, IP se encarga de reensamblar los fragmentos en el orden correcto, pues la fragmentación es transparente para N4.

Ejercicio 11

Tanto en nivel 2 como en nivel 4 se realiza control de flujo mediante la creación y administración de buffers. Explique cuál es el objetivo que se busca con esto en cada nivel. ¿Existe alguna diferencia en el manejo de buffers en cada uno de los niveles mencionados?

Respuesta:

  • Evitar que llegue al destino mas info que la que puede procesar, saturando sus recursos. No confundir con control de congestion: flujo es no saturar al destino, congestion es no saturar la red (los nodos intermedios).
  • En N2 el manejo de los buffers depende solamente del control de flujo; en N4, afecta tambien el control de congestion para su administracion.

Ejercicio 12

Considere una red TCP/IP que usa un protocolo de N2 orientado a conexión que garantiza el envío y recepción de tramas usando Seq, ACKs, retransmisiones y CRC para detectar errores. IP solo realiza chequeo del header. ¿Cree usted que es necesario tener algún tipo de control de errores en TCP para implementar un servicio orientado a conexión? ¿Por qué?

Respuesta:

Si, pues N2 realiza el control solamente entre pares de nodos contiguos, no entre origen y destino. Además del problema de reordenamiento de paquetes, los routers intermedios pueden fallar y escapar del control de N2. Suponiendo que se cae un router, N2 no tiene manera de avisar al host origen que falló el envío, es necesario mantener un control a nivel 4, de host a host.

Ejercicio 13

¿ Porqué cree que el protocolo UDP no utiliza números de secuencia en los paquetes ? ¿ O sí los utiliza ? ¿ En tal caso, con qué fin los utiliza ?

Rta:

Porque UDP no garantiza la llegada de los paquetes ni tampoco el orden.

Ejercicio 14

El protocolo UDP brinda a su nivel superior servicios:

  • Sin conexión / sin reconocimiento
  • Sin conexión / con reconocimiento
  • Orientado a conexión
  • Sin conexión u orientado a conexión
  • Ninguna de los anteriores
  • Cualquiera de las anteriores

Rta:

Brinda "Sin conexión / sin reconocimiento".

Ejercicio 15

Pendiente Chequear

Grafique en función del tiempo el intercambio de segmentos necesarios para liberar una conexión de TCP para los siguientes casos: • Con pérdida del ACK. • Con pérdida del segmento que contiene el FIN.

Ejercicio 16

¿ Porqué cree que el protocolo TCP no utiliza números de secuencia en los paquetes ? ¿ O sí los utiliza ? ¿ Con qué fin los utiliza ?

Rta:

Los utiliza para garantizar la llegada y el orden (con su algoritmo de sliding window).

Ejercicio 17

Completar el siguiente cuadro para los protocolos TCP y UDP.

Elemento del protocolo TCP UDP
Establecimiento de conexiones Si Si
Particionamiento de mensajes largos en distintos TPDUs Si No
Transferencia de TPDUs Si Si
Numeración de los TPDUs Si No
Control de flujo de nivel de transporte Si No
Retención de ACKs hasta enviar TPDU Si No
Multiplexación Si Si
Retransmisión debida a Timeout Si No
Resecuenciamiento de TPDUs Si No
Checksum de nivel de transporte Si Si

Ejercicio 18

Determinar si las siguientes afirmaciones son verdaderas o no:

  • El protocolo TCP se encarga de fragmentar mensajes, IP de reensamblarlos.
  • El protocolo IP es capaz de fragmentar y reconstruir paquetes propios y se los envía al nivel superior en forma ordenada.
  • Si IP se encarga de reensamblar fragmentos de sus propios paquetes, TCP se ve liberado de la tarea de verificar el ordenamiento de los datos.

Respuesta:

  • Falso: IP se encarga de fragmentar y reensamblar los mensajes, esto es transparente para TCP. Lo único que hace TCP es enviar TPDUs del tamaño que crea necesario para que IP no deba fragmentar (tomando el MTU de su conexión o haciendo path discovery), pero en caso de que cambie de ruta y sea necesario, se encarga siempre IP.
  • Falso: IP fragmenta y reconstruye paquetes propios, pero no los entrega de manera ordenada; el orden debe verificarlo el nivel de transporte.
  • Falso: IP solamente garantiza el orden de los datos dentro de un mismo paquete, si los datos venían separados en varios paquetes el orden no se garantiza. O sea, IP solo asegura orden entre fragmentos de un mismo paquete, pero no entre paquetes distintos.

Ejercicio 19

Suponga que existe un servicio de red orientado a conexión que garantiza la entrega de paquetes en orden. ¿Será necesario utilizar números de secuencia en los paquetes de datos del nivel de transporte?

Respuesta:

Si, para garantizar la llegada de los mismos.

Ejercicio 20

Pendiente Chequear

Dada una subred que usa Circuitos Virtuales (CV) internamente, se tiene un mecanismo de control de congestión, el cual se implementó de acuerdo a las siguientes condiciones:

  • Se asume por simplicidad que los routers usan protocolo "stop and wait"
  • Un router se abstiene de reconocer un paquete recibido hasta que sabe que su ultima transmisión por el CV se recibió con éxito y tiene buffers libres.
  • Cada CV tiene un buffer dedicado a el para ambos sentido del tráfico.
  • Se necesitan T segundos para transmitir un paquete (de datos o ACK) y hay n routers en la trayectoria.

¿Cuál es la velocidad (paquetes/seg) con que se entregan paquetes al host destino? Suponer el tiempo de transmisión en la conexión host-router es cero y que los errores de transmisión son muy pocos frecuentes.

RESP: 2nt

Ejercicio 21

¿ Qué sentido tiene usar Slow-Start en una conexión TCP ? ¿ Por qué no empezar con una ventana de 16KB, por ejemplo ? ¿ Qué ventaja tiene usar Fast-Recovery en vez de usar Fast-Retransmit sin Fast-Recovery ?

Rta:

Ir "tanteando la red". Si se comenzara con 16kb y la red en ese momento soporta solo 3kb, se empezaria a transmitir en 16, luego se corta, se empieza, luego se corta. Hasta que la red soporte 16kb.

Fast-Recovery evita entrar en slow start y comenzar de nuevo, hace que la ventana no se achique tanto, sino que quede apenas por arriba del SSTRESH

Ejercicio 22

En una conexión TCP existe varios mecanismos que controlan la congestión presente en la red. Describa al menos dos escenarios donde no sea necesario dicho control. ¿ Y un escenario dónde el control de congestión pueda resultar perjudicial para el rendimiento de la red ?

Rta:

Sin necesidad de control:

  • CV, ya que no hay congestion porque los recursos estan pre-alocados.
  • Cuando no hay router en el medio, una conexion de 2 computadoras.

Perjudiciales:

  • En un medio poco confiable, donde se pierden y desordenan los paquetes.

Ejercicio 23

Luego de un período ocioso (más de un RTO - Retransmission Timeout), el CWND (Congestion Window) es reducido a su valor inicial (usualmente un segmento máximo, SMSS). ¿ Por qué cree que dicha acción es necesaria ?

Rta:

Porque no sabemos el estado de la red luego de tanto tiempo ya que no recibimos ACKs ni enviamos paquetes como para ir ajustando nuestras estimaciones. Es mejor suponer que no sabemos nada y comenzar nuevamente.

Ejercicio 24

El receptor en una conexión TCP tiene la facultad de demorar los ACK hasta haber recibido 2 SMSS del emisor o hasta 500ms de haber recibido el primer segmento del emisor. Mencionar dos problemas que trae demorar ACKs.

Rta:

  • Hace que el calculo del RTT se distorsione.
  • Hace crecer mas lento la CWND del emisor.

Ejercicio 25

¿Qué desventaja puede traer el uso de Fast-Retransmit en una conexión TCP comparándolo con la misma conexión si no usase Fast-Retransmit?

Respuesta:

Si se tiene una red que duplica ACKs o tiende a desordenar mucho los paquetes, el sender piensa que hubo perdida de paquetes y retransmite aumentando el trafico en la red, cuando en realidad no hubo perdida.

Ejercicio 26

Un problema de seguridad que tiene el control de congestión en TCP es que el cwnd puede crecer demasiado si recibe muchos ACKs. Por ejemplo, de un segmento de 1500 bytes enviados puede recibir 1500 ACKs, incrementando el cwnd bastante. Detallar dos formas de solucionar esto, variando el trabajo que realiza TCP al recibir un ACK para actualizar el valor de cwnd, pero manteniendo aproximadamente el factor de crecimiento tanto para Slow-Start como en Congestion Avoidance y solucionando este problema puntual.

Rta::

  • En vez de aumentar el cwnd por cada ACK, hacerlo cada cierta cant de bytes recibidos.
  • Aumentar el CWND en función a la cantidad de bytes recibidos.

Ejercicio 27

Pendiente Chequear

Suponga que se tienen dos conexiones TCP desde un mismo host de origen a un mismo host de destino. ¿ Conviene establecer un único control de congestión para ambas conexiones o es preferible usar controles diferentes para cada conexión ? Ejemplificar en un par de casos su respuesta. RESP: Controles diferentes para cada cx, ya que pueden estar pasando por distintos nodos y la congestion es distinta....

Ejercicio 28

Pendiente Chequear

Ayer a la noche, Pablo se conectó a Internet y envió email al server SMTP de su proveedor. El siguiente es el registro de los paquetes de aquella conexión:

Frame Source Address Destination Address Summary
1 [209.13.34.94] [200.61.33.5] DNS: C ID=93 OP=Query Name=mail.sinectis.com.ar
2 [200.61.33.5] [209.13.34.94] DNS: R ID=93 OP=Query STAT=OK NAME=mail.sinectis.com.ar
3 [209.13.34.94] odin.sinectis.com TCP: D=25 S=1204 SYN SEQ=3405653374 WIN=16384
4 odin.sinectis.com [209.13.34.94] TCP: D=1204 S=25 SYN ACK=3405653375 SEQ=2978859689
5 [209.13.34.94] odin.sinectis.com TCP: D=25 S=1204 ACK=2978859690 WIN=16560
6 odin.sinectis.com [209.13.34.94] SMTP: R PORT=1204 220 mail.sinectis.com.ar ESMTP
7 [209.13.34.94] odin.sinectis.com TCP: D=25 S=1204 ACK=2978859755 WIN=28495
8 [209.13.34.94] odin.sinectis.com SMTP: C PORT=1204 Text Data
9 odin.sinectis.com [209.13.34.94] TCP: D=1204 S=25 ACK=3405653376 WIN=31740
10 [209.13.34.94] odin.sinectis.com SMTP: C PORT=1204 Text Data
11 odin.sinectis.com [209.13.34.94] TCP: D=1204 S=25 ACK=3405653410 WIN=31740
12 [209.13.34.94] odin.sinectis.com SMTP: C PORT=1204 Text Data
13 odin.sinectis.com [209.13.34.94] TCP: D=1204 S=25 ACK=3405653426 WIN=31740
14 [209.13.34.94] odin.sinectis.com SMTP: C PORT=1204 Text Data
15 odin.sinectis.com [209.13.34.94] SMTP: R PORT=1204 mail.sinectis.com.ar closing connection
16 odin.sinectis.com [209.13.34.94] TCP: D=1204 S=25 FIN ACK=3405654203 SEQ=2978859944
17 [209.13.34.94] odin.sinectis.com TCP: D=25 S=1204 FIN ACK=2978859780 SEQ=3405654203
18 odin.sinectis.com [209.13.34.94] TCP: D=1204 S=25 ACK=3405654204
  • Explique porqué se eligen particularmente esos números de puertos en los mensajes TCP.
  • ¿ Qué realizan los frames 3, 4 y 5 en función de TCP ? ¿ Porqué se usan esos números de SEQ y ACK ?
  • ¿ Qué dos hechos se pueden deducir de los últimos tres frames ?
  • ¿ Si tomamos en cuenta que la PC de Pablo envía a "odin.sinectis.com" esos valores de "advertise window" (WIN), eso significa que "odin.sinectis.com" puede transmitir 16KB en las respuestas a la PC de Pablo ?

Ejercicio 29

Pendiente Chequear

Suponga que un receptor de una conexión TCP decide responder con un ACK por cada 100 bytes recibidos. ¿ Qué problema se presenta si se demora en la red (pero llega antes del RTO) un segmento de 5 bytes, que antecedió a dos segmentos de 200 bytes cada uno ? Considerar el uso de Slow-Start, Congestion Avoidance, Fast-Retransmit y Fast-Recovery para la conexión TCP. RESP: FR-FR va a activarse, simplemente porque la llegada de dos segmentos de 200 va a causar 4 ACK. Eventualmente el segmento faltante va a llegar, pero ya se activo la retransmision y se bajaron las ventanas.


Ejercicio 30

Pendiente Chequear

Una idea para mejorar el control de congestión en TCP es que en lugar de ser incrementado en un MSS el valor de CWND cada vez que se recibe un ACK (sin importar cuántos bytes son asentidos), sea incrementado por la cantidad de bytes asentidos durante Slow Start. ¿ Qué ventajas y desventajas puede tener esta técnica ? RESP: Desv: Q la ventana puede crecer muy despacio. Que se necesitan mas recursos/complejidad en el codigo (punto flotante y variables extra). Ventaja: Evita que la ventana crezca demasiado si se envian 1500 paquetes de 1 byte c/u y se reciben 1500 ack...-> NO pueden hacer ataques Adicionalmente, tampoco es posible que se de un efecto similar al ataque accidentalmente.

Ejercicio 31

En el control de congestión que realiza TCP,

  • ¿ Por qué el Fast-Retransmit para activarse debe esperar 3 ACK duplicados ? ¿ Con 1 o 2 no serian suficientes ?
  • ¿ Por qué el reordenamiento de segmentos TCP no es bueno para Fast-Recovery ?
  • ¿ Por qué el Slow-Start Threshold (ssthresh) se baja a la mitad de los "datos en vuelo" (datos enviados sin ACK) y no a la mitad de CWND ?

Rta:

  • Es por una medicion practica. Es un "buen numero en la practica" Con 1 o 2 es demasiado poco, ya que es bastante comun que haya ACK repetidos por desorden de paquetes.
  • Porque hay cierta probabilidad de que lleguen 3 acks repetidos por paquetes que llegaron desordenados y fast recovery va a reenviar el paquete y activar fast retransmit (bajando la CWND) cuando en realidad el paquete llego, pero el ACK vuelve desordenado.
  • Lo que?

Ejercicio 32

¿ Cómo hacen las aplicaciones que usan TCP para poder manejar el concepto de mensaje, cuando TCP no lo hace ? Ejemplificar con dos protocolos de aplicación.

Rta:

En realidad lo que hacen es meter dentro de TCP la longitud del msg y el fin del mismo. Es decir un header.

  • HTTP: En el header dice el puerto 80, la long del mensaje, etc.
  • FTP: Creo que delimita por \n\n o algo asi.

Ejercicio 33

Pendiente chequear!

Clasificar de acuerdo a la taxonomía dada en clase (lazo abierto, lazo cerrado, feedback, origen/destino), los mecanismos de control de congestión de los siguientes protocolos:

  • TCP
  • UDP
  • IP
  • Ethernet 802.3
  • LLC
  • HDLC

Rta:

  • TCP: Lazo cerrado, Feedback, Origen
  • UDP: no tiene control congestion:
  • IP: no tiene control congestion:
  • Ethernet 802.3: No hay congesti'on en enlaces punto a punto.
  • LLC: No hay congesti'on en enlaces punto a punto.
  • HDLC: No hay congesti'on en enlaces punto a punto.

Ejercicio 34

Sobre TCP, ¿ Que sucede después que uno de los extremos envió un segmento con el flag RST ?

Rta:

Segun el RFC un RST se envía por que una de las partes nota una desincronización con respecto a la otra o cree que está en una conexión half-open. Una opción después de que el lado A mandó un RST es que el lado B vuelva a tratar de SYNcronizar y esto acaba en un three-way handshake.

Half-Open Connections and Other Anomalies

An established connection is said to be  "half-open" if one of the
TCPs has closed or aborted the connection at its end without the
knowledge of the other, or if the two ends of the connection have
become desynchronized owing to a crash that resulted in loss of
memory.  Such connections will automatically become reset if an
attempt is made to send data in either direction.  However, half-open
connections are expected to be unusual, and the recovery procedure is
mildly involved.

If at site A the connection no longer exists, then an attempt by the
user at site B to send any data on it will result in the site B TCP
receiving a reset control message.  Such a message indicates to the
site B TCP that something is wrong, and it is expected to abort the
connection.

Assume that two user processes A and B are communicating with one
another when a crash occurs causing loss of memory to A's TCP.
Depending on the operating system supporting A's TCP, it is likely
that some error recovery mechanism exists.  When the TCP is up again,
A is likely to start again from the beginning or from a recovery
point.  As a result, A will probably try to OPEN the connection again
or try to SEND on the connection it believes open.  In the latter
case, it receives the error message "connection not open" from the
local (A's) TCP.  In an attempt to establish the connection, A's TCP
will send a segment containing SYN.  This scenario leads to the
example shown in figure 10.  After TCP A crashes, the user attempts to
re-open the connection.  TCP B, in the meantime, thinks the connection
is open.

    TCP A                                           TCP B

1.  (CRASH)                               (send 300,receive 100)

2.  CLOSED                                           ESTABLISHED

3.  SYN-SENT --> <SEQ=400><CTL=SYN>              --> (??)

4.  (!!)     <-- <SEQ=300><ACK=100><CTL=ACK>     <-- ESTABLISHED

5.  SYN-SENT --> <SEQ=100><CTL=RST>              --> (Abort!!)

6.  SYN-SENT                                         CLOSED

7.  SYN-SENT --> <SEQ=400><CTL=SYN>              -->

When the SYN arrives at line 3, TCP B, being in a synchronized state,
and the incoming segment outside the window, responds with an
acknowledgment indicating what sequence it next expects to hear (ACK
100).  TCP A sees that this segment does not acknowledge anything it
sent and, being unsynchronized, sends a reset (RST) because it has
detected a half-open connection.  TCP B aborts at line 5.  TCP A will
continue to try to establish the connection; the problem is now
reduced to the basic 3-way handshake of figure 7.

En este dump podemos ver como mandan un RST y luego se corta la conexión -porque cambia la tupla (origen, port, destino, port) y la conexión se rearma.

Archivo:TCP-RST.png

Ejercicio 35

Pendiente Chequear

En la figura se presentan algunos valores típicos para RTT. También se grafican los valores del RTT estimado, -es una media que en estadística se la denomina “Media Ponderada de desplazamiento exponencial” (EWMA). Dicha media se utiliza para determinar el timeout de retransmisión en TCP .

Para "atenuar" el rtt y que no se produzcan sigzag de tamaño del rtt. • ¿ Cuál es el motivo por el que se utilizan dichas medias del RTT ?

• ¿ En el caso de tener RTX (retransmisión) y ante la llegada de dos ACK con el mismo número de secuencia, cuál se toma como válido: el primero, el segundo o ninguno ?


Ejercicio 36

De acuerdo a la taxonomía de Yang y Reddy (1995), los algoritmos de control de congestión se pueden clasificar en lazo abierto y lazo cerrado. A su vez los de lazo cerrado se pueden clasificar de acuerdo a como realizan la realimentación. ¿ A cuál clase el mecanismo de control de congestión de TCP RED (Randomly Early Detection) pertenece ?

Rta:

  • Lazo cerrado, intenta evitar la congestion.
  • Realimentacion implicita, ya que descarta paquetes para que el emisor adecue su ventana.
  • Control en el origen.

Ejercicio 37

¿ Durante Fast-Recovery es conveniente seguir estimando el RTO ? ¿ Por qué ?


No, porque como estoy en Fast-Recovery todos los ACKs son duplicados hasta que me llega un nuevo y salgo del estado.

Ejercicio 38

Pendiente Chequear

Una de las implementaciones de TCP que incluía Slow Start, Congestion Avoidance y Fast Restransmit se denomina “TCP Tahoe“ [Jacobson1988] [RFC2001/1997]. Posteriormente se propuso incluir el algoritmo de Fast Recovery [Jacobson1990] [RFC2581/1999] dando lugar a la implementación conocida como “TCP Reno”. En el gráfico se presenta una evolución de la ventana de congestión a modo de ejemplo. RTT: gaia.cs.umass.edu to fantasia.eurecom.fr 100 150 200 250 300 350 1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106 time (seconnds) RTT (milliseconds) SampleRTT Estimated RTT En TCP Tahoe cuando se produce un evento de pérdida, el cwnd pasa a 1 MSS y se entra en la fase de slow-start. ¿ Qué hace TCP Reno ante 3 ACK repetidos ? ¿ Ventajas ? ¿ Desventajas ? ¿ Por qué se eligió 3 como cantidad de ACKs repetidos ? RESP: FRetransmit: Retransmite el paquete, CWND = IW y comienza FR. FRecovery: CWND = SSTRESH Por cada ACK repetido, CWND += SMSS Ventaja: CWND no baja tan abruptamente, sino que se mantiene en el umbral. Desventaja: Pueden llegar 3 acks repetidos por un tema de que llegan los ack desrdenados y entrar en FR/FR, bajando la CWND y reenviando un paquete que en realidad habia llegado. El problema es que el ack estaba por llegar. 3 ack: Es un "buen" valor tomado de la practica.

Ejercicio 39

Acerca del control de congestión:

  • ¿ Los protocolos de ruteo pueden evitar la congestión ?
  • En el caso de disponer de un buffer que tiende a infinito en los routers. ¿ Se puede evitar la congestión o mejorar las condiciones de tráfico ?

Rta:

  • No, ya que hagan lo que hagan en el ruteo, si el emisor envia mas paquetes de los que puede soportar la red, esta se congestiona.
  • No, esta demostrado que por mas cantidad de memoria que se adicione en los buffers, no se puede evitar la congestion.

Ejercicio 40

Fast-Retransmit se activa con 3 ACK duplicados. El RFC 2581, que detalla como debe hacerse el control de congestión en TCP, establece que el receptor tiene la posibilidad de demorar los ACKs hasta 500ms o 2 MSS bytes sin asentir, lo primero que ocurra. ¿ Esto afecta la ventaja del uso del Fast-Retransmit ?

Rta:

Si, la retransmición no será tan "Fast".

Ejercicio 41

IP ECN (Explicit Congestion Notification) es un mecanismo de notificación explícita, que se implementa en dos bits del header de IP, más precisamente en el campo ToS. Este mecanismo es opcional ya que puede suceder que tanto el otro host como los routers no lo implementen. La idea de estos bits es que los routers avisen congestión, tratando de evitar el descarte innecesario. ¿ Dentro de cuál técnica de clasificación de control de congestión (closed-loop, open-loop, feedback, source/destination) entraría la de IP ECN ?


Closed-loop, Explicit.

Ejercicio 42

Pendiente Chequear

TCP puede cerrar una conexión en forma ordenada con 3 o 4 paquetes. Especificar ambos casos, diagramando el intercambio de paquetes de finalización. RESP: fin-ack fin-ack fin-ack/fin-ack

Ejercicio 43

Indicar dos situaciones en que el control de congestión de TCP baje el CWND a su valor inicial (IW – Initial Window).

Rta:

  • Timeout.
  • Inactividad en la CX.

Ejercicio 44

Indique cuales de las siguientes secuencias de inicio de una conexión TCP entre dos hosts pueden ser correctas:

  • SYN - SYN/ACK
  • SYN - ACK - SYN –ACK
  • SYN - SYN/ACK - ACK
  • SYN/ACK - ACK
  • SYN - ACK - SYN – ACK
  • SYN - ACK - SYN – ACK- SYN/ACK
  • SYN - ACK

Rta:

  • SYN - SYN/ACK - ACK
  • SYN - ACK - SYN – ACK

Ejercicio 45

Pendiente Chequear

Ofrezca tres ejemplos de parámetros de protocolo de nivel 4 que podrían negociarse al establecerse una conexión. RESP: tamaño de segmento, tamñano de ventana y rtt

Ejercicio 46

Pendiente Chequear

0 2 4 6 8 10 12 14 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Transmission round congestion window size (segments) TCP Tahoe TCP Reno La fragmentación de datagramas y su reensamble son manejados por IP y son invisibles para TCP. ¿ Es cierto esto ? ¿ Significa entonces que TCP no tiene que preocuparse del orden en que le llegan los datos ? RESP: Si. No, tcp tambien reensambla TPDUs. Aparte debe verificar orden y llegada, ya que IP no lo garantiza!!

Ejercicio 47

Pendiente Chequear

Un router de borde de red con funcionalidad extendida posee filtros para denegar el pasaje de tráfico UDP, permitiendo sin embargo el pasaje de tráfico TCP. Proponer una forma de pasar a través del router con tráfico UDP.

Ejercicio 48

Pendiente Chequear

Cuando se cierra una conexión TCP se puede llegar a un estado denominado TIME_WAIT como consecuencia de que nuestro lado pidió primero el cierre de la conexión o ambos lados iniciaron el cierre concurrentemente, pero no así cuando el otro lado pidió el cierre primero. ¿ Qué función cumple el estado TIME_WAIT ? RESP: Esta en espera de segmentos perdidos en la red. Una vez que se cumple cierto tiempo prudencial, se cierra definitivamante la cx.

Ejercicio 49

UDP es un protocolo orientado a mensaje, sin conexión. ¿ Esto significa que no da garantías sobre errores que se puede producir en bytes de algún mensaje ?

Rta:

No. UDP Tiene un checksum que controla que no haya fallas en lo que llega. Si el checksum da mal, el paquete se descarta.

Ejercicio 50

Pendiente Chequear

La salida del estado de Fast-Recovery se realiza cuando se recibe un ACK que no es duplicado, es decir asintiendo nuevos datos. Pero ante múltiples pérdidas se puede volver al estado de Fast- Recovery en un plazo muy corto debido a la presencia de nuevos ACKs duplicados. ¿ Qué desventaja trae esto ? Indique una manera de solucionarlo. RESP: Se vuelve a bajar la CWND a la mitad.


Ejercicio 51

Indicar dos situaciones en que el control de congestión de TCP tenga el valor del CWND desajustado con respecto a la congestión presente en la red.

Rta:

  • Cuando el receptor atrasa los ACKs.
  • Cuando pasó mucho tiempo sin enviar ni recibir nada.

Ejercicio 52

El cálculo del RTO en TCP se hace en forma dinámica ponderando el RTT entre el emisor y el receptor con cada segmento enviado. Suponga que se asume que un determinado segmento se perdió y se debió retransmitir. ¿ El ACK para el cálculo del RTO se considera que es del mensaje original o de la retransmisión ?

Rta:

Los ack de retransmision no se tienen en cuenta para el calculo del RTO.

Ejercicio 53

Pendiente Chequear

En TCP, para el control de congestión, antes del envío de nueva información se realiza un cálculo del mínimo entre el Received Window (informado por el otro host) y el Congestion Window (calculado localmente) para determinar cuánto se puede enviar y no provocar mas congestión en la red o saturación del otro host. Nombrar al menos dos problemas que tiene el cálculo local del Congestion Window sobre la estimación acerca de la congestión presente en la red.


Ejercicio 54

¿ Cómo identifica el host A a cuál de las dos conexiones iniciadas por él corresponde la respuesta del host B ?

Host A ---- TCP SYN -----------> Host B
Host A ---- TCP SYN -----------> Host B
Host A <--- TCP SYN + ACK ----- Host B

Rta:

Por el valor del ACK.

Ejercicio 55

Pendiente Chequear

La siguiente es la salida del utilitario netstat –an ejecutado en un servidor. $ netstat -an UDP: IPv4 Local Address Remote Address State


-------------------- -------

  • .514 Idle
  • .35528 Idle

201.10.164.35.55586 201.10.164.31.53 Connected 201.10.164.35.55626 201.10.164.31.53 Connected 201.10.164.35.55629 201.0.194.46.53 Connected 201.10.164.35.55637 201.0.194.46.53 Connected 201.10.164.35.55649 201.10.164.34.53 Connected 201.10.164.35.55662 201.10.164.34.53 Connected 201.10.164.35.55674 201.0.194.46.53 Connected 201.10.164.35.55675 201.0.194.46.53 Connected 201.10.164.35.55686 201.10.164.34.53 Connected 201.10.164.35.55696 201.10.164.34.53 Connected

  • .* Unbound

TCP: IPv4 Local Address Remote Address State


---------------- --------

  • .* *.* IDLE
  • .110 *.* LISTEN
  • .25 *.* LISTEN
  • .22 *.* LISTEN
  • .22 *.* LISTEN

201.10.164.35.22 201.10.164.51.1207 ESTABLISHED 201.10.164.35.25 201.10.164.19.3575 TIME_WAIT 201.10.164.35.25 201.10.164.19.3578 TIME_WAIT 201.10.164.35.25 201.10.164.19.3580 ESTABLISHED 201.10.164.35.110 172.18.110.42.1416 TIME_WAIT 201.10.164.35.110 201.3.115.20.1205 TIME_WAIT 201.10.164.35.25 201.10.164.19.3590 ESTABLISHED 201.10.164.35.25 201.10.164.37.3086 TIME_WAIT 201.10.164.35.110 201.3.115.77.1248 TIME_WAIT 201.10.164.35.110 64.76.45.142.2282 TIME_WAIT 201.10.164.35.110 201.3.115.56.1499 TIME_WAIT 201.10.164.35.110 201.10.164.217.2149 TIME_WAIT 201.10.164.35.110 201.3.115.77.1265 TIME_WAIT 201.10.164.35.25 201.10.164.19.3593 ESTABLISHED 201.10.164.35.25 201.10.164.19.3594 ESTABLISHED 201.10.164.35.25 201.10.164.19.3595 ESTABLISHED 201.10.164.35.25 201.10.164.19.3596 TIME_WAIT 201.10.164.35.25 201.10.164.19.3597 TIME_WAIT 201.10.164.35.110 201.3.115.150.1079 TIME_WAIT 201.10.164.35.110 201.0.178.15.3836 TIME_WAIT 201.10.164.35.110 201.10.164.212.1765 TIME_WAIT 201.10.164.35.110 201.10.164.209.65175 TIME_WAIT 201.10.164.35.110 201.3.115.88.1232 ESTABLISHED 201.10.164.35.110 201.0.178.89.2028 TIME_WAIT 201.10.164.35.110 201.0.178.194.1383 ESTABLISHED 201.10.164.35.22 201.10.164.24.3738 ESTABLISHED 201.10.164.35.25 201.10.164.37.3088 ESTABLISHED 201.10.164.35.110 201.10.164.160.65123 TIME_WAIT 201.10.164.35.110 201.10.164.51.2146 TIME_WAIT 201.10.164.35.110 201.10.164.171.2829 ESTABLISHED 201.10.164.35.25 201.10.164.37.3089 ESTABLISHED

  • .* *.* IDLE

Explique lo más detalladamente posible el significado que atribuye a la salida del comando.


Ejercicio 56

Pendiente Chequear

• En una conexión TCP, se enviaron 3 segmentos de 1000 bytes cada uno. El segundo se perdió. Luego se enviaron otros 3 segmentos más, de 500 bytes cada uno. Se pierde el tercero de estos. Explicar dos formas de cómo se puede recuperar de estos dos errores. • Basado en el enunciado del ejercicio anterior, ¿ cuáles envíos se pueden usar para estimar el RTT ?

Ejercicio 57

Pendiente Chequear

Esta es la salida simplificada del comando netstat –n, ejecutado en un servidor. La salida ha sido modificada de manera de introducir algunos errores. Indique los errores que encuentre. Explicar. Local Address Remote Address State 200.11.163.35.110 200.11.163.155.1454 ESTABLISHED 200.11.163.35.25 200.11.163.19.1626 TIME_WAIT 200.11.163.35.110 172.18.105.129.1579 TIME_WAIT 200.11.163.35.110 200.114.139.238.2751 ESTABLISHED 200.11.163.35.110 200.11.163.110.1924 TIME_WAIT 200.11.163.35.110 200.5.114.77.3888 ESTABLISHED 200.11.163.35.110 64.76.45.189.1348 TIME_WAIT 200.11.163.35.110 200.5.114.77.3888 ESTABLISHED 200.11.163.35.25 200.11.163.19.1624 TIME_WAIT 200.11.163.35.25 200.11.163.19.1626 TIME_WAIT

Ejercicio 58

Pendiente Chequear

Algunos autores utilizan la relación que denominan potencia (P=Throughput/delay) como una métrica para medir la eficiencia de un esquema de alocación de recursos. Para un flujo de paquetes que ingresa a un router de una red de conmutación de paquetes, la variación de la potencia en función de la carga (paquetes/seg) es la siguiente: ¿ En qué zona de la función anterior se presenta el fenómeno de congestión , que significa la congestión en redes de conmutación de paquetes ?

Ejercicio 59

Explicar al menos dos problemas que resuelve usar MPLS en una red IP.

Respuesta:

  • No hay congestion.
  • Permite hacer uso de VPNs de N2 y N3.
  • Permite solapamiento de rangos de IPs.

Ejercicio 60

Pendiente Chequear

¿ Por qué MPLS no es bueno para transportar tráfico Multicast ? RESP: Porque tiene que crear CV por cada receptor, por lo tanto, consume muchos recursos y es un poco + lento.

Ejercicio 61

Pendiente Chequear

Mencionar una ventaja y una desventaja de MPLS en el forwarding de paquetes, comparando con IP. RESP: Ventajas: Mas rapido, aparatos mas baratos y menos inteligencia en el backbone. Desventajas: Puede causar perdidas silenciosas en el backbone.

Imaginate que hay un ciclo en la red. Si esa parte es una red comun IP, eventualmente del otro lado vas a recibir un ICMP TTL EXCEEDED. Si el problema surge en una parte cubierta con MPLS, cuando el paquete MPLS termine con TTL=0, se descarta sin tomar ninguna accion y se va a perder misteriosamente. Mismo asunto con caidas y cosas similares.

Ejercicio 62

Pendiente Chequear

Describir dos ventajas de implementar MPLS sobre una red que trabaja con IP.


Ejercicio 63

Pendiente Chequear

MPLS a través de LDP permite armar paths (caminos) en forma upstream (desde el origen) y downstream (desde el destino). ¿ En qué caso conviene armar paths en forma downstream ? RESP: Cuando el path describe la ruta HACIA un destino, p.e. cuando es un anuncio BGP.


Ejercicio 64

Pendiente Chequear

¿ Cómo clasificaría (lazo abierto/cerrado, feedback implicito/explicito, origen/destino) el control de congestión de MPLS TE (Traffic Engineering) ?

Ejercicio 65

Se desea usar Internet para realizar llamadas telefónicas.

  • ¿ Para que esto ocurra con la menor cantidad de problemas, que protocolo seleccionaría para este fin entre TCP y UDP ?
  • ¿ Qué aspectos cree necesario agregar al protocolo elegido en el punto anterior para que sea mas eficiente de acuerdo a este tipo de tráfico ?

Rta:

  • UDP, porque si un mensaje no llega mejor tirarlo que retransmitir.
  • Ordenamiento, por ejemplo con RTP (Real-time Transfer Protocol).

Ejercicio 66

Pendiente Chequear

En una conexión TCP después del 3-way handshake se enviaron 3 segmentos de 100 bytes cada uno, donde el primero llegó con errores de acuerdo al chequeo del CRC. Explicar que sucede después de ese evento hasta que se recupera de completamente de ese error. RESP: Se descarta el paquete en el receptor. Este emite un ack 1 por cada segmento que llega, incluido el segmento con el error. Se ejecuta FR/Fr

Ejercicio 67

Pendiente Chequear

Optimal load Load ¿ Cómo clasificaría (lazo abierto/cerrado, feedback implícito/explicito, origen/destino) el control de congestión de TCP, que utiliza S-ACK (Selective Acknowledge) ?

Ejercicio 68

¿ Por qué existe UDP ? ¿ No sería suficiente enviar tráfico que no requiere ningún tipo de control directamente sobre IP ?

Rta:

Para multiplexar procesos.

Ejercicio 69

Pendiente Chequear

Existen dos conexiones TCP entre dos hosts (A y B) que iniciaron concurrentemente y transmitieron sin pérdidas la misma cantidad de bytes hasta el instante t. ¿ En ese instante t, el CWND (Congestion Window) debe tener el mismo valor para ambas conexiones ? Si???


Tara propone: NO. Quizá una tiene un CWND mucho más grande, pero por el advertised window (el control de flujo del receptor) limita a esta conexión, y justo queda igual a la otra.

Ejercicio 70

Pendiente Chequear

Existen dos conexiones TCP entre dos hosts (A y B) que iniciaron concurrentemente y transmitieron sin pérdidas la misma cantidad de bytes hasta el instante t. ¿ En ese instante t, el RTO (Retransmission Timeout) debe tener el mismo valor para ambas conexiones ? RESP: No, depende de en que momento llegan los acks.

Ejercicio 71

Pendiente Chequear

¿ En el nivel de enlace se puede encontrar control de errores, control de flujo, etc. al igual que en el nivel de tranporte. Ambos niveles son “end-to-end”. Sin embargo en el nivel de transporte los controles son más complejos. ¿ Por qué sucede esto ? RESP: Porque en transporte hay nodos en el medio y se produce congestion en la red. Y transporte tiene en cuenta todos estos factores para controlar.

Ejercicio 72

Pendiente Chequear

Completar el siguiente sumario de características: Comparación entre UDP y TCP Característica / Descripción UDP TCP Descripción general Orientado a conexión / sin conexión Interfaz de datos para la aplicación Confiabilidad y reconocimientos Retransmisiones Características proporcionadas para manejar el flujo de datos Overhead Velocidad de transmisión Cantidad de datos transmitidos Tipos de aplicaciones que usan el protocolo Aplicaciones conocidas y protocolos

Ejercicio 73

Pendiente Chequear

Analizar la veracidad de la siguiente afirmación: "En una red para la que existe una cota superior en la cantidad de paquetes que pueden circular a la vez por ella, la utilización de un buen algoritmo de ruteo que aprovecha al máximo las distintas rutas alternativas implica una garantía de que no se producirá nunca ningún tipo de congestión".

Rta:

Falso. Por mas que el algoritmo de ruteo funcione de maravilla, si los emisores envian mas informacion de la que soporta la red, esta se congestiona.

Ejercicio 74

¿Podría el protocolo IP realizar control de congestión utilizando la técnica de prealocación de buffers? ¿Porqué? ¿Y un protocolo de nivel de red implementado con circuitos virtuales?

Respuesta:

  • No, porque el algoritmo de forwarding de IP desconoce el origen del paquete, con lo que pierde el concepto de flows.
  • Si, en MPLS es posible.

Ejercicio 75

Pendiente Chequear

Analizar la validez de las siguientes afirmaciones. Para cada una de ellas se pide indicar si es V o F.

  1. Un algoritmo de ruteo eficiente asegura la inexistencia de congestión en una red implementada con datagramas.
  2. Una red que ofrece un servicio basado en datagramas con todas las técnicas de control de congestión posibles, garantiza no tener congestión en ningún momento.
  3. Un algoritmo de ruteo ineficiente o inadecuado facilita la ocurrencia de congestión en una subred implementada con datagramas.
  4. El control de flujo realizado en nivel 2 no garantiza evitar congestión en una subred implementada con datagramas
  5. Es más sencillo controlar congestión en una subred implementada con circuitos virtuales.

Respuestas:

  1. Falso, siempre se pueden enviar mas paquetes de los que soporta cada router.
  2. Falso?, la unica forma segura de evitar congestion es con CVs y prealocacion de recursos.
  3. Verdadero?
  4. Verdadero, control de flujo es distinto de congestion
  5. Verdadero?, pues se conoce el origen de los datos

Ejercicio 76

Pendiente Chequear

El establecimiento de una cx TCP se realiza mediante un intercambio de 3 segmentos denominado 3-way handshake. Un ataque de seguridad muy conocido del tipo Denial of Service (denegación de servicio) consiste en abrir múltiples conexiones TCP a un servidor pero sin terminar de establecerlas. Es decir, el atacante envía un mensaje de establecer la cx (flag S), luego la víctima responde con un mensaje con flags S y A haciendo ACK del primer mensaje, pero el atacante nunca le envía el tercer mensaje. Indique una forma en la cual el host víctima se pueda defender solo, sin ayuda de ningún otro dispositivo en la red. Explique el mecanismo de defensa.

Rta:

Puede usar un COOKIE/ECHO-COOKIE como SCTP con un four-way handshake.

Ejercicio 77

Pendiente Chequear

Dos servidores Web atienden requerimientos de sus clientes, pero uno de ellos después de los pedidos del cliente cierra la conexión TCP con RST y el otro en forma normal, con FIN. ¿ Qué ventaja trae cada método ? ¿ Cuál cree que es mejor ?

Rta:

Si la termina con RST puede desalocar inmediatamente los recursos y reusar la conexión. En cambio con FIN debe esperar los 120 segundos del TIME_WAIT.