📄 test-suite-energy.tcl
字号:
# -*- Mode:tcl; tcl-indent-level:8; tab-width:8; indent-tabs-mode:t -*-
Agent/TCP set tcpTick_ 0.1
# The default for tcpTick_ is being changed to reflect a changing reality.
Agent/TCP set rfc2988_ false
# The default for rfc2988_ is being changed to true.
# FOR UPDATING GLOBAL DEFAULTS:
Agent/TCP set precisionReduce_ false ; # default changed on 2006/1/24.Agent/TCP set rtxcur_init_ 6.0 ; # Default changed on 2006/01/21Agent/TCP set updated_rttvar_ false ; # Variable added on 2006/1/21Agent/TCP set minrto_ 1
# default changed on 10/14/2004.
Agent/TCP set useHeaders_ false
# The default is being changed to useHeaders_ true.
Agent/TCP set windowInit_ 1
# The default is being changed to 2.
Agent/TCP set singledup_ 0
# The default is being changed to 1
Mac/802_11 set bugFix_timer_ false; # default changed 2006/1/30#
# Copyright (c) 1998 University of Southern California.
# All rights reserved.
#
# Redistribution and use in source and binary forms are permitted
# provided that the above copyright notice and this paragraph are
# duplicated in all such forms and that any documentation, advertising
# materials, and other materials related to such distribution and use
# acknowledge that the software was developed by the University of
# Southern California, Information Sciences Institute. The name of the
# University may not be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
# $Header: /cvsroot/nsnam/ns-2/tcl/test/test-suite-energy.tcl,v 1.15 2006/01/30 21:27:52 mweigle Exp $
# To run all tests: test-all-energy
# to run individual test:
# ns test-suite-energy.tcl dsdv
# ns test-suite-energy.tcl dsr
# ns test-suite-energy.tcl aodv
# ns test-suite-energy.tcl brdcast0
# To view a list of available test to run with this script:
# ns test-suite-energy.tcl
# ======================================================================
# Define options
# ======================================================================
global opt
set opt(chan) Channel/WirelessChannel
set opt(prop) Propagation/TwoRayGround
set opt(netif) Phy/WirelessPhy
set opt(mac) Mac/802_11
set opt(ifq) Queue/DropTail/PriQueue
set opt(ll) LL
set opt(ant) Antenna/OmniAntenna
set opt(x) 670 ;# X dimension of the topography
set opt(y) 670 ;# Y dimension of the topography
set opt(cp) "cbr.tcl"
set opt(sc) "mobility.tcl"
set opt(ifqlen) 50 ;# max packet in ifq
set opt(nn) 5 ;# number of nodes
set opt(seed) 0.0
set opt(stop) 500.0 ;# simulation time
set opt(stop-newf) 700.0 ;# extended run time for new feature simulations
set opt(tr) estudy.tr ;# trace file
set opt(nam) temp.rands
set opt(lm) "off" ;# log movement
set opt(energymodel) EnergyModel ;
set opt(initialenergy) 0.455 ;# Initial energy in Joules
# ======================================================================
# needs to be fixed later
set AgentTrace ON
set RouterTrace ON
set MacTrace OFF
LL set mindelay_ 50us
LL set delay_ 25us
LL set bandwidth_ 0 ;# not used
Agent/Null set sport_ 0
Agent/Null set dport_ 0
Agent/CBR set sport_ 0
Agent/CBR set dport_ 0
Agent/TCPSink set sport_ 0
Agent/TCPSink set dport_ 0
Agent/TCP set sport_ 0
Agent/TCP set dport_ 0
Agent/TCP set packetSize_ 1460
Queue/DropTail/PriQueue set Prefer_Routing_Protocols 1
# unity gain, omni-directional antennas
# set up the antennas to be centered in the node and 1.5 meters above it
Antenna/OmniAntenna set X_ 0
Antenna/OmniAntenna set Y_ 0
Antenna/OmniAntenna set Z_ 1.5
Antenna/OmniAntenna set Gt_ 1.0
Antenna/OmniAntenna set Gr_ 1.0
# Initialize the SharedMedia interface with parameters to make
# it work like the 914MHz Lucent WaveLAN DSSS radio interface
Phy/WirelessPhy set CPThresh_ 10.0
Phy/WirelessPhy set CSThresh_ 1.559e-11
Phy/WirelessPhy set RXThresh_ 3.652e-10
Phy/WirelessPhy set Rb_ 2*1e6
Phy/WirelessPhy set Pt_ 0.2818
Phy/WirelessPhy set freq_ 914e+6
Phy/WirelessPhy set L_ 1.0
# ======================================================================
proc usage {} {
global argv0
puts stderr "usage: ns $argv0 <tests> "
puts "Valid <tests> : dsdv dsr aodv brdcast0"
exit 1
}
proc getopt {argc argv} {
global opt
lappend optlist cp nn seed sc stop tr x y
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 opt($name) [lindex $argv [expr $i+1]]
}
}
Class TestSuite
Class Test/brdcast0 -superclass TestSuite
# 2 nodes brdcast req/replies to one another
#This is a test for setting newly added features RADIO SLEEP MODE, Transition Energy Consumption, detailed energy trace
Class Test/dsdv -superclass TestSuite
Class Test/dsr -superclass TestSuite
Class Test/aodv -superclass TestSuite
TestSuite instproc init {} {
global opt
$self instvar ns_ topo
set ns_ [new Simulator]
set topo [new Topography]
set god_ [new God]
set tracefd [open $opt(tr) w]
set namtrace [open $opt(nam) w]
$topo load_flatgrid $opt(x) $opt(y)
$ns_ trace-all $tracefd
$ns_ namtrace-all-wireless $namtrace $opt(x) $opt(y)
create-god $opt(nn)
}
TestSuite instproc finish {} {
$self instvar ns_
global quiet
$ns_ flush-trace
if { !$quiet } {
puts "running nam..."
exec nam temp.rands &
}
exit 0
}
Test/brdcast0 instproc init {} {
global opt
#node_
# $self instvar ns_ topo
# set opt(chan) Channel/WirelessChannel ;# channel type
# set opt(prop) Propagation/TwoRayGround ;# radio-propagation model
# set opt(netif) Phy/WirelessPhy ;# network interface type
set opt(mac) Mac/SMAC ;# MAC type
#set opt(mac) Mac/802_11 ;# MAC type
# set opt(ifq) Queue/DropTail/PriQueue ;# interface queue type
set opt(ll) LL ;# link layer type
# set opt(ant) Antenna/OmniAntenna ;# antenna model
# set opt(ifqlen) 50 ;# max packet in ifq
set opt(x) 800
set opt(y) 800
set opt(rp) DumbAgent ;# routing protocol
set opt(tr) temp.rands
# set opt(stop) 5.0
# set opt(stop-sync) 100.0 ;# extended run time for sync simulations
set opt(stop) 700.0 ;# extended run time for new feature simulations
set opt(seed) 1
# set opt(iP) 1.0 ;# IDLE Power
# set opt(sP) 1.0 ;# SLEEP Power
# set opt(tP) 1.0 ;# TRANS Power
# set opt(rP) 1.0 ;# RECV Power
# set opt(transT) 0.5 ;# TRANSITION Time
# set opt(transP) 0.5 ;# TRANSITION Power
set opt(initialenergy) 1000 ;# Initial energy in Joules
# set opt(energymodel) EnergyModel ;
set testname_ brdcast0
set opt(nn) 2
create-god $opt(nn)
# $self next
}
Test/brdcast0 instproc run {} {
global opt
$self instvar ns_ topo
# $self instvar ns_
set ns_ [new Simulator]
puts "Seeding Random number generator with $opt(seed)\n"
ns-random $opt(seed)
set tracefd_ [open $opt(tr) w]
$ns_ trace-all $tracefd_
set topo_ [new Topography]
$topo_ load_flatgrid $opt(x) $opt(y)
$ns_ node-config -adhocRouting DumbAgent \
-llType $opt(ll) \
-macType Mac/SMAC \
-ifqType $opt(ifq) \
-ifqLen $opt(ifqlen) \
-antType $opt(ant) \
-propType $opt(prop) \
-phyType $opt(netif) \
-channelType $opt(chan) \
-topoInstance $topo_ \
-agentTrace ON \
-routerTrace ON \
-macTrace ON \
-energyModel $opt(energymodel) \
-idlePower 1.0 \
-rxPower 1.0 \
-txPower 2.0 \
-sleepPower 0.001 \
-transitionPower 0.2 \
-transitionTime 0.005 \
-initialEnergy $opt(initialenergy)
Mac/SMAC set syncFlag_ 1
Mac/SMAC set dutyCycle_ 10
$ns_ set WirelessNewTrace_ ON
for {set i 0} {$i < $opt(nn) } {incr i} {
set node_($i) [$ns_ node]
$node_($i) random-motion 0 ;# disable random motion
}
set udp_(0) [new Agent/UDP]
$ns_ attach-agent $node_(0) $udp_(0)
set null_(0) [new Agent/Null]
$ns_ attach-agent $node_(1) $null_(0)
set cbr_(0) [new Application/Traffic/CBR]
$cbr_(0) set packetSize_ 512
$cbr_(0) set interval_ 10.0
$cbr_(0) set random_ 1
$cbr_(0) set maxpkts_ 50000
$cbr_(0) attach-agent $udp_(0)
$ns_ connect $udp_(0) $null_(0)
$ns_ at 1.00 "$cbr_(0) start"
# $ns_ at 1.0 "$ping1 start-WL-brdcast"
#
# Tell all the nodes when the simulation ends
#
for {set i 0} {$i < $opt(nn) } {incr i} {
$ns_ at $opt(stop) "$node_($i) reset";
}
$ns_ at $opt(stop) "puts \"NS EXITING...!!!\" ; $ns_ halt"
$ns_ run
}
Test/dsdv instproc init {} {
global opt
$self instvar ns_ topo
set opt(rp) DSDV
$self next
}
Test/dsdv instproc run {} {
global opt
$self instvar ns_ topo
$ns_ node-config -adhocRouting $opt(rp) \
-llType $opt(ll) \
-macType $opt(mac) \
-ifqType $opt(ifq) \
-ifqLen $opt(ifqlen) \
-antType $opt(ant) \
-propType $opt(prop) \
-phyType $opt(netif) \
-channel [new $opt(chan)] \
-topoInstance $topo \
-energyModel $opt(energymodel) \
-macTrace ON \
-rxPower 0.3 \
-txPower 0.6 \
-initialEnergy $opt(initialenergy)
for {set i 0} {$i < $opt(nn) } {incr i} {
set node_($i) [$ns_ node]
$node_($i) random-motion 0 ;# disable random motion
}
#
# Source the Connection and Movement scripts
#
if { $opt(cp) == "" } {
puts "*** NOTE: no connection pattern specified."
set opt(cp) "none"
} else {
puts "Loading connection pattern..."
source $opt(cp)
}
#
# Tell all the nodes when the simulation ends
#
for {set i 0} {$i < $opt(nn) } {incr i} {
$ns_ at $opt(stop).000000001 "$node_($i) reset";
}
$ns_ at $opt(stop).00000001 "puts \"NS EXITING...\" ; $ns_ halt"
if { $opt(sc) == "" } {
puts "*** NOTE: no scenario file specified."
set opt(sc) "none"
} else {
puts "Loading scenario file..."
source $opt(sc)
puts "Load complete..."
}
# Define node initial position in nam
for {set i 0} {$i < $opt(nn)} {incr i} {
# 20 defines the node size in nam, must adjust it according to your scenario
# The function must be called after mobility model is defined
$ns_ initial_node_pos $node_($i) 20
}
$ns_ run
}
Test/dsr instproc init {} {
global opt
$self instvar ns_ topo
set opt(rp) DSR
set opt(ifq) CMUPriQueue
$self next
}
Test/dsr instproc run {} {
global opt
$self instvar ns_ topo
$ns_ node-config -adhocRouting $opt(rp) \
-llType $opt(ll) \
-macType $opt(mac) \
-ifqType $opt(ifq) \
-ifqLen $opt(ifqlen) \
-antType $opt(ant) \
-propType $opt(prop) \
-phyType $opt(netif) \
-channel [new $opt(chan)] \
-topoInstance $topo \
-energyModel $opt(energymodel) \
-macTrace ON \
-rxPower 0.3 \
-txPower 0.6 \
-initialEnergy $opt(initialenergy)
for {set i 0} {$i < $opt(nn) } {incr i} {
set node_($i) [$ns_ node]
$node_($i) random-motion 0 ;# disable random motion
}
#
# Source the Connection and Movement scripts
#
if { $opt(cp) == "" } {
puts "*** NOTE: no connection pattern specified."
set opt(cp) "none"
} else {
puts "Loading connection pattern..."
source $opt(cp)
}
#
# Tell all the nodes when the simulation ends
#
for {set i 0} {$i < $opt(nn) } {incr i} {
$ns_ at $opt(stop).000000001 "$node_($i) reset";
}
$ns_ at $opt(stop).00000001 "puts \"NS EXITING...\" ; $ns_ halt"
if { $opt(sc) == "" } {
puts "*** NOTE: no scenario file specified."
set opt(sc) "none"
} else {
puts "Loading scenario file..."
source $opt(sc)
puts "Load complete..."
}
# Define node initial position in nam
for {set i 0} {$i < $opt(nn)} {incr i} {
# 20 defines the node size in nam, must adjust it according to your scenario
# The function must be called after mobility model is defined
$ns_ initial_node_pos $node_($i) 20
}
$ns_ run
}
Test/aodv instproc init {} {
global opt
$self instvar ns_ topo
set opt(rp) AODV
$self next
}
Test/aodv instproc run {} {
global opt
$self instvar ns_ topo
$ns_ node-config -adhocRouting $opt(rp) \
-llType $opt(ll) \
-macType $opt(mac) \
-ifqType $opt(ifq) \
-ifqLen $opt(ifqlen) \
-antType $opt(ant) \
-propType $opt(prop) \
-phyType $opt(netif) \
-channel [new $opt(chan)] \
-topoInstance $topo \
-energyModel $opt(energymodel) \
-macTrace ON \
-rxPower 0.3 \
-txPower 0.6 \
-initialEnergy $opt(initialenergy)
for {set i 0} {$i < $opt(nn) } {incr i} {
set node_($i) [$ns_ node]
$node_($i) random-motion 0 ;# disable random motion
}
#
# Source the Connection and Movement scripts
#
if { $opt(cp) == "" } {
puts "*** NOTE: no connection pattern specified."
set opt(cp) "none"
} else {
puts "Loading connection pattern..."
source $opt(cp)
}
#
# Tell all the nodes when the simulation ends
#
for {set i 0} {$i < $opt(nn) } {incr i} {
$ns_ at $opt(stop).000000001 "$node_($i) reset";
}
$ns_ at $opt(stop).00000001 "puts \"NS EXITING...\" ; $ns_ halt"
if { $opt(sc) == "" } {
puts "*** NOTE: no scenario file specified."
set opt(sc) "none"
} else {
puts "Loading scenario file..."
source $opt(sc)
puts "Load complete..."
}
# Define node initial position in nam
for {set i 0} {$i < $opt(nn)} {incr i} {
# 20 defines the node size in nam, must adjust it according to your scenario
# The function must be called after mobility model is defined
$ns_ initial_node_pos $node_($i) 20
}
$ns_ run
}
proc runtest {arg} {
global quiet
set quiet 0
set b [llength $arg]
if {$b == 1} {
set test $arg
} elseif {$b == 2} {
set test [lindex $arg 0]
if {[lindex $arg 1] == "QUIET"} {
set quiet 1
}
} else {
usage
}
switch $test {
brdcast0 -
dsdv -
dsr -
aodv {
set t [new Test/$test]
}
default {
stderr "Unknown test $test"
exit 1
}
}
$t run
}
global argv arg0
runtest $argv
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -