جستجو در تک بوک با گوگل!

بازدید
۴-۱- مقدمه
در این فصل ابتدا به بررسی روشهای طراحی سیستمهای تک منظوره (که سوئیچ های شبکه هم نوعی از آنها می باشند) و زبانهای برنامه نویسی که بدین منظور بکار می روند می پرذازیم ]۱۰[ و سپس به معرفی زبان SMPL می پردازیم. در ادامه به ارائه مدلی برای سوئیچ MPLS خواهیم پرداخت.
در فصلهای گذشته دیدیم که MPLS قابلیت مجتمعسازی هر نوع فنآوری لایه سوم (که عموماً IP میباشد) را با هر نوع فنآوری لایه دوم دارا میباشد. از آنجا که سیاست کلی مخابرات ایران، استفاده از فن آوریهای مبتنی بر ارسال فریم در لایه دوم میباشد، در این پروژه فنآوری لایه دوم PPP در نظر گرفته شده است. همچنین بعلت اینکه مدولاتورها و دمدولاتورهای لایه فیزیکی و لایه دو در حال حاضر در دسترس عموم قرار دارد، در مدلسازی کارت خط از پردازش های لایه فیزیکی و لایه دو صرفنظر کرده و مبنای شبیهسازی را بر دریافت و ارسال بستههای IP (همراه با سرفصل Shim) میگذاریم. در صورت استفاده از فنآوریهای مبنی بر ارسال سلول مثل ATM، این مدل سوئیچ با اعمال تغییراتی میتواند برای شبیهسازی مورد استفاده قرار بگیرد.
۴-۲- روشهای طراحی سیستمهای تک منظوره
بطور کلی به سیستمهایی که دارای عملکرد ثابت می باشند و برای یک کاربرد خاص طراحی و ساخته می شوند، سیستمهای تک منظوره گفته می شود. این سیستمها دارای بخشهای نرم افزاری و سخت افزاری دیجیتال و حتی آنالوگ می باشد. با توجه به پیشرفتهایی که در صنعت ساخت تراشه ها بوجود آمده است، پیچیدگی سیستمهای تک منظوره بسیار زیاد شده است که نهایتاً به تغییراتی در روشهای طراحی آنها منجر شده است.
روش طراحی قدیمی به این صورت بود که مشخصات سیستم به صورت دستی و بازبانهای طبیعی مانند انگلیسی تهیه می شد و طراح سیستم بنا به تجربه و مهارت خود، این مشخصات را به بخشهای مختلف نرم افزار و سخت افزار تقسیم بندی می نمود و بخشهای مختلف را به متخصصین مربوطه تحویل می داد. ابتدا طراحان سخت افزار مشخصات بخش سخت افزار را به زبانهایی مانند Verilog و یا VHDL تبدیل مینمودند و سپس عملیات سنتز توسط ابزارهای طراحی با کمک کامپیوتر (CAD) انجام میگرفت. با آماده شدن نمونه اولیه سخت افزار، این نسخه تحویل مهندس نرم افزار گردیده و کارنرم افزار نویسی آغاز می شد و بعد از عملیات سنتز و کامپایل کردن نرم افزار، کد بر روی پروسسور سیستم اجرا می شد و سرانجام عملیات مجتمع کردن سیستم انجام می شد .
این روش دارای مشکلات اساسی بود که نیازهای جدید را بر آورده نمی ساخت. به عنوان مثال طراحی سخت افزار و نرم افزار در چندین مرحله انجام می گرفت که باعث اتلاف زمان می شد. دیگر اینکه کشف خطاهای ممکن در مشخصات سیستم و یا در بخش سخت افزار ممکن است بسیار دیر صورت بگیرد، مثلاً زمانی که مهندس نرم افزار مشغول طراحی نرم افزار می باشد. بدین ترتیب حذف این خطاها بسیار پرهزینه خواهد بود. همچنین بعلت استفاده متخصصین مختلف از زبانها و ابزارهای کاملاً متفاوت، ارتباط این افراد با یکدیگر قطع می شود. همچنین روش قدیمی طراحی اجازه استفاده از طرح های حاضر و آماده را به سادگی امکان پذیر نمی نماید.
روشهای جدید طراحی مبنی بر این ایده می باشند که طراحی در سطح سیستم و حصول اطمینان از درستی عملکرد سیستم قبل از ساخت اجزا می تواند جلوی انتشار خطا به مراحل بعدی را بگیرد. همچنین با ارائه یک مدل قابل اجرا و قابل شبیه سازی از سخت افزار به مهندسین نرم افزار، آنها قادر خواهند بود کار پیاده سازی و سنتز نرم افزار را همزمان با سنتز سخت افزار شروع و اجرا نمایند. استفاده از یک زبان برای مدلسازی و شبیه سازی تمامی اجزاء سیستم، ارتباط بین گروههای طراح مختلف را به سادگی میسر می نماید که مزایای زیادی به همراه خواهد داشت.
۴-۳- مراحل طراحی سیستمهای تک منظوره
سیستمهای تک منظوره شامل بخشهای سخت افزاری و نرم افزاری مختلف می باشند. بخش نرم افزار معمولاً شامل یک سیستم عمل کننده همزمان به اضافه یک سری فرآیندهای کنترلی می باشد. همچنین ممکن است فرایندهایی بطور همزمان برروی پردازنده های کمکی مانند پردازنده های سیگنالهای دیجیتال (DSP) اجرا شوند. بخش سخت افزار شامل پردازنده، حافظه، پردازنده های کمکی و قسمت برقرار کننده ارتباط بین بقیه اجزا می باشد. در بعضی از کاربردها استفاده از مدارات مبدل آنالوگ به دیجیتال و دیجینال به آنالوگ نیز معمول می باشد. بدین ترتیب سیستم شامل اجزای متفاوت با ماهیت های متفاوت می باشد که طراحی آنها باید به صورت همزمان و با روشهای متناسب با هر بخش صورت پذیرد.
روند طراحی معمولا شامل مراحل متفاوتی می باشد که در هر مرحله مشخصات سیستم یا تهیه میگردد (در اولین مرحله ) ویا خروجی مرحله قبل می باشد (System Spesification). این مشخصات به روش خاص تست می شود که آیا درست بوده و انتظارات طراحی را برآورده می سازد (Validation ) و سپس یا به صورت اتوماتیک و یا به صورت ترکیب اتوماتیک – دستی به مشخصات مرحله بعد تبدیل می شود (Synthesis). که در این عمل جزییات پیاده سازی بیشتری به مشخصات مذکور اضافه می شود .
۴-۳-۱- مشخصه سیستم
اولین مرحله در طراحی عبارت است از تهیه مشخصات دقیق سیستم. معمولا این مشخصات در بالاترین سطح، یعنی سطح عملکرد تهیه می گردد و شامل اطلاعات دقیق نحوه عملکرد سیستم میباشد. در این مشخصات هیچ اطلاعاتی راجع به ساختار و نحوه پیاده سازی و حتی زمانبندی وجود ندارد.
مشخصه سیستم را هم می توان به صورت یک زبان طبیعی مانند انگلیسی تهیه نمود (که این روش در سالهای قبل منسوخ گشته است) و هم می توان از زبانهای سطح بالا مانند C/C++ استفاده نمود. استفاده از زبانهای سطح بالا مزایای زیادی را در بردارد. اولا زبانهای طبیعی دقیق نیستند، به این معنی که توسط افراد مختلف به طرق متفاوت تعبیر می شوند. ثانیا آنها را نمی توان مبنای روشها و ابزارهای طراحی اتوماتیک قرار داد.
۴-۳-۲- تایید صحت
هنگامی که مشخصات یک سییستم تهیه می شود باید درستی آن نیز تأیید شود. برای این کار از شبیه سازی استفاده می شود. در این روش مدل سیستم به اضافه یک سری ورودیها به یک شبیهساز داده شده و شبیه ساز خروجیها و حالات داخلی سیستم را استخراج نموده و نمایش میدهد. بدین ترتیب می توان صحت عملکرد سیستم را تعین نمود. واضح است که شبیه سازی نمی تواند درستی سیستم را اثبات نماید و ما را صد درصد مطمئن نماید ولی به هر حال شبیه سازی فراگیرترین و بهترین روش برای تایید صحت سیستم می باشد.
در گذشته قسمتهای نرم افزاری سیستمها جداگانه و بازبانهای سطح بالا شبیه سازی می شدند. قسمت های سخت افزاری هم جداگانه شبیه سازی می شدند اما امروزه، کل سیستم شامل سخت افزار و نرم افزار با هم به طور همزمان شبیه سازی می شوند که به آن شبیه سازی همزمان می گویند.
مزیت شبیه سازی همزمان این است که بسیاری از خطاها و نقائص در تک تک اجزا بروز نمی نمایند بلکه هنگام مجتمع کردن بخشهای مختلف بروز می نماید و برای پیدا نمودن آنها شبیه سازی همزمان لازم است.
۴-۳-۳- سنتز
سنتز به معنی تبدیل یک مشخصه سیستم به دیگری با سطح انتزاع پایین تر و جزییات ساختاری بیشتر می باشد. عمل سنتز بسته به سطح انتزاع می تواند بصورت کاملا اتوماتیک و یا ترکیب اتومامتیک – دستی انجام گیرد. معمولا در سطح انتزاع پایین عملیات سنتز کاملا اتوماتیک انجام می شود.
سنتز معمولا شامل سه مرحله اصلی است:
۱- نگاشت مشخصه سیستم به معماری: در این مرحله معماری کلی سیستم پیاده سازی شده، تعیین می گردد.
۲- تقسیم بندی: در این مرحله بخشهای مختلف مشخصه سیستم اولیه به بخشهای نرم افزار و سخت افزار تقسیم می شوند .
۳- سنتز سخت افزار و نرم افزار: هر کدام از بخشهای نرم افزار و سخت افزار توسط ابزارهای خاص تا مرحله پیاده سازی نهایی رسانیده می شوند .
۴-۴ – زبانهای شبیه سازی
در این قسمت به بررسی زبانهای موجود شبیه سازی می پردازیم و در نهایت برای شبیه سازی سوئیچ MPLS یک زبان شبیه سازی را انتخاب می کنیم .
در حال حاضر رقابت سختی بین طرفداران زبانهای شبیه سازی برای حصول برتری و تبدیل شدن به استاندارد جامعه طراحی در جریان است. به طور کلی این رقابت دو جبهه دارد. در یکی از جبهات طرفداران زبانهای سطح بالا (به فرماندهی C/C++) و در جبهه دیگر طرفداران زبانهای سخت افزاری مانند Verilog و VHDL قرار دارند.
بطورکلی زبانهای شبیه سازی مطرح را می توان به سه دسته تقسیم نمود:
۱- زبانهای آکادمیک مانند Ptolemy و Rosetta
۲- زبانهای براساس Verilog مانند Superlog
۳- زبانهای بر پایه C/C++ مانند SystemC، A/RT, SMPL
زبان Ptolemy که توسط دانشگاه برکلی ارائه شده است با تاکید زیاد برناهمگونی سیستمهای تک منظوره طراحی شده و با استفاده از آن بخشهای متفاوت سیستم با ماهیت متفاوت را می توان مدل نموده و نهایتا همگی آنها را با هم شبیه سازی کرد ولی نقطه ضعف آن نبودن ابزارهای لازم برای سنتز آن می باشد. همچنین کند بودن از دیگر نقاط ضعف این زبان می باشد.
زبان دیگر از گروه اول زبان Rosetta می باشد. این زبان با توجه به این ایده توسعه یافته است که سیستم شامل اجزایی غیر الکترونیکی و مکانیکی نیز می باشد و طراحی باید از این سطح آغاز شود نه از سطح سیستم الکترونیکی که فقط شامل سخت افزار و نرم افزار می باشد.
زبان Superlog یکی از زبانهای گروه دوم می باشد که محصول شرکت Co-Design می باشد. این زبان بااضافه نمودن ساختارهای سطح بالای C به زبان Verilog شکل گرفته است. قدرت این زبان در این نکته است که اکثر طراحان سخت افزار با Verilog آشنا بوده و تغییر سطح طراحی به سطح بالاتر براساس Superlog برایشان زیاد ناخوشایند نخواهد بود.
گروه سوم که زبانهای برمبنای C/C++ می باشند و هم اکنون بیش از هشتاد درصد توجه به این زبانها معطوف شده، به عنوان جهت دهنده آینده صنعت طراحی و شبیه سازی پیش بینی شده اند. این زبانها به دلیل محبوبیت فوق العاده C/C++ در بین طراحان سیستم و مهندسین نرم افزار و همچنین آشنایی مهندسین سخت افزار با آنها ازیک طرف و از طرف دیگر به علت توانایی های چشمگیر C/C++ اهمیت فوق العاده ای یافته اند.
یکی از این زبانها SystemC می باشد که با اضافه نمودن قابلیت مدلسازی زمان و مدلهای سخت افزاری به زبان C++ شکل گرفته است. این زبان به صورت اضافه کردن یک کتابخانه به C++ قابلیت مدلسازی آنرا افزایش می دهد و هم اکنون نسخه های جدید تر و تکمیلی آن در حال ورود به بازار می باشد.
زبان دیگر از گروه زبانهای برپایه C/C++ ، SMPL می باشد که جزو نخستین زبانها از این گروه می باشد. این زبان بصورت اضافه کردن یک کتابخانه به زبان C یا C++ فعال می شود و با توجه به سادگی دستورات آن، قابلیت مدلسازی همزمان نرم افزار و سخت افزار به راحتی فراهم می آید.
در این پروژه با توجه به روند تبدیل زبانهای بر پایه C/C++ به عنوان استاندارد صفت طراحی و همچنین سادگی شبیه سازی سیستمهای صف و سرویس دهنده توسط زبان SMPL، از این زبان شبیه سازی استفاده شده است.
در بخش بعدی به بررسی دقیق تر زبان SMPL خواهیم پرداخت.
۴-۵- زبان شبیه سازی SMPL
این زبان که توسط فردی به نام Mac Dougall ارائه شده است ]11[،از جمله زبانهایی است که به آنها برپایه رخداد می گویند. در زبان SMPL سه نوع نهاد مختلف وجود دارد:
۱- وسایل
۲- بلیط ها
۳- رخدادها
یک سیستم را در حالت ایستا می توان مجموعه ای از وسایل در نظر گرفت. یک وسیله بطور نوعی نمایانگر مدلی از یک عنصر سیستم می باشد که کار خاصی را انجام می دهد، مانند واحد پردازش مرکزی (CPU) در یک سیستم کامپیوتر و یا یک گذرگاه در یک شبکه کامپیوتری. در زبان SMPL توابعی وجود دارد که به کمک آنها می توان وسایل را تعریف، ذخیره و رها کرد. ارتباط بین وسایل هم توسط بلیطهایی که بین وسایل رد و بدل می شوند، مشخص می شود .
بلیطها در واقع نمایانگر نهادهای فعال سیستم می باشند. عملکرد پویای سیستم بوسیله حرکت بلیطها در یک سری از وسایل مدل می شود. یک بلیط ممکن است یک کار در یک مدل کامپییوتری، یک بسته در یک مدل شبکه مخابراتی و یا یک دسترسی به حافظه در یک مدل سیستم حافظه باشد. SMPL از دو نوع عملیات اصلی برای کنترل بلیطها در یک سیستم شبیه سازی شده استفاده می کند؛ یک بلیط می تواند یک وسیله را ذخیره کند و یا می تواند فعالیت هایی را با مدت های مختلف زمانبندی کند. اگر یک بلیط بخواهد یک وسیله در حال سرویس را ذخیره کند، وارد یک صف می شود و تا هنگامی که آن وسیله برای آن بلیط دسترس پذیر شود، منتظر می ماند .
بلیطها می توانند دارای اولویتهای مختلفی باشند. در این صورت می توان با دستورات خاصی به بلیطهای با اولیویت بیشتر سریعتر از بلیطهای با اولویت کمتر سرویس داد.
یک رخداد به هر تغییری در وضعیت هر یک از نهادهای سیستم اطلاق می شو . به عنوان مثال اگر یک کار محاسبه در CPU تمام شود و CPU رها شود، دو رخداد اتفاق افتاده است:
اول اینکه یک کار تمام شده است و دیگر اینکه وضعیت CPU عوض شده است. اتمام کار ممکن است با آغاز یک کار دیگر همراه باشد، مثلا رها شدن CPU ممکن است با اجرای یک کار دیگر که قبلا CPU را ذخیره کرده است همراه شود. در زبانهای شبیه سازی برپایه رخداد مانند SMPL کلیه فعالیتهایی که باید در یک لحظه از زمان اتفاق بیافتد را یک رخداد تلقی می کنیم. این مساله در مدلهای کوچک مشکلی را به همراه ندارد ولی در مدلهای بزرگ که باید در یک لحظه از زمان اتفاقات زیادی رخ دهد، سازمان دهی آنها کار مشکلی می باشد .
SMPL توابعی برای زمانبندی رخدادها و انتخاب آنها براساس زمان اجرایشان دارا باشد. در یک سیستم شبیه سازی یک رخداد توسط یک شماره منسوب به آن، زمان شبیه سازی که رخداد باید در آن اتفاق بیافتد و هویت بلیط مربوط به آن مشخص شود.
توابع SMPL که برای شبیه سازی سیستمها بکار می رود را می توان به سه دسته اصلی تقسیم نمود:
۱- آماده سازی اولیه مدل
۲- تعریف و کنترل وسیله
۳- زمانبندی و ایجاد رخدادها
حال به معرفی توابع مهم هر قسمت می پردازیم.
۴-۵-۱- آماده سازی اولیه مدل
۱- smpl(m,s) int m;char *s;
تابع Smpl( ) برای آماده سازی اولیه سیستم برای اجرای شبیه سازی بکار می رود.
m مشخص کننده نوع ارتباط بین کاربر و برنامه می باشد وs نیز یک اشاره گر به نام مدل می باشد.
هنگامی که Smbpl( ) اجرا می شود کلیه مقادیر اندازه گیری در زمان شبیه سازی برابر صفر قرارداده می شود.
۲- reset( )
هنگامی که این تابع اجرا می شود کلیه مقادیر اندازه گیری شده صفر می شوند و زمانی که این تابع صدا شده است به عنوان زمان آغاز اندازه گیری ثبت می شود.
۴-۵-۲ تعریف و کنترل وسیله
۱- f=facility char * s; int n;
این تابع یک وسیله را تولید و نام گذاری می کند و مقدار f را بر می گرداند که توصیف گر وسیله می باشد و برای مشخص کردن وسیله عملیتهای بعدی بکار می رود.
s یک اشاره گر به نام وسیله می باشد که برای مشخص کردن وسیله در گزارش برنامه، دنبال کردن برنامه و پیامهای خطا بکار می رود. n نیز تعداد سرویس دهنده های وسیله رامشخص می کند .
یک وسیله می تواند دارای یک صف و n سرویس دهنده موازی باشد. هنگامی که تقاضا برای ذخیره سازی یک وسیله می رسد، سرویس دهنده های یک تا n به ترتیب چک میشوند و اگر یک سرویس دهنده آزاد پیدا شود برای تقاضای مورد نظر ذخیره می شود. اگر همه سرویس دهنده های وسیله قبلا ذخیره شده اند، تقاضا وارد صف وسیله مورد نظر می گردد. هنگامی که یکی از بلیطهایی که وسیله را ذخیره کرده است آنرا رها کند، تقاضای داخل صف جای آنرا می گیرد. بطور کلی یک وسیله مشغول است اگر همه سرویس دهنده های آن ذخیره شده باشند و مشغول نیست اگر حداقل یکی از سرویس دهنده های آن آزاد باشد.
۲- r = request (f,tkn, pri) int f , tkn , pri
این تابع تقاضا می دهد که یکی از سرویس دهنده های وسیله f برای بلیطی که با tkn مشخص شده است، ذخیره شود. f همان توصیف گر وسیله است که هنگام تولید وسیله توسط تابع facility مشخص شده بود. اولویت بلیط متقاضی توسط pri مشخص میشود. هر چه که مقدار pri بیشتر باشد، اولویت آن نیز بیشتر است. اگر وسیله مشغول نباشد، یک سرویس دهنده برای بلیط متقاضی ذخیره می شود و مقدار صفر برگردانده می شود. اگر وسیله مشغول باشد، تقاضا وارد صف می شود و مقدار یک برگدانده می شود. در برنامه شبیه سازی از مقدار برگردانده شده برای تصمیم گیری در مورد رخدادهای بعدی استفاده می شود. بدین صورت که اگر وسیله ذخیره شود، باید اتمام سرویس بلیط بروی آن وسیله زمانبندی شود و اگر ذخیره نشود ممکن است برنامه رخداد دیگری را انتخاب و اجرا کند.
هر وسیله دارای یک صف می باشد. اگر هنگام یک تقاضا وسیله مشغول باشد، یک ورودی صف برای آن تقاضا درست می شود. این ورودی شامل بلیط، اولویت آن و شماره رخداد حال می باشد و صف هم براساس اولویت سرویس داده می شود، بدین صورت که ورودیهای با الویت یکسان بصورت”ورودی اول ، خروجی اول “ (FIFO) سرویس داده می شوند. هنگامی که تابع
release ( ) یک سرویس دهنده را رها می کند، ورودی اول صف از صف خارج می شود و رخداد آن ورودی به همراه بلیط تقاضای اصلی برای زمان حال شبیه سازی، زمانبندی می شوند. هنگامی
که برنامه تابع cause ( ) را صدا می زند تا رخداد بعدی را انتخاب کند، همان رخدادی که ابتدا تابع request ( ) را اجرا کرده بود، دوباره اجرا میشود و تقاضای جدید وارد سرویس دهنده می شود.
۳- r = preempt (f,tkn,pri) int f, tkn , pri
تابعpreempt ( ) تقاضا می کند که یکی از سرویس دهنده های وسیله f برای بلیط tkn ذخیره شود. pri نیز اولویت بلیط می باشد. اگر وسیله مشغول نباشد، یک سرویس دهنده برای بلیط متقاضی ذخیره می شود و مقدار صف برگردانده می شود.
اگر وسیله مشغول باشد، سرویس دهنده ای که بلیط سرویس گیرنده آن دارای کمترین اولویت می باشد، مشخص می گردد. اگر این اولویت بزرگتر و یا مساوی اولویت بلیط متقاضی باشد، تقاضا وارد صف می شود و مقدار ”یک “ برگردانده می شود. بنابراین هنگامی که وسیله مشغول نباشد یا همه سرویس دهنده های آن با بلیط های با الویت بیشتر از بلیط متقاضی دخیره شده اند Preempt( ) کاملا مثل request( ) عمل می کند.
اگر وسیله مشغول باشد و بلیطه سرویس گیرنده با کمترین اولویت دارای اولیت کمتری از بلیط متقاضی باشد، سرویس بلیط اول قطع می شود و وارد صف می شود و بلیط متقاضی سرویس می گیرد. این عمل بدین صورت انجام می شود که زمان سرویس باقی مانده برای بلیط اول محاسبه شده و هنگامی که این بلیط دوباره وارد یکی از سرویس دهنده ها شد، به اندازه مدت زمان باقی مانده در آن باقی می ماند.
۴- release (f, tkn) int f, tkn
این تابع سرویس دهنده وسیله f که توسط بلیط tkn ذخیره شده است را رها می کند. در هنگام رها کردن یک وسیله، SMPL سرویس دهنده ذخیره شده برای آن بلیط را پیدا می کند و آنرا رها می کند. سپس، صف آن وسیله چک می شود و اگر خالی نباشد، ورودی واقع در اول صف خارج شده و رخداد مربوط به آن برای ایجاد در زمان حال زمانبندی می شود.
۴-۵-۳ – زمانبندی و ایجاد رخدادها
۱- schedule (ev,te,tkn) int ev,tkn ;double te;
این تابع برای زمانبدی یک رخداد بکار می رود. ev شماره رخداد و te مدت زمان ایجاد رخداد از زمان حال می باشد. tkn نیز بلیط مربوط به رخداد می باشد .
schedule ( ) مقدار te را به زمان حال اضافه می کند تا زمان اتفاق رخداد را بدست آورد. سپس در لیست رخدادها یک ورودی شامل شماره رخداد، زمان اتفاق رخداد و بلیط درست می کند.
لیست رخدادها بدین صورت می باشد که رخدادهای بازمان اتفاق کمتر در ابتدای لیست قرار دارند و اگر چند رخداد دارای زمان اتفاق برابر باشند، رخدادی که زودتر وارد لیست شده است در ابتداقرار می گیرد.
۲- cause (ev, tkn) int * ev, * tkn;
cause( ) ورودی واقع در ابتدای لیست رخدادها را بر می دارد، زمان شبیه سازی را تا زمان وقوع آن رخداد جلو می برد و شماره رخداد ev و بلیط tkn را بر می گرداند .
۳- tkn = cancel(ev) int * ev;
cancel( ) در لیست رخدادها به جستجوی رخداد ev می پردازد، اگر آنرا پیدا نکند مقدار ”1-“ برمی گرداند. اگر آنرا پیدا کند، ورودی مربوطه را از لیست رخدادها بر می دارد و شماره بلیط مربوط به آن ورودی را بر می گرداند. اگر چندین نمونه ازرخداد ev در لیست رخدادها موجود باشد، فقط اولین ورودی برداشته می شود.
توابعی که معرفی شدند اساسی ترین ابزارهای لازم برای شبیه سازی توسط زبان SMPL می باشند. لیست کامل تابع و توضیحات مربوطه به آنها در ]۱۱[ موجود می باشد.
۴-۶- مدلهای ترافیکی
برای انجام هر گونه شبیه سازی بر روی یک سوئیج باید به آن ترافیک داده اعمال نمود. تا کنون مدلهای ترافیکی گوناگونی معرفی شده اند که در شبیه سازی های این پروژه از سه نوع آن استفاده خواهیم نمود.
۴-۶-۱- ترافیک برنولی یکنواخت
ترافیک برنولی یکنواخت (i.i.d) ترافیکی است که در آن داده ها بصورت مستقل از یکدیگر تولید می شوند. در این مدل طول هر بسته برابر با یک سلول در نظر گرفته شده است و احتمال تولید سلول در هربازه زمانی برابر با درصد بار می باشد. مثلا در زیر بار۸۰% در هر بازه زمانی با احتمال ۸/۰ یک سلول تولید می شود. مقصد سلولها نیز بطور کاملاً تصادفی از بین یکی از پورتهای خروجی انتخاب می شود.
این مدل ساده ترین مدل ترافیکی می باشد که تقریبا در همه مراجع به عنوان یکی از انواع ترافیک ورودی مورد استفاده قرار می گیرد.
۴-۶-۲- ترافیک زنجیره ای
ترافیکی که در شبکه موجود می باشد، معمولاً بصورت زنجیره ای است. این زنجیره ممکن است مربوط به انتقال یک فایل بزرگ و یا یک جریان ویدیوئی باشد. برای تولید ترافیک زنجیره ای از زنجیره مارکوف دو حالته بصورت روشن یا خاموش استفاده شده است. همانطور که در شکل ۴-۱ نشان داده شده است این زنجیره شامل دو حالت روشن و خاموش می باشد که احتمال رفتن از حالت روشن به خاموش برابر P و ا حتمال رفتن از حالت خاموش به حالت روشن برابر q می باشد.
همانطور که در ]۱۲[ نشان داده شده است برای تولید ترافیک زنجیره ای با طول B و تحت بار پارامترهای q و p را می توان از روابط زیر بدست آورد:
شکل ۴-۱- زنجیره مارکوف دو حالته برای تولید ترافیک
از این مدل ترافیک زنجیره ای در مراحل مختلف شبیه سازی سوئیچ به عنوان ترافیک اعمالی استفاده خواهیم کرد.
۴-۶-۳- ترافیک آماری
برای مدل سازی هرچه واقعی تر ترافیک شبکه، انداز ه گیریهایی بصورت آماری برروی خط های اینترنت در جاهای مختلف دنیا انجام گرفته است.
با توجه به اطلاعات موجود در یک نمونه از این اندازه گیریها ]۱۳[ شامل طول بسته ها و تعداد بسته های مربوط به جریان های اینترنتی نمودار شکل ۴-۲ رسم شده است.
بعد از مدل کردن قسمتهای مختلف سوئیچ، از این ترافیک برای بررسی عملکرد سوئیچ استفاده خواهیم نمود.
شکل ۴-۲- نمودار افزایش طول بسته های شبکه
۴-۷- مدلسازی کارت خط در ورودی
همانطور که ذکر شد در هنگام مدل کردن کارت خط فرض می کنیم که داده ها را بصورت بستههای IP (همراه با سرفصل Shim) دریافت می کنیم. اگر سوئیچ در لبه شبکه باشد (LER) باید علاوه بر عملکرد MPLS، توانایی انجام پردازش های سرفصل لایه IP را نیز دارا باشد، بعبارت دیگر سوئیچ های MPLS لبه شبکه باید توانایی قسمت های هدایت به جلوی یک مسیریاب IP را داشته باشند. بنابراین کلیه نتایجی که در شبیه سازی یک سوئیچ (LSR) MPLS بدست می آید برای سوئیچهای لبه شبکه (LER) نیز معتبر است. ولی باید این نکته را در نظر داشت که برای سوئیچهای لبه شبکه (LER) عملیات پردازش سرفصل لایه IP که در مسیریاب های IP انجام میشود باعث افزایش تاخیر بسته های اطلاعاتی خواهد شد.
بنا به آنچه در فصلهای گذشته درباره MPLS و وظایف یک سوئیچ بیان شد، مدل زیر را برای کارت خط در ورودی یک سوئیچ MPLS ارائه میدهیم:
۱- درهر پورت ورودی، بسته های IP همراه با سرفصل Shim که حاوی اطلاعات مربوط به برچسب ورودی، کلاس سرویس پشته برچسب، و زمان زندگی (TTL) می باشد، دریافت میشود.
۲- حوزه TTL سرفصل Shim مورد بررسی قرار می گیرد (هشت بیت )، اگر مقدار آن برابر صفر بود، بسته فاقد اعتبار می باشد و از آن صرفنظر می شود. در غیر اینصورت از مقدار آن یک واحد کاسته می شود.
۳- مقدار برچسب ورودی (بیست بیت ) استخراج شده و بوسیله جدولی که توسط قسمت کنترل برای هر پورت تهیه می شود، مقدار برچسب خروجی و شماره پورت خروجی تعیین میگردد. از آنجا که در شبیه سازی یک سوئیچ اطلاعات مربوط به شبکه وجود ندارد، این مقادیر با توجه به نوع ترافیک ورودی تعیین می شوند، مثلا در ترافیک زنجیره ای به همه بسته های مربوط به یک زنجیره برچسب خروجی یکسان داده می شود و همگی به یک پورت خروجی می روند.
۴- بسته ها به سلولهای ۶۴ بایتی شکسته می شوند و ۱۰ بایت به عنوان سرفصل به آنها اضافه میشود که در قسمت خروجی کارت خط برداشته خواهد شد. این سرفصل بنا به استاندارد مورد استفاده بین کارت خط و فابریک سوئیچ می تواند متفاوت باشد ولی اطلاعات مربوط به پورت ورودی، پورت خروجی، کلاس سرویس و شماره سلولها را دارا می باشد.
۵- سلولها با توجه به مقدار کلاس سرویسشان در VOQ مربوطه قرار می گیرند. این کار ممکن است بطور مستقیم و یا با کمک الگوریتمهایی با تخصیص عرض باندهای مختلف به کلاسهای مختلف صورت بگیرد. در قسمت های بعدی هر دو این حالات را بررسی خواهیم کرد.
۴-۸- مدلسازی فابریک سوئیچ
فابریک سوئیچ عامل اصلی محدودیت در گذردهی و افزایش تاخیر بسته ها در یک سوئیچ میباشد. در فصل گذشته بعد از بررسی انواع فابریک سوئیچ ها، به عنوان بهترین انتخاب، تصمیم به استفاده از فابریک سوئیچ متقاطع با صف بندی در ورودی همراه با VOQ گرفته شد. همچنین الگوریتم iSLIP به عنوان یک الگوریتم زمانبندی ساده، سریع و با گذردهی بالا که بطور وسیعی مورد استفاده قرار می گیرد، معرفی شد که در اینجا به توضیح آن می پردازیم.
۴-۸-۱- الگوریتم iSLIP
iSLIP یک الگوریتم تکرار شونده میباشد که در طی هر بازه زمانی چندین تکرار صورت میگیرد تا یک شکل از تطبیق ورودیها و خروجیها پیدا شود. الگوریتم iSLIP با استفاده از اولویت چرخشی هر یک از ورودیها و خروجیهای فعال را به نوبت برای ارسال اطلاعات انتخاب میکند. مهمترین خاصیت iSLIP سادگی آن میباشد که باعث میشود به راحتی قابل پیادهسازی در سختافزار باشد و در سرعتهای بالا کار کند.
الگوریتم iSLIP به رغم سادگیش دارای بازده زیادی میباشد. اما مهمترین خواص این الگوریتم عبارتند از:
۱- گذردهی بالا: برای ورودیهای یکنوا و ناهمبسته گذردهی سوئیچ تقریبا ۱۰۰% میباشد.
۲- بدون گرسنگی: هیچ یک از صفها بدون سرویس نمیماند. از آنجا که اشارهگرها فقط در تکرار اول مقدارشان تجدید میشود، یک خروجی آنقدر با تقاضای ورودی دارای اولویت موافقت میکند تا آن اتصال برقرار شود.
۳- سریع: الگوریتم iSLIP حداکثر در N تکرار به همگرایی میرسد. اما در عمل نشان داده شده است که تعداد تکرارهای لازم برای همگرایی کمتر از (N) میباشد. بعنوان مثال برای یک سوئیچ ۱۶×16 با چهار تکرار میتوان به همگرایی رسید.
۴- قابلیت پیاده سازی آسان: یک زمانبند iSLIP شامل 2N کد کننده قابل برنامهریزی است که براحتی قابل پیاده سازی است.
در شکل ۴-۴ عملکرد iSLIP با یک و چهار تکرار در یک سوئیچ ۱۶×16 تحت ترافیک برنولی و ترافیک زنجیره ای با طول ۳۲ نشان داده شده است. تاخیر سلولها بر حسب زمان سلول (زمان لازم برای انتقال یک سلول ) رسم شده است و بار اعمالی نسبت به یک سوئیچ با گذردهی ۱۰۰% در نظر گرفته شده است.
تحت ترافیک برنولی، iSLIP با یک تکرار (۱SLIP) و iSLIP با چهار تکرار (۴SLIP) هر دو گذردهی ۱۰۰% دارند ولی تاخیر سلولها در ۴SLIP خیلی کمتر از ۱SLIP است.
تحت ترافیک زنجیره ای برای بار حدود ۹۰% ، ۱SLIP ناپایدار می شود، در حالیکه ۴SLIP علی رغم افزایش تاخیر سلولها، گذردهی ۱۰۰% دارد. بنابراین با log2N تکرار در یک سوئیچ N×N اگر چه هنگامی که ترافیک ورودی زنجیره ای می باشد سلولها زمان زیادی در صف منتظر میمانند، الگوریتم iSLIP گذردهی ۱۰۰% خود را حفظ می نماید که با توجه به ویژگیهای سادگی و قابلیت پیاده سازی سخت افزاری آن یک الگوریتم مناسب برای فابریک سوئیچ ها می باشد.
اما هنگامی که ترافیک شبکه دارای چندین کلاس سرویس می باشد، فابریک سوئیچ و الگوریتم زمانبدی آن باید قادر به پشتیبانی کلاسهای سرویس مختلف باشند. این کار با استفاده از مشتقات iSLIP مانند iSLIP اولویت دار که به کلاس های سرویس بالاتر اولویت عبور می دهد و یا الگوریتمهایی که به کلاسهای بالاتر وزن بیشتری میدهند مانند iSLIP دارای وزن ، قابل انجام می باشد. الگوریتمهای دارای وزن اگرچه از نظر تئوری بازده خوبی دارند، بعلت پیچیدگی زیاد عملاً امکان پیاده سازی آنها وجود ندارد.
شکل ۴-۴- عملکرد الگوریتم iSLIP با یک و چهار تکرار در یک سوئیچ ۱۶×16 تحت ترافیک برنولی و زنجیره ای با طول ۳۲
الگوریتم iSLIP اولویت دار که با افزودن تغییراتی به الگوریتم iSLIP بدست می آید، دارای همان ویژگیهای سادگی، سرعت و بازده بالا می باشد و در نتیجه برای استفاده در سوئیچهایی که به منظور پشتیبانی کلاسهای سرویس ساخته می شوند مورد توجه قرار گرفته است. اما در زیربار زیاد، برخلاف iSLIP معمولی، بازده iSLIP اولویتدار به شدت کاهش می یابد. در این جا ابتدا به معرفی الگوریتم iSLIP اولویت دار می پردازیم، سپس دلایل کاهش بازده آن را مورد بررسی قرار می دهیم و سرانجام به ارائه راه حل هایی برای حل این مشکل خواهیم پرداخت.
۴-۸-۲- الگوریتم iSLIP اولویت دار
هنگامی که ترافیک ورودی دارای چندین اولویت می باشد، iSLIP معمولی با تغییراتی به iSLIP اولویت دار تبدیل می شود. دراین حالت هر ورودی یک صف FIFO جداگانه برای هر سطح اولویت و هر خروجی دارد. این بدین معنی است که برای یک سوئیچ N×N با P سطح اولویت هر ورودی N×P صف FIFO دارد. صفi,j))Ql که صف بین ورودیi و خروجی j در سطح l می باشد تنها در صورتی سرویس می گیرد که کلیه صفهای Qm(i,j) که l
۲- موافقت : اگر خروجی j تقاضایی دریافت کند، تقاضای با بالاترین سطح را پیدا می کند (به عنوان مثال :(L(j)=maxi(lij). خروجی j سپس یک ورودی را از میان ورودی های متقاضی در سطح L(j) انتخاب می کند. هر خروجی یک اشاره گر جداگانه gjl برای هر سطح اولویت دارد. هنگام انتخاب ورودی ها در سطح L(j)، خروجی j با استفاده از اشاره گر gjL(j) و سیستم نوبتی چرخشی مانند حالتiSLIP معمولی عمل می کند. خروجی j سپس به هر ورودی اطلاع می دهد که با تقاضایش موافقت شده است یا نه. اشاره گر gjL(j) به یک نوبت بعد از ورودی که با تقاضای آن موافقت شده است تغییر پیدا می کند اگر و فقط اگر آن ورودی خروجی j را در مرحله سوم از تکراراول الگوریتم بپذیرد.
۳- پذیرش : اگر ورودی i موافقتی دریافت کند، موافقت با بالاترین سطح را پیدا می کند (به عنوان مثال :(i)=maxj(lij) ). ورودی i سپس یک خروجی را از میان خروجی های موافقت کننده در سطح (i) انتخاب می کند. هر ورودی یک اشاره گر جداگانه ail برای هر سطح اولویت دارد. هنگام انتخاب خروجی ها در سطح (i) ورودی i با استفاده از اشاره گر aiL′(i) و سیستم نوبتی چرخشی مانند قبل عمل می کند. ورودی i سپس به هرخروجی اطلاع می دهد که موافقت ارسالیش مورد پذیرش قرار گرفته است یا نه. اشاره گر aiL′(i) به یک نوبت بعد از خروجی که مورد پذیرش قرار گرفته، افزایش می یابد اگر این تکرار اول الگوریتم باشد.
شکل ۴-۵ عملکرد الگوریتم iSLIP اولویت دار با دو سطح اولویت و چهار تکرار را در یک سوئیچ ۱۶×16 تحت ترافیک برنولی و زنجیره ای با طول ۳۲ نشان می دهد.
شکل ۴-۵- عملکرد الگوریتم iSLIP اولویت دار با دو سطح اولویت و چهار تکرار در یک سوئیچ ۱۶×16 تحت ترافیک برنولی و زنجیره ای با طول ۳۲
در این اندازه گیری فرض شده است که ۱۰% سلولها دارای اولویت بالا (اولویت یک) و۹۰% سلولها دارای اولویت پایین (اولویت دو) می باشند. این موضوع تقریبا به این واقعیت نزدیک است که ترافیک سیگنالنیگ و کاربردهای زمان حقیقی که معمولاً در اولویت یک قرار میگیرند کمتر از 5% حجم کل ترافیک شبکه را تشکیل می دهند که در بدترین حالات ممکن است به ۱۰% برسد.
اگر چه عملکرد iSLIP اولویت دار تحت ترافیک برنولی قابل قبول می باشد، هنگامی که ترافیک ورودی بصورت زنجیره ای می باشد برای بارهای حدود ۸۸% الگوریتم، ناپایدار می شود. برای توجیه این ضعف درعملکرد iSLIP اولویت دار، یک سوئیچ ۸×8 را در نظر می گیریم. الگوریتم iSLIP برای این سوئیچ باید در سه تکرار به همگرایی برسد (۳=۸ log2 ).
اگر فرض کنیم ترافیک ورودی بصورت زنجیره ای باشد و حجم ترافیک اولویت یک کمتر از اولویت دو باشد (مثلاً ۱۰% برای اولویت یک و ۹۰% برای اولویت دو)، با بررسی وضعیت سوئیچهای زیر بار شبکه و یا با استفاده از شبیه سازی می بینیم که مدتی پس از شروع به کار سوئیچ، تقریباً همه پورتهای ورودی، سلولهای با اولویت دو برای هر یک از پورتهای خروجی دارند. این بدین معنی است که تقریباً همه VOQ های سطح دو حداقل یک سلول برای ارسال دارند.
دراین حالت اگر یک زنجیره از سلولهای با اولویت یک مثلاً از ورودی ۴ به خروجی ۶ بیاید، اشاره گرهای موافقت سطح دو همه خروجی ها (۲(gj، بجز خروجی ۶، آنقدر با تقاضاهای سطح دراین حالت اگر یک زنجیره از سلولهای با اولویت یک مثلاً از ورودی ۴ به خروجی ۶ بیاید، اشاره گرهای موافقت سطح دو همه خروجی ها (۲(gj ، بجز خروجی 6، آنقدر با تقاضاهای سطح
شکل ۴-۶- مثالی از وضعیت همزمانی در یک سوئیچ ۸×8
دو ورودی ها موافقت می کنند و مقدارشان تغییر پیدا می کند تا به ورودی ۴ برسند. هنگامی که 4=2gj ، تا زمانی که زنجیره سطح یک از ورودی ۴ به خروجی ۶ ادامه دارد، همان مقدار ۴ باقی میماند. این وضعیت که به آن وضعیت همزمانی می گوییم و در شکل ۴-۶ نشان داده شده است، به این علت بوجود می آید که ورودی ۴ برای همه خروجی ها سلول سطح دو دارد، بنابراین یک تقاضای سطح یک به خروجی ۶ وهفت تقاضای سطح دو به بقیه خروجیها می فرستد. خروجی ۶ با تقاضای سطح یک ورودی ۴ موافقت می کند و از آنجا که اشاره گر موافقت سطح دو بقیه خروجیها به ورودی ۴ رسیده است، آنها هم به ورودی ۴ در سطح دو موافقت می فرستند. در میان این موافقت ها ووردی ۴ موافقت سطح یک خروجی ۶ را می پذیرد و بنابراین در تکرار اول فقط یک ارتباط بین ورودی ۴ و خروجی ۶ در سطح یک پیدا می شود. اشاره گر موافقت سطح یک خروجی ۶ به مقدار ۵ و اشاره گر پذیرش سطح یک ورودی ۴ هم به مقدار ۷ تغییر پیدا خواهد کرد، اما از آنجا که جریان سطح یک دیگری وجود ندارد، در بازه های زمانی بعدی نیز همین ارتباط برقرار خواهد شد.
در تکرار دوم تقاضاهای ورودی ۴ و تقاضاهایی که برای خروجی ۶ هستند در نظر گرفته نخواهند شد. بنابراین هر هفت خروجی باقی مانده با تقاضای ورودی ۵ موافقت می کنند. در میان این موافقت ها ورودی ۵ فقط یک موافقت را می پذیرد که در این مثال خروجی ۳ می باشد. بنابراین در تکرار دوم یک ارتباط سطح دو بین ورودی ۵ و خروجی ۳ پیدا می شود.
به طور مشابه در تکرار سوم هر شش خروجی باقی مانده با تقاضای ورودی ۶ موافقت می کنند که ورودی ۶ فقط موافقت خروجی که برابر اشاره گر پذیرش آن می باشد را می پذیرد. در این مثال این خروجی، خروجی شماره ۸ می باشد. بنابراین در تکرار سوم یک ارتباط سطح دو دیگر بین ورودی ۶ و خروجی ۸ پیدا می شود. می بینیم که هنگامی که الگوریتم در وضعیت همزمانی است، از هشت ارتباط ممکن فقط سه ارتباط می تواند برقرار کند.
از آنجا که اشاره گرها فقط در تکرارهای اول می تواند مقدارشان عوض شود، اشاره گرهای موافقت سطح دو خروجی ها همان مقدار ۴ باقی می ماند و تا وقتی که زنجیره سلولهای سطح یک از ورودی ۴ به خروجی ۶ تمام شود، الگوریتم در هر بار فقط ۳ ارتباط می تواند برقرار کند.
در واقع بدون توجه به این که چند سطح اولویت در سوئیچ وجود دارد، چنین زنجیره های با سطح اولویت بالا میتواند باعث همزمانی اشاره گرهای موافقت سطوح پایین تر شود. حتی در سوئیچهای با تعداد پورتهای بیشتر، اگر فقط تعدادی از اشاره گرهای موافقت بر روی یک ورودی قفل شوند، تعداد ارتباطها کاهش شدید می یابد. چنین حالتهای همزمانی مکررا اتفاق می افتند و دلیل اصلی برای کاهش بازده iSLIP اولویت دارهستند. حال به بررسی راه های ممکن برای حل این مشکل می پردازیم.
اگر اشاره گرها در هر تکرار مقدارشان تغییر پیدا کند، الگوریتم هرگز در وضعیت همزمانی گرفتار نخواهد شد. اما در ]۹[ نشان داده شده است که اگر اشاره گرها در هر تکرار مقدارشان تغییر پیدا کند، ممکن است در بعضی پورتها پدیده گرسنگی اتفاق بیافتد.
یک روش دیگر این است که اشاره گرهای موافقت بعد از هر موافقت مقدارشان تغییر پیدا کند، بدون توجه به اینکه این موافقت در مرحله سوم پذیرفته شود یا نه، این الگوریتم همان الگوریتم تکرار شونده Round–Robin می باشد که بازده آن نزدیک به iSLIP می باشد، اما در ]۹[ نشان داده شده است که این الگوریتم نیز مشکل گرسنگی دارد و استفاده از الگوریتمی که دارای چنین مشکلی باشد، هرگز توصیه نمی شود.
افزایش تعداد تکرارها راه حل دیگری است که می تواند برای رفع این مشکل مفید باشد. با افزایش تعداد تکرارها، هنگامی که الگوریتم در وضعیت همزمانی گرفتار شده است، به ازای هر تکرار اضافی یک ارتباط به ارتباط های قبلی اضافه خواهد شد. شبیه سازی ها نشان می دهد که افزایش تعداد تکرارها از log2N به log2N2 می تواند این مشکل را برطرف کند و عملکرد iSLIP اولویت دارا را بهبود بخشد.
شکل ۴-۷- عملکرد iSLIP اولویت دار با هشت تکرار را در یک سوئیچ ۱۶×16 نشان میدهد. برخلاف ۴SLIP اولویت دار، ۸SLIP اولویت دار حتی تحت ترافیک زنجیره ای نیز برای بارهای حدود ۱۰۰% پایدار است. بنابراین با دو برابر کردن تعداد تکرارها، عملکرد iSLIP اولویت دار قابل قبول خواهد شد اما زمان اجرای الگوریتم نیز دو برابر می شود و این مساله در سرعتهای بالا که فرصت کمی برای زمانبندی سلولها، وجود دارد مشکل ساز خواهد شد. به عنوان یک پیشنهاد برای حل این مشکل در قسمت بعد به معرفی الگوریتم iSLIP اولویت دار بهنیه خواهیم پرداخت.
شکل ۴-۷- عملکرد الگوریتم iSLIP اولویت دار با دو سطح اولویت و هشت تکرار در یک سوئیچ ۱۶×16 تحت ترافیک برنولی و زنجیره ای با طول ۳۲
۴-۸-۳- الگوریتم iSLIP اولویت دار بهینه
ایده الگوریتمiSLIP اولویت دار بهینه براساس یک تغییر ساده ولی بسیار موثر در الگوریتم iSLIP اولویت دار می باشد. اگر هنگام تغییر دادن مقادیر اشاره گرها، نیمی از آنها را درجهت افزایشی و نیم دیگر را در جهت کاهشی تغییر دهیم عملکرد الگوریتم به مقدار زیادی بهبود می یابد این بدین معنی است که باید ورودی ها و خروجی ها را به دو دسته تقسیم نمود، مثلا ورودی ها و خروجی های با شماره فرد و ورودی ها و خروجی های با شماره زوج. هنگامی که یک اشاره گر موافقت باید مقدارش تغییر پیدا کند، به یک مقدار بعد از ورودی که با تقاضای آن موافقت شده افزایش می یابد اگر متعلق به یک خروجی فرد باشد و یا به یک مقدار قبل از ورودی که با تقاضای آن موافقت شده کاهش می یابد اگر متعلق به یک خروجی زوج باشد. بطور مشابه هنگامی که یک اشاره گر پذیرش باید مقدارش تغییر پیدا کند، به یک مقدار بعد از خروجی که پذیرفته شده افزایش می یابد اگر متعلق به یک ورودی فرد باشد و یا به یک مقدار قبل از خروجی پذیرفته شده کاهش می یابد اگر متعلق به یک ورودی زوج باشد.
هنگامی که از الگوریتمiSLIP اولویت دار بهینه استفاده می شود، باز هم الگوریتم در وضعیت همزمانی گرفتارمی شود، اما این بار تعداد ارتباطهای بیشتری برقرار خواهد شد. دلیل این موضوع هم واضح می باشد، مثلا در شکل ۴-۶ الگوریتم iSLIP اولویت دار بهینه در تکرار اول همان یک ارتباط را پیدا میکند اما در تکرار دوم خروجی های فرد (۱،۳،۵،۷) به ورودی ۵ موافقت ارسال میکنند و خروجی های زوج باقیمانده (۲،۴،۸) به ورودی ۳ موافقت ارسال می کنند. بنابراین در تکرار دوم، دو ارتباط سطح دو بین ورودی ۳ و خروجی ۲ و همچنین ورودی ۵ و خروجی ۳ پیدا خواهد شد. به همین ترتیب در تکرار سوم هم دو ارتباط سطح دو دیگر بین ورودی ۲ و خروجی ۸ و همچنین ورودی ۶ و خروجی ۷ پیدا خواهد شد. پس می بینیم که تعداد ارتباطها از سه ارتباط برای iSLIP اولویت دار به پنج ارتباط برای iSLIP اولویت دار بهینه افزایش پیدا کرده است. در وضعیت های همزمانی مشابه نیز iSLIP اولویت دار بهینه تعداد ارتباط های بیشتری را برقرار خواهد کرد و باعث بهبود عملکرد خواهد شد.
شکل ۴-۸ عملکرد الگوریتم iSLIP اولویت دار بهینه را در یک سوئیچ ۱۶×16 نشان می دهد. مشاهده می شود که بر خلاف iSLIP اولویت دار که برای بارهای حدود ۸۸% به ناپایداری میرسد،iSLIP اولویت دار بهینه برای بارهای تا حدود ۱۰۰% پایدار باقی می ماند. از آنجا که عملکرد این الگوریتمها برای سلولهای اولویت یک مشابه می باشد، در شکل ۴-۹ عملکرد iSLIP اولویت دار با چهار و هشت تکرار و iSLIP اولویت دار بهینه با چهار تکرار برای سلولهای اولویت دو تحت ترافیک زنجیره ای مقایسه شده است. می توان این گونه نتیجه گرفت که عملکرد iSLIP اولویت دار بهینه با log2N تکرار تقریباً مشابه عملکرد iSLIP اولویت دار با log2N2 تکرار می باشد.
البته در حالت معمولی آن، iSLIP بهینه عملکردی مشابه iSLIP معمولی دارد. این بدین علت است که وقتی فقط یک سطح اولویت وجود دارد هر ورودی (یاخروجی) فقط یک اشاره گر پذیرش (یا موافقت ) دارد و دیگر وضعیت همزمانی مانند شکل ۴-۶ بوجود نخواهد آمد. بنابراین دیگر تغییر مقدار اشاره گرها در دو جهت مختلف تاثیری در عملکرد الگوریتم نخواهد داشت. iSLIP بهینه هم مانند iSLIP الگوریتمی بدون گرسنگی می باشد زیرا هر ورودی آنقدر برای یک خروجی تقاضا می فرستد تا آن ارتباط برقرار شود.
شکل ۴-۸- عملکرد الگوریتم iSLIP اولویت دار بهینه با دو سطح اولویت و چهار تکرار در یک سوئیچ ۱۶×16 تحت ترافیک برنولی وزنجیره ای با طول ۳۲
اگر چه عملکرد iSLIP اولویت دار بهینه خیلی بهتر از iSLIP اولویت دار می باشد، بخاطر ساختار مشابه، هیچگونه پیاده سازی سخت افزاری اضافی برای iSLIP اولویت دار بهینه لازم نمیباشد و کلیه خواص سادگی، سرعت بالا و پیاده سازی آسان در آن وجود دارد. بنابراین در مدل سوئیچ MPLS از الگوریم iSLIP اولویت دار بهینه استفاده خواهیم کرد.
شکل ۴-۹- مقایسه عملکرد الگوریتم iSLIP اولویت دار با چهار و هشت تکرار با الگوریتم iSLIP اولویت دار بهینه با چهار تکرار برای سلولهای اولویت دو در یک سوئیچ ۱۶×16 تحت ترافیک زنجیره ای با طول ۳۲
۴-۹- مدلسازی کارت خط در خروجی
بعداز اینکه سلولها از فابریک سوئیچ عبور می کنند، وارد صفهای خروجی فابریک سوئیچ میشوند. فابریک سوئیچ می تواند در هرپورت خروجی یک صف داشته باشد که در این صورت هرگاه سلول آخر یک بسته وارد صف شد، کارت خط با توجه به شماره سلولها پورت ورودی و کلاسشان آنها را از صف بر می دارد و به قسمت سرهم کردن سلولها می فرستد. فابریک سوئیچ می تواند در خروجی به اندازه VOQ های ورودی صف داشته باشد که در این صورت هرگاه به یکی از صفهای یک پورت خروجی سلول آخر بسته وارد شد، سلولهای آن صف به قسمت سرهم کردن فرستاده می شوند. ساختار صفهای خروجی فابریک سوئیچ هر نوع که باشد، کارت خط در خروجی باید به ترتیب مراحل زیر را انجام دهد :
۱- سلولها از فابریک سوئیچ تحویل گرفته می شوند و هنگامی که سلول آخر یک بسته دریافت شد، آنها به قسمت سرهم کردن سلولها فرستاده می شوند. در آنجا سرفصل سلولها برداشته می شود وسلولها کنار هم قرار داده میشوند تا بسته ها به همان صورت اول درست شوند.
۲- بسته ها براساس کلاس سرویسشان به صفهای مربوطه در خط خروجی فرستاده می شوند.
۳- زمانبند لیک خروجی با توجه به الگوریتم زمانبدی بکار رفته، بسته ها را برای ارسال روی خط خروجی می فرستد. این بسته ها بعد از عبور از مدولاتورهای لایه دو و لایه فیزیکی روی خط انتقال می روند.
برای زمانبندی در خط خروجی الگوریتمهای متنوعی ارائه شده اند که معروفترین آنها WRR و DWRR می باشند.
۴-۹-۱ – الگوریتم WRR1
در این روش برای هر کلاس سرویس یک صف در هر پورت خروجی در نظر گرفته می شود و بسته ها بعد از عبور از قسمت سرهم بندی وارد صف مربوطه می شوند.
در روش WRR به هر صف درصدی از پهنای باند خط خروجی اختصاص داده می شود که مبنای آن تعداد بسته هایی است که در هر نوبت از هر صف می تواند روی خط خروجی برود. به عنوان مثال اگر دو کلاس سرویس مختلف در سوئیچ وجود داشته باشد، در هر خط خروجی دو صف وجود خواهد داشت که با توجه به مقدار ترافیک هر یک از کلاسها و مشخصات تاخیر و جیتر لازم برای هر کلاس، درصدی از پهنای باند به هر یک از صفها اختصاص خواهد یافت. اگر ۴۰% پهنای باند را به کلاس یک و ۶۰% پهنای باند را به کلاس دو اختصاص دهیم در این صورت باید به یک چنین نسبتی ازهر یک از صفها بسته برداشته شود، مثلاً دو بسته از صف کلاس یک و سه بسته از صف کلاس دو.
WRR به سادگی قابل پیاده سازی می باشد و در کاربردهایی که طول بسته ها ثابت می باشد (مانند ATM )، عملکردبسیار خوبی دارد، ولی از آنجا که طول بسته های IP متغیر میباشد، اختصاص پهنای باند براساس تعداد بسته ها نمی تواند روش مطمئنی برای تضمین کیفیت سرویس کلاسهای مختلف ترافیک باشد. از این رو به بررسی الگوریتم DWRR می پردازیم.
۴-۹-۲- الگوریتم DWRR
الگوریتم DWRR که برای رفع مشکل WRR در کاربردهای با بسته های با طول متغیر پیشنهاد شده است برای هر کلاس مختلف یک صف مجزا در هر پورت در نظر می گیرد و به هر صف چندین متغیر نسبت داده می شود.
۱- وزن هر صف که مشخص کننده درصدی از پهنای باند اختصاص یافته به آن است.
۲- میزان سرویس که متناسب با وزن هر صف میباشد و به واحد بایت می باشد. اگر میزان سرویس یک صف دو برابر صف دیگر باشد، آنگاه وقتی هر دو صف بسته برای ارسال دارند، صف اول دو برابر صف دوم پهنای باند در اختیار خواهد داشت.
۳- DC که مشخص کننده کل بایتهایی است که یک صف در یک نوبت می تواند ارسال کند. DC به صفی که در نوبت قبلی نتوانسته بود که بسته خود را ارسال کند (بعلت اینکه طول بسته از مقدار DC بیشتر بود) اجازه می دهد که اعتبار ارسال برای خود ذخیره کند و از آن در نوبت بعد استفاده کند.
هنگام اجرای الگوریتم DWRR، زمانبند هر یک از صفهایی که بسته در آنها وجود دارد را چک می کند و تعداد بایتهای بسته سر صف را در نظر می گیرد. DC صف را به اندازه میزان سرویس آن صف افزایش می دهد. اگر اندازه بسته سرصف از مقدار DC بیشتر باشد، زمانبد آن صف را رها کرده و به صف بعدی می رود. اگر اندازه بسته سر صف مساوی یا کمتر از مقدار DC باشد، آنگاه مقدار DC به اندازه تعداد بایتهای بسته کاهش می یابد و بسته ارسال می شود. این کار آنقدر ادامه می یابد تا اندازه بسته سرصف از مقدار DC بیشتر شود یا صف خالی شود. اگر صف خالی شود مقدار DC آن صفر می شود و زمانبند به صف بعدی می رود.
با کمک الگوریتم DWRR صفها بصورت دقیق به اندازه وزن اختصاص یافته به آنها سرویس می گیرند و از آنجا که DWRR براحتی قابل پیاده سازی در سخت افزار می باشد، در این پروژه از این الگوریتم برای زمانبندی بسته ها در خط خروجی استفاده خواهیم کرد.
فصل پنجم
شبیه سازی کل سوئیچ
۵-۱- مقدمه
همانطور که در فصلهای گذشته ذکر شد در MPLS سه بیت برای کلاس سرویس در نظر گرفته شده است که بوسیله آنها می توان هشت نوع کلاس مختلف را مشخص نمود. در حال حاضر تلاشهای زیادی در جهت تهیه یک استاندارد واحد برای کلاس های مختلف سرویس درحال انجام می باشد و تا کنون نیز تقسیم بندی های متفاوتی ارائه شده است که در اکثر آنها ترافیک شکبه به انواع هدایت سریع (EF) ، هدایت مطمئن (AF) و بهترین تلاش (Best effort) تقسیم بندی میشود. تفاوت بین انواع تقسیم بندی ها معمولاً در تعداد تقسیماتی است که در داخل این انواع ترافیک صورت می گیرد. به عنوان مثال در یکی از تقسیم بندی ها که برای سرویسهای متمایز پیشنهاد شده است دوازده تقسیم بندی در داخل ترافیک AF تعریف شده است (بصورت چهار کلاس با سه اولویت حذف ) با این توضیحات برای تولید ترافیک برای انجام عملیات شبیه سازی در این پروژه کلاس های MPLS را بصورت زیر در نظر خواهیم گرفت:
کلاس یک : EF
کلاس دو : ,x)1AF( ؛ 3،۲،۱ x=
کلاس سه : ,x)2AF( ؛ 3،۲،۱ x=
کلاس چهار : Best effort
ترافیک EF شامل ترافیک سیگنالینگ و کاربردهای زمان حقیقی مانند ویدوئو و یا صوت می باشد. این نوع ترافیک چیزی کمتر از ۵% کل حجم ترافیک شبکه را تشکیل می دهد که ما در اینجا با کمک روشهای کنترل جریان حداکثر تا ۸% پهنای باند ورودی را به آن اختصاص خواهیم داد.
ترافیک AF که بصورت,x)1AF( و,x) 2AF( نشان داده شده است، شامل دو کلاس مختلف در داخل ترافیک AF با سه اولویت حذف برای هر کدام از آنها می باشد (x نشان دهنده اولویت حذف هر یک از کلاسها می باشد). حداکثر پهنای باند برای هر یک از کلاسهای AF را ۲۱% در نظر گرفته ایم که بصورت ۷% برای هر یک از اولویت های حذف موجود در هر کلاس می باشد. هنگامی که بعلت پرشدن بافرهای سوئیچ، تصمیم به دور انداختن بسته ها گرفته شود، ابتدا بستههای با اولویت حذف پایین تر دور انداخته میشوند.
ترافیک بهترین تلاش که عمده ترافیک شبکه را تشکیل می دهد از ۵۰% پهنای باند شبکه استفاده خواهد کرد. بدیهی است که اگرمجموع ترافیک کلاسهای بالاتر کمتر از ۵۰% باشد پنهای باند آنها به ترافیک بهترین تلاش اختصاص خواهد یافت لازم به ذکر است که این تقسیم بندی فقط برای انجام عملیات شبیه سازی روی سوئیچ صورت گرفته است و با هر گونه تغییر در ترافیک شبکه براحتی می توان با تغییر پارامترهای مربوط به وزن هر کلاس و طول صفهای مربوطه در سوئیچ شرایط مطلوب برای هر کلاس سرویس را فراهم نمود.
۵-۲- اعمال ترافیک به سوئیچ
از آنجا که ترافیک EF باید حداقل تاخیر ممکن را هنگام عبور از سوئیچ تحمل کند، در فابریک سوئیچ در الگوریتم iSLIP اولویت دار بهینه الویت یک به ترافیک EF اختصاص داده خواهد شد. در زمانبند خط خروجی که DWRR می باشد نیز ترافیک EF به عنوان کلاس یک، بیشترین وزن را خواهد داشت. با دادن وزن زیاد به ترافیک EF در زمان بند خط خروجی و یا حتی اولویت نسبت به ترافیک های دیگر حداقل تاخیر برای این ترافیک تضمین خواهد شد.
در مورد ترافیک های AF و بهترین تلاش نیز در زمانبند خروجی به راحتی می توان با تغییر وزن هر کلاس تاخیر مورد نظر را در این قسمت بدست آورد. اما نکته مهم در مورد این ترافیک ها در قسمت فابریک سوئیچ می باشد. هنگامی که چندین کلاس مختلف برای عبور از فابریک سوئیچ وجود دارند دو روش مختلف می توان انجام داد.
در روش اول می توان تعدادی از کلاسها را به یک اولویت نگاشت کرد. در این نگاشت می توان به کلاسهای بالاتر پهنای باند بیشتری اختصاص داد. به عنوان مثال در این پروژه می توان کلاس یک را به اولویت یک و کلاسهای دو، سه و چهار را با استفاده از WRR به اولویت دو نگاشت کنیم. شکل ۵-۱ این موضوع را نشان می دهد:
شکل ۵-۱- چگونگی نگاشت چهار کلاس MPLS به دو اولویت برای انتقال در فابریک سوئیچ
بدین صورت سلولها ابتدا توسط الگوریتم WRR از صفهای اولیه برداشته می شوند (به صورت سلولهای بیشتر از صفهای باکلاس بالاتر در هر نوبت) و سپس وارد دو VOQ فابریک سوئیچ می شوند. هنگامی که از این روش استفاده می کنیم، تاخیر سلول های کلاس های مختلف در فابریک سوئیچ تحت ترافیک زنجیره ای بصورت شکل ۵-۲ خواهد بود.
ملاحظه می شود که تاخیر ترافیک EF بسیار ناچیز می باشد اما ترافیک های ,x)1AF( و ,x)2AF( تاخیر نسبتا زیادی را متحمل می شوند، اگر چه تاخیر آنها از تاخیر ترافیک بهترین تلاش کمتر می باشد. دلیل این مطلب آن است که بعد از نگاشت ترافیک های دو، سه و چهار به اولویت دو، الگوریتم زمانبندی فابریک سوئیچ با همه آنها بطور یکسان رفتار خواهد کرد. بنابراین اگر بخواهیم برای ترافیک های AF تاخیر کمتری داشته باشیم باید از روش دوم استفاده کنیم.
در روش دوم به ازای هر کلاس ترافیک، یک اولویت خواهیم داشت. بنابراین با چهار کلاس متفاوت MPLS، بصورت چهار سطح اولویت یک، دو، سه و چهار در الگورتیم زمانبندی فابریک سوئیچ رفتار خواهد شد.
شکل ۵-۲- تاخیرسلول های کلاس های مختلف درفابریک سوئیچ MPLS هنگام استفاده از دو الویت تحت ترافیک زنجیره ای با طول ۳۲
شکل ۵-۳ تاخیر سلول های کلاس های مختلف در فابریک سوئیچ را هنگام استفاده از این روش تحت ترافیک زنجیره ای نشان می دهد.
همانطور که انتظار می رود تاخیر کلاس های EF همانند حالت قبل می باشد ولی تاخیر کلاسهای ,x)1AF( و ,x)2AF( کمتر شده است و در مقابل تاخیر ترافیک بهترین تلاش افزایش یافته است. از آنجا که این مقدار افزایش تاخیر برای ترافیک بهترین تلاش اهمیت زیادی ندارد، از این روش استفاده خواهیم نمود. اما باید به این نکته مهم توجه نمود که اگر پهنای باند ورودی پایین ترین کلاس ( بهترین تلاش ) کم در نظر گرفته شود، استفاده از این روش می تواند به
شکل ۵-۳- تاخیر سلول های کلاس های مختلف در فابریک سوئیچ MPLS هنگام استفاده از چهار اولویت تحت ترافیک زنجیره ای با طول ۳۲
گرسنگی این نوع ترافیکی منتهی شود و عملا این نوع ترافیک از سوئیچ عبور نکند. در حال حاضر ترافیک بهترین تلاش حدود ۸۰% کل حجم ترافیک را تشکیل می دهد و ما برای آن حداقل ۵۰% پهنای باند ورودی را در نظر گرفته ایم. اگر به عنوان مثال این حداقل را به ۱۰% برسانیم، سوئیچ به ترافیک بهترین تلاش هرگز سرویس نخواهد داد، زیرا همواره ترافیک های کلاس بالاتر با حجم ۹۰% اولویت خواهند داشت.
با در نظر گرفتن چهار اولویت مجزا در فابریک سوئیچ و استفاده از الگوریتم DWRR در زمانبند خط خروجی، در شکل ۵-۴ تاخیر بسته های کلاس های مختلف در سوئیچ تحت ترافیک آماری که در بخش ۴-۶-۳ در باره آن توضیح داده شد، رسم شده است.
شکل ۵-۴- تاخیر بستههای کلاسهای مختلف در سوئیچ MPLS تحت ترافیک آماری
نکته مهم دیگر در انتقال بسته ها، جیتر می باشد. جتیر که همان انحراف معیار تاخیر بسته ها می باشد نیز مساله ایست که در تضمین کیفیت سرویس به آن توجه می شود. اهمیت جیتربیشتر در کاربردهای زمان حقیقی نمود پیدا میکند که جزو ترافیک EF میباشند. جیتر زیاد برای این نوع ترافیک همیشه مورد اعتراض کاربران میباشد. شکل ۵-۵ تغییرات جیتر را در سوئیچ MPLS ما نشان میدهد. ملاحظه میشود که جیتر ترافیک EF حتی دربارهای خیلی زیاد نیز کاملاً محدود میباشد و امکان تضمین تغییرات تاخیر را نیز برای این کلاس ممکن میکند.
شکل ۵-۵- جتیر بستههای کلاسهای مختلف در سوئیچ MPLS تحت ترافیک آماری
تاکنون طول صفهای قسمتهای مختلف را بینهایت در نظر گرفتیم ولی در یک سوئیچ واقعی باید طول صفها محدود باشد. بنابراین باید یک حد بالا برای طول صفهای کلاسهای مختلف بیابیم. برای اینکار به سوئیچ ترافیک زنجیرهای با طول ۳۲ اعمال کردیم تا میانگین طول صفهای VOQ و همچنین صفهای زمانبند خط خروجی مشخص شود. شکلهای ۵-۶ و ۵-۷ میانگین طول این صفها را نشان میدهند.
با توجه به نمودارهای فوق طول پیشنهادی برای VOQ ها بصورت زیر میباشد:
۱- طول VOQهای کلاس یک: 10 سلول
۲- طول VOQهای کلاس دو: 10 سلول
۳- طول VOQهای کلاس سه: 50 سلول
۴- طول VOQهای کلاس چهار: 500 سلول
شکل ۵-۶- میانگین طول VOQها در سوئیچ MPLS تحت ترافیک زنجیرهای با طول ۳۲
همچنین طول پیشنهادی برای صفهای زمانبند خط خروجی با در نظر گرفتن این نکته که هر صف حداقل گنجایش دو بسته با بیشترین طول (۱۵۰۰ بایت) را داشته باشد، بصورت زیر میباشد:
۱- طول صفهای کلاس یک: 50 سلول
۲- طول صفهای کلاس دو: 50 سلول
۳- طول صفهای کلاس سه: 100 سلول
۴- طول صفهای کلاس چهار: 2000 سلول
شکل ۵-۷- میانگین طول صفهای زمانبد خط خروجی در سوئیچ MPLS تحت ترافیک زنجیرهای با طول ۳۲
۴-۱۱- کنترل جریان
هدف از کنترل جریان جلوگیری از پرشدن صفها و پدیده تراکم در سوئیچ میباشد. تاکنون روشهای زیادی برای این کار ارائه شده است که معروفترین آنها تشخیص اولیه اتفاقی (RED) میباشد. در این روش قبل از اینکه صفهای سوئیچ پر شود، تعدادی از بستهها دور انداخته میشوند تا بدین ترتیب باعث شوند لایه TCP نرخ ارسال بستهها را کاهش دهد. احتمال دور انداختن بستهها با افزایش طول صف زیاد میشود. شکل ۵-۸ چگونگی تغییرات احتمال دور انداختن بستهها را نشان میدهد.
شکل ۵-۸- تغییرات احتمال دور انداختن بستهها براساس طول صف در روش کنترل جریان RED
هنگامی که طول صف از یک آستانه مینیمم کمتر میباشد، هیچ بستهای دور انداخته نمیشود ولی با افزایش طول صف از آستانه مینیمم تا آستانه ماکزیمم، احتمال دور انداختن بستهها هم از صفر تا ماکزیمم احتمال دور انداختن افزایش مییابد. اگر طول صف از آستانه ماکزیمم نیز بیشتر شود، همه بستهها دور انداخته میشوند. از این روش میتوان برای کنترل جریان ترافیکهای EF و بهترین تلاش استفاده نمود ولی برای ترافیکهای ,x)1AF( و ,x)2AF( باید از RED با سه آستانه استفاده نمود. شکل ۵-۹ تغییرات احتمال دور انداختن بستهها در RED با سه آستانه را نشان میدهد.
به عنوان مثال با اعمال این روش برای ,x)1AF(، هنگامی که طول صف از Min3 بگذرد احتمال دور انداختن بستههای)۳,۱AF( از صفر افزایش مییابد و وقتی طول صف از Max3 بگذرد این احتمال یک میشود. همچنین اگر طول صف به ترتیب از Min2 و Min1 بگذرد دور انداختن بستههای)۲,۱AF( و )۱,۱AF( آغاز میشود و بعد از Max2 و Max1 همه بستهها دور انداخته میشوند.
شکل ۵-۹- تغییرات احتمال دور انداختن بستهها براساس طول صف در روش کنترل جریان RED با سه آستانه
فصل ششم
نتیجه گیری و پیشنهادات
۶-۱- مقدمه
در این پایان نامه ابتدا به بررسی مسائل مربوط به کیفیت سرویس در اینترنت و فنآوری های شبکه پرداختیم و درباره مشکلات موجود و راه حلهای پیشنهاد شده برای آنها توضیحاتی ارائه شد. سپس فنآوری MPLS به عنوان یک فنآوری با قابلیت تضمین کیفیت سرویس و مجتمع سازی فنآوری های مختلف لایه دو و سه معرفی گردید. در ادامه ساختارهای مختلف برای سوئیچ های شبکه مورد بررسی قرار گرفت و مدلی برای یک سوئیچ MPLS ارائه شد و در نهایت با استفاده از زبان شبیه سازی SMPL، این سوئیچ شبیه سازی گردید.
۶-۲- نتیجه گیری
۱- استفاده از عملیات ساده تبادل برچسب در MPLS به جای آدرس یابی IPباعث کاهش تاخیر در پردازشات کارت خط ورودی شده است. زمان لازم برای تبادل برچسب آنقدر کم می باشد که در مقایسه با زمانهای لازم برای زمانبندی در فابریک سوئیچ و خط خروجی قابل صرفنظر کردن می باشد.
۲- الگوریتم زمانبندی iSLIP اولویت دار بهینه که در این پایان نامه معرفی گردید و عملکرد بسیار بهتری نسبت به iSLIP اولویت دار دارد، محدود به سوئیچ MPLS نمی باشد و می تواند در کلیه فابریک سوئیچ هایی که به منظور پشتیبانی ترافیک های با اولویت های متفاوت ساخته می شوند، مورد استفاده قرار بگیرد.
۳- میزان تاخیر کلاسهای مختلف را می توان به راحتی با تغییر پارامترهای وزنی الگوریتم DWRR کنترل کرد. البته باید به این نکته توجه نمود که افزایش وزن یک کلاس معادل کاهش تاخیر بسته های آن کلاس و افزایش تاخیر بسته های کلاسهای دیگر خواهد شد.
۴- پیشنهاداتی که برای طول صفها در فابریک سوئیچ و زمانبند خط خروجی ارائه شد، با توجه به نوع تقسیم بندی ترافیکی انجام شده و مقادیر پارامترهای وزنی الگوریتم DWRR بوده است و با تغییر آنها طول صفها را نیز باید تغییر داد.
۶-۳- پیشنهادات
۱- در این پروژه فنآوری لایه دوم PPP در نظر گرفته شد که یک فنآوری مبتنی بر فریم می باشد. مدلسازی MPLS بر روی فنآوری های لایه دوم مبتنی بر سلول مثل ATM به عنوان یکی از کارهای آینده پیشنهاد می شود.
۲- در شبیه سازی سوئیچ MPLS، ما از سه بیت در نظر گرفته شده برای کلاس سرویس در MPLS استفاده نمودیم. استفاده از سرویسهای متمایز در MPLS مبحثی است که جدیدا مطرح شده است و تحقیق در مورد تکنیکهایی که این کار را امکان پذیر می نماید ادامه دارد.
۳- استفاده از یک شبیه ساز TCP می تواند شبیه سازی قسمتهای کنترل جریان سوئیچ را مقدور نماید. از آنجا که الگوریتم های کنترل جریان بر اساس عکس العمل های لایه TCP به حذف بسته ها طراحی می شوند، بدون یک شبیه ساز TCP، امکان بررسی عملکرد این الگوریتم ها وجود ندارد.
۴- با تهیه پروتکل های لازم در قسمت کنترل سوئیچ MPLS (مثل LDP، OSPF و TCP) و ترکیب کردن شبیه ساز سوئیچ با قسمت کنترل می توان یک شبکه MPLS را شبیه سازی کرد و در آن به بررسی پارامترهای ترافیکی مختلف پرداخت.
احتمالا این روزها درباره ارزهای دیجیتال مخصوصا بیتکوین از گوشهوکنار در اخبار رادیو و تلویزیون یا شبکههای اجتماعی چیزهایی شنیدهاید.
۱۰ مکانی که توسط گوگل مپ سانسور شده ۵٫۰۰/۵ (۱۰۰٫۰۰%) ۱ امتیاز اکثر مناطق به علت مسائل امنیتی-سیاسی به صورت سانسور شده در نقشه های گوگل دیده می شوند و به همه این ها باید یک مورد بزرگ یعنی کشور کره شمالی را افزود […]
Twitch برنامه ایست که در آن بازی های ویدیویی دست به دست هم می دهند و با داشتن میلیون ها بیننده و بازی کننده راهی برای تعامل و به اشتراک گذاری محتوای خلاقانه با دیگران ارائه می دهند.
همهی دیسکهای سخت موجود برای پارتیشن بندی از ساختار قالببندی دادهای MBR (مخفف Master Boot Record) یا GPT (مخفف GUID Partition Table) استفاده میکنند.
در این مطلب به معرفی ۵ ترفند کاربردی و مفید در مرورگر گوگل کروم در سیستمعامل اندروید خواهیم پرداخت. با بهرهگیری از این ترفندها میتوانید توانایی کار خود با این اپ را افزایش دهید.
درباره تلویزیون های اینترنتی ایران چه میدانید؟ تلویزیون اینترنتی در ایران علاوه بر اینکه قابلیت استفاده از فناوری برای راحتی کاربران را دارد و همه مزایایی را که IPTV ها در خارج از کشور دارا هستند، یکی ویژگی مهم دیگر هم دارد که در […]
به نکات زیر توجه کنید