Title: NS2 Tutorial Project
1NS-2 Tutorial / Project
Choe, Hyun Jung (Stella) May 31, 2007 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
- Project Overview
- Q A
3Part I NS-2 Overview
4What is NS-2?
- a Discrete event simulator
- Goals
- Support networking research and education
- Freely distributed, open source
- Share code, protocols, models, etc
- 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
- 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
11gamma setup
- ls a
- .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 Category (next page) and others
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
16NS-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
17Part III How to Program
18Elements 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
19Creating 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
20Setup 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
21Creating 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
22Creating 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
23Creating 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
24Creating 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
25A simulation example
ftp
W32
tcp
sink
n0
n4
5Mb, 15ms
n2
n3
10Mb,2ms
10Mb,2ms
n1
n5
sink
tcp
ftp
W32
26Tracing 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
27Tracing and Monitoring II
- Packet tracing
- On all links ns trace-all open out.tr w
- On one specific link ns trace-queue n0 n1tr
- ltEventgt lttimegt ltfromgt lttogt ltpktgt ltsizegt -- ltfidgt
ltsrcgt ltdstgt ltseqgt ltattrgt - 1 0 2 cbr 210 ------- 0 0.0 3.1 0 0
- - 1 0 2 cbr 210 ------- 0 0.0 3.1 0 0
- r 1.00234 0 2 cbr 210 ------- 0 0.0 3.1 0 0
- Event tracing (support TCP right now)
- Record event in trace file ns eventtrace-all
- E 2.267203 0 4 TCP slow_start 0 210 1
28Tracing 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_
29Tracing and Monitoring IV
- Visualize trace in nam
- ns namtrace-all open test.nam w
- ns namtrace-queue n0 n1
- 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
30Visualization Tools
- nam-1 (Network AniMator Version 1)
- Packet-level animation
- Well supported by ns
- xgraph
- Conversion from ns trace to xgraph format
31xgraph
- 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
- /usr/local/ns-allinone-2.26/bin/xgraph
32nam
- Basic visualization
- Topology layout
- Animation control
- Synchronous replay
- Fine-tune layout
- TCP/SRM visualization
- Editor generate ns simulation scripts
33(No Transcript)
34Post-processing general trace file
35Summary 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
36Part IV Project Overview (Phase 1 2)
37Phase 1
- Purpose
- To be familiar with NS2
- To master how to configure network topology
- Steps
- Setup system environment
- Run specified two example files
- Establish specified network topology
- Establish traffic flows
- Submit your file
- You are free to experiment various parameters if
your simulation satisfies requirements, specified
topology and traffic flows!
38Topology
39Phase 2
- Purpose
- To know how to trace/monitor/analyze simulation
results - To understand different characteristics of TCP
and UDP congestion control - Requirements
- Simulate your program with specified parameter
values - Generate result graphs to verify the performance
- Compare and analyze the results
- Make a comprehensive analysis report
40Comments
- Refer to the project description on course
website for more information. - file name phase_lastName.
- Analysis reports should be submitted as a
hardcopy also. - Every submission must be received prior to the
beginning of class on due date. - Late submission
- 10 deduction for one day
41Part V Appendix
42Extending Tcl Interpreter
- TclCL
- C and OTcl linkage
- glue library that makes it easy to share
functions, variables, etc - 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
43Example Hello World
- Batch mode
- simple.tcl
- set ns new Simulator
- ns at 1 puts \Hello World!\
- ns at 1.5 exit
- ns run
- ns simple.tcl
- Hello World!
- Interactive mode
- ns
- set ns new Simulator
- _o3
- ns at 1 puts \Hello World!\
- 1
- ns at 1.5 exit
- 2
- ns run
- Hello World!
44Basic 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
-
-
-
- test 43 27
45Basic OTcl
- Class Mom
- Mom instproc greet
- self instvar age_
- puts age_ years old mom How are you doing?
-
- Class Kid -superclass Mom
- Kid instproc greet
- self instvar age_
- puts age_ years old kid Whats up, dude?
set mom new Mom mom set age_ 45 set kid new
Kid kid set age_ 15 mom greet kid greet
46TCP 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
47TCP 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
48ns?nam Interface
- Color
- Node manipulation
- Link manipulation
- Topology layout
- Protocol state
- Misc
49nam 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
50nam 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\
51nam 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
52nam 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
53nam 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
54nam 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"