آشنایی با QoS – بخش ششم (Shaping)

بعد از ادامه ی بحث قبلی ای که در پست قبل این سری آموزشی داشتیم، در این پست میخواهیم درمورد مبحث جذاب Shaping صحبت کنیم.

شما یک لینک 1 گیگابیت از روتر خودتون به سمت Service Provider دارید ، اما با CIRـه 200Mb/s :

ـService Provider به شما گفته است که هرزمان ، میزان بسته های ورودی سمت شما به SP، از میزان مشخص‌شده (CIR) بیشتر شود ، تمامی بسته های اضافی را Discard میکند. راهکاری که ما میبایستی برای خود داشته باشیم چیست ؟

از یک Shaper استفاده میکنیم تا سرعت ترافیک را پایین بیاوریم ، به عنوان مثال در این سناریو آنرا از 1گیگ به 200مگابیته شکل‌داده شده(200Mg/ps Shaping Rate) کاهش میدهیم.

این سناریو (Shaping داده ها قبل از ارسال به سمت SPای که Policing انجام میدهد) یکی از استفاده های عامیانه ی Shaper ها میباشد.

ـShaper ها در شرایط و جاهای دیگری هم میتوانند مفید واقع شوند ولی بصورت کلی ، Shaper ها وقتی کاربرد دارند که یک نفعی از کاهش سرعت وجود داشته باشد ، مثل شرایط فعلی در این سناریو ، که اگر کمپانی نیاز به سرعت و پهنای‌باند بیشتری داشته باشد ، میبایستی هزینه ی بیشتری پرداخت کند.

ـShaper با استفاده از صف‌بندی کردن بسته ها (Queuing) سرعت را پایین میاورد و سپس یکی یکی به آنها سرویس میدهد ، اما نه بر اساس در دسترس قرار گرفتنه اینترفیس خروجی ، بلکه خوده Shaper برای خود بسته هارا بر اساسه Shaping Rateـه مشخص شده schedule میکند.

پس باید متوجه شده باشید که بحثه صف بندی انتهایی که بر اساس در دسترس قرار گرفتنه اینترفیس انجام میشود(که در قسمت سوم این سری آموزشی در موردش صحبت شد) مرحله ی بعد از این موارد میباشد و وقتی توسط Shaper ، بسته ها Shape شدند و قوانین لازمه روی آنها اعمال شد (که از میزان مشخص شده ی Shaping rate عبور نکرده باشند) سپس به سمت مرحله ی بعد یعنی Queuingـه هایی میروند(درصورتی که لازم باشند و وجود داشته باشند).

بخاطر داشته باشید که ممکن است گاهی اصلا نیاز به صف‌بندیه خروجی (همان صف‌بندی (Queuing)نهایی) نباشد.

چراکه برای مثال در این سناریو که مطرح شد، SP بسته های ورودی را رویشان Policing را اعمال میکند و از آنطرف شما هم تمامی ترافیک خود را رویشان Shaping را اعمال میکنید و لینکتان هم که 1gb/ps میباشد،صف‌های نهایی ممکن است هیچوقت پر نشوند !

ـShaper ها جایی صفهایشان را قرار میدهند که شما میتوانید بروی آنها از ابزارهای مدیریت Congestion management هم بهره ببرید.کاملا منطقی است که شما از مواردی مانند LLQ ، CBWFQ و... را روی این صف‌ها پیاده سازی کنید(مانند مثال تصویر بالا).

تنظیم یک Shaping Time Interval (وقفه زمانی) مناسب برای داده های Voice و Video:

دوباره ! یک ابزار QoS اومد که مشکل مارو حل کنه و از آنطرف باز باعث ایجاد مشکلات دیگر شد.

مشکل راهکار Shaping این است که با پایین آورده سرعت Packet ها ، باعث ایجاد Delay و احتمالا Jitter بیشتر خواهدشد، چراکه ذات Shaper این است که سرعت را پایین بیاورد! (اصطلاحا گفته میشود که پکت هارا نگه میدارد!)

اما شما میتوانید (و باید) یک تنظیمات خاصی را پیکربندی کنید تا روند داخلی Shaper را تغییر دهید، تا بتوانید Delay و Jitterـه ایجاد شده برای ترافیک های Video و Voice را پایین بیاورید.

ـTime Intervalـه یک Shaper به منطق داخلی و اینکه چگونه Shaper میزانه داده را محاسبه و میانگین‌گیری کرده و در یک زمان خاص و یک سرعت خاص ارسال میکند ، اشاره دارد. حالا این به چه معناست ؟

یک Shaper اصولا به این صورت کار میکند که داده را با تمام سرعتی که میتواند ارسال میکند و سپس دست‌نگه میدارد ...  ارسال میکند و دست‌نگه میدارد ... ارسال میکند و دست‌نگه میدارد. برای مثال در سناریوی فعلی ، Shapingـه 200Mg/ps بر روی یک روتری که در اینجا دارای اینترفیس 1Gb/ps است، پیشهاد میشود(چراکه CIRـه ما 200 میباشد)؛ در اینجا Shaper به این صورت عمل میکند که در 20% از زمان داده را ارسال میکند و سپس 80% از زمان را دست‌نگه میدارد(زمان همان Interval ما میباشد).

برای مثال شکل زیر یک گراف(نمودار) از مفهومی که مطرح شد را نشان میدهد.با فرض اینکه Time interval موردنظر ما در اینجا 1 ثانیه میباشد. با میانگینِ 200 میلیون بیت در ثانیه ، Shaper هر ثانیه اجازه خروج 200 میلیون بیت را میدهد. با توجه با اینکه اینترفیس خروجی 1Gbps میباشد ، فقط 0.2 ثانیه (یا همان 200ms) زمان میبرد تا تمام 200میلیون بیت ارسال شوند... سپس Shaper باید تا پایان Time interval (که در اینجا 1ثانیه میباشد) صبر کند(یعنی 0.8ثانیه یا همان 800ms بیکار باشد).


حالا فکر کنید درست زمانی که Shaper ارسال بسته را برای یک TimeInterval به پایان رسانده است ، یک بسته ی Voice ویا Video که به Delay و Jitter بسیار کم نیاز دارند از راه برسد! حتی اگر آن بسته در صف priority قرار گرفته باشد، بازهم برای 800ms منظر میماند تا Shaper به زمانبندی بعدی اش برسد.(توجه داشته باشید که حداکثر Delayـه یک طرفه که برای Voice مشکلی ایجاد نمیکند ،150ms تاخیر است !)

راه حل ما برای این مشکل ، کم کردن میزان Time interval میباشد؛ برای مثال در سناریو فعلی ما،  Time interval های زیر (که به اختصار به آنها TC هم میگویند) میتوانند استفاده شوند (به تاثیرهای هرکدام هم اشاره شده است) :

Tc = 1 second (1000 ms): Send at 1 Gbps for 200 ms, rest for 800 ms
Tc = .1 second (100 ms): Send at 1 Gbps for 20 ms, rest for 80 ms
Tc = .01 second (10 ms): Send at 1 Gbps for 2 ms, rest for 8 ms

وقتی از Shaping استفاده میکنید ، از Time Interval کوتاهی استفاده کنید(با توجه به توصیه هایی که شده است ، برای پشتیبانی از داده های Voice و Video از Time Intervalـه 10ms استفاده کنید).

در انتها به این 2 نکته هم توجه داشته باشید :

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


موفق باشید.