ns2

دانلود فایل

http://www.uplooder.net/cgi-bin/dl.cgi?key=e61ab064f560b2b16951a1f0207006b4

ns2


پیش فرض مثالی از کار با شبیه ساز شبکه Ns2

در این مثال می خواهیم یک شبکه با 4 نود به نام های n1 ، n2 ، n3 و n4 پیاده سازی کنیم که لینک ارتباطی بین n0 و n2 و همچنین n1 و n2 از نوع duplex با پهنای باند 2 مگابیت در ثانیه و تاخیر 10 میلی ثانیه است و لینک duplex بین n2 و n3 دارای پهنای باند 1.7 مگابیت در ثانیه و تاخیر 20 میلی ثانیه است .


هر نود از یک صف از نوع DropTail با حداکثر اندازه 10 استفاده میکند.
n0 حاوی یک عامل tcp و n1 حاوی یک عامل tcp-sink است .
عامل هاي شبکه نشانگر نقاط انتهايي يک اتصال لايه شبکه اند که بسته هاي اين لايه توليد کرده و در طرف ديگر تحويل لايه متناظر مي دهند . بخشي از عامل توسط OTCL و بخشي از آن به زبان C++ طراحي شده است . عامل در پياده سازي پروتکل هاي لايه‌اي مختلف استفاده مي‌شود .
) به طور پیش فرض اندازه پکت هایی که یک عامل tcp میتواند تولید کند 1 کیلو بایت است .
یک عامل tcp sink پکت های Ack تولید و به فرستنده پیام ارسال میکند و پکت هاب دریافت شده را آزاد میکند . (
جزئیات بیشتر را در حین نوشتن اسکریپت ارائه خواهم داد .
خوب نوشتن اولین اسکریپت Tcl برای پیاده سازی توپولوژی شکل 1-1 را شروع میکنیم:
میتوانید اسکریپت هایی Tcl را در هر برنامه ویرایشگر متن بنویسید.
nano ns_example.tcl

کد:
#Create a simulator object
set ns [new Simulator]

#Define different colors for data flows (for NAM)
$ns color 1 Blue
$ns color 2 Red

#Open the NAM trace file
set nf [open out.nam w]
$ns namtrace-all $nf

#Define a 'finish' procedure
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
}

#Create four nodes
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]

#Create links between the nodes
$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

#Set Queue Size of link (n2-n3) to 10
$ns queue-limit $n2 $n3 10

#Give node position (for NAM)
$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
	
#Monitor the queue for link (n2-n3). (for NAM)
$ns duplex-link-op $n2 $n3 queuePos 0.5


#Setup a TCP connection
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

#Setup a FTP over TCP connection
set ftp [new Application/FTP]
$ftp attach-agent $tcp
$ftp set type_ FTP


#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

#Setup a CBR over UDP connection
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


#Schedule events for the CBR and FTP agents
$ns at 0.1 "$cbr start"
$ns at 1.0 "$ftp start"
$ns at 4.0 "$ftp stop"
$ns at 4.5 "$cbr stop"

#Detach tcp and sink agents (not really necessary)
$ns at 4.5 "$ns detach-agent $n0 $tcp ; $ns detach-agent $n3 $sink"

#Call the finish procedure after 5 seconds of simulation time
$ns at 5.0 "finish"

#Print CBR packet size and interval
puts "CBR packet size = [$cbr set packet_size_]"
puts "CBR interval = [$cbr set interval_]"

#Run the simulation
$ns run

و برای اجرای آن دستور زیر را اجرا کنید :

ns ns_example.tcl

توضیحات 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 ببینید :

روال 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 است .


Omid dot Mohajerani at Gmail dot com

سال نو مبارک


تبریک عید نوروز 92

بهار ثانیه ثانیه می اید…
و اینجا کسی هست که به اندازه شکوفه های بهاری برایت آرزوهای خوب دارد…
::
::
نون و پنیر و سبزی میبوسمت بلرزی نون پنیر و گندم یادت تو قلبه مردم نون و پنیر و فندق لبت همیشه خندون نون و پنیر و رامک! جیگر عیدت مبارک.
::
::
به علت نبودن چرت و پرت از هم اکنون سال نو را به شما تبریک عرض مینماییم
.
از طرف انجمن بیکاران اس ام اس باز ایران
::
::
و بر آمد بهاری دیگر
مست و زیبا و فریبا ، چون دوست
سبدی پیدا کن ،
پر کن از سوسن و سنبل که نکوست
همره باد بهاری بفرست :
پیک نوروزی و شادی بر دوست !
::
::

::
::
هرروزتان نوروز، نوروزتان پیروز، پسوردتان مرموز، آپدیتتان هرروز، ماشینتان لکسوز، لکسوزتان کم سوز، ناهارتان قارپوز، سیگارتان بر پوز، غمهایتان ریفیوز
::
::
کاش میتونستم ماهی قرمز تنگ شیشه ای دلت باشم تاسال تحویل تونگام کنی ومن توتنگ شادی کنم؛اون وقت سال تحویلم رو به هیچکی تحویل نمیدم!
::
::
چند روز دیگه بهار میاد و همه‌ چیز رو تازه می‌کنه، سال رو، ماه رو،
روزها رو، هوا رو، طبیعت رو، ولی فقط یک چیز کهنه میشه که به
همه اون تاز‌گی می‌ارزه، «دوستیمون»!
::
::
پیشاپیش ( ‘ ; ‘ ) می بوسمت (‘; ‘ ) یکی این ور ( ‘ ;’) یکی اون ور یادت باشه اولین روبوسی عیدو من کردم…پیشاپیش سال نومبارک.
::
::
ای خدای دگرگون کننده دلها و دیده ها
ای تدبیر کننده روز و شب
ای دگرگون کننده حالی به حالی دیگر
حال مارا به بهترین حال دگرگون کن
سال نو مبارک
::
::
ماه من چهره برافروز که آمد شب عید / عید بر چهره چون ماه تو می باید دید / نوبت سال کهن با غم دیرینه گذشت / سال نو با طرب و غلغله شوق دمید
::
::
بهار ثانیه ثانیه می آید ….
و اما اینجا کسی هست که به اندازه تمام شکوفه های بهاری برایتان آرزوهای خوب دارد ….
سال نو مبارک
::
::
خداوندا دوستانی دارم که در اعماق قلبم جاى دارند؛ آنان شایسته محبتند و یادشان مایه ى آرامش جان، در این لحظه هاى پایانى سال عزت و غرور شان التیام و اعتلا و سلامت و شاد بدارشان.
پیشاپیش سال نو مبارک
::
::
سایه حق
سلام عشق
سعادت روح
سلامت تن
سرمستی بهار
سکوت دعا
سرور جاودانه
این است هفت سین آریایی
نوروز مبارک…
::
::
با آرزوی ۱۲ ماه شناخت صحیح ۵۲ هفته معرفت آسمانی ۳۶۵ روز صداقت ۸۷۶۰ ساعت مهربانی ۵۲۵۰۰ دقیقه توکل به خدا ۳۱۰۵۰۰۰ ثانیه غرق در لذت بخش ترین عشق هستی…
سال نو مبارک
::
::
پیام نوروز این است.دوست داشته باشید و زندگی کنید.زمان همیشه از ان شما نیست.
::
::
دلت آبى تر از دریا عزیزم / به کامت گردش دنیا عزیزم الهى همیشه چون گل بخندى / بهارانت خوش و زیبا عزیزم
سال نو مبارک
::
::
باز کن پنجره را
که بهاران آمد
که شکفته گل سرخ
به گلستان آمد
سال نو مبارک
::
::
اینا خطهای دفترخاطراتمه. واپسین روزای سال ۹۱ یه جمله به یادگار برام بنویس.
::
::
خداوندا ! در این آخرین روزهای سال دل من و دوستانم را چنان در جویبار زلال رحمتت شستشو ده که هر کجا تردیدی هست ایمان، هر کجا زخمی هست مرهم، هر کجا نومیدی هست امید و هر کجا نفرتی هست عشق، جای آنرا فرا گیرد