Title: SIMULACION DE REDES DE TELECOMUNICACIONES CON NS2 2 PARTE
1SIMULACION DE REDES DE TELECOMUNICACIONES CON
NS-22 PARTE
- FRANKLIN ALBERTO RENGIFO
- UNIVERSIDAD NACIONAL DE COLOMBIA
2DINAMICA DE LA RED
- En este capitulo se mostrará como ajustar el
enrutamiento cuando ocurra un fallo en el enlace.
3TOPOLOGIA ANILLO
- Para cada nodo desde 0 a 6 creamos un enlace
- for set i 0 i lt 7 incr i
- Se crea un enlace desde el nodo i hasta el
nodo i1. La operación (i1)7 retorna el
residuo de la división entera entre i1 y 7 - ns duplex-link n(i) n(expr (i1)7)
1Mb 10ms DropTail -
4LOS AGENTES
- Primero se crean los agentes, luego a estos se
les asocia el tipo de fuente de paquetes que
enviaran y por ultimo se asocian los emisores con
los receptores, en este ejemplo se envían
paquetes desde el nodo n(0) hasta el nodo n(3) - Se crea un agente UDP (udp0) y se asocia al
nodo n(0) - set udp0 new Agent/UDP
- ns attach-agent n(0) udp0
- Se crea un tipo de trafico CBR y se asocia
al agente udp0 - set cbr0 new Application/Traffic/CBR
- cbr0 set packetSize_ 500
- cbr0 set interval_ 0.005
- cbr0 attach-agent udp0
5LOS AGENTES
- set null0 new Agent/Null
- ns attach-agent n(3) null0
-
- Se conectan los agentes udp0 y null0
- ns connect udp0 null0
- Se establecen los tiempos de inicio y fin en
la transmisión de los paquetes desde el nodo n(0)
hasta el nodo n(3) - ns at 0.5 "cbr0 start
- ns at 4.5 "cbr0 stop"
6FALLA DEL ENLACE
- Si se ejecuta la simulación, los paquetes como
era de esperase, tomaran la trayectoria más corta
para ir desde el nodo n(0) hasta el nodo n(3), es
decir pasaran por los nodos n(1) y n(2). -
- Ahora adicionaremos una interesante
característica que ocurre en las redes reales, y
es la falla del enlace entre los nodos n(1) y
n(2) por un segundo - ns rtmodel-at 1.0 down n(1) n(2)
- ns rtmodel-at 2.0 up n(1) n(2)
7FALLA DEL ENLACE
- Para habilitar el enrutamiento en la red se debe
configurar el objeto Simulator con el tipo de
enrutamiento a usar, en redes cableadas existe en
NS-2 enrutamiento estático el cual se ejecuta una
sola vez antes de iniciar la simulación, y
enrutamiento dinámico el cual periódicamente
recalcula las tablas de enrutamiento
transmitiendo determinados paquetes. - Para habilitar el enrutamiento dinámico se
escribe la siguiente instrucción después de crear
el objeto Simulator ns - ns rtproto DV
8EJEMPLO COMPLETO
- Crear el objeto Simulator
- set ns new Simulator
- Se configura la simulación para que use
enrutamiento dinámico - ns rtproto DV
- Abre el archive out.nam para después usar el
programa nam - set nf open out.nam w
- ns namtrace-all nf
- Definir el procedimiento de finalización
- proc finish
- global ns nf
- ns flush-trace
- Se cierra el archivo nf
- close nf
- Se ejecuta el programa nam
- exec nam out.nam
- exit 0
9EJEMPLO COMPLETO
- Se crean 7 nodos
- for set i 0 i lt 7 incr i
- set n(i) ns node
-
- Se crean los enlaces entre los nodos
- for set i 0 i lt 7 incr i
- ns duplex-link n(i) n(expr
(i1)7) 1Mb 10ms DropTail -
- Se crea el agente udp0 y se asocial al nodo n(0)
- set udp0 new Agent/UDP
- ns attach-agent n(0) udp0
- Se crea una fuente de trafico CBR y se asocia
al agente udp0 - set cbr0 new Application/Traffic/CBR
- cbr0 set packetSize_ 500
- cbr0 set interval_ 0.005
- cbr0 attach-agent udp0
10EJEMPLO COMPLETO
- Se crea un agente null0 y se asocia al nodo n
(3) - set null0 new Agent/Null
- ns attach-agent n(3) null0
- Se conecta la fuente de tráfico con el receptor
del tráfico - ns connect udp0 null0
- Se programan los eventos
- ns at 0.5 "cbr0 start"
- ns rtmodel-at 1.0 down n(1) n(2)
- ns rtmodel-at 2.0 up n(1) n(2)
- ns at 4.5 "cbr0 stop
- Se termina la simulación después de 5 segundos
- ns at 5.0 "finish
- Se ejecuta la simulación
- ns run
11EJERCICIO 5
- Agregue un nodo más que este en el centro de los
demás nodos y este conectado a todos ellos. Los
paquetes se siguen perdiendo?
12FORMATOS DE LOS ARCHIVOS DE SALIDA DE LA
SIMULACION
- FORMATOS DE TRAZA NORMALES
13INFORMACION ADICIONAL
14EJEMPLO
- A continuación presentamos un ejemplo con la
topología que se muestra en el diagrama, que
tiene cuatro nodos n0, n1, y n2, y n3, con
enlaces duplex con determinados valores de ancho
de banda y delay. - n0
- \
- 5Mb \
- 2ms \
- \
- n2
--------- n3 - /
1.5Mb - 5Mb /
10ms - 2ms /
- /
- n1
15EJEMPLO
- Se crea el objeto Simulator
- set ns new Simulator
-
- Se abren los archivos para almacenar la traza
tanto para - nam y el de análisis
- set f open out.tr w
- ns trace-all f
- set nf open out.nam w
- ns namtrace-all nf
- Se crean los cuatro nodos
- set n0 ns node
- set n1 ns node
- set n2 ns node
- set n3 ns node
16EJEMPLO
- Se crean los enlaces asociados a los nodos
- ns duplex-link n0 n2 5Mb 2ms DropTail
- ns duplex-link n1 n2 5Mb 2ms DropTail
- ns duplex-link n2 n3 1.5Mb 10ms DropTail
- Se crea el agent udp0 de tipo UDP
- set udp0 new Agent/UDP
- Se asocia el agente udp0 al nodo n0
- ns attach-agent n0 udp0
- Se crea un tráfico tipo CBR
- set cbr0 new Application/Traffic/CBR
-
17EJEMPLO
- Se asocial el agente udp0 al trafico cbr0
- cbr0 attach-agent udp0
-
- Se establece el ID del flujo asociado al agente
udp0 con un valor de 0 - udp0 set class_ 0
-
- Se establece el agente null0 de tipo Null
(sumidero de paquetes) - set null0 new Agent/Null
-
- Se asocial el gente null0 al nodo n3
- ns attach-agent n3 null0
- Se conectan los agentes transmisores y
receptores - ns connect udp0 null0
-
- Se inicia la transmisión después de 1.0 segundoS
de haber iniciado la simulación - ns at 1.0 "cbr0 start
18EJEMPLO
- Cuando se crea un trafico de tipo CBR sin
parámetros, este se crea - por default con un tamaño de paquete igual a 210
bytes y un - intervalo de tiempo igual a 0.00375
milisegundos, en las dos - siguientes líneas se muestran en pantalla los
dos valores - puts cbr0 set packetSize_
- puts cbr0 set interval_
- Se crea una aplicación FTP cuyos paquetes se
transportan en el - protocolo TCP/Tahoe desde el nodo n1 hasta el
nodo n3, y a este - flujo de paquetes le asociamos el ID 1
- set tcp new Agent/TCP
- tcp set class_ 1
- ns attach-agent n1 tcp
- set sink new Agent/TCPSink
- ns attach-agent n3 sink
19EJEMPLO
- set ftp new Application/FTP
- ftp attach-agent tcp
- ns at 1.2 "ftp start"
- ns connect tcp sink
- Después de 1.35 segundos de haber iniciado la
simulación dejamos de transmitir paquetes desde - el nodo n0 hasta el nodo n3, y desasociamos el
agente tcp del nodo n0 y el agente sink de - el nodo n0
- ns at 1.35 "ns detach-agent n0 tcp
- ns detach-agent n3 sink"
- proc finish
- global ns f nf
- ns flush-trace
- close f
- close nf
- puts "Ejecutando el programa nam
- exec nam out.nam
- exit 0
20RESULTADOS DEL EJEMPLO
- A continuación se muestra la primera línea del
archivo out.tr - 1 0 2 cbr 210 ------- 0 0.0 3.0 0 0
- Según la Tabla 1, la explicación de la línea es
la siguiente - Se coloca un paquete en la cola (queue) del
enlace. - 1 g Tiempo del evento
- 0 d ID del Nodo fuente
- 2 d ID del Nodo destino
- cbr s Nombre paquete
- 210 d Tamaño del paquete
- ------ s Flags (En este caso ninguno)
- 0 d ID del flujo (Generado por el agente
dup0) - 0.0 d.d Dirección de la fuente
- 3.0 d.d Dirección del destino
- 0 d Numero de secuencia del paquete en el
flujo - 0 d ID único del paquete
21RESULTADOS DEL EJEMPLO
- La segunda línea del archivo out.tr, significa
que el paquete con ID 0 que pertenece al flujo
con ID 0 de tipo CBR es sacado de la cola (queue)
del enlace en el nodo 2 - 1 0 2 cbr 210 ------- 0 0.0 3.0 0 0
- La tercera línea del archivo out.tr, significa
que el paquete con ID 0 es recibido en el nodo 2
a los 1.002336 segundos - r 1.002336 0 2 cbr 210 ------- 0 0.0 3.0 0 0
22RESULTADOS DEL EJEMPLO
- El resto del archivo out.tr es de la siguiente
forma - 1.006086 2 3 cbr 210 ------- 0 0.0 3.0 1 1
- - 1.006086 2 3 cbr 210 ------- 0 0.0 3.0 1 1
- 1.0075 0 2 cbr 210 ------- 0 0.0 3.0 2 2
- - 1.0075 0 2 cbr 210 ------- 0 0.0 3.0 2 2
- r 1.009836 0 2 cbr 210 ------- 0 0.0 3.0 2 2
- .
- .
- .
23FORMATO BASICO DE TRAZA PARA REDES WIRELESS
- Existe un formato básico de salida, sin embargo
habrá información adicional que depende del
algoritmo de enrutamiento que se utilice, es
decir hay un formato para AODV, DSDV, DSR, TORA,
etc. - Similar al anterior formato, cada evento puede
iniciar con uno de los cuatro caracteres, seguido
por un flag - N Propiedad del nodo.
- I Información a nivel de paquete IP.
- H Información del próximo HOP.
- M Información del paquete a nivel MAC.
- P Información especifica del paquete.
24FORMATO BASICO DE TRAZA PARA REDES WIRELESS
25Ejercicio 6
- Modifique el ejemplo-5 para que genere la traza
de ns y analice los resultados.
26VISUALIZAR LOS RESULTADOS DE LA SIMULACION
- NS-2 viene con un programa de visualización
llamado 'xgraph', el cual puede ser usado para
crear representaciones graficas de los resultados
de la simulación. - En esta sección se crearan archivos que guardaran
los distintos eventos que ocurren en la
simulación y que serán usados por 'xgraph'.
27TIPOS DE TRAFICO
- TRAFICO EXPONENCIAL Se generan periodos de
tiempo ON/OFF (actividad /inactividad) de acuerdo
a una distribución exponencial. Los paquetes son
de tamaño constante y enviados a una rata fija
durante los periodos de actividad, el objeto se
crea con la siguiente instrucción
Application/Traffic/Exponential. -
- Los parámetros de este tipo de trafico son
packetSize_ el tamaño del paquete, burst_time_ el
tiempo promedio de los periodos de actividad,
idle_time_ el tiempo promedio de los periodos de
inactividad, rate_ la velocidad de envió de los
paquetes en el periodo de actividad. Un ejemplo
de la creación de tráfico Exponencial es el
siguiente - set e new Application/Traffic/Exponential
- e set packetSize_ 210
- e set burst_time_ 500ms
- e set idle_time_ 500ms
- e set rate_ 100k
28La función de densidad de probabilidad de la
distribución Exponencial
La función de distribución de probabilidad
29TIPOS DE TRAFICO
- TRAFICO PARETO Genera trafico de acuerdo a una
distribución de Pareto, es decir los periodos
On/Off obedecen a una distribución de Pareto,
este tipo de trafico exhibe dependencia de largo
rango o características fractales. -
- La instrucción para crear un objeto que
simule tráfico de este tipo es Application/Traffic
/Pareto, con parámetros de configuración como
packetSize_ el tamaño del paquete que es
constante, burst_time_ es el tiempo promedio de
los periodos ON, idle_time_ el tiempo promedio de
los periodos OFF, rate_ la velocidad de envió de
datos, shape_ parámetro de la distribución de
pareto. - Un ejemplo del uso de la distribucción de Pareto
es - set p new Application/Traffic/Pareto
- p set packetSize_ 210
- p set burst_time_ 500ms
- p set idle_time_ 500ms
- p set rate_ 200k
- p set shape_ 1.5
30TIPOS DE TRAFICO
- TRAFICO CBR Genera trafico continuo a una rata
constante, un objeto CBR se crea con la siguiente
instrucción Application/Traffic/CBR. - Los parámetros de configuración son rate_ la
velocidad de envió de datos, interval_ (Opcional)
intervalo entre envió de paquetes, packetSize_ el
tamaño del paquete generado, random_ indica si
introduce aleatoriedad en el tiempo de inicio
(por default es 0 o sea deshabilitado), maxpkts_
el numero máximo de paquetes a enviar (por
default es 228). - Un ejemplo de creación de este tipo de trafico
es - set e new Application/Traffic/CBR
- e set packetSize_ 48
- e set rate_ 64Kb
- e set random_ 1
31TIPOS DE TRAFICO
- TRAFICO TRACE Genera trafico acuerdo a un archivo
en el que cada record consiste de 2 campos de 32
bits en (big-endian) orden. El primero contiene
el tiempo en microsegundos del próximo paquete a
enviar y el segundo campo es la longitud en bytes
del paquete, se crean de la siguiente manera
Application/Traffic/Trace.
32TOPOLOGIA DEL EJEMPLO
33TOPOLOGIA DEL EJEMPLO
- Las siguientes líneas de código crean los nodos y
los enlaces que se - usan en la simulación
- set n0 ns node
- set n1 ns node
- set n2 ns node
- set n3 ns node
- set n4 ns node
- ns duplex-link n0 n3 1Mb 100ms DropTail
- ns duplex-link n1 n3 1Mb 100ms DropTai
- lns duplex-link n2 n3 1Mb 100ms DropTail
- ns duplex-link n3 n4 1Mb 100ms DropTail
34TRAFICO DEL EJEMPLO
- Este procedimiento tiene 6 parámetros de entrada
node es el nodo, sink es el agente de tráfico
receptor, size (tamaño de los paquetes en bits),
burst (tiempo de ráfaga), idle (tiempo de
inactividad) y rate (rata pico de transmisión de
datos) son los parámetros para configurar el tipo
de tráfico Exponencial - proc attach-expoo-traffic node sink size burst
idle rate - global ns
- Crea un agente UDP y lo asocia al nodo
- set source new Agent/UDP
- ns attach-agent node source
- Crea un tráfico de tipo Exponencial y
configura los parámetros del trafico - set traffic new Application/Traffic/Exponent
ial - traffic set packetSize_ size
- traffic set burst_time_ burst
- traffic set idle_time_ idle
- traffic set rate_ rate
- Asocia la fuente del tráfico con el agente
- traffic attach-agent source
35AGENTE LossMonitor
- El Agent/LossMonitor que se usará como agente de
recepción no responde con un paquete ACK por cada
paquete recibido, pero almacena la cantidad de
bytes recibidos lo cual se puede usar para
calcular el ancho de banda, posteriormente.
36AGENTES
- Ahora se usa este procedimiento para asociar
diferentes tipos de tráfico Exponencial a los
nodos y conectarlos - con los respectivos receptores de tráfico que se
crean con anterioridad - Se crean tres receptores de tráfico de tipo
LossMonitor - set sink0 new Agent/LossMonitor
- set sink1 new Agent/LossMonitor
- set sink2 new Agent/LossMonitor
- Se asocian los tres agentes receptores al nodo
n4 - ns attach-agent n4 sink0
- ns attach-agent n4 sink1
- ns attach-agent n4 sink2
- Se crea un trafico Exponencial (source0) con
size200 burst2s idle1s rate100k, se lo asocia
al nodo - n0 y el receptor del trafico es sink0
- set source0 attach-expoo-traffic n0 sink0 200
2s 1s 100k - Se crea un trafico Exponencial (source1) con
size200 burst2s idle1s rate200k, se lo
asocia al nodo - n1 y el receptor del trafico es sink1
37ARCHIVOS
- Ahora abrimos en modo de escritura tres archivos
con las siguientes tres instrucciones - set f0 open out0.tr w
- set f1 open out1.tr w
- set f2 open out2.tr w
- Estos archivos tienen que cerrarse al finalizar
la simulación por lo que tenemos que - modificar el procedimiento finish de la
siguiente manera - proc finish
- global f0 f1 f2
- Cierra los archivos referenciados por las
variables f0 f1 f2 - close f0
- close f1
- close f2
- Ejecuta xgraph para visualizar los
resultados de la simulación - exec xgraph out0.tr out1.tr out2.tr
-geometry 800x400 - exit 0
38PROCEDIMIENTO RECORD
- Ahora se escribe un nuevo procedimiento record
que determinara que tipos de datos guardar en los
- archivos out0.tr, out1.tr, out2.tr
- proc record
- global sink0 sink1 sink2 f0 f1 f2 ns
- Determina el lapso de tiempo en el que
el procedimiento se volvera activar, en este caso
cada - 0.5 segundos se ejecutara el
procedimiento - set time 0.5
- Para saber cuantos bytes han sido
recibidos por los receptoras sink0, sink1,
sink2 - escribimos las siguientes instrucciones
que asignan a bw0, bw1, bw2 la cantidad de - bytes recibidos hasta el momento en los
receptores sink0, sink1, sink2
respectivamente - set bw0 sink0 set bytes_
- set bw1 sink1 set bytes_
- set bw2 sink2 set bytes_
-
39PROCEDIMIENTO RECORD
- Obtenemos el tiempo actual
- set now ns now
- Calculamos el ancho de banda (en MBit/s)
y escribimos el resultado al archivo. - expr es usando en OTCL para ejecutar
operaciones aritméticas - puts f0 "now expr bw0/time8/1000000
" - puts f1 "now expr bw1/time8/1000000
" - puts f2 "now expr bw2/time8/1000000
- Reiniciamos a 0 la cantidad de bytes
recibidos en los receptores - sink0 set bytes_ 0
- sink1 set bytes_ 0
- sink2 set bytes_ 0
- Reprogramamos el tiempo en el que el
procedimiento se volverá ha ejecutar - ns at expr nowtime "record"
-
40PROGRAMAR EVENTOS
- Por ultimo solo queda programar los eventos en
los que se iniciara la - transmisión de los datos, los eventos en que se
termina de transmitir - los datos, los eventos en los que se empezara a
grabar los resultados - de la simulación y la duración de esta
- ns at 0.0 "record"
- ns at 10.0 "source0 start"
- ns at 10.0 "source1 start"
- ns at 10.0 "source2 start"
- ns at 50.0 "source0 stop"
- ns at 50.0 "source1 stop"
- ns at 50.0 "source2 stop"
- ns at 60.0 "finish"
- ns run
41VISUALIZACION
42SIMULACION DE UNA RED WIRELESS AD HOC (MANET)
- UNA RED AD-HOC ES UNA RED CON NODOS MOVILES CUYA
TOPOLOGIA CAMBIA DINAMICAMENTE.
43DEFINICION DE PARAMETROS DE LA SIMULACION
- Primero se definen las variables que luego
usaremos en la configuración de los nodos - que podemos identificar con los elementos físicos
que vamos a simular - Tipo de Canal, para nuestro caso es inalámbrico
- set val(chan) Channel/WirelessChannel
- Modelo de propagación de las ondas
electromagnéticas en el canal - set val(prop) Propagation/TwoRayGround
- Tipo de interface de red
- set val(netif) Phy/WirelessPhy
- Que clase de acceso al medio vamos a usar
- set val(mac) Mac/802_11
- Tipo de cola a usar
- set val(ifq) Queue/DropTail/PriQueue
44DEFINICION DE PARAMETROS DE LA SIMULACION
- Tipo de capa de enlace
- set val(ll) LL
- Tipo de antena
- set val(ant) Antenna/OmniAntenna
- Maximo numero de paquetes en ifqlen
- set val(ifqlen) 50
- Numero de nodos moviles
- set val(nn) 5
- Protocolo de enrutamiento
- set val(rp) AODV
- Tamaño en metros del eje X
- set val(x) 670
- Tamaño en metros del eje Y
45DEFINICION DE PARAMETROS DE LA SIMULACION
- Parámetros de energía
- set val(engmodel) EnergyModel
- Consumo de potencia en transmisión en mW
- set val(txPower) 1.4
- Consumo de potencia en recepción en mW
- set val(rxPower) 0.9
- Sensitividad en mW
- set val(sensePower) 0.00000175
- Consumo de potencia cuando no esta transmitiendo
ni recibiendo en mW - set val(idlePower) 0.0
- Energía inicial en las baterías en Joules
- set val(initeng) 75
46DEFINICION DE PARAMETROS DE LA SIMULACION
- A continuación definimos las características de
la antena que queremos añadir a cada nodo. Estos
valores en concreto pertenecen a una tarjeta
Lucent Orinoco. - Phy/WirelessPhy set CPThresh_ 10.0
- Phy/WirelessPhy set CSThresh_ 5.011872e-12
- Phy/WirelessPhy set RXThresh_ 1.02054e-10
- Phy/WirelessPhy set Rb_ 111e6
- Phy/WirelessPhy set Pt_ 0.031622777
- Phy/WirelessPhy set freq_ 2.472e9
- Phy/WirelessPhy set L_ 1.0
47DEFINICION DE PARAMETROS DE LA SIMULACION
- Por último en cuanto a configuración de
parámetros establecemos el - ancho de banda a utilizar
- Ancho de banda de 11 Mbps
- Mac/802_11 set dataRate_ 11Mb
- Mac/802_11 set basicRate 11Mb
- Lo siguiente es crear una instancia del simulador
e indicar al simulador dónde - tiene que guardar los eventos de traza y del nam
respectivamente - set ns_ new Simulator
- set tracefd open basico1-out.tr w
- set namtrace open basico1-out.nam w
- ns_ trace-all tracefd
- ns_ namtrace-all-wireless namtrace val(x)
val(y)
48TOPOLOGIA
- A continuación, definimos la topología con las
constantes que hemos - declarado al principio del archivo, creamos el
objeto que va a simular - todos los eventos y le indicamos que vamos a usar
el nuevo formato de - traza
-
- set topo new Topography
- topo load_flatgrid val(x) val(y)
- create-god val(nn)
-
- Usamos el nuevo formato de traza
- ns_ use-newtrace
49NODOS
- A partir de aquí vamos a definir los nodos y su
configuración, como podemos ver creamos una - configuración y a continuación creamos 4 nodos
con esa configuración con un bucle for - Configuración de los nodos
- ns_ node-config -adhocRouting val(rp) \
- -llType val(ll) \
- -macType val(mac) \
- -ifqType val(ifq) \
- -ifqLen val(ifqlen) \
- -antType val(ant) \
- -propType val(prop) \
- -phyType val(netif) \
- -channelType val(chan) \
- -topoInstance topo \
- -agentTrace ON \
- -routerTrace ON \
- -macTrace OFF \
- -movementTrace ON \
- -energyModel val(engmodel)\
50NODOS
- for set i 0 i lt 4 incr i
- set node_(i) ns_ node
-
- habilitar movimiento aleatorio
- node_(i) random-motion 1
51NODO N(4)
- Si queremos crear una configuración distinta para
- un determinado nodo, se determinan los nuevos
- valores (en este ejemplo solo cambiamos la
- energía inicial del nodo) y definimos los nodos a
- continuación (en nuestro caso el quinto nodo que
- nos faltaba)
- ns_ node-config -initialEnergy 5
- set node_(4) ns_ node
- node_(4) random-motion 1
52ENTORNO
- Ya tenemos los nodos, ahora nos falta
posicionarlos en el entorno a simular, debemos - proporcionar las coordenadas iniciales x y z
para cada uno de los nodos creados - node_(0) set X_ 25.0
- node_(0) set Y_ 275.0
- node_(0) set Z_ 0.0
- node_(1) set X_ 250.0
- node_(1) set Y_ 300.0
- node_(1) set Z_ 0.0
- node_(2) set X_ 75.0
- node_(2) set Y_ 125.0
- node_(2) set Z_ 0.0
- node_(4) set X_ 125.0
- node_(4) set Y_ 375.0
- node_(4) set Z_ 0.0
- node_(3) set X_ 225.0
- node_(3) set Y_ 150.0
- node_(3) set Z_ 0. 0
53AGENTES
- Teniendo los nodos posicionados, configurados y
con las antenas configuradas solamente nos queda
generar tráfico para ver como se nos comporta
nuestro escenario. NS-2 denomina agentes a los
objetos encargados de generar tráfico (de muy
distinta índole) de uno a otro. - Para ello, creamos el agente y lo "adosamos" a
un nodo mientras que creamos otro agente y lo
"adosamos" al destino. Finalmente conectamos los
dos agentes para indicarles que el tráfico que
genera uno va a ir destinado al segundo - set tcp new Agent/TCP
- tcp set class_ 2
- set sink new Agent/TCPSink
- ns_ attach-agent node_(0) tcp
- ns_ attach-agent node_(1) sink
- ns_ connect tcp sink
54TRAFICO
- Estos agentes siguen la pila de protocolos, es
decir, si quieres crear un agente ftp sobre tcp,
debes crear primero el agente tcp y luego asociar
el agente ftp a dicho agente tcp. - A continuación le indicamos al dicho agente el
tiempo en el cual debe generar tráfico mediante
el comando start y stop - set ftp new Application/FTP
- ftp attach-agent tcp
- ns_ at 1.0 "ftp start"
- ns_ at 4.0 "ftp stop"
- ns_ at 20.0 "ftp start"
- ns_ at 28.0 "ftp stop"
55VISUALIZACION
- Un aspecto interesante si queremos visualizar la
simulación en el nam es indicarle el tamaño de
dichos nodos en la representación gráfica - for set i 0 i lt val(nn) incr i
- 20 define el tamaño del nodo en NAM y se
debe - ajustar al escenario. Esta función se debe
llamar - después de que la movilidad del nodo se
halla - definido
- ns_ initial_node_pos node_(i) 20
56PROGRAMACION EVENTOS
- Como penúltimo paso indicamos cuando se debe
detener la simulación tanto al propio - simulador como a los nodos.
-
- for set i 0 i lt val(nn) incr i
- ns_ at 25.0 "node_(i) reset"
-
- ns_ at 35.0 "stop"
-
- proc stop
- global ns_ tracefd
- ns_ flush-trace
- close tracefd
-
- Para finalizar, comenzamos la simulación
- puts "Iniciando Simulación..."
- ns_ run
57Ejercicio 8
- Grafique el trafico en el nodo 1