Hi all,

  I have a problem to compute instant free space in a RED queue. I'm making
a simulation for a ethernet lan using optical like physical layer. I've 5
nodes in my network and I want to visualize instant free space in queue
between nodes 1 and lannode.

My script is below


#### Simulate an Ethernet LAN ####


###################################
##### DEFINITION DES VARABLES #####
###################################

set    opt(chan)         Channel                 ;# channel type
set    opt(mac)          Mac/802_3             ;# MAC type
set    opt(bw)            50Mb                     ;# Nominal link bandwidth
set     opt(delay)       0.0005ms               ;# Nominal link delay
set    opt(ifq)             RED                      ;# interface queue type
set    opt(ll)               LL                          ;# link layer type
set    opt(ifqlen)        1500                      ;# max packet in ifq
set    opt(node)          5                           ;# number of nodes
set    opt(seed)          0.0                         ;# seed for random
number gen.
set    opt(stop)          200                        ;# time to stop
simulation


############  MAIN  ###############

#Create a simulator object
set ns [new Simulator]

##### Open the nam trace file #####
set nf [open flux_tcp.nam w]
$ns namtrace-all $nf
set tr [open flux_tcp.tr w]
$ns trace-all $tr
set qt [open qt.tr w]


###################################
#### create topography object #####
###################################


proc create-topology {} {
    global ns opt ifq
    global lan node

    set num $opt(node)
    for {set i 1} {$i <= $num} {incr i} {
        set node($i) [$ns node]
        lappend nodelist $node($i)

    }



# This really specifies how the LAN should look like.

set lan [$ns newLan $nodelist $opt(bw) $opt(delay) \
        -llType $opt(ll) -ifqType $opt(ifq) -ifqLen $opt(ifqlen) \
        -macType $opt(mac) -chanType $opt(chan) \
        -phyType Phy/WiredPhy -mactrace true]
}


##### End-of-create-Topology ######

#######  'finish' procedure #######

proc finish {} {
        global ns tr nf qt ifq
        $ns flush-trace
        #Close the NAM trace file
        close $tr
        #Execute NAM on the trace file
    close $qt
        exec nam flux_tcp.nam &
        exit 0
}

proc record {} {
    global opt ns qt ifq lan
    set redq [[$ns link $node(1) $lan] queue]
    $redq trace curq_
    $redq trace ave_
    $redq attach $qt
    puts $qt "[$ns now] $queutail "
    $ns at [expr [$ns now] + 0.1] "record"
}
##Run the 'create topology' function##
create-topology

############## S1 ################
set tcp(1) [new Agent/TCP]
$tcp(1) set fid_ 1
$tcp(1) set window_ 100
$ns attach-agent $node(1) $tcp(1)

$tcp(1) set packetSize_ 1024
set ftp(1) [new Application/FTP]
$ftp(1) attach-agent $tcp(1)


############## S4################
set sink(4) [new Agent/TCPSink]
$ns attach-agent $node(4) $sink(4)


##################################
############# color ##############
##################################

$ns color 1 Green


##################################
######### ************ ###########
##################################

$ns connect $tcp(1) $sink(4)

$ns at 5.0 "$ftp(1) start"

$ns at 182.0 "$ftp(1) stop"

$ns at 190.0 "ns detach-agent $node(1) $tcp(1)"

$ns at 190.0 "$ns detach-agent $node(4) $sink(4)"

$ns at $opt(stop).0001 "finish"

#######  Finish Procedure  ########

#
# begin simulation
#
$ns at 0.1 "record "
puts "Starting Simulation..."
puts "Nombre de noeud dans le réseau : $opt(node)"
puts "... in progress "
$ns run

Reply via email to