Tuesday, January 18, 2011

Mobile Ad-hoc Network (MANET) Simulator based on Efficient Local-Multipath Adaptive Routing (ELMAR) Protocol

شبیه ساز شبکه اقتضایی بر مبنای پروتکل مسیریابی وفقی چندمسیره محلی بهینه

Mobile Ad-hoc Network (MANET) Simulator based on Efficient Local-Multipath Adaptive Routing (ELMAR) Protocol

شبيه ساز MANET

1          مقدمه

در اين بخش شبيه ساز MANET که براي شبيه سازي پروتکل پيشنهادي SELMAR طراحي شده است، معرفي مي شود. در بخش هاي بعدي نحوه کارکرد شبيه ساز بيان مي شود و برخي از کلاس ها، متغيرها و توابع مهم شبيه ساز توضيح داده مي شود و در نهايت نتايج شبيه سازي پروتکلSELMAR با توجه به خودخواهي و حمله لانه کرمي بررسي مي شود.

شبيه ساز MANET براي شبيه سازي پروتکل هاي شبکه هاي اقتضايي پياده سازي شده است، و خصوصا براي آناليز عملکرد پروتکل SELMAR مورد استفاده قرار می گیرد. شبيه ساز MANET با زبان برنامه نويسي Visual C++ نوشته شده است که تحت سيستم عامل Windows کار مي کند.

2          نحوه کارکرد شبيه ساز

به منظور شبيه سازي يک شبکه اقتضايي ابتدا اجزاي آن که شامل مسيرياب ها، لينک ها و ترافيک ها است، بايستي مشخص شوند. مسيرياب ها مطابق توپولوژي مورد نظر مي توانند به صورت تک تک اضافه شوند يا به صورت تصادفي يک گروه 100 تايي از گره ها (با توجه به شکل 1) توليد شوند و در صفحه مختصات قرار بگيرند.

شکل 1 نحوه ايجاد توپولوژي تصادفي

بعد از قرارگيري مسيرياب هاي تصادفي در صفحه مختصات (مانند شکل 2) مي توان مسيرياب ها را با ماوس حرکت داد. در ضمن با کليک راست بر روي گره ها مي توان آن ها را پاک کرد يا برخي خصوصيات کاربري مسيرياب را اصلاح کرد.

شکل 2 نمايش توپولوژي تصادفي بوجود آمده توسط MANET

خصوصيات کاربري مسيرياب هم از طريق نوار ابزار و هم از طريق کليک راست قابل دسترسي است. خصوصيات مسيرياب ها شامل عنوان (نامي منحصر به فرد براي هر مسيرياب)، پوشش راديويي (برحسب واحد نقطه)، تاخير پردازش اطلاعاتي (برحسب واحد تيک)، اندازه بافر (برحسب واحد بسته)، مسير فيزيکي عکس مسيرياب در ديسک سخت، مختصات افقي مسيرياب، مختصات عمودي مسيرياب، طول قالب (برحسب واحد نقطه)، عرض قالب (برحسب واحد نقطه) و نوع مسيرياب (اقتضايي، مخرب يا خودخواه) است. (شکل 3)

شکل 3 ديالوگ تنظيم مشخصات مسيرياب

لينک هاي بي سيم بين گره هاي همسايه توسط خطوط رنگي نمايش داده مي شود. نرم افزار بعد از تنظيم مکان گره ها توسط کاربر با توجه به شکل 4 با انتخاب گزينه ايجاد لينک مي تواند لينک هاي بي سيم ممکن بين گره ها را نمايش دهد. نرم افزار فاصله بين گره ها را با محدوده پوشش راديويي آن ها مقايسه مي کند و در صورتي که فاصله بين دو گره از پوشش راديويي هر دو گره کمتر باشد، لينک واصل بين دو گره نمايش داده مي شود.

شکل 4 نحوه ايجاد ارتباطات ميان گره ها

پس از نمايش لينک ها نيز مي توان گره ها را جابجا نمود. اما اگر گره ها از بازه راديويي يکديگر خارج شوند (شکل 5)، لينک واصل به نشانه از دست رفتن ارتباط بي سيم بين دو گره قرمز رنگ مي شود.

شکل 5 خارج شدن گره شماره 10 از پوشش گره هاي شماره 17 و 19

حال بايستي ترافيک بين گره ها را تعريف کنيم. براي برقراري ارتباط ميان گره ها مي توان ترافيک بين هر مبدا و مقصد معين را با توجه به پروتکل مربوطه تنظيم کرد. همان گونه که در شکل 6 نشان داده شده است، مي توان زمان شروع ارتباط را هم برحسب تيک تعيين کرد تا ترافيک مورد نظر در زمان مورد نظر بين مبدا و مقصد بوسيله پروتکل مربوطه جريان يابد.

شکل 6 نحوه بازکردن ديالوگ تعريف ترافيک

پنجره مربوط به تنظيم ترافيک بين مبدا و مقصد مشخص در زمان مورد نظر با توجه به پروتکل مربوطه در شکل 7 نشان داده شده است.

شکل 7 ديالوگ تنظيم ترافيک بين گره ها

براي انجام عمل شبيه سازي مي توانيد گزينه Profile را از قسمت شبيه سازي در نوار ابزار برنامه مطابق شکل 8 انتخاب کنيد.

شکل 8 نحوه راه اندازي پنجره شبيه سازي

سپس پنجره مربوط به عمل شبيه سازي باز مي شود (شکل 9). با فشردن دکمه Resume عمل شبيه سازي ادامه مي يابد و دکمه Resume به Pause تبديل مي شود، همچنين با کليک دکمه Pause عمل شبيه سازي متوقف مي شود و دکمه Pause به Resume مبدل مي شود. براي کنترل سرعت عمل شبيه سازي مي توانيد نشان لغزنده [1] را حرکت دهيد تا سرعت عمل شبيه سازي افزايش يا کاهش يابد (بصورت پيش فرض سرعت عمل شبيه سازي بر روي حداقل مقدار خود قرار دارد).

شکل 9 ديالوگ کنترل عمليات شبيه سازي

در دنياي واقعي هر مسيرياب به طور مستقل با استفاده از پردازنده داخلي خود اعمال شبکه مربوط به خودش را انجام مي دهد. در دنياي مجازي شبيه سازي سعي مي شود که با تعريف خصوصيات ويژه و اساسي مسيرياب ها تفاوت هاي آن ها بارزتر شود و کل اعمال شبکه را بتوان با استفاده از يک پردازنده دنبال کرد. در عمل همه مسيرياب ها به صورت موازي کار مي کنند اما براي شبيه سازي مجبوريم که وظايف خواسته شده از هر گره را در بازه هاي زماني مشخص با توجه به قدرت پردازنده و ديگر مشخصات رايانه انجام دهيم.

در نرم افزار MANET براي سرعت بخشيدن به عمل شبيه سازي سعي شده است که در هر تيک زماني تمام مسيرياب ها يک بار ساعت[2] بخورند. به منظور واقعي تر شدن عمل شبيه سازي در هر بار اجراي حلقه زماني برحسب تيک همه مسيرياب ها به اندازه يک واحد زماني (تيک) کارهاي محوله خود را انجام مي دهند. اعمال خواسته شده از هر گره شامل دانلود[3] (به معناي دريافت بسته رسيده در انتهاي لينک مورد نظر متصل به گره)، پردازش بسته ها و آپلود[4] (به معناي ارسال بسته پردازش شده به ابتداي لينک مورد نظر متصل به گره) است. براي آن که اعمال دانلود و آپلود تنها يک باردر هر حلقه زماني انجام شوند از يک بيت به منظور شناسايي لينک فعال يا غيرفعال استفاده مي شود. روش مورد استفاده فوق از نظر طراح برنامه بسيار سودمندتر از ساير روش ها به نظر رسيد!

با شروع زمان ارسال ترافيک، گره مبدا ابتدا عمل مسيريابي را انجام مي دهد و مرحله کشف مسير را آغاز مي کند. بدين منظور بسته درخواست مسير را به وجود مي آورد و به همسايگانش پخش مي کند. توجه شود که بسته درخواست مسير به دليل آن که پروتکل مورد استفاده بر مبناي بردار فاصله برحسب نياز کار مي کند، تنها يک بار در حافظه ايجاد مي شود و از آن به بعد گره ها تنها اشاره گر بسته را پخش مي کنند. اين کار به افزايش سرعت شبيه سازي بسيار کمک مي کند. حلقه ساعت زني گره ها با توجه به مقادير انتخابي کاربر در پنجره شبيه سازي هر چند ميلي ثانيه يکبار تکرار مي شود تا عمل شبيه سازي شبکه به همين منوال جلو رود.

هر مسيرياب شبکه در هر بار اجراي حلقه ساعت زني گره ها به لينک هاي واصل خود گوش مي دهد تا چنانچه بسته اي به انتهاي مسير خود رسيد، توسط مسيرياب دانلود و دريافت شود. بسته هاي دريافتي گره ها در بافر گيرنده ذخيره مي شود و به ترتيب پردازش مي شوند. براي مثال گره هاي مياني بسته هاي دريافتي را بررسي مي کنند که به کدام گره بعدي بفرستند و بسته هاي داده نيز توسط مقصد جمع آوري مي شوند. بسته هاي ارسالي گره ها در بافر فرستنده قرار مي گيرند و به ترتيب براي همسايه هاي مورد نظر از طريق لينک هاي مربوطه فرستاده مي شوند.

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

مقدار تاخير بسته ها در داخل لينک ها (برحسب تعداد تيک ها) بر اساس فاصله گره هاي واصل توسط لينک محاسبه مي شود و به ازاي هر بار ساعت زني يک واحد از آن کسر مي شود. صفر شدن شمارنده تاخير به معناي رسيدن بسته به انتهاي لينک يا سر مقابل لينک است تا گره همسايه در ساعت بعدي آن را دريافت کند.

لينک هاي موجود بين مسيرياب ها در اولين گام به رنگ مشکي هستند. با عبور بسته هاي درخواست مسير از لينک ها رنگ آن ها آبي مي شود و در هنگام حرکت بسته هاي جواب مسير از لينک ها رنگ آن ها زرد مي گردد. وقتي که بسته داده در داخل لينک قرار مي گيرد، رنگ لينک بنفش مي شود و در نهايت با بازگشت بسته ACK به مبدا رنگ لينک هاي مسير به نشانه برقراري موفقيت آميز ارتباط سبز مي شود.

نحوه پردازش و مسيريابي گره ها بر مبناي پروتکل ترافيک لايه شبکه است که در هنگام تعريف ترافيک توسط کاربر لحاظ شده است. پردازش بسته ها به نوع بسته ها بستگي دارد. مثلا بسته درخواست مسير در صورت نبود مسير مشخص به مقصد به همسايگان پخش مي شود ولي بسته ACK به گره بعدي سوي مبدا جلوراني مي شود. در ضمن گره هاي مولد ترافيک علاوه بر پردازش هاي معمول بايستي زمان بين رفت بسته درخواست و آمد بسته جواب را اندازه گيري کنند و همواره به ازاي ارسال تعداد مشخصي بسته داده منتظر دريافت يک پيغام ACK مبتني بر سالم به مقصد رسيدن داده ها باشند.

در برنامه MANET پروتکل هاي لايه پيوند داده و لايه فيزيکي به صورت ساده مدل شده اند. در مدل لايه فيزيکي بسته ها بدون نويز به صورت اشاره گر بايتي ارسال و دريافت مي شوند. در اين پروژه از عوامل متعدد مؤثر در مخابرات ديجيتال از جمله نويز، فيدينگ، چند مسيره بودن و غيره صرف نظر شده است و مدل لايه فيزيکي به ساده ترين شکل در نظر گرفته شده است. زيرا هدف از انجام پروژه بررسي اثر حملات شناخته شده بر روي پروتکل هاي لايه شبکه است و چنين عواملي به دليل اثر ناچيزشان در نظر گرفته نشده اند. همچنين لايه پيوند داده و زير لايه کنترل دسترسي فضا[5] نيز به صورت کاملا دو طرفه بدون تصادم در نظر گرفته شده است، بدين معني که گره هاي مرتبط مي توانند از هر جهت به داخل لينک واصل بين خودشان داده ارسال کنند و اين داده ها با يکديگر تلاقي نمي کنند و به راحتي در انتها توسط خود گره ها قابل دريافت هستند.

3          معرفي کلاس ها (متغيرها و توابع)

3-1      مقدمه

نرم افزار MANET شامل پنج کلاس اصلي است و بقيه کلاس هاي نرم افزار، زيرکلاسي از اين پنج کلاس هستند و يا از کلاس هاي پيش تعريف MFC [6] هستند. پنج کلاس عمده برنامه MANET عبارتند از کلاس CLink، کلاس CPacket، کلاسCRouter، کلاسCTable و کلاسCTraffic. در ادامه اين بخش به بيان هر يک از کلاس هاي مورد استفاده در نرم افزار به انضمام متغيرها و توابع هرکدام مي پردازيم.

3-2      کلاس CLink

کلاس CLink براي مدل سازي لينک هاي واصل بين گره ها در شبکه اقتضايي به کار مي رود. هر متغيري که از نوع کلاس CLink تعريف شود، بايستي به دو گره اقتضايي به نشانه دو سر لينک اشاره کند. همچنين بسته به نوع ارتباط و پهناي باند آن مي توان فرکانس ارسال بيت در لينک را با متغيرFrequency تنظيم کرد.

متغيرهاي Router1 و Router2 از کلاس CLink اشاره گرهاي مسيرياب هاي دو انتهاي لينک را مشخص مي کنند. متغير Start و End مختصات نقطه ابتدا و انتها لينک را در صفحه نشان مي دهند. روال (تابع) Draw براي رنگ آميزي لينک به کار مي رود. رنگ لينک توسط نوع آخرين بسته اي که وارد آن شده است، تعيين مي شود. براي مثال بسته درخواست مسير رنگ لينک را آبي مي کند، بسته جواب مسير رنگ لينک را زرد مي کند، بسته داده رنگ لينک را بنفش مي کند و بسته ACK رنگ لينک را سبز مي کند. براي دسترسي به رنگ ها متغير rgb از نوع COLORREF استفاده مي شود.

روال Distance2 توان دوم فاصله بين گره هاي ابتدا و انتهاي لينک را محاسبه مي کند و از خروجي اين روال براي محاسبه متغير تاخير (Delay) در لينک استفاده مي شود. متغير Duplex يک طرفه يا دو طرفه بودن لينک را نشان مي دهد. اشاره گر بسته هاي آپلود شده توسط گره اول در متغير آرايه اي p1s و اشاره گر بسته هاي آپلود شده توسط گره دوم در متغير آرايه اي p2s نگهداري مي شوند. در ضمن زمان تاخير انتشار هر کدام از اين دسته ها نيز به ترتيب در متغيرهاي آرايه اي pd1s و pds2 ذخيره مي شوند.

روال هاي مهم مورد استفاده در کلاس Clink عبارتند از Transmit، Download و Upload. از روال Transmit براي حرکت بسته ها به ازاي هر بار ساعت زني با توجه به مقدار تاخير هر بسته استفاده مي شود. مسيرياب ها با استفاده از روال Uploadي لينک هاي خود مي توانند بسته هاي ارسالي خود را بر روي لينک ها سوار کنند و از جهت ديگر هم پس از صفر شدن متغير تاخير هر بسته مسيرياب مورد نظر مي تواند با کمک روال Downloadي لينک مربوطه بسته را از روي آن دانلود و دريافت کند.

3-3      کلاس CPacket

کلاس CPacket براي مدل سازي بسته هاي مورد استفاده در شبکه هاي اقتضايي به کار مي رود. هر متغير از نوع کلاس CPacket حاوي يک شناسه (متغيرID) منحصر به فرد است که اغلب به صورت تصادفي تعيين مي شود. همچنين متغير Type نوع بسته را مشخص مي کند که به صورت پيش فرض برابر صفر است يعني بسته از نوع بسته درخواست مسير است. اگر مقدار متغير Type ، يک باشد بسته از نوع جواب مسير است، اگر مقدار آن دو باشد بسته از نوع داده است و اگر مقدار آن سه باشد بسته از نوع ACK خواهد بود.

علاوه بر اين ها کلاس CPacket حاوي اسامي منبع و مقصد (متغيرهاي Source و Destination) از نوع رشته اي[7] است، تا مبدا و پايان حرکت بسته در سرآيند آن مشخص باشد. درضمن متغير SeqNum آخرين شماره مسلسل دريافتي از مبدا را نشان مي دهد و به گره هاي مياني کمک مي کند تا جدول مسيريابي خود را در صورت جديد بودن اين شماره به روز رساني کنند. متغير Expiration نيز طول عمر بسته را نشان مي دهد که با عبور بسته از هر گره يک واحد از مقدار آن کسر مي شود. متغير Protocol نوع پروتکلي را که بسته بر مبناي آن توليد و پردازش مي شود را نشان مي دهد. متغير ChangePath از کلاس CPacket در صورت فعال شدن (مقدار بزرگتر از صفر) باعث تغيير مسير در گره هاي مياني مي شود. اين متغير نقش بسزايي در عمل مسيريابي پروتکل دارد.

3-4      کلاس CTraffic

کلاس CTraffic به منظور مدل سازي ترافيک شبکه هاي اقتضايي طراحي شده است. هر شيء که از کلاس CTraffic تعريف شود، حاوي دو اشاره گر از کلاس CRouter است که به مبدا و مقصد ترافيک اشاره مي کند. گره هاي ابتدا و انتهاي کلاس CTraffic همان متغيرهاي Source وDestinationي کلاس CTraffic هستند. متغير Protocol در کلاس CTraffic نوع پروتکلي که ترافيک بر مبناي آن تعريف مي شود را بيان مي کند و متغير Start زمان شروع توليد ترافيک در شبکه را بر حسب تيک بيان مي کند. پروتکل پيش فرض مورد استفاده در اين کلاس همان پروتکلELMAR است و مقدار پيش فرض شروع ترافيک همواره صفر (مبدا شبيه سازي) است.

3-5      کلاس CTable

کلاس CTable براي مدل سازي جداول مسيريابي گره ها طرح ريزي شده است. هر متغير از نوع کلاس CTable بايستي توسط متغير رشته اي Destination به نام منحصر به فرد مقصد اشاره کند. هر مسيرياب به ازاي هر مقصد ممکن است که تعدادي مسير در اختيار داشته باشد. تعداد مسيرهاي در اختيار گره به ازاي هر مقصد از تعداد همسايه هاي گره کوچکترمساوي است. هر متغير کلاس CTable آرايه اي از مسيرها (از نوع کلاس CPath) را در اختيار دارد که هر متغير از نوع کلاس CPath در اينجا تنها پرش بعدي براي رسيدن به مقصد را نشان مي دهد، زيرا پروتکل هاي مورد استفاده با بردار فاصله کار مي کنند و از نوع "مسير از مبدا" نيستند.

متغير Index انديس مسير فعلي در آرايه مسيرها را که گره از آن استفاده مي کند، نشان مي دهد. در صورتي که متغير Index تمام مسيرهاي موجود را غربال کند، متغير Round فعال مي شود و حداقل يک دور جستجوي کامل مسيرها را نشان مي دهد. اين دو متغير براي پيدا کردن مسير مناسب بين مبدا و مقصد در زيرگراف القايي توپولوژي شبکه نقش اساسي دارند.

3-6      کلاس CRouter

کلاس CRouter مسيرياب هاي شبکه اقتضايي را مدل مي کند و در واقع اصلي ترين کلاس نرم افزار شبيه ساز MANET محسوب مي شود. هر شيء از نوع کلاس CRouter، نام منحصر به فردي از نوع رشته اي به عنوان نشاني IP دارد که در متغير Caption ذخيره مي شود. مختصات افقي، مختصات عمودي، طول و عرض مستطيلي که نشان دهنده مسيرياب در صفحه است، به ترتيب توسط متغيرهاي X ،Y ، RectLength و RectWidth تعريف مي شوند.

برخي ديگر از پارامترهايي که توسط کاربر قابل تغيير هستند، شامل پوشش راديويي، تاخير، اندازه بافر، نوع مسيرياب و مسير فيزيکي تصوير گره در ديسک سخت است، که به ترتيب در متغيرهاي Coverage، Delay، BufferSize، Type و ImagePath نگهداري مي شوند. نوع مسيرياب مي تواند اقتضايي (Adhoc)، خودخواه (Selfish) و يا مخرب (Malicious) باشد. مسيرياب کلاس CRouter به آرايه هاي اشاره گر بسياري دسترسي دارد و بدين وسيله مي تواند اعمال شبکه را مدل سازي کند.

آرايه links شامل اشاره گر تمام لينک هاي متصل به مسيرياب از کلاس CLink است. آرايه traffics شامل اشاره گر همه ترافيک ها از کلاس CTraffic است که بايستي توسط مسيرياب توليد شوند. آرايه هاي receivedpackets، generatedpackets، processedpackets وdatapackets به ترتيب حاوي اشاره گر همه بسته هاي دريافت شده، توليد شده، پردازش شده و داده (از نوع کلاس CPacket) است که مسيرياب با آن ها در ارتباط بوده است.

آرايه tables شامل اشاره گر جداول مسيريابي مقاصد مشخص است. همسايه هاي مسيرياب که خود از نوع کلاس CRouter هستند، در آرايه neighbors قرار مي گيرند و ترتيب همسايگان در آرايه neighbors با ترتيب لينک ها در آرايه links همخواني دارد. براي مثال همسايه شماره 7 با لينک شماره 7 به مسيرياب وصل مي شود.

هر مسيرياب کلاس CRouter شماره مسلسل هاي بسته هاي مختلف و زمان هاي انقضاي آن ها را در متغيرهايي که به ترتيب به SeqNum و Exp ختم مي شوند، نگهداري مي کند. در ضمن هر مسيرياب براي خود ساعتي دارد که تعداد تيک هاي گذشته از زمان روشن شدن مسيرياب را توسط متغيرClock اندازه گيري مي کند. متغير کنترلي SendData نيز زمان ارسال داده را کنترل مي کند و بعد از انجام عمل مسيريابي فعال مي شود.

هسته اصلي مسيرياب کلاس CRouter روال tick است، که با هر بار اجراي آن توسط حلقه ساعت زني برنامه، يک واحد به مقدار متغير Cloakي مسيرياب افزوده مي شود و سپس روال هاي Receive ، Process و SparkTraffic فراخواني مي شوند. روال Receive نقش دانلود و دريافت بسته ها (در صورت وجود) از لينک ها را دارد. روال Process شامل چهار قسمت است که برجسب نوع بسته فعلي خوانده شده از بافر مسيرياب، يکي از توابع ProcessRReqPacket، ProcessRREpPacket، ProcessDataPacket و ProcessACKPacket اجرا مي شوند. تابع SparkTraffic براي توليد ترافيک در شبکه استفاده مي شود.

زمان تاخير پردازش بسته ها توسط روال GetProcessDelay محاسبه مي شود. براي توليد بسته هاي درخواست مسير، جواب مسير، داده و ACK به ترتيب از روال هاي GenRReq، GenRRep، GenDataPacket و GenAckPacket استفاده مي شود. مسيرياب با استفاده از آرايه هاي بسته ها و روال IsProcessed تکراري نبودن بسته هاي دريافتي را بررسي مي کند تا در ساعت زني هاي بعدي اين بسته هاي دريافتي غيرتکراري را پردازش کند. مسيرياب به منظور پخش بسته مورد نظر براي همسايگان از توابع Broadcast خود استفاده مي کند تا بسته مورد نظر بر روي همه لينک ها آپلود شود.

مسيرياب با دريافت بسته هاي مختلف جداول مسيريابي خود را با استفاده از تابع Update تنظيم و به روزرساني مي کند. گره کلاس CRouter براي بدست آوردن انديس جدول مربوط به مقصد خاص تابع GetTableIndexToDest را به کار مي برد و به منظور بدست آوردن انديس جدول مربوط به مبدا مورد نظر روال GetTableIndexToSource را استفاده مي شود. مسيرياب کلاس CRouter از تابع GetNextHop براي مسيريابي بسته دريافتي به مقصد مورد نظر استفاده مي کند. با اين توضيحات خلاصه شده مسيرياب کلاس CRouter قادر خواهد بود که کليه وظايف متناسب با پروتکل را به صورت خودکفا انجام دهد.

4          نتايج شبيه سازي

در اين قسمت پروتکل SELMAR در يک توپولوژي شبکه 50 گره اي که به صورت تصادفي کنار يکديگر قرارگرفته اند، شبيه سازي شده است (شکل 10). گره هايي که قصد برقراري ارتباط دارند با رنگ قرمز دورشان مشخص شده اند. گره مبدا گره شماره صفر و گره مقصد گره شماره 49 است.

شکل 10 توپولوژي شبکه دلخواه 50 گره اي

با انجام عمل شبيه سازي بسته هاي درخواست مسير در شبکه پخش مي شوند و لينک ها را آبي مي کنند. سپس بسته هاي جواب مسير در شبکه حرکت مي کنند و رنگ لينک ها را زرد مي کنند. نمايي از توپولوژي شبکه در ميان عمل شبيه سازي در شکل 11 نشان داده شده است.

شکل 11 پخش شدن بسته هاي درخواست و جواب مسير در شبکه

سپس گره صفر بسته هاي داده را به سمت گره 49 با انتخاب کوتاه ترين مسير در جدول مسيريابي ارسال مي کند. گره هاي مياني ترافيک را در جهت انديس ورودي جداول خود مي فرستند. مسير بنفش مسير جلوراني داده از مبدا به مقصد را نشان مي دهد. بسته َََACK مسير معکوس (مسير سبز) برگشتي به مبدا را مي پيمايد (شکل 12)، چراکه گره هاي مياني پرش معکوس بازگشتي به مبدا را در جداول خود تنظيم مي کنند. لذا مسير سبز برگشتي به مبدا مسير بنفش رفت به مقصد را دوباره رنگ آميزي مي کند.

شکل 12 مسير سبز رنگ دريافت بسته ACK

گره شماره 28 همسايه گره 49 (مقصد) در شکل 12 با دايره سياه دورش نشان داده شده است. گره 28 همسايه مقصد در مسير انتخابي ارتباط قرار گرفته است، لذا براي آزمايش مقاومت پروتکل در برابر خودخواهي خاصيت گره 28 را از اقتضايي به خودخواه تغيير مي دهيم و عمل شبيه سازي را براي همان توپولوژي دو مرتبه انجام مي دهيم. در نهايت همان طور که در شکل 13 نشان داده شده است، مسير جايگزين (49-30-25-36-27-0) به جاي مسير قبلي (49-28- 19-40-6-0) انتخاب مي شود. عمل خودخواه سازي گره هاي همسايه مقصد را ادامه مي دهيم و اين بار گره 30 را خودخواه مي کنيم. نتايج شبيه سازي نشان مي دهد که مسير بهينه محلي مسير 49-4-20-37-42-0 خواهد بود.

شکل 13 مقاومت پروتکل SELMAR در مقابل خودخواهي گره شماره 28

حال نوع گره شماره 4 که همسايه مقصد است، را نيز به خودخواه تغيير مي دهيم. اين بار تعداد دفعات متوقف شدن ارتباط افزايش مي يابد و پروتکل پس از امتحان تعداد زيادي از مسيرها مي تواند از طريق گره شماره "يک" راهي به گره مقصد بيابد. مسير انتخابي در اين حالت مطابق شکل 14 به صورت 49-1-26-2-43-5-0 است.

شکل 14 توانايي پروتکل SELMAR در مقابله با خودخواهي گره ها

علي رغم اينکه تعداد اقدامات براي برقراري ارتباط افزايش مي يابد هنگامي که تعداد گره هاي خودخواه افزايش مي يابد، هر اقدام براي ايجاد ارتباط انديس ورودي گره هاي مياني را از سمت گره هاي خودخواه (مشابها براي گره هاي مخرب) خود به خود دور مي کند. لذا افزايش تعداد اين اقدامات، به برقراري ارتباط هاي بعدي کمک شاياني مي کند، زيرا گره هاي مياني انديس ورودي جداول مسيريابي خود را براي اقدامات ايجاد ارتباط بعدي تغيير داده اند و گره هاي خودخواه براي همکاري جلوراني بسته هاي داده انتخاب نمي شوند، بنابراين تعداد اقدامات براي برقراري ارتباط هاي بعدي کاهش مي يابد.

براي نشان دادن مقاومت پروتکل SELMAR در مقابل حمله فعال لانه کرمي نيز همان توپولوژي تصادفي قبلي را در نظر مي گيريم و يک لينک لانه کرمي (خط قرمز) بين گره شماره 24 (همسايه گره مبدا) و گره شماره 30 (همسايه گره مقصد) اضافه مي کنيم. همان طور که در شکل 15 نشان داده شده است، کوتاه ترين مسير بين مبدا (گره صفر) و مقصد (گره 49) مسير شامل گره هاي 49-30-24-0 خواهد بود.

شکل 15 مقاومت پروتکل SELMAR در مقابل حمله لانه کرمي

گره هاي يال لانه کرمي بسته هاي داده را دور مي ريزند. با انجام عمل شبيه سازي مشاهده مي شود که پس از انجام 5 تلاش براي ايجاد ارتباط پروتکل SELMAR مي تواند مسير بهينه محلي 49-4-29-43-5-0 را رديابي کند. به اين ترتيب مي توان درک کرد که لانه کرم ها از گره هاي خودخواه خطرناک تر هستند و افزايش لينک هاي لانه کرمي باعث مي شود که يافتن مسير مناسب بيشتر به طول انجامد. لانه کرم ها بيشتر ترافيک هاي شبکه را مانند سياهچاله ها به سمت خود جذب مي کنند. نتايج شبيه سازي نشان مي دهد که هر چه طول لانه کرم بيشتر باشد تهديد خطرناک تري براي شبکه محسوب مي شود و تلاش بيشتري بايد صورت گيرد تا الگوريتم مسيريابي همگرا شود و مسير ارتباط بين مبدا و مقصد برقرار گردد. در عوض گره هاي مهاجم نيز بايستي هزينه بيشتري براي برقراري لانه کرم بلندتر بپردازند! همانند روش جلوگيري از رشد خودخواهي، چنانچه تعداد اقدامات براي برقراري ارتباط افزايش يابد، جهت پرش هاي بعدي گره هاي مياني از سمت مهاجمان لانه کرم ها تغيير مي کند. اين نکته سودمندي در رابطه با افزايش عملکرد پروتکل در ايجاد ارتباط هاي بعدي بين گره هاي شبکه است.

5          نتيجه گيري

در اين فصل نحوه عملکرد شبيه ساز MANET مورد استفاده در اين پروژه را توضيح داديم و کلاسها، متغيرها و توابع مهم تعريف شده در اين نرم افزار را معرفي کرديم. در نهايت پروتکل SELMAR را توسط برنامه MANET شبيه سازي کرديم. با توجه به نتايج شبيه سازي و استدلال هاي فصل پيشين مي توان چنين نتيجه گرفت که پروتکل SELMAR در مقابل حملات فعال و غيرفعال شناخته شده تاکنون از مقاومت لازم برخوردار است و امنيت مورد نظر را برقرار مي کند. همچنين با توجه به خواص الگوريتم مبناي خود ELMAR نسبت به پروتکل هاي چندمسيريابي پيشين عملکرد بروندهي مطلوبتري نيز دارد.

 

 

 

                                                                                                               



[1] Slider

[2] Clock

[3] Download

[4] Upload

[5] Medium Access Control (MAC) Sub Layer

[6] Microsoft Foundation Classes

[7] String

Attachments (22)

  • Attacker.h - on Sep 11, 2010 3:06 PM by Farshid Farhat (version 1) 
    1k Download
  • Caption.h - on Sep 11, 2010 3:06 PM by Farshid Farhat (version 1) 
    1k Download
  • CaptionDialog.h - on Sep 11, 2010 3:06 PM by Farshid Farhat (version 1) 
    1k Download
  • End2End.h - on Sep 11, 2010 3:07 PM by Farshid Farhat (version 1) 
    1k Download
  • Farshid.Farhat.Resume.pdf - on Dec 18, 2010 3:23 PM by Farshid Farhat (version 1) 
    112k View Download
  • Link.cpp - on Sep 11, 2010 3:11 PM by Farshid Farhat (version 1) 
    6k Download
  • Link.h - on Sep 11, 2010 3:07 PM by Farshid Farhat (version 1) 
    1k Download
  • LinkDialog.h - on Sep 11, 2010 3:07 PM by Farshid Farhat (version 1) 
    1k Download
  • MANET.h - on Sep 11, 2010 3:07 PM by Farshid Farhat (version 1) 
    1k Download
  • MANETDoc.h - on Sep 11, 2010 3:07 PM by Farshid Farhat (version 1) 
    2k Download
  • MANETView.h - on Sep 11, 2010 3:07 PM by Farshid Farhat (version 1) 
    4k Download
  • MainFrm.h - on Sep 11, 2010 3:07 PM by Farshid Farhat (version 1) 
    1k Download
  • Packet.h - on Sep 11, 2010 3:07 PM by Farshid Farhat (version 1) 
    2k Download
  • Path.h - on Sep 11, 2010 3:07 PM by Farshid Farhat (version 1) 
    1k Download
  • Router.h - on Sep 11, 2010 3:08 PM by Farshid Farhat (version 1) 
    6k Download
  • RouterDialog.h - on Sep 11, 2010 3:08 PM by Farshid Farhat (version 1) 
    2k Download
  • SimDlg.h - on Sep 11, 2010 3:10 PM by Farshid Farhat (version 1) 
    2k Download
  • StdAfx.h - on Sep 11, 2010 3:10 PM by Farshid Farhat (version 1) 
    1k Download
  • Table.h - on Sep 11, 2010 3:10 PM by Farshid Farhat (version 1) 
    1k Download
  • Traffic.h - on Sep 11, 2010 3:10 PM by Farshid Farhat (version 1) 
    1k Download
  • resource.h - on Sep 11, 2010 3:08 PM by Farshid Farhat (version 1) 
    4k Download
  • trafficdialog.h - on Sep 11, 2010 3:10 PM by Farshid Farhat (version 1) 
    1k Download

No comments: