lunes, 4 de marzo de 2013

Laboratorio 5: Simulación con NS-2

Para esta Tarea de laboratorio, se solicitó realizar una simulación en el programa Network Simulator, en su versión 2 o 3 (NS-2, NS-3), en forma conjunta con Network Animator para realizar animaciones de las simulaciones.

Elegí la versión 2 por ser más sencilla de instalar, siguiendo esta guía para Fedora, y ésta para Ubuntu.

Simulación 1

Para entender como funciona el NS-2, lo primero que hice fue buscar ejemplos para poder escribir una pequeña simulación básica de un nodo a otro. Con la ayuda de los ejemplos logré escribir un pequeño script con una simulación con un nodo adjuntado a un agente UDP, y una fuente de tráfico CBR para el mismo agente. Para que el segundo nodo reciba los paquetes del primero, se debe agregar un agente NULL, y realizar la conexión con el agente UDP para que los paquetes vayan hacía ahí.


Al final, se deben definir los eventos que sucederán en la simulación. En este ejemplo, inicio CBR a los 0.1 segundos, y lo detengo al completarse un segundo. De todas formas al correr la simulación, esta se hace con un paso de 2 ms, por lo que se puede observar bien el comportamiento.

He aquí la simulación:


Algo simple, pero sirvió para aprender lo básico.

Simulación 2

Para la segunda simulación, agregue un nuevo agente UDP para ver como se comportaba un nodo que recibiera paquetes desde dos conexiones. Se utiliza el mismo principio que anteriormente, agregando un nuevo agente UDP, adjuntando a su fuente de tráfico CBR y esta conectándola con el mismo agente NULL que el primer agente.



La simulación se ve bien, se ve como quería pero no hace exactamente nada útil solo algo gráfico. La siguiente simulación arreglará eso.



Simulación 3

Ahora para poder en verdad simular algo y realizar mediciones al respecto, necesitamos crear algo un poco más robusto. Para ello, en vez de tener dos agentes UDP y un nodo al que llegarán, tendremos un agente TCP para un nodo, un agente UDP para otro, y un nodo que sirva como cuello de botella para recibir y poner los paquetes en una cola.




En la simulación se puede observar como se simula la conexión TCP, que a diferencia de la UDP, el destinatario reenvía un ACK para confirmar que se recibió el paquete. Los cuadros rojos pertenecen a paquetes enviados mediante UDP, y los azules mediante TCP. En el nodo 2 se puede observar como se llena la cola con los paquetes que se van procesando, y en un cierto momento esa cola se llena y algunos paquetes se pierden (apareciendo cayendo en la simulación).


Medidas de Desempeño

A partir del archivo generado al correr el código con ns (el mismo usado por nam) es posible obtener datos de como se comportó la simulación. En base a ello podemos calcular diferentes cosas, como el throughput, la pérdida de paquetes, jitter y demás. Buscando en Internet, existen ya algunas medidas de desempeño programadas por diferentes personas para usarlas con las salidas de una simulación, estas programadas en AWK.

Los archivos de salida de ns-2 cuentan con el formato:

r -t 0.76804 -s 2 -d 3 -p tcp -e 1040 -c 1 -i 134 -a 1 -x {0.0 3.0 22 ------- null}

donde:
 r significa que se recibió el paquete correctamente,
-t indica que el siguiente valor es el tiempo en el que se recibió (desde el inicio de la simulación),
-s nodo orígen = 2,
-d nodo destino = 3,
-p protocolo = tcp,
-e tamaño de paquete = 1040 bytes,
-c es el id de flujo = 1,
-i el número de paquete.

Las demás líneas son datos que no se ocuparán para las pruebas.

La pruebas hechas (a la simulación 3) son las siguentes:

Delay

Código



Resultado



Pérdida de Paquetes

Código



Resultado



Referencias:

2 comentarios:

  1. Buenas Tardes Emmanuel, necesito saber si me puedes colaborar con una pregunta:

    ¿puedo crear un script que una el awk con el tcl? solo crear un script uniendo los dos.

    Gracias

    ResponderEliminar