SIMULACION DE REDES DE TELECOMUNICACIONES CON NS2 2 PARTE - PowerPoint PPT Presentation

1 / 57
About This Presentation
Title:

SIMULACION DE REDES DE TELECOMUNICACIONES CON NS2 2 PARTE

Description:

Tipo de antena. set val(ant) Antenna/OmniAntenna ; #Maximo numero ... A continuaci n definimos las caracter sticas de la antena que queremos a adir a cada nodo. ... – PowerPoint PPT presentation

Number of Views:544
Avg rating:3.0/5.0
Slides: 58
Provided by: Ange412
Category:

less

Transcript and Presenter's Notes

Title: SIMULACION DE REDES DE TELECOMUNICACIONES CON NS2 2 PARTE


1
SIMULACION DE REDES DE TELECOMUNICACIONES CON
NS-22 PARTE
  • FRANKLIN ALBERTO RENGIFO
  • UNIVERSIDAD NACIONAL DE COLOMBIA

2
DINAMICA DE LA RED
  • En este capitulo se mostrará como ajustar el
    enrutamiento cuando ocurra un fallo en el enlace.

3
TOPOLOGIA 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

4
LOS 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

5
LOS 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"

6
FALLA 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)

7
FALLA 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

8
EJEMPLO 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

9
EJEMPLO 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

10
EJEMPLO 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

11
EJERCICIO 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?

12
FORMATOS DE LOS ARCHIVOS DE SALIDA DE LA
SIMULACION
  • FORMATOS DE TRAZA NORMALES

13
INFORMACION ADICIONAL
14
EJEMPLO
  • 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

15
EJEMPLO
  • 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

16
EJEMPLO
  • 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

17
EJEMPLO
  • 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

18
EJEMPLO
  • 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

19
EJEMPLO
  • 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

20
RESULTADOS 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

21
RESULTADOS 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

22
RESULTADOS 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
  • .
  • .
  • .

23
FORMATO 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.

24
FORMATO BASICO DE TRAZA PARA REDES WIRELESS
25
Ejercicio 6
  • Modifique el ejemplo-5 para que genere la traza
    de ns y analice los resultados.

26
VISUALIZAR 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'.

27
TIPOS 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

28
La función de densidad de probabilidad de la
distribución Exponencial
La función de distribución de probabilidad
29
TIPOS 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

30
TIPOS 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

31
TIPOS 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.

32
TOPOLOGIA DEL EJEMPLO
33
TOPOLOGIA 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

34
TRAFICO 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

35
AGENTE 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.

36
AGENTES
  • 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

37
ARCHIVOS
  • 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

38
PROCEDIMIENTO 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_

39
PROCEDIMIENTO 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"

40
PROGRAMAR 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

41
VISUALIZACION
42
SIMULACION DE UNA RED WIRELESS AD HOC (MANET)
  • UNA RED AD-HOC ES UNA RED CON NODOS MOVILES CUYA
    TOPOLOGIA CAMBIA DINAMICAMENTE.

43
DEFINICION 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

44
DEFINICION 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

45
DEFINICION 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

46
DEFINICION 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

47
DEFINICION 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)

48
TOPOLOGIA
  • 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

49
NODOS
  • 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)\

50
NODOS
  • for set i 0 i lt 4 incr i
  • set node_(i) ns_ node
  • habilitar movimiento aleatorio
  • node_(i) random-motion 1

51
NODO 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

52
ENTORNO
  • 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

53
AGENTES
  • 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

54
TRAFICO
  • 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"

55
VISUALIZACION
  • 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

56
PROGRAMACION 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

57
Ejercicio 8
  • Grafique el trafico en el nodo 1
Write a Comment
User Comments (0)
About PowerShow.com