Introduction to ns-2 Noun Choi Oct. 11, 2007. Outline Background ns-2 Internals Short demo...
-
Upload
dorthy-dickerson -
Category
Documents
-
view
217 -
download
0
Transcript of Introduction to ns-2 Noun Choi Oct. 11, 2007. Outline Background ns-2 Internals Short demo...
![Page 1: Introduction to ns-2 Noun Choi Oct. 11, 2007. Outline Background ns-2 Internals Short demo Troubleshooting Reference links Q & A.](https://reader036.fdocuments.net/reader036/viewer/2022062407/56649e415503460f94b33154/html5/thumbnails/1.jpg)
Introduction to ns-2
Noun Choi
Oct. 11, 2007
![Page 2: Introduction to ns-2 Noun Choi Oct. 11, 2007. Outline Background ns-2 Internals Short demo Troubleshooting Reference links Q & A.](https://reader036.fdocuments.net/reader036/viewer/2022062407/56649e415503460f94b33154/html5/thumbnails/2.jpg)
Outline
• Background
• ns-2 Internals
• Short demo
• Troubleshooting
• Reference links
• Q & A
![Page 3: Introduction to ns-2 Noun Choi Oct. 11, 2007. Outline Background ns-2 Internals Short demo Troubleshooting Reference links Q & A.](https://reader036.fdocuments.net/reader036/viewer/2022062407/56649e415503460f94b33154/html5/thumbnails/3.jpg)
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
![Page 4: Introduction to ns-2 Noun Choi Oct. 11, 2007. Outline Background ns-2 Internals Short demo Troubleshooting Reference links Q & A.](https://reader036.fdocuments.net/reader036/viewer/2022062407/56649e415503460f94b33154/html5/thumbnails/4.jpg)
Platforms
• Most UNIX and UNIX-like systems
- FreeBSD or *BSD
- Linux
- Sun Solaris
- HP, SGI
• WINDOWS
– Under Cygwin
![Page 5: Introduction to ns-2 Noun Choi Oct. 11, 2007. Outline Background ns-2 Internals Short demo Troubleshooting Reference links Q & A.](https://reader036.fdocuments.net/reader036/viewer/2022062407/56649e415503460f94b33154/html5/thumbnails/5.jpg)
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….
![Page 6: Introduction to ns-2 Noun Choi Oct. 11, 2007. Outline Background ns-2 Internals Short demo Troubleshooting Reference links Q & A.](https://reader036.fdocuments.net/reader036/viewer/2022062407/56649e415503460f94b33154/html5/thumbnails/6.jpg)
Installation
• Latest version: 2.31 (Mar 10, 2007)
• Download ns-allinone – http://www.isi.edu/nsnam/ns/ns-build.html#allino
ne
• ./install will configure, compile, & install
• Problem?– http://www.isi.edu/nsnam/ns/ns-problems.html
![Page 7: Introduction to ns-2 Noun Choi Oct. 11, 2007. Outline Background ns-2 Internals Short demo Troubleshooting Reference links Q & A.](https://reader036.fdocuments.net/reader036/viewer/2022062407/56649e415503460f94b33154/html5/thumbnails/7.jpg)
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
![Page 8: Introduction to ns-2 Noun Choi Oct. 11, 2007. Outline Background ns-2 Internals Short demo Troubleshooting Reference links Q & A.](https://reader036.fdocuments.net/reader036/viewer/2022062407/56649e415503460f94b33154/html5/thumbnails/8.jpg)
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
![Page 9: Introduction to ns-2 Noun Choi Oct. 11, 2007. Outline Background ns-2 Internals Short demo Troubleshooting Reference links Q & A.](https://reader036.fdocuments.net/reader036/viewer/2022062407/56649e415503460f94b33154/html5/thumbnails/9.jpg)
OTcl and C++: The Duality
C++
otcl
![Page 10: Introduction to ns-2 Noun Choi Oct. 11, 2007. Outline Background ns-2 Internals Short demo Troubleshooting Reference links Q & A.](https://reader036.fdocuments.net/reader036/viewer/2022062407/56649e415503460f94b33154/html5/thumbnails/10.jpg)
OTcl Linkage
set tcp [new Agent/TCP]
init
Agent/TCP
init
Agent
Create Otcl shadow object
TclObject
Create C++ object
constructor
TclObject (C++)
constructor
parent
constructor
TcpAgent
OTcl
C++
static class TcpClass : public TclClass {
public:
TcpClass() : TclClass("Agent/TCP") {}
TclObject* create(int, const char*const*) {
return (new TcpAgent);}
} class_tcp;
![Page 11: Introduction to ns-2 Noun Choi Oct. 11, 2007. Outline Background ns-2 Internals Short demo Troubleshooting Reference links Q & A.](https://reader036.fdocuments.net/reader036/viewer/2022062407/56649e415503460f94b33154/html5/thumbnails/11.jpg)
OTcl Linkage (II)
Command()• Otcl$tcp advance 10
• C++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);}
![Page 12: Introduction to ns-2 Noun Choi Oct. 11, 2007. Outline Background ns-2 Internals Short demo Troubleshooting Reference links Q & A.](https://reader036.fdocuments.net/reader036/viewer/2022062407/56649e415503460f94b33154/html5/thumbnails/12.jpg)
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
![Page 13: Introduction to ns-2 Noun Choi Oct. 11, 2007. Outline Background ns-2 Internals Short demo Troubleshooting Reference links Q & A.](https://reader036.fdocuments.net/reader036/viewer/2022062407/56649e415503460f94b33154/html5/thumbnails/13.jpg)
OTcl Linkage (IV)
• Invoking Otcl procedure and obtaining its resultsTcl::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 OtclTcl::instance().result(“………”)
Buffer
![Page 14: Introduction to ns-2 Noun Choi Oct. 11, 2007. Outline Background ns-2 Internals Short demo Troubleshooting Reference links Q & A.](https://reader036.fdocuments.net/reader036/viewer/2022062407/56649e415503460f94b33154/html5/thumbnails/14.jpg)
How ns-2 works
Scheduler
Event QueueTarget object
Event (Packet)
Time
Object BObject A
Deque
Dispatch Dispatch
Register Event
![Page 15: Introduction to ns-2 Noun Choi Oct. 11, 2007. Outline Background ns-2 Internals Short demo Troubleshooting Reference links Q & A.](https://reader036.fdocuments.net/reader036/viewer/2022062407/56649e415503460f94b33154/html5/thumbnails/15.jpg)
Source code in Scheduler.ccvoid 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 dispatchedp->handler_->handle(p); // dispatch
}
![Page 16: Introduction to ns-2 Noun Choi Oct. 11, 2007. Outline Background ns-2 Internals Short demo Troubleshooting Reference links Q & A.](https://reader036.fdocuments.net/reader036/viewer/2022062407/56649e415503460f94b33154/html5/thumbnails/16.jpg)
An Example
A B
CBR
Transport
Network
LL
IFQ
MAC
NetIF
CBR Sink
Transport
Network
LL
IFQ
MAC
NetIF
Scheduler
Wireless Channel
![Page 17: Introduction to ns-2 Noun Choi Oct. 11, 2007. Outline Background ns-2 Internals Short demo Troubleshooting Reference links Q & A.](https://reader036.fdocuments.net/reader036/viewer/2022062407/56649e415503460f94b33154/html5/thumbnails/17.jpg)
Demonstration
BaseStation
MobileNode
MobileNode
MobileNode
Wireless
Wired Wired
![Page 18: Introduction to ns-2 Noun Choi Oct. 11, 2007. Outline Background ns-2 Internals Short demo Troubleshooting Reference links Q & A.](https://reader036.fdocuments.net/reader036/viewer/2022062407/56649e415503460f94b33154/html5/thumbnails/18.jpg)
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_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(adhocRouting) DSDV ;# routing protocol
• set opt(cp) "" ;# connection pattern file• set opt(sc) "./scen/scen-3-test" ;# node movement file.
• set opt(x) 670 ;# x coordinate of topology• set opt(y) 670 ;# y coordinate of topology• set opt(seed) 0.0 ;# seed for random number
gen.• set opt(stop) 250 ;# time to stop simulation
• set opt(ftp1-start) 100• set opt(ftp2-start) 150
• set num_wired_nodes 2• set num_bs_nodes 1
![Page 19: Introduction to ns-2 Noun Choi Oct. 11, 2007. Outline Background ns-2 Internals Short demo Troubleshooting Reference links Q & A.](https://reader036.fdocuments.net/reader036/viewer/2022062407/56649e415503460f94b33154/html5/thumbnails/19.jpg)
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)• }
![Page 20: Introduction to ns-2 Noun Choi Oct. 11, 2007. Outline Background ns-2 Internals Short demo Troubleshooting Reference links Q & A.](https://reader036.fdocuments.net/reader036/viewer/2022062407/56649e415503460f94b33154/html5/thumbnails/20.jpg)
Demonstration (Contd.)• # create simulator instance• set ns_ [new Simulator]
• # set up for hierarchical routing• $ns_ node-config -addressType hierarchical• AddrParams set domain_num_ 2 ;# number of domains• lappend cluster_num 2 1 ;# number of clusters in each domain• AddrParams set cluster_num_ $cluster_num• lappend eilastlevel 1 1 4 ;# 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)
![Page 21: Introduction to ns-2 Noun Choi Oct. 11, 2007. Outline Background ns-2 Internals Short demo Troubleshooting Reference links Q & A.](https://reader036.fdocuments.net/reader036/viewer/2022062407/56649e415503460f94b33154/html5/thumbnails/21.jpg)
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 {0.0.0 0.1.0} ;# hierarchical addresses for wired
domain• for {set i 0} {$i < $num_wired_nodes} {incr i} {• set W($i) [$ns_ node [lindex $temp $i]] • }
![Page 22: Introduction to ns-2 Noun Choi Oct. 11, 2007. Outline Background ns-2 Internals Short demo Troubleshooting Reference links Q & A.](https://reader036.fdocuments.net/reader036/viewer/2022062407/56649e415503460f94b33154/html5/thumbnails/22.jpg)
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 {1.0.0 1.0.1 1.0.2 1.0.3} ;# hier address to be used for wireless• ;# domain• set BS(0) [$ns_ node [lindex $temp 0]]• $BS(0) random-motion 0 ;# 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
![Page 23: Introduction to ns-2 Noun Choi Oct. 11, 2007. Outline Background ns-2 Internals Short demo Troubleshooting Reference links Q & A.](https://reader036.fdocuments.net/reader036/viewer/2022062407/56649e415503460f94b33154/html5/thumbnails/23.jpg)
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
![Page 24: Introduction to ns-2 Noun Choi Oct. 11, 2007. Outline Background ns-2 Internals Short demo Troubleshooting Reference links Q & A.](https://reader036.fdocuments.net/reader036/viewer/2022062407/56649e415503460f94b33154/html5/thumbnails/24.jpg)
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"
![Page 25: Introduction to ns-2 Noun Choi Oct. 11, 2007. Outline Background ns-2 Internals Short demo Troubleshooting Reference links Q & A.](https://reader036.fdocuments.net/reader036/viewer/2022062407/56649e415503460f94b33154/html5/thumbnails/25.jpg)
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
![Page 26: Introduction to ns-2 Noun Choi Oct. 11, 2007. Outline Background ns-2 Internals Short demo Troubleshooting Reference links Q & A.](https://reader036.fdocuments.net/reader036/viewer/2022062407/56649e415503460f94b33154/html5/thumbnails/26.jpg)
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
int Packet Size
string Flags
Int Flow ID
Int Source Address
Int Destination Address
Int Sequence Number
Int Unique Packet ID
![Page 27: Introduction to ns-2 Noun Choi Oct. 11, 2007. Outline Background ns-2 Internals Short demo Troubleshooting Reference links Q & A.](https://reader036.fdocuments.net/reader036/viewer/2022062407/56649e415503460f94b33154/html5/thumbnails/27.jpg)
Troubleshooting
• Problem while installing– Compiler may complain– http://www.isi.edu/nsnam/ns/ns-problems.html
• Program crashes– Use gdb
• Unexpected results
• Hidden problem– Slice & dice the trace log
![Page 28: Introduction to ns-2 Noun Choi Oct. 11, 2007. Outline Background ns-2 Internals Short demo Troubleshooting Reference links Q & A.](https://reader036.fdocuments.net/reader036/viewer/2022062407/56649e415503460f94b33154/html5/thumbnails/28.jpg)
Reference Links• http://www.isi.edu/nsnam/ns/• Manual & Tutorial
– http://www.isi.edu/nsnam/ns/ns-documentation.html– http://www.isi.edu/nsnam/ns/tutorial/index.html– http://www-sop.inria.fr/maestro/personnel/Eitan.Altman/COURS-NS/n3.
pdf• Mailing List
– http://www.isi.edu/nsnam/ns/ns-lists.html• Tcl
– http://www.tcl.tk/man/tcl8.5/tutorial/tcltutorial.html• OTcl
– http://bmrc.berkeley.edu/research/cmt/cmtdoc/otcl/tutorial.html• tclCL
– http://www.openmash.org/lxr/source/tclcl/tclcl.tcl?c=tutorials