Objetivos: En esta tarea usted aplicará: comunicación entre procesos remotos usando TCP programados en Java, uso de túnel con ssh, Medición de anchos de banda promedios y peaks.
Introducción
Esta tarea es similar a la pasada,
pero programada en Java, incorpora además la generación
de un gráfico. Se hace también un pequeño cambio
en la medición la cual usted debe hacer en el receptor en lugar
del transmisor.
El protocolo TCP posee un mecanismo de
control de congestión que cambia la ventana de
transmisión basado en la
ventana de congestión, que es un indicador de la capacidad de
tráfico
que la red puede transportar. Además posee
un mecanismo de
control de flujo el cual cambia la ventana de transmisión
a partir de la ventana reportada por el receptor, que es una
indicación de la capacidad disponible en el receptor para
almacenar los
datos enviados. Para satisfacer ambos criterios, control fe flujo y
control de congestión, el transmisor limita su ventana de
transmisión al mínimo entre la ventada de
congestión y la reportada por el receptor.
Si la aplicación receptora lee los datos desde la capa
de transporte tan pronto llegan datos, la ventana del transmisor
estará
limitada sólo por la ventana de congestión. Es así
como usted podrá
estudiar el comportamiento de esta ventana observando la tasa de
transferencia en este escenario.
Por otro lado es sabido que los proveedores de acceso a Internet dimensionan sus sistemas (caso usuario domiciliario) asimétricamente. Es decir, dan mayor ancho de banda de bajada que de subida.
Las situaciones previas hacen recomendable que según el resultado de esta tarea se propongan formas para controlar la congestión de TCP que consideren los mecanismos usados por los ISP para limitar el tráfico.
Por otro lado UDP no posee control de congestión, luego a través de éste es posible estudiar los mecanismos usados por los ISPs para limitar el tráfico entrante y saliente (no será usado en esta tarea)
En esta tarea su grupo sólo procura medir y observar, no se le pide hacer modelos o explicar lo observado.
Nombres:
tt_server, tt_client: Traffic test server y Traffic test
client. Observación de ventana de congestión para
tráfico entrante y
saliente.
tunnel: Túnel TCP vía conexión ssh.
Sintaxis: java
tt_server <port> <size> <base_tiempo>
java
tt_client <port> <size> <base_tiempo>
tunnel
<port> <host> <hostport> /* puede ser una
versión mejorada o igual a la desarrollada en tarea 3 */
/-------------------------------\Con túnel:
| Una máquina |
| tt_client |----\
| | |
| tt_server |<---/
\------------------------------ /
/-------------------------------\ /-------------------------------\O alternativamente:
| Máquina Local | | Máquina Remota |
| Home tt_client |----\ /-->| tt_server ELO/aragon |
| | | | | hostport host |
| ssh port |<---/ | | |
| | Tráfico vía túnel \---| |
| ssh |------------------------------->| sshd |
\----------------------------- / \-------------------------------/
/-------------------------------\ /--------------------\ /------------------\
| Máquina Local | | Máquina Remota | | host |
| Home tt_client |----\ | aragon | |Laboratorio |
| | | | | | |
| ssh port |<---/ | | | |
| | Tráfico vía túnel | / - >|----->|hostport tt_server|
| ssh |--------------------------->| sshd - - - - / | | |
\----------------------------- / \--------------------/ \------------------/