12-5. پیکربندی سرویس QoS

دستورات QoS به ۴ دسته کلی تقسیم می شوند:

  • دستورات کلاس بندی ترافیک
  • دستورات تعریف سیاست بر روی کلاس های مختلف ترافیک
  • دستورات اعمال سیاست های مختلف بر روی یک اینترفیس
  • دستورات محدودسازی پهنای باند بر روی اینترفیس

در ادامه به توضیح دستورات و چگونگی بررسی صحت عملکرد آن ها می پردازیم.

 

دستورات کلاس بندی ترافیک

جهت دسته بندی ترافیک ابتدا باید یک class-map تعریف نمود. ایجاد class-map توسط دستور زیر صورت می گیرد:

سوییچ های matchall و matchany نوع class-map را مشخص می کنند که به صورت پیش فرض matchall در نظر گرفته می شود.

در صورتی که سوییچ matchany انتخاب گردد بین گزینه های match عملگر OR صورت می گیرد و در صورتی که matchall باشد، عملگر AND برای ادغام گزینه های match صورت می پذیرد.

برای از بین بردن یک class-map کافی است از شکل no دستور بالا استفاده کنید.

با تعریف class-map به سطح پیکربندی آن وارد می شوید. در این سطح می توانید از دستورات زیر استفاده کنید:

توسط این دستور در سطح پیکربندی class-map  می توانید برای class-map توضیحات دلخواه خود را اضافه نمایید.

برای حذف توضیح نیز از شکل no استفاده نمایید.

توسط این دستور در سطح پیکربندی class-map  می توان نام یک class-map را تغییر داد. در صورت تغییرنام یک class-map باید نام کلاس در تمامی  policyهایی که از آن استفاده می کنند، به نام جدید به روز شود.

 

دستورات Match

این دستورات جهت دسته بندی ترافیک مورد استفاده قرار می گیرد و شامل بخش های مختلفی است که هر یک بر اساس پارامتر مخصوصی ترافیک را دسته بندی میکند

توسط این دستور در سطح پیکربندی class-map  می توان یک لیست دسترسی خاص را برای کلاس بندی ترافیک استفاده کرد. بدین ترتیب هر ترافیکی که با مشخصات لیست دسترسی مربوطه همخوانی داشته باشد، جزو کلاس محسوب می گردد.

برای حذف دستور از شکل no آن استفاده میشود

این دستوردر سطح پیکربندی class-map تمامی بسته ها را قبول می کند. برای حذف آن از شکل no دستور استفاده می گردد.

مثال:

این دستور در سطح پیکربندی  class-mapجهت کلاس بندی ترافیک بر اساس آدرس مک مقصد استفاده می گردد.

برای حذف آن از شکل no دستور استفاده می گردد.

این دستور در سطح پیکربندی class-map جهت کلاس بندی ترافیک بر اساس اینترفیس ورودی استفاده می گردد.

برای حذف آن از شکل no دستور استفاده می گردد.

این دستور در سطح پیکربندی class-map  جهت کلاس بندی ترافیک بر اساس عدم تطبیق با match-criterion مورد استفاده قرار می گیرد.

برای حذف آن از شکل no دستور استفاده می گردد.

مثال:

این دستور در سطح پیکربندی class-map  جهت کلاس بندی ترافیک بر اساس طول بسته IP، که در header لایه 3 مشخص گردیده است، مورد استفاده قرار می گیرد.مقادیر مجاز برای طول بسته در این دستور از 1 تا 2000 بایت است.

برای حذف آن از شکل no دستور استفاده می گردد.

مثال:

این دستور در سطح پیکربندیclass-map  جهت کلاس بندی ترافیک بر اساس مقادیر Precedence در بسته IPv4 مورد استفاده قرار می گیرد. می توان در قسمت مقادیر precedence از مقدار عددی آن و یا نام آن استفاده نمود.

برای حذف آن از شکل no دستور استفاده می گردد.

مثال:

لیست نام ها و مقدار عددی Precedence در زیر آورده شده است.

مقدار باینری نام مقدار عددی
000 routine 0
001 priority 1
010 immediate 2
011 flash 3
100 flash-override 4
101 critical 5
110 internet (control) 6
111 network (control) 7

این دستوردر سطح پیکربندی class-map جهت کلاس بندی ترافیک بر اساس پروتکل مورد استفاده قرار می گیرد.

برای حذف آن از شکل no دستور استفاده می گردد.

مثال:

این دستور در سطح پیکربندی class-map جهت کلاس بندی ترافیک بر اساس آدرس مک مبدا مورد استفاده قرار می گیرد.

برای حذف آن از شکل no دستور استفاده می گردد.

 

دستورات تعریف سیاست بر روی کلاس های مختلف ترافیک

جهت تعریف سیاست بر روی کلاس ها باید یک policy-map ایجاد نمود. ایجاد policy-map توسط دستور زیر صورت می گیرد:

با اجرای دستور بالادر سطح پیکربندی سراسری وارد سطح پیکربندی policy-map می گردیم. برای حذف policy-map از شکل no دستور استفاده می کنیم.

در این سطح می توانیم به ازای کلاس های مختلف، سیاست های متنوعی تعریف نماییم.

در این سطح می توانید از دستورات زیر استفاده کنید:

توسط این دستور می توانید برای policy-map توضیحات دلخواه خود را اضافه نمایید.

برای حذف توضیح از شکل no استفاده نمایید.

توسط این دستور می توان نام یک policy-map را تغییر داد. در صورت تغییر نام یک policy-map باید نام policy در تمامی service-policy هایی که از آن استفاده می کنند، به نام جدید به روز شود.

جهت تعیین نام کلاسی که قرار است روی آن policy تعریف شود، مورد استفاده قرار می گیرد.

برای حذف آن از شکل no دستور استفاده می گردد.

با تعریف کلاس در سطح پیکربندی policy-map به سطح پیکربندی جدید class میرویم که در آن جا می توان با استفاده از دستورات زیر به ازای هر کلاس سیاست مورد نظر را تعریف نمود.

دستورات موجود در class به صورت زیر می باشند:

جهت تخصیص یا تغییر پهنای باند برای یک کلاس متعلق به policy از این دستور استفاده می گردد.

برای حذف آن از شکل no دستور استفاده می گردد.

 

نکته: کلاس های متعلق به یک policy باید روش تخصیص پهنای باند به آنها از یک نوع باشد، در غیر این صورت خطا رخ میدهد

مثال:

جهت تعیین عدم در نظر گرفتن بسته های متعلق به یک کلاس خاص از این دستور استفاده می شود. این دستور باعث میشود ترافیک های متعلق به این کلاس حذف شوند.

برای حذف آن از شکل no دستور استفاده می گردد.

مثال:

جهت تعیین یا تغییر محدودیت صف برای یک کلاس از این دستور استفاده می شود. مقدار queuelimitsize میتواند بین 1 تا 4096 بسته باشد

برای حذف آن از شکل no دستور استفاده می گردد.

جهت فعال سازیWRED در کلاس مورد نظر از این دستور استفاده میشود. برای غیر فعال کردن آن از شکل no دستور استفاده میشود.

برای فعال سازی  ECNاز کلمه ecn در انتهای دستور randomdetect استفاده می شود. بدین منظور ابتدا باید RED توسط دستور randomdetect فعال شده باشد.

برای غیر فعال کردن آن از شکل no دستور استفاده می گردد.

جهت اعمال اولویت به کلاس های مختلف ترافیک از این دستور استفاده می شود. عدد بالاتر نشان دهنده اولویت بالاتر می باشد .

برای حذف آن از شکل no دستور استفاده می گردد.

مثال:

در مثال بالا اولویت کلاس class1 بالاتر در نظر گرفته شده است.

برای تنظیم مقدار DSCP در بسته های IP از این دستور استفاده میشود. مقادیر DSCP میتوانند بین 0 تا 63 باشند.

برای حذف این دستور از شکل no آن استفاده میشود.

 

دستورات اعمال سیاست بر روی اینترفیس

برای اعمال سیاست های ایجاد شده باید policy مورد نظر را به اینترفیس مرتبط و اعمال نمود. برای این منظور باید از دستور servicepolicy در سطح پیکربندی اینترفیس مورد نظر به صورت زیر استفاده نمود:

جهت اعمال یک policy به اینترفیس در جهت های مختلف از این دستور استفاده می شود. برای حذف آن از شکل no دستور استفاده می گردد.

نکته: در این دستور در هر لحظه تنها یکی از جهت های ورودی، خروجی یا ورودی/خروجی مورد استفاده قرار می گیرد.

مثال:

 

دستورات محدودسازی پهنای باند بر روی اینترفیس

جهت محدود سازی پهنای باند واسط شبکه در حال حاضر از دستورات زیر در سطح پیکربندی اینترفیس مورد نظر استفاده می گردد. مقدار پهنای باند میتواند از 1 تا 1000000 کیلو بیت باشد

مثال

توسط این دستور پهنای باند اینترفیس gbeth1 را به 500000 کاهش می دهیم.

توسط این دستور محدودیت پهنای باند اینترفیس gbeth1 برمی داریم و پهنای باند به مقدار پیش فرض برمی گردد.

 

نمایش وضعیت سرویس QoS

در این بخش دستورات مربوط به نمایش وضعیت سرویس QoS توضیح داده می شوند.

با اجرای این دستور در سطح EXEC Privilege  اطلاعات مربوط به  class-mapهای تنظیم شده، نمایش داده میشوند. در صورتی که نام class-map ذکر شود تنها اطلاعات مربوط به آن class map  نمایش داده می شود.

با اجرای این دستور در سطح EXEC Privilege ،اطلاعات مربوط به policy-map های تنظیم شده نمایش داده میشوند. در صورتی که نام policy-map ذکر شود، تنها اطلاعات مربوط به آنPolicy map نمایش داده می شود.

با اجرای این دستور در سطح EXEC Privilege اطلاعات  policy-mapهای اعمال شده به اینترفیس ها نمایش داده میشود

با اجرای این دستور در سطح EXEC Privilege اطلاعات class-map خاص که در جهت ورودی یا خروجی اینترفیس اعمال شده است، نمایش داده خواهد شد.

 

نمونه ای از پیکربندی سرویس QoS

جهت تعریف QoS بایستی ابتدا مراحل دسته بندی ترافیک بر اساس دستورات کلاس بندی ترافیک انجام شود.

به عنوان مثال می خواهیم یک سری سیاست بر روی ترافیک هایی با آدرس مک مبدا 1234.1234.1234 تعریف نماییم.

ابتدا با توجه به دستورات دسته بندی ترافیک، ترافیک های با آدرس مک مبدا 1234.1234.1234 را تفکیک و در یک class-map قرار می دهیم.

بدین ترتیب ترافیک هایی با آدرس مک مبدا 1234.1234.1234 در class-map با نام srcMacTraffic قرار می گیرند.

پس از ایجاد دسته بندی های دلخواه، policy های مورد نظر بر روی کلاس های موجود بر اساس دستورات تعریف policy صورت می گیرد.

به عنوان مثال می خواهیم به ترافیک های قرار گرفته در class-map با نام srcMacTraffic مقدار Precedence برابر با 3 تخصیص داده شود.

از دستورات زیر برای رسیدن به این منظور استفاده می کنیم.

هنگام تعریف سیاست به نکات زیر توجه فرمایید:

  • در صورتی که در policy اقدام به تعیین policy برای کلاسی نماییم که این کلاس وجود نداشته باشد با پیغام خطا مواجه می شویم. ( باید کلاس مورد نظر از قبل با دستور classmap پیکربندی شده باشد)
  • در صورتی که تعاریف bandwidth در کلاس های مختلف فرمت های مختلف داشته باشد با پیغام خطا مواجه می شویم.
  • در صورتی که دستور randomdetect ecn بدون پیکربندی randomdetect تعریف شود با پیغام خطا مواجه می شویم.

جهت مشاهده تنظیمات،از دستورات show زیر استفاده می نماییم.

پس از تعریف سیاست های موردنظر باید آن را جهت اجرا به اینترفیس اعمال کنیم

به عنوان مثال می خواهیم سیاست srcMacTrafficPolicy را بر روی اینترفیس gbeth0 در جهت وروردی اعمال کنیم. ( یعنی ترافیک هایی که وارد اینترفیس میشوند، بررسی خواهند شد)

به صورت زیر عمل می کنیم.

جهت مشاهده تنظیمات، از دستورات show زیر استفاده می نماییم.

 

5-12-7. صف CBWFQ

در صف CBWFQ کلاسی تعریف می شود تا  ترافیک هایی که با کلاس های موجود در مسیریاب هماهنگ نشده اند، در این کلاس دسته بندی شوند.

این دسته از ترافیک هایی که اولویت بالا ندارند ولی نمی خواهیم از عبور آنها جلوگیری شود ، باید در نظر گرفته شوند. به منظور پیکربندی این صف در مسیریاب باید دستور زیر در policy-map  تعریف شود اما باید توجه داشت که ابتدا باید دستور Bandwidth  اعمال شود:

به عنوان مثال پیکربندی class-map  و policy-map  به صورت زیر است :

برای پیاده‌ سازی صف  CBWFQ میتوانیم بر اساس وزن دلخواه به واحد Kb  و یا بصورت درصدی بخشی از پهنای باند کل اینترفیس را به کلاس ‌های مختلف اختصاص دهیم.

هر ترافیک صرفاً تا حداکثر میزان پهنای باند تخصیص داده شده اجازه عبور ترافیک را خواهد داشت.

برای ترافیک ها کم ارزش و یا ترافیک هایی که با هیچ یک از صف ها مطابق نیستند را میتوان به صورت پیش‌ فرض از یکی از صف ها عبور داد.

برای تعیین صف به عنوان صف پیش‌فرض بایستی دستور fairqueue را در کلاس مورد نظر اضافه بکنیم

با دستور no fairqueue میتوانیم این خصوصیت را غیرفعال کرد.

 

5-12-8.صف LLQ

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

اگر پهنای باند را ترافیک هایی با اولویت پایین تر پر کنند ولی این ترافیک مورد نظر ارسال شود ، آن دسته از ترافیک های با اولویت پایین drop  میشوند تا ترافیک مورد نظر بدون مشکل ارسال شود.

برای پیکربندی این صف باید به کلاس مورد نظر اولویت داد. برای این منظور باید به صورت زیر عمل کرد:

برای اولویت دهی میتوان دستور priority  را به تنهایی و یا با استفاده از مقدار کیلوبیت برای پهنای باند یا درصدی پیکربندی کرد. همچنین میتوان از مقدار های high ، medium ، normal و low استفاده کرد

باید توجه داشت که این پیکربندی فقط برای یک کلاس در policy-map  اعمال شود.

پیکربندی زیر نمونه ای از یک پیکربندی است که شامل صف LLQ است:

در این نوع صف هر کلاسی که در آن دستور priority پیکربندی شده باشد، با اولویت ترین ترافیک محسوب می‌شود.

هر گاه بعد از priority میزان پهنای باند چه در واحد Kb و چه بصورت درصدی قید شود  بدون در نظر گرفتن میزان پهنای باند تعیین شده با دستور bandwidth برای همین کلاس و سایر کلاس‌ های دیگر، حداکثر تا همین میزان پهنای باند در اختیار این ترافیک قرار میگیرد.

 

در صورتی که تنها از دستور priority استفاده نماییم، ترافیک مورد نظر در صورت نیاز تا حداکثر پهنای باند اینترفیس

را می‌تواند اشغال نماید.

در هر policy-map‌ فقط و فقط میتوان برای یک کلاس از دستور priority استفاده کرد.

 

5-12-9.صف LLQ

برای پیاده ‌سازی HQOS  از دستور service-policy در کلاس استفاده میکنیم.

HQOS حالت سلسله مراتبی دارد که در هر سطح میتوان policy جداگانه ای را اعمال نمود. در حال حاضر در مسیریاب ژرف تا سه سطح میتوانیم این نوع صف را ایجاد نماییم.

هر policy که در کلاس بعنوان service-policy  تعیین شود بعنوان صف فرزند محسوب شده و از policy والد خود نیز تبعیت میکند.در تمامی این سطوح میتوانیم از LLQ  و  CBWFQ نیز استفاده کنیم.

اگر تخصیص پهنای باند صف والد بر اساس درصدی تعیین شده باشد صف فرزند نمیتواند بر اساس Kb پهنای باند را تقسیم ‌بندی کند.

در صورتی که در صف والد پهنای باند بر اساس Kb تعیین شده باشد مجموع پهنای باند صف فرزند نباید بیشتر از  پهنای باند کلاس باشد.

با دستور no servicepolicy میتوانیم صف فرزند را حذف نماییم.

در زیر مثال برای پیکربندی HQOS آمده است:

با فرض اینکه کلاس‌ های  a1 , a2  بر اساس ورودی ترافیک از اینترفیس های gbeth1 و gbeth2 تعریف شده‌ اند دو  policy زیر را تعریف میکنیم:

برای مشاهده خروجی همه صف های ذکر شده میتوان از دستور نمایشی استفاده کرد. در مسیریاب ژرف با استفاده از دستور زیر میتوان کلاس و میزان پهنای باندی که در صف ها کنترل میشود را مشاهده کرد :

در قسمتifname  میتوان نام اینترفیسی که policy-map  روی آن فعال شده است را مشخص کرد و در ادامه برای آنکه عملکرد مسیریاب را در بازه مشخص چند ثانیه ای مشاهده کرد ، میتوان عددی بین 6 تا 30 ثانیه را انتخاب کرد.

شکل زیر نمونه ای از خروجی دستور نمایشی ذکر شده است :