Introduction To NS-2: Tutorial Overview of NS Walk-Through A Simple Example
Introduction To NS-2: Tutorial Overview of NS Walk-Through A Simple Example
Tutorial overview of NS
Create basic NS simulation
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
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
5
Steps when using NS
Create OTCL script for your network model
nodes, links, traffic sources, sinks, etc.
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]
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]
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
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
18
Creating Traffic over UDP Channels
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
+ 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
23
Introduction to NS-2:
Tutorial overview of NS
Create basic NS simulation
24
Walk-through example
acks acks
25
Walk-through example
2 FTP 10 FTP One CBR 12 FTP
sources sources source dest
performance
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
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