• 沒有找到結果。

Network Simulation and Testing-ns-2 Tutorial

N/A
N/A
Protected

Academic year: 2021

Share "Network Simulation and Testing-ns-2 Tutorial"

Copied!
74
0
0

加載中.... (立即查看全文)

全文

(1)

Network Simulation and Testing

Polly Huang EE NTU

(2)

ns-2 Tutorial

(3)

Tutorial Overview

• Welcome

• Gratitude

• Audience background

– object-oriented programming? – tcl? – use ns-2 before?

(4)

Tutorial Intensity

• Intended audience

– try to cover a wide range

– researchers, developers, educators

• Cover

– both API & internal

(5)

Schedule: 1

st

Week

2.20-3.10 overview/intro/essential/getting started 3.30-4.20 tcl/otcl/ns-2 fundamentals

4.30-5.20 examples - TCP, RED, multicast, web, wireless

(6)

Schedule: 2

nd

Week

2.20-3.10 lab 1 setup/running examples 3.30-4.20 lab 2 tcl/otcl exercises

(7)

Schedule: 3

rd

Week

2.20-3.10 wired internal 3.30-4.20 wireless internal

4.30-5.20 extending ns-2/making changes/case studies

(8)

Schedule: 4

th

Week

2.20-3.10 lab 4 intermediate ns-2 exercise 3.30-4.20 lab 5 getting data you want

(9)

Outline: Today

• Introduction

– the project, the software, the philosophy – software architecture

– installation and getting started

• tcl/otcl/ns-2 fundamentals

– programming tcl/otcl

(10)

The VINT Project

• Virtual InterNet Testbed

– a common platform for network research

– focus on multi-protocol interactions and scale – http://www.isi.edu/nsnam/vint/index.html

• Follow-up projects

(11)

Multi-state collaboration

• USC/ISI

• ACIRI

• UC Berkeley

• CMU

(12)

VINT People

• Project leads and co-PIs

– Lee Breslau (AT&T Labs-Research) – Deborah Estrin (UCLA)

– Kevin Fall (INTEL Research) – Sally Floyd (AT&T/ACIRI) – Mark Handley (AT&T/ACIRI) – John Heidemann (USC/ISI)

(13)

Project Goal

• To support

collaborative

simulation effort

– promote sharing

• incorporate recent simulation models

– increase confidence in results

• establish regression test suite

(14)

ns-2

• Discrete event simulator

• Packet level

• Link layer and up

• Wired and wireless

(15)

Development Status

• Columbia NEST

• UCB REAL

• ns-1

• ns-2 (as of 2001…)

– 100K lines of C++ code

(16)

Usage and Releases

• Users from approximately

– 600+ institutes – 50+ countries

• Releases

– periodic official releases

– nightly snapshots (probably compiles and works, but buyers beware)

(17)

Platforms

• Most UNIX and UNIX-like systems

 FreeBSD or *BSD  Linux

 Sun Solaris  HP, SGI

(18)

First Words of Caution

• While we have considerable confidence in

ns, ns is

not a polished

and finished

product, but the result of an ongoing effort

of research and development. In particular,

bugs in the software are still being

(19)

Second Words of Caution

• Users of ns are responsible for verifying for

themselves that their simulations are not

invalidated by

bugs

. We are working to

help the users with this by significantly

expanding and automating the validation

tests and demos.

(20)

Third Words of Caution

• Similarly, users are responsible for

verifying for themselves that their

simulations are not invalidated because the

model

implemented in the simulator is not

the model that they were expecting. The

ongoing ns Notes and Documentation

(21)

Tutorial Goals

• Caution to be taken

• Existing capability

• Design and implementation

• Extendibility

(22)

Outline: Today

• Introduction

– the project, the software, the philosophy

– software architecture

– installation and getting started

• tcl/otcl/ns-2 fundamentals

– programming tcl/otcl

(23)

Object-Oriented

+ Reusability

+ Maintainability

– Careful planning ahead

– Performance

(24)

C++ and otcl Separation

• C++ for data

– per packet action

• otcl for control

– periodic or triggered action

+ Compromize between composibility and

speed

(25)

otcl and C++: The Duality

C++

(26)

tcl Interpreter With Extents

• otcl: object-oriented support • tclcl: C++ and otcl linkage

tcl otcl tclcl ns-2 Event Scheduler N etw or k C om po ne nt

(27)

Installation

• Getting the pieces

– (tcl/tk8.4.5), otcl, tclcl, ns-2, (and nam-1)

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

[email protected]

[email protected]

(28)

Hello World - Interactive Mode

swallow 71% ns

% set ns [new Simulator]

_o3

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

1

% $ns at 1.5 “exit”

2

(29)

Hello World - Passive Mode

simple.tcl

set ns [new Simulator]

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

$ns run

(30)

Outline: Today

• Introduction

– the project, the software, the philosophy – software architecture

– installation and getting started

• tcl/otcl/ns-2 fundamentals

– programming tcl/otcl

(31)

Fundamentals

• tcl

• otcl

– ftp://ftp.tns.lcs.mit.edu/pub/otcl/doc/tutorial.html

• ns-2

– http://www.isi.edu/nsnam/ns/ns_doc.ps.gz – http://www.isi.edu/nsnam/ns/ns_doc.pdf

(32)

Basic tcl

proc test {} { set a 43 set b 27

set c [expr $a + $b]

set d [expr [expr $a - $b] * $c] for {set k 0} {$k < 10} {incr k} { if {$k < 5} {

puts “k < 5, pow= [expr pow($d, $k)]”

} else {

puts “k >= 5, mod= [expr $d % $k]”

(33)

Basic otcl

Class mom

mom instproc init {age} { $self instvar age_ set age_ $age

}

mom instproc greet {} { $self instvar age_

Class kid -superclass mom

kid instproc greet {} { $self instvar age_

puts “$age_ years old kid:

What’s up, dude?” }

set a [new mom 45] set b [new kid 15]

(34)

Basic ns-2

• Creating the event scheduler

• [Tracing]

• Creating network

• Computing routes

• Creating connection

• Creating traffic

(35)

Creating Event Scheduler

• Create scheduler

– set ns [new Simulator]

• Schedule event

– $ns at <time> <event>

(36)

Tracing

• Trace packets on all links

– $ns trace-all [open test.out w]

<event> <time> <from> <to> <pkt> <size>--<flowid> <src> <dst> <seqno> <aseqno> + 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

• Trace packets on all links in nam-1 format

(37)

Creating Network

• Nodes

– set n0 [$ns node] – set n1 [$ns node]

• Links & Queuing

– $ns duplex-link $n0 $n1 <bandwidth> <delay> <queue_type>

(38)

Tracing Specific links

• $ns trace-queue $n0 $n1

(39)

Creating Network: LAN

• LAN

– $ns make-lan <node_list> <bandwidth>

<delay> <ll_type> <ifq_type> <mac_type> <channel_type>

– <ll_type>: LL

(40)

Computing routes

• Unicast

– $ns rtproto <type>

(41)

Creating 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

(42)

Creating 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

(43)

Creating Traffic: On Top of TCP

• FTP

– set ftp [new Application/FTP] – $ftp attach-agent $tcp

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

• Telnet

(44)

Creating Traffic: On Top of UDP

• CBR

– set src [new Application/Traffic/CBR]

• Exponential or Pareto on-off

– set src [new Application/Traffic/Exponential] – set src [new Application/Traffic/Pareto]

(45)

Creating Traffic: Trace Driven

• Trace driven

– set tfile [new Tracefile] – $tfile filename <file>

– set src [new Application/Traffic/Trace] – $src attach-tracefile $tfile

(46)

Inserting Errors

• Creating Error Module

– set loss_module [new ErrorModel] – $loss_module set rate_ 0.01

– $loss_module unit pkt

– $loss_module ranvar [new RandomVariable/Uniform]

(47)

Network Dynamics

• Link failures

– route changes reflected automatically – can emulate node failure

(48)

Four Models

• $ns rtmodel-at <time> <up|down> $n0 $n1

• $ns rtmodel Trace <config_file> $n0 $n1

• $ns rtmodel <model> <params> $n0 $n1

• <model>: Deterministic, Exponential

• <params>: [<start>] <up_interval>

<down_interval> [<finish>]

(49)

Outlines

• Essentials

• Getting Started

• Fundamental tcl, otcl and ns-2

(50)

Case Studies

• TCP (tcp.tcl)

• Web (web.tcl & dumbbell.tcl)

• Queuing - RED (red.tcl)

(51)

Visualization Tools

• nam-1 (Network AniMator Version 1)

• xgraph

(52)

Basic ns-2: Special Topics

• multicast support

• application-level support

• wireless support

(53)

Multicast - 5 components

• enable multicast capability

• configure multicast routing

• create a multicast group/sender

• create a multicast receiver

(54)

Enabling multicast capability

• set ns [new Simulator -multicast on]

• or $ns multicast (right after [new

(55)

Configuring multicast routing

• $ns mrtproto <type>

(56)

Creating a multicast group

• set udp [new Agent/UDP]

• $ns attach-agent $n0 $udp

• set group [Node allocaddr]

• $udp set dst_addr_ $group

(57)

Creating a multicast receiver

• set rcvr [new Agent/NULL]

• $ns attach-agent $n1 $rcvr

• $ns at <time> “$n1 join-group $rcvr

$group”

(58)

Attaching a traffic source

• set cbr [new Application/Traffic/CBR]

• $cbr attach-agent $udp

(59)

Application - 2 components

• two-way TCP

(60)

Application: Two-way TCP

• FullTcp connection

– set tcp1 [new Agent/TCP/FullTcp] – set tcp2 [new Agent/TCP/FullTcp] – $ns attach-agent $n1 $tcp1

– $ns attach-agent $n2 $tcp2 – $ns connect $tcp1 $tcp2

(61)

Application: TcpApp

• User data transfer

– set app1 [new Application/TcpApp $tcp1] – set app2 [new Application/TcpApp $tcp2] – $app1 connect $app2

– $ns at 1.0 “$app1 send <data_byte> \”<ns-2 command>\””

(62)

Wireless - 5 components

• setup

• node configuration

– layer 3-2, layer 1, tracing, energy

• node coordinates

• node movements

• nam tracing

(63)

Setup

• set ns [new Simulator]

• set topo [new Topography]

(64)

Node Configuration: Layer 3-2

• $ns node-config

– adhocRouting <adhoc routing type> – llType LL

– ifqType Queue/DropTail/PriQueue – ifqLen <queue length>

– macType Mac/802_11

(65)

Node Configuring: Layer 1

• $ns node-config

– phyType Phy/WirelessPhy

– antType Antenna/OmniAntenna – propType <propagation model>

– channelType Channel/WirelessChannel – topoInstance $topo

(66)

Node Configuration: Tracing

• $ns node-config

– agentTrace <ON or OFF> – routerTrace <ON or OFF> – macTrace <ON or OFF>

(67)

Node Configuration: Energy

• $ns node-config

– energyModel EnergyModel – initialEnergy <total energy> – txPower <energy to transmit> – rxPower <energy to receive>

(68)

Creating Nodes

(69)

Node Coordinates

• $mnode set X_ <x>

• $mnode set Y_ <y>

• $mnode set Z_ 0

(70)

Node Movement

• Disable random motion

– $mnode random-motion 0

• Specified

– $ns at 1.0 “$mnode setdest <x> <y> <speed>”

• Random

(71)

Tracing

• at the beginning

– $ns namtrace-all-wireless [open test.nam w] <length> <width>

• initialize nodes

(72)

Case Studies

• multicast (mcast.tcl)

(73)

Basic ns-2: Not Covered

• mobile IP

• satellite

• DiffServ

• emulation

(74)

Next Week

• Bring your laptop

• Local FreeBSD

– Xwindows and network

• Remote FreeBSD

參考文獻

相關文件

On another level, though, the similarities to the research world are strong: you succeed by building networks, the glue that holds relationships together is the values that you

- [ Configuration Properties &gt; Microsoft Macro Assembler &gt; General &gt; Include Paths ]. • Enter the paths to your

,並於後方括號&lt; &gt;內標示『須經藥事會:是/否;品項清單備考欄位

在撰寫網頁應用程式 HTML 的語法當中,以下何者錯誤?(A)&lt;a&gt;是用來製作超連結的標記(Tag) (B)HREF 是一個在&lt;a&gt;與&lt;/a&gt;中指定其他

• Both the galaxy core problem and the abundance problem are associated with dwarf galaxies on the scale &lt; few kpc !!..

 for…迴圈自初值開始判斷 &lt;條件判斷&gt; 是否為 true,若為 true 則執行 for 迴圈內的敘述,並依 &lt;增量值&gt;,每次增 加 (或減少) 指定的增量值,直至 &lt;條件判斷&gt;

if left_sum&gt;=right_sum and left_sum&gt;=cross_sum return (left_low,left_high,left_sum). else if right_sum&gt;=left_sum and right_sum&gt;=cross_sum

Home &gt; Education System and Policy &gt; Primary and Secondary School Education &gt; Applicable to Primary and Secondary School &gt; Direct Subsidy Scheme..