آموزش نصب ns2 با جزییات

بدون ديدگاه

آموزش نصب ns2 در ubuntu

در دوره رایگان آموزش ns2 قصد داریم شما را با شبیه ساز شبکه ns2 آشنا کنیم. … معرفی NS2; جلسه ۳: دانلود و نصب NS2 در لینوکس; جلسه ۴: دانلود و نصب NS2 در ویندوز …
نصب NS2.35 روی لینوکس Ubuntu 16.04. ۱۳۹۶/۰۳/۱۴ بدون نظر سید مجید شبیری. دانشجوی گرامی، برای مشاهده این جلسهآموزشی، ابتدا باید login کنید. آموزش های …
اینجا قصد دارم آموزش نصب این نسخه یعنی ns2 رو بذارم. … طریق دستور زیر در اوبونتو قابل نصب است اما نمونه‌ها و ابزارهای جانبی باید جدا نصب بشن.
Oct 24, 2013 – نصب NS2 در 2 دقیقه بر روی لینوکس توزیع Ubuntu … ساز را به راحتی و در کمترین زمان نصب کرده و از آموزش های تخصصی این انجمن بهره مند گردند.
 آموزش نصب NS2 در لینوکس Ubuntu را به صورت تصویری و گام به گام به همراه فایل دانلود NS2.35 و فیلمآموزش نصب NS2 را تهیه کرده ایم.

توضیحات ns_example.tcl :

قبل از هر کار در هر اسکریپت tcl برای NS2 باید یک شیئ شبیه ساز ایجاد کرد. این کار با دستور زیر انجام می شود

set ns [new Simulator]

این دستور یک شیئ شبیه ساز NS را ایجاد می کند و آنرا به متغیر  NS منصوب می کند .

با استفاده از روال ها و خصوصیات این شیئ می توان  توپولوژی شبکه را پیاده سازی کرد.

به عنوان مثال شیئ شبیه ساز دارای متدهایی است که عملیات زیر را انجام می دهند :

  • گره ها و خطوط ارتباطی بین آنها را ایجاد می کند .
  • اشیا مربوط به عناصر شبکه ( با attache-agent ) را به یکدیگر متصل می کند .
  • ارتباط بین منابع ترافیکی و دریافت کننده ها را برقرار می کند .
  • پارامتر های نمایش توسط نرم افزار  NAM را مشخص می کند .

(NAM ابزاری برای نمایش گرافیکی شبیه ساز NS است و محیطی را در اختیار می گذارد که بتوان با استفاده از آن حرکت واقعی بسته های داده ای را مشاهده کرد. )

 

$ns color 1 Blue

$ns color 2 Red

این خطوط برای تعیین رنگ جریان پکت ها استفاده می شود. Syntax کلی آن به صورت زیر است :

$ns color fid color

 

در اینجا جریان پکت ها با fid شماره 1  با رنگ آبی و جریان پکت ها با fid شماره 2  با رنگ قرمز نمایش داده می شود.

 

این بخش برای تنظیم محیط گرافیکی نمایش شبیه ساز ( NAM )  است و تاثیری در شبیه سازی ندارد .

NAM برای داده های ترسیم نیاز به یک فایل باز دارد که در اولین خط کد این بخش فایل out.nam رابرای نوشتن باز کرده و نام nf را به آن می دهیم . در خط دوم مشخص میکنیم که شیئ شبیه ساز ، همه ی داده های شبیه سازی که به NAM مربوط می شود را در فایل out.nam  بنویسد.

set nf [open out.nam w]

$ns namtrace-all $nf

 

تعریف روال پایان :

proc finish {} {

global ns nf

$ns flush-trace

#Close the NAM trace file

close $nf

#Execute NAM on the trace file

exec nam out.nam &

exit 0

}

یک روال پایان تعریف کردیم تا در خاتمه کار با فراخوانی آن از شبیه ساز خارج شویم.

 

در این مرحله 4 نود شبکه ایجاد می کنیم . هر نود را با ایجاد یک شیئ جدید با دستور $node تولید کرده و آنرا با دستور set به متغیر های n0 تا n4 اختصاص می دهیم.

 

set n0 [$ns node]

set n1 [$ns node]

set n2 [$ns node]

set n3 [$ns node]

 

اکنون نوبت به ایجاد لینک ارتباطی بین نود ها رسیده است :

$ns duplex-link $node1 $node2 Bandwidth Delay Queue-type

 

پس لینک های ارتباطی را با مشخصات داده شده ( پهنای باند – تاخیر – نوع صف ) تعریف می نماییم.

$ns duplex-link $n0 $n2 2Mb 10ms DropTail

$ns duplex-link $n1 $n2 2Mb 10ms DropTail

$ns duplex-link $n2 $n3 1.7Mb 20ms DropTail

 

همچنین می توان اندازه اندازه صف هر لینک را محدود کرد :

$ns queue-limit $n2 $n3 10

اینجا اندازه لینک ارتباطی بین نود های n2 و n3  را 10  محدود کردیم .

 

برای بهبود شمای توپولوژی شبکه بهتر است مکان نودها را مشخص کرد .

$ns duplex-link-op $n0 $n2 orient right-down

$ns duplex-link-op $n1 $n2 orient right-up

$ns duplex-link-op $n2 $n3 orient right

برای مشاهده ی تاثیر این خطوط بر ظاهر شبیه ساز پیشنهاد میکنم اسکریپت را بدون این خطوط نیز اجرا کنید .

امکان مانیتور کردن پرقدرت در NS یکی از مزایای آن است . در NS میتوان صف هر لینک را نیز مانیتور کرد :

$ns duplex-link-op $n2 $n3 queuePos 0.5

 

حال می توانید بسته ها را در صف ببینید و مشاهده کنید کدام یک دور انداخته می شوند . در اینجا با صف از نوع Droptail فقط پکت های آبی دور ریخته میشود . برای مشاهده تاثیر نوع صف آنرا به SFQ تغییر دهید و دوباره آنرا اجرا کنید :

$ns duplex-link $n0 $n2 2Mb 10ms SFQ

$ns duplex-link $n1 $n2 2Mb 10ms SFQ

$ns duplex-link $n2 $n3 1.7Mb 20ms SFQ

 

 

تا این مرحله فقط سه نود و لینک ارتباطی بین آنها را ایجاد کرده و مکان آنها را در NAM مشخص کردیم ولی هنوز هیچ نوع داده ای برای تبادل بین نودها مشخص نشده است.

در NS  همیشه داده از یک عامل ) agent )  به دیگری ارسال می شود . بنابراین گام بعدی ایجاد عامل های ارسال کننده  ( منابع ترافیکی ) و دریافت کننده داده است.

 

 

برقراری یک اتصال TCP :

set tcp [new Agent/TCP]

$tcp set class_ 2

$ns attach-agent $n0 $tcp

set sink [new Agent/TCPSink]

$ns attach-agent $n3 $sink

$ns connect $tcp $sink

$tcp set fid_ 1

در این خطوط یک عامل TCP ایجاد کردیم. کاربران NS2 می توانند هر نوع عامل یا منبع ترافیکی را  ایجاد کنند . در واقع عامل ها و منابع ترافیکی  شیئ های اصلی در  NS هستند که عمدتا در  C++  پیاده سازی شده و در OTCL لینک می شوند. برای ایجاد عامل ها و منابع ترافیکی ، کاربر باید نام کلاس های این اشیا را بداند ( Agent/TCP ، Agent/TCPSink ، Application/Ftp ). این اطلاعات در مستندات NS موجود است ولی یک راه میانبر برای آن فایل

/ns-2/tcl/libs/ns-default.tcl

است. این فایل حاوی مقادیر پیش فرض پارامتر های قابل پیکربندی برای اشیا شبکه در NS است .بنابراین راهنمای خوبی برای مشخص کردن اینکه چه نوع شی های شبکه در NS قابل دسترس است و پارامتر های قابل تغییر در NS است .

می توانید پارامتر های مناسب برای هر نوع عامل را در صفحه راهنمای  NS ببینید :

( http://www.isi.edu/nsnam/ns/doc/index.html )

روال attach-agent  یک عامل ایجاد شده را به یک نود پیوند می دهد .

$ns attach-agent node agent

به عنوان مثال :

$ns attach-agent $n0 $tcp

 

قدم بعدی ساختن یک اتصال شبکه منطقی بین اتصالات است. کد زیر یک ارتباط شبکه را با تنظیم آدرس مقصد و گروه آدرس پورت برای هر شبکه برقرار می کند .

 

$ns connect agent1 agent2

به عنوان مثال درکد زیر :

$ns connect $tcp $sink

ارتباط منطقی بین عامل های tcp و sink برقرار شده است .

 

 

در این مرحله منبع ترافیکی FTP را ایجاد میکنیم.

 

#Setup a FTP over TCP connection

set ftp [new Application/FTP]

$ftp attach-agent $tcp

$ftp set type_ FTP

 

 

ایجاد عامل udp  و برقراری ارتباط از نوع udp بین n1 و n3

#Setup a UDP connection

set udp [new Agent/UDP]

$ns attach-agent $n1 $udp

set null [new Agent/Null]

$ns attach-agent $n3 $null

$ns connect $udp $null

$udp set fid_ 2

 

set cbr [new Application/Traffic/CBR]

$cbr attach-agent $udp

$cbr set type_ CBR

$cbr set packet_size_ 1000

$cbr set rate_ 1mb

$cbr set random_ false

 

این خطوط یک تولید کننده ترافیک CBR را به عامل UDP متصل میکند. ( CBR مخففی است برای Constant Bit Rate  )

اندازه بسته روی 1000  بایت تنظیم شده است و سرعت تولید 1 مگابایت در ثانیه است.

خوب هم اکنون تنظیمات شبکه انجام شده است . قدم بعدی نوشتن یک سناریوی شبیه سازی است .

شیئ شبیه ساز توابع برنامه ریزی مختلفی دارد که مهمترین آن تابع time است :

$ns at time  “String”

این شیئ برای زمانبندی شبیه ساز استفاده می شود .

$ns at 0.1 “$cbr start”

$ns at 1.0 “$ftp start”

$ns at 4.0 “$ftp stop”

$ns at 4.5 “$cbr stop”

CBR کار خود را در ثانیه 0.1 شروع می کند و در ثانیه 4.5 خاتمه می دهد و همچنین منبع ترافیکی ftp کار خود را در ثانیه 1.0 آغاز و در ثانیه 4.0 به اتمام می رسد .

 

در آخر کار عامل ها را از یکدیگر جدا می کنیم . اگر چه این کار لازم نیست .

 

$ns at 4.5 “$ns detach-agent $n0 $tcp ; $ns detach-agent $n3 $sink”

 

 

خط آخر نیز برای اجرای ns  است .

 

نوشتن دیدگاه

نشانی ایمیل شما منتشر نخواهد شد.

1 + 16 =