Para esta semana de clase, se nos pidió correr una simulación en Network Simulator ya sea en la versión 2 o 3, en mi caso utilicé la 2.
Para escribir estas simulaciones se utiliza la extensió "tcl".
La programación NS-2 basicamente tiene el siguiente procedimiento.
- Crear el planificador de eventos
- Encender el rastreo
- Crear red
- Configuración de enrutamiento - rtproto
- Crear conexión (capa de transporte) - agentes
- Crear trafico - aplicaciones - Monitoreo
- Visualización usando nam
Comunicación UDP
Los datos son los flujos del agente UDP al agente Nulo.
#Crear un agente UDP y ponerselo al nodo 0
set udp0 [new Agent/UDP]
$ns attach-agent $n0 $udp0
# Crear un agente Nulo que actue como recolector de tráfico y se lo adjunte al
$ns attach-agent $n0 $udp0
# Crear un agente Nulo que actue como recolector de tráfico y se lo adjunte al
# nodo 1
set null0 [new Agent/Null]
$ns attach-agent $n1 $null0
# Conectar dos agentes
$ns connect $udp0 $null0
$ns attach-agent $n1 $null0
# Conectar dos agentes
$ns connect $udp0 $null0
Comunicación TCP
Los datos son flujos del agente TCP al agente recolector TCP
# Crear agente TCP y adjuntarselo al nodo n0
set tcp0 [new Agent/TCP]
$ns attach-agent $n0 $tcp0
# Crear un agente tcpsink que actue como recolector de tráfico y se lo adjunte al
set tcp0 [new Agent/TCP]
$ns attach-agent $n0 $tcp0
# Crear un agente tcpsink que actue como recolector de tráfico y se lo adjunte al
# nodo 1
set tcpsink0 [new Agent/TCPSink]
$ns attach-agent $n1 $tcpsink0
# Conecta dos agentes
$ns connect $tcp0 $tcpsink0
set tcpsink0 [new Agent/TCPSink]
$ns attach-agent $n1 $tcpsink0
# Conecta dos agentes
$ns connect $tcp0 $tcpsink0
Generador de tráfico
Se necesita generadores de tráfico para los datos actuales, estos simulan alguna aplicación de tráfico
Ejemplo simple utilizando CBR
# Crear agente CBR
set cbr0 [new Application/Traffic/CBR]
# Adjuntar el agente CBR a algun agente UDP/TCP
$cbr0 attach-agent $udp0
Planificar los eventos
"At" juega el rol más importante
$ns at 1.0 “$cbr0 start”
$ns at 5.0 “finish"
$ns at 1.0 “$cbr0 start”
$ns at 5.0 “finish"
cbr0 empezará al tiempo de 1.0 ms y todo el proceso se parara a los 5.0 ms, también se puede parar cada generador de tráfico.
$ns at 4.0 ”$cbr0 stop”
El generador de tráfico cbr0 se parará a los 4.0 ms
A continuación pongo unas simulaciones que corrí, agregue algunos comentarios a los códigos según lo que entendí que hacia cada simulación.
Simulación 1.
Código
Este programa simple que muestra como se envían datos en datagramas UDP.
Simulación 2.
Código
Este programa muestra como utilizar el filtro del algoritmo Token
Bucket (algoritmo utilizado para controlar la cantidad de datos
inyectados a la red, permitiendo el envío de ráfagas de éstos) para
cosas como:
- Catalogación de paquete. Cuando hay dos modelos del mismo origen conectados a un Receptor común, una de las fuentes está conectada a través de un filtro Token Bucket mientras el otro está conectado directamente.Los parámetros TBF dan forma a la exponencial (on/off) para parecer una codificación bitrate constante.
Simulación 3.
En la última simulación podemos ver una simulación TCP, en la cual se reenvía una ACK para confirmar que el paquete fue enviado.
Referencias: