Presentation is loading. Please wait.

Presentation is loading. Please wait.

Introduction to ns-2 Noun Choi Oct. 11, 2007.

Similar presentations


Presentation on theme: "Introduction to ns-2 Noun Choi Oct. 11, 2007."— Presentation transcript:

1 Introduction to ns-2 Noun Choi Oct. 11, 2007

2 Outline Background ns-2 Internals Short demo Troubleshooting
Reference links Q & A

3 History and Status UCB REAL network simulator
VINT from LBL, PARC, UCB, & USC ns-1 ns-2, currently maintained by USC/ISI 100K lines of C++ 70K lines of OTcl 30K lines of test suite 20K lines of documentation

4 Platforms Most UNIX and UNIX-like systems WINDOWS FreeBSD or *BSD
Linux Sun Solaris HP, SGI WINDOWS Under Cygwin

5 Components of ns-2 Tcl/TK: ns-2 is an extended Tcl interpreter
OTcl: Object Tcl TclCL: Tcl with classes library ns-2 nam-1: Network Animator xgraph: Plotting and Graphing And more….

6 Installation Latest version: 2.31 (Mar 10, 2007) Download ns-allinone
./install will configure, compile, & install Problem?

7 What is ns-2 Discrete-event driven network simulation Object Oriented
ns-2 is an extended Tcl (OTcl) interpreter ns-2 is written in C++ and OTcl OTcl = Tcl + OO C++ implements the code that executed frequently OTcl configures the system

8 Pros & Cons Free Almost all network components are implemented
Active contributions from researchers Easy to modify and/or add new functions Unreliable Real Object Oriented? Hard to troubleshoot Unrealistic abstraction

9 OTcl and C++: The Duality

10 Create Otcl shadow object
OTcl Linkage set tcp [new Agent/TCP] init Agent/TCP Agent Create Otcl shadow object TclObject Create C++ object constructor TclObject (C++) parent TcpAgent OTcl C++ static class TcpClass : public TclClass { public: TcpClass() : TclClass("Agent/TCP") {} TclObject* create(int, const char*const*) { return (new TcpAgent);} } class_tcp;

11 OTcl Linkage (II) Command() Otcl C++ $tcp advance 10
int Agent::command(int argc, const char*const* argv) { if (argc == 3) { if (strcmp(argv[1], “advance") == 0) { int newswq = atoi(argv[2]); return (TCL_OK); } return (Agent::command(argc, argv);

12 OTcl Linkage (III) bind(): link C++ member variables to Otcl object variables C++ TcpAgent::TcpAgent() { bind(“window_”, &wnd_); } // bind_time(), bind_bool(), bind_bw() Otcl $tcp set window_ 200 You must setting the initial values of variants in ~ns/tcl/lib/ns-default.tcl

13 OTcl Linkage (IV) Invoking Otcl procedure and obtaining its results
Tcl::instance().evalf("%s Lookup_CIP_RT %d", name(), iph->dst().addr_); nextHop = Tcl::instance().result(); Classifier/Addr/Cip instproc Lookup_CIP_RT { m_addr } { return … } Passing a results string to Otcl Tcl::instance().result(“………”) Buffer

14 How ns-2 works Register Event Event Queue Deque Scheduler Dispatch
Target object Event (Packet) Time Deque Scheduler Dispatch Dispatch Object B Object A

15 Source code in Scheduler.cc
void Scheduler::schedule(Handler* h, Event* e, double delay) { e->uid_ = uid_++; e->handler_ = h; double t = clock_ + delay; e->time_ = t; insert(e); } void Scheduler::run() { instance_ = this; Event *p; while (!halted_ && (p = deque())) { dispatch(p, p->time_); void Scheduler::dispatch(Event* p, double t) { clock_ = t; p->uid_ = -p->uid_; // being dispatched p->handler_->handle(p); // dispatch

16 An Example CBR CBR Sink Transport Transport Network Network LL LL
Scheduler IFQ IFQ MAC MAC NetIF NetIF Wireless Channel

17 Demonstration MobileNode Wireless Wired Wired BaseStation MobileNode

18 Demonstration (Contd.)
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/802_ ;# 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) ;# max packet in ifq set opt(adhocRouting) DSDV ;# routing protocol set opt(cp) "" ;# connection pattern file set opt(sc) "./scen/scen-3-test" ;# node movement file. set opt(x) ;# x coordinate of topology set opt(y) ;# y coordinate of topology set opt(seed) ;# seed for random number gen. set opt(stop) ;# time to stop simulation set opt(ftp1-start) set opt(ftp2-start) set num_wired_nodes set num_bs_nodes

19 Demonstration (Contd.)
# ================================================================ # accpet input parameter set opt(nn) [lindex $argv 0] set outfile_ [lindex $argv 1] # check for boundary parameters and random seed if { $opt(x) == 0 || $opt(y) == 0 } { puts "No X-Y boundary values given for wireless topology\n" } if {$opt(seed) > 0} { puts "Seeding Random number generator with $opt(seed)\n" ns-random $opt(seed)

20 Demonstration (Contd.)
# create simulator instance set ns_ [new Simulator] # set up for hierarchical routing $ns_ node-config -addressType hierarchical AddrParams set domain_num_ ;# number of domains lappend cluster_num ;# number of clusters in each domain AddrParams set cluster_num_ $cluster_num lappend eilastlevel ;# number of nodes in each cluster AddrParams set nodes_num_ $eilastlevel ;# of each domain set tracefd [open $outfile_.tr w] set namtrace [open $outfile_.nam w] $ns_ trace-all $tracefd $ns_ namtrace-all-wireless $namtrace $opt(x) $opt(y)

21 Demonstration (Contd.)
# Create topography object set topo [new Topography] # define topology $topo load_flatgrid $opt(x) $opt(y) # create God create-god [expr $opt(nn) + $num_bs_nodes] #create wired nodes set temp { } ;# hierarchical addresses for wired domain for {set i 0} {$i < $num_wired_nodes} {incr i} { set W($i) [$ns_ node [lindex $temp $i]] }

22 Demonstration (Contd.)
# configure for base-station node $ns_ node-config -adhocRouting $opt(adhocRouting) \ -llType $opt(ll) \ -macType $opt(mac) \ -ifqType $opt(ifq) \ -ifqLen $opt(ifqlen) \ -antType $opt(ant) \ -propType $opt(prop) \ -phyType $opt(netif) \ -channelType $opt(chan) \ -topoInstance $topo \ -wiredRouting ON \ -agentTrace OFF \ -routerTrace OFF \ -macTrace OFF #create base-station node set temp { } ;# hier address to be used for wireless ;# domain set BS(0) [$ns_ node [lindex $temp 0]] $BS(0) random-motion ;# disable random motion #provide some co-ord (fixed) to base station node $BS(0) set X_ 1.0 $BS(0) set Y_ 2.0 $BS(0) set Z_ 0.0

23 Demonstration (Contd.)
#configure for mobilenodes $ns_ node-config -wiredRouting OFF for {set j 0} {$j < $opt(nn)} {incr j} { set node_($j) [ $ns_ node [lindex $temp \ [expr $j+1]] ] $node_($j) base-station [AddrParams addr2id \ [$BS(0) node-addr]] } #create links between wired and BS nodes $ns_ duplex-link $W(0) $W(1) 5Mb 2ms DropTail $ns_ duplex-link $W(1) $BS(0) 5Mb 2ms DropTail $ns_ duplex-link-op $W(0) $W(1) orient down $ns_ duplex-link-op $W(1) $BS(0) orient left-down

24 Demonstration (Contd.)
# setup TCP connections set tcp1 [new Agent/TCP] $tcp1 set class_ 2 set sink1 [new Agent/TCPSink] $ns_ attach-agent $node_(0) $tcp1 $ns_ attach-agent $W(0) $sink1 $ns_ connect $tcp1 $sink1 set ftp1 [new Application/FTP] $ftp1 attach-agent $tcp1 $ns_ at $opt(ftp1-start) "$ftp1 start" set tcp2 [new Agent/TCP] $tcp2 set class_ 2 set sink2 [new Agent/TCPSink] $ns_ attach-agent $W(1) $tcp2 $ns_ attach-agent $node_(2) $sink2 $ns_ connect $tcp2 $sink2 set ftp2 [new Application/FTP] $ftp2 attach-agent $tcp2 $ns_ at $opt(ftp2-start) "$ftp2 start"

25 Demonstration (Contd.)
# Tell all nodes when the simulation ends for {set i } {$i < $opt(nn) } {incr i} { $ns_ at $opt(stop).0 "$node_($i) reset"; } $ns_ at $opt(stop).0 "$BS(0) reset"; $ns_ at $opt(stop).0002 "puts \"NS EXITING...\" ; $ns_ halt" $ns_ at $opt(stop).0001 "stop" proc stop {} { global ns_ tracefd namtrace # $ns_ flush-trace close $tracefd close $namtrace puts "Starting Simulation..." $ns_ run

26 Trace File Format Event Abbreviation Type Value Normal Event
r: Receive d: Drop e: Error +: Enque -: Deque %g %d %d %s %d %s %d %d.%d %d.%d %d %d double Time Int Source Node int Destination Node string Packet Name Packet Size Flags Flow ID Source Address Destination Address Sequence Number Unique Packet ID

27 Troubleshooting Problem while installing Program crashes
Compiler may complain Program crashes Use gdb Unexpected results Hidden problem Slice & dice the trace log

28 Reference Links http://www.isi.edu/nsnam/ns/ Manual & Tutorial
Mailing List Tcl OTcl tclCL


Download ppt "Introduction to ns-2 Noun Choi Oct. 11, 2007."

Similar presentations


Ads by Google