
شبیهسازی با ns2
NS2 (Network Simulator 2) یکی از معروفترین شبیهسازهای شبکههای کامپیوتری است که به منظور شبیهسازی رفتار شبکههای کامپیوتری و پروتکلها طراحی شده است. این شبیهساز از پروتکلهای مختلفی مانند TCP، UDP، روترها، مسیریابها، شبکههای بیسیم و سیمی پشتیبانی میکند و برای تحقیق و توسعه در زمینه شبکههای کامپیوتری بسیار کاربرد دارد.
در این آموزش، مراحل اصلی استفاده از NS2 برای شبیهسازی شبکه و نحوه اجرای یک پروژه شبیهسازی ساده را توضیح میدهیم.
۱. نصب NS2
برای شروع، ابتدا باید NS2 را نصب کنید. NS2 بهطور کلی بر روی سیستمعاملهای لینوکس (مانند اوبونتو) اجرا میشود، اما نسخههای مختلفی از آن برای سیستمعاملهای دیگر نیز وجود دارد. در ادامه نحوه نصب NS2 روی اوبونتو توضیح داده شده است.
نصب NS2 روی اوبونتو:
- بهروزرسانی سیستم:
bash
Copy code
sudo apt-get update
- نصب NS2: با استفاده از دستور زیر NS2 و تمامی وابستگیهای آن را نصب کنید:
bash
Copy code
sudo apt-get install ns2
- تست نصب: پس از اتمام نصب، میتوانید با اجرای دستور زیر، نصب NS2 را تست کنید:
bash
Copy code
ns
اگر نصب بهدرستی انجام شده باشد، باید پیامی مانند زیر مشاهده کنید:
bash
Copy code
%
۲. مفاهیم کلیدی در NS2
NS2 برای شبیهسازی از دو زبان استفاده میکند:
- C++: برای عملکرد سطح پایین و سریعتر که بیشتر به هسته NS2 مربوط میشود.
- OTcl: برای تعریف سناریوهای شبیهسازی و تعامل با NS2. OTcl زبانی سطح بالاتر است که کاربران برای تعریف سناریوهای خود از آن استفاده میکنند.
۳. ساختار یک سناریو شبیهسازی در NS2
برای شبیهسازی شبکه با NS2، ابتدا باید یک فایل OTcl تعریف کنید که سناریوهای مختلف شبکه را شرح میدهد. در این فایل، نودها (کامپیوترها یا دستگاههای شبکه)، لینکها، پروتکلهای ارتباطی، و رفتار شبکه تعریف میشوند.
یک مثال ساده:
یک سناریوی ساده برای شبیهسازی شبکهای با دو نود (node) و یک لینک سیمی بین آنها به همراه انتقال داده از نود اول به نود دوم.
مرحله ۱: تعریف سناریو در فایل OTcl
یک فایل متنی با نام simple.tcl ایجاد کنید و کد زیر را در آن قرار دهید:
tcl
Copy code
# ایجاد شبیه ساز
set ns [new Simulator]
# تعریف خروجیهای trace و nam
set tracefile [open out.tr w]
$ns trace-all $tracefile
set namfile [open out.nam w]
$ns namtrace-all $namfile
# ایجاد دو نود
set n1 [$ns node]
set n2 [$ns node]
# ایجاد لینک سیمی بین نودها
$ns duplex-link $n1 $n2 1Mb 10ms DropTail
# تعریف پروتکل انتقال داده (TCP) و گیرنده (UDP)
set tcp [new Agent/TCP]
$ns attach-agent $n1 $tcp
set sink [new Agent/TCPSink]
$ns attach-agent $n2 $sink
$ns connect $tcp $sink
# تعریف جریان داده (traffic) بین نودها
set ftp [new Application/FTP]
$ftp attach-agent $tcp
$ns at 0.1 “$ftp start”
# تعریف پایان شبیهسازی
$ns at 5.0 “finish”
# تعریف تابع پایان
proc finish {} {
global ns tracefile namfile
$ns flush-trace
close $tracefile
close $namfile
exec nam out.nam &
exit 0
}
# شروع شبیهسازی
$ns run
توضیح کد:
- ایجاد شبیهساز: شبیهساز با استفاده از دستور new Simulator ایجاد میشود.
- تعریف نودها: دو نود به نامهای n1 و n2 ایجاد شدهاند.
- تعریف لینک: یک لینک سیمی دوطرفه بین نودها با ظرفیت 1Mbps و تاخیر 10 میلیثانیه تعریف شده است.
- تعریف پروتکل TCP: یک پروتکل TCP برای نود فرستنده (n1) و یک گیرنده TCP برای نود گیرنده (n2) تنظیم شده است.
- تعریف جریان داده: یک جریان FTP برای انتقال داده از نود 1 به نود 2 تنظیم شده است.
- خروجیها: دو فایل خروجی out.tr برای مشاهده trace و out.nam برای مشاهده شبیهسازی گرافیکی در نرمافزار NAM تولید میشود.
مرحله ۲: اجرای شبیهسازی
پس از تعریف سناریو، برای اجرای شبیهسازی از دستور زیر استفاده کنید:
bash
Copy code
ns simple.tcl
با اجرای این دستور، فایلهای خروجی out.tr و out.nam تولید میشوند.
مرحله ۳: مشاهده نتایج
- مشاهده شبیهسازی گرافیکی با NAM: برای مشاهده شبیهسازی بهصورت گرافیکی از ابزار NAM استفاده کنید. با اجرای دستور زیر، شبیهسازی نمایش داده میشود:
bash
Copy code
nam out.nam
ابزار NAM به شما اجازه میدهد تا انتقال داده و حرکت بستهها بین نودها را مشاهده کنید.
- تحلیل فایل Trace: فایل out.tr شامل اطلاعات دقیقی درباره بستههای ارسال شده، دریافت شده، و از دست رفته در شبکه است. میتوانید از این فایل برای تحلیلهای بیشتر در مورد عملکرد شبکه استفاده کنید.
۴. تنظیمات پیشرفتهتر در NS2
پس از اجرای یک شبیهسازی ساده، میتوانید ویژگیهای پیشرفتهتری را نیز به سناریوی خود اضافه کنید:
- شبکههای بیسیم: برای شبیهسازی شبکههای بیسیم (مانند شبکههای Ad-hoc)، میتوانید از ماژولهای بیسیم NS2 استفاده کنید.
- پروتکلهای مسیریابی: NS2 از پروتکلهای مسیریابی مختلفی مانند AODV، DSDV، و DSR پشتیبانی میکند که برای شبیهسازی شبکههای پیچیدهتر کاربرد دارند.
- شبیهسازی سناریوهای پیچیدهتر: با ترکیب چندین نود، لینکها و پروتکلهای مختلف، میتوانید سناریوهای پیچیدهتری را شبیهسازی کنید.
۵. تحلیل نتایج شبیهسازی
پس از اجرای شبیهسازی، میتوانید نتایج را با استفاده از فایل trace (فایل .tr) تجزیهوتحلیل کنید. ابزارهای مختلفی برای تحلیل دادههای تولید شده توسط NS2 وجود دارد که میتوانید از آنها برای استخراج اطلاعات مهم مانند:
- تأخیر انتها به انتها.
- نرخ تحویل بستهها.
- نرخ از دست رفتن بستهها.
- استفاده از پهنای باند.
برای این کار میتوانید از اسکریپتهای پایتون یا دیگر زبانها برای پردازش فایلهای trace استفاده کنید.
نتیجهگیری
شبیهسازی با NS2 ابزاری قدرتمند برای تحقیق و توسعه در زمینه شبکههای کامپیوتری است. با یادگیری استفاده از زبان OTcl و ابزارهای جانبی مانند NAM، میتوانید شبکههای مختلف را شبیهسازی کرده و عملکرد آنها را تحلیل کنید.
نگارش رساله کامپیوتر دکترا | نگارش رساله کامپیوتر ارشد | نگارش رساله کامپیوتر و مشاوره رساله کامپیوتر با دکتر علی کیان پور
تلفن مشاوره و تماس : 0935/3132/500