network simulator (ns2) - cpe.ku.ac.thanan/myhomepage/wp-content/uploads/2009/06/... · ns overview...

48
Network Simulator (NS2) Wireless LANs June – September 2009 1 . . Assoc. Prof. Anan Phonphoem, Ph.D. [email protected] http://www.cpe.ku.ac.th/~anan Computer Engineering Department Kasetsart University, Bangkok, Thailand

Upload: others

Post on 20-Mar-2020

12 views

Category:

Documents


0 download

TRANSCRIPT

Network Simulator (NS2)

Wireless LANsJune – September 2009

1

��. ��. ���� �� ����

Assoc. Prof. Anan Phonphoem, [email protected]

http://www.cpe.ku.ac.th/~anan

Computer Engineering Department

Kasetsart University, Bangkok, Thailand

Slide materials

Modified from many good sources:

• Padmaparna Haldar and Xuan Chen, ISI, 2002http://www.isi.edu/nsnam/ns/ns-tutorial/tutorial-

2

http://www.isi.edu/nsnam/ns/ns-tutorial/tutorial-02/slides/NS_Fundamentals_1.ppt

• Choe, Hyun Jung (Stella), U of Texas, Arlington, 2008http://crystal.uta.edu/~zaruba/CSE5346/ns2Tutorial-2008spring_v1.1.ppt

Outline

•Overview• Running NS

3

NS Overview

• VINT Project (1995)•UC Berkeley, LBL, USC/ISI, and Xerox PARC

• Goals

•• Goals

• Support networking research and education• Freely distributed (open source)• Protocol / model verification and comparison

4

NS Overview

• Discrete Event Simulator• Link layer and up• Support wired and wireless• Support wired and wireless

5

Current Status (Sep 2009)

Periodical release

Current release Description

NS2 ns-2.34, June 14, 2009 • C++ and OTcl• test suites and examples

6

http://www.isi.edu/nsnam/ns/n

s-build.html

• test suites and examples • ns manual

NS3 ns-3.5, July 4, 2009

http://www.nsnam.org/

• C++ and Python• Next release: ns-3.6, October 1, 2009 (multi-freq in WiFi, IPv6)

Platform support FreeBSD, Linux, SolarisWindows (using cygwin)Mac

NS-2 Directory Structure

TK8.4.13 OTcl tclclTcl8.4.13 ns-2 nam-1.12

ns-allinone/opt/ns-allinone-2.30/

...

7

tcl

ex test lib

...

...

examples validation tests

C++ code

OTcl code

mcast

Functionalities and Models

• Wired (point-to-point, LAN)• Routing: DV, LS, PIM-SM etc.

• Transportation: TCP (Reno, Vegas, etc.) and UDP

• Traffic sources: web, ftp, telnet, cbr, stochastic etc.• 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

8

Discrete Event Simulation

• Model world as events• Simulator has list of events• Process: take next one, run it, until done• Each event happens in virtual (simulated) time• Each event happens in virtual (simulated) time� but takes an arbitrary real time

• Ns uses simple model• single thread of control � no locking or race conditions (very easy)

9

Discrete Event Examples

Consider two nodeson an Ethernet:

simplequeuingmodel:

t=1, A enqueues pkt on LANt=1.01, LAN dequeues pkt

and triggers B

10

A B

detailedCSMA/CDmodel:

t=1.0: A sends pkt to NICA’s NIC starts carrier sense

t=1.005: A’s NIC concludes cs,starts tx

t=1.006: B’s NIC begins reciving pktt=1.01: B’s NIC concludes pkt

B’s NIC passes pkt to app

Architecture

• Object-oriented (C++, Otcl)• data / control separation• C++ for data • per packet processing, core of ns• fast to run, detailed, complete control

11

• 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

+ running vs. writing speed

– Learning and debugging (two languages)

OTcl and C++: The Duality

C++Pure OTclobjects

12

otcl

C++/OTcl split objects Pure C++

objects

Basic Tcl

variables:set x 10

puts “x is $x”

functions and expressions:set y [ pow x 2]

procedures:proc pow {x n} {

if {$n == 1} { return $x }

set part [pow x [expr $n-1]]

return [expr $x*$part]

}

Also lists, associative arrays, etc.

=> can use a real programming language to build network topologies, traffic models, etc.

13

set y [ pow x 2]

set y [expr x*x]

control flow:if {$x > 0} { return $x }

else {

return [expr -$x] }

while { $x > 0 } {

puts $x

incr x –1

}

Basic OTcl

Class Person

# constructor :Person instproc init {age} {

$self instvar age_set age_ $age

# subclass:

Class Kid - superclass Person

Kid instproc greet {} {

$self instvar age_

puts “$age_ years old kid:

14

set age_ $age}

# method :Person instproc greet {} {

$self instvar age_puts “$age_ years old:

How are you doing?”}

puts “$age_ years old kid: What’s up, dude?”

}

set a [ new Person 45]set b [ new Kid 15]$a greet$b greet

NS Components

Pre-processing

Post-processingSimulator

15

Traffic and topology generators

Trace analysysTcl /Awk/Perl

Outline

•Overview• Running NS

16

Running NS

• Create the event scheduler

• Turn on tracing

• Create network

• Setup routing• Setup routing

• Insert errors

• Create transport connection

• Create traffic

• Transmit application-level data

17

Creating Event Scheduler

• Create event schedulerset ns [new Simulator]

• Schedule events$ns at <time> <event> OTcl

TclCL

Event

Scheduler

Network Components

18

$ns at <time> <event>

$ns at 5.0 “finish”

• Start scheduler$ns run

Tcl

OTcl

Event

Scheduler

C/C++

NS-2

Event Scheduler

• Event: at-event and packet• List scheduler: default• Heap and calendar queue scheduler

• Real-time scheduler

19

• Real-time scheduler• Synchronize with real-time• Network emulation

set ns_ [new Simulator]

$ns_ use-scheduler Heap

$ns_ at 300.5 “$self halt”

Discrete Event Scheduler

time_, uid_, next_, handler_

head_ ->

handler_ -> handle()head_ ->

20

handler_ -> handle()

time_, uid_, next_, handler_insert

Hello World - Interactive Mode

Interactive mode:

swallow 71% ns% set ns [new

Simulator]_o3

Batch mode:simple.tcl

set ns [new Simulator]

$ns at 1 “puts \“Hello World! \ ””

21

_o3% $ns at 1 “puts

\“Hello World!\””1% $ns at 1.5 “exit”2% $ns runHello World!swallow 72%

World! \ ””

$ns at 1.5 “exit”

$ns run

swallow 74% ns simple.tcl

Hello World!

swallow 75%

Creating Network

• Nodesset n0 [$ns node]

set n1 [$ns node]

• Links and queuing

n0 n1

• Links and queuing$ns duplex-link $n0 $n1 <bandwidth>

<delay> <queue_type>

<queue_type>: DropTail, RED, CBQ, FQ, SFQ, DRR

$ns duplex-link-op $no $n1 OPTIONS

22

Setup Routing

• Unicast$ns rtproto <type>

<type>: Static, Session, DV, cost, multi-path

• Multicast$ns multicast (right after [new Simulator])

$ns mrtproto <type>

<type>: CtrMcast, DM, ST, BST

23

Creating Connection: UDP

• UDPset udp [new Agent/UDP]

set null [new Agent/Null]

$ns attach - agent $n 0 $udp$ns attach - agent $n 0 $udp

$ns attach-agent $n1 $null

$ns connect $udp $null

24

n0 n1

udp null

Creating Traffic: On Top of UDP

• CBRset src [new Application/Traffic/CBR]

$src attach-agent $udp

• Exponential or Pareto on-off• Exponential or Pareto on-offset src [new Application/Traffic/Exponential]

set src [new Application/Traffic/Pareto]

$src attach-agent $udp

25

n0 n1

udp nullscr

Structure of a Unicast Node

26

Structure of a Simplex Link

27

Creating Connection: TCP

• TCPset tcp [new Agent/TCP]

set tcpsink [new Agent/TCPSink]

$ns attach - agent $n 0 $tcp$ns attach - agent $n 0 $tcp

$ns attach-agent $n1 $tcpsink

$ns connect $tcp $tcpsink

28

n0 n1

tcp tcpsink

Creating Traffic: On Top of TCP

• FTPset ftp [new Application/FTP]

$ftp attach-agent $tcp

• Telnet• Telnetset telnet [new Application/Telnet]

$telnet attach-agent $tcp

29

n0 n1

tcp tcpsinkftp

Example

n0 n4tcp sink

ftp W=32

30

n0

n1

n2 n3

n4

n5tcp sink

ftp

5Mb, 15ms10Mb,2ms 10Mb,2ms

W=32

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

31

TCP 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 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

32

Tracing

• 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• Must appear immediately after creating scheduler

• Turn on tracing on specific links

$ns trace-queue $n0 $n1

$ns namtrace-queue $n0 $n1

• Event tracing (support TCP right now)

• Record “event” in trace file: $ns eventtrace-all

33

Trace file

34

Monitoring

•Queue monitor set qmon [$ns monitor-queue $n0 $n1 $q_f $sample_in terval]

•Get statistics for a queue$qmon set pdrops_$qmon set pdrops_

•Record to trace file as an optional29.000000000000142 0 1 0.0 0.0 4 4 0 1160 1160 0

• Flow monitorset fmon [$ns_ makeflowmon Fid]

$ns_ attach-fmon $slink $fmon

$fmon set pdrops_

35

nam Tracing

• Variable tracing in namAgent/TCP set nam_tracevar_ true$tcp tracevar srtt_

$tcp tracevar cwnd_

•$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

36

Visualization Tools

• nam-1 (Network AniMator Version 1)• Packet-level animation

• Well supported by ns

• xgraph•

•• Conversion from ns trace to xgraph format

37

xgraph

• 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:• /opt/ns-allinone-2.30/xgraph-12.1

38

nam

• Basic visualization•Topology layout•Animation control•• Synchronous replay

• Fine-tune layout• TCP/SRM visualization• Editor: generate ns simulation scripts

39

ns����nam Interface

• Color• Node manipulation• Link manipulation• Link manipulation• Topology layout• Protocol state•Misc

40

nam Interface: Color

• Color mapping$ns color 1 red

$ns color 2 blue

$ns color 3 chocolate$ns color 3 chocolate

• Color ↔ flow id association$tcp0 set fid_ 1 ;# red packets

$tcp1 set fid_ 2 ;# blue packets

41

nam Interface: Nodes

• Color$node color red

• Shape (can’t be changed after sim starts)$node shape box ;# circle, box, hexagon$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\””

42

nam Interfaces: Links

• Color$ns duplex-link-op $n0 $n1 color "green"

• Label$ns duplex - link - op $n 0 $n1 label "abced"$ns duplex - link - op $n 0 $n1 label "abced"

• Dynamics (automatically handled)$ns rtmodel Deterministic {2.0 0.9 0.1} $n0 $n1

• Asymmetric links not allowed

43

nam 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

44

nam Interface: Protocol State

• Monitor values of agent variables

$ns add-agent-trace $srm0 srm_agent0

$ns monitor - agent - trace $srm 0$ns monitor - agent - trace $srm 0

$srm0 tracevar C1_

$srm0 tracevar C2_

# … …

$ns delete-agent-trace $tcp1

45

nam 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"

46

nam

47

Summary: Generic Script Structure

set ns [new Simulator]

# [Turn on tracing]

# Create topology

# Setup packet loss, link dynamics

# Create routing agents# Create routing agents

# Create:

# - multicast groups

# - protocol agents

# - application and/or setup traffic sources

# Post-processing procs

# Start simulation

48