Title: NS2 Tutorial Project 1
1NS-2 Tutorial / Project 1
Choe, Hyun Jung (Stella) September 15,
2005 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 I Overview
- Appendix
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.26
- 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.29, Oct. 22, 2005)
- http//www.isi.edu/nsnam/ns/ns-build.html
- Platforms
- Most Unix and Linux
- Windows and Mac
11gamma /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
12How 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
13(No Transcript)
14Error?
- 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
15NS-2 Directory Structure
/usr/local/ns-allinone-2.26/
ns-allinone
...
TK8.3
OTcl
tclcl
Tcl8.3
ns-2
nam-1
C code
...
tcl
ex
test
mcast
lib
...
examples
validation tests
OTcl code
16Part III How to Program
17Elements 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
18Creating 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
19Setup 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
20Creating 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
21Creating 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
22Creating 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
23Creating 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
24A simulation example
ftp
W32
tcp
sink
n0
n4
5Mb, 15ms
n2
n3
10Mb,2ms
10Mb,2ms
n1
n5
sink
tcp
ftp
W32
25Tracing 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
26Tracing 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
27Tracing 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_
28Tracing 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
29Visualization Tools
- nam-1 (Network AniMator Version 1)
- Packet-level animation
- Well supported by ns
- xgraph
- Conversion from ns trace to xgraph format
30xgraph
- 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
31nam
- Basic visualization
- Topology layout
- Animation control
- Synchronous replay
- Fine-tune layout
- TCP/SRM visualization
- Editor generate ns simulation scripts
32(No Transcript)
33Post-processing general trace file
34Summary 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
35Part IV Project 1 Overview
36Topology
10Mb, 5ms
1.5Mb, 10ms
37Purpose
- To study TCP congestion avoidance approaches
- RED (random early detection)
- ECN (Elicit congestion notification)
- Measurements
- queue size
- throughput of each flow
- end-to-end delay of each flow
- packet drop rate of each flow
38Scenarios
- with RED, without ECN
- with RED, with ECN
- without RED, with ECN
- without RED, without ECN
39Final Report
- Readme file
- Analysis Report (hardcopy also)
- Scripts
- One Page Assessment (hardcopy also)
- Refer to the project description on course
website for more information. - Late submission
- 10 deduction for one day
40Part V Appendix
41Extending 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
42Example 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!
43Basic 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
44Basic 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
45TCP 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
46TCP 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
47ns?nam Interface
- Color
- Node manipulation
- Link manipulation
- Topology layout
- Protocol state
- Misc
48nam 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
49nam 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\
50nam 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
51nam 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
52nam 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
53nam 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"