| HTB(8) | Linux | HTB(8) |
نام (NAME)
tc-htb - سطل توکن سلسلهمراتبی (Hierarchy Token Bucket) در کنترل ترافیک
HTB - سطل توکن سلسلهمراتبی
خلاصه دستور (SYNOPSIS)
tc qdisc ... dev dev ( parent classid | root) [ handle major: ] htb [ default minor-id ] [ r2q divisor ] [ offload ]
tc class ... dev dev parent major:[minor] [ classid major:minor ] htb rate rate [ ceil rate ] burst bytes [ cburst bytes ] [ prio priority ] [ quantum bytes ]
توضیحات (DESCRIPTION)
الگوریتم HTB امکان کنترل پهنای باند خروجی روی یک پیوند معین را فراهم میکند. این انضباط صف شبیهسازی چندین پیوند با سرعت کمتر و ارسال انواع مختلف ترافیک بر روی پیوندهای شبیهسازیشده گوناگون را ممکن میسازد. در هر دو حالت، باید مشخص کنید که پیوند فیزیکی چگونه به پیوندهای شبیهسازیشده تقسیم شود و چگونه تصمیمگیری شود که برای ارسال یک بسته مشخص از کدام پیوند شبیهسازیشده استفاده گردد.
الگوریتم HTB شکلدهی ترافیک (traffic shaping) را بر اساس الگوریتم فیلتر سطل توکن (Token Bucket Filter یا TBF) انجام میدهد؛ این الگوریتم به ویژگیهای رابط وابسته نیست و بنابراین نیازی به دانستن پهنای باند زیرساختی رابط خروجی ندارد.
الگوریتم شکلدهی (SHAPING ALGORITHM)
شکلدهی ترافیک همانگونه که در tc-tbf(8) مستند شده است عمل میکند.
دستهبندی (CLASSIFICATION)
درون یک نمونه از HTB میتواند کلاسهای متعددی وجود داشته باشد. هر یک از این کلاسها شامل یک qdisc دیگر است که به صورت پیشفرض tc-pfifo(8) میباشد.
هنگام قرار دادن بسته در صف (enqueueing)، انضباط HTB از ریشه (root) شروع کرده و از روشهای مختلفی برای تعیین کلاسی که باید داده را دریافت کند استفاده مینماید.
در نبود گزینههای پیکربندی نامتداول، این فرآیند نسبتاً ساده است. در هر گره ما به دنبال یک دستورالعمل میگردیم و سپس به کلاسی که دستورالعمل ما را به آن ارجاع میدهد میرویم. اگر کلاسِ یافتهشده یک گره برگ بدون فرزند (barren leaf-node) باشد، بسته را در همانجا در صف قرار میدهیم. اگر هنوز یک گره برگ نباشد، کل این مراحل را از نو و با شروع از آن گره تکرار میکنیم.
اقدامات زیر در هر گرهای که بررسی میکنیم به ترتیب انجام میشوند، تا زمانی که یکی از آنها ما را به گره دیگری هدایت کند یا فرآیند خاتمه یابد:
- (i)
- فیلترهای متصل به کلاس بررسی میشوند. اگر بسته به یک گره برگ هدایت شود، کار تمام است؛ در غیر این صورت فرآیند مجدداً آغاز میگردد.
- (ii)
- اگر هیچیک از موارد بالا منجر به دریافت دستورالعملی نشد، بسته در همین گره در صف قرار داده میشود.
این الگوریتم تضمین میکند که یک بسته همواره در جایی جایگذاری شود، حتی زمانی که در حال ساخت و ویرایش پیکربندی خود هستید.
الگوریتم اشتراکگذاری پیوند (LINK SHARING ALGORITHM)
FIXME
انضباط صف (QDISC)
ریشه درخت کلاسهای یک qdisc از نوع HTB دارای پارامترهای زیر است:
- parent major:minor | root
- این پارامتر اجباری مکان نمونه HTB را مشخص میکند که یا در root یک رابط شبکه و یا درون یک کلاس موجود قرار میگیرد.
- handle major:
- مشابه تمامی qdiscهای دیگر، به HTB نیز میتوان یک دستگیره (handle) اختصاص داد. این مقدار باید تنها شامل یک عدد اصلی (major) و به دنبال آن یک دو نقطه (:) باشد. این گزینه اختیاری است، اما اگر قرار است کلاسهایی درون این qdisc ایجاد شوند بسیار مفید خواهد بود.
- default minor-id
- ترافیک دستهبندینشده به کلاسی با این شناسه فرعی (minor-id) ارسال میشود.
- r2q divisor
- مقسومعلیهی که برای محاسبه مقادیر quantum برای کلاسها استفاده میشود. کلاسها مقدار rate را بر این عدد تقسیم میکنند. مقدار پیشفرض 10 است.
- offload
- برونسپاری الگوریتم HTB به سختافزار (نیازمند پشتیبانی درایور و دستگاه).
کلاسها (CLASSES)
کلاسها دارای مجموعهای از پارامترها برای پیکربندی نحوه عملکرد خود هستند.
- parent major:minor
- جایگاه این کلاس درون سلسلهمراتب. در صورتی که مستقیماً به یک qdisc متصل شده باشد و نه به کلاسی دیگر، بخش فرعی (minor) میتواند حذف شود. اجباری است.
- classid major:minor
- مشابه qdiscها، کلاسها نیز میتوانند نامگذاری شوند. عدد اصلی (major) باید برابر با عدد اصلی qdisc متعلق به آن باشد. اختیاری است، اما اگر این کلاس قرار باشد دارای فرزندانی باشد، ضروری خواهد بود.
- prio priority
- در فرآیند نوبتگردشی (round-robin)، ابتدا کلاسهایی با کمترین فیلد اولویت (priority) برای ارسال بستهها آزموده میشوند.
- rate rate
- حداکثر نرخی که برای این کلاس و تمام فرزندان آن تضمین میشود. اجباری است.
- ceil rate
- حداکثر نرخی که یک کلاس میتواند در صورت داشتن پهنای باند مازاد توسط والد خود، با آن نرخ ارسال انجام دهد. مقدار پیشفرض برابر با نرخ پیکربندیشده (rate) است که به معنای عدم قرضگیری پهنای باند میباشد.
- burst bytes
- میزان بایتهایی که میتوان با سرعت ceil و مازاد بر مقدار rate پیکربندیشده به صورت تودهای (burst) ارسال کرد. این مقدار باید دستکم به اندازه بالاترین مقدار burst در میان تمام فرزندان باشد.
- cburst bytes
- میزان بایتهایی که میتوان با سرعت «نامحدود» یا به عبارتی دیگر با بیشترین سرعتی که رابط شبکه قادر به مخابره آن است، به صورت تودهای ارسال کرد. برای توزیع کاملاً یکنواخت، این مقدار باید حداکثر برابر با اندازه یک بسته متوسط باشد. همچنین باید دستکم به اندازه بالاترین مقدار cburst در میان تمام فرزندان باشد.
- quantum bytes
- تعداد بایتهایی که باید از این کلاس سرویسدهی شود پیش از آنکه زمانبند به سراغ کلاس بعدی برود. مقدار پیشفرض برابر با مقدار rate تقسیم بر پارامتر r2q مربوط به qdisc است. در صورت تعیین مستقیم این پارامتر، مقدار r2q نادیده گرفته میشود.
یادداشتها (NOTES)
به دلیل محدودیتهای زمانبندی در یونیکس، حداکثر نرخ ceil نامحدود نبوده و در عمل ممکن است نسبتاً کم باشد. در معماری اینتل (Intel)، ۱۰۰ رویداد تایمر در ثانیه وجود دارد؛ حداکثر نرخ برابر با نرخی است که در آن بایتهای 'burst' در هر تیک تایمر ارسال میشوند. بر این اساس، میتوان حداقل اندازه burst را برای یک نرخ مشخص محاسبه کرد. برای نمونه در i386، نرخ 10mbit نیازمند ۱۲ کیلوبایت burst است، چرا که 10mbit برابر با 100*12kb*8 میباشد.
همچنین ببینید (SEE ALSO)
وبسایت HTB: http://luxik.cdi.cz/~devik/qos/htb
نویسندگان (AUTHORS)
Martin Devera <devik@cdi.cz>. نگهداری این صفحه راهنما توسط bert hubert <ahu@ds9a.nl> انجام شده است.
| 10 January 2002 | iproute2 |