مرداد
۲۴
۱۳۹۴

نرم افزار شبيه سازی NS و نحوه نصب کردن و کار با آن- قسمت چهارم

 

  1. نرم افزار شبيه سازي NS

 

  • مقدمه

ns در (LBNL) Lawrence Berkeley National Laboratory دانشگاه‌ بركلي‌ كاليفرنيا ايجاد شد. شبيه ساز N.S. يك نرم افزار جامع شبيه ساز شبكه‎هاي مخابراتي و كامپيوتري با پروتكل‎هاي مختلف می باشد. اين شبيه ساز شاخه‎اي از پروژه Real Network Simulator می باشد كه تهيه آن از سال ۱۹۸۹ آغاز گرديد و طي چند سال اخير تكميل و توسعه يافته است. ايجاد و گسترش ‌ns سبب‌ به‌وجود آمدن‌ نرم‌افزاري‌ پويا گرديد كه‌ قابليت‌تغييرات‌ سريعي‌ دارد. ns يك‌ شبيه‌ساز شبكه ‌event- driven است‌. هسته‌ي‌ اصلي‌ اين‌نرم‌افزار توسط‌C++  قابل‌ اجرا بوده‌، اما از (Object Tool command language) OTcl نيز در لايه‌هاي‌ بالاتر خود سود مي‌برد (OTcl نسخه‌ي‌ شي‌گراي‌Tcl است‌).

معمولاً شبيه‌سازي‌ با نسخه‌ي (Tcl Scripts) Tcl تعريف‌ و مشخص‌ مي‌شود. اين‌نرم‌افزار قابليت‌ شبيه‌سازي TCP، مسيريابي‌ و پروتكل‌هاي‌ چندپخشي (Multicast Protocols) را بر روي‌ شبكه‌هاي‌ عادي‌ و بدون‌ سيم‌ دارد. از Tcl در موارد زير استفاده‌مي‌شود:

ـ توصيف‌ توپولوژي‌ شبكه‌ (شامل‌ گره‌ها، لينك‌ها، فهرست‌ها و الگوريتم‌هاي‌ مسيريابي‌شبكه‌).

ـ تعريف‌ يك‌ مدل‌ ترافيك‌ (به‌طور مثال‌ زمان‌ شروع‌ و خاتمه‌ يك‌ دوره‌ي‌ (FTP.

ـ جمع‌آوري‌ خواص‌ استاتيكي‌، آماري‌ و نتايج‌ شبيه‌سازي.

‌نتايج‌ معمولاً در يك فايل‌ نوشته‌مي‌شوند. اين‌ فايل‌ به‌ نرم‌افزار (Network Animator) Nam كه‌ همراه‌ نسخه‌ كامل ‌ns است‌،مربوط‌ مي‌شود. در حال‌ حاضر نسخه‌ي ‌ns2 به‌ وسيله ‌DARPA ، NSF و ACIRI  پشتيباني ‌شده‌ و براي‌ استفاده‌هاي‌ غيرتجاري‌ به‌ صورت‌ رايگان‌ در دسترس‌ می باشد.

  • ساختار نرم‌افزار

ns يك‌ شبيه‌ساز شي‌ءگراست‌ كه بر اساس ++‌C نوشته‌ شده‌ و از مفسر OTcl نيز به‌ عنوان‌ لاية‌ بالايي‌ استفاده‌ مي‌كند. ns قابليت‌ پشتيباني‌ سلسله مراتبي‌ از كلاس‌ها (Class Hierarchy) در ++C و مشابه‌ آن‌ درOTcl را داراست‌. از سلسله‎مراتب‌ كلاس‌هاي ++‌C به‌عنوان‌ سلسله مراتب‌‌ ترجمه‌اي (Compiled Hierarchy) و از سلسله مراتب‌ كلاس‌هاي OTcl به‌ عنوان ‌سلسله مراتب‌‌ تفسيري ‌(Interpreted Hierarchy) ياد مي‌شود.  اين‌ دو سلسله مراتب‌ از ديدگاه‌ كاربران ‌بسيار نزديك‌ و شبيه‌ يكديگر بوده‌ و در واقع‌ تناظري‌ يك‌ به‌ يك‌ بين‌ آنها برقرار است‌. منشاء اصلي‌ سلسله مراتب تفسيري كلاس ‌TclObject می باشد. كاربر ابتدا اشياي‌ شبيه‌سازي‌ را از طريق‌ مفسر ايجاد مي‌كند. سپس، اين اشياء به‌وسيله‌ي‌ مفسر تفسير و توصيف‌ شده‌ و دقيقاً به‌صورت‌ اشياي‌ مشابهي‌ در سلسله مراتب ترجمه‌اي‌ منعكس‌ مي‌شوند. كلاس‌هاي OTcl به‌صورت‌ اتوماتيك‌ و آن‌گونه‌ كه‌ در Tcl Class تعريف‌ شده‌، ايجاد ميشود. انعكاس‌اشياي‌ توصيف‌ شده‌ توسط‌ كاربر، از طريقي‌ كه‌ در كلاس ‌Tcl Object معين‌ شده‌، صورت‌مي‌گيرد. شايان‌ ذكر است‌ كه‌ برخي‌ از كلاس‌ها فقط‌ مختص ‌OTcl يا ++C بوده‌ و انعكاس‌ آنها در طرف‌ مقابل‌ وجود ندارد.

همان‌طور كه‌ اشاره‌ شد، ns از دو زبان‌ برنامه‌نويسي‌ جهت شبيه‌سازي ‌سود مي‌برد. علّت‌ اين‌ كار را مي‌توان‌ اين‌گونه‌ بيان‌ كرد كه ‌ns بايد دو كار مختلف انجام‌ دهد. از طرفي، شبيه‌سازي دقيق‌ پروتكل‌ها نيازمند زباني‌ می باشد كه‌ بتواند اعمال مناسب‌ را روي‌ بايت‌ها و سرآمد‌ بسته‌ها (Packet Headers) انجام‌ داده‌ و توانائي‌ اجراي الگوريتم‌ها را در مقياس‌ وسيعي‌ از داده‌ها داشته‌ باشد. در اين‌ مورد سرعت‌ اجرا  (run-time speed)حائز اهميت‌تر از زمان‌هاي‌ جانبي (turned-around time) شامل‌ زمان‌ لازم براي‌ يافتن‌ معايب‌، تصحيح‌ معايب‌، ترجمه‌ و اجراي‌ مجدد می باشد. از طرفي‌ بسياري‌ از تحقيقات‌ مرتبط‌ با شبكه‌ مستلزم‌ ايجاد تغييرات‌ كوچكي‌ در پارامترها يا ساختارها، و يا جمع‌آوري‌ تعدادي‌ سناريو می باشد. در اين‌ مورد چون‌ ساختار اصلي‌ تنها يك‌ بار اجرا مي‌شود (در ابتداي‌ شبيه‌سازي‌)، لذا زمان‌ اجرا كمتر مورد توجه‌ قرار گرفته‌ و از طرف‌ ديگر زمان‌ انجام‌ تغيير در شبيه‌سازي از اهميت‌ بيشتري‌ برخوردار خواهد بود.

ns اين‌ نيازها را با استفاده‌ از زبان‌هاي ‌OTcl و ++C برآورده‌ مي‌كند. ++ Cسريع‌تر اجرا مي‌شود اما تغيير دادن‌ آن‌ مستلزم‌ صرف‌ زمان‌ زيادي‌ است‌ و از اين‌ نظر براي‌ اجراي‌ پروتكل‌هاي‌ جزئي‌ و مواردي‌ كه‌ احتياج‌ به‌ تكرارهاي‌ زيادي‌ دارد مناسب‌ است‌. هم‌چنين،‌ ممكن‌ است بخواهيم‌ عملكرد كلاس‌هاي‌ پيش‌فرض ‌ns را به‌ صورتي‌ كه‌ دلخواه‌ است‌ تغيير دهيم. اين‌كار نيز با ++C قابل‌ انجام‌ است‌. از طرف‌ ديگر، OTcl سرعت‌ اجراي‌ پايين‌تري‌ دارد، اما ايجاد تغييرات‌ در آن‌ به‌ سهولت‌ صورت‌ مي‌پذيرد. اين‌ خصيصه‌ آن‌ را براي‌ ايجاد ساختار شبيه‌سازي‌ ايده‌آل‌ مي‌سازد. به‌طور مثال‌، لينك‌ها اشيايي‌ از OTcl هستند كه‌ قابليت ‌شبيه‌سازي‌ تأخير صف‌بندي‌ و مدول‌هاي‌ گم‌شدن‌ بسته‌ را دارند. اگر پروژه‌ مورد نظر با اين ‌امكانات‌ قابل‌ انجام‌ باشد، احتياجي‌ به‌ استفاده‌ از تغيير در كلاس‌هاي‌ از پيش‌ تعريف‌شده در ‌ns نيست‌. اما اگر احتياج‌ به‌ كار بيشتري در پروژه‌ باشد كه‌ امكانات‌ مورد نياز آن‌ به‌ صورت ‌پيش‌فرض‌ در ns موجود نيست‌ (مانند يك‌ روش‌ خاص‌ صف‌بندي‌ يا يك‌ مدول‌ گم‌شدن‌ بسته‌)، در اين‌ صورت‌ نياز به‌ ايجاد اشياء جديدي‌ در ++C  پيدا خواهد شد.

با اين‌ وجود هميشه‌ عملكرد به‌ صورت‌ بالا نمی باشد. بيشتر عمليات‌ مسيريابي‌ در OTcl صورت‌ مي‌گيرد (هرچند كه هسته‌ الگوريتم‌ محاسبه‌ي‌ كوتاه‌ترين‌ مسير Dijkstra در ++C است‌). در شبيه‌سازي‌HTTP ايجاد هر جرياني‌ از داده ابتدا در OTcl شروع‌ مي‌شود و سپس‌ پردازش‌ هر بسته در ++C انجام‌ مي‌گيرد. اين‌ روش‌ تا زماني‌ كه‌ تعداد جريان‌هابه‌ ۱۰۰ عدد در ثانيه‌ نرسد، به‌ خوبي‌ عمل‌ مي‌كند، اما بعد از آن‌ دچار مشكل‌ خواهد شد. درموارد مشابه‌ نيز اگر از OTcl به‌ دفعات‌ زياد در يك‌ ثانيه‌ استفاده‌ شود، احتمالاً ناكارآمد مي‌شود و در اين‌گونه‌ موارد استفاده‌ از ++C ارجحيت‌ دارد.

همان‌طور كه‌ اشاره‌ شد، ns يك‌ نرم‌افزار شي‌ءگراست‌ و شامل‌ كلاس‌هاي‌ بسياري‌ به‌صورت‌ پيش‌فرض‌ می باشد (البته‌ مي‌توان‌ كلاس‌ها يا مدول‌هاي‌ جديدي‌ نيز به‌ سلسله مراتب ‌كلاس‌هاي‌ جاري‌ اضافه‌ نمود). هر كلاس‌ از قسمت‌هاي‌ زير تشكيل‌ شده‌است‌:

–   پارامترهاي‌ ساختاري ‌(Configuration Parameters):

پارامترهاي‌ ساختاري‌ ويژگي‌هايي ‌از كلاس‌ مي‌باشند كه‌ به‌ صورت‌ پويا‌ درخلال ‌Tcl Scripts قابل‌ تنظيم‌ و جست‌وجو هستند. اين‌ پارامترها معمولاً در تمام‌ مدت‌ شبيه‌سازي‌ ثابت‌ هستند، اما در صورت‌ لزوم‌ قابل‌ تغيير مي‌باشند. به‌ طور مثال‌، پهناي‌ باند يك‌ لينك‌ معمولاً فقط‌ در ابتداي‌ شبيه‌سازي‌ تنظيم‌ و مشخص‌ مي‌شود. اما، از طرف‌ ديگر يك‌ منبع‌ توليد ترافيك‌ مي‌تواند به‌گونه‌اي‌ پيكربندي‌شود كه‌ بسته‌هايي‌ با اندازه‌هاي‌ مختلف‌ را در زمان‌هاي‌ متفاوت‌ ارسال‌ نمايد.

–   متغيرهاي‌ وضعيت‌ (State Variables):

هر كلاس‌ مجموعه‌اي‌ از متغيرها دارد كه ‌بسياري‌ از آنها براي‌ مشخص كردن‌ وضعيت‌ اشياء توسط‌ يك ‌Tcl Script قابل‌ دسترس ‌مي‌باشند. معمولاً اين‌ متغيرها هنگام‌ تنظيم‌ مجدد سيستم‌ براي‌ اجراي‌ يك‌ شبيه‌سازي‌ ديگر، به‌ دقت‌ توصيف‌ و معرفي‌ مي‌شوند. به‌طور مثال‌، طول‌ يك‌ صف‌ بسته در طول‌ زمان‌ تغييرمي‌كند، اما مي‌توان‌ اندازه‌ي‌ لحظه‌اي‌ صف‌ را به‌وسيله‌ي‌ يك‌ دستور OTcl يا يك‌ متد C++ مشاهده‌ نمود.

–   متدها (Methods):

متدها به‌گونه‌اي‌ با كلاس‌ مرتبط‌ مي‌شوند كه‌ بتوانند اعمالي‌ را كه ‌توسط‌ اشياء اين‌ كلاس‌ قابل‌ اجرا هستند، مشخص‌ نمايند. به‌ طور مثال‌ متد ()eque مي‌تواند شيوه‌ي‌ صف‌بندي‌ را براي‌ يك‌ شي‌ء خاص‌ مشخص‌ نمايد.

از بين‌ كلاس‌هاي‌ تعريف‌ شده‌ در ns مي‌توان‌ ۶ كلاس‌ را به‌ عنوان‌ كلاس‌هاي‌ پايه‌اي‌ به‌حساب‌ آورد كه‌ عبارتند از:

۱) كلاس ‌Tcl:

شامل‌ متدهايي‌ از ++C‌ كه‌ براي‌ دسترسي‌ به ‌OTcl مورد استفاده‌ قرار مي‌گيرد.

اين‌ كلاس‌ شامل‌ نمونه‌هاي‌ واقعي‌ از مفسر OTcl می باشد و روش‌هايي‌ براي‌دسترسي‌ و ارتباط‌ با مفسر را فراهم‌ مي‌كند. متدهايي‌ كه‌ در اين‌ كلاس‌ توصيف‌ مي‌شوند بيشتر به‌ برنامه‌نويس ‌ns، كه‌ كدهاي‌ C++ را ايجاد مي‌كند، مربوط‌ مي‌شوند. اين‌ كلاس ‌متدهايي‌ را براي‌ انجام‌ اعمال‌ زير شامل‌ مي‌شود:

–      به‌دست‌ آوردن‌ مرجعي‌ براي‌ نمونه‌هاي ‌Tcl.

–      استفاده‌ ازProcedure هاي ‌Tcl در مفسر.

–      به‌ دست‌ آوردن‌ يا پس‌دادن‌ نتايج‌ به‌ مفسر.

–      اعلام‌ محل‌هاي‌ خطا و خروج‌ به‌ صورتي‌ مشخص‌.

–      ذخيره‌سازي‌ و جست‌ و جوي‌ “Tcl Objects”.

–      به‌ دست‌ آوردن‌ دسترسي‌ مستقيم‌ به‌ مفسر.

۲) كلاس‌ Split Object يا Tcl Object:

كلاس‌ اصلي‌ اشياء شبيه‌سازي‌ است‌ كه‌ درسلسله مراتب‌ ترجمه‌اي‌ هم‌ منعكس‌ مي‌شوند.

اين‌ كلاس‌ مبناي‌ بيشتر كلاس‌هاي‌ ترجمه‌اي‌ و تفسيري‌ ديگر است‌. هر شي‌ء در اين‌ كلاس‌ از طريق‌ مفسر و توسط‌ كاربر ايجاد مي‌شود. يك‌ نسخه‌ي‌ معادل‌ از اين‌ شي‌ء در سلسله مراتب‌‌ ترجمه‌اي‌ نيز ايجاد ميشود. اين‌ دو شي‌ء به طور نزديك‌ به‌ يكديگر مربوط‌ هستند. كلاس Tcl Class شامل‌ مكانيزمي‌ است‌ كه‌ اين‌نسخه‌برداري‌ را انجام‌ مي‌دهد.

قسمت‌ مهمي‌ از برنامه‌نويسي‌ ns تعريف‌ متغير است‌ كه‌ در همين‌ كلاس‌ Tcl Object صورت‌ مي‌گيرد. در بسياري‌ از موارد، متغيرهاي‌ عضو ++C تنها محدود به‌ كدهاي ++‌C هستند و دسترسي‌ به‌ متغيرهاي‌ عضو OTcl نيز فقط‌ از طريق‌ كدهاي‌ آن‌ ميسّر است‌. اما با اين‌ وجود مي‌توان‌ يك‌ پيوند دوطرفه‌ بين‌ متغيرها ايجاد نمود به‌طوري‌ كه‌ هم‌ متغيرهاي‌ عضو مترجم‌ و هم‌ متغيرهاي‌ عضو مفسر به‌ داده‌هاي‌ يكسان‌ دسترسي‌ داشته‌ باشند و تغيير مقدار هر يك‌ ازاين‌ متغيرها باعث‌ همان‌ مقدار تغيير متناظر با آن‌ در طرف‌ ديگر گردد.

ns  پنج‌ نوع‌ متغير مختلف‌ دارد كه‌ عبارتند از: حقيقي، پهناي‌ باند، زمان، صحيح و منطقي‌.

ـ     متغيرهاي‌ حقيقي‌ و صحيح‌ به‌ همان‌ صورت‌ نرمال‌ توصيف‌ مي‌شوند. به‌ طور مثال‌:

$object set real var 1.2e3    $object set intvar 12

ـ      پهناي‌ باند به‌ عنوان‌ يك‌ مقدار حقيقي‌ مشخص‌ مي‌شود و به‌ صورت‌ دلخواه‌ با پسوندهاي ¨k¨ يا K به‌ معني‌ كيلو، و ¨m¨ يا ¨M¨ نشان‌دهنده‌ي‌ مگا همراه‌ مي‌شود. پسوند دلخواه ‌¨B¨ مشخص‌ مي‌كند كه‌ مقدار مورد نظر به‌ صورت ‌Second / Byte است‌. پيش‌فرض‌ ns براي‌ پهناي‌ باند، second / bit می باشد. به‌ طور مثال‌،

$Object set bwvar 1.5 m   $Object set bwvar 187.5 KB

ـ      زمان‌ به‌ صورت‌ يك‌ مقدار حقيقي‌، معمولاً با پسوندهاي‌¨m¨ به‌ معني‌ ميلي‌ثانيه‌، ¨n¨ نشانگر نانوثانيه‌ و يا¨p¨ به‌ معني‌ پيكوثانيه‌، همراه‌ مي‌شود. پيش‌فرض ‌ns ثانيه‌ است‌. به‌طور مثال‌:

$Object set timevar  ۱۵۰۰ m

ـ      متغيرهاي‌ منطقي‌ مي‌توانند به‌ صورت‌ عدد صحيح‌،¨T¨ و يا¨t¨ براي‌ مقادير درست‌ به‌كار روند. اگر مقدار متغير منطقي‌ نه‌ عدد صحيح‌ و نه‌ مقدار درست ‌(true) باشد، اين‌ متغيرنادرست‌ فرض‌ خواهد شد. به‌ طور مثال‌:

$ Object set rael var 1.2e3

$ Object set intvar 12

۳) كلاس ‌Tcl Class:

سلسله مراتب‌ كلاس‌هاي‌ تفسيري‌ و نيز متدهايي‌ كه‌ به‌ كاربر اجازه‌ي‌ تعريف ‌Tcl Ojbect  را مي‌دهد.

اين‌ كلاس‌ كاملاً مجازي‌ است.‌ كلاس‌هاي‌ ديگري‌ كه‌ از اين‌كلاس‌ مشتق‌ مي‌شوند، دو وظيفه‌ي‌ اصلي‌ انجام‌ مي‌دهند. اولاً ايجاد سلسله مراتبي‌ دركلاس‌هاي ‌OTcl براي‌ منعكس‌كردن‌ سلسله مراتب‌ كلاس‌هاي ++‌C و ثانياً فراهم‌ آوردن‌ متدهايي ‌براي‌ تعريف ‌Tcl Object هاي‌ جديد. چنين‌ كلاس‌هايي‌ با كلاس‌هاي‌ ويژه‌اي‌ در OTcl در ارتباط‌ هستند و مي‌توانند اشياي‌ جديدي‌ را در كلاس‌هاي‌ مربوطه‌ ايجاد نمايند.

۴) Tcl Command:

براي‌ مشخص‌ كردن‌ دستورات‌ عمومي‌ و ساده‌ي ‌OTcl بكار مي‌رود. اين‌ كلاس‌ براي ‌ns قابليت‌ اعمال‌ دستورات‌ ساده‌اي‌ به ‌OTcl را فراهم‌ مي‌كند كه‌ در يك‌ وضعيت‌ و موقعيت‌ عمومي‌ توسط‌ مفسر اجرا ميشود.

۵) كلاس ‌Embedded Tcl:

شامل‌ شيوه‌هايي‌ كه قابليت‌ اجراي‌ دستورات‌ ساخته‌ شده جهت‌ ساده‌سازي‌ شبيه‌سازي‌ را داراست‌. در  ns مي‌توان‌ عملكرد و قابليت‌ برنامه‌ را چه‌ در كدهاي‌ ++C  يا در كدهاي ‌OTcl توسعه‌ و بهبود داد، كه‌ اين‌ قابليت‌ در ابتداي‌ برنامه‌ ارزيابي‌ مي‌شود. اين‌عمليات‌ از طريق‌ اشياي‌ اين‌ كلاس‌ انجام‌ مي‌گيرد.

۶) كلاس Inst Var:

شامل‌ متدهايي‌ براي‌ دسترسي‌ به‌ متغيرهاي‌ عضو (member variables) در ++C و متغيرهاي‌ نمونه ‌Instance Variables)) در OTcl. اين‌ كلاس‌ روش‌ها و مكانيزم‌هايي‌ را براي‌ پيوند و ارتباط‌ متغيرهاي عضو ++C در فايل‌ ترجمه‌اي‌ به‌ متغيرهاي ‌OTcl در شي‌ء متناظر با آن‌ داراست‌. اين‌ارتباط‌ طوري‌ انجام‌ مي‌گيرد كه‌ تنظيم‌، مقداردهي‌ و دسترسي‌ به‌ متغيرها در هر زماني‌ چه‌ از طريق‌ مترجم‌ و چه‌ از طريق‌ مفسر امكان‌پذير باشد. در اين‌ زمينه‌ پنج‌ كلاس‌ متغير نمونه ‌وجود دارد:

۱ـ كلاس‌Inst Var Real

۲ـ كلاس‌ Inst Var Time

۳ـ كلاس‌ Inst Var Band Width

۴ـ كلاس‌ Inst Var Int

۵ـ كلاس‌ Inst Var Bool

كه ‌هر يك‌ براي‌ پيوند با متغيرهاي‌ متناظر real، time، band width، integer  و boolean به‌ كار مي‌روند.

  • كلاس شبيه ساز

كليت‌ شبيه‌سازي‌ به‌ وسيله‌ي‌ يك‌ شبيه‌ساز كلاس ‌Tcl توصيف‌ مي‌شود. اين‌ قسمت ‌مجموعه‌اي‌ از واسط‌ها Interface)) براي‌ نظم‌دهي‌ يك‌ شبيه‌سازي‌، انتخاب‌ نوع‌ رويداد و يك زمان‌بند (Scheduler)  (كه‌ براي‌ راه‌اندازي‌ شبيه‌سازي‌ لازم‌ است‌) را داراست‌. يك‌ script شبيه‌ساز معمولاً با ايجاد نمونه‌اي‌ از اين‌ كلاس‌ و صدازدن‌ متدهاي‌ گوناگون براي‌ ايجادگره‌ها، توپولوژي‌ها و پيكربندي‌ ديگر ديدگاه‌هاي‌ شبيه‌سازي‌ آغاز مي‌شود. يك‌زيركلاس‌ به‌ نام ‌Old Sim نيز براي‌ پشتيباني ‌ns-1 به‌ كار مي‌رود.

۳-۳- ۱           شروع‌ شبيه‌سازي (Simulator Initialization)

هنگامي كه‌ يك‌ شي‌ء شبيه‌سازي‌ جديد در Tcl ايجاد مي‌شود، روند مقداردهي‌ اوليه‌ به‌ صورت‌ زير انجام‌ مي‌گيرد.

۱)     شكل‌ و فرمت‌ بسته‌ مشخص‌ مي‌شود (با صدازدن‌ Create: Packet format).

۲)     ايجاد يك‌ زمان‌بند (Scheduler).

۳)     ايجاد يك‌ عامل‌ بدون‌ مقدار (null agent)، يك‌ حفره ‌(Sink) قابل چشم‌پوشي كه‌ درموقعيت‌هاي‌ مختلف‌ مورد استفاده‌ قرار مي‌گيرد.

فرمت‌ بسته‌ زمينه‌ و موضوعي‌ را كه‌ بسته‌ در تمام‌ مدت‌ شبيه‌سازي‌ دارد مشخص‌ مي‌كند.

زمان‌بند شبيه‌سازي‌ را به‌ صورت ‌event-driven اجرا مي‌كند و گاهي ‌اوقات‌ مي‌توان‌ آن‌ را با زمان‌بندهايي‌ كه‌ جزئيات‌ متفاوتي‌ ارائه‌ مي‌كنند، جانشين‌ کرد.

عامل‌ بدون‌ مقدار را مي‌توان‌ به‌ صورت‌ زير ايجاد نمود:

set null Agent – [new Agent / Null]

اين‌ عامل‌ معمولاً به‌ عنوان‌ حفره‌اي‌ براي‌ بسته‌هاي‌ ساقط‌ شده ‌(dropped packets) يا محلي‌ براي‌ نگه‌داري‌ بسته‌هايي‌ كه‌ به‌ حساب‌ نيامده‌ و يا ضبط‌ نشده‌اند، مورد استفاده‌ قرارمي‌گيرد.

۳-۳- ۲           زمان‌بندها و رويدادها

در حال‌ حاضر ۴ زمان‌بند مختلف‌ در ns مورد بهره‌برداري ‌قرار مي‌گيرد كه‌ هر كدام‌ در هنگام‌ اجرا ساختار داده‌اي‌ متفاوتي‌ را استفاده‌ مي‌كند كه‌ عبارتنداز:

۱) يك‌ ليست‌ پيوندي‌ ساده ‌(Simple Linked-List)

۲) پشته‌ (heap)

۳) صف‌ فهرست ‌(Calender queue)

۴) يك‌ نوع‌ ويژه‌ كه‌ نوع‌ همزمان ‌(real time) ناميده‌ مي‌شود.

طرز كار زمان‌بند اين‌گونه‌ است‌ كه‌ اولين‌ رويداد فهرست‌ را برمي‌دارد و آن‌ را تا انتها انجام‌ مي‌دهد، سپس‌ به‌ سراغ‌ رويداد بعدي‌ در فهرست‌ مي‌رود و به‌ همين‌ ترتيب‌ كارخود را ادامه‌ مي‌دهد. ns به‌ صورت ‌single-threaded عمل‌ مي‌كند و در هر زمان‌ تنها مي‌تواند يك‌ رويداد را اجرا نمايد و همان‌طور كه‌ گفته‌ شد اگر بيشتر از يك‌ رويداد در فهرست‌ اجرا قرار داشته‌ باشد، اولين‌ رويدادي‌ كه‌ در آن‌ زمان‌ فهرست‌ شده‌ اجرا ميشود. رويدادهاي‌ هم‌زمان‌ مجدداً مرتب‌ نمي‌شوند و از اين‌رو تمام‌ زمان‌بندهايي‌ كه‌ رويدادها با ترتيب‌ يكساني‌ به‌ آنهاداده‌ شده‌ باشند خروجي‌هاي‌ يكساني‌ خواهند داشت‌.

كلاس‌ شبيه‌ساز متدهاي‌ ديگري‌ نيز براي‌ تنظيم‌ شبيه‌سازي‌ استفاده‌ مي‌كند كه‌عموماً به‌ سه‌ دسته‌ تقسيم‌ مي‌شوند:

۱(     روش‌هايي كه به ايجاد و مديريت توپولوژي مي‌پردازند (به ترتيب شامل مديريت گره‌ها و مديريت‌ لينك‌ها).

۲(     روش‌هايي‌ كه‌ براي‌ انجام‌ رديابي ‌(tracing) مورد استفاده‌ قرار مي‌گيرند و نيز يك ‌سري توابع‌ كمكي‌ كه‌ براي‌ ارتباط‌ با زمان‌بند به‌ كار مي‌روند.

  • گره‌ها و هدايت بسته (Nodes and Packet Forwarding)

صدازدن‌ مجدد هر شبيه‌سازي‌ مستلزم‌ وجود يك‌ نمونه‌ ساده‌ از شبيه‌ساز كلاس (Class simulator) براي‌ كنترل و اجراي‌ شبيه‌سازي می باشد. اين‌ كلاس‌ روندهاي‌ خاصي‌ را براي‌ ايجاد مديريت‌ توپولوژي و ذخيره‌ي‌ مراجع (refrences) به‌ هر عنصر توپولوژي‌ به‌ صورت‌ داخلي‌ پشتيباني‌مي‌كند.

۳-۴- ۱   مباني‌ گره‌ در ns  

دستور زير در ns براي‌ ايجاد يك‌ گره‌ كافي‌ است‌.

Set ns [new Simulator]

  ns node$

بيشتر عناصر گره‌ خود اشياي ‌Tcl هستند. ساختمان‌ عمومي‌ گره‌ها در شكل‌ نمايش‌ داده‌شده‌ است‌. همان‌طور كه‌ ديده‌ مي‌شود، گره‌ ساختار ساده‌اي‌ متشكل‌ از دو شي‌ء Tcl دارد. يك‌ طبقه‌بند آدرس ‌(address classifier) به‌ صورت Classifier- و يك‌ طبقه‌بند پورت (PortClassifier) به‌ صورت dmux-. عملكرد اين‌ طبقه‌بندها، شامل‌ توزيع‌ بسته‌هاي‌ ورودي ‌به‌ سرويس‌ مناسب‌، يا لينك‌ خارج‌شونده ‌(outgoing Link) می باشد. هر گره‌ حداقل‌ از عناصر زير تشكيل‌ مي‌شود:

۱) يك‌ آدرس‌ يا ID به‌ صورت‌ عدد صحيح‌ با‌ مقدار اوليه‌ صفر كه يكي يكي‌ افزايش‌ مي‌يابد.

۲) ليستي‌ از گره‌هاي‌ همسايه‌ (neighbor).

۳) ليستي‌ از عامل‌ها (‌agent).

۴) شناسه‌ مشخص‌كننده‌ نوع‌ گره‌ ((nodetype.

۵) يك‌ مدول‌ مسيريابي‌.

ns به‌ صورت‌ پيش‌فرض‌ گره‌ها را به‌ صورت‌ تك‌پخشي ‌(unicast)  ايجاد مي‌كند. اما مي‌توان‌ با دستور زير گره‌ را به‌ صورت‌ چندپخشي ‌(multicast) نيز ايجاد نمود:

Set ns [new simulator – multicast on]

۳-۴- ۲   پيكربندي‌ گره ‌(Configuning the Node)

روش‌هاي‌ ممكن‌ براي‌ پيكربندي‌ يك‌گره‌ي‌ منفرد به‌ صورت‌ زير قابل‌ دسته‌بندي‌ می باشد.

۱) توابع‌ كنترل ‌(Control function)، مديريت‌ آدرس‌ و شماره‌ پورت‌ و نيز توابع‌ مسيريابي تك‌پخشي‌.

۲) مديريت‌ عامل‌ها (Agent management).

۳) اضافه‌كردن‌ گره‌هاي‌ همسايه‌ جديد به‌ ليست‌ همسايه‌ها.

۳-۴- ۳  طبقه‌بندها(Classifier)

معمولاً وظيفه‌ي‌ يك‌ گره‌ به‌ هنگام‌ دريافت‌ يك‌ بسته‌ اين است‌ كه‌ موضوع‌ بسته‌، آدرس‌ مقصد بسته‌ و احياناً آدرس‌ مبدأ بسته‌ را بررسي‌ كند. سپس براساس‌ اطلاعات‌ حاصل‌ مسير و گام بعدي‌ حركت‌ بسته‌ را مشخص‌ كند. در ns اين‌عمل‌ با يك‌ شي‌ء طبقه‌بند ساده ‌(Classifier object) قابل‌ انجام‌ است‌. اشياي‌ دسته‌بند چندپخشي ‌(Multiple classifier objects)، هر يك‌ به‌ قسمت‌ مشخصي‌ از بسته‌ نگاه‌ مي‌كنند و بعد بسته‌ را از طريق‌ گره‌ به‌ جلو مي‌فرستند. هر گره‌ در ns از طبقه‌بندهاي‌ متفاوتي‌ براي‌ مقصدهاي گوناگوني‌ استفاده‌ مي‌كند. به‌ طور مثال‌ مي‌توان‌ به address classifer، multicast classifier،multipat path classifier، hash classifier و سرانجام ‌replicator اشاره‌ كرد. هر طبقه‌بند راهي براي‌ مرتبط‌ كردن بسته‌ با روند شبيه‌سازي‌، براساس‌ معيارهاي‌ منطقي‌ مشخصي‌ ايجاد مي‌كند و مرجعي‌ به‌ يك‌ شي‌ء شبيه‌سازي‌ ديگر، براساس‌ نتايج‌ مرتبط‌ به‌ دست‌ مي‌آورد. هرطبقه‌بند شامل‌ جدولي‌ است‌ كه‌ براساس‌ slot number ليست‌ مي‌شود. وظيفه‌ي‌ يك‌ طبقه‌بند اين‌ است‌ كه ‌slot number مرتبط‌ با هر دسته‌ دريافت‌ شده‌ را مشخص‌ كند و براساس‌ همين شماره‌، بسته‌ را به‌ مسير مناسب‌ ارسال‌ نمايد.

۳-۴- ۴ مدول‌هاي‌ مسيريابي‌ و ساختارهاي‌ طبقه‌بندي‌

گره‌هاي ‌ns مجموعه‌اي‌ از طبقه‌بندها هستند. ساده‌ترين‌ نوع‌ گره‌ (تك‌ نقشي‌) فقط‌ شامل ‌طبقه‌بند آدرس‌ و يك‌ طبقه‌بند پورت‌ است‌. در صورت‌ تمايل‌ براي‌ افزايش‌ قابليت‌ گره‌، طبقه‌بندهاي‌ بيشتري ميتوان‌ به‌ گره‌ اضافه‌ نمود. براي‌ يك‌ گره‌ ضروري‌ است‌ كه‌ واسط‌ مشخصي‌ براي‌ پيكربندي‌ اين‌ طبقه‌بندها وجود داشته‌ باشد و بتواند اين‌ طبقه‌بندها را به‌ بلوك‌هاي محاسبه‌ي‌ مسير (route computation blocks) مرتبط‌ سازد.

روش‌ كلاسيك‌ براي‌ انجام‌ اين‌ روند، از طريق‌ وراثت‌ كلاس‌ صورت‌ مي‌گيرد. اين‌ روش هنگامي‌ كه‌ بلوك‌هاي‌ تابع‌ جديد، مستقل‌ از يكديگر بوده‌ و به‌ صورت‌ دلخواه‌ و تصادفي‌ قابل تركيب‌ نيستند، به‌ خوبي‌ كار مي‌كند. لازم‌ است گره‌ اصلي ‌(base node) مجموعه‌اي‌ ازواسط‌ها را براي‌ دسترسي‌ و پيكربندي‌ طبقه‌بندها تعريف‌ كند. اين‌ واسط‌ها شرايط‌ زير را دارا مي‌باشند:

–      امكان‌ استفاده‌ از مدول‌هاي‌ مسيريابي‌ تك تك‌ كه‌ طبقه‌بندي‌هاي‌ خود را درون‌ گره‌ قرارمي‌دهند.

–      امكان‌ استفاده‌ از بلوك‌هاي‌ محاسبه‌ي‌ مسير جهت‌ گسترش‌ مسيرها، با استفاده‌ از تمام مدول‌هاي‌ مسيريابي‌ موجود، به‌ طبقه‌بندهايي‌ كه‌ به‌ اين‌ اطلاعات‌ نياز دارند.

–      ايجاد يك‌ مركز مديريت‌ براي‌ مدول‌هاي‌ مسيريابي‌ موجود.

  • لينك‌ها

ns علاوه‌ بر امكان‌ ارتباط‌ نقطه‌ به‌ نقطه (point to point) مي‌تواند انواع‌ ديگري‌ از محيط‌ها، تركيبي‌ از يك‌LAN با دسترسي‌ چندپخشي‌ همراه‌ با مجموعه‎اي‌ از لينك‌هاي‌ ساده‌ و نيز تركيبي‌ از محيط‌ بدون‌ سيم‌broadcast را نيز شبيه‌سازي‌ كند. همان‌طور كه‌ يك‌ گره‌ از طبقه ‌بندها تشكيل‌ شده‌ است‌، يك‌ لينك‌ ساده‌ نيز مجموعه‌اي‌ از connector ها می باشد. كلاس ‌Link، يك‌ كلاس‌ مجزا در OTcl است‌ كه‌ پيش‌فرض‌هاي‌ ساده‌اي‌ را داراست‌. كلاس ‌SimpleLink امكان‌ اتصال‌ نقطه‌ به‌ نقطه‌ دو گره‌ را فراهم‌ مي‌كند. ns به‌وسيله‌ي‌ روند Simple-Link{} مي‌تواند يك‌ ارتباط‌ يك‌ ناهمزمان دو طرفه ‌(half duplex) را بين‌ دو گره‌ ايجاد نمايد. دستور زير يك‌ لينك‌ ساده‌ را ايجاد مي‌كند.

$ns   Simplex – Link {node 0} {node 1} < bandwidth> <delay> <queue- type>

اين‌ دستور يك‌ لينك‌ ساده‌ با مشخصه‌هاي‌ <band nidth> ، < delay> بين‌ دو گره‌ <node1> , <node 0>  ايجاد مي‌كند نوع‌ صف‌ بسته‌ها در اين‌ ارتباط‌ از نوع <queue-type> می باشد.

 

——————————————————————-

فرمت فایل ها:   Docx ,PDF

تعداد صفحات: ۷۱ صفحه

حجم فایل۱٫۷۷ MB

——————————————————————-

برای دانلود فایل ورد کامل این مقاله لطفا بر روی لینک زیر کلیک نمایید.

نرم افزار شبيه سازی NS و نحوه نصب کردن و کار با آن- قسمت اول

نرم افزار شبيه سازی NS و نحوه نصب کردن و کار با آن- قسمت دوم

نرم افزار شبيه سازی NS و نحوه نصب کردن و کار با آن- قسمت سوم

نرم افزار شبيه سازی NS و نحوه نصب کردن و کار با آن- قسمت چهارم

دیدگاه ها بسته شده اند.

قیمت لحظه ای طلا و سکه و ارز

راهنمای دانلود

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

از این که حامی پروژه را برای دانلود انتخاب نموده اید، سپاسگزاریم.

در صورت بروز هر گونه مشکل برای خرید و دانلود، لطفا از طریق ایمیل زیر با ما مکاتبه نمایید.

HamiProje@Gmail.com

تبلیغات

alibaba02

تقویم شمسی

آذر ۱۳۹۷
ش ی د س چ پ ج
« آبان    
 12
۳۴۵۶۷۸۹
۱۰۱۱۱۲۱۳۱۴۱۵۱۶
۱۷۱۸۱۹۲۰۲۱۲۲۲۳
۲۴۲۵۲۶۲۷۲۸۲۹۳۰