29 de abril de 2013

Experimento de Redes

Redes de Telecomunicaciones
Tarea 5

Para esta entrega se nos pidió desarrollar un modulo para NS-2 que permitiera crear topologías, generar patrones de tráfico y comparar por lo menos dos diferentes esquemas de control de congestión. De esta entrega las dos primeras partes ya se habían mencionado antes en las entregas de laboratorio y para la tercera solo me fue posible abordar con información acerca del tema.

Al final en la parte de referencias dejo los enlaces a documentos con muy buena información para el tema de congestión de redes y algunas pruebas hechas por otras personas acerca del mismo tema.

Generación de topologías y creación de tráfico


Para la parte de creación de topologías y creación de tráfico, me base en lo ya antes presentado en las tareas de laboratorio, pero ahora creando un solo archivo tcl que incluye funciones encargadas de la formación de una topología común conocida de unos cuantos nodos y de a selección manual de tráfico de red.

Con este mismo podemos obtener simulaciones como se muestra en las siguiente animación producida por nam.


Código



Control de congestión


Se llama congestión al exceso de tráfico en alguna parte de una red, que da lugar al exceso de demanda de algún recurso (ancho de banda, memoria, capacidad de procesamiento) y los síntomas notorios para este caso son el aumento en los retardos y la pérdida de paquetes.

Consecuencias de la congestión:

Retardos: Trabajar cerca de la capacidad de los enlaces es ideal desde el punto de vista de la productividad, pero no lo es respecto al retardo. Se experimentan grandes retardos en una cola según la tasa de llegadas de paquetes se acerca a la capacidad del enlace.

Pérdidas: Como los buffers no son de tamaño in finito, el emisor debe realizar retransmisiones para compensar los paquetes perdidos debido al desbordamiento de los buffers.

Desperdicio de recursos:
  • Las retransmisiones innecesarias realizadas por el emisor en presencia de grandes retardos, que provocan que venzan los temporizadores de retransmisión antes de que lleguen los asentimientos, hacen que el ancho de banda de los enlaces se utilice para encaminar copias innecesarias de los paquetes.
  • Cuando un paquete es desechado a lo largo de un camino, la capacidad de almacenamiento, procesamiento y transmisión que fue utilizada en cada uno de los nodos y enlaces anteriores, para encaminar ese paquete hasta el punto en el que es desechado, está siendo desperdiciada.

Algoritmos de control de congestión:

Mecanismo de Traffic Shaping

Es un mecanismo en bucle abierto. Conforma el tráfico que una fuente puede inyectar a la red. Se usa en redes ATM (Asynchronous Transfer Mode). En estas redes, la velocidad de línea es de 155 Mbps y el usuario puede ver una velocidad de unos 10 Mbps.

Si se tiene una ráfaga lista para transmitir, el sistema obliga a no transmitir todo seguido. Requiere un acuerdo entre proveedor y cliente: el proveedor garantiza que se cursa el tráfico si se transmite a una tasa determinada y tira el tráfico si se supera. Esto lo realiza mediante una función policía, que es un nodo que tira los paquetes que superan la tasa contratada a la entrada de la red (no se tiran una vez que ya ha entrado). Esto puede realizarse mediante un algoritmo de Leaky Bucket, cuyo nombre se debe a que es como si tuviéramos un bote que vamos llenando con un caudal determinado y por el que sale el líquido con otro caudal distinto; si llenamos muy deprisa el bote acabará llenándose y vertiéndose por arriba, lo que asemeja una pérdida de paquetes en una red.

Algoritmo de descarte de paquetes

Es un algoritmo de control de congestión en bucle cerrado. Se basa en que los nodos descartan (tiran) paquetes cuando su ocupación es alta. Para esto los nodos han de conocer sus recursos (CPU y memoria). Hace una asignación dinámica de los buffers en base a las necesidades de cada línea.

Sin embargo, cada línea necesita al menos una (o más) posiciones de memoria para gestionar información relevante, tal como asentimientos, que permite la liberación de posiciones de memoria ocupadas por paquetes que estaban esperando por si necesitaban retransmitirse. Si a la línea llegan datos (no asentiminentos u otra información relevante) y el buffer de salida de la línea correspondiente está lleno, se descarta el paquete. Hay varias formas de hacer la asignación de buffers:
  • En base al uso. No es muy eficiente, porque cuando una línea se empieza a cargar acapara todos los recursos.
  • Asignación fija. Tampoco es muy buena, ya que desaprovecha recursos.
  • Asignación subóptima. Llamando k al número de posiciones del buffer y s al número de líneas de salida, se tiene que el número de posiciones de memoria asociadas a cada línea es:
    $$m=\dfrac {k}{\sqrt{s}}$$

Referencias:
Video Sources and Congestion Control Protocols
TCP Congestion Control Algorithms
TCP Performance Simulations
Control de Congestión
Algoritmos de Control de Congestión

1 comentario:

  1. Pues, los explicas, pero no los inventaste ni modificaste. Tampoco está la implementación ni la experimentación. 2 pts.

    ResponderEliminar

Nota: solo los miembros de este blog pueden publicar comentarios.