| CBS(8) | Linux | CBS(8) |
نام (NAME)
tc-cbs - انضباط صف شکلدهنده بر پایه اعتبار (CBS)
خلاصه دستور (SYNOPSIS)
tc qdisc ... dev dev parent classid [ handle major: ] cbs idleslope idleslope sendslope sendslope hicredit hicredit locredit locredit [ offload 0|1 ]
توضیحات (DESCRIPTION)
انضباط صف CBS (مخفف Credit Based Shaper یا شکلدهنده بر پایه اعتبار) الگوریتم شکلدهی تعریفشده در بخش 8.6.8.2 استاندارد IEEE 802.1Q-2014 را پیادهسازی میکند که روشی معین برای محدودسازی نرخ ترافیک اعمال مینماید.
این انضباط صف برای استفاده توسط برنامههای TSN (شبکههای حساس به زمان یا Time Sensitive Networking) طراحی شده است؛ پارامترهای CBS مستقیماً از پیوست L مشخصات استاندارد IEEE 802.1Q-2014 استخراج شدهاند. خود الگوریتم و نحوه اثرگذاری آن بر میزان تاخیر (latency) با جزئیات کامل در آن سند تشریح شده است.
الگوریتم CBS برای این منظور طراحی شده است که زیرمجموعه یک انضباط صف (qdisc) دیگر که جریان بستهها را به کلاسهای ترافیکی نگاشت میکند، نصب شود؛ یک نمونه از آن mqprio(8) است.
پارامترها (PARAMETERS)
- idleslope
- نرخ انباشت
اعتبارها
(بر حسب
کیلوبیت بر
ثانیه) است،
زمانی که
دستکم یک
بسته در صف،
منتظر
ارسال باشد.
بستهها
هنگامی
ارسال
میشوند که
مقدار فعلی
اعتبار
برابر یا
بزرگتر از
صفر باشد.
هنگامی که
هیچ
بستهای
برای ارسال
وجود
ندارد،
مقدار
اعتبارها
بر روی صفر
تنظیم
میشود. این
پارامتر،
تنظیمکننده
اصلی
الگوریتم
CBS بوده و
نمایانگر
پهنای
باندی است
که مصرف
خواهد شد.
توجه داشته
باشید که
هنگام
محاسبه idleslope،
باید
اندازه
کامل بسته
شامل
سرایندهای
تمامی
لایهها
(مانند
قالببندی
MAC و هرگونه
سرریز لایه
فیزیکی)
مطابق با
بخش 34.4
استاندارد
IEEE 802.1Q-2014 محاسبه
شود.
به عنوان مثال، برای یک فریم اترنت حاوی ۲۸۴ بایت داده مفید (payload) و بدون برچسبهای VLAN، باید ۱۴ بایت برای سرایندهای اترنت، ۴ بایت برای دنباله بررسی فریم (CRC)، و ۲۰ بایت برای سرریز لایه ۱ (شامل ۱۲ بایت فاصله میان بستهها، ۷ بایت مقدمه یا preamble و ۱ بایت جداکننده شروع فریم) اضافه شود. نتیجه آن مجموع اندازه ۳۲۲ بایت برای کل بسته خواهد بود که سپس برای محاسبه idleslope استفاده میگردد.
- sendslope
- نرخ کاهش
اعتبارها
(که باید یک
عدد منفی بر
حسب
کیلوبیت بر
ثانیه باشد)
در هنگام
ارسال بسته
است. این
مقدار طبق
استاندارد
IEEE 802.1Q-2014 بخش 8.6.8.2 بند
g به صورت
زیر محاسبه
میشود:
sendslope = idleslope - port_transmit_rate
- hicredit
- حداکثر
میزان
اعتباری (بر
حسب بایت)
را که
میتواند
انباشته
شود تعیین
میکند. hicredit
به
ویژگیهای
ترافیک
متداخل
بستگی
دارد؛ max_interference_size
حداکثر
اندازه هر
توده
ترافیکی (burst)
است که
میتواند
ارسال
فریمی را که
برای این
کلاس
ترافیکی
آماده
ارسال است
به تاخیر
اندازد
(استاندارد
IEEE 802.1Q-2014 پیوست L،
معادله L-3):
hicredit = max_interference_size * (idleslope / port_transmit_rate)
- locredit
- حداقل
میزان
اعتباری
است که
میتوان به
آن رسید.
این مقدار
تابعی از
ترافیک
عبوری از
این انضباط
صف است
(استاندارد
IEEE 802.1Q-2014 پیوست L،
معادله L-2):
locredit = max_frame_size * (sendslope / port_transmit_rate)
- offload
- هنگامی که گزینه offload برابر با 1 باشد، cbs(8) تلاش خواهد کرد تا رابط شبکه را به گونهای پیکربندی کند که الگوریتم CBS مستقیماً درون کنترلر سختافزاری اجرا شود. مقدار پیشفرض 0 است.
مثالها (EXAMPLES)
الگوریتم CBS برای اعمال کیفیت خدمات (QoS) از طریق محدود کردن نرخ داده یک کلاس ترافیکی استفاده میشود. برای تفکیک بستهها به کلاسهای ترافیکی مختلف، کاربر میتواند از mqprio(8) استفاده کرده و آن را بدین صورت پیکربندی نماید:
# tc qdisc add dev eth0 handle 100: parent root mqprio num_tc 3 \ map 2 2 1 0 2 2 2 2 2 2 2 2 2 2 2 2 \ queues 1@0 1@1 2@2 \ hw 0
برای جایگزین کردن انضباط صف فعلی با CBS در انضباط صف متصل به کلاس ترافیکی شماره 0، دستور زیر را اجرا کنید:
# tc qdisc replace dev eth0 parent 100:4 cbs \ locredit -1470 hicredit 30 sendslope -980000 idleslope 20000
این مقادیر از پارامترهای زیر به دست آمدهاند: مقدار idleslope برابر با 20mbit/s، نرخ ارسال برابر با 1Gbit/s و حداکثر اندازه فریم متداخل برابر با ۱۵۰۰ بایت است.
نویسندگان (AUTHORS)
Vinicius Costa Gomes <vinicius.gomes@intel.com>
| 18 Sept 2017 | iproute2 |