Title: NS-2 Tutorial
1NS-2 Tutorial
Choe, Hyun Jung (Stella) Spring 2008 High
Performance Networks Department of Computer
Science and EngineeringThe University of Texas
at Arlington
2Outline
- NS-2 Overview
- How to Run NS-2
- How to Program
- Simulation Examples
- Project Overview
- Q A
3NS-2 Overview
4What is NS-2?
- VINT Project
- UC Berkeley, LBL, USC/ISI, and Xerox PARC
- Goals
- Support networking research and education
- Freely distributed, open source
- Share code, protocols, models, etc
- a Discrete Event Simulator
- Link layer and up
- Wired and Wireless
5NS Models
- Wired
- Routing DV, LS, PIM-SM etc.
- Transportation TCP and UDP
- Traffic sources web, ftp, telnet, cbr,
stochastic etc. - Queuing disciplines drop-tail, RED, FQ, SFQ,
DRR etc. - QoS IntServ and Diffserv
- Emulation
- Wireless
- Ad hoc routing, mobile IP and Satellite
- Directed diffusion, sensor-MAC
6NS Architecture
- Object-oriented (C, OTcl)
- data / control separation
- C for data
- per packet processing, core of ns
- fast to run, detailed, complete control
- OTcl for control
- Simulation scenario configurations
- Periodic or triggered action
- Manipulating existing C objects
- fast to write and change
7OTcl and C The Duality
! OTcl (object variant of Tcl) and C share
class hierarchy !
8NS Components
9Part II How to Run NS-2
10How to Run NS-2
- gamma2 server
- Version 2.30
- Please use /tmp for your trace files (not codes)
(later) - xdisplay for graphical results
- If you want to install NS2 in your own PC
- Current release ns-2.31, Mar 10, 2007)
- http//www.isi.edu/nsnam/ns/ns-build.html
- Platforms
- Most Unix and Linux
- Windows and Mac
11How to Setup Path
- ls a
- .cshrc
- setenv LD_LIBRARY_PATH /opt/ns-allinone-2.30/
- .bash_profile
- export PATH/opt/ns-allinone-2.30/binPATH
- export LD_LIBRARY_PATH/opt/ns-allinone-2.30/otcl-
1.12/opt/ns-allinone-2.30/libLD_LIBRARY_PATH - export TCL_LIBRARY/opt/ns-allinone-2.30/tcl8.4.13
/library
12gamma /tmp
- for Temporary Usage only
- Do Not save your scripts under /tmp
- Use Your Own directory
- mkdir /tmp/your_dir/
- Example
- set nf open /tmp/your_dir/out.nam w
13How to Install NS-2 (Under Windows)
- http//nsnam.isi.edu/nsnam/index.php/Running_Ns_an
d_Nam_Under_Windows_9x/2000/XP_Using_Cygwin - Cygwin-1.3.12 or later required
- Select UNIX text type
- to check current mode, type mount grep
textmode - C\Cygwin (not C\Program Files\Cygwin)
- Install ltX11gt and ltDevelgt Categories (next
page) and others (e.g., vim) in ltEditorgt - Download NS-2 under Cygwin (E.g., under
/usr/local/) - tar zxvf ns-allinone-2.2x.x.tar.gz
- cd ns-allinone-2.2x
- ./install
14(No Transcript)
15Error?
- error near unexpected token )'
- ./configure line 7624 OSF)'
- tcl8.3.2 configuration failed! Exiting ...
- Tcl is not part of the ns project. Please see
www.Scriptics.com - to see if they have a fix for your platform.
-
- Remove only if there are two at the end of
relid - find . xargs -n 1 grep -H relid\
- Others
- http//ns-2.blogspot.com/2006/05/problem-in-insta
lling-ns-2292-allinone.html - http//www.isi.edu/nsnam/ns/ns-cygwin-old.html
16How to Use Cygwin-X
- http//xfree86.cygwin.com/docs/ug//usr/X11R6/
- Run /usr/X11R6/bin/startxwin.bat
- sh /usr/X11R6/bin/startxwin.sh
- cp /etc/X11/xinit/xinitrc /.xinitrc
- PATHPATH/usr/X11R6/bin
- startx
17NS-2 Directory Structure
/opt/ns-allinone-2.30/
ns-allinone
...
TK8.4.13
OTcl
tclcl
Tcl8.4.13
ns-2
nam-1.12
C code
...
tcl
ex
test
mcast
lib
...
examples
validation tests
OTcl code
18Part III How to Program
19Basic Tcl Programming
- set b 0
- b 0 in C
- set x b
- set x expr a b
- http//www-sop.inria.fr/maestro/personnel/Eitan.
Altman/COURS-NS/n3.pdf -
20Basic Tcl
- Command arg1 arg2 arg3
- set a 43
- set b 27
- proc test a b
- set c expr a b
- set d expr expr a - b c
- for set k 0 k lt 10 incr k
- if k lt 5
- puts k lt 5, pow expr pow(d, k)
- else
- puts k gt 5, mod expr d k
-
-
-
21Elements of NS-2
- Create the event scheduler
- Turn on tracing
- Create network
- Setup routing
- Insert errors
- Create transport connection
- Create traffic
- Transmit application-level data
22How to Simulate
- Create event scheduler
- set ns new Simulator
- Schedule events
- ns at lttimegt lteventgt
- lteventgt
- any legitimate ns/tcl commands
- ns at 5.0 finish
- Start scheduler
- ns run
- TclCL
- C and OTcl linkage
- glue library that makes it easy to share
functions, variables, etc
23Example helloWorld.tcl
- set ns new Simulator
- ns at 1 puts \Hello World!\
- ns at 1.5 exit
- ns run
- ns simple.tcl
- Hello World!
-
24Creating Network
- Nodes
- set n0 ns node
- set n1 ns node
- Links and queuing
- ns duplex-link n0 n1 ltbandwidthgt ltdelaygt
ltqueue_typegt - ltqueue_typegt DropTail, RED, CBQ, FQ, SFQ, DRR
- ns duplex-link-op no n1 OPTIONS
n0
n1
25Setup Routing
- Unicast
- ns rtproto lttypegt
- lttypegt Static, Session, DV, cost, multi-path
- Multicast
- ns multicast (right after new Simulator)
- ns mrtproto lttypegt
- lttypegt CtrMcast, DM, ST, BST
26Creating Connection UDP
- UDP
- set udp new Agent/UDP
- set null new Agent/Null
- ns attach-agent n0 udp
- ns attach-agent n1 null
- ns connect udp null
UDP
null
n0
n1
27Creating Traffic On Top of UDP
- CBR
- set src new Application/Traffic/CBR
- src attach-agent udp0
- Exponential or Pareto on-off
- set src new Application/Traffic/Exponential
- set src new Application/Traffic/Pareto
- src attach-agent udp0
CBR
UDP
null
n0
n1
28Structure of a Unicast Node
29Structure of a Simplex Link
30Creating Connection TCP
- TCP
- set tcp new Agent/TCP
- set tcpsink new Agent/TCPSink
- ns attach-agent n0 tcp
- ns attach-agent n1 tcpsink
- ns connect tcp tcpsink
TCP
sink
n0
n1
31Creating Traffic On Top of TCP
- FTP
- set ftp new Application/FTP
- ftp attach-agent tcp
- Telnet
- set telnet new Application/Telnet
- telnet attach-agent tcp
FTP
TCP
sink
n0
n1
32A simulation example
ftp
W32
tcp
sink
n0
n4
5Mb, 15ms
n2
n3
10Mb,2ms
10Mb,2ms
n1
n5
sink
tcp
ftp
W32
33TCP Agents
- ns has several variants of TCP available
- -- Agent/TCP/Tahoe a tahoe'' TCP sender
- -- Agent/TCP/Reno a Reno'' TCP sender
- -- Agent/TCP/NewReno Reno with a modification
- -- Agent/TCP/Sack1 TCP with selective repeat
(follows RFC2018) - -- Agent/TCP/Vegas TCP Vegas
- -- Agent/TCP/Fack Reno TCP with forward
acknowledge ment'' - The oneway TCP receiving agents currently
supported are - -- Agent/TCPSink TCP sink with one ACK per
packet - -- Agent/TCPSink/DelAck TCP sink with
configurable delay per ACK - -- Agent/TCPSink/Sack1 selective ACK sink
(follows RFC2018) - -- Agent/TCPSink/Sack1/DelAck Sack1 with DelAck
- The twoway experimental sender currently supports
only a Reno form of TCP - -- Agent/TCP/FullTcp
34TCP Agent Parameters
- Agent/TCP set tcpTick 0.1 timer granularity
in sec (.1 is NONST ANDARD) - Agent/TCP set maxrto 64 bound on RTO
(seconds) - Agent/TCP set dupacks 0 duplicate ACK counter
- Agent/TCP set ack 0 highest ACK received
- Agent/TCP set cwnd 0 congestion window
(packets) - Agent/TCP set awnd 0 averaged cwnd
(experimental) - Agent/TCP set ssthresh 0 slowstat threshold
(packets) - Agent/TCP set rtt 0 rtt sample
- Agent/TCP set srtt 0 smoothed (averaged) rtt
- Agent/TCP set rttvar 0 mean deviation of rtt
samples - Agent/TCP set backoff 0 current RTO backoff
factor - Agent/TCP set maxseq 0 max (packet) seq
number sent
35Tracing and Monitoring I
- Trace packets on all links
- Open the NAM trace file Open the Trace file
- set nf open out.nam w set tf open
out.tr w - ns namtrace-all nf ns
trace-all tf - Must appear immediately after creating scheduler
- Turn on tracing on specific links
- ns trace-queue n0 n1
- ns namtrace-queue n0 n1
- Event tracing (support TCP right now)
- Record event in trace file ns eventtrace-all
36Tracing and Monitoring II
37Tracing and Monitoring III
- Queue monitor
- set qmon ns monitor-queue n0 n1 q_f
sample_interval - Get statistics for a queue
- qmon set pdrops_
- Record to trace file as an optional
- 29.000000000000142 0 1 0.0 0.0 4 4 0 1160 1160
0 - Flow monitor
- set fmon ns_ makeflowmon Fid
- ns_ attach-fmon slink fmon
- fmon set pdrops_
38Tracing and Monitoring IV
- Variable tracing in nam
- Agent/TCP set nam_tracevar_ true
- tcp tracevar srtt_
- tcp tracevar cwnd_
- Monitor agent variables in nam
- ns add-agent-trace tcp tcp
- ns monitor-agent-trace tcp
- srm0 tracevar cwnd_
-
- ns delete-agent-trace tcp
39Visualization Tools
- nam-1 (Network AniMator Version 1)
- Packet-level animation
- Well supported by ns
- xgraph
- Conversion from ns trace to xgraph format
40xgraph
- The xgraph program draws a graph on an X display
given data read from either data files. - To run it xgraph dataFileName
- You can save the hardcopy of the graph as a
postscript file. - Xgraph is available on gamma
- /opt/ns-allinone-2.30/xgraph-12.1
41nam
- Basic visualization
- Topology layout
- Animation control
- Synchronous replay
- Fine-tune layout
- TCP/SRM visualization
- Editor generate ns simulation scripts
42ns?nam Interface
- Color
- Node manipulation
- Link manipulation
- Topology layout
- Protocol state
- Misc
43nam Interface Color
- Color mapping
- ns color 1 red
- ns color 2 blue
- ns color 3 chocolate
- Color ? flow id association
- tcp0 set fid_ 1 red packets
- tcp1 set fid_ 2 blue packets
44nam Interface Nodes
- Color
- node color red
- Shape (cant be changed after sim starts)
- node shape box circle, box, hexagon
- Marks (concentric shapes)
- ns at 1.0 n0 add-mark m0 blue box
- ns at 2.0 n0 delete-mark m0
- Label (single string)
- ns at 1.1 n0 label \web cache 0\
45nam Interfaces Links
- Color
- ns duplex-link-op n0 n1 color "green"
- Label
- ns duplex-link-op n0 n1 label "abced"
- Dynamics (automatically handled)
- ns rtmodel Deterministic 2.0 0.9 0.1 n0 n1
- Asymmetric links not allowed
46nam Interface Topo Layout
- Manual layout specify everything
- ns duplex-link-op n(0) n(1) orient right
- ns duplex-link-op n(1) n(2) orient right
- ns duplex-link-op n(2) n(3) orient right
- ns duplex-link-op n(3) n(4) orient 60deg
- If anything missing ? automatic layout
47nam Interface Protocol State
- Monitor values of agent variables
- ns add-agent-trace srm0 srm_agent0
- ns monitor-agent-trace srm0
- srm0 tracevar C1_
- srm0 tracevar C2_
-
- ns delete-agent-trace tcp1
48nam Interface Misc
- Annotation
- Add textual explaination to your sim
- ns at 3.5 "ns trace-annotate \packet drop\"
- Set animation rate
- ns at 0.0 "ns set-animation-rate 0.1ms"
49(No Transcript)
50Summary Generic Script Structure
- set ns new Simulator
- Turn on tracing
- Create topology
- Setup packet loss, link dynamics
- Create routing agents
- Create
- - multicast groups
- - protocol agents
- - application and/or setup traffic sources
- Post-processing procs
- Start simulation