دستورات QoS به ۴ دسته کلی تقسیم می شوند:
- دستورات کلاس بندی ترافیک
- دستورات تعریف سیاست بر روی کلاس های مختلف ترافیک
- دستورات اعمال سیاست های مختلف بر روی یک اینترفیس
- دستورات محدودسازی پهنای باند بر روی اینترفیس
در ادامه به توضیح دستورات و چگونگی بررسی صحت عملکرد آن ها می پردازیم.
دستورات کلاس بندی ترافیک
جهت دسته بندی ترافیک ابتدا باید یک class-map تعریف نمود. ایجاد class-map توسط دستور زیر صورت می گیرد:
1 2 |
Zharf(config)# class-map [ match-all | match-any ] class-map-name Zharf(config)# no class-map [ match-all | match-any ] class-map-name |
سوییچ های match–all و match–any نوع class-map را مشخص می کنند که به صورت پیش فرض match–all در نظر گرفته می شود.
در صورتی که سوییچ match–any انتخاب گردد بین گزینه های match عملگر OR صورت می گیرد و در صورتی که match–all باشد، عملگر AND برای ادغام گزینه های match صورت می پذیرد.
برای از بین بردن یک class-map کافی است از شکل no دستور بالا استفاده کنید.
با تعریف class-map به سطح پیکربندی آن وارد می شوید. در این سطح می توانید از دستورات زیر استفاده کنید:
1 2 |
Zharf(config-cmap)# description string Zharf(config-cmap)# no description |
توسط این دستور در سطح پیکربندی class-map می توانید برای class-map توضیحات دلخواه خود را اضافه نمایید.
برای حذف توضیح نیز از شکل no استفاده نمایید.
1 2 |
Zharf(config-cmap)# rename class-map-new-name Zharf(config-cmap)# no rename |
توسط این دستور در سطح پیکربندی class-map می توان نام یک class-map را تغییر داد. در صورت تغییرنام یک class-map باید نام کلاس در تمامی policyهایی که از آن استفاده می کنند، به نام جدید به روز شود.
دستورات Match
این دستورات جهت دسته بندی ترافیک مورد استفاده قرار می گیرد و شامل بخش های مختلفی است که هر یک بر اساس پارامتر مخصوصی ترافیک را دسته بندی میکند
1 2 |
Zharf(config-cmap)# match access-group acl-number Zharf(config-cmap)# no match access-group acl-number |
توسط این دستور در سطح پیکربندی class-map می توان یک لیست دسترسی خاص را برای کلاس بندی ترافیک استفاده کرد. بدین ترتیب هر ترافیکی که با مشخصات لیست دسترسی مربوطه همخوانی داشته باشد، جزو کلاس محسوب می گردد.
برای حذف دستور از شکل no آن استفاده میشود
1 2 |
Zharf(config-cmap)# match any Zharf(config-cmap)# no match any |
این دستوردر سطح پیکربندی class-map تمامی بسته ها را قبول می کند. برای حذف آن از شکل no دستور استفاده می گردد.
مثال:
1 2 3 4 5 6 |
ZHARF(config)# class-map TEST ZHARF(config-cmap)# match any ZHARF(config-cmap)# exit Zharf(config-cmap)# match destination-address mac mac-address Zharf(config-cmap)# no match destination-address mac mac-address |
این دستور در سطح پیکربندی class-mapجهت کلاس بندی ترافیک بر اساس آدرس مک مقصد استفاده می گردد.
برای حذف آن از شکل no دستور استفاده می گردد.
1 2 |
Zharf(config-cmap)# match input-interface if-name Zharf(config-cmap)# no match input-interface if-name |
این دستور در سطح پیکربندی class-map جهت کلاس بندی ترافیک بر اساس اینترفیس ورودی استفاده می گردد.
برای حذف آن از شکل no دستور استفاده می گردد.
1 2 |
Zharf(config-cmap)# match not <match-criterion> Zharf(config-cmap)# no match not <match-criterion> |
این دستور در سطح پیکربندی class-map جهت کلاس بندی ترافیک بر اساس عدم تطبیق با match-criterion مورد استفاده قرار می گیرد.
برای حذف آن از شکل no دستور استفاده می گردد.
مثال:
1 2 3 4 5 6 |
ZHARF(config)# class-map TEST ZHARF(config-cmap)# match not protocol ip ZHARF(config-cmap)# exit Zharf(config-cmap)# match packet length { max max-length [ min min-length ] | min min-length [max max-length] } Zharf(config-cmap)# no match packet length { max max-length [ min min-length ] | min min-length [max max-length] } |
این دستور در سطح پیکربندی class-map جهت کلاس بندی ترافیک بر اساس طول بسته IP، که در header لایه 3 مشخص گردیده است، مورد استفاده قرار می گیرد.مقادیر مجاز برای طول بسته در این دستور از 1 تا 2000 بایت است.
برای حذف آن از شکل no دستور استفاده می گردد.
مثال:
1 2 3 4 |
ZHARF# configure terminal ZHARF(config)# class-map match-all class1 ZHARF(config-cmap)# match packet length min 100 max 300 ZHARF(config-cmap)# end Zharf(config-cmap)# match precedence { precedence-value } [ precedence-value2 ] [ precedence-value3 ] [ precedence-value4 ] Zharf(config-cmap)# no match precedence { precedence-value } [ precedence-value2 ] [ precedence-value3 ] [ precedence-value4 ] |
این دستور در سطح پیکربندیclass-map جهت کلاس بندی ترافیک بر اساس مقادیر Precedence در بسته IPv4 مورد استفاده قرار می گیرد. می توان در قسمت مقادیر precedence از مقدار عددی آن و یا نام آن استفاده نمود.
برای حذف آن از شکل no دستور استفاده می گردد.
مثال:
1 2 3 |
ZHARF(config)# class-map ipprec5 ZHARF(config-cmap)# match ip precedence 5 ZHARF(config)# exit |
لیست نام ها و مقدار عددی 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 |
1 2 |
Zharf(config-cmap)# match protocol protocol-name Zharf(config-cmap)# no match protocol protocol-name |
این دستوردر سطح پیکربندی class-map جهت کلاس بندی ترافیک بر اساس پروتکل مورد استفاده قرار می گیرد.
برای حذف آن از شکل no دستور استفاده می گردد.
مثال:
1 2 3 4 5 |
ZHARF(config)# class-map ospf ZHARF(config-cmap)# match protocol ospf Zharf(config-cmap)# match source-address mac mac-address Zharf(config-cmap)# no match source-address mac mac-address |
این دستور در سطح پیکربندی class-map جهت کلاس بندی ترافیک بر اساس آدرس مک مبدا مورد استفاده قرار می گیرد.
برای حذف آن از شکل no دستور استفاده می گردد.
دستورات تعریف سیاست بر روی کلاس های مختلف ترافیک
جهت تعریف سیاست بر روی کلاس ها باید یک policy-map ایجاد نمود. ایجاد policy-map توسط دستور زیر صورت می گیرد:
1 2 |
ZHARF(config)# policy-map name ZHARF(config)# no policy-map name |
با اجرای دستور بالادر سطح پیکربندی سراسری وارد سطح پیکربندی policy-map می گردیم. برای حذف policy-map از شکل no دستور استفاده می کنیم.
در این سطح می توانیم به ازای کلاس های مختلف، سیاست های متنوعی تعریف نماییم.
در این سطح می توانید از دستورات زیر استفاده کنید:
1 2 |
ZHARF(config-pmap)# description string ZHARF(config-pmap)# no description |
توسط این دستور می توانید برای policy-map توضیحات دلخواه خود را اضافه نمایید.
برای حذف توضیح از شکل no استفاده نمایید.
1 2 |
ZHARF(config-pmap)# rename policy-map-new-name ZHARF(config-pmap)#no rename |
توسط این دستور می توان نام یک policy-map را تغییر داد. در صورت تغییر نام یک policy-map باید نام policy در تمامی service-policy هایی که از آن استفاده می کنند، به نام جدید به روز شود.
1 2 |
ZHARF(config-pmap)# class {class-name | class-default } ZHARF(config-pmap)# no class class-name |
جهت تعیین نام کلاسی که قرار است روی آن policy تعریف شود، مورد استفاده قرار می گیرد.
برای حذف آن از شکل no دستور استفاده می گردد.
با تعریف کلاس در سطح پیکربندی policy-map به سطح پیکربندی جدید class میرویم که در آن جا می توان با استفاده از دستورات زیر به ازای هر کلاس سیاست مورد نظر را تعریف نمود.
دستورات موجود در class به صورت زیر می باشند:
1 2 |
ZHARF(config-pmap-c)# bandwidth { bandwidth-kbps | remaining percent percentage | percent percentage} ZHARF(config-pmap-c)# no bandwidth { bandwidth-kbps | remaining percent percentage | percent percentage} |
جهت تخصیص یا تغییر پهنای باند برای یک کلاس متعلق به policy از این دستور استفاده می گردد.
برای حذف آن از شکل no دستور استفاده می گردد.
نکته: کلاس های متعلق به یک policy باید روش تخصیص پهنای باند به آنها از یک نوع باشد، در غیر این صورت خطا رخ میدهد
مثال:
1 2 3 4 5 6 7 8 9 10 11 12 |
ZHARF(config)# policy-map policy1 ZHARF(config-pmap)# class class1 ZHARF(config-pmap-c)# bandwidth percent 50 ZHARF(config-pmap-c)# exit ZHARF(config-pmap)# class class2 ZHARF(config-pmap-c)# bandwidth percent 25 ZHARF(config-pmap-c)# exit ZHARF(config-pmap)# exit ZHARF(config-pmap-c)# drop ZHARF(config-pmap-c)# no drop |
جهت تعیین عدم در نظر گرفتن بسته های متعلق به یک کلاس خاص از این دستور استفاده می شود. این دستور باعث میشود ترافیک های متعلق به این کلاس حذف شوند.
برای حذف آن از شکل no دستور استفاده می گردد.
مثال:
1 2 3 4 5 6 7 8 9 10 11 |
ZHARF(config)# class-map class1 ZHARF(config-cmap)# match access-group 101 ZHARF(config-cmap)# exit ZHARF(config)# policy-map policy1 ZHARF(config-pmap)# class class1 ZHARF(config-pmap-c)# drop ZHARF(config-pmap-c)# exit ZHARF(config-pmap)# exit ZHARF(config-pmap-c)# queue-limit queue-limit-size ZHARF(config-pmap-c)# no queue-limit |
جهت تعیین یا تغییر محدودیت صف برای یک کلاس از این دستور استفاده می شود. مقدار queue–limit–size میتواند بین 1 تا 4096 بسته باشد
برای حذف آن از شکل no دستور استفاده می گردد.
1 2 |
ZHARF(config-pmap-c)# random-detect ZHARF(config-pmap-c)# no random-detect |
جهت فعال سازیWRED در کلاس مورد نظر از این دستور استفاده میشود. برای غیر فعال کردن آن از شکل no دستور استفاده میشود.
1 2 |
ZHARF(config-pmap-c)# random-detect ecn ZHARF(config-pmap-c)# no random-detect ecn |
برای فعال سازی ECNاز کلمه ecn در انتهای دستور random–detect استفاده می شود. بدین منظور ابتدا باید RED توسط دستور random–detect فعال شده باشد.
برای غیر فعال کردن آن از شکل no دستور استفاده می گردد.
1 2 |
ZHARF(config-pmap-c)#apply priority <0-7> ZHARF(config-pmap-c)#no apply priority <0-7> |
جهت اعمال اولویت به کلاس های مختلف ترافیک از این دستور استفاده می شود. عدد بالاتر نشان دهنده اولویت بالاتر می باشد .
برای حذف آن از شکل no دستور استفاده می گردد.
مثال:
1 2 3 4 5 6 |
ZHARF(config)# policy-map policy1 ZHARF(config-pmap)# class class1 ZHARF(config-pmap-c)# apply priority 7 ZHARF(config-pmap-c)# exit ZHARF(config-pmap)# class class2 ZHARF(config-pmap-c)# apply priority 4 ZHARF(config-pmap-c)# exit |
در مثال بالا اولویت کلاس class1 بالاتر در نظر گرفته شده است.
1 2 |
ZHARF(config-pmap-c)# set dscp <0-63> ZHARF(config-pmap-c)# no set dscp <0-63> |
برای تنظیم مقدار DSCP در بسته های IP از این دستور استفاده میشود. مقادیر DSCP میتوانند بین 0 تا 63 باشند.
برای حذف این دستور از شکل no آن استفاده میشود.
دستورات اعمال سیاست بر روی اینترفیس
برای اعمال سیاست های ایجاد شده باید policy مورد نظر را به اینترفیس مرتبط و اعمال نمود. برای این منظور باید از دستور service–policy در سطح پیکربندی اینترفیس مورد نظر به صورت زیر استفاده نمود:
1 2 |
ZHARF(config-if)# service-policy { input | output | input/output } policy-map-name ZHARF(config-if)# no service-policy { input | output | input/output } policy-map-name |
جهت اعمال یک policy به اینترفیس در جهت های مختلف از این دستور استفاده می شود. برای حذف آن از شکل no دستور استفاده می گردد.
نکته: در این دستور در هر لحظه تنها یکی از جهت های ورودی، خروجی یا ورودی/خروجی مورد استفاده قرار می گیرد.
مثال:
1 2 3 4 5 6 7 |
class-map Business match precedence 3 class-map Non-Business match precedence 5 policy-map map1 class Business bandwidth 50 class Non-Business bandwidth 28 interface gbeth1 service-policy output map1 |
دستورات محدودسازی پهنای باند بر روی اینترفیس
جهت محدود سازی پهنای باند واسط شبکه در حال حاضر از دستورات زیر در سطح پیکربندی اینترفیس مورد نظر استفاده می گردد. مقدار پهنای باند میتواند از 1 تا 1000000 کیلو بیت باشد
1 2 |
ZHARF(config-if)# bandwidth all bandwidth-value ZHARF(config-if)# no bandwidth all bandwidth-value |
مثال
1 2 |
ZHARF(config)# interface gbeth1 ZHARF(config-if)# bandwidth all 500000 |
توسط این دستور پهنای باند اینترفیس gbeth1 را به 500000 کاهش می دهیم.
1 2 |
ZHARF(config)# interface gbeth1 ZHARF(config-if)# no bandwidth all 500000 |
توسط این دستور محدودیت پهنای باند اینترفیس gbeth1 برمی داریم و پهنای باند به مقدار پیش فرض برمی گردد.
نمایش وضعیت سرویس QoS
در این بخش دستورات مربوط به نمایش وضعیت سرویس QoS توضیح داده می شوند.
1 |
ZHARF# show class-map [class-map-name] |
با اجرای این دستور در سطح EXEC Privilege اطلاعات مربوط به class-mapهای تنظیم شده، نمایش داده میشوند. در صورتی که نام class-map ذکر شود تنها اطلاعات مربوط به آن class map نمایش داده می شود.
1 |
ZHARF# show policy-map [policy-map-name] |
با اجرای این دستور در سطح EXEC Privilege ،اطلاعات مربوط به policy-map های تنظیم شده نمایش داده میشوند. در صورتی که نام policy-map ذکر شود، تنها اطلاعات مربوط به آنPolicy map نمایش داده می شود.
1 |
ZHARF#show policy-map interface if-name |
با اجرای این دستور در سطح EXEC Privilege اطلاعات policy-mapهای اعمال شده به اینترفیس ها نمایش داده میشود
1 |
ZHARF# show policy-map interface { input | output } class class-map-name |
با اجرای این دستور در سطح EXEC Privilege اطلاعات class-map خاص که در جهت ورودی یا خروجی اینترفیس اعمال شده است، نمایش داده خواهد شد.
نمونه ای از پیکربندی سرویس QoS
جهت تعریف QoS بایستی ابتدا مراحل دسته بندی ترافیک بر اساس دستورات کلاس بندی ترافیک انجام شود.
به عنوان مثال می خواهیم یک سری سیاست بر روی ترافیک هایی با آدرس مک مبدا 1234.1234.1234 تعریف نماییم.
ابتدا با توجه به دستورات دسته بندی ترافیک، ترافیک های با آدرس مک مبدا 1234.1234.1234 را تفکیک و در یک class-map قرار می دهیم.
1 2 |
ZHARF(config)# class-map srcMacTraffic ZHARF(config-cmap)# match source-address mac 1234.1234.1234 |
بدین ترتیب ترافیک هایی با آدرس مک مبدا 1234.1234.1234 در class-map با نام srcMacTraffic قرار می گیرند.
پس از ایجاد دسته بندی های دلخواه، policy های مورد نظر بر روی کلاس های موجود بر اساس دستورات تعریف policy صورت می گیرد.
به عنوان مثال می خواهیم به ترافیک های قرار گرفته در class-map با نام srcMacTraffic مقدار Precedence برابر با 3 تخصیص داده شود.
از دستورات زیر برای رسیدن به این منظور استفاده می کنیم.
1 2 3 |
ZHARF(config)# policy-map srcMacTrafficPolicy ZHARF(config-pmap)# class srcMacTraffic ZHARF(config-pmap-c)# set precedence 3 |
هنگام تعریف سیاست به نکات زیر توجه فرمایید:
- در صورتی که در policy اقدام به تعیین policy برای کلاسی نماییم که این کلاس وجود نداشته باشد با پیغام خطا مواجه می شویم. ( باید کلاس مورد نظر از قبل با دستور class–map پیکربندی شده باشد)
- در صورتی که تعاریف bandwidth در کلاس های مختلف فرمت های مختلف داشته باشد با پیغام خطا مواجه می شویم.
- در صورتی که دستور random–detect ecn بدون پیکربندی random–detect تعریف شود با پیغام خطا مواجه می شویم.
جهت مشاهده تنظیمات،از دستورات show زیر استفاده می نماییم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
ZHARF#show running-config ! ip forwarding ! class-map match-all srcMacTraffic match source-address mac 1234.1234.1234 policy-map srcMacTrafficPolicy class srcMacTraffic set precedence 3 ZHARF#show policy-map srcMacTrafficPolicy policy-map srcMacTrafficPolicy class srcMacTraffic set precedence 3 |
پس از تعریف سیاست های موردنظر باید آن را جهت اجرا به اینترفیس اعمال کنیم
به عنوان مثال می خواهیم سیاست srcMacTrafficPolicy را بر روی اینترفیس gbeth0 در جهت وروردی اعمال کنیم. ( یعنی ترافیک هایی که وارد اینترفیس میشوند، بررسی خواهند شد)
به صورت زیر عمل می کنیم.
1 2 |
ZHARF(config)# interface gbeth0 ZHARF(config-if)# service-policy input srcMacTrafficPolicy |
جهت مشاهده تنظیمات، از دستورات show زیر استفاده می نماییم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
ZHARF# show running-config ... interface gbeth0 ip address 128.96.51.3 255.255.255.0 ipv6 nd suppress-ra service-policy in srcMacTrafficPolicy ! ZHARF# show policy-map interface gbeth0 gbeth0 Service-policy input: srcMacTrafficPolicy Class-map: srcMacTraffic (match-all) Match: source-address mac 1234.1234.1234 ZHARF# show policy-map interface input class srcMacTraffic gbeth0 Service-policy input: srcMacTrafficPolicy Class-map: srcMacTraffic (match-all) Match: source-address mac 1234.1234.1234 |
5-12-7. صف CBWFQ
در صف CBWFQ کلاسی تعریف می شود تا ترافیک هایی که با کلاس های موجود در مسیریاب هماهنگ نشده اند، در این کلاس دسته بندی شوند.
این دسته از ترافیک هایی که اولویت بالا ندارند ولی نمی خواهیم از عبور آنها جلوگیری شود ، باید در نظر گرفته شوند. به منظور پیکربندی این صف در مسیریاب باید دستور زیر در policy-map تعریف شود اما باید توجه داشت که ابتدا باید دستور Bandwidth اعمال شود:
1 |
ZHARF(config-pmap-c)# fair-queue |
به عنوان مثال پیکربندی class-map و policy-map به صورت زیر است :
1 2 3 4 5 6 7 8 9 10 |
ZHARF(config)# class-map default ZHARF(config-cmap)# match any ZHARF(config-cmap)# exit ZHARF(config)# policy-map qos ZHARF(config-pmap)# class default ZHARF(config-pmap-c)# bandwidth 8000 ZHARF(config-pmap-c)# fair-queue ZHARF(config-pmap-c)# exit ZHARF(config # (interface gbeth 0 ZHARF(config-if) # service-policy output qos |
برای پیاده سازی صف CBWFQ میتوانیم بر اساس وزن دلخواه به واحد Kb و یا بصورت درصدی بخشی از پهنای باند کل اینترفیس را به کلاس های مختلف اختصاص دهیم.
هر ترافیک صرفاً تا حداکثر میزان پهنای باند تخصیص داده شده اجازه عبور ترافیک را خواهد داشت.
برای ترافیک ها کم ارزش و یا ترافیک هایی که با هیچ یک از صف ها مطابق نیستند را میتوان به صورت پیش فرض از یکی از صف ها عبور داد.
برای تعیین صف به عنوان صف پیشفرض بایستی دستور fair–queue را در کلاس مورد نظر اضافه بکنیم
با دستور no fair–queue میتوانیم این خصوصیت را غیرفعال کرد.
5-12-8.صف LLQ
هنگامی که قصد داریم ترافیکی با اولویت بالاتر از دیگر ترافیک ها ارسال شود از این صف استفاده می کنیم .
اگر پهنای باند را ترافیک هایی با اولویت پایین تر پر کنند ولی این ترافیک مورد نظر ارسال شود ، آن دسته از ترافیک های با اولویت پایین drop میشوند تا ترافیک مورد نظر بدون مشکل ارسال شود.
برای پیکربندی این صف باید به کلاس مورد نظر اولویت داد. برای این منظور باید به صورت زیر عمل کرد:
1 |
Zharf (config-pmap-c)# priority [ kilobit | level { high | low | medium | normal } | percent percentage ] |
برای اولویت دهی میتوان دستور priority را به تنهایی و یا با استفاده از مقدار کیلوبیت برای پهنای باند یا درصدی پیکربندی کرد. همچنین میتوان از مقدار های high ، medium ، normal و low استفاده کرد
باید توجه داشت که این پیکربندی فقط برای یک کلاس در policy-map اعمال شود.
پیکربندی زیر نمونه ای از یک پیکربندی است که شامل صف LLQ است:
1 2 3 4 5 6 7 8 9 10 |
ZHARF(config)# class-map LLQ ZHARF(config-cmap)# match protocol icmp ZHARF(config-cmap)# exit ZHARF(config)# policy-map qos ZHARF(config-pmap)# class LLQ ZHARF(config-pmap-c)# bandwidth 30 ZHARF(config-pmap-c)# priority ZHARF(config-pmap-c)# exit ZHARF(config )#interface gbeth 0 ZHARF(config-if) # service-policy output qos |
در این نوع صف هر کلاسی که در آن دستور 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 service–policy میتوانیم صف فرزند را حذف نماییم.
در زیر مثال برای پیکربندی HQOS آمده است:
با فرض اینکه کلاس های a1 , a2 بر اساس ورودی ترافیک از اینترفیس های gbeth1 و gbeth2 تعریف شده اند دو policy زیر را تعریف میکنیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Zharf(config)# policy-map child Zharf(config-pmap)# class voice Zharf(config-pmap-c)# bandwidth 600 Zharf(config-pmap-c)# exit Zharf(config-pmap)# class data Zharf(config-pmap-c)# bandwidth 300 Zharf(config-pmap-c)# exit Zharf(config)# policy-map parent Zharf(config-pmap)# class a1 Zharf(config-pmap-c)# bandwidth 1000 Zharf(config-pmap-c)# service-policy child Zharf(config-pmap-c)# exit Zharf(config-pmap-c)# class a2 Zharf(config-pmap-c)# bandwidth 500 Zharf(config-pmap-c)# exit Zharf(config)# interface gbeth 0 Zharf(config-if)# service-policy output parent |
برای مشاهده خروجی همه صف های ذکر شده میتوان از دستور نمایشی استفاده کرد. در مسیریاب ژرف با استفاده از دستور زیر میتوان کلاس و میزان پهنای باندی که در صف ها کنترل میشود را مشاهده کرد :
1 |
Zharf# show policy-map interface gbeth { if-name seconds| input | output } |
در قسمتif–name میتوان نام اینترفیسی که policy-map روی آن فعال شده است را مشخص کرد و در ادامه برای آنکه عملکرد مسیریاب را در بازه مشخص چند ثانیه ای مشاهده کرد ، میتوان عددی بین 6 تا 30 ثانیه را انتخاب کرد.
شکل زیر نمونه ای از خروجی دستور نمایشی ذکر شده است :