| CoDel(8) | Linux | CoDel(8) |
نام (NAME)
tc-codel - الگوریتم مدیریت فعال صف با تاخیر کنترلشده (Controlled-Delay Active Queue Management)
خلاصه دستور (SYNOPSIS)
tc qdisc ... codel [ limit PACKETS ] [ target TIME ] [ interval TIME ] [ ecn | noecn ] [ ce_threshold TIME ]
توضیحات (DESCRIPTION)
الگوریتم CoDel (تلفظ بهصورت "coddle") یک طرح مدیریت فعال صف (AQM) تطبیقی و «بدون نیاز به تنظیم دستی» (no-knobs) است که برای برطرف کردن کاستیهای RED و مشتقات آن توسعه یافته است. این الگوریتم با اهداف زیر طراحی شده است:
- باید بدون پارامتر (یا با حداقل تنظیمات) باشد.
- باید تاخیر را پایین نگه دارد و همزمان اجازه عبور ترافیکهای انفجاری (bursts) را بدهد.
- باید تاخیر را کنترل کند.
- باید بهطور پویا با نرخهای متغیر پیوند سازگار شود بدون اینکه تاثیری منفی بر بهرهوری (utilization) بگذارد.
- باید ساده و کارآمد باشد و از مسیریابهای ساده تا پیچیده مقیاسپذیر باشد.
الگوریتم (ALGORITHM)
الگوریتم CoDel دارای سه نوآوری عمده است. نخست، بهجای استفاده از اندازه صف یا میانگین صف، از کمینه محلی صف بهعنوان معیاری برای سنجش صف دائمی/ماندگار (standing/persistent queue) استفاده میکند. دوم، از یک متغیر واحد برای ردیابی وضعیت کمینه تاخیر بهره میبرد تا مشخص کند نسبت به تاخیر صف ماندگار در چه وضعیتی قرار دارد. سوم، بهجای اندازهگیری اندازه صف برحسب بایت یا بسته، آن را بر مبنای زمان ماندگاری یا توقف بسته (packet-sojourn time) در صف میسنجد.
الگوریتم CoDel کمینه تاخیر محلی صف (یعنی تاخیر صف ماندگار) را اندازه گرفته و آن را با مقدار تاخیر قابلقبول تعیینشده در target مقایسه میکند. تا زمانی که کمینه تاخیر صف کمتر از target باشد یا بافر کمتر از اندازه یک MTU داده داشته باشد، هیچ بستهای دور ریخته (drop) نمیشود. الگوریتم CoDel زمانی وارد حالت دور انداختن بسته (dropping mode) میشود که کمینه تاخیر صف برای مدتی بیشتر از interval از مقدار target بیشتر شده باشد. در این حالت، بستهها در فواصل زمانی مختلف که توسط یک قانون کنترلی تعیین میشوند، دور ریخته میشوند. این قانون کنترلی تضمین میکند که حذف بستهها موجب تغییری خطی در توان عملیاتی (throughput) شود. به محض اینکه کمینه تاخیر به زیر مقدار target برسد، دور انداختن بستهها متوقف میشود.
جزئیات بیشتر را میتوانید در مقالهای که در ادامه ذکر شده است بیابید.
پارامترها (PARAMETERS)
limit
حد نهایی و سختگیرانه روی اندازه واقعی صف است. هنگامی که صف به این حد برسد، بستههای ورودی جدید دور ریخته میشوند. اگر این مقدار کاهش یابد، بستهها دور ریخته میشوند تا اندازه صف به حد جدید برسد. مقدار پیشفرض ۱۰۰۰ بسته است.
target
کمینه تاخیر قابلقبول صف ماندگار/دائمی است. این کمینه تاخیر با ردیابی کمترین تاخیر محلی که بستهها در صف تجربه میکنند مشخص میشود. مقدار پیشفرض و پیشنهادی 5ms است.
interval
برای اطمینان از کهنه نشدن مقدار کمینه تاخیر اندازهگیریشده استفاده میشود. کمینه تاخیر باید در آخرین دوره زمانی به طول interval تجربه شده باشد. این مقدار باید در حدود بدترین حالت زمان رفت و برگشت (RTT) از گلوگاه تنظیم شود تا نقاط انتهایی فرصت کافی برای واکنش نشان دادن داشته باشند. مقدار پیشفرض 100ms است.
ecn | noecn
میتواند برای نشانهگذاری بستهها بهجای دور ریختن آنها استفاده شود. اگر ecn فعال شده باشد، میتوان از noecn برای غیرفعال کردن آن استفاده کرد و برعکس. بهطور پیشفرض، ecn غیرفعال است.
ce_threshold
آستانهای تعیین میکند که بالاتر از آن، تمام بستهها با علامت تجربه ازدحام ECN (Congestion Experienced) نشانهگذاری میشوند. این گزینه برای الگوریتمهای کنترل ازدحام سبک DCTCP که به نشانهگذاری در آستانههای بسیار کمعمق صف نیاز دارند مفید است.
مثالها (EXAMPLES)
# tc qdisc add dev eth0 root codel
# tc -s qdisc show
qdisc codel 801b: dev eth0 root refcnt 2 limit 1000p target 5.0ms
interval 100.0ms
Sent 245801662 bytes 275853 pkt (dropped 0, overlimits 0 requeues 24)
backlog 0b 0p requeues 24
count 0 lastcount 0 ldelay 2us drop_next 0us
maxpacket 7306 ecn_mark 0 drop_overlimit 0
# tc qdisc add dev eth0 root codel limit 100 target 4ms interval 30ms ecn
# tc -s qdisc show
qdisc codel 801c: dev eth0 root refcnt 2 limit 100p target 4.0ms
interval 30.0ms ecn
Sent 237573074 bytes 268561 pkt (dropped 0, overlimits 0 requeues 5)
backlog 0b 0p requeues 5
count 0 lastcount 0 ldelay 76us drop_next 0us
maxpacket 2962 ecn_mark 0 drop_overlimit 0
همچنین ببینید (SEE ALSO)
منابع (SOURCES)
Kathleen Nichols and Van Jacobson, "Controlling Queue Delay", ACM Queue, http://queue.acm.org/detail.cfm?id=2209336
نویسندگان (AUTHORS)
الگوریتم CoDel توسط Eric Dumazet و David Taht پیادهسازی شده است. این صفحه راهنما توسط Vijay Subramanian نوشته شده است. لطفاً اصلاحات و گزارشها را به فهرست پستی شبکه لینوکس به نشانی <netdev@vger.kernel.org> ارسال کنید.
| 23 May 2012 | iproute2 |