Sunteți pe pagina 1din 33

Introduction 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/

1
NS-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
 “defacto” standard in networking research
 Main website: http://www.isi.edu/nsnam/ns

2
NS 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

3
NS components
 NS, the simulator itself (this is all we’ll 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/

4
NS 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

5
Steps 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
6
Create a Basic NS Simulation
1. Create event scheduler
2. Create nodes and links
3. Create connections
4. Create traffic sources/sinks
5. Enable tracing

7
Create a Basic NS Simulation
1. Create the event scheduler
2. Create nodes and links
3. Create connections
4. Create traffic sources/sinks
5. Enable tracing

8
Step 1: Creating Event Scheduler

 Create scheduler
 set ns [new Simulator]

 Schedule event
 $ns at <time> <event>
 <event>: any legitimate Ns/TCL commands

 Start scheduler
 $ns run

9
Create a Basic NS Simulation
1. Create the event scheduler
2. Create nodes and links
3. Create connections
4. Create traffic sources/sinks
5. Enable tracing

10
Step 2: Creating Network (Nodes + Links)

 Nodes
 set n0 [$ns node]
 set n1 [$ns node]

 Links: connect together two nodes


 $ns duplex-link $n0 $n1 <bandwidth> <delay>
<queue_type>
 <delay> determines propagation delay
 <queue_type> determines queueing policy

• DropTail, RED, CBQ, FQ, SFQ, DRR

11
Create a Basic NS Simulation
1. Create the event scheduler
2. Create nodes and links
3. Create connections
4. Create traffic sources/sinks
5. Enable tracing

12
Step 3: Create Connections

 Transports:
 TCP, UDP, multicast, etc.
 transport protocol instances attach to nodes

13
Creating 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

14
Creating 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

15
Create a Basic NS Simulation
1. Create the event scheduler
2. Create nodes and links
3. Create connections
4. Create traffic sources/sinks
5. Enable tracing

16
Step 4: Create Traffic Models
 Traffic (applications):
 Web, ftp, telnet, audio, etc.
 application objects attach to transport protocol
objects
 generates traffic into transport protocol

17
Creating Traffic over TCP Channels

How to create a FTP session over TCP?


 create traffic model
 setftp [new Application/FTP]
 default is “infinite” file size

 attach to TCP channel


 $ftp attach-agent $t_src

 schedule start time


 $ns at <time> “$ftp start”

18
Creating Traffic over UDP Channels

How to create a CBR (Constant Bit Rate)


model over UDP?
 setcbr [new Application/Traffic/CBR]
 $cbr set packetSize_ 512
 $cbr set interval_ 0.250
 $cbr attach-agent $u_src
 $ns at <time> “$cbr start”

19
Create a Basic NS Simulation
1. Create the event scheduler
2. Create nodes and links
3. Create connections
4. Create traffic sources/sinks
5. Enable tracing

20
Tracing: dump everything into a file
 Trace packets on individual link
 Tracefile format:
<event> <time> <from> <to> <pkt> <size>--<flowid> <src>
<dst> <seqno> <aseqno>
+ 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

time enqueue Node 0 Node 1

+ enqueue
- dequeue
nodes involved
r receive
in this event
d drop drop dequeue receive
21
Tracing: dump everything into a file
 Trace packets on individual links
 Tracefile format:
<event> <time> <from> <to> <pkt> <size>--<flowid> <src>
<dst> <seqno> <aseqno>
+ 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

time packet packet seq packet


type flags number ID
+ enqueue packet flow
- dequeue
nodes involved length ID source
r receive dest
in this event
d drop addresses
22
Tracing 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 <time> “puts $fmon set pdrops_”

23
Introduction to NS-2:

 Tutorial overview of NS
 Create basic NS simulation

 Walk-through simple example


 Model specification
 Execution and trace analysis

24
Walk-through example

Node 0 Node 1 Node 2

acks acks

full duplex full duplex

25
Walk-through example
2 FTP 10 FTP One CBR 12 FTP
sources sources source dest
performance

2 TCP SACK 10 TCP NewReno One UDP 12 TCP


W_max = 32 W_max = 32 tracing dest
MSS = 1400 MSS = 1400
Node 0 Node 1 Node 2

acks acks
One UDP Two UDP
2 Mbps full duplex 1 Mbps full duplex dest
5 msec prop delay 10 msec prop delay
100 packet buffer 700 packet buffer One On-Off dest
One On-Off
Drop-tail policy Drop-tail policy
Source (voice) One CBR dest
fat link thin link
26
Introduction 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

27
NS Trace file (link n1->n2):
...
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.0114sec=180*8/(10^6)+0.01
28
Flow Monitor (link n1->n2) 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
...

29
Results - Queue Statistics

 Red - instantaneous  Blue - average w/o transient


 Green - running average  Purple - packet drops
30
Results - Flow Statistics

 Red - TCP flow 1  Number of packets in queue


 Green - TCP flow 2 mimics TCP Window behavior
31
Results - Flow Statistics

 Congestion Windows of Flow 1  Cumulative dropped packets of


and Flow 2 Flow 1 and Flow 2
32
Performance Queue Statistics

 Multiple runs to obtain confidence intervals


33

S-ar putea să vă placă și