ان اس (شبیه‌ساز)

بندانگشتی|تصویری از یک محیط شبیه ساز
**NS** (خلاصهٔ **Network Simulator** به معنای **شبیه‌ساز شبکه**) نامی برای یک سری از شبیه‌سازهای رویداد گسسته شبکه  است، مخصوصاً **NS-1**، **NS-2 **و**NS-3**. همه آن‌ها شبیه‌ساز رویداد گسسته شبکه هستند که اوایل در تحقیق و تدریس استفاده شدند. ns-3 یک نرم‌افزار رایگان است که عموماً تحت لیسانس GNU GPLv2 برای تحقیق، توسعه و استفاده موجود است.

هدف پروژهٔ ns-3 فراهم آوردن محیط شبیه‌سازی آزاد برای تحقیقات شبکه است که در درون جامعه تحقیقاتی پذیرفته شده خواهد بود که به‌طور عمده معنی اش دو چیز است:
* باید آن را با نیازهای شبیه‌سازی تحقیق شبکه‌های مدرن تراز وسط قرار دارد و
* باید توزیع جامعه، بررسی دقیق و اعتبار نرم‌افزار را تشویق کند

از زمان فرایند تولید شبیه‌سازی شبکه‌ای که دارای تعداد کافی ماژول باکیفیت بالا و معتبر و آزمایش شده و به صورت پویا نگهداری شده‌است کار زیادی نیاز داشته که پروژهٔ ns-3 این بار کاری را بین جامعه بزرگ کاربران و توسعه دهندگان توزیع کرده‌است.

## تاریخچه
قبل از ns شبیه‌سازی به نام REAL وجود داشته که قدمت آن به سال ۱۹۸۹ بر می‌گردد.

## ns-1
اولین ورژن ns به نام ns-1، در آزمایشگاه ملی لارنس برکلی (LBNL) در بازه زمانی ۱۹۹۵-۹۷ توسط استیو مک کین، سالی فلوید، کوین فال و همکارانشان توسعه داده شده‌است. که به نام شبیه‌ساز شبکه LBNL شناخته شد که از شبیه‌ساز قبلی خود به نام REAL توسط s. keshav گرفته شده‌است. هسته شبیه‌ساز با C++ نوشته شده و سناریوهای شبیه‌سازی با اسکریپت TCL. توزیع‌های بلند مدت آن همچنین از پروؤه‌های سان مایکروسیستمز و UC Berkeley Daedelus و Carnegie Mellon Monarch نیز می‌آمدند.

## ns-2
در سال ۱۹۹۶-۹۷ کار بر روی نسخه دوم ns (ns-2) برپایه بازسازی استیو مک کین انجام شد. استفاده از tcl با tcl شی گرا (otcl) جایگزین شده بود. هسته ns-2 نیز با C++ نوشته شده بود اما اشیا شبیه‌سازی c++ به اشیا سایه در otcl وصل هستند و متغیرها می‌توانند بین این دو حوزه زبان بهم وصل شوند. اسکریپت‌های شبیه‌سازی به زبان OTCL نوشته شده‌اند. این ساختار اجازه می‌دهد شبیه‌سازی‌ها در یک محیط تفیسر شده نوشته واصلاح شوند بدون دوباره کامپایل کردن شبیه‌ساز وقتی که ساختارش تغییر کرد. در فاصله زمانی که ns-2 معرفی شد دو راحتی چشمگیر را فراهم کرد اجتناب از دوباره کامپایل کردن‌های وقت گیر و همچنین علائم اسکریپتی ساده برای توصیف شبیه‌سازی. Ns-2 یک انیمیشن همراه به نام** انیماتور شبکه ** ** nam-1 **دارد که توسط مارک هندلی نوشته شده‌است برای بصری سازی شبیه‌سازی خروجی و تنظیمات گرافیکی (محدود) برای سناریوهای شبیه‌سازی.
در سال ۱۹۹۷ پروژه the DARPA Virtual InterNetwork Testbed (VINT) دارپا شامل LBNL، زیراکس پارک، UC Berkeley، and USC's Information Sciences Institute (ISI) آغاز شد. بخش عمده توسعه ns-2 در این فاصله زمانی اتفاق افتاد. همچنین فعالیت‌های نگهداری نرم‌افزار در این دوره به isi مهاجرت کرد و سرانجام به John Heidemann. بعد از جمع بندی پروژه VINT، ns-2 همچنان در فاصله زمانی ۰۴-۲۰۰۱ توسط DARPA SAMAN و NSF CONSER awards to USC/ISI بودجه بندی می‌شد.
در حال حاضر، ns-2 شامل بیشتر از ۳۰۰۰۰۰ خط سورس کد است. و احتمالاً شامل کدهای توزیعی قابل ملاحظه‌ای دیگری که به‌طور مستقیم با توزیع اصلی یکپارچه نشده‌اند. نرم‌افزار بر روی لینوکس، فری‌بی‌اس‌دی، سولاریس، اواس‌ده و Windows 95/98/NT/2000/XP قابل اجرا است که توسط ورژن ۲ پروانه عمومی همگانی گنو لایسنس شده‌اند.

## ns-3
کار بر روی ns-3 در فاصله زمانی ۰۵-۲۰۰۴ شروع شد. یک تیم به رهبری Tom Henderson (دانشگاه واشینگتن) و همچنین شامل George Riley (مؤسسه فناوری جورجیا)، Sally Floyd (International Computer Science Institute) و Sumit Roy (دانشگاه واشینگتن)، برای دریافت بودجه از U.S. National Science Foundation (NSF) اپلای کردند. تا جایگزینی برای ns-2 به نام ns-3 بسازند.
حدوداً در همان فاصله زمانی تیم نحقیقاتی Planete در INRIA Sophia Antipolis شامل Mathieu Lacage و Walid Dabbous شروع به جستجو برای جایگزینی ns-2، با تأکید اولیه بر مدل‌های آی‌تریپل‌ئی ۸۰۲٫۱۱ وای-فای کردند. شبیه‌ساز اولیه Lacage بنام Yet Another Network Simulator (yans) نامگذاری شد.
این دو تلاش با هم ترکیب شدند و بحث بر روی طراحی ns-3 بر روی فهرست پستی توسعه دهندگان ns در فوریه ۲۰۰۵ شروع شد مخصوصاً در ۲۲ فوریه ۲۰۰۵ تام هندرسون پستی بر روی فهرست پستی توسعه دهندگان ns زد مبنی بر اینکه ما می‌خواهیم بحث‌های بر روی اینکه چگونه بعضی از ns-2ها در توسعه‌های آینده می‌توانند هم ریفکتور و هم فورک شوند داشته باشیم. بعضی از هدف‌های اصلی شامل پشتیبانی بهتر شبیه‌سازی شبکه و استفاده مجدد از کدهای پیاده‌سازی و همچنین یکپارچگی بهتر ابزارها با تحقیقات پایه است. در فرایند توسعه ns-3 سازگاری با ns-2 اساساً بخاطر سربار بالای نگهداری که نتیجه گرفته شده بود رها شد. شبیه‌ساز جدید از ابتدا توسط زبان برنامه نویسی سی++ نوشته شده بود.
توسعه ns-3 در ۱ ژوئیه ۲۰۰۶ شروع شدهسته نرم‌افزار تا حد زیادی توسط متیو Lacage نوشته شده‌است، هم چنین برگفته شده از شبیه‌ساز yans. the Georgia Tech Network Simulator (GTNetS) توسط George Riley ساخته شد و ns-2. یک چارچوب برای ایجاد اتصالات پایتون (pybindgen) و استفاده از سیستم ساخت WAF که توسط گوستاو Carneiro توزیع شده بود.
اولین نسخه از ns-3.1 در ژوئیه ۲۰۰۸ ساخته شد و پس از آن این پروژه با انتشار نرم‌افزار فصلنامه ادامه داد و اخیراً به سه انتشار در سال منتقل شد ns-3 پنجمین انتشار (ns-3.15) خود را در سومین فصل ۲۰۱۲ ساخت.
وضعیت حال حاضر این ۳ ورژن به صورت زیر است:
* Ns-1 نه توسعه داده شده و نه نگهداری.
* Ns-2 فقط نگهداری می‌شود و
* Ns-3 به صورت پویا توسعه داده می‌شود.

## طراحی
Ns-3 با استفاده از سی++ و پایتون ساخته شد و اسکریپت‌نویسی با هر دو زبان موجود است. کتابخانه ns-3 به لطف کتابخانه pybindgen به پایتون پیچیده شد که ملزم به جدا کردن هدر c++ ns -3 به gccxml و pygccxml می‌کند. تا به صورت خودکار اتصال c++ را برقرار سازد. این فایل‌های تولید شده خودکار c++ سرانجام به ماژول پایتون ns-
3 کامپایل می‌شوند که به کاربران اجازه می‌دهد که با ماژول‌های c++ ns-3 و هسته از طریق اسکریپت‌های پایتون ارتباط برقرار کنند.

## محتویات
Ns-3 به بیش از چندین جفت ماژول تقسیم می‌شود که شامل یک یا بیشتر ماژول برای ابزار یا پروتکل‌های شبکه دنیای واقعی است.

## گردش کار شبیه‌سازی
فرایند عمومی تولید یک شبیه‌سازی می‌تواند به چندین مرحله تقسیم شود:
# *تعریف توپولوژی*: برای راحتی ایجاد امکانات اولیه و تعریف روابط بین آنها، ns-3 دارای سیستمی شامل کمک کننده‌ها است که این فرایند را راحتتر می‌کند.
# *استفاده از مدل*: مدل‌ها به شبیه‌سازی اضافه شده‌اند (برای مثال udp، ipv4، ابزارهای نظیر به نظیر و لینک‌ها، برنامه‌ها) که بیشتر اوقات توسط کمک کننده‌ها انجام می‌شوند
# *تنظیمات لینک‌ها و نود ها*: مدل‌ها مقادیر پیش فرض خود را ست می‌کنند (برای مثال سایز بسته‌هایی که برنامه می‌فرستد یا mtu، یا لینک‌های نظیر به نظیر) که بیشتر اوقات با سیستم‌های توزیعی انجام می‌شود.
# *اجرا*: امکانات شبیه‌سازی رویدادها و دیتاهای درخواست شده توسط کاربر را ایجاد می‌کنند.
# *آنالیز عملکرد*: بعد از اینکه شبیه‌سازی پایان یافت، داده‌ها به شکل تریس رویداد با برچسب زمان آماده هستند این داده‌ها سپس می‌توانند به صورت آماری با ابزارهایی مثل R آنالیز شوند تا نتیجه را بکشند.
# *تجسم گرافیکی*: داده‌های خام یا پردازش شده که در شبیه‌سازی جمع شده‌اند می‌توانند با ابزارهایی مثل گنوپلات،کتابخانه مت‌پلات Xgraph رسم شوند. Xgragh یک ابزار رسم است که همراه بسیاری از بسته‌های نصب وجود دارد

## انتقاد
Ns-2 بسیاری از اوقات انتقاد می‌شود زیرا مدلسازی آن خیلی پیچیده و یک فرایند زمان بر است و چون محیط گرافیکی ندارد باید زبان اسکریپت نویسی، تئوری صف و تکنیک‌های مدلسازی یاد گرفته شود. و هم چنین اخیراً شکایاتی مبنی بر اینکه نتایج سازگار نیستند وجود دارد (احتمالاً بخاطر تغییرات متناوب کد آن) وپروتکل‌های خاص آن مملو از باگ هستند.
Ns-3 بیشتر بخاطر کمبود پشتیبانی از پروتکل‌هایی که در ns-2 پشتیبانی می‌شدند مورد انتقاد قرار می‌گیرند که بخاطر سازگار نبودن آن با Ns-2 است. همانند ns-2، ns-3 نیز برای یادگیری و استفاده زمان بر است در مقایسه با شبیه‌سازهای دارای رابط گرافیکی.

## منابع بیشتر
* GloMoSim
* نتسیم
* OMNeT++

## منابع

## پیوند به بیرون
* ns-2 home page
* ns-3 home page
آموزش نصب ns2

رده:تحلیل شبکه رایانه
رده:شبکه رایانه
رده:شبکه‌بندی رایانه
رده:مهندسی مخابرات
رده:نرم‌افزار شبیه‌سازی
رده:نرم‌افزارهای آزاد نوشته‌شده با سی++
رده:نرم‌افزارهایی که از پروانه جی‌پی‌ال استفاده می‌کنند