Para instalar los programas en ubuntu es simple , con el comando que acostumbramos usar:
El código de ejemplo no fue hecho por mi, lo encontré aquí : http://webingineer.wordpress.com/2010/08/15/simulation-example-in-ns-2/
////
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Se crea el objeto simulador | |
set ns [new Simulator] | |
#Para mostrar el flujo de datos en colores diferentes en NAM | |
$ns color 1 Blue | |
$ns color 2 Red | |
#Archivo NAM | |
set nf [open out.nam w] | |
$ns namtrace-all $nf | |
#Definir procedimiento | |
proc finish {} { | |
global ns nf | |
$ns flush-trace | |
#Close the NAM trace file | |
close $nf | |
#Execute NAM on the trace file | |
exec nam out.nam & | |
exit 0 | |
} | |
#Se crean los nodos | |
set n0 [$ns node] | |
set n1 [$ns node] | |
set n2 [$ns node] | |
set n3 [$ns node] | |
#Se crean las aristas | |
$ns duplex-link $n0 $n2 2Mb 10ms DropTail | |
$ns duplex-link $n1 $n2 2Mb 10ms DropTail | |
$ns duplex-link $n2 $n3 1.7Mb 20ms DropTail | |
#Tamano de la cola en la arista n2-n3 | |
$ns queue-limit $n2 $n3 10 | |
#posicionar los nodos para NAM | |
$ns duplex-link-op $n0 $n2 orient right-down | |
$ns duplex-link-op $n1 $n2 orient right-up | |
$ns duplex-link-op $n2 $n3 orient right | |
#Se monitorea la arista n2-n3 para NAM | |
$ns duplex-link-op $n2 $n3 queuePos 0.5 | |
#Conexion TCP | |
set tcp [new Agent/TCP] | |
$tcp set class_ 2 | |
$ns attach-agent $n0 $tcp | |
set sink [new Agent/TCPSink] | |
$ns attach-agent $n3 $sink | |
$ns connect $tcp $sink | |
$tcp set fid_ 1 | |
#Conexion FTB sobre TCP | |
set ftp [new Application/FTP] | |
$ftp attach-agent $tcp | |
$ftp set type_ FTP | |
#Conexion UDP | |
set udp [new Agent/UDP] | |
$ns attach-agent $n1 $udp | |
set null [new Agent/Null] | |
$ns attach-agent $n3 $null | |
$ns connect $udp $null | |
$udp set fid_ 2 | |
#Conexion CBR sobre UDP | |
set cbr [new Application/Traffic/CBR] | |
$cbr attach-agent $udp | |
$cbr set type_ CBR | |
$cbr set packet_size_ 1000 | |
$cbr set rate_ 1mb | |
$cbr set random_ false | |
#Eventos para los agentes CBR y FTP | |
$ns at 0.1 "$cbr start" | |
$ns at 1.0 "$ftp start" | |
$ns at 4.0 "$ftp stop" | |
$ns at 4.5 "$cbr stop" | |
#Despegar los agentes tcp y sink | |
$ns at 4.5 "$ns detach-agent $n0 $tcp ; $ns detach-agent $n3 $sink" | |
#Se llama al procedimiento llamado "finish" despues de 5 segundos de simulacion | |
$ns at 5.0 "finish" | |
#Imprime el tamano del paquete CBR y el intervalo | |
puts "CBR packet size = [$cbr set packet_size_]" | |
puts "CBR interval = [$cbr set interval_]" | |
#Iniciar simulacion | |
$ns run |
El escenario descrito por el código anterior se puede describir mediante el siguiente diagrama:
Mediante el diagrama ( y el código) podemos ver los siguientes detalles de la simulación:
- Se crea una conexión TCP sobre FTP en el nodo 0.
- Se crea una conexión UDP sobre CBR en el nodo 1.
- Las conexiones nodo 0 - nodo 2 y nodo 1 - nodo 2 tienen una velocidad de 2Mbps con un delay de 10 ms .
- La conexion nodo 2 - nodo 3 tiene una velicdad de 1.7 Mbps con un delay de 20 ms.
- El tamaño de cada paquete es de 1KByte.
Aquí esta la simulación en video, donde podemos ver que al transmitir datos entre el nodo 2 y el nodo 3, se desprenden unos cuadrados rojos y azules, estos representan los paquetes perdidos.