• No se han encontrado resultados

SCRIPTS TCL

In document JUAN FAUSTO PUENTES BENÍTEZ (página 189-192)

TABLA DE CONTENIDO

4. SCRIPTS TCL

En este capítulo se detallan los aspectos de configuración de los escenarios a través de los scripts Tcl, exceptuando los más básicos que se refieren a la configuración del nodo, pues se asume que el lector tiene un conocimiento mínimo de la herramienta de simulación Network Simulator.

Los parámetros de la Capa MAC implementada que se fijan desde los scripts Tcl se explican a continuación:

num_users_ Número de usuarios de la topología a simular. num_codes_ Número de códigos disponibles en la interfaz. slots_per_frame_ Número de slots de tiempo por cada trama. slot_packet_len_ Longitud en bytes de la capacidad del slot. info_macwll_len_ Número de bytes de cabecera en cada slot.

slot_time_ Duración en segundos del slot.

lim_buffer_GB_ Tamaño en bytes de cola GB. Igual para todos los RT’s. lim_buffer_BE_ Tamaño en bytes de cola BE. Igual para todos los RT’s.

algoritmo Algoritmo MAC. 1:GB y 2:GB+BE

filling Método de llenado de la matriz TC. 0:Columnas y 1:Filas

error_rate_ Tasa de Error de Fragmentos.

B_ Duración máxima de la ráfaga.

verbose_ 1:Para generar mensajes en shell y 0:Para no generar.

stop_time_ Tiempo de simulación.

Los parámetros de la Capa LL implementada que se fijan desde los scripts Tcl se explican seguidamente:

slot_packet_len_ Igual capa MAC. Para fijar el tamaño de fragmentación. info_macwll_len_ Igual capa MAC. Para fijar el tamaño de fragmentación. slot_time_ Igual capa MAC. Para fijar el tamaño de fragmentación.

stop_time_ Tiempo de simulación.

arch_delay_ 1:Para generar archivos de trazas y 0:Para no generar. llverbose_ 1:Para generar mensajes en shell y 0:Para no generar.

Como se muestra a continuación se utilizan variables creadas en Tcl para facilitar el manejo de los parámetros de las capas.

# Variables para la configuración de las capas MAC y LL:

set num_users 6 ;# Número total de usuarios WLL + 1 (BS).

set num_codes 384 ;# Número de códigos disponibles.

set slots_per_frame 3 ;# Slots por trama.

set slot_packet_len 65 ;# Tamaño en bytes de un Slot (MAC-PDU WLL). set info_macwll_len 12 ;# Tamaño en bytes de info MAC-WLL.

set slot_time 1.426e-3 ;# Duración de un Slot en segundos. set lim_buffer_GB 100000 ;# Tamaño buffer GB (Bytes).

set lim_buffer_BE 100000 ;# Tamaño buffer BE (Bytes).

set algoritmo 1 ;# 1:GB 2:GB-BE

set filling 1 ;# 0:Horizontal 1:Vertical

set error_rate 100000;# Tasa de error UL: 10-5.

set B 10e-3 ;# Duración máxima permitida ráfaga GB (s).

# ================================================================= # Configuración de las capas MAC y LL para la BS y los nodos WLL:

Mac/WLL set num_users_ $num_users

Mac/WLL set num_codes_ $num_codes

Mac/WLL set slots_per_frame_ $slots_per_frame Mac/WLL set slot_packet_len_ $slot_packet_len Mac/WLL set info_macwll_len_ $info_macwll_len

Mac/WLL set slot_time_ $slot_time

Mac/WLL set lim_buffer_GB_ $lim_buffer_GB Mac/WLL set lim_buffer_BE_ $lim_buffer_BE

Mac/WLL set algoritmo $algoritmo

Mac/WLL set filling $filling

Mac/WLL set error_rate_ $error_rate

Mac/WLL set B_ $B

Mac/WLL set verbose_ 1

Mac/WLL set stop_time_ $opt(stop)

LL set slot_packet_len_ $slot_packet_len

LL set info_macwll_len_ $info_macwll_len

LL set slot_time_ $slot_time

LL set stop_time_ $opt(stop)

LL set arch_delay_ 1

LL set llverbose_ 1

Se definen tres arreglos en Tcl, uno para fijar el direccionamiento jerárquico de la topología (requerido para simulaciones inalámbricas), los otros para fijar los valores de los pesos negociados por cada terminal de usuario para sus flujos GB y BE, como se muestra acontinuación (en este caso todos los pesos BE son cero):

# Arreglo para fijar las direcciones de los nodos. set temp {0.0.0 0.0.1 0.0.2 0.0.3 0.0.4 0.0.5}

# Arreglos para fijar pesos GB y BE de cada usuario. set gbpesos {164.321 164.321 164.321 164.321 164.321} set bepesos {0.0 0.0 0.0 0.0 0.0}

Para la creación de los nodos de usuario (nodos inalámbricos) vinculados a la estación base, primero se deshabilita la opción para enrutamiento cableado, luego se crean con la dirección correspondiente (dada por el arreglo de direcciones de arriba), se adicionan a la estación base y después se fijan los respectivos pesos (GB y BE, con los arreglos anteriores). Finalmente se deshabilita la opción de movimiento, pues se trata de una topología inalámbrica fija.

#creación de los nodos de usuario en el dominio de la BS. $ns_ node-config -wiredRouting OFF

for {set i 0} {$i < $opt(nn)} {incr i} {

set node_($i) [$ns_ node [lindex $temp [expr $i+1]]]

$node_($i) base-station [AddrParams addr2id [$BS(0) node-addr]] $node_($i) peso-gb [lindex $gbpesos [expr $i]]

$node_($i) peso-be [lindex $bepesos [expr $i]]

# Desabilitando el movimiento de los nodos de usuario. $node_($i) random-motion 0

}

Los agentes generadores de tráfico se configuran como normalmente se hace en cualquier escenario en ns-2. Como se muestra en las líneas siguientes, primero se crean los agentes (fuentes y sumideros) vinculados a la estación base (sumideros) y a los terminales de usuario (fuentes), con los parámetros apropiados, esto es, tamaño de paquete y tipo de flujo (GB o BE). Luego se vincula la fuente y el sumidero de cada nodo. Una vez se tengan establecidos los agentes se montan las aplicaciones o generadores de tráfico propiamente dichos, como los explicados en el capítulo anterior. Igualmente se fijan los valores de los parámetros respectivos de cada generador y el tiempo de inicio.

# Configuración de las aplicaciones (fuentes de tráfico): for {set j 0} {$j < $opt(nn)} {incr j} {

set s1($j) [new Agent/UDP] ; # Fuente

$ns_ attach-agent $node_($j) $s1($j) ; # Vinculación al nodo $s1($j) set packetSize_ 1024

$s1($j) set fid_ 1 ; # 1:Flujo GB y 0:Flujo BE

set null1($j) [new Agent/UDP] ; # Sumidero $ns_ attach-agent $BS(0) $null1($j)

$ns_ connect $s1($j) $null1($j) ; # Vinculación fuente-sumidero

set exp2($j) [new Application/Traffic/FuenteWLL] ; # Generador $exp2($j) set On_time_ 0.032 ; # |

$exp2($j) set Off_time_ 0.032 ; # |Parámetros del generador $exp2($j) set rate_ 11202200 ; # |

$exp2($j) attach-agent $s1($j) ; # Montaje del generador de carga $ns_ at opt(start) "$exp2($j) start"; # Tiempo de inicio

set s3($j) [new Agent/UDP] ; # Fuente

$ns_ attach-agent $node_($j) $s3($j) ; # Vinculación al nodo $s3($j) set packetSize_ 1024

$s3($j) set fid_ 0; # 1:Flujo GB y 0:Flujo BE

set null3($j) [new Agent/UDP] ; # Sumidero $ns_ attach-agent $BS(0) $null3($j)

set exp3($j) [new Application/Traffic/FteExpWLL] ; # Generador $exp3($j) set rate_ 2800560; # |Parámetro del generador

$exp3($j) attach-agent $s3($j) ; # Montaje del generador de carga $ns_ at opt(start) "$exp3($j) start"; # Tiempo de inicio

}

Para el caso de un generador de trazas MPEG la configuración es como se indica abajo. Primero se crea un objeto Tracefile al cual se vincula el nombre de un archivo de trazas

MPEG, luego se crea el par fuente-sumidero (como se explicó arriba) y finalmente se vincula el generador MPEG configuándose el parámetro frames_per_sec_ y fijando el

correspondiente objeto Tracefile.

#Definición de los archivos de Trazas de Video. set asterix_ [new Tracefile]

$asterix_ filename asterix_.IPB; # Archivo de trazas MPEG

set bond [new Tracefile]

$bond filename bond.IPB; # Archivo de trazas MPEG

set udp($j) [new Agent/UDP] ; # Fuente $ns_ attach-agent $node_($j) $udp($j)

$udp($j) set fid_ 1; # 1:Flujo GB y 0:Flujo BE

$udp($j) set packetSize_ 228; #Tamaño máximo de paquete MPEG

set null($j) [new Agent/UDP] ; # Sumidero $ns_ attach-agent $BS(0) $null($j)

$ns_ connect $udp($j) $null($j) ; # Vinculación fuente-sumidero

#Fuentes de tráfico (Trazas de Video.

set vdo(1) [new Application/Traffic/Trace] ; # Generador MPEG

$vdo(1) attach-tracefile $asterix_; # Vinculación del objeto TraceFile $vdo(1) set frames_per_sec_ 25; # |Parámetro del generador

$vdo(1) attach-agent $udp(0) ; # Montaje del generador

set vdo(2) [new Application/Traffic/Trace] ; # Generador MPEG $vdo(2) attach-tracefile $bond; # Vinculación del objeto TraceFile $vdo(2) set frames_per_sec_ 25; # |Parámetro del generador

$vdo(2) attach-agent $udp(0) ; # Montaje del generador

In document JUAN FAUSTO PUENTES BENÍTEZ (página 189-192)