Title: Introduction to NS2
1Introduction to NS-2
- Tutorial overview of NS
- Create basic NS simulation
- Walk-through a simple example
- Model specification
- Execution and trace analysis
http//www-net.cs.umass.edu/honggang/ns-cs653/
2NS-2, the network simulator
- Academic project over 10 years old
- freely distributed, open source
- Currently maintained by ISI (Information Sciences
Institute) - DARPA NSF projects
- 200K LoC, 403 page manual
- Large user base
- mostly academics
- de facto standard in networking research
- Main website http//www.isi.edu/nsnam/ns
3NS Functionality
- Discrete event simulator
- Modeling Network Components
- Traffic models and applications
- Web, FTP, telnet, audio, sensor nets
- Transport protocols
- TCP (Reno, SACK, etc), UDP, multicast
- Routing and queueing
- static routing, DV routing, multicast, ad-hoc
routing - queueing disciplines drop-tail, RED, FQ
- Link layer
- wired, wireless, satellite
- Providing Infrastructure
- tracing, visualization, error models, etc
- modify or create your own modules
4NS components
- NS, the simulator itself (this is all well have
time for) - NAM, the Network AniMator
- visualize NS (or other) output
- GUI input simple Ns scenarios
- pre-processing
- traffic and topology generators
- post-processing
- simple trace analysis, often in Awk, Perl, or Tcl
- Tutorial http//www.isi.edu/nsnam/ns/tutorial
- NS by example http//nile.wpi.edu/NS/
5NS Software Structure C and OTCL
- Uses two languages
- C for the core of NS simulator
- per packet processing
- fast to run, detailed, complete control
- OTCL for control our focus
- simulation setup, configuration
- fast to write and change
6Steps when using NS
- Create OTCL script for your network model
- nodes, links, traffic sources, sinks, etc.
- Parameterize simulation objects
- Links queue sizes, link speeds,
- Transport Protocols TCP flavor and parameters
(more than 30), - Collect statistics
- dump everything to trace, post process it
- gather stats during simulation within OTCL script
- modify Ns source code
- Run NS multiple times
- confidence intervals
7Create a Basic NS Simulation
- Create event scheduler
- Create nodes and links
- Create connections
- Create traffic sources/sinks
- Enable tracing
8Create a Basic NS Simulation
- Create the event scheduler
- Create nodes and links
- Create connections
- Create traffic sources/sinks
- Enable tracing
9Step 1 Creating Event Scheduler
- Create scheduler
- set ns new Simulator
- Schedule event
- ns at lttimegt lteventgt
- lteventgt any legitimate Ns/TCL commands
- Start scheduler
- ns run
10Create a Basic NS Simulation
- Create the event scheduler
- Create nodes and links
- Create connections
- Create traffic sources/sinks
- Enable tracing
11Step 2 Creating Network (Nodes Links)
- Nodes
- set n0 ns node
- set n1 ns node
- Links connect together two nodes
- ns duplex-link n0 n1 ltbandwidthgt ltdelaygt
ltqueue_typegt - ltdelaygt determines propagation delay
- ltqueue_typegt determines queueing policy
- DropTail, RED, CBQ, FQ, SFQ, DRR
12Create a Basic NS Simulation
- Create the event scheduler
- Create nodes and links
- Create connections
- Create traffic sources/sinks
- Enable tracing
13Step 3 Create Connections
- Transports
- TCP, UDP, multicast, etc.
- transport protocol instances attach to nodes
14Creating Transport Channels UDP
- source and sink
- set u_src new Agent/UDP
- set u_dst new Agent/NULL
- attach them to nodes, then connect to each other
- ns attach-agent n0 u_src
- ns attach-agent n1 u_dst
- ns connect u_src u_dst
15Creating Transport Channels TCP
- source and sink
- set t_src new Agent/TCP/Newreno
- set t_dst new Agent/TCPSink
- Newreno flavor of TCP
- attach to nodes and each other
- ns attach-agent n0 t_src
- ns attach-agent n1 t_dst
- ns connect t_src t_dst
16Create a Basic NS Simulation
- Create the event scheduler
- Create nodes and links
- Create connections
- Create traffic sources/sinks
- Enable tracing
17Step 4 Create Traffic Models
- Traffic (applications)
- Web, ftp, telnet, audio, etc.
- application objects attach to transport protocol
objects - generates traffic into transport protocol
18Creating Traffic over TCP Channels
- How to create a FTP session over TCP?
- create traffic model
- set ftp new Application/FTP
- default is infinite file size
- attach to TCP channel
- ftp attach-agent t_src
- schedule start time
- ns at lttimegt ftp start
19Creating Traffic over UDP Channels
- How to create a CBR (Constant Bit Rate) model
over UDP? - set cbr new Application/Traffic/CBR
- cbr set packetSize_ 512
- cbr set interval_ 0.250
- cbr attach-agent u_src
- ns at lttimegt cbr start
20Create a Basic NS Simulation
- Create the event scheduler
- Create nodes and links
- Create connections
- Create traffic sources/sinks
- Enable tracing
21Tracing dump everything into a file
- Trace packets on individual link
- Tracefile format
- lteventgt lttimegt ltfromgt lttogt ltpktgt ltsizegt--ltflowidgt
ltsrcgt ltdstgt ltseqnogt ltaseqnogt - 1 0 2 tcp 900 ------- 1 0.0 3.1 7 15
- - 1 0 2 tcp 900 ------- 1 0.0 3.1 7 15
- r 1.00234 0 2 tcp 900 ------- 1 0.0 3.1 7 15
Node 0
Node 1
enqueue
time
- enqueue
- dequeue
- r receive
- d drop
nodes involved in this event
receive
dequeue
drop
22Tracing dump everything into a file
- Trace packets on individual links
- Tracefile format
- lteventgt lttimegt ltfromgt lttogt ltpktgt ltsizegt--ltflowidgt
ltsrcgt ltdstgt ltseqnogt ltaseqnogt - 1 0 2 tcp 900 ------- 1 0.0 3.1 7 15
- - 1 0 2 tcp 900 ------- 1 0.0 3.1 7 15
- r 1.00234 0 2 tcp 900 ------- 1 0.0 3.1 7 15
packet type
packet flags
seq number
time
packet ID
- enqueue
- dequeue
- r receive
- d drop
packet length
flow ID
source dest addresses
nodes involved in this event
23Tracing via Monitors
- Queue monitor the queue to access a link
- Flow monitor particular flow within queue
- to specify a link, we need
- set link ns link n0 n1
- to create a flow monitor
- set fmon ns makeflowmon Fid
- ns attach-fmon link fmon
- ns at lttimegt puts fmon set pdrops_
24Introduction to NS-2
- Tutorial overview of NS
- Create basic NS simulation
- Walk-through simple example
- Model specification
- Execution and trace analysis
25Walk-through example
Node 2
Node 0
Node 1
acks
acks
full duplex
full duplex
26Walk-through example
One CBR source
12 FTP dest
10 FTP sources
2 FTP sources
performance
2 TCP SACK W_max 32 MSS 1400
10 TCP NewReno W_max 32 MSS 1400
One UDP
12 TCP dest
tracing
Node 2
Node 0
Node 1
acks
acks
One UDP
Two UDP dest
1 Mbps full duplex 10 msec prop delay 700 packet
buffer Drop-tail policy
2 Mbps full duplex 5 msec prop delay 100 packet
buffer Drop-tail policy
One On-Off dest One CBR dest
One On-Off Source (voice)
thin link
fat link
27Introduction to NS-2
- Tutorial overview of NS
- Create basic NS simulation
- Walk-through simple example
- Model specification
- Execution and trace analysis
- See handout for source code
28NS Trace file (link n1-gtn2) NS-trace.txt
- ...
- 11.533441 1 2 tcp 1440 ------- 12 1.2 2.4 96
2092 - r 11.535694 1 2 tcp 1440 ------- 12 1.2 2.4 65
1527 - - 11.537214 1 2 exp 180 ------- 100 0.2 2.13 284
1528 - - 11.538654 1 2 cbr 1440 ------- 101 1.11 2.14
155 1530 - r 11.547214 1 2 tcp 1440 ------- 12 1.2 2.4 66
1529 - 11.54728 1 2 tcp 1440 ------- 12 1.2 2.4 97
2095 - r 11.548654 1 2 exp 180 ------- 100 0.2 2.13 284
1528 - 11.55 1 2 cbr 1440 ------- 101 1.11 2.14 211
2096 - - 11.550174 1 2 tcp 1440 ------- 12 1.2 2.4 67
1534 - r 11.560174 1 2 cbr 1440 ------- 101 1.11 2.14
155 1530 - - 11.561694 1 2 exp 180 ------- 100 0.2 2.13 285
1532 - 11.56222 1 2 tcp 1440 ------- 12 1.2 2.4 98
2097 - - 11.563134 1 2 tcp 1440 ------- 12 1.2 2.4 68
1537 - r 11.571694 1 2 tcp 1440 ------- 12 1.2 2.4 67
1534 - r 11.573134 1 2 exp 180 ------- 100 0.2 2.13 285
1532 - - 11.574654 1 2 exp 180 ------- 100 0.2 2.13 286
1536 - ...
0.0114sec1808/(106)0.01
29Flow Monitor (link n1-gtn2) Trace
packet-trace.txt
- ...
- 10 356 1394.6939635123624 1262 906 0 4 7 3 0
- 10.5 367 1575.3875777393503 1325 958 0 8 15 7 0 1
1 0 0 - 11 366 1759.8340061666161 1384 1018 0 8 15 7 0 1
1 0 0 - 11.5 370 1944.0583990191849 1448 1078 0 8 15 7 0
1 1 0 0 - 12 380 2131.710863713804 1512 1132 0 8 15 7 0 1 1
0 0 - 12.5 382 2325.178644727122 1558 1176 0 8 15 7 0 1
1 0 0 - 13 382 2516.7615454470124 1613 1231 0 8 15 7 0 1
1 0 0 - 13.5 395 2710.8647514290892 1676 1281 0 8 15 7 0
2 3 1 0 - 14 421 2912.3462186990751 1747 1326 0 16 31 15 0
2 3 1 0 - 14.5 432 3130.3858423193769 1805 1373 0 16 31 15
0 2 3 1 0 - 15 436 3344.5896974377333 1862 1426 0 16 31 15 0
2 3 1 0 - 15.5 462 3571.3811182311597 1937 1475 0 16 31 15
0 2 3 1 0 - 16 477 3804.653159658757 1995 1518 0 16 31 15 0 2
3 1 0 - 16.5 495 4049.5929326563519 2057 1562 0 16 31 15
0 2 3 1 0 - 17 531 4303.9211771379323 2136 1605 0 16 31 15 0
2 3 1 0 - ...
30Results - Queue Statistics
- Red - instantaneous
- Green - running average
- Blue - average w/o transient
- Purple - packet drops
31Results - Flow Statistics
- Red - TCP flow 1
- Green - TCP flow 2
- Number of packets in queue mimics TCP Window
behavior
32Results - Flow Statistics
- Congestion Windows of Flow 1 and Flow 2
- Cumulative dropped packets of Flow 1 and Flow 2
33Performance Queue Statistics
- Multiple runs to obtain confidence intervals