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

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

NS (خلاصهٔ Network Simulator به معنای شبیه‌ساز شبکه) نامی برای یک سری از شبیه‌سازهای رویداد گسسته شبکه (به انگلیسی: discrete event network simulators) است، مخصوصاً 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، Xerox PARC، 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 شامل بیشتر از ۳۰۰۰۰۰ خط سورس کد می‌باشد. و احتمالاً شامل کدهای توزیعی قابل ملاحظه‌ای دیگری که بطور مستقیم با توزیع اصلی یکپارچه نشده‌اند. نرم‌افزار بر روی لینوکس، فری‌بی‌اس‌دی، Solaris، اواس‌ده و 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 به بیش از چندین جفت ماژول تقسیم می‌شود که شامل یک یا بیشتر ماژول برای ابزار یا پروتکل‌های شبکه دنیای واقعی است.

گردش کار شبیه‌سازی[ویرایش]

فرایند عمومی تولید یک شبیه‌سازی می‌تواند به چندین مرحله تقسیم شود:

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

انتقاد[ویرایش]

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

منابع بیشتر[ویرایش]

منابع[ویرایش]

  1. http://www.nsnam.org/overview/publications/
  2. http://ee.lbl.gov/ns/
  3. Sandeep Bajaj, Lee Breslau, Deborah Estrin, Kevin Fall, Sally Floyd, Padma Haldar, Mark Handley, Ahmed Helmy, John Heidemann, Polly Huang, Satish Kumar, Steven McCanne, Reza Rejaie, Puneet Sharma, Kannan Varadhan, Ya Xu, Haobo Yu, and Daniel Zappala, Improving Simulation for Network Research, Technical Report 99-702, University of Southern California, March, 1999
  4. Lacage, M. and Henderson, T.R. , "Yet another network simulator", Proceeding from the 2006 workshop on ns-2: the IP network simulator, ACM, 2006
  5. http://mailman.isi.edu/pipermail/ns-developers/2005-February/001609.html
  6. http://mailman.isi.edu/pipermail/ns-developers/2006-July/002316.html
  7. . 
  8. name="ns-3">. 

پیوند به بیرون[ویرایش]

آموزش نصب ns2