102
ﺩﺍﻧﺸﻜﺪﻩ ﻛﺎﻣﭙﻴﻮﺗﺮ ﻣﻬﻨﺪﺳﻲ ﻓﻨ ﻭﺭﻱ ﺍﻃﻼﻋﺎﺕ ﺍﻣﻴﺮﻛﺒﻴﺮ ﺻﻨﻌﺘﻲ ﺩﺍﻧﺸﮕﺎﻩ ﻗﺎﺑﻠﻴﺘﻬﺎﻱ ﺑﺮ ﻣﺮﻭﺭﻱNS-2 ﺁﺫﺭﻣﯽ ﻣﻬﺪﯼ۸۳۲۳۱۱۰۲ ﺍﺳﻔﻨﺪ۱۳۸۳

NS Simulator for Beginners in Persian

Embed Size (px)

Citation preview

Page 1: NS Simulator for Beginners in Persian

اطالعات وريافن و مهندسي كامپيوتر دانشكده

دانشگاه صنعتي اميركبير

NS-2مروري بر قابليتهاي

۸۳۲۳۱۱۰۲مهدی آذرمی اسفند

۱۳۸۳

Page 2: NS Simulator for Beginners in Persian

i

فهرست مطالب

١‐١..................................................................................................................................مقدمه. ١

٢‐٢..............................................................................NS-2آشنايي مقدماتي با . ٢

٣‐٢......................................................ns كردن و نصب downloadطريقه : ١بخش ١‐٢

١‐١‐٢ Download كردنns...............................................................................٣‐٢

٣‐٢.................................................................................................................nsنصب ٢‐١‐٢ ٥‐٢..........................................................................................nsشروع كار با : ٢بخش ٢‐٢

٥‐٢...............................................................................................................nsاجراي ١‐٢‐٢

٥‐٢............................................................................................................nsمعماري ٢‐٢‐٢

٧‐٢...............................................................................................OTclزبان كاربري ٣‐٢‐٢ ١٠‐٢.........................................................................................Namنرم افزار : ٣بخش ٣‐٢

١٠‐٢..................................................... براي نمايش توپولوژيnamپيكربندي ١‐٣‐٢

١١‐٢.....................................................................................................واسط كاربري ٢‐٣‐٢

١٢‐٢........................................................................................مثالهاي عملي : ٤بخش ٤‐٢

١٢‐٢...........................................................................................ns-2فرمانهاي اوليه ١‐٤‐٢

١٣‐٢...........................دو گره با يك لينك: مدل كردن يك توپولوژي ساده ٢‐٤‐٢

١٥‐٢....................مشخص كردن جريانهاي ترافيك و مونيتور كردن لينك ها ٣‐٤‐٢

١٥‐٢................................................................................................تعريف توپولوژي ٤‐٤‐٢

١٦‐٢................................................تعريف منابع ترافيك و گيرنده هاي ترافيك ٥‐٤‐٢

١٨‐٢..................................................................مشخص كردن جريانهاي ترافيك ٦‐٤‐٢

١٩‐٢.................................................................................مونيتور كردن يك لينك ٧‐٤‐٢

٢٠‐٢.....ايجاد توپولوژي با تعداد گره هاي باال و مدل كردن خرابي لينك ها ٨‐٤‐٢

Page 3: NS Simulator for Beginners in Persian

ii

٢٠‐ ٢........................................................................ايجاد توپولوژي با تعداد گره هاي باال ١‐ ٨‐ ٤‐ ٢

٢١‐ ٢.........................................................................................كردن خرابي لينك هامدل ٢‐ ٨‐ ٤‐ ٢

٢٣‐٢.......................................................XGraphايجاد فايل خروجي براي برنامة ٩‐٤‐٢

٢٣‐ ٢.............................................................................................توپولوژي و منابع ترافيك ١‐ ٩‐ ٤‐ ٢

٢٦‐ ٢......................................................................................ثبت داده ها در فايل خروجي ٢‐ ٩‐ ٤‐ ٢

٢٧‐ ٢........................................................................................................اجراي شبيه سازي ٣‐ ٩‐ ٤‐ ٢

٣ .Trace و Monitoring در NS-2......................................................................................٣٠‐٣

٣٠‐٣.............................................................................NSآوري داده در روشهاي جمع ١‐٣

٣١‐٣...........................................................................................................Traceاشياء ٢‐٣

٣١‐٣.........................................traceها براي پشتيباني از معماري سرآيند بسته ١‐٢‐٣

٣١‐٣......................................................Traceمعماري لينكها براي پشتيباني از ٢‐٢‐٣

٣٣‐٣................................................................................................traceمت فايل فر ٣‐٢‐٣

٣٣‐٣................................................tracingتوابع كمكي براي دسترسي به اشياء ٤‐٢‐٣

٣٤‐٣..................................traceواسطهاي برنامه نويسي براي استفاده از اشياء ٥‐٢‐٣

٣٤‐ ٣.................................. در لينكهاtraceواسطهاي برنامه نويسي براي فعال نمودن ١‐ ٥‐ ٢‐ ٣

٣٥‐ ٣................................................................................... مربوط به صفهاtraceفرمانهاي ٢‐ ٥‐ ٢‐ ٣

٣٥‐٣..............................................................................................Monitoringاشياء ٣‐٣

١‐٣‐٣ Queue Monitoring..............................................................................................٣٥‐٣

٣٧‐٣.....................................................................................QueueMonitor/EDشئ ٢‐٣‐٣

٣‐٣‐٣ PerFlow Monitoring...........................................................................................٣٧‐٣

٣٧‐ ٣.........................................................................QueueMonitor/ED/FlowMonشئ ١‐ ٣‐ ٣‐ ٣

٣٨‐ ٣...................................................................QUEUEMONITOR/ED/FLOWشئ ٢‐ ٣‐ ٣‐ ٣

٣٨‐ ٣....................................................................................................Flow Monitorفرمت ٣‐ ٣‐ ٣‐ ٣

Page 4: NS Simulator for Beginners in Persian

iii

٣٩‐٣.....................................................Monitoringواسطهاي برنامه نويسي براي ٤‐٣‐٣

٣٩‐ ٣...................................................... روي لينكهاMonitoringفرمانهاي فعال نمودن ١‐ ٤‐ ٣‐ ٣

٣٩‐ ٣..................................................................................QueueMonitorفرمانهاي شئ ٢‐ ٤‐ ٣‐ ٣

٤٠‐ ٣.....................................................................................Flow Monitorفرمانهاي شئ ٣‐ ٤‐ ٣‐ ٣

٤‐٣ Loss Monitor....................................................................................................٤١‐٣

٤١‐٣..............................NS-2 در Monitoring و Traceمثالهايي براي استفاده از ۵‐۳

١‐٥‐٣ trace.....................................................................................................................٤١‐٣

١‐ ١‐ ٥‐ ٣ trace‐all و numtrace-all.............................................................................................٤١‐ ٣

٢‐ ١‐ ٥‐ ٣ Trace-queue..................................................................................................................٤٢‐ ٣

٢‐٥‐٣ Monitoring..........................................................................................................٤٢‐٣

١‐ ٢‐ ٥‐ ٣ Queue Monitoring.......................................................................................................٤٣‐ ٣

٢‐ ٢‐ ٥‐ ٣ Monitor per Flow........................................................................................................٤٥‐ ٣

٣‐٥‐٣ Loss Monitor......................................................................................................٤٦‐٣

٤٨‐٤.............................................................................................NS-2 در MPLSساز شبيه. ٤

٤٨‐٤...............................................MPLS Network Simulator-V2قابليتهاي ١‐٤

١‐١‐٤ MNS-v2كند اعمال توزيع برچسب كه شامل اجزاء زير است را پشتيباني مي: ٤٨‐٤

٢‐١‐٤ MNS-V2 از روشهاي زير براي ايجاد LSP٤٩‐٤....................:كند پشتيباني مي

٤٩‐٤...................................................................................قابليت مسيريابي مجدد ۳‐۱‐۴

٥٠‐٤...............................................................Mpls Network Simulatorمعماري ٢‐٤

٥٠‐٤.................................................... براي ارائه كيفيت سرويسMNSمعماري ١‐٢‐٤

٥٢‐٤.........................................................گزيني برچسب براي راهMNSمعماري ٢‐٢‐٤

٥٣‐٤............................................درنگ براي پردازش ترافيك بيMNSمعماري ٣‐٢‐٤

Page 5: NS Simulator for Beginners in Persian

iv

٥٤‐٤....................................................................... براي رزرو منابعMNSمعماري ٤‐٢‐٤

٥٥‐٤.................................................................................MNSسطوح سرويس در ٥‐٢‐٤

٥٦‐٤............................................................ براي مسيريابي مجددMNSمعماري ٦‐٢‐٤

٦١‐٤...................................MNSساز براي استفاده از شبيهينويس هاي برنامه واسط ٣‐٤

٦١‐٤........................................NS-2 در MPLSفرمانهاي واسط براي استفاده از ١‐٣‐٤

٦٢‐٤................................................................ها براي ساختن مسير صريح واسط ٢‐٣‐٤

٦٣‐٤.................................................هاي ترافيك واسطها براي پيكربندي كالس ٣‐٣‐٤

٦٥‐٤...........................CR-LDP و (CR-LSP(ها براي ساختن مسير مقيد واسط ٤‐٣‐٤

٦٦‐٤..........................................................................واسطها براي فراخواني روالها ٥‐٣‐٤

٦٦‐٤...............................................................................مقيدواسطهاي مسيريابي ۶‐۳‐۴

٦٧‐٤.............................................................................هاي مسيريابي مجدد واسط ٧‐٣‐٤

٦٨‐٤..................................................... كردنtraceنويسي براي هاي برنامه واسط ٨‐٣‐٤

٦٩‐٤...................................namulator در هنويسي براي استفاد هاي برنامه واسط ٩‐٣‐٤

٦٩‐٤........................................................:ساز در شبيهMPLSمثالهاي از استفاده از ٤‐٤

٧٤‐٤....................................................... براي مسيريابي صريحMPLSاز استفاده ١‐٤‐٤

٧٦‐٤............................................... براي ارائه كيفيت سرويسMPLSاستفاده از ٢‐٤‐٤

٧٦‐ ٤........................................................................................................CR-LSPمسيرهاي ١‐ ٢‐ ٤‐ ٤

٢‐ ٢‐ ٤‐ ٤ CR-LSP ٨٠‐ ٤............................................................ با خصوصيت به زور گرفتن منابع

٣‐ ٢‐ ٤‐ ٤ Constraint Based Routing.........................................................................................٨١‐ ٤

٨٢‐٤....................................................... براي مسيريابي مجددMPLSاستفاده از ٣‐٤‐٤

٨٤‐ ٤...........................Hashkinكد مورد نياز براي استفاده از روش مسيريابي مجدد ۱‐ ۳‐ ۴‐ ۴

٨٥‐ ٤................................................Makamراي روش مسيريابي مجدد كد مورد نياز ب ۲‐ ۳‐ ۴‐ ۴

٨٥‐ ٤........................................Simple-Dynamic كد مورد نياز براي مسيريابي مجدد ۳‐ ۳‐ ۴‐ ۴

Page 6: NS Simulator for Beginners in Persian

v

٨٥‐ ٤........................................shortest-dynamic كد مورد نياز براي مسيريابي مجدد ٤‐ ٣‐ ٤‐ ٤

٨٥‐ ٤....................................................................L3كد مورد نياز براي مسيريابي مجدد ۵‐ ۳‐ ۴‐ ۴

٨٧‐٥............................................................NS-2 در Diffrentiated Serviceمكانيزم . ٥

٨٦‐٥.................................................................................NS-2 در DiffServماجول ۱‐۵

٨٦‐٥.....................................................................................DiffServمعماري ماجول ۲‐۵

٨٧‐٥...................................................................... و مركزيمعماري روترهاي لبه ۱‐۲‐۵

٨٨‐٥...........................................................................................................ها سياست ۲‐۲‐۵

٨٩‐٥........................................DiffServهاي تعريف شده در ماجول policyانواع ۳‐۲‐۵

٩٠‐٥..................................................................... هاي تعريف شدهPolicyساختار ۴‐۲‐۵

٩١‐٥..............................................................DiffServپيكربندي پارامترهاي ماجول ۳‐۵

٩١‐٥.............................................................................بندي پارامترهاي صف پيكر ۱‐۳‐۵

٩٣‐ ٥...............................................هاي فيزيكي بندي بين صف پيكربندي شماي زمان ١‐ ١‐ ٣‐ ٥

٩٤‐٥...............................................................................................Policyپيكربندي ٢‐٣‐٥

٩٥‐٥................................Diffservهاي برنامه نويسي براي استفاده از ماجول واسط ٤‐٥

Page 7: NS Simulator for Beginners in Persian

١‐٢ NS-2مروري بر قابليتهاي

مقدمه .١در تعيين خصوصيات رفتار فعلـي هم سازي نقش بسيار مهمي با توجه به پيچيدگي شبكه، شبيه

. داردشـبكه روي عملكـرد نهاد شـده تغييـرات پيـش ناشـي از ثـرات احتمـالي ا هـم در تعيـين شبكه، و :از مزايای اين شبيه ساز اين است که.سازهاي زيادي براي اين امر وجود دارد شبيه

.باشد مورد تاييد مجامع علمي مي‐ الف

. به صورت رايگان در دسترس است‐ ب

.ساز کدهايي اضافه يا کم نمود توان به اين شبيه کد آن نيز در دسترس است و مي‐ج

.سازي شده است اكثر پروتكلهاي شبكه در آن پياده‐د

و نحـوه شـروع كـار بـا آن تـشريح NS-2انـدازي در فصل اول اين گزارش چگونگي نـصب و راه شـود، در شـرح داده مـي NS-2 در trace و Monitoringشود، در فصل دوم نحوه اسـتفاده از قابليـت مي

شود و در فصل چهارم به شرح نحوه اسـتفاده تشريح مي NS-2 در MPLSفصل سوم چگونگي استفاده از . پرداخته خواهد شدNS-2 در DiffServاز ماجول

NS-2آشنايي مقدماتي با .٢. شود و نحوة استفاده از آن پرداخته ميnsاندازي در اين گزارش به توضيح چگونگي نصب و راه

nsگرا و شيساز يك شبيهdiscrete event drivenا استفاده از زبانهاي است كه بC++ و OTcl در هاي سازي شبكه عموما به منظور شبيهnsافزار از نرم. سازي شده است دانشگاه بركلي طراحي و پياده

-گوناگوني را شبيه IPهاي تواند شبكه ميns .شودهاي گسترده استفاده ميمحلي و شبكهكامپيوتري

و FTP ،Telnet ،Web ،CBR، منابع ترافيك همچون UDP و TCP انند مپروتكلهاي شبكه. سازي نمايدVBR مكانيزمهاي مديريت صفهاي مسيرياب مثل ،DropTail ،RED و CBQ الگوريتمهاي مسيريابي ، MAC و برخي از پروتكلهاي الية multicastingهمچنين . اندسازي شده پيادهnsدر ... و Dijkstraمثل

.اندسازي شده پيادهns هاي محلي درسازي شبكهبراي شبيه

Page 8: NS Simulator for Beginners in Persian

٢‐٢ NS-2مروري بر قابليتهاي

گردد با اين حال براي بسيار ساده ميnsساز، كار با هر چند پس از آشنايي با نحوة عملكرد شبيه چرا كه راهنماهاي خوبي باشد كاركردن با آن بسيار مشكل ميشوند روبرو ميns با بار اولكاربراني كه

ساز اند به توضيح عميق شبيه نوشته شدهnsي كه براي اكثر راهنماهاي. براي اينگونه كاربران وجود ندارد .توانند از اين راهنماها بهره ببرندكار نميپردازند و كاربران تازهمي

ساز كردن، نصب و كار با شبيهdownloadبا نحوة كار هدف از اين فصل، آشنا نمودن كاربران تازهها توان شبكهكند، چگونه ميساز چگونه كار ميكه شبيههاي اصلي اين آشنا نمودن كاربران با ايده.باشدمي

، در كجا بايستي اطالعات بيشتري را راجع به قطعات شبكه در كدهاي سازي آماده كردرا براي شبيه .باشداز ويژگيهاي اين گزارش مي... جستجو كرد و ساز شبيه

Page 9: NS Simulator for Beginners in Persian

٣‐٢ NS-2مروري بر قابليتهاي

ns آردن و نصب downloadطريقه : ١بخش ١-٢ كردن downloadابتدا طريقة . پردازيم ميns كردن و نصب download نحوة در اين بخش به توضيح

nsگردد توضيح داده خواهد شد و سپس چگونگي نصب آن ارائه مي.

١‐ ١‐٢ Download كردنns

افزاري مختلف مورد هاي نرم روش اول نصب بسته.كردنصب توان را به دو صورت ميnsافزار نرمافزاري در روش دوم از بستة نرم. باشدبه صورت جداگانه مي...) و Tcl/Tk، OTclمثل (nsاستفاده در all-in-oneاجرايافزاري الزم براي هاي نرم كه شامل كلية بسته nsبراي نصب باشد، ميns استفاده مي-

ويد را شروع كنnsافزار به تازگي كار با نرمخواهيد اگر شما از آن دسته افرادي هستيد كه مي. شودتنها . شود براي شروع كار از روش دوم استفاده كنيدآشنايي قبلي با نحوة كاركرد آن نداريد، پيشنهاد مي

كه مورد all-in-oneعيبي كه ممكن است روش دوم داشته باشد اين است كه برخي از قسمتهاي بستة بايد به آن توجه كنيد اين اي كه نكته. ند بخشي از فضاي ديسكتان را اشغال خواهند كردباشاستفاده نمي

افزاري بسته نرم.كند فقط در سيستمهاي مبني بر يونيكس كار ميall-in-oneافزاري است كه بسته نرمall-in-oneتوانيد از آدرس اينترنتي زير را ميdownload كنيد :

gz.tar.2.27-allinone-ns/dist/nsnam/edu.isi.www://http.

و يا آدرس dist/nsnam/edu.isi.www://http/آدرس اينترنتي ازتوانيد را ميnsافزار آخرين نسخة نرمnamns/edu.isi.ftp://ftp downloadكنيد .

توانيد از آدرس زير فايل كنيد، مي استفاده ميNT و يا ٩٥/٩٨/٢٠٠٠عامل ويندوز اگر از سيستم: نكته .binary/dist/nsnam/edu.isi.www://http: كنيد download را nsقابل نصب

ns نصب ٢‐ ١‐٢

به دليل پيچيدگي روش . دو روش وجود داردnsاندازي كه قبال گفته شد براي نصب و راههمانگونه .ردازيمپكار، در اينجا فقط به توضيح روش دوم مياول براي كاربران تازه

ns-allinoneاجراي افزاريست كه شامل قطعات الزم براي يك بستة نرمnsو برخي قطعات اختياري مي -

قطعاتخودكار باشد كه براي پيكربندي، كامپايل و نصب مي" install"ك اسكريپت بسته شامل ي.باشد .شودذكر شده استفاده مي

Page 10: NS Simulator for Beginners in Persian

٤‐٢ NS-2مروري بر قابليتهاي

كرديد، ابتدا بايد آنرا از حالت فشرده download را ns-allinone-2.27.tar.gzپس از آنكه فايل و از منوي نشان داده اگر در محيط گرافيكي هستيد، بر روي فايل كليك راست نماييد. شده خارج كنيد

براي شما دايركتوريي با همان نام فايل ايجاد خواهد شد . را انتخاب نماييد" Extracte here"شده گزينة tarتوانيد با استفاده از برنامه اگر در داخل محيط متني هستيد مي.باشدكه حاوي محتويات فايل مي

براي انجام اين كار دستور زير را در شل اجرا . نماييدuntarفايل را از حالت فشرده خارج و يا به اصطالح :كنيد

tar -xzvf ns-allinone-2.27.tar.gz براي شما ايجاد خواهد شد كه حاوي ns-allinone-2.27.tarپس از اجراي اين دستور دايركتوريي به نام

براي انجام . ا اجرا نماييد رinstall حال براي نصب بايستي اسكريپت .باشدمحتويات فايل فشرده شده مي : تغيير دهيد ns-allinone-2.27اين كار مسير دايركتوري خود را به دايركتوري

# cd ns-allinone-2.27

، بايستي installپس از اتمام كار اسكريپت . اجرا نماييدns را به منظور نصب خودكار install/.دستور، به منظور دسترسي مستقيم به آن، در فايل پروفايل شلي راnsافزار مسيرهاي مربوط به محل نصب نرم

bashفرض يعني فرض ما بر اين است كه از شل پيش. قرار دهيد،bash، مثال كنيدكه از آن استفاده مي را ويرايش نماييد bashrc.، فايل bashكردن مسيرها در فايل پروفايل شل براي تنظيم.نماييداستفاده مي

تغييرات اعمال شده را ذخيره نماييد و . را به آن اضافه كنيدnsافزار ط به محل نصب نرمو مسيرهاي مربو در nsافزار اگر به عنوان مثال مسير نصب نرم. قابل اجرا شدن خواهد بودns. يك شل جديد باز كنيدroot/ns-allinone-2.27 باشد، شما بايستي عبارت زير را در فايل bashrc اضافه نماييد :

PATH=$PATH:/root/ns-allinone-2.27/bin: … export export TCL_LIBRARY= …

و كامل شدن مراحل نصب، در انتها پيغامهايي به منظور تنظيم install/.پس از اجراي دستور : نكته پيغامهاي داده شده را به دقت بخوانيد و . ودش داده ميnsبرخي از مسيرهاي الزم براي عملكرد صحيح

در دو دستور ... ضمنا بجای . اعمال شد، تنظيم كنيدPATHسيرهاي گفته شده را همانند آنچه كه براي م .باال از مسير های داده شده در انتهای نصب استفاده کنيد

Page 11: NS Simulator for Beginners in Persian

٥‐٢ NS-2مروري بر قابليتهاي

nsشروع آار با : ٢بخش ٢-٢ و معماري كليnsدر اين بخش ابتدا به توضيحي كوتاه راجع به نحوة اجراي فايلهاي اسكريپت در

به صورت مختصر معرفي خواهد شد و مثالهايي در اين OTclسپس زبان . خواهيم پرداختnsافزار نرم .گرددزمينه ارائه مي

ns اجراي ١‐٢‐٢

: كردعمل توان به دو صورت ميnsبراي اجراي

كافيست كه ns ست كرده باشيد، براي اجراي PATH را در nsاگر مسير مربوط به محل نصب .١ .يپ نماييد را تاnsنام

بايستي ابتدا ns ست نكرده باشيد، براي اجراي PATH را در nsاگر مسير مربوط به محل نصب .٢ تغيير مسير دهيد و سپس در ns در داخل دايركتوري مربوط به محل نصب binبه دايركتوري

. را اجرا نماييدnsآنجا

- آرگوماني كه نرم.گومان اجرا كردتوان هم به صورت بدون آرگومان و هم با آر را ميnsافزار نرم

مل سازي كه شادر اين فايل سناريوي شبيه. شدبامي" tclscript "گيرد يك فايل از نوع ميnsافزار .شودباشد، تعريف ميتوپولوژي و رويدادها مي

يك ويرايشگر مثل سازي است با استفاده از كافيست آنچه را كه مورد شبيهnsبراي شروع كار با emacs در يك فايل با پسوند tcl ذخيره كنيد و سپس آن فايل را به عنوان آرگومان به nsبه . پاس كنيد

: باشد، براي اجراي آن عبارت زير راتايپ كنيد test.tclعنوان نمونه اگر اسم فايل

# ns test.tcl

تا نتايج را به صورت داد ) nam) Network Animatorتوان خروجي اين برنامه را به برنامة مي: نكته .دهدسازي را در فواصل زماني مختلف نشان مي مراحل مختلف شبيهnamبرنامة . تصويري نمايش دهد

nsمعماري ٢‐٢‐٢

داراي يك باشد كه ميOTcl يك مفسر اسكريپت ns نشان داده شده است، ١همانگونه كه در شكل .باشد مي)كشيلوله(هاي ماجول ايجاد شبكه نهتابخاهاي اشيا قطعات شبكه و كبند رويداد، كتابخانهزمان

به منظور ايجاد و اجراي يك . شود استفاده ميotcl از زبان اسكريپتي nsبه بيان ديگر براي استفاده از

Page 12: NS Simulator for Beginners in Persian

٦‐٢ NS-2مروري بر قابليتهاي

بند رويداد را مقداردهي اوليه كند و سپس بنويسد كه يك زمانotclشبكه كاربر بايستي يك اسكريپت كشي كه در كتابخانه وجود دارند شبكه را با استفاده از اشيا شبكه و توابع لولهآنرا فعال نمايد، توپولوژي

ها را بند رويداد به منابع ترافيك بگويد كه چه زماني انتقال بستهايجاد نمايد و باالخره اينكه از طريق زمان ايجاد رود چراكهر ميبراي ايجاد شبكه به كا" كشيلوله" واژه . آن خاتمه دهندهشروع كنند و چه زماني ب

گر اي مختلف بين اشيا شبكه با استفاده از مقداردهي اشارهكشي مسيرهاي دادهيك شبكه، لوله"neighbor"باشد يك شي به آدرس يك شي مناسب مي.

از ديد كاربرnsشماي كلي : ١شكل

: تواند اين كار را انجام دهد از دو طريق مياي جديد ايجاد كند وقتي كه كاربر بخواهد يك شي شبكه

نوشتن يك شي جديد .١

كشي مسير داده از طريق شيايجاد يك شي با استفاده از كتابخانة اشيا و لوله .٢

نمايد عمال اين كار را بسيار ساده ميotclاجولهاي كشي ماين كار ممكن است پيچيده به نظر آيد اما لوله .آيدكشي ميت لوله هم از همين خاصيnsو قدرت

ns يك رويداد در .باشدبند رويداد مي، در كنار اشيا شبكه، زمانnsيكي ديگر از قطعات اصلي گر به ، و اشارهباشدبندي شده براي بسته يكتا ميبسته، كه در طول مدت زمان) ID(توسط يك شناسة

.شود ، مشخص ميكندپردازش مياي كه رويداد را شي

رويدادهايي را كه در صف رويداد كلية كند و سازي را دنبال ميند رويداد زمان شبيهب زمانnsدر -اي مناسب فعال مي، از طريق فراخواني قطعات شبكهاندبندي شدهند و براي زمان جاري زماندارقرار

.دنماي

Page 13: NS Simulator for Beginners in Persian

٧‐٢ NS-2مروري بر قابليتهاي

-سازي ميهاي شبيه چندين فايل متني را كه شامل دادهnsرسد، سازي به پايان ميوقتي كه شبيه

توان ها مياز اين داده). ذكر شده باشدtcl.البته اگر اين موضوع در فايل اسكريپت (كندباشند ايجاد مي داراي يك رابط گرافيكي nam. استفاده كردnam برنامه سازي و يا به عنوان ورودي بهبيهشبراي تحليل

كنترل كنندة مچنين دارايهباشد و ، مي وجود داردCD Playerافزارهاي خوب شبيه به آنچه كه در نرم قابليت نمايش گرافيكي اطالعاتي مثل ميزان بازدهي، تعداد namعالوه بر اينها، . سرعت نمايش است

.را داراست... و ها در هر لينكحذف بسته

OTclزبان كاربري ٣‐٢‐٢

بسيار مفيد nsفاده از است و بنابراين براي استotcl اساسا يك مفسر nsهمانگونه كه قبال گفته شد، و يك tclدر اين بخش يك مثال از اسكريپت . را بدانيمotclنويسي به زبان خواهد بود كه نحوة برنامه

. آورده شده استotclمثال از اسكريپت

توان يك روال ايجاد كرد و آنرا فراخواني دهد چگونه مي است كه نشان ميtcl يك اسكريپت ١مثال .توان حلقه ايجاد كردتوان متغيرها را مقداردهي كرد و باالخره چگونه مينمود، چگونه مي

tclايجاد و فراخواني روال در : ١مثال

به ترتيب proc به دنبال واژة .شود براي تعريف يك روال استفاده ميproc از كلمة كليدي tclدر براي set از واژة كليدي .آيند مياند، قرار گرفتهگيومه نام روال و سپس آرگومانهاي آن، كه در داخلشود كه مفسر عبارتي را كه باعث مي[... expr]عبارت . شودتخصيص يك مقدار به يك متغير استفاده مي

Page 14: NS Simulator for Beginners in Persian

٨‐٢ NS-2مروري بر قابليتهاي

توجه كنيد كه به منظور استفاده از محتوي يك متغير از . آمده است، ارزيابي نمايدexprبعد از واژة قرار "" مابين كاراكترهاي را كهيا رشتهputs واژة كليدي .شودراه نام متغير استفاده مي به هم$كاراكتر

: نشان داده شده است ١در زير نتيجة حاصل از اجراي مثال . كندگرفته است، در خروجي چاپ مي

باشد و صرفا نشان ده مياين مثال بسيار سا. باشد ميotclگرا به زبان مثال بعد يك مثال شي .باشد ميotclايجاد و استفاده از يك شي در دهندة نحوة

otclبري در ايجاد شي و استفاده از ارث : ٢مثال

Page 15: NS Simulator for Beginners in Persian

٩‐٢ NS-2مروري بر قابليتهاي

به عنوان فرزند كالس kidكالس . اند تعريف شدهkid و mom دو كالس به نامهاي ٢در مثال momولي تابع . تعريف شده استgreet در كالس kidاز واژه كليدي . نويسي شده است دوبارهClass

شود براي تعريف توابع عضو يك كالس استفاده ميinstprocبراي تعريف و ايجاد كالس و از واژه كليدي گر همانند اشارهself$در تعريف تابع، واژة . گردد استفاده ميsuperclass-بري از واژة كليدي و براي ارث

thisر دC++كند و عمل ميinstvarدر خود آيد كه آيا نام متغيري كه بعد از آن ميكند بررسي ميشود اگر متغير از قبل تعريف شده باشد به آن ارجاع مي. كالس و يا در كالس پدر تعريف شده است يا نه

، همانگونه كه new و باالخره براي ايجاد يك نمونه از شي از واژة. شودريف ميعوگرنه يك متغير جديد ت : باشد خروجي برنامه به شكل زير مي. شوددر مثال نشان داده شده است، استفاده مي

.پردازيمرود، ميسازي به كار مي كه براي نمايش گرافيكي شبيهnamافزار در بخش بعد به توضيح نرم

Page 16: NS Simulator for Beginners in Persian

١٠‐٢ NS-2مروري بر قابليتهاي

Namافزار نرم : ٣بخش ٣-٢

nam گذارد كه باشد و محيطي در اختيار ميسازي شبكه ميگرافيكي شبيه ابزاري براي نمايش .اي را مشاهده كردهاي دادهبتوان با استفاده از آن حركت واقعي بسته

بايد شامل اطالعات توپولوژي trace فايل .باشد ميtrace ايجاد فايل namقدم اول در استفاده از برنامه سازي در طول شبيه. شود ايجاد ميns بوسيلة trace معموال فايل .باشدها بستهtraceها و ها، لينكگرهnsشكل توپولوژي، اطالعات پيكربندي و توانند ، كاربران مي traceها را با استفاده از وقايع موجود بسته

. توليد نمايندns در traceدر فايل

فايل را namبه محض اجرا ، . باشد ميnam ايجاد شد، آمادة نمايش از طريق traceپس از آنكه فايل آورد، اگر الزم باشد پيكربندي كند، محيط گرافيكي را به نمايش در ميخواند، توپولوژي را ايجاد ميمي

براي اعمال كنترل .دنما منتظر ميtrace در فايل اولين بستهزمان دهد و سپس تا رسيدن انجام مي . استفاده كردnamتوان از واسط كاربري ي، ميسازمتحركهاي مختلف بيشتر بر روي جنبه

براي نمايش توپولوژيnamپيكربندي ١‐٣‐٢

نمايش كه منظور اين شود اما به ها مشخص ميها و لينك توپولوژي به وسيلة گرهnamافزار در نرمبندي دو مكانيزم براي پيكرnam در .باشدتوپولوژي به شكلي قابل درك باشد، مكانيزم پيكربندي الزم مي

جهت يال، زاوية بين يال و . در روش اول، خود كاربران بايستي جهت يالها را مشخص نمايند. وجود داردباشد كه ابتدا گرة مرجع انتخاب معموال بدين گونه مي. قرار دارد[2Pi , 0]ة بازباشد و در خط افق مي

، در جايشان تناسب با تاخير استطول آن، كه مها با استفاده از جهت يال و شود و سپس ديگر گرهميباشد ولي براي اين گونه پيكربندي براي توليد توپولوژيهاي دستي و كوچك مناسب مي.گيرندقرار مي

.باشدتوپولوژيهاي بزرگ اصال روش مناسبي نمي

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

- گره.باشدهاي متصل شده از طريق يالها ميايدة اصلي الگوريتم مدلسازي گرافي از گره. سازي شده است

اين سيستم پس از . كشنديها نسبت به يكديگر حالت دافعه دارند درحاليكه يالها آنها را به سمت هم م تكرار، اغلب گرافها ١٠٠ تا ١٠ دهند كه پس ازسازيها نشان مي شبيه.شودچندين مرحله تكرار همگرا مي

.شوندبه ساختاري قابل درك همگرا مي

Page 17: NS Simulator for Beginners in Persian

١١‐٢ NS-2مروري بر قابليتهاي

:گيرند كه عبارتند از پروسة پيكربندي خودكار مورد استفاده قرار ميكردن سه پارامتر در تنظيم

١. Ca : باشد مي١٥/٠ فرض آنو مقدار پيشكند اذبة دائمي كه نيروي يالها را كنترل مينيروي ج.

٢. Cr : ١٥/٠ آن و مقدار قرارداديكندها را كنترل مينيروي دافعة دائمي كه نيروي دافعة بين گره .باشدمي

.باشد مي١٠فرض اين پارامتر مقدار پيش: تعداد تكرارها .٣

.ي بزرگ، بايستي پارامترها را به شكلي دقيق تنظيم كردبراي ايجاد توپولوژيها: نكته

واسط كاربري ٢‐٣‐٢

باالي .باشدشود كه داراي بخشهاي گوناگوني مياي باز ميشود، پنجره اجرا ميnamوقتي كه برنامة داراي داراي file منوي .باشد ميhelp و View و file قرار دارد كه داراي سه فيلد menubarپنجره،

: باشد داراي چهار آيتم زير ميview منوي .باشد ميQuit و Openمختلفي از جمله آيتمهاي

• new view : اين آيتمview جديدي با همان animationتواند كاربر مي. كند ايجاد ميview .همچنين قابليت ثبت آن نيز وجود دارد. جديد را بزرگ و كوچك نمايد

• show monitors checkbox : ت خورده باشد، اگر عالمmonitor ها در نيمة پايين پنجره نمايش .شوندداده مي

• show autolayout checkbox : اگر عالمت خورده باشد، در نيمة پايين پنجره كه شاملbox traceتوجه كنيد كه اگر فايل . گيردباشد قرار ميهاي ورودي و كليد تنظيم خودكار طرح مي

شود اما اگر مشخصات طرح نمايش داده نميboxه باشد اين هاي طرح خودش را داشتمشخصه . به نمايش در خواهد آمدboxكامل نباشد، اين

• show animation checkbox : ،اگر عالمت خورده باشدlistbox اي در نيمة پاييني پنجره .نمايش داده خواهد شد

، helpبا انتخاب آيتم . اشدب قرار دارد و شامل دو آيتم ميmenubar در سمت راست helpمنوي شود و با باشد نمايش داده مي ميnamپنجرة جديدي كه حاوي اطالعاتي در مورد نحوة استفاده از

.باشد به نمايش درخواهد آمد ميnam پنجرة جديدي كه شامل تاريخچه و موقعيت aboutانتخاب آيتم

.لهاي عملي خواهيم پرداختسازي از طريق مثادر بخش بعد به توضيح نحوة انجام شبيه

Page 18: NS Simulator for Beginners in Persian

١٢‐٢ NS-2مروري بر قابليتهاي

مثالهاي عملي : ٤بخش ٤-٢ يك زبان Tcl Script. استفاده مي شودTcl Scriptزبان ها از براي شبيه سازي شبكه nsدر

اسكريپتي است كه از آن براي معرفي گره هاي شبكه ، لينك هاي بين گره ها ، پهناي باند لينك ها و .ساير مشخصات شبكه استفاده مي شود

در يك Tcl Scriptبراي استفاده از شبيه ساز ، در ابتدا بايد توپولوژي شبكه دلخواه خود را با استفاده از مي توانيد اين كار را با ويرايشگرهاي . ذخيره كنيد tcl.فايل معرفي كرده و در انتها فايل را با پسوند

مي توانيد شبيه ns filename.tclدستور در انتها با اجراي . انجام دهيدemacsموجود در لينوكس مثل .سازي را انجام دهيد

سپس با ارايه مثالهايي ، قابليت هاي آن . آشنا خواهيد شد Tcl Scriptدر اين بخش ، در ابتدا با اصول . عنوان خواهد شد

ns-2فرمانهاي اوليه ١‐ ٤‐٢

. ذخيره گرددtclارد شده و در انتها با پسوند دستوراتي كه در اين بخش مي آيد ، بايد توسط يك ويرايشگر در يك فايل و

اين كار با دستور زير انجام مي . ايجاد گردد Simulatorبراي شبيه سازي ، در ابتدا بايد يك نمونه از شئ :گيرد

set ns [new Simulator] ر زير استفاده مي براي اين كار از دستو. بايد فايلي باز شودnam traceبراي ذخيره اطالعات مورد استفاده

: كنيم

set nf [open out.nam w] يعني براي اشاره به . آن مي باشدnf ، handler را براي نوشتن باز مي كند و out.namاين دستور ، فايل

. استفاده خواهد شدnfفايل خروجي از

: استفاده مي شود منتقل شوند از دستور زير nf به فايل nam براي اينكه تمام خروجي هاي مرتبط با

$ns namtrace-all $nf كه فايل هاي شبيه سازي را بسته ، بافرها را آزاد . استفاده مي شود finishدر خاتمه شبيه سازي از تابع

.كرده و ساير كارهاي الزم را انجام مي دهد

proc finish {}{

Page 19: NS Simulator for Beginners in Persian

١٣‐٢ NS-2مروري بر قابليتهاي

global nf ns $ns flush-trace close $nf exec nam out.nam exit 0 }

صدا out.nam با ورودي nam ، برنامه out.namدر اين تابع ، پس از خاتمه شبيه سازي و بستن فايل .زده مي شود

: صدا شود finishبراي خاتمه شبيه سازي بايد تابع

$ns at 5.0 “finish”

.ا كند را اجر finish ثانيه پس از شروع شبيه سازي تابع ٥اين دستور به شبيه ساز مي گويد

. مي توان استفاده كردatهمانطور كه ديده مي شود براي زمان بندي رويدادها از كلمه كليدي

: در انتها براي شروع شبيه سازي از دستور زير استفاده مي شود

$ns run

دو گره با يك لينك: مدل كردن يك توپولوژي ساده ٢‐ ٤‐٢

ا يك لينك به هم متصل شده اند استفاده مي براي شروع، از يك توپولوژي ساده كه در آن دو گره ب . كنيم

. اضافه شوند ”ns at 5.0 “finsh$ يا حتي بهتر است قبل از ns run$كد اين دستورات بايد قبل از

: در ابتدا بايد گره ها را تعريف كرد

set n0 [$ns node] set n1 [$ns node]

. نسبت مي دهدn1 و n0 به اين دو دستور ، گره ها را ايجاد كرده و آنها را

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

$ns duplex-link $n0 $n1 1mb 10ms DropTail mbit/s 1پهناي باند . ايجاد مي كند كه از نوع دو طرفه استn1 و n0اين دستور يك لينك بين دو گره

، در صورت ارسال DropTailدر صف . است DropTail از نوع داشته و داراي صفيms 10و تاخير

Page 20: NS Simulator for Beginners in Persian

١٤‐٢ NS-2مروري بر قابليتهاي

با انواع ديگر صف بعدا آشنا . از انتهاي صف حذف خواهند شدها ترافيك بيش از ظرفيت خط ، بسته .خواهيم شد

:خروجي بصورت زير مشاهده مي شود . حال اين دستورات را ذخيره كرده و برنامه را اجرا كنيد

. ارسال كنيم n1 به n0واهيم ترافيكي را از خدر اين بخش مي

Traffic)براي منبع ترافيك . براي ارسال و دريافت داده ها از عاملها استفاده مي شودnsدر

Source) و مقصد ترافيك (Traffic Sink)اي تعريف مي شود عاملهاي جداگانه.

#Create a UDP agent and attach it to node n0 set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 #Create a CBR traffic source and attach it to udp0 set cbr0 [new Aplication/Traffic/CBR] $cbr0 set packetsize_500 $cbr0 set interval_0.005 $cbr0 attach-agent $udp0

خطوط بعد يك منبع . مي شودn0ه و نسبت دادن آن بUDP agentسه خط اول سبب ايجاد يك ثانيه ٠٠٥/٠ بايت بوده و هر ٥٠٠اندازه بسته ها . نسبت مي دهدudp0 ايجاد كرده و به CBRترافيك

. يك بسته ارسال مي شود

نسبت n1 كه به عنوان گيرندة ترافيك عمل مي كند، ايجاد كرده و آنرا به nullدو دستور بعد يك عامل .مي دهند

set null0 [new Agent/Null] $ns attach-agent $n1 $null0

Page 21: NS Simulator for Beginners in Persian

١٥‐٢ NS-2مروري بر قابليتهاي

: دريافت شود n1 در n0حال دو عامل به هم متصل مي شوند تا ترافيك ارسالي توسط

$ns connect $udp0 $null0 شايد اين سئوال مطرح شود كه ترافيك چه زماني شروع به ارسال شده و چه زماني متوقف شود ؟

.ده شده استپاسخ اين سئوال در زير دا

) :ns at 5.0 finish$قبل از (براي كنترل منبع ترافيك از دستورات زير استفاده مي كنيم

$ns at 0.5 "$cbr0 start" $ns at 4.5 "$cbr0 stop"

play بر روي دكمة namوقتي در پنجرة باز شده توسط . حال مي توانيم شبيه سازي را انجام دهيمو در . مي كند n1 شروع به ارسال ترافيك براي گره n0 گره ٥/٠ در ثانيه كليك كنيم مشاهده مي شود

. را نشان مي دهدn1 به گره n0شكل زير ارسال ترافيك از گره . ارسال ترافيك موقف مي شود٥/٤ثانيه

همين طور مي توانيد اندازة بسته ها و . مي توانيد با كليك روي لينك اطالعات آماري را بدست آوريد . را تغيير داده و حاصل تغييرات را مشاهده كنيد(Interval Time)زمان بين ارسال بسته ها

مشخص كردن جريانهاي ترافيك و مونيتور كردن لينك ها ٣‐ ٤‐٢

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

.براي مشخص كردن جريانهاي ترافيك و مونيتور كردن صف مربوط به لينك روشهايي ارايه خواهد شد

تعريف توپولوژي ٤‐ ٤‐٢

: حال براي تعريف گره ها خطوط زير را اضافه كنيد

Page 22: NS Simulator for Beginners in Persian

١٦‐٢ NS-2مروري بر قابليتهاي

set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] set n3 [$ns node]

:براي تعريف لينك بين گره ها كدهاي زير را بيفزاييد

$ns duplex-link $n0 $n2 1mb 10ms DropTail $ns duplex-link $n1 $n2 1mb 10ms DropTail $ns duplex-link $n3 $n2 1mb 10ms DropTail

re-layoutمي توانيد دكمه . دلخواه نباشدالبته ممكن است شكل آن. اكنون فايل را ذخيره و اجرا كنيدبراي اين منظور از . اما بهتر است كنترل بيشتري روي آن داشته باشيد. را بزنيد تا شكل آن بهتر شود

:پيكربندي مستقيم ها مي توان استفاده كرد

$ns duplex-link-op $n0 $n2 orient right-down $ns duplex-link-op $n1 $n2 orient right-up $ns duplex-link-op $n2 $n3 orient right

: بصورت زير خواهد شد namبا افزودن اين دستورات ها شكل توپولوژي در

. ويا تركيبي از اينها مي توان مشخص كردright,left,up,downدر دستورهاي باالجهت لينك ها را با

تعريف منابع ترافيك و گيرنده هاي ترافيك ٥‐ ٤‐٢

. را بعنوان گيرنده ترافيك تعريف مي كنيمn3 و گره CBR را بعنوان منابع ترافيك n1 و n0گره هاي . را براي جريانهاي ترافيك انجام مي دهدforwarding تنها كار n2گره

#create a UDP agent and attach it to node n0

Page 23: NS Simulator for Beginners in Persian

١٧‐٢ NS-2مروري بر قابليتهاي

set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 #create a CBR traffic source and attach it to udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 set packetsize_500 $cbr0 set interval _0.005 $cbr0 attach-gent $udp0 #create a UDP agent and attach it to noder n1 set udp1 [new Agent/UDP] $ns attach-agent $n1 $udp1 #create a CBR traffic source and attach it to udp1 set cbr1 [new Application/Traffic/CBR] $cbr1 set packetsize_500 $cbr1 set interval _0.005 $cbr1 attach-gent $udp1 #create a null aget for traffic sink n3 set null0 [new Agent/Null] $ns attach-agent $n3 $null0

:ها برقرار گردد حال بايد اتصال عامل

$ns connect $udp0 $null0 $ns connect $udp1 $null0

ارسال ترافيك را ٤ شروع به ارسال ترافيك كرده و در ثانيه ٥/٠ در ثانيه cbr0مي خواهيم منبع ترافيك ارسال ترافيك ٥/٤انيه شروع به ارسال ترافيك كرده و در ث١ در ثانيه cbr1متوقف كند و منبع ترافيك

: كنيمبنابراين به صورت زير عمل مي. را متوقف كند

$ns at 0.5 $cbr0 start $ns at 1.0 $cbr1 start $ns at 4.0 $cbr0 stop $ns at 4.5 $cbr1 stop

و n2با اجراي اين اسكريپت ، متوجه مي شويد كه مجموع دو جريان ترافيك ، بيش از ظرفيت خط بين n3 يك محاسبه ساده اين مطلب را تاييد مي كند. بوده و سبب حذف شدن برخي از بسته ها مي شود.

Page 24: NS Simulator for Beginners in Persian

١٨‐٢ NS-2مروري بر قابليتهاي

پس هر جريان ترافيك پهناي . بسته ارسال مي شود٢٠٠ بايت بوده و در هر ثانيه ٥٠٠اندازه هر بسته مگابيت ٦/١رافيك جوابگوي تn3 و n2 مگابيت در ثانيه بين ١و خط . مگابيت در ثانيه نياز دارد٨/٠باند

. در ثانية ارسالي براي آن نيست

اما كدام بسته ها ؟ چون رنگ تمام بسته ها مشكي است تمايز . ها حذف مي شوندپس بخشي از بسته ، از دستورات پيكربندي namبراي ايجاد تمايز بين جريانهاي ترافيك در . باشد نميپذيربين آنها امكان

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

مشخص كردن جريانهاي ترافيك ٦‐ ٤‐٢

:دو خط زير را به اسكريپت خود اضافه كنيد

$udp0 set class_ 1 $udp1 set class_ 2

. مي باشد(Flow ID)پارامتر انتهايي شماره مشخصه جريان

: قرار دهيد simulator objectدو خط زير را پس از دستور ايجاد

$ns color 1 blue $ns color 2 red

n1 و جريان ترافيك رنگ آبي n0اگر اسكريپت را دوباره اجرا كنيد، متوجه مي شويد كه جريان ترافيك را مشاهده كنيد خواهيد ديد كه بعد از مدتي نحوة n3 و n2اگر لينك بين گره هاي . قرمز رنگ مي باشد

). ل روي سيستم ما اينگونه استحداق(ها زياد عادالنه نيست حذف بسته

Page 25: NS Simulator for Beginners in Persian

١٩‐٢ NS-2مروري بر قابليتهاي

مونيتور كردن يك لينك ٧‐ ٤‐٢

: دستور زير را به اسكريپت خود بيفزاييد n3 وn2براي مونيتور كردن صف مربوط به لينك بين

$ns duplex-link-op $n2 $n3 queuePos 0.5 nsكرد پس از چند لحظه تصويري مشابه تصوير زير مشاهده خواهيد. را دوباره اجرا كنيد :

. اكنون مي توانيد قرار گرفتن بسته ها را در صف ببينيد و بسته هايي كه حذف مي شوند را مشاهده كنيد .ها عادالنه نيستهمانگونه كه قبال گفتيم نحوة حذف بسته

است بنابراين نمي توان انتظار داشت كه عدالت را در حذف بسته ها DropTailچون صف از نوع SFQي اينكه با هر دو نوع بسته به صورتي يكسان برخورد شود مي توانيد از صف برا. رعايت كند

(Stochastic Fair Queuing)استفاده كنيد .

: را به اين صورت تغيير دهيد n3 و n2به اين منظور تعريف لينك بين

$ns duplex-link $n3 $n2 1Mb 10ms SFQ .شوندهاي آبي و قرمز به يك ميزان حذف ميبسته . صف بندي بايد اكنون عادالنه باشد

Page 26: NS Simulator for Beginners in Persian

٢٠‐٢ NS-2مروري بر قابليتهاي

ايجاد توپولوژي با تعداد گره هاي باال و مدل كردن خرابي ٨‐ ٤‐٢

لينك ها

nsبراي راحت كردن اين كار ، در . تواند كاري سنگين باشدايجاد توپولوژي با تعداد گره هاي زياد ميدر . مثال، اين قابليت تشريح مي گردددر اين بخش با ارايه يك . از مكانيزمهاي خاصي استفاده مي شود

.ادامه به مدل كردن خرابي لينك ها پرداخته مي شود

ايجاد توپولوژي با تعداد گره هاي باال ١‐٨‐٤‐٢

براي پرهيز از نوشتن كدهاي شبيه . گره ايجاد كنيم٧در اين مثال مي خواهيم يك توپولوژي با : استفاده مي كنيم forبه هم، از حلقة

for {set i 0} {$i < 7} {incr i} { set n($i) [$ns node] }

. ذخيره مي كند()n گره ايجاد كرده و در يك آرايه به نام ٧اين كد

.دهدكد زير اين كار را انجام مي. حال مي خواهيم اين گره ها را بصورت دايروي به هم متصل كنيم

for {set i 0} {$i < 7} {incr i} { $ns duplex-link $n($i) $n([expr ($i+1)%7]) 1Mb 10ms DropTail }

). به استثناء گره آخر كه به گره اول متصل مي شود(اين كد ، هر گره را به گره بعدي متصل مي كند . استفاده شده است١ %براي اين منظور از

زدن دكمه با . ممكن است شكل داده شده عجيب باشدnamدر . اكنون مي توانيد اسكريپت را اجرا كنيدre-layout مي توانيد شكل زير را ببينيد :

عالمت باقيمانده 1

Page 27: NS Simulator for Beginners in Persian

٢١‐٢ NS-2مروري بر قابليتهاي

مدل كردن خرابي لينك ها ٢‐٨‐٤‐٢

: ايجاد مي كنيم n3 به گره n0قبل از مدل كردن خرابي، كدي براي ارسال ترافيك از گره

#Create a UDP agent and attach it to node n(0) set udp0 [new Agent/UDP] $ns attach-agent $n(0) $udp0 # Create a CBR traffic source and attach it to udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0 set null0 [new Agent/Null] $ns attach-agent $n(3) $null0 $ns connect $udp0 $null0 $ns at 0.5 "$cbr0 start" $ns at 4.5 "$cbr0 stop"

ها تنها مورد جديدي كه در آن استفاده شده ، استفاده از آرايه گره. اين كد بايد براي شما قابل فهم باشد .مي باشد

Page 28: NS Simulator for Beginners in Persian

٢٢‐٢ NS-2مروري بر قابليتهاي

. منتقل خواهد شدn(2) و n(1)هاي اگر اين اسكريپت را اجرا كنيد، خواهيد ديد كه ترافيك از طريق گرهبراي مدل كردن اين مساله . طع بشود ثانيه ق١ براي مدت n(2) و n(1)حال مي خواهيم لينك بين

:دستورات زير را اضافه مي كنيم

$ns rtmodel-at 1.0 down $n(1) $n(2) $ns rtmodel-at 2.0 up $n(1) $n(2)

خواهيد ديد كه در بين . اكنون مجددا اسكريپت را اجرا كنيد. فهميدن اين دو خط خيلي سخت نيستبا اين حال . قطع شده و ارتباط دو گره قطع مي شودn(2) و n(1) ، لينك بين گره ٢ و ١ثانيه هاي

. امكان ارتباط بين آن دو هنوز وجود دارد

ير را به اسكريپت بدين منظور خط ز. براي حل مساله ذكر شده بايد از مسيريابي ديناميك استفاده كرد

:خود، پس از ايجاد شيء شبيه ساز، بيفزاييد

$ns rtproto DV

اين بسته ها . با اجراي دوباره شبيه سازي ، در اول مي بينيد كه تعدادي بسته كوچك منتقل مي شوندد لينك مور١وقتي در ثانيه . براي تبادل اطالعات در مورد وضعيت مسيرها بين گره ها منتقل مي شوند

n(6) و n(4) ، n(5)نظر خراب مي شود ، مسير ارسال ترافيك تغيير كرده و ترافيك از طريق گره هاي .ارسال خواهد شد

Page 29: NS Simulator for Beginners in Persian

٢٣‐٢ NS-2مروري بر قابليتهاي

XGraphايجاد فايل خروجي براي برنامة ٩‐ ٤‐٢

تواند نمايش گرافيكي از باشد كه مي ميXgraph برنامة ns-allinone افزارييك قسمت از بستة نرم يك فايل tclدهيم كه چگونه درون اسكريپت در اين قسمت نشان مي. ا نشان بدهدنتايج شبيه سازي ر

همچنين نشان خواهيم داد كه چگونه از . رود به كار Xgraphتوليد كنيم كه به عنوان ورودي براي برنامة . استفاده كنيد(Traffic Generator)توليد كنندة ترافيك

توپولوژي و منابع ترافيك ١‐٩‐٤‐٢

.ژي زير را ايجاد كنيم قصد داريم توپولودر وهله اول

Page 30: NS Simulator for Beginners in Persian

٢٤‐٢ NS-2مروري بر قابليتهاي

.هاي بين آنها را تعريف مي كنيمها و لينكابتدا گره

:ها تعريف گره

set n0 [$ns node]

set n1 [$ns node]

set n2 [$ns node]

set n3 [$ns node]

set n4 [$ns node]

:تعريف لينكها

$ns duplex-link $n0 $n3 1Mb 100ms DropTail

$ns duplex-link $n1 $n3 1Mb 100ms DropTail

$ns duplex-link $n2 $n3 1Mb 100ms DropTail

$ns duplex-link $n3 $n3 1Mb 100ms DropTail

ما يك تابع به نام. تخصيص بدهيم منبع ترافيك n2 و n0،n1هاي خواهيم به گرهحال مي

attach‐expoo‐trafficمي نويسيم كه اين كار را ساده مي كند .

proc attach-expoo-traffic { node sink size burst idle rate } {

set ns [Simulator instance]

set source [new Agent/UDP]

$ns attach-agent $node $source

set traffic [new Application/Traffic/Exponential]

$traffic set packet-size $size

$traffic set burst-time $burst

$traffic set idle-time $idle

$traffic set rate $rate

Page 31: NS Simulator for Beginners in Persian

٢٥‐٢ NS-2مروري بر قابليتهاي

$traffic attach-agent $source

$ns connect $source $sink

return $traffic

}

، آرگومان سوم اندازة بسته sinkان اول يك گره، آرگومان دوم يك آرگوم . آرگومان مي گيرد٦ اين تابع براي توصيف (زمان بيكاري، آرگومان پنجم مدتbrustزمان براي منبع ترافيك، آرگومان چهارم مدت

handle اين تابع در پايان يك .باشدمي) peak rate(و باالخره آرگومان ششم نرخ حداكثر) توزيع نمايي .گرداند بر ميبراي شي ترافيك

سپس يك شي به نام . و آنرا به گره نسبت مي دهدكندابتدا روال منبع ترافيك را ايجاد ميtrafficكند و قبل از آنكه سازد، پارامترهاي آن را تنظيم مي مي sourceوsink آنرا به به هم متصل شوند

دهد كه چگونه كارهاي تكراري اين روال مثال خوبي است كه نشان مي .منبع ترافيك نسبت مي دهدحال ما از اين . به صورت راحتتري انجام دادتوان مثل نسبت دادن يك منبع ترافيك به چندين گره را مي

نسبت n2 و n0،n1حداكثر متفاوت را به گرههاي هاي روال استفاده مي كنيم تا منابع ترافيكي با نرخ . متصل كنيمn4دهيم و آنها را به گره

set sink0 [new Agent/LossMonitor]

set sink1 [new Agent/LossMonitor]

set sink2 [new Agent/LossMonitor]

$ns attach-agent $n4 $sink0

$ns attach-agent $n4 $sink1

$ns attach-agent $n4 $sink2

set source0 [attach-expoo-traffic $n0 $sink0 200 2s 1s 100k]

set source1 [attach-expoo-traffic $n1 $sink1 200 2s 1s 200k]

set source2 [attach-expoo-traffic $n2 $sink2 200 2s 1s 300k]

Page 32: NS Simulator for Beginners in Persian

٢٦‐٢ NS-2مروري بر قابليتهاي

اين . ايمهاي ترافيك استفاده كرده Sink به عنوان Agent/LossMonitorدر اين مثال ما از اشيا اين كميت در محاسبة . داري كننداشيا اين قابليت را دارند كه بتوانند تعداد بايتهاي دريافت شده را نگه

.ح خواهد شددر فصل بعد اين شئ به تفصيل تشري. گيردپهناي باند مورد استفاده قرار مي

ها در فايل خروجي ثبت داده ٢‐٩‐٤‐٢

ها را در آن ذخيره كنيم و سپس از اين Sinkحال سه فايل باز مي كنيم كه اطالعات مرتبط به اين دستورات را در ابتداي اسكريپت. استفاده خواهيم كردXgraphفايلها به عنوان ورودي براي برنامة

.قرار دهيد

set f0 [open out0.tr w]

set f1 [open out1.tr w]

set f2 [open out2.tr w]

.دهيم ا نجام مي finishما اين كار را در روال . اين فايلها بايد در يك نقطه بسته شوند

proc finish {} {

global f0 f1 f2

#Close the output files

close $f0

close $f1

close $f2

#Call xgraph to display the results

exec xgraph out0.tr out1.tr out2.tr -geometry 800x400 &

exit 0

}

، out1.tr را با سه فايل ورودي Xgraphبنديم بلكه برنامة را ميf2 و f0،f1در اين تابع نه تنها فايلهاي out2.tr و out3.trكنيم اجرا مي٨٠٠*٤٠٠ش و با دقت نماي.

Page 33: NS Simulator for Beginners in Persian

٢٧‐٢ NS-2مروري بر قابليتهاي

.در اينجا ما تابعي مي نويسيم كه به طور واقعي داده ها را برروي فايل خروجي بنويسد

proc record {} {

global sink0 sink1 sink2 f0 f1 f2

set ns [Simulator instance]

set time 0.5

set bw0 [$sink0 set bytes_]

set bw1 [$sink1 set bytes_]

set bw2 [$sink2 set bytes_]

set now [$ns now]

puts $f0 "$now [expr $bw0/$time*8/1000000]"

puts $f1 "$now [expr $bw1/$time*8/1000000]"

puts $f2 "$now [expr $bw2/$time*8/1000000]"

$sink0 set bytes_ 0

$sink1 set bytes_ 0

$sink2 set bytes_ 0

$ns at [expr $now+$time] "record"

}

كند و باند را محاسبه ميسپس پهناي. كند را دريافت مي Traffic Sinkاين روال تعداد بايتهاي دريافتي از را به صفر مقداردهي كند در سه فايل خروجي مي نويسد _byteآن را با زمان انتقال قبل از اين كه مقدار

.و در انتها هم خودش را دوباره زمانبندي مي نمايد

ازيس اجراي شبيه ٣‐٩‐٤‐٢

:توانيم رويدادهاي موجود در برنامه را به صورت زير زمان بندي كنيم حال مي

Page 34: NS Simulator for Beginners in Persian

٢٨‐٢ NS-2مروري بر قابليتهاي

$ns at 0.0 "record"

$ns at 10.0 "$source0 start"

$ns at 10.0 "$source1 start"

$ns at 10.0 "$source2 start"

$ns at 50.0 "$source0 stop"

$ns at 50.0 "$source1 stop"

$ns at 50.0 "$source2 stop"

$ns at 60.0 "finish"

$ns run

ثانيه به طور متناوب زمانبندي مي ٥/٠ خود را هر recordتابع . فراخواني مي شود recordنخست تابع .كند

سپس سه منبع ترافيك در ثانيه دهم شروع به ارسال ترافيك كرده و در ثانيه پنجاهم ارسال را متوقف بندد و تمام فايلها را مي finishتابع . شود فراخواني مي finish تابع سازيدر ثانيه شصت شبيه. دكننمي

. را اجرا مي نمايد Xgraphبرنامة

. را مانند شكل زير مي بينيدXgraphهنگامي كه شما برنامه را اجرا مي كنيد،پنجره

Page 35: NS Simulator for Beginners in Persian

٢٩‐٢ NS-2مروري بر قابليتهاي

، براي جريان ١/٠ Mbit/s ها براي جريان اول درburstشود حداكثر همانگونه كه در شكل مشاهده مي . قرار دارند٣/٠ Mbit/s و براي جريان سوم در٢/٠ Mbit/sدوم در

Page 36: NS Simulator for Beginners in Persian

٣٠‐٣ NS-2مروري بر قابليتهاي

٣. Trace و Monitoring در NS-2 هاي خروجي به منظور آوري داده ساز بايد داشته باشد جمع از مهمترين قابليتهايي كه يك شبيه

كردن در traceروشهاي مختلفي براي جمع آوري خروجيها يا .باشد سازي شده مي پردازش شبكه شبيه و يا اينكه .را در حين شبيه سازي نمايش داد traceهاي توان داده مي. باشد مي موجود NS-2 شبيه ساز

اين روش استفاده ( زي مورد پردازش قرار بگيرندتا بعد از پايان شبيه سانمود در فايلي ذخيره را ها داده ). بيشتري دارد

.پردازيم ميTrace از انجام اعمال NS-2در اين بخش به چگونگي پشتيباني

NSآوري داده در روشهاي جمع ١‐٣

Ns به دو روش tracingكند را پشتيبان مي:

وارد شدن به ( صورت انفرادي بهه اطالعات مربوط به هر بستتوسط اين اشياء :trace بوسيله اشياء – ١آوري توان جمع را مي)ا صفيها در لينك ها، به دور انداختن بسته صف، رسيدن بسته ها، خارج شدن بسته

: عبارتند ازtraceاشياء . شوند ها در توپولوژي شبيه سازي پيكربندي مي گره مانند traceاشياء . .نمودTrace/Hop : اين شئHop ها راtraceكند ي م.

Trace/Enque :را ) معموال به صف(ها اين شئ ورود بستهtraceكند مي.

Trace/Deque :را ) معموال از صف(ها اين شئ خروج بستهtraceكند مي.

Trace/Drop :ها را اين شئ حذف بستهtraceكند مي.

Trace/Recv :ها در گره بعدي را اين شئ دريافت بستهtraceكند مي.

SnoopQueue/In :كند اين شئ اندازه بسته و زمان ورود را ذخيره مي

SnoopQueue/Out :كند اين شئ زمان خروج بسته و اندازه بسته را ياددشت مي.

SnoopQueue/Drop :كند اين شئ زمان حذف بسته و اندازه ان را ذخيره مي.

SnoopQueue/EDrop :اين شئ در زمان حذف بسته توسط الگوريتم RED اندازه بسته حذف شده و .كند زمان حذف را ذخيره مي

Page 37: NS Simulator for Beginners in Persian

٣١‐٣ NS-2مروري بر قابليتهاي

يا بيتهاي دريافتي ،ها اين اشياء كميتهاي مختلفي مانند تعداد بسته: Monitoring بوسيله اشياء – ٢ روي فلوها عمل و همها روي بستههم توانند مانتيورها مي. دنكن غيره را يادداشت مي وفرستاده شده

: عبارتند ازMonitoringاشياء . ندشمارش را انجام ده

QueueMonitor :آمده توسط هاي بدست اين شئ نمونهSnooperكه در قسمت اشياء ( هاtrace به آنها .كنند بندي مي را دريافت و گروه) اشاره شد

QueueMonitor/ED : اين شئ عالوه بر قابليتهاي شئQueueMonitor قابليت تشخيص حذف بسته . را نيز داردRedم توسط الگوريت

QueueMonitor/ED/Flowmon : اين شئ عالوه بر قابليتهاي شئQueueMonitor/EDتواند مي .بندي كند اطالعات را بر اساس هر جريان، به طور جداگانه گروه

QueueMonitor/ED/Flow :ها است و توسط شئ اين شئ محتوي اطالعات آماري مربوط به جريانQueueMonitor/ED/Flowmonشود مديريت مي.

Trace اشياء ٢‐٣

traceها براي پشتيباني از معماري سرآيند بسته ١‐٢‐٣

. يك سرآيند مشترك در هر بسته وجود دارد كه خصوصيات زير را داراست traceبراي پشتيباني از

. دهد يك مشخصه يكتا به بسته مي– ١

كنند تعيين كه بسته را توليد مي١ييها عامل اين خصوصيت توسط ؛كند نوع بسته را مشخص مي– ٢ . شود مي

. براي تعيين زمان انتقال بسته مورد نياز استاين كميت. كند اندازه بسته را مشخص مي– ٣

.شود استفاده ميMulticastبراي محاسبه توزيع درختي : برچسب واسط– ٤

Traceمعماري لينكها براي پشتيباني از ٢‐٢‐٣

تشكيل شـده Connetor تعدادي لينك از . اند گرهايي در لينكها تعريف شده اره اش Traceبه منظور انجام . DropHead و Head ،Queue ،Link ،Ttl: ندكن لينك را تعريف ميروبرو متغير پنج. تاس

1 Agents

Page 38: NS Simulator for Beginners in Persian

٣٢‐٣ NS-2مروري بر قابليتهاي

Simple-Linkكالس اصلي لينـك . روي لينكها فعال شود trace ابتدا بايد traceبه منظور انجام و Trace اســت كــه در زمــان فعــال شــدن init-monitor وtraceاراي دو روال ايــن كــالس د. باشــد مــي

Monitoringشود از آنها استفاده مي .

سازد و خروجي ميRecieve و Drop ،Enqueue ، Dequeue از نوع trace اشياء trace روالها را ذخير شدن بسته تنها اطالعات مربوط به واردEnqueue نوع .فرستد ايل تعيين شده ميفآنها را به

اطالعات مربوط به Dropكند، ها را نگهداري مي اطالعات مربوط به خارج شدن بستهDequeueكند، ميها توسط گره بعدي را اطالعات مربوط به دريافت بستهRecieveو . كند ها را ذخيره مي دور انداختن بسته

.كند ذخيره مي

صف به اين لينك مربوط شده است بعد از ايجاد اشياء كند يك فرض ميTrace همچنين روال trace ،شي گفته شده Enqueue را قبل از شي queueكند و شي در لينك اضافه ميDequeue را پس از

queueكند و شي اضافه ميDrop را بين صف و drop target١‐ ١شكل .كند مربوط به لينك اضافه مي .دهد ن مسئله را نشان مياي

معماري لينك ١‐١ شكل

:گيرند مورد استفاده قرار ميtraceعناصر زير در لينك براي اعمال

Enqt_هاي ورودي به صف را به عنصري كه بستهtraceكند كند، اشاره مي مي.

Dept_ :را خروجي از صفهاي بستهبه عنصري كه traceكند ، اشاره ميكند مي.

Page 39: NS Simulator for Beginners in Persian

٣٣‐٣ NS-2مروري بر قابليتهاي

Drpt_ :گم شده را هاي كند به عنصري كه بسته اشاره مي trace كند مي.

Rcvt _بعدي را ةهاي دريافت شده توسط گر كند به عنصري كه بسته اشاره مي traceكند مي .

.كنند خرين عنصر اشاره ميآاين متغيرها به . را چند بار روي لينك فعال كند tracingاگر كاربر

traceفرمت فايل ٣‐٢‐٣

.دهند شود، را نشان مي ايجاد ميtrace-all كه بوسيله دستور traceدو جدول زير فرمت فايل

7) Pkt-Size 6) flag 5) Pkt-Type 3) Node1 4) Node2 2) time 1) Type

اندازه بسته را دهد نشان مي

فيلد ٤شامل .است

E :ECN

CE:

نوع بسته را نشان دهد مي

كنند تعيين مياين دو فيلد هايي اين اتفاق بين چه گره .افتاده است

زمان وقوع به (اتفاق

)ثانيه

اين فيلد نوع اتفاق را نشان .دهد مي

+: Enqueue -: Dequeue

d: Drop r: recieve

12) Uniqe-id 11) SeqNO 10) Dst 9) Src 8)Flow-Id

)IPV6در (. مشخصه فلو مبدا بسته مقصد بسته شماره ترتيب مربوط به بسته مشخصه يكتاي بسته

tracingتوابع كمكي براي دسترسي به اشياء ٤‐٢‐٣

توان بدون استفاده از دستورهاي واسط و با بكاربردن كه در باال به آنها اشاره شد را ميtraceاشياء ١.توابع كمكي زير بكار برد

flush – trace {}

.كند را از بافر وارد فايل ميtraceء اين تابع اطالعات مربوط به همه اشيا

Create – trace {type file src dst}

type. گرداند كند و يك دستگيره به اين شي بر مي ايجاد ميdst و src بين (type) از نوع traceيك شي را دارا باشد كه توسط روالRecv و Enqueue ،Dequeue ،Dropتواند مقادير مي

Page 40: NS Simulator for Beginners in Persian

٣٤‐٣ NS-2مروري بر قابليتهاي

trace – callback {ns command} قرار است لينكيزمانيكه traceارزيابي شود دستور تعيين شده .شود مي

Drop-trace {n1 n2 traceobject}

بين هاي به دور انداخته شده مقصد بسته ساخته شده است create-traceكه قبال توسط تابع traceشي . شود ميn2 و n1گره

traceه از اشياء واسطهاي برنامه نويسي براي استفاد ٥‐٢‐٣

.نويسي بكار برد هاي برنامه توان در اسكريپت اين دستورها را مي

در لينكهاtraceواسطهاي برنامه نويسي براي فعال نمودن ١‐٥‐٢‐٣

$Simple-link trace <ns> <file> <optionali op>

خروجـي . آورد ر مـي و اتـصال را بـه روز د ) كند فعال مي (سازد را براي اين لينك مي traceشي اين دستور trace اگـر . شود مربوط به اين لينك در فايل تعيين شده نوشته ميop مقـدار nam را بگيـرد يـك فايـل trace از نوع nam با استفاده ازفايل . شود ساخته ميnam سازي شده در لينك را به توان اتفاقات شبيه مي

.نشان داد nam animatorصورت گرافيكي در

$simple-link nam – trace <ns> <file>

.شود و خروجي آن در فايل نوشته مي. كند را در لينك راه اندازي ميnam tracingاين دستور

$simple-link trace – dyndmic <ns> <file> <optional:op>

tracing دار كند و نيز با تعيين مق راه اندازي مي ) خراب شدن لينك (اتفاقات ديناميكي لينك خصوص م راnam براي “op ” اين نوعtrace فرمت . كند را راه اندازي ميtrace مربوط به اتفاقات دينامكي به شرح زيـر :است

<dst> <src> <state> <time> <code> :وضعيت لينك مبدا مقصد

Up :سالم

كد بسته زمان اتفاق

.شود ي توصيه نمياستفاده از اين توابع براي افراد مبتد 1

Page 41: NS Simulator for Beginners in Persian

٣٥‐٣ NS-2مروري بر قابليتهاي

Down :خراب

مربوط به صفهاtraceفرمانهاي ٢‐٥‐٢‐٣

$ns trace-all <file>

.شود كند و خروجي آن در فايل تعيين شده نوشته مي را روي همه لينكها فعال ميtraceاين دستور

$ns namtrace-all <file>

trace از نوع namشود كند و خروجي آن در فايل تعيين شده نوسته مي را روي همه لينكها فعال مي.

$ ns trace – queue <n1> <n2> <optional file>

كند ايجاد ميn2 و n1 گرفتن از اتفاقات صف بين log به منظور trace ئرمان يك شاين ف

$ns namtrace – queue <n1> <n2> <optional: file>

.كند را فعال ميnam tracingاين فرمان مانند فرمان قبل است به جز اينكه

Monitoringاشياء ٣-٣ سازي آوري اطالعات از خروجي شبيه ه منظور جمعهستند كه باشياء ديگري از مانتيورها مجموعه اين اشياء . شوند توپولوژي شبكه اضافه ميبهايجاد بعد ازنيز اين اشياء گيرند مورد استفاده قرار مي

دور انداخته هاي به ، تعداد بستههاي دريافت شده قابليت ردگيري اطالعات آماري مربوط به تعداد بسته

همانطور كه گفته . ددارنفرستاده شده و برحسب نياز ميانگين اين پارامترها را هاي تعداد بستهشده،

.ها اعمال شود يا روي فلوهاي خاص ممكن است روي تمام بستهMonitorigشد،

در يك فاصـله زمـاني تواند مي Integratorبا استفاده از شي مانيتور ها يك تياها و يا ب عالوه بر تعداد بسته

[t0,t1]كندمحاسبه و اندازه صف را اطالعات.

١‐٣‐٣ Queue Monitoring -Init روالي به نام )كالس اصلي لينك (Simple-Link كالس Monitoringم اعمال ابراي انج

monitorكنند را روي لينك ايجاد ميمانيتورينگ صف ين روال ا. دارد.

Page 42: NS Simulator for Beginners in Persian

٣٦‐٣ NS-2مروري بر قابليتهاي

Queue Monitoring از اشياء Snoop و monitor كند استفاده مي. snoop queue مانند اشياء trace گزارش Monitor Queueها را مانتيور مي كند و به ورود و خروج بسته وشود ك صف متصل ميبه يسازي اين اطالعات در هر زمان شبيه. كند اطالعات را در متغيرهايي ذخيره ميQueue Monitor. دهد مي

. سازي استفاده نمود خروجي شبيهتوان براي پردازش قابل دسترسي هستند و از آنها مي

ها شروع شوند مربوط هستند به تعداد بستهPگرداند اگر با آنها را بر ميQueue Momitorمتغيرهايي كه

. ها هستند شروع شوند مربوط به تعداد بايتbو اگر با

توسط شئ متغيرهايي كه .داشته باشنداشاره Queue monitor به يك snoop Queueممكن است چند

queue Monitorشوند به شرح زير هستند و برگردانده مي مقدار دهي:

Size :اندازه صف به بايت

Pkts_ :اندازه صف به بسته

parrival_ :هاي دريافتي صف تعداد بسته

barrival_ :تعداد بايتهاي دريافتي صف

pdeparture_ :هاي خارج شده از صف تعداد بسته

bdeparture_ :ايتهاي خارج شده از صفتعداد ب

pdrops_ :هاي به دور انداخته شده از صف تعداد بسته

bdrops_ :تعداد بايتهاي به دور انداخته شده از صف

bytesInt_ :شود توسط اين شئ انتگرال اندازه صف به بايت محاسبه مي .

PktsInt_ :شود توسط اين شئ انتگرال اندازه صف به بسته محاسبه مي.

تا زمان فراخواني اين در صفMonitoringگردانده شده توسط اين متغيرها از زمان فعال شدن مقدار بر .باشد متغيرها مي

Page 43: NS Simulator for Beginners in Persian

٣٧‐٣ NS-2مروري بر قابليتهاي

QueueMonitor/EDشئ ٢‐٣‐٣

ها به خاطر پر است به جز اينكه قادر است بين به دور انداختن بستهQueueMonitorاين شئ مانند متغيرهاي اختصاصي اين شئ . تمايز قائل شودRedم ها توسط الگوريت شدن بافر و به دور انداختن بسته

:عبارتست ازEpdrops_ :به دور انداخته شده توسط الگوريتم ها تعداد بستهRED

Ebdrops_ :به دور انداخته شده توسط الگوريتم تعداد بايتهايRED

٣‐٣‐٣ PerFlow Monitoring انـد ايـن كالسـها ابتـدا سازي شـده هاي مربوط به فلوها پياده ادهدكالسهاي خاص براي جمع آوري

ارسـال شئ مانيتور كننده جريانهـا ي است و بعد از آن بسته به جريانكنند كه بسته متعلق به چه تعيين مي

. كند برحسب فلو جمع آوري ميراشود كه اطالعات مي

QueueMonitor/ED/FlowMonشئ ١‐٣‐٣‐٣

مورد QueueMonitorجاي شئ ها به آوري اطالعات بر حسب جريان اين شئ به منظور جمع QueueMonitorآوري پارامترهاي آماري مورد استفاده در شئ و عالوه بر جمع. گيرد استفاده قرار مي

.نمايد آوري مي پارامترهاي آماري مربوط به فلوها را نيز جمع

:پارامترهاي پيكربندي اين شئ عبارتند از

enable_in_ :فرض مقدار به صورت پيشtrueكند كه متغيرهاي حالت مربوط به جريان و تعيين مي دارد بگيرد تنها اطالعات Falseو اگر اين متغير مقدار . نگهداري شودFlow Monitorدريافتي،بايد توسط

.ها نگهداري خواهد شد مربوط به دريافت كل بسته

enable_out_:فرض مقدار به صورت پيشtrueعات آماري مربوط به كند كه آيا اطال دارد و تعيين مي بگيرد تنها تعداد falseاگر مقدار . نگهداري شوند يا خيرFlow Monitorجريان خروجي از بايد توسط

.هاي خارج شده از صف نگهداري خواهد شد كل بسته

Page 44: NS Simulator for Beginners in Persian

٣٨‐٣ NS-2مروري بر قابليتهاي

enable_drop_:فرض مقدار پيشtrueكند كه آيا اطالعات آماري مربوط به دارد و تعيين مي بگيرد تنها تعداد كل falseاگر مقدار . داشته شود يا خير ا بر حسب هر جريان بايد نگهه دورانداختن بسته

.هاي به دور انداخته شده نگهداري خواهد شد بسته

enable_edrops:فرض مقدار پيشtrueكند كه آيا اطالعات آماري مربوط به دارد و تعيين مياگر مقدار . داشته شود يا خير هر جريان بايد نگه بر حسب REDها توسط الگوريتم دورانداختن بسته

falseهاي به دور انداخته شده توسط الگوريتم بگيرد تنها تعداد كل بستهREDنگهداري خواهد شد .

QUEUEMONITOR/ED/FLOWشئ ٢‐٣‐٣‐٣

هاي بر حسب فلو و اطالعات آماري است كه توسط شئ اين شئ شامل شمارندهQUEUEMONITOR/ED/FLOWmon اين شئ در زمان ايجاد شئ . شود ت ميمديريFlowmon

توجه شود كه . شود ها به فلوها استفاده مي شود و براي نگاشت بسته ايجاد ميcallback oTclتوسط روال classifierاست) شود كه توسط كاربر تعيين مي(ها به فلوها به روش اختياري مسئول نگاشت بسته .

:متغيرهاي حالت اين شئ عباتند از

Src- :آدرس مبدا جريان

Dst- :آدرس مقصد جريان

Flowid- :مشخصه جريان

Flow Monitorفرمت ٣‐٣‐٣‐٣

.شود در دو جدول زير نشان داده شده است ايجاد ميFlow Monitoringفرمت فايلي كه توسط

parrival_ Dst src flowid pkt-type 0 Flowid time

ها ي تعداد بستهدريافتي مربوط به

لو با مشخصه فflowid

مشخصه مبدا مقصد فلو

رده بسته را نوع بسته. دهد نشان مي

فعال تنها مقدار . دارد0

مشخصه فلو

زمان فراخواني FlowMonit

or

Page 45: NS Simulator for Beginners in Persian

٣٩‐٣ NS-2مروري بر قابليتهاي

Bdrops pdrops Tbdrops Tpdrops Tparrival ebdrops epdrops Barrival

تعداد بايتهاي به دور انداخته شده مربوط به فلو با مشخصه

Flowid

تعداد هاي به بسته

دور انداخته شده مربوط به فلو با مشخصه

Flowid

تعداد كل هاي بسته

به دور انداخته شده

تعداد كل بايتهاي دريافتي

تعداد كل هاي بسته

دريافتي

تعداد بايتهاي به دور انداخته شده

توسط RED

تعداد هاي به بسته

دور انداخته شده توسط

RED

ي تعداد بايتها دريافتي مربوط

به فلو با مشخصه flowid

Monitoringواسطهاي برنامه نويسي براي ٤‐٣‐٣

روي لينكهاMonitoringفرمانهاي فعال نمودن ١‐٤‐٣‐٣

$ simple-link init – monitor <ns> <qtrace> <sample Interval>

و اسم شيئي را بر كند اندازه صف اين لينك را مانيتور كنيم كند كه ما را قادر مي يك شي اضافه مي .شود گرداند كه براي تعيين اندازه متوسط صف الزم مي مي

$ simple-link attach – monitors <insnoop> <outsnoop> <dropsnoop> <gmon>

اختصاصي بيشتري را در اختيار ما قرار ه موارد است به عالوه اينكinit–monitorدستور اين شبيه .. دهد مي

$ns monitor – queve <n1> <n2> <optional: qtrace> <optional : sample intervals>

و يك . مانيتور شود n2 و n1بين گره دهد اندازه صف كند كه به ما اجازه مي اين فرمان شيئي اضافه مي . شود گرداند كه ميانگين اندازه صف توسط آن تعيين مي دستگيره به شيئي بر مي

QueueMonitorشئ فرمانهاي ٢‐٤‐٣‐٣

QueueMonitorتوان شئ در يك صف فعال شد بوسيله فرمانهاي زير ميMonitoringپس از اينكه .مربوطه را پيكربندي نمود

$queuemonitor

Page 46: NS Simulator for Beginners in Persian

٤٠‐٣ NS-2مروري بر قابليتهاي

را ) drops و arrival ،deparureبه عبارت ديگر (queuemonitorهاي پارامترهاي آماري شئ همه شمارندهاندازي مي را اگر تعريف شده باشند دوباره راهdelay sampler و integratorو نيز . دهد مقدار صفر مي

.كند

$queuemonitor set-delay-samples <delaySamp_> قبال . كند اندازي مي را به منظور ياداشت كردن پارامترهاي آماري درباره تاخير صف راه_delaysampشئ . ايجاد شود_delaySampبايد

$queuemonitor get-bytes-integrator تواند براي محاسبه انتگرال اندازه صف به بايت استفاده گرداند كه اين شئ مي را بر ميIntegratorشئ

.شود

$queuemonitor get-pkts-integrator تواند براي محاسبه انتگرال اندازه صف به بسته استفاده گرداند كه اين شئ مي را بر ميIntegratorشئ .شود

$queuemonitor get-delay-samples گرداند را به منظور يادداشت كردن پارامترهاي آماري برمي_delaySampشئ

Flow Monitorفرمانهاي شئ ٣‐٤‐٣‐٣

$fmon classifier <cl> ها به كند كه براي نگاشت بسته اضافه ميFlowMonitor به شئ classiffierاين فرمان يك

.گيرد ها مورد استفاده قرار مي فلو

$fmon dump .نويسد ها و پارامترهاي آماري را در خروجي مي شمارنده

$fmon flows شوند را شناخته ميFlow Monitorيك رشته حرفي كه شامل اسم اشياء جرانهايي كه توسط اين

.هستند QueueMonitor/ED/Flowهمه اين اشياء از نوع . گرداند برمي

$fmon attach <chan> پارامترهاي آماري اين شئ dumpپس از فرمان . كند پيوست ميFlow Monitorرا به يك كانال خروجي

.تواند يك فايل باشد به عنوان مثال خروجي مي. داخل اين خروجي نوشته خواهد شد

Page 47: NS Simulator for Beginners in Persian

٤١‐٣ NS-2مروري بر قابليتهاي

٤-٣ Loss Monitor Loss Moniter از كالس agent ترافيك و مشتق شده است sinkو عالوه بر كند را شبيه سازي مي

هاي دريافت شده را همچنين اطالعات آماري مربوط به دادهها را چك كند و د گم شدن بستهتوان آن ميهاي گم شده، هاي دريافت شده، تعداد بسته هاي يا بستهيتتعداد با: كند كه عبارتند از نگهداري مي

:اين شئ عبارتند ازمتغيرهاي

nlost_ :هاي گم شده تعداد بسته

nPkts_ :دريافت شدههاي تعداد بسته

bytes_ : تعداد بايتهاي دريافت شده

lastPktTime_ : زمان آخرين بسته دريافت شده

Expected :Seqnoبعدي مورد انتظار بسته

. استفاده نمودnsساز آوري داده در شبيه توان به منظور جمع نيز ميagentاز اين

NS-2 در Monitoring و Traceمثالهايي براي استفاده از ٥-٣ و n3 گره به n0 از گره TCPترافيكي با استفاده از فرض كنيد توپولوژي زير ساخته شده است، و

n3 و n2خواهيم ترافيك بين دو گره مي. باشد در حال ارسال ميn3 به گره n1نيز ترافيك ديگري از گره . كنيم traceرا

n1

n3 n2

n0

١‐٥‐٣ trace

۳‐۵‐۱‐۱ trace-all و numtrace-all

باز ) شود فايل باز ميwبراي اينكار با خصوصيت (به منظور نوشتن در آن در دستورات زير دو فايل # .شود نسبت داده ميهاگري به آن و اشارهندشو مي

Page 48: NS Simulator for Beginners in Persian

٤٢‐٣ NS-2مروري بر قابليتهاي

set tf [open out.tr w] set nf [open out.nam w]

كه شامل تمام رويدادها در همه لينكها است در شود و خروجي آن ندازي مي راهtraceدر اين دستور # .شود نوشته مي به فرمت گفته شده فايل تعيين شده

$ns trace-all $tf .شود فايل تعيين شده نوشته ميشود و خروجي آن در اندازي مي رهnamtraceدر اين دستور #

$ns namtrace-all $nf

شود و ها داخل فايلها نوشته ميtraceاطالعات مربوط به flush-traceبوسيله فرمان در اين روال ابتدا # .شود اجرا ميout.nam با ورودي فايل namو در نهايت برنامه . شوند سپس فايلها بسته مي

proc finish {} { global ns nf tf $ns flush-trace close $nf close $tf exec nam out.nam& exit 0 }

٢‐١‐٥‐٣ Trace-queue Trace-allكند اگر بخواهيم تنها رويدادهاي يك تمام رويدادها در همه لينكها را مانيتور مي

از دستور زير trace-all را مانيتور كنيم مي توان بجاي دستور n2 و n1گره دو بين لينك مثال لينك استفاده كنيم

$ns trace-queue n2 n3 $tf

٢‐٥‐٣ Monitoring همانطور كه قبال اشاره . كنيم استفاده ميMonitoringاگر نخواهيم همه اتفاقات را مانيتور كنيم از

ها گم شده، تعداد تعداد بسته(ها توان اطالعات آماري مربوط به بسته ميMonitoring استفاده از شده باتوان براي منظورهاي خاص استفاده را بدست آورد كه از اين اطالعات مي ..)هاي خارج شده از صف و بسته :به عنوان مثال. نمود

ها در مقياسهاي زماني متفاوت نرخ گم شدن بسته

نرخ گذردهي در مقياسهاي زماني مختلف

ها در مقياسهاي زماني مختلف تعداد ورود بسته

Page 49: NS Simulator for Beginners in Persian

٤٣‐٣ NS-2مروري بر قابليتهاي

...و غيره

١‐٢‐٥‐٣ Queue Monitoring n3 و n2بين لينك ي روmonitoring استفاده از فعال نمودن ر كد زير بابه عنوان نمونه د

.شود گرفته ميها در پريودهاي مناسب اندازه ميزان استفاده از پهناي باند لينك و نرخ گم شدن بسته

set aggr_thr_file [open thr_.dat w] set aggr_drops_file [open drops_genC4mt.dat w]

set ft “”

.گرداند گر به اين شي را برمي كند و اشاره فعال ميn2-n3 را روي لينك monitor-queeuاين دستور #

set mon_ref [$ns monitor-queue $n2 $n3 $ft]

$mon_ref set-delay-samples [new Samples] set link_ref [$ns link $n1 $n2]

set throughput_samples_($link_ref) [new Samples] set drops_samples_($link_ref) [new Samples] $throughput_samples_($link_ref) reset

$drops_samples_($link_ref) reset

$ns at 0.0 "record" proc record {} { global n1 n2 aggr_thr_file aggr_drops_file global ns t_u_time_ sent_bytes_ throughput_samples_ drops_samples_ global dropped_bytes_

#get an instance of the simulator set ns [Simulator instance] #set time after which this proc should be called again set time 0.1 #byts no go through the queue

گرداند گر به لينك برمي دستور زير يك اشاره#

set nbr [$ns link $n1 $n2] .گرداند لينك تعيين شده را بر ميqMonitorگر به شي ا دستور زير اشاره#

set qmon [$nbr set qMonitor_] انتساب transf_byteگرداند و به متغير دستور زير تعداد بايتهاي خارج شده از اين لينك را بر مي# .كند مي

Page 50: NS Simulator for Beginners in Persian

٤٤‐٣ NS-2مروري بر قابليتهاي

set transf_bytes [$qmon set bdepartures_] new_dropsگرداند و به متغير دستور زيرتعداد بايتهاي به دور انداخته شده از اين لينك را بر مي#

.كند انتساب مي

set new_drops [$qmon set bdrops_]

set simtime [$ns now] reset مقداري ندارد و متغيرها t_u_timeمتغير شود شرطي زير ميبراي اولين بار كه وارد گزاره# .شوند مي

if { ![info exists t_u_time_($nbr)]} { set p_simtime 0.0 set used_bw 0.0 set drop_rate 0.0 set sent_bytes_($nbr) $transf_bytes set dropped_bytes_($nbr) $new_drops set t_u_time_($nbr) $simtime } else {

شود دهد؛ مقداردهي مي گيري قبلي را نشان مي كه زمان نمونهp_simtimeدر دستور زير متغير #

set p_simtime [set t_u_time_($nbr)] .گردد ذخيره ميt_u_timeدر اين دستور زمان حاضر در متغير #

set t_u_time_($nbr) $simtime .گردد گيري محاسبه ي استفاده از پهناي باند بين دو نمونهدر اين دستور ميزان#

set used_bw [expr (($transf_bytes-$sent_bytes_($nbr))*8)/($simtime-$p_simtime)] set sent_bytes_($nbr) $transf_bytes

.گردد گيري محاسبه مي ها بين دو نمونه در دستور زير نرخ گم شدن بسته#

Set drop_rate [expr (($new_drops-$dropped_bytes_($nbr))*8)/($simtime-$p_simtime)] set dropped_bytes_($nbr) $new_drops set t_u_time_($nbr) $simtime }

.شوند هاي تعيين شده ذخيره مي در آرايهdrop_rate و used_bwدر اين دو دستور زير #

$throughput_samples_($nbr) newpoint $used_bw $drops_samples_($nbr) newpoint $drop_rate

.شوند در فايل ذخيره ميdrop_rateو used_bw در دو دستور زير #

puts $aggr_thr_file "$used_bw" puts $aggr_drops_file "$simtime $drop_rate" set now [$ns now]

Page 51: NS Simulator for Beginners in Persian

٤٥‐٣ NS-2مروري بر قابليتهاي

العات در فاصله زماني بعدي دوباره فراخواني آوري اط و در نهايت در دستور زير روال باال براي جمع# .شود مي

$ns at [expr $now+$time] "recoord”

٢‐٢‐٥‐٣ Monitor per Flow كد زير اطالعات آماري مربوط به فلوها را در . توان اطالعات را بر حسب فلوها بدست آورد مي نويسد فايلي مي

set flow_stat [open flow_mon.stat w] .سازد مي monitor-per-flowير يك شئزدستور #

set flowmon1 [$ns makeflowmon Fid] هاي اين دادهflowmon1به اين ترتيب .كند پيوست ميn2-n3 را به لينك بينflowmon1 زيردستور#

.كند آوري مي لينك را بر حسب نوع فلو جمع

$ns attach-fmon [$ns link $n2 $n3] $flowmon1 0] كند به اين صورت خروجي اين شئ به فرمتي كه قبال رابه فايل متصل ميflowmon1زير شئ دستور #

.شود گفته شد در اين فايل نوشته مي

$flowmon_10 attach $flow_stat اگر .شود مي به داخل فايل نوشتهflowmon1با اجراي دستور زير در زمان تعيين شده خروجي شئ #

توانيم اين دستور را در پريودهاي اطالعات بگيريم ميflowmon1ني خاص از بخواهيم در پريودهاي زما .زماني مورد نظر تكرار كنيم

$ns at $finish-time "$flowmon_10 dump”

:آوري اطالعات مربوط به فلو براي جمعFlow Monitoringاستفاده از راي اين منظور ب .قيم استفاده نمود به طور مستFlow Monitorتوان از مقادير متغيرهاي همچنين مي

: ابتدا بايد فلو تعيين شود و سپس از پارامترهاي آن استفاده نمود به عنوان مثال

.توان از آنها استفاده نمود شوند و مي در اين حلقه به ازاي هر فلو متغيرهاي مربوط به آن ذخيره مي

foreach f [$fmon flows] { set flow_arrs [$f set barrivals_] set flow_deps [$f set bdepartures_] set flow_drops [$f set bdrops_]

Page 52: NS Simulator for Beginners in Persian

٤٦‐٣ NS-2مروري بر قابليتهاي

} جستجو نمود و سپس از اطالعات آن استفاده نمود classifierتوان فلو مورد نظر را توسط همچنيين مي :به عنوان مثال

set fclassifier [$fmon classifier]

set flow1 [$fclassifier lookup auto 0 0 1]

set flow_arrs [$flow1 set barrivals_]

٣‐٥‐٣ Loss Monitor توان از اطالعات آماري كه اين شئ تعريف شود ميLossMonitor گيرنده از نوع agentاگر

:شود ير تعريف مياي به صورت ز به عنوان مثال فرض كنيد گيرنده. كند استفاده نمود آوري مي جمع

$ns set sink0 [new agent/LossMonitor]

در اين صورت روال زير تعداد بايتهاي دريافت شده توسط گيرنده را در دوره تناوب تعيين شده اندازه .گيرد مي

proc record {} { global sink0 f1 #Get an instance of the simulator set ns [Simulator instance] #Set the time after which the procedure should be called again set time 0.5

.گيرد ميsink0 مقداري برابر با تعداد بايتهاي دريافت شده توسط گيرنده bw0 در دستور زير متغير#

set bw0 [$sink0 set bytes_]

#Get the current time set now [$ns now]

.نويسد كند و در فايل تعيين شده مي محاسبه ميMbsپهناي باند را به صورت در دستور زير #

puts $f0 "$now [expr $bw0/$time*8/1000000]" تا . دهد رار ميدهد را صفر ق كه تعداد بايتهاي دريافتي گيرنده را نشان مي_byteدر دستور زير متغير #

گيري بعدي گيري بعدي اين متغير تعداد بايتهاي دريافت شده از زمان فعلي تا زمان نمونه در زمان نمونه .را نشان دهد

$sink0 set bytes_ 0

#Re-schedule the procedure .شود گيري فراخواني مي ونه دوباره اين روال براي نم”time“شود بعد از مدت زمان دستور زير باعث مي#

$ns at [expr $now+$time] "record"

Page 53: NS Simulator for Beginners in Persian

٤٧‐٣ NS-2مروري بر قابليتهاي

} .توان استفاده نمود را نيز به همين ترتيب ميLossMonitorمتغيرهاي ديگر

Page 54: NS Simulator for Beginners in Persian

٤٨‐٤ NS-2مروري بر قابليتهاي

MPLS Network Simulator-V2.0ساز شبيه .۴

اكثر MNS-V2 ماجول . استNS-2 در MPLSساز ه از شبيههدف از اين فصل تشريح نحوه استفاد

NS-2 را در محيط MPLSتوان به راحتي شبكه را داراست و به وسيله آن ميMPLSقابليتهاي پروتكل

كه نسخه MNS-V2 نصب است و ns-2.1b9a MNS-V1 در حال حاضر در مدل .سازي نمود شبيه

نصب نيست و براي استفاده از آن ns-2.1b9a يعني nsه است در آخرين نسخMPLSساز جديدتر شبيه

.بايد آن را نصب نمود

كنيم و سپس معماري آن را را به طور خالصه مرور ميMNS-V2در اين راهنما ابتدا قابليتهاي

.دهيم ساز را با مثالهايي توضيح مي كنيم و در نهايت روش استفاده از اين شبيه تشريح مي

MPLS Network Simulator-V2قابليتهاي ١-٤

١‐١‐٤ MNS-v2 اعمال توزيع برچسب كه شامل اجزاء زير است را

:كند پشتيباني مي

ها را گزيني برچسب هدايت بسته با استفاده از قابليت راهMPLS :گزيني برچسب اعمال راه

است و شامل اعمالي نظير MPLSهاي اين قابليت كه از بارزترين ويژگي. بخشد تسريع مي

ساز باشد، در شبيه ها مي ها، تعويض برچسب ها، برداشتن برچسب چسب به بسته برتخصيص

MPLS نيز موجود است .

١. LDP :MPLSتكل و توسط پرLDPاين . دهد گزيني برچسب را انجام مي اعمال راه

اطالعات مربوط به Request و Release ،Withdraw ،Mappingتكل با ارسال پيغامهاي وپر

كند از اين پروتكل پشتيباني ميMNS-V2. كند ها رد و بدل ميLSRرا بين ها انتساب برچسب

.و قابليت پردازش پيغامهاي آن را داراست

Page 55: NS Simulator for Beginners in Persian

٤٩‐٤ NS-2مروري بر قابليتهاي

٢. CR-LDP :MPLS توسط پروتكل CR-LDP مسيريابي صريح و مسيريابي مبتني بر

را داراست و عالوه بر آن قابليتLDPاين پروتكل همه قابليتهاي .دهد محدوديت را انجام مي

.كند از اين پروتكل نيز پشتيباني ميMNS-2. رزرو منابع را نيز داراست

٢‐١‐٤ MNS-V2 از روشهاي زير براي ايجاد LSPكند پشتيباني مي:

.LSP براي ايجاد Dtat-Driven و Control-Drivenروشهاي .١

و هر دو شماي Control-Driven براي UpStreamشماي توزيع اطالعات به روش .٢

UpStrea وDownStream براي Control-Driven

اين مسيريابي توسط . مسيريابي صريح بر اساس مسير از قبل تعريف شده توسط كاربر .٣

.شود انجام ميCR-LDPپروتكل

اين مسيريابي با توجه به پارامترهايي نظير ميزان پهناي . مسيريابي مبتني بر محدوديت .٤

.شود ايجاد ميCR-LDP پروتكل اند، توسط كه قبال تعريف شده..باند، اندازه بافر و

توجه به ويژگي اولويت ا بMNS: اولويت دادن به كالسهاي ترافيك در گرفتن منابع .٥

هر مسير مبتني بر محدوديت، اين امكان را دارد كه منابعي را از 2 مسير و اولويت نگهداري١ايجاد

.يك مسير موجود بگيرد و به مسير ديگري دهد

افيك به يك جريان بزرگتر تر3جمع كردن جريانهاي .٦

قابليت مسيريابي مجدد ۳‐۱‐۴

Mnsبه عبارت ديگر ( انواع مختلف مسيريابي مجددSimple-Dynamic ،Shortest-dynamic ،Hashkin

.كند را پشتيباني مي) Makam و

1 Setup Priority 2 Holding Priority 3 Flow

Page 56: NS Simulator for Beginners in Persian

٥٠‐٤ NS-2مروري بر قابليتهاي

Mpls Network Simulatorمعماري ٢-٤NS-2كند از مي به نام گره استفاده مي از مفهو.. و سرورها و ها سازي اجزائي نظير روتر براي شبيه

تواند در گرهي فعال شود؛ در اين ميMPLS نيز NSشود، در در روترها فعال ميMPLSآنجايي كه

ها و Agent شامل NS-2گره . شود اضافه مي MPLSصورت به آن گره ماجولهايي براي پشتيباني از

Classifierباشد ها مي .Agentگيرند به عنوان ها مورد استفاده قرار مي روتكلها براي دريافت و ارسال پ

در آن فعال TCP فرستنده Agentهايي را ارسال كند بايد بستهTCPمثال اگر گرهي بخواهد با پروتكل

در گرهي فعال شود شئ MPLSاگر . ها هستند بندي كردن بسته ها مسئول دستهClassifier. شود

MPLS Classifier) هاي ردن بستهبندي ك مسئول كالسهMPLS ( وLDP Agent) مسئول ارسال و

.شود در گره قرار داده مي) LDP هاي دريافت پيغام

باشد در اين بخش اين ساختارها ارائه قابليتهاي گفته شده مي داراي ساختارهايي برايMNSماجول

.دهيم را شرح مي

براي ارائه كيفيت سرويسMNSمعماري ١‐ ٢‐٤

‐ ۱شكل ارائه كيفيت سرويس داراي مدل مفهومي به صورتي كه در برايMNS-V2 در MPLSگره

هاي زير براي ارائه ازماجولMNSشود همانطور كه در شكل ديده مي. باشد نشان داده شده است مي۲

:كند كيفيت سرويس استفاده مي

CR-LDP ،MPLS-Classifier ،Service Classifier ،Admission Control ،Resource Manager

:دهيم دهند را شرح مي ها، انجام مي در ادامه كارهايي كه اين ماجول . Packet Schedulerو

• CR-LD :هاي اين ماجول پيغامLDP و CR-LDP را پردازش

.كند مي

• MPLS Classifier :گزيني برچسب اين ماجول اعمال راه

.دهد را انجام مي) شتن برچسب و تعويض برچسب برچسب، برداتخصيص(

Page 57: NS Simulator for Beginners in Persian

٥١‐٤ NS-2مروري بر قابليتهاي

براي ارائه كيفيت سرويسMPLSمدل مفهومي گره ٢‐١ شكل

• Service Classifier : سرويسي كه بايد به بسته اعمال شود را با توجه به فيلدTOS

.كند مشخص ميـكند؛ و آن را به بسته اعمال ميMPLSبسته و برچسب

• Admission Cotrol : با توجه به پارامتر ترافيكCR-LDPكند آيا نود بررسي مي

MPLSمنابع كافي براي سرويس درخواست شده را دارد يا خير ،.

• Resource Manager :كند درخواستهاي منابع را مديريت مي.

• Packet Scheduler :ها را با توجه به سرويس مورد نياز آنها مديريت ميـكند صف بسته .

CR-LDPه كيفيت سرويس توسط اين ماجولها به اين صورت است كه ابتدا توسط پيغامهاي نحوه ارائ

Resource Manager و Admssion Controlآيد در اين صورت ماجول پيغام رزرو منابع به گره مي

كنند و مشخصه مسير و سرويس را در كنند اگر منبع كافي در دسترس است آن را رزرو مي بررسي مي

Serviceاي متعلق به آن مسير به گره وارد شد توسط زمانيكه بسته. كنند ذخيره ميERBنام جدولي ب

Classifierشود كه چه سرويسي بايد به آن ارائه شود و سپس بسته به تعيين ميPacket Scheduler

.شود تا سرويس درخواست شده به آن ارائه شود داده مي

Page 58: NS Simulator for Beginners in Persian

٥٢‐٤ NS-2مروري بر قابليتهاي

گزيني برچسب براي راهMNS معماري ٢‐ ٢‐٤

اي زماني كه بسته. گزيني برچسب است براي انجام اعمال راه۲‐۱ داراي معماري شكل MPLSگره

:شود شود كارهاي زير انجام مي وارد ميMPLSبه گره

گزيني برچسب براي انجام اعمال راهMNSمعماري ٣‐١ شكل

١. MPLS Classifierكند آيا بسته داراي برچسب تعيين ميMPLSاگر بسته داراي . ت يا خير هس

كند اگر بسته مربوط به وگرنه بررسي مي. دهد گزيني برچسب را روي آن انجام مي برچسب باشد اعمال راه

LSPگزيني برچسب را با توجه به مشخصه كند و راه خاصي است با آن مانند بسته برچسب دار رفتار مي

LSPصورت بسته را به دهد؛ و در غير اين انجام مي Addr Classifierدهد مي.

٢. Addr Classifier كند براي هدايت بسته استفاده مي۳ از پروتكل اليه.

شود تا بر حسب پروتكل اليه داده ميPort Classifierاگر مقصد بسته همين گره باشد بسته به .٣

. استفاده شده با آن رفتار گردد۴

MNS١گزيني برچسب از دو جدول براي انجام اعمال راهLIB و PFT2اين جداول . كند استفاده مي

:اند به صورت زير تعريف شده

1 Lable Information Base 2 Partial Forwarding Table

Page 59: NS Simulator for Beginners in Persian

٥٣‐٤ NS-2مروري بر قابليتهاي

• LIB : اين جدول براي ساختنLSPدار هاي برچسب گزيني بسته شود و اعمال راه ها استفاده مي

فيلدهاي اين جدول شامل برچسب ورودي، پورت ورودي، برچسب . شود توسط اين جدول انجام مي

.باشد خروجي و پورت خروجي مي

• PFT : اين جدول درLSRهاي شود و توسط آن بسته ورودي استفاده ميIP به LSP ها نگاشت

FEC و FlowIdتوسط فيلد . FlowId و FEC ،LIBPtr: فيلدهاي اين جدول عبارتند از. شوند مي

كه بسته به آن LSP بايد نگاشت شود و در واقع FEC به چه FlowIdشود بسته با فيلد مشخص مي

در LSPگزيني اين شود كه مشخصات راه تعيين ميLIBPtrگردد و توسط فيلد ت تعيين ميسامتعلق

. موجود استLIBكدام ركورد جدول

درنگ براي پردازش ترافيك بيMNS معماري ٣‐ ٢‐٤

MNS براي پردازش ترافيك بالدرنگ از ماجول Service Classifierاين ماجول . كند استفاده مي

Packetكند و سپس بسته به ماجول بسته اعمال شود را مشخص ميهايي كه بايد به سرويس

Schedulerمكانيزم . شود تا سرويس درخواست شده به آن اعمال شود داده ميCBQ كه در NS-2 وجود

در Packet Schedulerدر دنياي واقعي. ها انتخاب شده است دارد براي زمانبندي و سرويس دادن بسته

. سازي شده است اين عمل روي لينكها پياهMNSي در شود ول روترها اجرا مي

اين جدول . كند استفاده ميERB١ها از جدولي بنام براي تعيين سرويسService Classifierماجول

) ServiceId(و مشخصه سرويس مربوط به مسير) LSPId(شامل اطالعاتي مربوط به مشخصه مسير صريح

.باشد مي

1 Explicit Route Information Base

Page 60: NS Simulator for Beginners in Persian

٥٤‐٤ NS-2مروري بر قابليتهاي

براي پردازش ترافيك به منظور ارائه كيفيت سرويسMNSد پردازش رون ۴‐۱ شكل

زمانيكه . دهد براي ارائه كيفيت سرويس را نشان ميMNS روند پردازش ترافيك در ۴‐۱شكل

سب رود و در اين قسمت برج ميMPLS Classifierشود ابتدا به قسمت وارد ميMPLSاي به گره بسته

سرويس Service Classifierسپس ماجول. گردد خروجي و پورتي كه از آن بايد خارج شود مشخص مي

سپس با توجه به اينكه بسته به كدام كالس ترافيك متعلق .كند معين ميERBبسته را از طريق جدول

س به آن سرويCBQو در نهايت از طريق . شود وارد ميCBQاست به يك صف مناسب در بافر

. شود درخواست شده داده مي

براي رزرو منابعMNS معماري ٤‐ ٢‐٤

پيغام درخواست CR-LDPزمانيكه ماجول . دهد نشان ميMNSروند انجام رزرو منابع را در ۵‐ ۱شكل CR-LDP "كند ماجول را دريافت ميAdmission Control ماجول بررسي. كند را فراخواني مي

Page 61: NS Simulator for Beginners in Persian

٥٥‐٤ NS-2مروري بر قابليتهاي

MNSروند رزرو منابع در ۵‐۱ شكل

. اگر منابع كافي در دسترس بودند. كند كه آيا گره، منابع درخواست شده را در دسترس دارد يا خير مي CR-LDPآورد و پيغام كند، جدول مربوط به اطالعات منابع را به روز در مي منابع درخواستي را رزرو مي .دكن را به گره بعدي ارسال مي

كند، اطالعات مربوط به را دريافت مي" CR-LDP Mapping" پيغام CR-LDPزمانيكه ماجول كند و اطالعات مربوط به مسير صريح درخواست شده را در ذخيره ميLIBبرچسب و پورت را در جدول

كند تا صفي براي را فراخواني ميResource Managerسپس ماجول . كند ذخيره ميERBجدول س دادن به مسير درخواست شده ايجاد كند و پس از انجام اينكار مشخصه سرويس ايجاد شده را در سروي

.شود به گرة قبلي فرستاده مي”CR-LDP“و در نهايت پيغام . كند ذخيره ميERBجدول

MNS سطوح سرويس در ٥‐ ٢‐٤

MNS چهار سرويس RT١ ،ST2 ،HBT3 و SBT4ها از اولويت اين سرويس. كند را پشتيباني مي

براي پشتيباني از كيفيت سرويس CBQ صف از مكانيزمMNSبا توجه به اينكه . راست به چپ است

اين مسئله را ۶‐۱شكل .كند كند، از سه سطح براي ارائه سرويس به اين كالسها استفاده مي استفاده مي

.دهد نشان مي

1 Real Traffic 2 Signaling Traffic 3 High Best Effort Traffic 4 Simple Best Effort Traffic

Page 62: NS Simulator for Beginners in Persian

٥٦‐٤ NS-2مروري بر قابليتهاي

MNSطوح كالس در نمايش س ٦‐١ شكل

. را براي هر كالس ترافيك پيكربندي نمود... نظير نرخ ترافيك، اندازه بافر و CBQتوان پارامترهاي مي

لي و. شوند به طور ايستا در زمان پيكربندي محيط شبيه سازي ايجاد ميSBT و ST ،HBTكالسهاي .شوند ساخته ميCR-LDP به طور پويا و با آمدن پيغامـهاي RT صفهاي

توان مشخص نمود كه به هر كدام از كالسها چه درصدي از پهناي باند بايد ميCBQدر كه در اين مورد در كالس . ها اولويت داد توان به ترافيك و سپس در هر كالس مي. اختصاص داده شود

BT ترافيك ، HBT نسبت به SBTيعني از پهناي باند تعيين شده براي كالس . اولويت داردBT ابتدا به . شود سرويس داده ميSBTشود و از بقيه پهناي باند به سرويس داده ميHBTترافيك

دو پارامتر وجود دارد كه با استفاده از RTدر كالس دهي به جريانهاي ترافيك مختلف براي سرويساين دو پارامتر . نمودهاي اين كالس مديريت استفاده از پهناي باند را براي ترافيك توان مياين دو پارامتر

ترافيكي از ترافيك موجودمقدار پارامتر اولويت نصب اگر . "اولويت نگهداري"و " اولويت نصب"عبارتند از بخواهد سرويس بگيرد سرويس از قبلي گرفته و) به عبارت ديگر اولويت نصب آن بيشتر باشد(كمتر باشد

. شود شده و به ترافيك جديد داده مي

براي مسيريابي مجددMNSمعماري ٦‐ ٢‐٤

MPLS دهد براي نيل به اهداف زير انجام ميرا بازيابي و محافظت از مسير:

MPLSبه منظور فراهم كردن يك سرويس مطمئن براي حمل ترافيك روي شبكه •

Page 63: NS Simulator for Beginners in Persian

٥٧‐٤ NS-2مروري بر قابليتهاي

. كه خرابي در آن اتفاق افتاده استLSPبه منظور انجام مسيريابي مجدد در •

:شود ابي مجدد تشريح مي براي مسيريMNSد راين قسمت قابليت

Working(primary)در بازيابي و محافظت مسير به مسير اصلي كه بايد از آن محافظت شود اصطالحا

pathشود شود و به مسير پشتيباني كه براي محافظت از مسير اصلي استفاده مي گفته ميBackup(alternative) Pathشود گفته مي.

MNSكند از مسير اصلي استفاده مي١ي محافظت از دو تكنيك براي پيكربند:

Dynamic Protection:

با اين روش پيكربندي يك مسير پشتيبان، بعد از اينكه خرابي در مسير اصلي اتفاق افتاد، ساخته شود مي

Pre-negotiated:

.شود در اين روش مسير پشتيبان پيشاپيش ساخته مي

:پذير است كان مسير خراب شده به دو روش ام٢همچنين تعمير

Global repair:

)Egress و Ingress روتربه عبارت ديگر(شود در اين روش اصالح بين روترهاي لبه انجام مي

Local repair:

.شود در اين روش تعمير مسير بين دو گرهي كه در آنها خرابي اتفاق افتاده است انجام مي

، Simple-Dynamic ،Shortest-Dynamic: ند از چندين روش براي مسيريابي مجدد وجود دارد كه عبارتHashkin، Makam تكنيكهايي كه براي نوع جدول زير روشهاي مسيريابي مجدد و .٣ و مسيريابي اليه

از Shortest-dynmic , L3مسيريابي مجدد (.دهد كنند را نشان مي پيكربندي و تعمير مسير استفاده مي )كنند عمل مي Simple-dynamic مانند روش نظر تكنيك مورد استفاده

1 Protection configuration 2 Repair Activation

Page 64: NS Simulator for Beginners in Persian

٥٨‐٤ NS-2مروري بر قابليتهاي

دهد براي مسيريابي مجدد را نشان ميMPLS معماري گره ۷‐ ۱شكل

براي انجام بازيابي مسيرMPLSمعماري گره ۷‐۱ شكل

خرابي يا برطرف دةكند و در صورت مشاه وضعيت لينكها را مانيتور ميLink-Failure-Detectorماجول .دهد اطالع ميReroute Action Trigger و MPLS Classifierشدن خرابي آن را به

Reroute Action Triggerشود و روش كار آن به اين در روشهاي مسيريابي مجدد ديناميك استفاده ميتيبان صورت است كه اگر وضعيت يك لينك از حالت سالم به خرابي تغيير كند يك مسير جديد پش

.نمايد سازد و اگر وضعيت خرابي يك لينك برطرف شود، مسير پشتيبان را حذف مي مي

.شوند در زير الگوهاي روشهاي مسيريابي مجدد تشريح مي

Hashkinsروش

Page 65: NS Simulator for Beginners in Persian

٥٩‐٤ NS-2مروري بر قابليتهاي

: نشان داده شده است۸‐۱شكل الگوي اين روش در

Hashkinالگوي ۸‐۱ شكل

Makamالگوي

. نشان داد شده استMackam الگوي۰ در

:PILراه اندازي مسير پشتيبان در روتر .شود ساخته ميPML و PIL بين روتر LSP يك ‐۱شود ساخته ميPIL و PML بين روتر LSP يك ‐۲ )بدون استفاده از هيچ مسير اصلي(و تمام گره ها در طول . دشون به هم لينك ميLSP دو ‐۳

PMLPIL به مسير →PILPMLمسير → شوند متصل مي

: مزايا . مسيريابي را به طور سريع انجام مي دهد

:معايب بعد از اينكه مشكل خرابي برطرف شد و بسته ها

تيبان به مسير اصلي سوئيچ خواستند از مسير پش آيد هابوجودمي كنند مسئله دوباره مرتب كردن بسته

ي مسير پشتيبانانداز راه • .شود مي ساختهPML و PIL بين گره LSP يك ‐۱

PILبه Notification Message با استفاده از ‐۲ شودشود ميمي خبر بازيابي و خرابي مسير داده

اغلب مسئله دوباره مرتب كردن بسته ها :مزايا .افتد اتفاق نمي

به Notificationدر زمان ارسال پيغام : معايبPILشود تعدادي بسته گم مي.

Page 66: NS Simulator for Beginners in Persian

٦٠‐٤ NS-2مروري بر قابليتهاي

Makamالگوي ۹‐۱ شكل

Simple-Dynamicروش

. آمده است۱۰‐ ۱شكل الگوي اين روش در

Simple-dynamicالگوي روش ۱۰‐۱ شكل

روش است به جز اينكه در Simple-dynamic مانند روش L3 و Shortest-dynamicروش

Shortest-dynamicدر (شود يك مسير بين گرهي كه در آن خرابي اتفاق افتاده و گره بعدي ساخته مي براي ٣و در صورت بروز خرابي از جدول مسيريابي اليه ) صورتيكه لينك ديگري بين آنها برقرار نباشد

. كند ساختن مسير جديدي استفاده مي

پشتيبانLSPزي اندا راه

بعد از اينكه خرابي اتفاق افتاد يك مسير بين PMLگرهي كه در ان خرابي اتفاق افتاده است و

.شود ساخته مي

وري منابع بهره:مزايا

بسيار طوالني LSPاندازي زمان راه:معايب .است

Page 67: NS Simulator for Beginners in Persian

٦١‐٤ NS-2مروري بر قابليتهاي

MNSساز نويسس براي استفاده از شبيه هاي برنامه واسط ٣-٤شوند و بيان ميTCL در اسكريپت MPLSدر اين قسمت ابتدا واسطهاي موجود براي استفاده از

.شوند شرح داده ميMNSهاي مختلف سپس با مثالهايي قابليت

NS-2 در MPLSفرمانهاي واسط براي استفاده از ١‐ ٣‐٤

• $ns mpls-node

:گرداند به عنوان مثال گر به آن را برمي كند و اشاره ايجاد ميMPLSجديد يك گره

set Lsr1 [$ns mpls-node]

• $ns configure-ldp-on-all-mpls-nodes

ldp agent را روي همه گرههاي MPLSكند پيكربندي مي.

ين براي ا. گره كاراهايي صورت گيردMPLS در بعضي از دستورات نياز است روي ماجول :نكتهگر توان اشاره بوسيله دستور زير مي. گره بدست آيدMPLSگر به ماجول منظور نياز است ابتدا اشاره

: را بدست آوردLSR1 گره MPLSبه ماجول

Set MPLSnode [$lsr1 get-module “MPLS”]

. استMPLS يك گره از نوع MPLS ماجول MPLSnodeبنابراين در بقيه دستورات منظور از گره

• $MPLSnode enable-control-driven

.كند ها را توزيع مي برچسبcontrol-driven به روش MPLSگره

• $MPLSnode enable-data-driven

.كند ها را توزيع مي برچسبdata-driven به روش MPLSگره

• $MPLSnode enable-on-demand

.كيرد قرار ميon-demand در مد MPLSگره

• $MPLSnode enable-ordered-control

Page 68: NS Simulator for Beginners in Persian

٦٢‐٤ NS-2مروري بر قابليتهاي

.گيرد قرار ميordered-control در مد MPLSگره

• $ns enable-control-driven

.كنند ها را توزيع مي برچسبcontrol-driven به روش MPLSهاي تمام گره

• $ns enable-data-driven

.كنند ها را توزيع مي برچسبdata-driven به روش MPLSهاي تما گره

• $ns enable-on-demand

.گيرند قرار ميon-demand در مد MPLSهاي تمام گره

• $ns enable-ordered-control

.گيرد قرار ميordered-control در مد MPLSهاي تمام گره

• $MPLSnode send-ldp-release-msg $fec

اخته سLSPگردد تا مسير ارسال ميDownStreamهاي گره داده شده به fecبا " ldp-release"پيغام . را حذف كنندFEC ،$fecشده با

• $MPLSnode send-ldp-withdraw-msg $fec

ساخته LSPگردد تا مسير ارسال ميUpStreamهاي گره داده شده به fecبا " ldp-withdraw"پيغام . را حذف كنندFEC ،$fecشده با

• $MPLSnode aggregate-flows $fec1 $fec2

را fec2$ و fec1$در واقع فلوهاي . كند ميمجتمع FEC ،$fec2 بزرگتر با را در فلوFEC ،$fec1فلو با FEC : $fec2كند با تركيب مي

ها براي ساختن مسير صريح واسط ٢‐ ٣‐٤

• $MPLSnode setup-erlsp $fec $er $lspid

. باشد ميfec$ اين مسير FECكه مقدار . شود ساخته ميlspid$ با مشخصه مسير er$ يك مسير صريح er$هاي در طول مسير به گرهMPLSnode$ از گره CR-LDP Requestسيله اين دستور يك پيغام بو

: به عنوان مثال .شود فرستاده ميfec$براي فلوهاي

Page 69: NS Simulator for Beginners in Persian

٦٣‐٤ NS-2مروري بر قابليتهاي

$LSR1 setup-erlsp 7 5_4_8_6_7 3000

FEC و با ۷ به گره با مشخصه LSR1$از گره ) LSR1 ،۵ ،۴ ،۸ ،۶ ،۷(با اين دستور يك مسير صريح . خواهد بود۳۰۰۰مسير ساخته شده داراي مشخصه . شود ساخته مي۷

$LSR2 setup-erlsp 9 2-L3000-8 4000

در اين . شود ساخته ميFEC ۹ و ۴۰۰۰ با مشخصه مسير ۸ به گره LSR2$يك مسير صريح از گره يش تعريف شده بكار برده شده است كه منظور از آن مسيري از پL3000دستور در قسمت مسير صريح

توان يك مسير صريح كه خود شامل يك مسير از بنابراين توسط اين دستور مي. است ٣٠٠٠با مشخصه .پيش تعريف شده است، ساخت

• $MPLSnode bind-flow-erlsp $fec $flowid $lspid

. سباندچ ميlspid$ را به مسير از پيش ساخته شده با مشخصه FEC $fec و flowid$هاي با مشخصه فلو .يابند ها از اين مسير انتقال مي بعد از اجراي اين دستور اين فلو

هاي ترافيك واسطها براي پيكربندي كالس ٣‐ ٣‐٤

كند استفاده ميCBQ از صف دهي به انواع كالسهاي ترافيك براي سرويسMNS2با توجه به اينكه .دشون و انواع كالسها آورده ميCBQدر اين قسمت نحوه پيكربندي صف

• $ns cfg-cbq-for-SBTS $qlim $cbq_qtype $okborrow $bw $maxidle $extradelay

و . كند را پشتيباني ميSBTS ترافيك كالسMPLSهاي در تمام گرهCBQبوسيله اين دستور صف :هاي پيكربندي اين دستور عبارتند از پارامتر. شود براي اين منظور پيكربندي مي

$qlim :بر حسب بسته(دهد كه به اين كالس اختصاص ميي اندازه صف.(

$cbq_qtype :عنوان مثال به. كند نوع صفي كه براي سرويس دهي به اين كالس از آن استفاده ميDropTail.

$okborrow :كند آيا كالس اجازه دارد از پدر خود منبع قرض بگيرد يا يك پارامتر بولي كه مشخص مي . خير

$bw : باند كهدرصدي از پهناي CBQبايد براي اين كالس ترافيك اختصاص دهد

Page 70: NS Simulator for Beginners in Persian

٦٤‐٤ NS-2مروري بر قابليتهاي

$maxidle :ها قبل از بسته. هايش را در صف قرار دهد ماكزيمم مقدار زماني كه كالس نياز دارد تا بسته .يابند اتمام اين زمان به جلو انتقال نمي

$extradelay :شود تاخير كالس با اين زمان جمع مي.

• $ns cfg-cbq-for-HBTS $qlim $cbq_qtype $okborrow $bw $maxidle $extradelay

.شود پيكربندي ميHBTS براي پشتيباني از كالس ترافيك CBQصف

• $ns cfg-cbq-for-STS $qlim $cbq_qtype $okborrow $bw $maxidle $extradelay

.شود پيكربندي ميSTS براي پشتيباني از كالس ترافيك CBQصف

• $ns cfg-cbq-for-RTS $qlim $cbq_qtype $okborrow $bw $maxidle $extradelay

.شود پيكربندي ميRTS براي پشتيباني از كالس ترافيك CBQصف

• $ns bind-flowid-to-SBTS $id1 [$id2]

است به صورت سرويس id2$ و id1$ يا فلوهايي كه مشخصه آنها بين id1$شود فلو با مشخصه باعث ميSBTSدهي شوند سرويس.

• $ns bind-flowid-to-HBTS $id1 [$id2]

است به صورت id2$ و id1$ يا فلوهايي كه مشخصه آنها بين id1$شود فلو با مشخصه باعث مي .دهي شوند سرويسHBTSسرويس

• $ns bind-flowid-to-STS $id1 [$id2]

به صورت استid2$ و id1$ يا فلوهايي كه مشخصه آنها بين id1$شود فلو با مشخصه باعث مي .دهي شوند سرويسSBTSسرويس

• $ns bind-ldp-to-SBTS

• $ns bind-ldp-to-HBTS

• $ns bind-ldp-to-STS

.دهي شوند به چه صورت سرويسldpهاي پيغامكنند كه اين سه دستور مشخص مي

Page 71: NS Simulator for Beginners in Persian

٦٥‐٤ NS-2مروري بر قابليتهاي

CR-LDP و (CR-LSP)ها براي ساختن مسير مقيد واسط ٤‐ ٣‐٤

• $MPLSnode setup-crlsp $fec $er $lspid $TRate $BSize $PSize $SPrio $Hprio

ساخته lspid$ و مشخصه مسير FEC $fec ، وer$ با مسير صريح CR-LSPبوسيله اين دستور يك مسير :پارامترهاي اين دستور عبارتند از. شود مي

$fec :FECمسير

$er : صريحمسير

$lspid : مشخصه مسير

$TRate :ستفاده كندنرخ ترافيكي كه قرار است از اين مسير ا.

$Bsize : اندازه بافر

$Psize :ها اندازه بسته

$Sprio :اولويت نصب اين مسير براي ترافيك مشخص شده

$Hprio :اولويت نگهداري اين مسير براي ترافيك مشخص شده

• $MPLSnode send-crldp-release-msg $lspid

يا مسير مقيد با مشخصه به منظور حذف مسير صريحCR-LDP Releaseتوسط اين دستور پيغام $lspid از گره $MPLSnodeهاي به تمام گرهDownStream كه در طول مسير مشخص شده وجود

.شود دارند فرستاده مي

• $MPLSnode send-crldp-withdraw-msg $lspid

به منظور حذف مسير صريح يا مسير مقيد با CR-LDP WithDrawتوسط اين دستور پيغام كه در طول مسير مشخص شده UpStreamهاي به تمام گرهMPLSnode$ز گره اlspid$مشخصه

.شود وجود دارند فرستاده مي

• $MPLSnode send-crldp-notification-msg $status $lspid $tr

فرستاده MPLSnode$ گره UpStreamهاي به گره CR-LDP Notificationتوسط اين دستور پيغام :هاي پيكربندي اين دستور عبارتند از پارامتر. اجع به آنها بدهدشود تا اطالعاتي ر مي

Page 72: NS Simulator for Beginners in Persian

٦٦‐٤ NS-2مروري بر قابليتهاي

$status : اطالعات وضعيت كه درCR-LDPاستاندارد تعريف شده است .

$lspid :مشخصه مسير

$tr :اطالعاتي در مورد ترافيك

• $MPLSnode set-flow-prio $fec $flowid $priority

priority$مقدار . را بگيردpriority$ اولويت FEC: $fec و flowid$شود فلو با مشخصه باعث مي .تواند صفر يا يك باشد كه اولويت يك بيشتر از صفر است مي

واسطها براي فراخواني روالها ٥‐ ٣‐٤

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

. انجام شودشد تا در زمان اتفاق افتادن واقعه خاص، كار دلخواهماين

• proc notify-erlsp-setup {node lspid}

node به گره lspid براي ساختن مسير صريح با مشخصه CR-LDP Mappingاين روال زمانيكه پيغام به گره CR-LDP Mappingبه عنوان مثال زمانيكه مسير ساخته شد پيغام . شود رسيد فراخوني مي

توان در اين روال فلو شود كه به عنوان مثال مي رسد و در آن زمان اين روال فراخواني مي ابتدايي مي .خاصي را به اين مسير مرتبط نمود

• proc notify-erlsp-fail {node status lspid tr}

به tr و status ،lspid با مشخصات CR-LDP Notification شود كه پيغام اين روال زماني فراخواني مي .رسد ميnodeگره

• proc notify-erlsp-release {node lspid}

با مشخصه CR-LDP Release/Withdraw پيغام nodeشود كه گره اين روال زماني فراخواني مي .د را دريافت كنlspidمسير

مقيدواسطهاي مسيريابي ۶‐ ۳‐۴

• $ns collect-resource-info $itime

Page 73: NS Simulator for Beginners in Persian

٦٧‐٤ NS-2مروري بر قابليتهاي

آوزي جمعMPLSهاي ثانيه از همه گرهtime$اطالعات مربوط به منابع را به طور متناوب در هر .كند مي

• $MPLSnode constraint-based-routing $dstid $bw

گرداند ي پيدا شد مسير را برميشود اگر چنين مسير ستفاده ميابراي ساختن يك مسير صريح مقيد : پارامترهاي اين دستور عبارتند از.گرداند مي را بر1-وگرنه مقدار

$bw:پهناي باند مورد نياز براي مسير

$dstid :ةمشخص LSRمقصد

مسير مقيد ابتدا بايد توسط اين دستور مسير داراي پهناي باند مورد CR-LSPبنابراين براي ساختن يك . مسير را ساختsetup-crlspت آورد و سپس بوسيله نظر را بدس

هاي مسيريابي مجدد واسط ٧‐ ٣‐٤

• $ns enable-reroute $option

چند نوع MNS. كند فعال ميMPLSهاي روي همه گرهاين دستور امكان مسيريابي مجدد را. تخاب كردتوان نوع مسيريابي مجدد را ان ميoption$كند كه توسط گزينه مسيريابي را پشتيباني مي

:تواند بگيرد به شرح زير هستند ميoption$مقاديري كه

• drop : شود اگر اين گزينه انتخاب شود هيچ مسير پشتيبان جديدي ساخته نمي.

• L3 : اگر اين گزينه انتخاب شود بعد از اينكه يك لينك خراب شد با استفاده از جدول .شود يك مسير ديگر ساخته مي٣مسيريابي اليه

• notify-prenegotiated :ام گرهي كه در آن خرابي اتفاق افتاده يك پيغNotification

LDPهاي به گرهUpStreamفرستد خود مي.

• simple-dynamic : يك مسير جديدي بين گرهي كه در آن خرابي اتفاق افتاده و مقصد .سازد مي

• shortest-dynamic : افتاده و گره يك مسير جديد بين گرهي كه در آن خرابي اتفاق .البته اگر چنين مسيري موجود باشد. سازد بعدي مي

Page 74: NS Simulator for Beginners in Persian

٦٨‐٤ NS-2مروري بر قابليتهاي

• $ns set-protection-lsp $stime $itime $lspid

پارامترهاي . شود اين دستور براي چك كردن اينكه خرابي روي مسيري اتفاق افتاده يا خير استفاده مي :پيكربندي اين دستور عبارتند از

$stime :نزمان شروع براي چك كرد

$itime :فاصله زماني بين هر بار چك كردن

$lspid :خواهد چك كند مشخصه مسيري كه آن را مي.

• $MPLSnode reroute-lsp-binding $w_lspid a_lspid

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

w_lspid: مسيري كه در حال كار كردن است مشخصه.

a_lspid :مشخصه مسير پشتيبان

• $MPLSnode enable-reroute-egress-lsr

. پشتيبان عمل كندlsr به عنوان MPLSnode$شود باعث مي

كردنtraceنويسي براي هاي برنامه واسط ٨‐ ٣‐٤

• $MPLSnode trace-mpls

.كند مي trace را MPLSnode$ گره در MPLS هاي بسته

• $MPLSnode trace-ldp

.كند مي trace را MPLSnode$ گره در ldp هاي بسته

• $MPLSnode pft-dump

.دهد را نمايش ميMPLSnode$ گره PFTجدول

• $MPLSnode erb-dump

.دهد را نمايش ميMPLSnode$گره ERBجدول

• $MPLSnode lib-dump

Page 75: NS Simulator for Beginners in Persian

٦٩‐٤ NS-2مروري بر قابليتهاي

.دهد را نمايش ميMPLSnode$ گره LIBجدول

namulatorنويسي براي استفاد در هاي برنامه واسط ٩‐ ٣‐٤

• $ns ldp-request-color $color

• $ns ldp-mapping-color $color

• $ns ldp-withdraw-color $color

• $ns ldp-release-color $color

• $ns ldp-notification-color $color

به رنگهاي ldpهاي مختلف هاي مربوط به پيغام بستهnamulatorشود در دستورات باال باعث مي .كند رنگ را مشخص ميcolor$در اين دستورات . مشخص شده ديده شوند

:ساز در شبيهMPLSمثالهاي از استفاده از ٤-٤ ها براي هدايت بستهMPLSاستفاده از

MPLSها به جلو تواند به منظور هدايت بسته مي)Forwarding (براي اين منظور كافي . استفاده شودها روي گره-agent ldpتعريف شوند و " MPLSnode" به صورتMPLSساز گرههاي حوزه است در شبيه

:دهد مثال زير اين مسئله را نشان مي. فعال شود

توپولوژي ١١‐١ شكل

Page 76: NS Simulator for Beginners in Persian

٧٠‐٤ NS-2مروري بر قابليتهاي

set ns [new Simulator] set nf [open test-lsp.nam ] $ns namtrace-all $nf proc finish{} { global ns nf $ns flush-trace close $nf exec nam test-lsp.nam& exit 0 } #create topology set Node0 [$ns node] set LSR1 [$ns MPLSnode] C1 set LSR2 [$ns MPLSnode] set LSR3 [$ns MPLSnode] set LSR4 [$ns MPLSnode] set LSR5 [$ns MPLSnode] set Node6 [$ns node] $ns duplex-link Node0 LSR1 1M 10ms DropTail $ns duplex-link LSR1 LSR2 1M 10ms DropTail $ns duplex-link LSR2 LSR3 1M 10ms DropTail $ns duplex-link LSR1 LSR4 1M 10ms DropTail Part -1 $ns duplex-link LSR4 LSR5 1M 10ms DropTail $ns duplex-link LSR5 LSR3 1M 10ms DropTail $ns duplex-link LSR3 Node4 1M 10ms DropTail #configure Ldp-agents $ns configure-ldp-on-all-mpls-nodes C2 #configure Driven type $ns enable-control-driven C3 #$ns enable-data-driven C4 #$ns enable-on-demand C5 #$ns enable-ordered C6 # #create traffic generators #######################################Part-2 # set Src0 [new Application/Traffic/CBR[ $Src0 set packetSize_ 500 $Src0 set interval_ 0.010

Page 77: NS Simulator for Beginners in Persian

٧١‐٤ NS-2مروري بر قابليتهاي

#create UDP agents and attach to src0 set Udp0 [new Agent/UDP[ $Src0 attach-agent $Udp0 #attach udp to node0 $ns attach-agent $Node0 $Udp0 #create agent reciever for udp packets and attach it to node reciever set Dst0 [new Agent/Null[ $ns attach-agent $Node4 $Dst0 #onnect sendr agent to reciever agent $ns connect $Udp0 $Dst0 $ns at 0.1 "$Src0 start" # # End Traffic Generator ####################################### # #get MPLS module of all MPLS nodes for {set i 0}{ $i<4 }{incr i} set MPLS-LSRi [$LSRi get-module MPLS] C7 } #send to output all the tables of every MPLS node $ns at 5.0 “$MPLS-LSR1 dump-LIB” $ns at 1.7 "$LSRmpls1 pft-dump" $ns at 1.7 "$LSRmpls1 erb-dump" $ns at 1.7 "$LSRmpls1 lib-dump" $ns at 1.7 "$LSRmpls2 pft-dump" $ns at 1.7 "$LSRmpls2 erb-dump" Part-3

$ns at 1.7 "$LSRmpls2 lib-dump" $ns at 1.7 "$LSRmpls3 pft-dump" $ns at 1.7 "$LSRmpls3 erb-dump" $ns at 1.7 "$LSRmpls3 lib-dump"

Page 78: NS Simulator for Beginners in Persian

٧٢‐٤ NS-2مروري بر قابليتهاي

:در كد داده شده

كند تعريف ميMPLS يك گره C1دستور

كنند ها را پيكربندي مي لينكهاي بين گره Part1دستورات قسمت

.كند فعال ميMPLSهاي را روي همه گرهC2 ،ldp-agentدستور

.كند را فعال مي Control-driven روش توزيع C3دستور

به همراه C4عال و دستور غيرفC3 استفاده كنيم بايد دستور data-drivenاگر بخواهيم از روش . فعال شودC6 يا C5يكي از دستورات

CBRكنند ترافيك از نوع ترافيكي بين گره صفر و گره چهار توليد ميPart-2دستورات قسمت .شود حمل ميUDPاست و بوسيله پروتكل

MNSدر واقع براي استفاده از دستورات . گيرد را ميMPLS از گره MPLS ماجول C7دستور استفاده نمود كه اين دستور گره آن MPLS بلكه بايد از ماجول دنمي توان از گره استفاده كر

.دهد گره مورد نظر را در اختيار ما قرار ميMPLSماجول

در را 2 گره هايكند براي نمونه جدول جداول مربوط به هر گره را چاپ مي Part-3ات دستور

.هيمد را توضيح ميControl-drivenحالت

LSR1جداول مربوط به

PFT جدول ‐ ۱

AlternativePathSLIBptr LIBptr PRio Fid FEC

-1 -1 0 0 -1 2

-1 -1 1 0 -1 4

-1 -1 2 0 -1 3

-1 -1 3 0 -1 5

Page 79: NS Simulator for Beginners in Persian

٧٣‐٤ NS-2مروري بر قابليتهاي

-1 -1 4 0 -1 6

شود كه چه فلويي بايد به چه برچسبي نگاشت مشخص ميPFTهمانطوكه قبال اشاره شد در جدول است آمده است كه مشخصات LSR1 باال كه مربوط به گرهPFTبه عنوان مثال در جدول . دشو

. قرار دارندLIB جدول 1 در رديف شماره 3گزيني برچسب، فلوهاي به مقصد مربوط به راه

ERB جدول ‐ ۲

ارائه دهد و هيچ سرويسي انجام ميMPLSها را با روش از آنجاييكه در اين مثال تنها انتقال بسته . خالي استMPLSهاي گرهERBنشده است جدول

LIB جدول ‐ ۳

Linkerror? LIBptr oLabel oIface ILable iIFace #

-1 -1 0 2 1 -1 0

-1 -1 0 4 2 -1 1

-1 -1 2 2 3 -1 2

-1 -1 2 4 4 -1 3

-1 -1 4 2 5 -1 4

iIFace و از پورت ilable ورودي اي با برچسب شود اگر بسته مشخص ميLIBاز طريق جدول اي با اگر بسته . خارج شودoIface و از كدام پورت خروجيoLabelبيايد بايد با چه برچسبي

Egressفعلي مقصد است و يا LSR دريافت شود به اين معناست كه يا LSRبرچسب صفر توسط

Router.

مستقيما متصل است بنابراين Node0 و LSR2 ،LSR3هاي به گرهLSR1 گره به عنوان مثالكه اين . دهد ها ارسال كند را صفر قرار مي خواهد به اين گره هايي كه مي برچسب خروجي بسته

هايي كه شود بسته همانطوريكه در جدول هم ديده مي. نشان داده شده استLIBمسئله در جدول ها نيست عدي مقصد اين بسته متصل نيستند گره بLSR1 به Node6 و LSR3 ،LSR5به مقصد گره

.شود ه ميدو برچسب خروجي آنها عددي غير صفر قرار دا

Page 80: NS Simulator for Beginners in Persian

٧٤‐٤ NS-2مروري بر قابليتهاي

براي مسيريابي صريحMPLSاستفاده از ١‐٤‐٤

براي اينكه از .دهد انجام ميcr-ldpيابي صريح را با استفاده از پروتكل مسيرMPLSساز شبيه ساخته شده است حذف شود و ldpمسيريابي صريح استفاده شود ابتدا بايد مسيري كه توسط پروتكل

( ldp-withdraw يا ldp-releaseاين كار توسط دستور . سپس مسير توسط مسيريابي صريح ساخته شود .شود انجام مي )بسته به اينكه از چه نوع روش توزيع استفاده شده است متفاوت است

ساخته شد، lspidشخصه زمانيكه مسير صريح با مproc notify-erlsp-setup {node lspid}روال .شود؛ كه به عنوان مثال در اين زمان مي توان فلويي را به اين مسير متصل كرد فراخواني مي

انتقال ٣٠٠٠مشخصه با ها از مسير كد زير اضافه شود از زمان تعيين شده بسته قبلي اگر در كد يابند مي

$ns at 0.7 "$LSRmpls3 send-ldp-withdraw-msg 3" C8

$ns at 0.7 "$LSRmpls1 setup-erlsp 3 4_5_3 3000" C9

$ns at 0.9 "$LSRmpls1 bind-flow-erlsp 4 -1 3000" C10

هاي را به همه گرهldp-withdraw پيغام LSR3شود گره در اين كد باعث ميC8دستور UpStream ارسال كند۳ خود به منظور حذف مسير به مقصد .

و با ۳ به مقصد گره LSR1 از گره ۳۰۰۰يك مسير صريح با مشخصه شود باعث مي C9ستور د .مسير تعيين شده ساخته شود

ها يعني بسته(۱–و با مشخصه فلو ) در اينجا همان مقصد است (FECبا فلوهاي C10دستور Flow-idمتصل مي كند ۳۰۰۰با مشخصه را به مسير صريح ) ندارند.

زير استفاده شوددستور از توان مي رفتن مسير صريح براي از بين

$ns at 1.1 "$LSRmpls1 send-crldp-release-msg 3000"

. به صورت زير مي شوند۱ ل گرهاو جدC10 و C8 ،C9با اضافه شدن دستور

Page 81: NS Simulator for Beginners in Persian

٧٥‐٤ NS-2مروري بر قابليتهاي

PFT جدول ‐ ۱

AlternativePathSLIBptr LIBptr Prio Fid FEC

-1 -1 0 0 -1 2

-1 -1 1 0 -1 4

-1 -1 3 0 -1 5

-1 -1 2 0 -1 6

ERB جدول ‐ ۲

FailNext iIFaceiLableaPATHptrQoSidSLIBptrLIBptrLspIdFEC

* -1 -1 -1 -1 -1 2 300 3

و مشخصات . منتقل شوند3000 بايد از مسير به مشخصه 3 هاي به مقصد گويد بسته اين جدول مي . قرار داردLIB جدول ۲مربوط به اين مسير در رديف شماره

LIB جدول ‐ ۳

Linkerror? LIBptr oLabel oIface iLable iIFace #

-1 -1 0 2 1 -1 0

-1 -1 0 4 2 -1 1

-1 -1 7 4 -1 -1 2

-1 -1 2 4 4 -1 3

-1 -1 4 2 5 -1 4

Page 82: NS Simulator for Beginners in Persian

٧٦‐٤ NS-2مروري بر قابليتهاي

براي ارائه كيفيت سرويسMPLSاستفاده از ٢‐٤‐٤

CR-LSPمسيرهاي ١‐٢‐٤‐٤

.١كنيم ويس به كالسهاي مختلف ترافيك را با مثالي تشريح ميدر اين قسمت نحوه ارائه سر MPLS Domain

١٢‐١ شكل

خواهد ترافيكهايي با سرويسهاي متمايز به گره ميNode0 را در نظر بگيريد گره۱۲‐ ۱شكل توپولوژي Node4شود ترافيكهايي با سرويسهاي يهمانطور كه در شكل ديده م. ارسال كندSBT ،HBT ،RT قرار

كه نرخ RT1به جز . است250Kbs و نرخ آنها CBRنوع ترافيك براي همه سرويسها . است منتقل شوندبنابراين مجموع پهناي باند مورد نياز براي چهار ترافيك . است420Kbs كه نرخ آن RT2 و 350Kbsآن

. بيشتر استLSR2 و LSR1ه از پهناي باند در دسترس بين گر

:قسمتهاي مختلف برنامه

لينكهاي بين گره ها ‐۱$ns duplex-link $Node0 $LSR1 2Mb 10ms DropTail $ns duplex-link $LSR1 $LSR2 1Mb 10ms CBQ $ns duplex-link $LSR2 $LSR3 1Mb 10ms CBQ $ns duplex-link $LSR3 $Node4 1Mb 10ms DropTail

. تعريف شودCBQ بايد از نوع صف MPLSهاي شود لينك بين گره همانطور كه در كد ديده مي

براي پشتيباني از انواع كالسهاي ترافيكCBQكد مورد نياز براي پيكربندي صف ‐۲

#configure-cbq-for-SBTS {qlim cbq_qtype okborrow bw maxidle extradelay{ $ns cfg-cbq-for-SBTS 10 DropTail 1 0.1 auto 0 C1 $ns cfg-cbq-for-HBTS 10 DropTail 1 0.05 auto 0 $ns cfg-cbq-for-RTS 10 DropTail 0 0.8 auto 0

. موجود استmnsدارآتوري آد آامل اين مثال در 1

Page 83: NS Simulator for Beginners in Persian

٧٧‐٤ NS-2مروري بر قابليتهاي

$ns cfg-cbq-for-STS 10 DropTail 1 0.05 auto 0 $ns bind-flowid-to-SBTS 100 C2 $ns bind-flowid-to-SBTS 200 $ns bind-flowid-to-SBTS 300 $ns bind-flowid-to-SBTS 400 $ns bind-ldp-to-STS

در اين صورت . كند را پيكربندي ميSBTS سرويس MPLSهاي روي تمام گرهC1دستور DropTailوارد صف از نوع داده شود SBTSهايي كه قرار است به آنها سرويس ترافيك

توانند استفاده كنند و در از پهناي باند را مي0.1 بسته است و 10شوند كه طول صف مي. توانند از آن نيز استفاده كنند صورتي كه پدر آن پهناي باند اضافي داشته باشد مي

هاي را روي همه گرهSTS و HBTS ،RTSدستورهاي بعدي به همين ترتيب سرويسهاي MPLSكنند پيكربندي مي.

داده SBTS سرويس MPLSهاي در گره100 به فلوهاي با مشخصه C2توسط دستور 400 و 300، 200هاي با مسخصه و به همين ترتيب در دستورهاي بعدي به فلو. شود مي

.شود داده ميسرويسهاي تعيين شده cr-lspكد مورد نياز براي ساختن مسيرهاي -٣

$ns at 0.1 "$LSRmpls1 setup-erlsp 3 1_2_3 1000" C1 $ns at 0.1 "$LSRmpls1 setup-erlsp 3 1_2_3 1100" ### #RtModule/MPLS instproc setup-crlsp {fec er lspid TRate BSize PSize SPrio HPrio{ # $ns at 0.1 "$LSRmpls1 setup-crlsp 3 1_2_3 1200 350K 400B 200B 7 3 " C2 $ns at 1.0 "$SBT start" $ns at 1.0 "$HBT start" $ns at 1.0 "$RT1 start" #RtModule/MPLS instproc setup-crlsp {fec er lspid TRate BSize PSize SPrio HPrio{ # $ns at 10.0 "$LSRmpls1 setup-crlsp 3 1_2_3 1300 450K 400B 200B 7 3" C3

.شود ساخته مي1100 و 1000هاي و دستور بعد از آن دو مسير صريح با مشخصهC1در دستور

كه اولويت نصب و . شود ساخته مي1300 و 1200هاي با مشخصهcr-lsp دو C3 و C2در دستور برابر 1200نگهداري اين دو مسير يكسان است و پهناي باند مورد نياز براي مسير با مشخصه

.باشد كيلو بايت مي450 برابر 1300بايت و براي مسير با مشخصه كيلو 350

Page 84: NS Simulator for Beginners in Persian

٧٨‐٤ NS-2مروري بر قابليتهاي

ها به مسيرها كد مورد نياز براي اتصال فلو ‐۴

مسيري با مشخصه مربوط بهCR-LDP Mappingهمانطور كه گفته شد زمانيكه پيغام lspidبا مشخصه به گرهيnode برسد روال notify-erlsp-setup{node lspid} فراخواني شود و ساخته ميCR-LDP توسط پروتكل cr-lsp و er-lspبا توجه به اينكه مسير . شود مي

توان شوند، مي شروع ميLSR1ها از گره همچنين با در نظر گرفتن اينكه؛ در اين مثال مسيرها اطالع پيدا كرد و نويسي نمود كه از زمان ساخته شدن اين مسير اي باز اين روال را به گونه

در . توان به عنوان مثال جربان خاصي را به اين مسيرها متصل نمود اين زمان ميسپس در .كد زير اين روال بازنويسي شده است

proc notify-erlsp-setup {node lspid} {

set ns [Simulator instance[

puts "[$ns now] nodeid=[$node id] : lspid=$lspid"

set module [$node get-module "MPLS["

if {[$node id] == 1} {

switch $lspid {

1000 {

$module bind-flow-erlsp 4 100 $lspid

}

1100{

$module bind-flow-erlsp 4 200 $lspid

$module set-flow-prio 4 200 1

}

1200{

$module bind-flow-erlsp 4 300 $lspid

}

1300{

$module bind-flow-erlsp 4 400 $lspid

}

default {

puts "error"

Page 85: NS Simulator for Beginners in Persian

٧٩‐٤ NS-2مروري بر قابليتهاي

exit 1

}

}

}

}

باشد با LSR1شود كه اگر مشخصه گره برابر گره با توجه به كد باال در اين روال بررسي مي

.شود جريان خاصي به آن متصل ميتوجه به مشخصه مسير

سرويس دهي شوند به مسيرهاي RTS كه قرار است به صورت 400 و 300در اين مثال فلو cr-lspشوند شوند و از اين طريق منتقل مي متصل مي.

.شوند متصل ميer-lsp به مسيرهاي 200 و 100 فلوهاي

ميزان استفاده از پهناي باند براي هر ترافيك‐۵

همانطور . سازي نشان داده است ميزان استفاه از پهناي باند را براي هر سرويس در طول شبيه۱۳‐۱شكل از SBT و HBTكنند و از پهناي باند مورد نياز خود استفاده ميRT2 و RT1شود كه در شكل ديده مي

شروع RT2 كه هنوز ترافيك ٤٠ تا ٣٠ ثانيه و ١٠فر تا بين زمان ص. نمايند مابقي پهناي باند استفاده مي . آورد تمام پهناي باند مورد نياز خود را بدست ميSBT و HBTنشده يا متوقف شده است

ميزان استفاده از پهناي باند توسط ترافيكها ١٣‐١ شكل

Page 86: NS Simulator for Beginners in Persian

٨٠‐٤ NS-2مروري بر قابليتهاي

۴‐۴‐۲‐۲ CR-LSP با خصوصيت به زور گرفتن منابع

و نرخ 600K را به RT1ر نرخ ترافيك يكسان بود حال اگRT2 و RT1در مثال قبل اولويت : را به صورت زير تغيير دهيمCR-LSP تغيير دهيم و نيز مسيرهاي 700K را به RT2ترافيك

#MplsNode instproc setup-crlsp {fec er lspid TRate BSize PSize SPrio HPrio

$ns at 0.1 "$LSRmpls1 setup-crlsp 3 1_2_3 1200 600K 400B 200B 7 4"

$ns at 10.0 "$LSRmpls1 setup-crlsp 3 1_2_3 1300 700K 400B 200B 3 2"

داراي RT2 و ۴ و اولويت نگهداري ۷ داراي اولويت نصب RT1شود ر كه در كد ديده ميوهمانط RT1 كمتر از اولويت نگهداري RT2 است بنابراين اولويت نصب۲ و اولويت نگهدري ۳اولويت نصب

در زمان RT2بنابراين ) داراي اولويت بيشتري استRT1 نسبت به نگهداري RT2يعني نصب (استدر . بگيردRT1تواند منابع را از مي) منابع كافي در دسترس نباشديعني اگر (نصب در صورت لزوم

.ده استشزير ميزان استفاده از پهناي باند براي اين قسمت نشان داده

پهناي باند توسط ترافيكهاميزان استفاده از ۱۴‐۱ شكل

ايي كه جخواهد نصب شود از آن ميRT2 ثانيه كه ۱۱شود در زمان ديده مي۱۴‐ ۱شكل همانطور كه در Best Effortگيرد و از اين زمان به بعد به صورت ميRT1منابع كافي در دسترس نيست منابع را از

. شود دهي مي سرويس

Page 87: NS Simulator for Beginners in Persian

٨١‐٤ NS-2مروري بر قابليتهاي

٣‐٢‐٤‐٤ Constraint Based Routing سرويس داد ولي تضميني RTتوان تا جاييكه ممكن است به ترافيك ميcr-lspبا استفاده از

يك راه مطمئن براي اين منظور استفاده از . يا خيرودوجود ندارد كه حتما سرويس مورد نياز داده شConstraint Based Routingي با پهناي باند مورد نياز وجود شودآيا مسير در اينجا بررسي مي. است

. شود ساخته ميcr-lspدارد يا خير در صورتيكه چنين مسيري وجود داشت توسط

آوري اطالعات مربوط به منابع را داشته قابليت جمعMPLSهاي براي انجام چنين كاري بايد تمام گرهيين نمود براي اين منظور عرت ت را به اين صوRT2 مسيرتوان به عنوان مثال در كد باال مي .باشند

. كنيم مي1300 براي مسير با مشخصه setup cr-lspكدهاي زير را جايگزين دستور

$ns collect-resource-info 4 C1

set er [$sLSRmodule constraint-based-routing 3 700k] C2

if {$er != -1} {

puts "--> The result of constraint-based routing for lspid 1300 : Explicit Route=$er"

$sLSRmodule setup-crlsp 3 1300 $700k 400B 200B 7 3 C3

}

else {

puts "--> The result of constraint-based routing for lspid 1300 : Explicit Route= No path"

}

شود و گرهـها فعال ميMPLSهاي نابع در تمام گره م اطالعاتآوري قابليت جمعC1در دستور .كنند آوري مي هر ثانيه اطالعات راجع به منابع را جمع

ارسال ۳ و به مقصد گره 700k پيغامي مبني بر تقاضاي مسيري با پهناي باند C2در دستور - اين صورت عددرشود و در غي اگر چنين مسيري وجود داشت مسير برگردانده مي. شود مي

.شود برگردانده مي1

Page 88: NS Simulator for Beginners in Persian

٨٢‐٤ NS-2مروري بر قابليتهاي

با مشخصه setup-crlsp در صورت وجود مسير، آن مسير از طريق فرمان C3در دستور .شود ساخته مي1300

پهناي باند در دسترس نيست فرمان 700kود داراي ج در اين مثال از آنجاييكه تنها مسير مو Costraint-based-routingكند چينن مسيري پيدا نمي.

براي مسيريابي مجددMPLSز استفاده ا ٣‐٤‐٤

فرض كنيد . شود تشريح ميmnsدر اين قسمت با مثالي چگونگي پيكربندي تكنيك مسيريابي مجدد . ارسال شودNode19 به Node0ي از و قرار است ترافيك ساخته شده است١٥‐ ١شكل توپولوژي

١٥‐١ شكل

رسال شود را ٩براي ترافيكي كه قرار است از گره صفر به گره زير يك مسير اصلي به طور صريح كد كند سازد و دستورات اوليه براي پشتيباني از مسيريابي مجدد را فعال مي مي

را طوري MPLSهاي ابتدا بايد گرهMNSيابي مجدد در براي پشتيباني از مسير در اين مثال . كنندپيكربندي نمود تا از اتفاق افتادن خرابي در منابع اطالع پيدا

را طوري MPLS تمام گره هاي C1دستور . دهد اين كار را انجام ميC1دستور ثانيه وضعيت ۰,۰۱هر ثانيه ١٠٠٠تا زمان ثانيه ١,٩ كه از زمان كند پيكربندي مي

.كند لينكها را از نظر خرابي بررسي مي

Page 89: NS Simulator for Beginners in Persian

٨٣‐٤ NS-2مروري بر قابليتهاي

PMLياز است گره نHashkin و Mackamبراي استفاده از تكنيك مسيريابي مجدد به عبارت ديگر گرهي كه در صورت خراب شدن يك لينك، بين گره مبدا و اين گره (

را به عنوان ٩ شماره C2 ،LSRدستور . مشخص شود) شود مسير جديد ساخته ميPMLكند پيكربندي مي.

مشخصه اين مسير كه سازد مي ۱۰ و گره ١ يك مسير صريح بين گره Part1دستور قسمت ۱۰ مي خواهند به گره ١توان براي ترافيكهايي كه از گره و از اين مسير مي. است ۱۰۰۰برابر با

.تواند استفاده نمود برود مي

، ۱۰۰۰ مشخصه مسير بارا يك مسير مقيد كه صراحتا اعالم شده است Part2دستور قسمت اولويت . كند بايت رزرو مي200براي بسته هاي به اندازه بايت 400، اندازه بافر 500kاندازه بافر

.باشد مي۵ و اولويت نگهداري اين مسير برابر ٧نصب اين مسير برابر

و ۱۹ به فلوهاي به مقصد ثانيه٠,٤ در زمان را١٠٠٠ مسير ساخته شده با مشخصه C3دستور .يابند انتقال مي١٠٠٠ز مسير از اين زمان به بعد اين فلوها ا. كند متصل مي١٠٠مشخصه فلو

Page 90: NS Simulator for Beginners in Persian

٨٤‐٤ NS-2مروري بر قابليتهاي

Hashkinكد مورد نياز براي استفاده از روش مسيريابي مجدد ١‐٣‐٤‐٤

.شود فعال ميDrop مسيريابي مجدد از نوع C1ابتدا در دستور

بعنوان LSR9 ۱ كه در كد PML(LSR9به ) LSR1)PIL يك مسير پشتيبان از C2 ردر دستو PMLشود و مسير صريح تعيين شده ساخته مي٢٠٠٠خصه مسير با مش) پيكربندي شده بود.

و ٢٠٠۵ با مشخصه مسير) PIL(LSR1به ) LSR9)PMLيك مسير پشتيبان از C3 در دستور PMLPIL تعيين شده كه به مسير مسير صريح .شود ساخته مياست متصل شده2000 →

PMLPIL(پشتيبان به مسير ١٠٠٠ مسير اصلي با مشخصه C4 در دستور متصل )→ .شود مي

PMLPIL(هاي مسير پشتيبان در طول تمام گره١٠٠٠ مسير اصلي C5 در دستور به ) →PILPML(۲۰۰۵مسير .شود متصل مي) →

بسته ها از .د خرابي اتفاق بيافت١٠٠٠در اين صورت اگر بين هر دو گره مشخص شده در مسير در . يابند انتقال ميLSR9 به گره ٢٠٠٠گردند و سپس از مسير برميLSR1سمت همان گره به

.يابند انتقال مي١٠٠٠ها مجددا از مسير صورت بر طرف شدن خرابي بسته

Page 91: NS Simulator for Beginners in Persian

٨٥‐٤ NS-2مروري بر قابليتهاي

Makamكد مورد نياز براي روش مسيريابي مجدد ٢‐٣‐٤‐٤

.شود فعال ميnotify-prenegotiatedيابي روش مسيرC1در دستور

شود كه از ساخته مي۲۰۰۰ با مشخصه PML به PIL يك مسير صريح بين C2دستور در .اين مسير به عنوان مسير اصلي قرار است استفاده شود

.شود ه ميد قرار دا، به عنوان مسير پشتيبان مسير اصلي ۲۰۰۰ مسير C3دستور در

رابي در مسير اصلي اتفاق بيافتد پيغام شود زماني كه خ مجموعه اين دستورات باعث مي Notification به روتر PIL داده شود و پس از آن مسير پشتيبان جايگزين مسير اصلي .خواهد شد

Simple-Dynamic كد مورد نياز براي مسيريابي مجدد ۳‐۳‐۴‐۴

shortest-dynamic كد مورد نياز براي مسيريابي مجدد ٤‐٣‐٤‐٤

L3كد مورد نياز براي مسيريابي مجدد ٥‐٣‐٤‐٤

C1

$ns enable-reroute shortest-dynamic

$ns enable-reroute L3

Page 92: NS Simulator for Beginners in Persian

٨٦‐٥ NS-2مروري بر قابليتهاي

NS-2 در Diffrentiated Service مكانيزم .٥

هاي از مكانيزمDiffServ .شود بررسي ميNS-2ساز در شبيهDiffServماجول فصل در اين . باشد مي۳ در اليه يباشد و راه حل ميIP براي ارائه كيفيت سرويس در شبكه IETFپيشنهادي توسط

DiffServسازد و بنابراين كيفيت سرويس را در يك دهي را ميسر مي ح مختلف سرويس امكان ارائه سطوهاي مختلف ترافيك را به فيلد نگاشت كالسDiffServبعبارتي ديگر . دهد اتصال ارائه مي محيط بي

DSCP بسته IPاين فيلد رفتارهاي از پيش تعريف شده را با مقدارو روترها با توجه به. دهد انجام مي .دهند ترافيك انجام ميكالسهاي

NS-2 در DiffServماجول ۱‐ ۵

DiffServ به دو روش در NS-2سازي شده است پياده:

. نصب شده استNS-2-1b9a كه در Nortelتوسط شركت •

. نصب شده استNs-2-1b6aحال تنها در كه تا بهSean Murphyتوسط

DiffServسازي شده توسط پيادهSean Morphy با MPLSتوسط هزي شدسا پياده Gaeil Ahn تمع مجسازي پيادهDiffServولي . با هم بكاربردDiffServ را با MPLSتوان و بوسيله اين دو مي١شده است

. مع نشده استتجم MPLSسازي هنوز با هيچ پيادهNortelشده توسط شركت

. دهيم شرح ميسازي شده است؛ را پيادهNortel كه توسط شركت DiffServدر اين گزارش ماجول

DiffServمعماري ماجول ٢-۵ :اين ماجول سه جزء اصلي دارد

• Policing :كند كه يك هايي است كه بايد توسط مدير شبكه تعريف شود و مشخص مي سياست .كالس ترافيك چه سطوح سرويسي را بايد ازشبكه دريافت كند

سازي كامل نيست اين پياده 1

Page 93: NS Simulator for Beginners in Persian

٨٧‐٥ NS-2مروري بر قابليتهاي

• Edge Router : روتر لبه در حوزهDiffServ رود بسته يا خروج بسته به به وبا توجه است كه Policing را بوسيله يك كد كه با سياست تعريف شده در IPهاي بسته، DiffServحوزه

.دارد برميها كند و يا عالمت را از روي بسته گذاري مي مطابقت دارد عالمت

• Core Router : حوزه در روترهاي هستهDiffServ رفتار با سطوح مختلف نحوه هستند كههاي سرويس در آنها تعريف شده است و با توجه به كد بسته سرويس مناسب را به آن كالس .دهند مي

عمليات مربوط به DiffServشوند ولي در اين ماجول اين عملياتها در دنياي واقعي روي روترها انجام مي . سازي شده است روتر لبه و روتر مركزي روي لينكها و از طريق صف پياده

در (باشد ميdsRedQueueكالس اصلي آن كالس . چند كالس اصلي داردDiffServ در كل ماجولاز آن ) CoreQueue ( و كالس روترهاي مركزي)EdgeQueue(كه كالس روترهاي لبه ) dsRedفايل

ها را از آنجاييكه در روترهاي لبه بايد سياستها قرار داده شوند تا بر اساس آن بسته. اند مشتق شده دارد كه اين كالس شامل PolicyClassifierري نمايند كالس لبه يك متغير از كالس گذا عالمت .باشد ها مي سياست

معماري روترهاي لبه و مركزي ۱‐ ۲‐ ۵

بندي كالسها از صفهاي مجازي و مركزي براي تمايز قرار دادن بين ترافيكـهاي مختلف و رده روترهاي لبهتوان توسط اين قابليت مي. كنند ، استفاده مياند ي شدهساز پيادهdsRedQueueو فيزيكي كه در كالس

دهي به ترافيكهاي مربوط به يك داد و نحوه سرويستهر كالس ترافيك را به يك صف فيزيكي نسب قابليتهاي زير را به dsRedQueueدر كل كالس . كالس را با استفاده از صفهاي مجازي انجام داد

:دهد روترهاي لبه و مركزي مي

اد چندين صف فيزيكي در يك لينك ايج •

ايجاد جندين صف مجازي در يك صف فيزيكي •

و بر . كند هر بسته متعلق به كدام صف مجازي و فيزيكي است با استفاده از جدولي تعيين مي • .نمايد آن بسته را وارد صف مناسب مياساس

Page 94: NS Simulator for Beginners in Persian

٨٨‐٥ NS-2مروري بر قابليتهاي

بسته را سرويس با توجه به كد بسته شماي زمانبندي بسته را تعيين ميـكند و بر طبق آن • .دهد مي

هاي مجازي و فبا تعريف ص. باشد داراي چهار صف فيزيكي و سه صف مجازي ميdsRedQueueكالس ا به طور ر... ها و بستهنپيكربندي آن قادر خواهيم بود در هر كالس ترافيك مكانيزم به دور انداخت

.مستقل تعريف كنيم

دارد، روتر لبه بسته را با كدي Per Hop Beheaviorنام ه يك جدول بdsRedQueueكالس دهد و هر دو نوع روتر توسط كند و روتر مركزي با توجه به اين كد به بسته سرويس مي گذاري مي عالمتاين جدول داراي . هر بسته متعلق به كدام صف فيزكي و مجازي استكه كنند تعيين ميPHBجدول

:سه فيلد است

codept :السكد هر بسته يا ك

Queue: شماره صف فيزيكي

Precd :شماره صف مجازي

ها سياست ۲‐ ۲‐ ۵

گذاري عالمت روش ش دارد كه اين كالس به همراه زيركالسهايPolicy يك كالس DiffServماجول شود و سپس بر اساس آن در واقع سياستي بين گره مبدا و مقصد تعريف مي. كنند ها را تعيين مي بسته

.گيرند قرار ميها هستند داخل يك دسته از كالسجريان به اين هايي كه متعلق تمام بسته

Policy-type ،meter-type: شود ترافيك از سه مشخصه استفاده ميجريانبراي تعيين سياستها براي هر . initialcode-pointو

سياستي كه Policy-typeتوسط . شود ابتدا به هر كالس ترافيك يك كد اوليه اختصاص داده ميكه در . شود اجرا مي، حدود از پيش تعيين شده، به منظور تعيين تخلف ازجريانهاي هر بايد براي بسته روش و Meter-type. شوند گذاري نمي عالمت با كد اوليه )برحسب سياست(ها بسته، ديگرصورت تخلفارامترهاي ترافيك را به پmeter-type بر اساس Policer. كند تعيين ميPolicyگيري را براي نوع اندازه

.كند گيري مي منظور جلوگيري از تخلف اندازه

Page 95: NS Simulator for Beginners in Persian

٨٩‐٥ NS-2مروري بر قابليتهاي

بسته متعلق به كدام كالس ترافيك است كه شود رسد ابتدا تعيين مي اي به روتر لبه مي زمانيكه بسته. آورد در مي را به روزجريان تمام پارامترهاي مربوط به آن policy تعريف شده در meter-typeسپس و كد اوليه بسته و پارامترهاي مربوط به فلو policy-typeشود تا بر اساس فراخواني ميPolicerسپس

براساس كد تعيين شده بسته به داخل باالخره و. كندگذاري عالمتها را تعيين كند چگونه بايد بسته .رود صف مناسبي مي

DiffServهاي تعريف شده در ماجول policyانواع ٣‐ ٢‐ ٥

ها از پارامترهاي زير Policyاند كه اين تعريف شدهDiffServ در ماجول policy ۶در حال حاضر :كنند گيري استفاده مي براي اندازه

• ١CIR : بر حسب بيت بر ثانيه(نرخ اطالعات(

• PIRبر حسب بيت بر ثانيه(نرخ بيشينه اطالعات : ٢(

• CBS3 : بر حسب بايت(اندازه برست(

• EBS4 : بايتبر حسب(مقدار زيادي برست (

• PBS5 : بر حسب بايت(اندازه بيشينه برست(

• C bucket : سطلاندازه فعلي

• E bucket : سطلاندازه فعلي زيادي

• P bucket : سطلاندازه فعلي بيشينه

(ميانگين نرخ بسته آخر •

• TSW window length :گيرد ميانگين نرخ ترافيك را در فاصله زماني تعيين شده اندازه مي.

Policyعريف شده در ماجول هاي تDiffServعبارتند از :

Time SlidingWindow With 2 Color Mapping(TSW2CMPolicer)

1 Commited Information Rate 2 Peak Information rate 3 Commited Burst Size 4 Excess Burstt Size 5 Peak Burst Size

Page 96: NS Simulator for Beginners in Persian

٩٠‐٥ NS-2مروري بر قابليتهاي

به منظور حذف (بندي هاي مربوط به يك كالس را رده بسته) نرخ اطالعات تعيين شده (CIRبا استفاده از پايينتر ها در رده شود بستهتر از حدي اضافهCIRاگر . بندي است كند و داراي دو سطح رده مي) ها بسته

.شود ميمنتسبگيرند و كد مربوط به اين رده به آنها قرار مي

Time Sliding Window With (TSW#CMPolicer) دهد و سه ذف آنها انجام ميحها را به منظور چگونگي بندي بسته ه رد PIR و CIRبا استفاده از دو پارامتر

شود احتماال كد مربوط به رده تر مي از حد تعيين شده اضافهCIRيكه زمان: اينكاردارد انجامرده برايشود احتماال كد مربوط به تر مي از حد تعيين شده اضافهPIRشود و زمانيكه ها داده مي مياني به بسته

.شود مي ها داده رده پاييني به بسته

Token Bucket(tokenBucketPolicer) :

يك بسته در صورتيكه . كند ها استفاده مي ذف بستهح از دو رده براي CBS و CIRبا استفاده از دو پارامتر .شود باشد، با رده پايينتر كد مية سطلبزگتر از انداز

Single RateThree Color Marker(srTCMPolicer) :

. كند ها استفاده مي سه رده براي حذف بسته، از EBS و CIR ،CBSبا استفاده از پارامترهاي

Two Rate Three Color Marker(trTCMPolicer) :

.كند ها استفاده مي براي تعيين سه رده به منظور حذف بستهPBS و CIR ،CBS ،PIRهاي از پارامتر

هاي تعريف شدهPolicyساختار ۴‐ ۲‐ ۵

. اند سازي شده پيادهdsPolicyهاي تعريف شده در باال به صورت يك زيركالس از Policyهمه

استفاده شده است كه applyPolicer و applyMeter خاص از توابع meter و Policy اعمال براي:نكته هاي كاربر نيز به همين طريق Policyاند و تعريف شدهdsPolicyاين توابع مجازي بوده و در كالس

.سازي شوند توانند در ماجول پياده مي

Page 97: NS Simulator for Beginners in Persian

٩١‐٥ NS-2مروري بر قابليتهاي

Policy هاي تعيين شده براي هر كالس ترافيك در جدولPolicy در كالس PolicyClassifier ذخيره : فيلدهاي اين جدول عبارتند از. شوند مي

policer-type ،meter-type ،initial-codepoint و پارامترهاي ترافيك كه توسط Policer از آنها استفاده .شود مي

از كد اوليه است كه اين جدول با استفاده Policer همچنين شامل يك جدول PolicerClassifierكالس . كند را تعيين ميهاي پايينتر يك كالس ردهكدهاي مقادير Policyو نوع

DiffServپيكربندي پارامترهاي ماجول ٣-۵

بندي پارامترهاي صف پيكر ۱‐۳‐ ۵

و edgeQueueهايي كه از كالسهاي نمونهتوانند براي پيكربندي ميفرمانهاي پيكربندي اين قسمت، coreQueueستفاده شوند ااند شده گرفته .

.اي انتقال يابد انجام شود سازي و قبل از اينكه بسته ها بايد در زمان شبيه پيكربندي روتر

:شوند هاي فيزيكي و مجازي هر لينك به صورت زير پيكربندي مي تعداد صف

$dsredq set numQueue_ 2

$dsredq setNumPrec 2

NumQueue_ متغير كالس dsRedQueeuكي كه در يك لينك نگاشت ي تعداد صفهاي فيز باشد و ي ممقدار . توان آن را تغيير داد است و به صورت باال مي۴مقدار پيش فرض آن . دهد شوند را نشان مي مي

setNumQueeuكند تعداد صفهاي مجازي را داخل يك صف فيزيكي تعيين مي.

و حداكثر تعداد صف ۴حداكثر صف فيزيكي ( هستندمحدوديتي اتعداد صفهاي فيزيكي و مجازي دارفرض بر اين است كه كاربر از اين . كند دو پارامتر را براي خطا چك نمي مقدار اينTCLولي ) ۳مجازي

. اطالع دارديتحدودم

:باشد براي هر صف مجازي به صورت زير ميRedپيكربندي پارامترهاي

$dsredq configQ 0 1 10 20 0.10

Page 98: NS Simulator for Beginners in Persian

٩٢‐٥ NS-2مروري بر قابليتهاي

كند در مثال باال صف مجازي شماره را براي يك صف مجازي پيكربندي ميREDامترهاي اين فرمان پارپارامترهاي پيكربندي اين دستور عبارتند . يك مربوط به صف فيزيكي شماره صفر پيكربندي شده است

:از

thresh_ :۱۰در مثال باال اين مقدار ). بستهر حسبب(كمترين حد آستانه براي ميانگين اندازه صف در مثال باال مقدار ). بستهرحسبب(بيشترين حد آستانه براي ميانگين اندازه صف: _maxthreshباشد مي

.باشد مي۲۰اين پارامتر

$dsredq addPHBEntry $codepoint $phisicalq $virtualq به صف codepoint$كه توسط اين جدول كد . كند اضافه ميPHBاين فرمان يك ركورد به جدول

:شود نگاشت ميphisicalq$ در صف فيزيكي virtualq$ مجازي

$dsredq addPHBEntry 11 0 1 .شود نگاشت مي٠ در صف فيزيكي ۱ به صف مجازي ١١در اين مثال كد

Bestبنابراين براي پردازش ترافيك . صفر هستندفرض داراي كد ها به صورت پيش بستهns در :نكته

Effortر در جدول بايد ركوردي براي كد صفPHBاضافه شود .

$dsredq meanPktSize $Mpsize

ها مورد نيازاست كه توسط دستور باال ، ميانگين اندازة بستهREDبراي محاسبة ميانگين طول صف .ن نموديتوان اين پارامتر را تعي مي

$dsredq setMREDMode $mred $phisicalq

توان توسط دستور باال اينكار را مي .شود پيكربندي فص اندازه محاسبه منظور به بايد MRED مدمتغير : كند مدهاي مختلفي را پشتيباني ميDiffServ ماجول .انجام داد

RIO-C(RIO Coupled):در (ها احتمال به دور انداختن بستهout of profileكه طول صف يعني زمانيدر . شود مه صفهاي مجازي انجام ميبر اساس ميانگين وزني طول ه )شود از حد بيشترين بزرگتر مي )شود از حد كمترين بزرگتر ميصفكه طول يعني زمانيin-profileدر (ها حاليكه به دور انداختن بسته

.تنها بر اساس ميانگين وزني طول صف مجازي آن است

RIO-D(RIO De-coupled) : شبيهRIO-Cدر ها به جز اينكه احتمال به دور انداختن بسته. است .شود بر اساس اندازه صف مجازي است كه طول صف از حد بيشترين بزرگتر مي زماني

Page 99: NS Simulator for Beginners in Persian

٩٣‐٥ NS-2مروري بر قابليتهاي

• WRED(Weighted RED) :همه احتماالت بر اساس اندازه تنها يك صف است.

• DROP : مانند صفDropTailكند به اين صورت كه زماني كه اندازه طول صف برابر عمل مي .شوند حذف ميDropTailزم ها مانند مكاني آستانه كمترين شد بسته

هاي فيزيكي بندي بين صف پيكربندي شماي زمان ١‐١‐٣‐٥

.كند فيزيكي پشتيباني مي شماهاي زمانبندي زير را براي سرويس دادن به صفهاي Diffservماجول

• Weighted Round Robin(WRR) • Weighted Interleaved Round Robin(WIRR) • Round Robin(RR) • Priority(PRI)

.توان شماي زمانبندي را تغيير داد بوسيله دستور زير مي. باشد ميRRفرض مانبندي پيششماي ز

$dsredq setSchedularMode $shema به صورت زير WRRبه عنوان مثال شماي زمانبندي . دهد تغيير مي shema$ شماي زمانبندي را به اين

:شود تعريف مي

$dsredq setSchedularMode WRR $dsredq addQueueWeights 1 5

٥دهد و دستور دوم وزن صف اول را برابر تغيير ميWRRدر اين مثال دستور اول شماي زمانبندي را به .دهد قرار مي

و صف صفر داراي باالترين . صف استة، اولويت صفها به ترتيب شمارPRIشماي زمانبندي در مورد از پهناي باند را براي هر صف توسط دستور زير محدود توان ميزان استفاده همچنين مي. باشد اولويت مي

: كرد

$dsredq addQueueRate $queue $bw :به عنوان مثال. كند محدود ميbw$ به queue$اين دستور ميزان استفاده از پهناي باند را براي صف

$dsredq setSchedularMode PRI $dsredq addQueueRate 0 5000000

و ميزان . شود دهي بين صفهاي فيزيكي استفاده مي براي نحوه سرويسPRIزمانبندي در اين مثال از .شود محدود مي5MBاستفاده از پهناي باند صف صفر به

Page 100: NS Simulator for Beginners in Persian

٩٤‐٥ NS-2مروري بر قابليتهاي

Policyپيكربندي ٢‐٣‐ ٥

در جدول Policyها بين گره مبدا و مقصد بايد مشخصات ترافيك و نوع به منظور پيكربندي سياستPolicyشود كار در روتر لبه توسط فرمان زير انجام مي قرار داده شوند كه اين:

$q addPolicyEntry [$s id] [$d id] $Policy $parameters

:پارامترهاي پيكربندي اين دستور عبارتند از

$q : متغيري از جنسEdgeQueue

$s :گره مبدا

$d :گره مقصد

$policy :ار گرفته شودنوع سياستي كه براي ترافيك بين مبدا و مقصد بايد بك.

$parametes با توجه به اينكه هر policy پارامترهاي ترافيك مخصوص به خود را دارد بعد از تعيين policy در اين قسمت بايد مقادير پارامترهاي مربوط به Policyآورده شود .

Policy هاي تعريف شده در ماجولDiffServزير خالصه به همراه پارامترهاي مورد نياز براي هر كدام در :اند شده

• TSW2CM Initial code point CIR • TSW3CM Initial code point CIR PIR • TokenBucket Initial code point CIR CBS • srTCM Initial code point CIR CBS EBS • trTCM Initial code point CIR CBS PIR PB

توان بين آنها قرار را ميPolicy كه به ازاي هر گره مبدا و مقصد تنها يك توجه به اين نكته ضروري است :به عنوان مثال. داد

$q addPolicyEntry [$s1 id] [$d1 id] TSW2CM 10 2000000 و s1 براي ترافيك بين مبدا PIR=2000000 و CIR=10 با پارامتر TSW2CMدر اين دستور سياست

.شود در نظر گرفته ميd1مقصد

تا اضافه شودPolicer بايستي يك ركورد به جدول Policy به ازاي هر جفت كد اوليه و نوعهمچنين اين كار توسط دستور زير انجام . بدست آوردpolicyبتوان نگاشتي از اين جفتها به كدهاي ردة پايينتر

.شود مي

Page 101: NS Simulator for Beginners in Persian

٩٥‐٥ NS-2مروري بر قابليتهاي

$dsredq addPolicerEntry $policer-type $initcode $downgradedcode1 $downgradedcode2

كدهاي رده پايين را به ترتيب initcode$با كد اوليه policer-type$اين دستور براي سياست $downgradedcode1 و $downgraded-code2بندي در هر دهد البته با توجه به تعداد رده قرار مي

Policy ممكن است $downgraded-code2نيازي نباشد .

:به عنوان مثال

$dsredq addPolicerEntry trTCM 10 11 12

.دهد قرار مي۱۲و ۱۱ كدهاي رده پايينتر را به ترتيب ،١٠ه لي با كد اوtrTCMسياست دستور باال براي

Diffservهاي برنامه نويسي براي استفاده از ماجول واسط ٤-٥• $ns simplex-link $edge $core $bw $delay dsRED/edge

• $ns simplex-link $edge $core $bw $delay dsRED/core

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

روتر مركزي به روتر لبه يا روتر مركزي به روتر مركزي بايد تعريف شود و صف بينdsRed/edgeصورت . تعريف شوندdsRED/coreاز نوع

• $dsredq printPolicyTable

• $dsredq printPolicerTable

• $dsredq printPHBtable

مربوط به روتر لبه مشخص شده و جدول Policer و جدول policy به ترتيب جدول توسط سه دستور باالPHBشوند وط به روتر لبه يا روتر مركزي تعيين شده، چاپ مي مرب.

• $dsredq printState

يك خروجي نمونه از اين دستور . شود چاپ مي،پارامترهاي آماري ترافيك مربوط به روتر لبه تعيين شده : به صورت زير است

CP TotPkts TxPkts Ldrops Edrops All 249126 249090 21 15 10 98821 98790 21 10

Page 102: NS Simulator for Beginners in Persian

٩٦‐٥ NS-2مروري بر قابليتهاي

20 15035 150300 0 5

:فيلدهاي اين جدول عبارتند از

CP : كد

TotPkts :هاي دريافت شده تعداد كل بسته

TxPkts :هاي دريافت شده تعداد كل بسته

Ldrops :اند شدن لينك به دور انداخته شده هايي كه با توجه به سرريز تعداد بسته.

Edrops :هايي كه در صف بستهREDاند ور انداخته شده به د.

• $dsredq getAverage $queue

.گرداند مي را برqueue$دستور باال ميانگين وزني اندازه صف فيزيكي

• $dsredq getCBucket

.گرداند را برميCاين دستور اندازه فعلي سطل

پايان