45
1. د ی یا م ن ب ص ن را ر ی ر های ل ی ا دا ف ی یsudo apt-get install build- essential autoconf automake libxmu-dev gcc-4.3 2 ل ی ا را در ف ر ی ر رات ی ی غ ت د، دی* ه ش واج م طا ا خ ر ی گ . اns-allinone- 2.34/otcl-1.13/Makefile.in د. ی ن ک مال ع ا CC = @CC@ د ی ه د ر ی ی ی غ ت ر ی ر ت ل ه حا CC = gcc-4.3 1

1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

Embed Size (px)

Citation preview

Page 1: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

نمایید .1 نصب را زیر های فایل .ابتدا     sudo apt-get install build-essential

autoconf automake libxmu-dev   gcc-4.3فایل. 2 در را زیر تغییرات شدید، مواجه خطا با اگر

ns-allinone-2.34/otcl-1.13/Makefile.in اعمالکنید.

CC = @CC@                                        بدهید تغییر زیر حالت :بهCC = gcc-4.3

1

Page 2: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

در ns-allinone-2.34.tar.gzفایل. 3 کپی home/userراحالت Terminalکنید. از را فایل زیر دستور با و کنید باز را

. نمایید خارج زیپtar xvfz ./ns-allinone-2.34.tar.gz

دستور. 4 از استفاده :cdبا بروید فایل محل به $cd ns-allinone-2.34

( منبع از را نیاز مورد های پکیج و ها دانلود(  repositoryفایل. کنید نصب و

$sudo apt-get install build-essential autoconf automake libxmu-dev

2

Page 3: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

:NS2نصب. 5 دستور از استفاده $ با/.install

6: دستور. از استفاده با نیاز مورد مسیرهای بعضی ویرایش

 $gedit ~/.bashrc . جای به شما البته کنید اضافه شده باز فایل انتهای به را زیر home/heidari /خطوط

. بگدارید را خود فایل مسیر # LD_LIBRARY_PATH

OTCL_LIB=/home/heidari/ns-allinone-2.34/otcl-1.13NS2_LIB=/home/heidari/ns-allinone-2.34/libX11_LIB=/usr/X11R6/libUSR_LOCAL_LIB=/usr/local/libexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OTCL_LIB:$NS2_LIB:$X11_LIB:$USR_LOCAL_LIB

# TCL_LIBRARY

TCL_LIB=/home/heidari/ns-allinone-2.34/tcl8.4.18/library

USR_LIB=/usr/lib

export TCL_LIBRARY=$TCL_LIB:$USR_LIB

# PATHXGRAPH=/home/heidari/ns-allinone-2.34/bin:/home/ram/ns-allinone-2.34/tcl8.4.18/unix:/home/heidari/ns-allinone-2.34/tk8.4.18/unix:/home/heidari/ns-allinone-2.34/xgraph-12.1/NS=/home/heidari/ns-allinone-2.34/ns-2.34/NAM=/home/heidari/ns-allinone-2.34/nam-1.13/export PATH=$PATH:$XGRAPH:$NS:$NAM

دستور از استفقاده .source ~/.bashrc$  با نمایید ذخیره را تغییرات 3

Page 4: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

و. 7 :validationتایید نصب $ cd ns-2.34         $ ./validate

. کشد می طول ای دقیقه چند و است زمانبر مرحله این کهپایان از باید nsدستور validationبعد و کنید تایپ را

. عالمت % دستور خروج برای ببینید .exitرا کنید اجرا را $ns

% $ $exit

4

Page 5: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

NS2معرفی

5

Page 6: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

Most UNIX and UNIX-like systems FreeBSD Linux Solaris

Windows 98/2000/2003/XPCygwin required Some work , some doesnt

6

Page 7: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

NS – SimulatorNAM – Network AniMator

visual demonstration of NS outputPreprocessing

Handwritten TCL orTopology generator

Post analysisTrace analysis using Perl/TCL/AWK/MATLAB

7

Page 8: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

From the user’s perspective, NS−2 is an OTcl interpreter that takes an OTcl script as input and produces a trace file as output.

8

Page 9: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

ns-2 is an discrete event driven simulation Physical activities are translated to events Events are queued and processed in the order of their

scheduled occurrences Time progresses as the events are processed

1 2

Time: 1.5 sec Time: 1.7 sec

Time: 1.8 secTime: 2.0 sec

9

Page 10: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

Discrete Event Scheduler

time_, uid_, next_, handler_

head_ ->

handler_ -> handle)(

time_, uid_, next_, handler_insert

head_ ->

Event Scheduler

10

Page 11: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

Non-Real time schedulersImplementations : List , Heap , Calender Calender is default

Real time schedulersUsed for emulation for direct interaction with

real NT. Basic use of an event scheduler:

schedule simulation events, such as when to start an FTP application, when to finish a simulation, or for simulation scenario generation prior to a simulation run.

11

Page 12: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

Simulation Scenario

Tcl Script

C++ Implementation

1 2

set ns_ [new Simulator]

set node_(0) [$ns_ node]

set node_(1) [$ns_ node]

class MobileNode : public Node {

friend class PositionHandler;public: MobileNode();

••

}

12

Page 13: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

otcl: Object-oriented supporttclcl: C++ and otcl linkageDiscrete event schedulerData network (the Internet) components

tcl8.4

otcl

tclcl

ns-2EventScheduler

Netw

orkC

omponent

13

Page 14: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

A ddr

R ep lica to r

M C a s t

M P a th

H a sh

C la ss ife r

D e la y

A ge nt

A p p lica tion

Q ueue

T ra ce

C on ne c to r

NSO je ct

T c lO b je ct

14

Page 15: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

UDP

RBP

R eno

RB P

V eg as

S a ck1

N ewR eno

Tap

S in k

Fu llTC P

A dap tive

S RM

TCP DSDV AO DV TO RA DSR

A ge nt

Te ln e t

E xpo n en tia l

P are to

CBR

T ra ce

T ra ff ic

FTP

A pp lica tion

D ro p ta il

R E D

FQ

S FQ

DR R

CBQ

Q ueue

E nq

D eq

D ro p

T ra ce

15

Page 16: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

NS-2 Directory Structure

sim

tk8.4 otcl Tcltcl8.4 ns-2 nam-1

tcl

ex test lib

...

...

tcl code

example

validation test

C++ code

tcl code core

16

Page 17: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

Cla

ssifier

Cla

ssifier

Agent

Link

Agent

Agent

Node

Addr

Port

Node entry point

Local

Link Link

Agents are either protocol endpoints or related objects that generate/fill-in

packet fields.

Classifiers: packet demultiplexers.

17

Page 18: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

18

Page 19: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

Packets (events)packet

Size determined at compile

time

cmn header

Size determined at compile

time

tcp header

Size determined at compile

time

ip header

Size determined at compile

time

trace header

bits( )

accessdata( )

next_Size

determined at

simulation config

time

- packet size

- timestamp

- type

- UID

- interface label

19

Page 20: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

Links

Enq Trace Deq Trace Rcv Trace

Drp Trace

Delay TTL

Drop head

QueueLink entry point

Links: keeps track of “from” and “to” node objects.blocked

20

Page 21: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

Link

Link

Application

N1 N2

Classifier

Classifier

Agent

Node

Addr

Port

LocalC

lassifier

Classifier

Agent

Node

Addr

Port

Local

Enq Trace Deq Trace Rcv Trace

Drp Trace

Delay TTL

Drop head

Queue

Application

21

Page 22: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

C++ is used for the creation of objects because of speed and efficiency.

NS-2 Code contains two sets of languages, namely C++ and OTcl.

OTcl is used as a front-end to setup the simulator, configure objects and schedule events because of its ease of use.

22

Page 23: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

Why two languages? (Tcl & C++) C++: Detailed protocol simulations

require systems programming language byte manipulation, packet processing,

algorithm implementation Run time speed is important Turn around time (run simulation, find bug,

fix bug, recompile, re-run) is slower Tcl: Simulation of slightly varying

parameters or configurations quickly exploring a number of scenarios iteration time (change the model and re-

run) is more important23

Page 24: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

Tcl or C++? Tcl

Simple Configuration, Setup, Scenario

If it’s something that can be done without modifying existing Tcl module.

C++Anything that requires processing

each packetNeeds to change behavior of existing

module 24

Page 25: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

Shadowing

TclObject

Agent

Agent/DSDV

Agent/DSDV OTcl shadow object

Agent/DSDV C++ object

TclObject()

Agent()

DSDVAgent()

OTcl classhierarchy

C++ classhierarchy

25

Page 26: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

Agent/DSDVConstructor

AgentConstructor

Invoke parent

TclObjectConstructor

Invoke parent

AgentDSDV()Constructor

Create C++

Agent()Constructor

Invoke parent

TCL

C++TclObject()

ConstructorInvoke parent

Do nothing,

returnbind and return

bind and return

OTcl shadow

init complete

init complete

26

Page 27: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

NS-2 Directory Structure

sim

tk8.0 otcl Tcltcl8.0 ns-2 nam-1

tcl

ex test lib

...

...

tcl code

example

validation test

C++ code

tcl code core

27

Page 28: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

مسیر 1. در و کنیم می دانلود یا نوشته را -ns/پروتکلalllinone-2.34/ns-2.34 قرار ها پروتکل سایر موازات به

. دهیم میبدهیم تغییر را زیر های فایل باید پروتکل کردن اضافه .برای

$NS_ROOT/Makefile $NS_ROOT/queue/priqueue.cc $NS_ROOT/common/packet.h $NS_ROOT/trace/cmu-trace.h $NS_ROOT/trace/cmu-trace.cc $NS_ROOT/tcl/lib/ns-packet.tcl $NS_ROOT/tcl/lib/ns-lib.tcl $NS_ROOT/tcl/lib/ns-agent.tcl $NS_ROOT/tcl/lib/ns-mobilenode.tcl

28

Page 29: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

3 دهیم می تغییر را زیر فایل ابتدا /~ns-allinone-2.34/ns-2.34/Makefile

خط . 269در نمایید اضافه را زیر کدblackholeaodv/blackholeaodv.o\

فایل. 4 به را زیر خطوط/~ns-allinone-2.34/ns-2.34/queue/priqueue.cc

خط .93از نمایید اضافه// blackholeAODV patchcase PT_blackholeAODV:

29

Page 30: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

فایل. 5 اصالح/~ns-allinone-2.34/ns-2.34/common/packet.h file.اضافه PT_NTYPE to 63 باید را خودمون پروتکل و دهیم قرار

را آن و کنیم .PT_blackholeAODV = 62می دهیم می قرارخط از فایل همین .85در باشد شکل این به باید تغییرات

// blackholeAODV packetstatic const packet_t PT_blackholeAODV = 62;// insert new packet types herestatic packet_t PT_NTYPE = 63; // This MUST be the

LAST one

30

Page 31: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

فایل. 6 به را زیر تغییرات/~ns-allinone-2.34/ns-2.34/common/packet.h

. کنیم می اعمالtype == PT_AODV ||type == PT_blackholeAODV)

خط .390در نمایید اعمال را زیر تغییرات فایل همین// blackholeAODV patchname_[PT_blackholeAODV] =

"blackholeAODV";

31

Page 32: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

های. 7 فایل باید مرحله این . TcLدر فایل شروع برای کنیم ویرایش -ns ~/راallinone-2.34/ns-2.34/tcl/lib/ns-packet.tcl خط را 633در زیر های کد

. نمایید اضافه blackholeAODV { set ragent [$self create-blackholeaodv-agent $node] }

خط نمایید 860در اضافه را زیر کدهای باید فایل همین . Simulator instproc create-blackholeaodv-agent { node } { # Create blackholeAODV routing agent set ragent [new Agent/blackholeAODV [$node node-addr]] $self at 0.0 "$ragent start" $node set ragent_ $ragent return $ragent }

32

Page 33: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

8. Now we will set port numbers of routing agent. sport is source port, dport is destination port. 

-ns-allinone-2.34/ns-2.34/tcl/lib/ns~/فایل 202خط agent.tcl. میدهیم تغییر زیر صورت به را

Agent/blackholeAODV instproc init args {$self next $args}Agent/blackholeAODV set sport_ 0Agent/blackholeAODV set dport_ 0

33

Page 34: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

خط. 8 -ns-allinone-2.34/ns-2.34/tcl/lib/ns~/فایل 202ازmobilenode.tcl. نمایید اضافه را زیر کدهای

# Special processing for blackholeAODVset blackholeaodvonly [string first

"blackholeAODV" [$agent info class]]if {$blackholeaodvonly != -1 } {$agent if-queue [$self set ifq_(0)] ;# ifq between LL

and MAC}

مسیر. 9 به نهایت در می /ns-allinone-2.34/ns-2.34~/و. میکنیم اجرا را زیر دستورات و رویم

make cleanmake

34

Page 35: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

Creating a Simulator Objectset ns [new Simulator]

Setting up files for trace & NAMset trace_nam [open out.nam w]set trace_all [open all.tr w]

Tracing files using their commands$ns namtrace-all $trace_nam$ns trace-all $trace_all

35

Page 36: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

Closing trace file and starting NAMproc finish { } {

global ns trace_nam trace_all $ns flush-traceclose $trace_namclose $trace_allexec nam out.nam &exit 0}

36

Page 37: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

Creating LINK & NODE topologyCreating NODES

set n1 [$ns node]set n2 [$ns node]set n3 [$ns node]set n4 [$ns node]set r1 [$ns node]set r2 [$ns node]

37

Page 38: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

Creating LINKS$ns duplex-link $N1 $R1 2Mb 5ms DropTailset DuplexLink0 [$ns link $N1 $R1]$ns duplex-link $N2 $R1 2Mb 5ms DropTailset DuplexLink1 [$ns link $N2 $R1]$ns duplex-link $R1 $R2 1Mb 10ms DropTailset DuplexLink2 [$ns link $R1 $R2]$ns duplex-link $R2 $N3 2Mb 5ms DropTailset DuplexLink3 [$ns link $R2 $N3]$ns duplex-link $R2 $N4 2Mb 5ms DropTailset DuplexLink4 [$ns link $R2 $N4]

38

Page 39: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

Orientation of links$ns duplex-link-op $N1 $R1 orient right-

down$ns duplex-link-op $N2 $R1 orient right-

up$ns duplex-link-op $R1 $R2 orient right$ns duplex-link-op $R2 $N3 orient right-

up$ns duplex-link-op $R2 $N4 orient right-

down

39

Page 40: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

40

Page 41: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

41

Page 42: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

Attaching AGENT TCP to NODE 1set TCP1 [new Agent/TCP]$ns attach-agent $N1 $TCP1

Attaching AGENT TCP to NODE 2set TCP2 [new Agent/TCP]$ns attach-agent $N2 $TCP2

Attaching AGENT TCP to NODE 3set TCP3 [new Agent/TCPSink]$ns attach-agent $N2 $TCP3

Attaching AGENT TCP to NODE 4set TCP4 [new Agent/TCPSink]$ns attach-agent $N2 $TCP4

42

Page 43: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

Attaching Application (FTP)set FTP0 [new Application/FTP]set FTP1 [new Application/FTP]$FTP0 attach-agent $TCP0$FTP1 attach-agent $TCP1

43

Page 44: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

$ns at 0.5 "$FTP0 start"$ns at 0.5 "$FTP1 start"$ns at 10.0 "$FTP0 stop"$ns at 10.0 "$FTP1 stop“$ns at 10.0 “finish”Making NS run

$ns run

44

Page 45: 1. ابتدا فایل های زیر را نصب نمایید. sudo apt-get install build-essential autoconf automake libxmu-dev gcc-4.3 2. اگر با خطا مواجه شدید،

45