Para realizar la simulación lo que utilice es
ns-3, es un simulador de redes que se basa en eventos discretos, se pueden simular protocolos unicast y multicast, se utiliza mucho en la investigación de redes móviles ad-hoc. Implementa muchos protocolos tanto de redes alámbricas como inalámbricas , la versión que yo uso la ns-3 se usa para soportar el flujo de trabajo de una simulación desde configuración hasta recolección y análisis de tramas.
La finalidad de esta entrada es diseñar y ejecutar una simulación de prueba, además incluir algunas medidas de desempeño.
Lo importante es que haya nodos, tráfico y algunas medidas de desempeño. Lo primero que yo hice es comenzar a correr los ejemplos que ya vienen, es difícil ya que todos están C++ y no hay una API completa de Python, entonces hay que investigar bastante.
Yo diseñé la siguiente red:
Lo primero que se hace es crear los nodos, yo cree los nodos de las terminales en un arreglo, luego los de los switches. Después se tenía que definir los links y marcar los nodos que de hicieron con la finalidad de ser switches como tales. Aquí la parte del código:
Despues se asignan las direcciones IP a las terminales:
Enseguida se empieza a agregar el tráfico, en esta parte del código muestro como se envían datos del nodo
0 al 1, ademas de indicar que es UDP:
En donde se estableció la velocidad de transferencia en 500kb/s y se establece la dirección IP del destino en este caso 10.1.1.2 corresponde al nodo 1.
En las demás transferencias también se establecieron cada una de esas características, aquí esta el resto de los nodos en los que
varié la velocidad de transferencia:
En el código se puede ver que hay transferencia de los nodos:
3 al 0: Pasando por el switch0, y con una velocidad de transferencia de 100kb/s
2 al 4: Pasando por el switch1, y con una velocidad de transferencia de 300kb/s.
1 al 2: Pasando por el switch0, y con una velocidad de transferencia de 160kb/s.
3 al 2: Pasando por el switch0, y con una velocidad de transferencia de 800kb/s.
4 al 2: Pasando por el switch1, y con una velocidad de transferencia de 800kb/s
Este es el resultado de correr la simulación:
Este resultado muestra estadísticas para cada transferencia de datos que hicieron los nodos, por ejemplo del nodo 0 al 1, la transferencia es de la IP 10.1.1.1 a la 10.1.1.2, con sus cantidades de bytes de paquetes transmitidos y recibidos, ademas de el número de paquetes, indica que se perdieron 0 paquetes.
FlowID: 1 (UDP 10.1.1.1/49153 --> 10.1.1.2/9)
Tx Bytes: 2267460
Rx Bytes: 2266920
Tx Packets: 4199
Rx Packets: 4198
Lost Packets: 0
Mean{Delay}: 0.00604608194188
Mean{Jitter}: 0.000512220537527
Mean{Hop Count}: 1.0
También se muestra por ejemplo el Jitter de .0005 que de acuerdo a lo visto en la entrada pasada, es un valor bastante bueno para la comunicación.
Las demás transmisiones muestran las mismas estadísticas.
Las medidas se obtuvieron así:
Visualización
Para este último paso lo que había que hacer ya es importar la librería de visualizer y dibujar los nodos si es que queremos que aparezcan en alguna posición determinada, si no se dibujan solos, yo si establecí las posiciones:
Resultados
Funcionando todos juntos
Nodo 5 (SWITCH)
Nodo 6 (SWITCH)
Código completo
Referencias
Ejemplo NS-3 Python
Instalación python