hi all,

I am new in NS2. Currently I am doing wireless simulation which consists of
4 nodes. 2 as the source nodes, 1 as a router, the other one as a sink node.
I want to simulate such that when the source nodes generate packets, the
packets will be queued in relay node  before they are sent to the sink
node.However,the problem is there is no packet received in node 2 .I wonder
what has caused this error.I have made sure that the relay node is located
pretty near to the source nodes, but still no packets received there.
Below is the code:
# =======================================================================
# PRIORITY-BASED DROPTAIL QUEUE SIMULATION#
# =======================================================================
# Scheme:
# -----------------------------------------------------------------------

#    n1(100,200,0)
#      \
#       n2(150,150,0) --- n3(500,150,0)
#      /
#    n0(100,100,0)
#
# ======================================================================
# Define options
# ======================================================================
set val(chan)           Channel/WirelessChannel    ;# channel type
set val(prop)           Propagation/TwoRayGround   ;# radio-propagation
model
set val(netif)          Phy/WirelessPhy            ;# network interface type
set val(mac)            Mac/802_11                 ;# MAC type
set val(ifq)            Queue/DropTail/PriQueue    ;# interface queue type
set val(ll)             LL                         ;# link layer type
set val(ant)            Antenna/OmniAntenna        ;# antenna model
set val(ifqlen)         10                        ;# max packet in ifq
set val(nn)             4                          ;# number of mobilenodes
set val(rp)             DSDV                       ;# routing protocol
set val(drate)            2.0e6                       ;# default datarate

# ======================================================================
# Main Program
# ======================================================================


proc getopt {argc argv} {
        global val
        lappend optlist drate

        for {set i 0} {$i < $argc} {incr i} {
                set arg [lindex $argv $i]
                if {[string range $arg 0 0] != "-"} continue

                set name [string range $arg 1 end]
                set val($name) [lindex $argv [expr $i+1]]
        }

}

getopt $argc $argv

# Initialize Global Variables
set ns_        [new Simulator]
set tracefd     [open fyp6.tr w]
#set tracefd0 [open fyp4_0.tr w]
#set tracefd1 [open fyp4_1.tr w]
#set cmt [cmu-trace Send "RTR" $tracefd]
$ns_ use-newtrace
$ns_ trace-all $tracefd

# set up topography object
set topo       [new Topography]
$topo load_flatgrid 500 500

# Create God
create-god $val(nn)

set data0 0
set data1 0

# Parameter values
$val(mac) set dataRate_ $val(drate)
#$val(mac) set bandwidth_ 22.0e6
#$val(netif) set Pt_ 0.28
$val(netif) set bandwidth_ 2.0e6


#  Create the specified number of mobilenodes [$val(nn)] and "attach" them
#  to the channel
#  Here 4 nodes are created : node(0),node(1), node(2)  and node(3)

# configure node
$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 OFF \
    -macTrace OFF \
    -movementTrace OFF

for {set i 0} {$i < $val(nn) } {incr i} {
    set node_($i) [$ns_ node]
    $node_($i) random-motion 0        ; # disable random motion
}

# Provide co-ordinates for mobilenodes
$node_(0) set X_ 100.0
$node_(0) set Y_ 100.0
$node_(0) set Z_ 0.0

$node_(1) set X_ 100.0
$node_(1) set Y_ 200.0
$node_(1) set Z_ 0.0

$node_(2) set X_ 150.0
$node_(2) set Y_ 150.0
$node_(2) set Z_ 0.0

$node_(3) set X_ 500.0
$node_(3) set Y_ 150.0
$node_(3) set Z_ 0.0


# Setup traffic flow between nodes
set tcp(0) [new Agent/TCP]
$tcp(0) set class_ 1
set sink(0) [new Agent/TCPSink]
$ns_ attach-agent $node_(0) $tcp(0)
$ns_ attach-agent $node_(3) $sink(0)
$ns_ connect $tcp(0) $sink(0)
set FTP(0) [new Application/FTP]
$FTP(0) attach-agent $tcp(0)
$ns_ at 3.0 "$FTP(0) start"

set tcp(1) [new Agent/TCP]
$tcp(1) set class_ 2
$tcp(1) set fid_ 1
set sink(1) [new Agent/TCPSink]
$ns_ attach-agent $node_(1) $tcp(1)
$ns_ attach-agent $node_(3) $sink(1)
$ns_ connect $tcp(1) $sink(1)
set FTP(1) [new Application/FTP]
$FTP(1) attach-agent $tcp(1)
$ns_ at 1.0 "$FTP(1) start"

$ns_ at 100.0 "$node_(0) reset"
$ns_ at 100.0 "$node_(1) reset"

$ns_ at 100.0 "stop"
$ns_ at 100.01 "puts \"NS EXITING...\" ; $ns_ halt"

proc stop {} {
    global ns_ tracefd


    # Get data from trace file, put current-time and calculated-throughput
in a new file (Kbps)
    set awkCode {
    {
    if ($1=="r" && $5=="3" && $39=="0" && $45=="tcp" )
    {
        data0=data0 + $37
        print $3, data0*8.0/$3/1000 >> "temp.q0";
    }
    else if ($1=="r" && $5=="3" && $39=="1" && $45=="tcp" )
    {
    data1=data1 + $37
    print $3, data1*8.0/$3/1000 >> "temp.q1";
    }
    }
    }
    set f [open temp.queue w]
    puts $f "TitleText : Priority-Scheduling "
    puts $f "Device: Postscript "
    #$ns_ flush-trace
    if {[info exists tracefd]} {
    close $tracefd
    }
    #close $tracefd
    exec rm -f temp.q0 temp.q1
    exec touch temp.q1 temp.q0
    exec awk $awkCode fyp6.tr
    puts $f \"priority=0
    exec cat temp.q0 >@ $f
    puts $f \n\"priority=1
    exec cat temp.q1 >@ $f
    close $f
    exec xgraph -x time -y queue temp.queue &
    exit 0
    }


puts "Starting Simulation..."
$ns_ run

Reply via email to