FQ_CoDel(8) Linux FQ_CoDel(8)

tc-fq_codel - صف‌بندی عادلانه (FQ) همراه با تاخیر کنترل‌شده (CoDel)

tc qdisc ... fq_codel [ limit PACKETS ] [ flows NUMBER ] [ target TIME ] [ interval TIME ] [ quantum BYTES ] [ ecn | noecn ] [ ce_threshold TIME ] [ ce_threshold_selector VALUE/MASK ] [ memory_limit BYTES ]

الگوریتم FQ_Codel (صف‌بندی عادلانه همراه با تاخیر کنترل‌شده یا Fair Queuing Controlled Delay) یک انضباط صف‌بندی است که صف‌بندی عادلانه (Fair Queuing) را با طرح مدیریت فعال صف CoDel (AQM) ترکیب می‌کند. FQ_Codel از یک مدل تصادفی برای دسته‌بندی بسته‌های ورودی به جریان‌های مختلف استفاده می‌کند و جهت تخصیص سهمی عادلانه از پهنای باند به تمامی جریان‌های استفاده‌کننده از صف به کار می‌رود. هر یک از این جریان‌ها توسط انضباط صف‌بندی CoDel مدیریت می‌شود. با توجه به این‌که CoDel در ساختار داخلی خود از صف FIFO استفاده می‌کند، از تغییر ترتیب بسته‌ها (reordering) در یک جریان جلوگیری می‌شود.

دارای معنایی مشابه با codel است و حد نهایی و سخت‌گیرانه بر روی اندازه واقعی صف به شمار می‌رود. هنگامی که این حد تکمیل شود، بسته‌های ورودی جدید دور ریخته (drop) می‌شوند. مقدار پیش‌فرض ۱۰۲۴۰ بسته است.

محدودیتی بر تعداد کل بایت‌هایی که می‌توانند در این نمونه از FQ-CoDel در صف قرار گیرند تعیین می‌کند. مقداری که کمتر باشد میان حد بسته‌ای پارامتر limit و حد حافظه اعمال خواهد شد. مقدار پیش‌فرض ۳۲ مگابایت (32 MB) است.

تعداد جریان‌هایی است که بسته‌های ورودی به آن‌ها دسته‌بندی می‌شوند. به دلیل ماهیت تصادفی درهم‌سازی (hashing)، ممکن است چندین جریان در یک شیار (slot) مشترک قرار گیرند. جریان‌های جدیدتر نسبت به جریان‌های قدیمی‌تر اولویت دارند. این پارامتر فقط در زمان بارگذاری قابل تنظیم است، زیرا حافظه باید به جدول درهم‌سازی تخصیص یابد. مقدار پیش‌فرض ۱۰۲۴ است.

دارای معنایی مشابه با codel است و کمینه تاخیر قابل‌قبول صف ماندگار/دائمی (standing/persistent queue delay) است. این کمینه تاخیر با ردیابی کمترین تاخیر صف محلی که بسته‌ها تجربه می‌کنند مشخص می‌شود. مقدار پیش‌فرض 5ms است.

دارای معنایی مشابه با codel است و برای اطمینان از کهنه نشدن مقدار کمینه تاخیر اندازه‌گیری‌شده استفاده می‌شود. کمینه تاخیر باید در آخرین دوره زمانی به طول interval تجربه شده باشد. این مقدار باید در حدود بدترین حالت زمان رفت و برگشت (RTT) از گلوگاه تنظیم شود تا نقاط انتهایی فرصت کافی برای واکنش نشان دادن داشته باشند. مقدار پیش‌فرض 100ms است.

تعداد بایت‌هایی است که به‌عنوان «کسری» (deficit) در الگوریتم صف‌بندی عادلانه استفاده می‌شود. مقدار پیش‌فرض روی ۱۵۱۴ بایت تنظیم شده است که برابر با MTU اترنت به اضافه ۱۴ بایت طول سرآیند سخت‌افزاری است.

دارای معنایی مشابه با codel است و می‌تواند برای نشانه‌گذاری بسته‌ها به‌جای دور ریختن آن‌ها استفاده شود. اگر ecn فعال شده باشد، می‌توان از noecn برای غیرفعال کردن آن استفاده کرد و برعکس. بر خلاف codel، گزینه ecn به‌طور پیش‌فرض فعال است.

آستانه‌ای تعیین می‌کند که بالاتر از آن، تمامی بسته‌ها با علامت تجربه ازدحام ECN (Congestion Experienced) نشانه‌گذاری می‌شوند. این قابلیت برای الگوریتم‌های کنترل ازدحام به سبک DCTCP که نیازمند نشانه‌گذاری در آستانه‌های صف بسیار کم‌عمق هستند کاربرد دارد.

فیلتری تعیین می‌کند تا قابلیت ce_threshold تنها به زیرمجموعه‌ای از ترافیک مشاهده‌شده توسط qdisc اعمال گردد. در صورت تنظیم، مقدار MASK به‌صورت AND بیتی بر روی بایت diffserv/ECN سرآیند IP اعمال می‌شود و تنها در صورتی که نتیجه این ماسک برابر با VALUE باشد، منطق ce_threshold بر روی بسته اعمال خواهد شد.

حداکثر تعداد بسته‌هایی را تعیین می‌کند که هنگام فراتر رفتن از حد limit یا memory_limit دور ریخته می‌شوند. مقدار پیش‌فرض ۶۴ است.

# tc qdisc add dev eth0 root fq_codel
# tc -s qdisc show
qdisc fq_codel 8002: dev eth0 root refcnt 2 limit 10240p flows 1024 quantum 1514
 target 5.0ms interval 100.0ms ecn
   Sent 428514 bytes 2269 pkt (dropped 0, overlimits 0 requeues 0)
   backlog 0b 0p requeues 0
    maxpacket 256 drop_overlimit 0 new_flow_count 0 ecn_mark 0
    new_flows_len 0 old_flows_len 0
# tc qdisc add dev eth0 root fq_codel limit 2000 target 3ms interval 40ms noecn
# tc -s qdisc show
qdisc fq_codel 8003: dev eth0 root refcnt 2 limit 2000p flows 1024 quantum 1514
target 3.0ms interval 40.0ms
 Sent 2588985006 bytes 1783629 pkt (dropped 0, overlimits 0 requeues 34869)
 backlog 0b 0p requeues 34869
  maxpacket 65226 drop_overlimit 0 new_flow_count 73 ecn_mark 0
  new_flows_len 1 old_flows_len 3

tc(8), tc-codel(8), tc-red(8)

صف‌بندی FQ_CoDel توسط Eric Dumazet پیاده‌سازی شده است. این صفحه راهنما توسط Vijay Subramanian نوشته شده است. لطفاً اصلاحات و گزارش‌ها را به فهرست پستی شبکه لینوکس به نشانی <netdev@vger.kernel.org> ارسال فرمایید.

4 June 2012 iproute2