موضوع : آشنایی با ساختار و نحوه عملکرد نرم افزار شبیه سازی شبکه
توضیح : این فایل به صورت ورد و آماده چاپ می باشد
. مقدمه
1-1 هدف
NS شبيهسازي شئ گراست كه بصورت گسسته مبتني بر رويدادها شبكه را شبيه سازي ميكند، اين برنامه در دانشگاه بركلي با زبانهاي C++ و Otcl ايجاد شده و بسط يافته است. NS اساساً براي پيادهسازي شبكههاي محلي و گسترده مفيد ميباشد. هرچند استفاده از NS براي افرادي كه با اصول شبيهسازها آشنا هستند ساده خواهد بود اما بكارگرفتن اين برنامه براي كاربران مبتدي استفاده از شبيه سازها كاملاً دشوار است زيرا تعداد وستندات و راهنماهاي مناسب براي كاربران مبتدي بسيار اندك ميباشد. با وجود اين مستندات زيادي وجود دارد كه بوسيلة افراد حرفهاي در شبيه سازي براي كاربران حرفهاي NS نوشته شده است. هدف از اين نوشته ارائة برخي ايده از چگونگي عملكرد شبيه سازها، راهنمايي براي توسعه و ادامة راه، آشنايي با اجزاي شبكه در كدهاي شبيه ساز، چگونگي ايجاد اجزاي شبكة جديد و …. ميباشد. عمدة مطالب با پرداختن به مثالهاي ساده و توضيحات مختصر مبتني بر تجربيات مختلف بيان شده است.
2-1 نماي كلي
NS يك شبيه ساز رويدادگراست كه در دانشگاه بركلي براي شبيهسازي شبكههاي مبتني بر IP ايجاد گرديده. در اين شبيه ساز پروتكلهاي شبكه از قبيل TCP و UDP ، رفتار منابع ترافيك زا مانند Ftp ، Telnet و Web ، مكانيزم مديريت صف در مسيريابها از قبيل DropTail ، RED و CBQ ، الگوريتمهاي مسيريابي مانند Dijkestra و …. قابل اجرا ميباشند. همچنين در NS، ارسال چندتايي (Multicast) و برخي از پروتكلهاي لاية فيزيكي براي شبيه سازي LANها نيز قابل اجرا ميباشند. پروژة NS در حال حاضر بخشي از پروژة VINT ميباشد كه ابزارهايي را براي نمايش نتايج شبيه سازي، آناليز و تبديل توپولوژهاي شبكه ايجاد كرده و توسعه ميدهد. توسعة VINT از طريق توليد كنندههايي كه بخوبي توانايي بكارگيري NS را دارند. NS رايج كنوني در محيط C++ و Otcl ( Otcl يك زبان اسكريپت با الحاقات شئ گراست كه در MIT ايجاد شده است)، نوشته شده و در دسترس ميباشد. در اين مقاله در مورد ساختار NS مختصري بحث ميشود اما چگونگي استفادة بيشتر از NS بطور جزئي با مثالهايي توضيح داده خواهد شد.
شكل 1: NS از ديدگاهي ساده شده براي كاربر
همانگونه كه در شكل 1 نشان داده شده است از ديدگاهي ساده شده براي كاربر، NS مفسر اسكريپت TCL بصورت شئ گراست كه داراي يك فهرست كنندة رويدادهاي شبيه سازي و كتابخانة Object هاي اجزاء شبكه و كتابخانههاي راهاندازي و تنظيم شبكه ميباشد. بعبارت ديگر براي استفاده از NS شما در زبان اسكريپت Otcl برنامه مينويسيد. براي تنظيم و راهاندازي شبكه، كاربر بايد اسكريپت Otcl بنويسد كه يك فهرست كنندة رويداد (زمانبند) را ايجاد كند، براي تنظيم كردن توپولوژيهاي شبكه از Objectهاي شبكه و توابع موجود در كتابخانهها و بيان منابع ترافيك زا در هنگام شروع و توقف انتقال بستهها از طريق زمانبند رويدادها استفاده ميشود. لغت عمودي براي تنظيم شبكه استفاده شده است چون تنظيم نمودن شبكه بصورت عمودي (عمقي) امكان مسيرهاي داده را از ميان Objectهاي شبكه بوسيلة تنظيم اشارهگر از يك Object به آدرس Object ديگر، فراهم ميكند. هنگاميكه يك كاربر بخواهد يك Object شبكة جديد ايجاد كند بسهولت ميتواند با نوشتن يك Object جديد يا ايجاد يك Object مركب از كتابخانة Object يك Object جديد ايجاد نمايد و جريان داده را از طريق Objectها برقرار سازد.
از اجزاء مهم NS در كنار Objectهاي شبكه زمتنبند رويدادهاست. هر رويداد در NS يك ID منحصر بفردي با زمان تنظيم شده براي هر بسته است كه به يك Object كه رويدادها را موجب ميشود، اشاره ميكند. در NS يك زمنبند رويداد، زمان شبيه سازي و شروع همة رويدادها را نگه ميدارد. اجزاء شبكه از طريق ارسال بستهها با يكديگر ارتباط برقرار ميكنند، هرچند كه اين امر موجب مصرف زمان حقيقي شبيه سازي نميشود. همة اجزاء شبكه بخشي از زمان شبيه سازي را صرف بكاربردن بستهها ميكنند. براي مثال سوئيچي در شبكه كه با 20 ميكروثانيه تاٌخير خروج يك رويداد براي يك بسته شبيه سازي شدهاست، در جدول زمانبندي تاٌخير هر رويداد براي آن 20 ميكروثانيه تنظيم گرديده، زمانبند بعد از 20 ميكروثانيه رويداد را از صف خارج كرده و آنرا به عنصر سوئيچ ارسال ميكند، كه آنهم بعد بسته را يك عنصر مرتبط خروجي مشخص ارسال مينمايد. استفادة ديگري كه از زمانبند رويداد ميشود بعنوان تايمر است. براي مثال TCP نيازمند يك تايمر براي نگهداري زمان سرآمدن انتقال بستهها ميباشد. تنها تفاوت بين تايمرها و زمانبندها، آنست كه تايمر مقدار زمان مرتبط با يك بسته را اندازهگيري ميكند و يك عمل خاص را به آن بسته بعد از سپري شدن يك زمان مشخص نسبت ميدهد.
NS نتنها در Otcl بلكه در C++ نيز نوشته شده است. بدليل كارآمد بودن، NS مسيرهاي عبوري دادهها را از مسيرهاي عبوري كنترلي تفكيك ساخته است. بخاطر كاهش دادن بستهها زمان پردازش رويدادها (نه زمان شبيه سازي)، زمانبند و Object هاي اجزاي شبكة اصلي در مسير دادهها با زبان C++ نوشته و كمپايل شدهاند. اين Objectهاي كمپايل شده از طريق يك اتصال Otcl در دسترس مفسر Otcl قرار گرفتهاند كه هر اتصال Otcl يك Otcl Object جفت براي هر C++ Object ايجاد كرده و توابع كنترلي را ميسازند. متغيرهاي قابل تنظيم مشخص شده با Objectهاي C++ بعنوان توابع و متغيرهاي عضو Objectهاي Otcl مخابره شده عمل ميكنند. بدين طريق كنترل Objectهاي C++ به Otcl واگذار شده است. همچنين افزودن توابع عضو و متغيرها به يك اتصال C++ در Otcl Object امكانپذير است.
نيازي به كنترل كردن Objectهاي C++ در شبيه سازي نميباشد بعلاوه يك Object (نه در مسير دادهها) بطور كامل ميتواند در Otcl اجرا شود.
فهرست عناوين عنوان صفحه
1 مقدمه 1
1-1 هدف 1
2-1 نماي كلي 1
2 مباني NS 5
1-2 Otcl زباني براي استفادة كاربر5
2-2 مثال سادهاي از شبيهسازي 7
3-2 زمانبند رويداد 12
4-2 اجزاي شبكه 14
5-2 بسته 17
3 بعد از شبيهسازي 19
1-3 مثالي از تحليل رديابي 19
4 توسعة NS22
1-4 در كجا بدنبال چه چيزي باشيم؟ 22
2-4 اتصال Otcl 23
5 ارائة چند مثال 25
1-5 LAN25
2-5 Multicasting 25
3-5 Web Server 26