| Policing action in tc(8) | Linux | Policing action in tc(8) |
نام (NAME)
tc-police - کنش اعمال مقررات و نظارت بر نرخ ترافیک در tc
خلاصه دستور (SYNOPSIS)
tc ... action police [ rate RATE burst BYTES[/BYTES] ] [ pkts_rate RATE pkts_burst PACKETS] [ mtu BYTES[/BYTES] ] [ peakrate RATE ] [ overhead BYTES ] [ linklayer TYPE ] [ CONTROL ]
tc ... filter ... [ estimator SAMPLE AVERAGE ] action police avrate RATE [ CONTROL ]
CONTROL := conform-exceed EXCEEDACT[/NOTEXCEEDACT
EXCEEDACT/NOTEXCEEDACT := { pipe | ok | reclassify | drop | continue | goto chain CHAIN_INDEX }
توضیحات (DESCRIPTION)
کنش police امکان محدودسازی نرخ بایت یا نرخ بستهٔ ترافیک منطبق بر فیلتری که به آن متصل شده است را فراهم میکند.
دو الگوریتم مختلف برای اندازهگیری نرخ بایت در دسترس است: نخستین الگوریتم از یک سطل ژتون دوگانهٔ داخلی (dual token bucket) استفاده میکند و با پارامترهای rate، burst، mtu، peakrate، overhead و linklayer پیکربندی میشود. الگوریتم دوم از یک سازوکار نمونهبرداری درون هسته استفاده میکند که میتواند با استفاده از پارامتر فیلتر estimator بهدقت تنظیم شود.
یک الگوریتم برای اندازهگیری نرخ بسته در دسترس است که مشابه الگوریتم نخست شرحدادهشده برای نرخ بایت عمل میکند. این الگوریتم با پارامترهای pkt_rate و pkt_burst پیکربندی میشود.
حداقل یکی از پارامترهای rate یا pkt_rate باید پیکربندی شود.
گزینهها (OPTIONS)
- rate RATE
- حداکثر نرخ بایت بستههای عبوری از این کنش. با بستههایی که از این حد فراتر بروند، طبق تعریف گزینهٔ conform-exceed رفتار خواهد شد.
- burst BYTES[/BYTES]
- تنظیم حداکثر جهش (burst) مجاز بر حسب بایت، که میتواند بهصورت اختیاری با یک علامت ممیز ('/') و اندازهٔ سلول (که باید توانی از ۲ باشد) دنبال شود.
- pkt_rate RATE
- حداکثر نرخ بسته برای بستههای عبوری از این کنش. با بستههایی که از این حد فراتر بروند، طبق تعریف گزینهٔ conform-exceed رفتار خواهد شد.
- pkt_burst PACKETS
- تنظیم حداکثر جهش (burst) مجاز بر حسب تعداد بستهها.
- mtu BYTES[/BYTES]
- این پارامتر حداکثر اندازهٔ بستهای است که توسط پلیسر پردازش میشود (با بستههای بزرگتر طوری رفتار میشود که گویی از نرخ پیکربندیشده فراتر رفتهاند). تنظیم درست این مقدار، دقت زمانبند را بهبود میبخشد. قالببندی مقدار آن مشابه گزینهٔ burst در بالا است. مقدار پیشفرض نامحدود است.
- peakrate RATE
- حداکثر نرخ تخلیهٔ سطل (bucket depletion rate) را تعیین میکند که بالاتر از rate است.
- avrate RATE
- استفاده از تخمینگر درون هسته برای نرخ پهنایباند و تطبیق دادن RATE مشخصشده با آن.
- overhead BYTES
- سربار پروتکل دستگاههای خروجی کپسولهساز را هنگام محاسبهٔ rate و peakrate لحاظ میکند.
- linklayer TYPE
- نوع لایهٔ پیوند (link layer) را مشخص میکند. TYPE میتواند یکی از موارد ethernet (پیشفرض)، atm یا adsl (که مترادف یکدیگرند) باشد. این گزینه برای تراز کردن جدولهای از پیش محاسبهشدهٔ نرخ با اندازههای سلول ATM به کار میرود؛ برای ethernet هیچ اقدامی صورت نمیگیرد.
- estimator SAMPLE AVERAGE
- تنظیم دقیق تخمینگر نرخ بسته درون هسته. SAMPLE و AVERAGE مقادیر زمانی هستند و بسامد نمونهبرداری و بازهٔ زمانی محاسبهٔ میانگین را کنترل میکنند.
- conform-exceed EXCEEDACT[/NOTEXCEEDACT]
- نحوهٔ مدیریت بستههایی را مشخص میکند که از حد پهنایباند پیکربندیشده فراتر میروند یا منطبق بر آن هستند. مقادیر ممکن عبارتند از:
- continue
- هیچ کاری انجام نده، فقط با کنش بعدی در صف ادامه بده.
- drop
- بسته را فوراً دور بینداز (drop).
- shot
- این مقدار مترادفی برای drop است.
- ok
- بسته را بپذیر. این حالت پیشفرض برای بستههای منطبق (conforming) است.
- pass
- این مقدار مترادفی برای ok است.
- reclassify
- با بسته به عنوان بستهای رفتار کن که با فیلتر متصل به این کنش تطابق ندارد، و با فیلتر بعدی در صف (در صورت وجود) ادامه بده. این حالت پیشفرض برای بستههای فراتر از حد (exceeding) است.
- pipe
- بسته را به کنش بعدی در صف تحویل بده.
مثالها (EXAMPLES)
یک کاربرد متداول کنش police، اعمال محدودیت بر نرخ ترافیک ورودی (ingress) از طریق دور انداختن بستههای فراتر از حد مجاز است. اگرچه بهتر است این کار در سمت فرستنده انجام شود، اما بهویژه در سناریوهایی با عدم امکان کنترل طرف مقابل (مثلاً ارائهدهندگان dial-up)، این روش اغلب بهترین کاری است که میتوان برای پایین نگه داشتن تاخیر (latency) تحت بار ترافیکی بالا انجام داد. دستورهای زیر با استفاده از qdisc با نام ingress و فیلتر u32 نظارت بر پهنایباند ورودی را روی 1mbit/s تنظیم میکنند:
# tc qdisc add dev eth0 handle ffff: ingress # tc filter add dev eth0 parent ffff: u32 \ match u32 0 0 \ police rate 1mbit burst 100k
از آنجا که یک کنش نمیتواند به تنهایی وجود داشته باشد، همیشه باید فیلتری به عنوان پیوند میان qdisc و کنش در میان باشد. مثال بالا برای این منظور از u32 استفاده میکند که طوری پیکربندی شده است تا تمام بستهها را مطابقت دهد (و در نتیجه آنها را به کنش police تحویل دهد).
همچنین ببینید (SEE ALSO)
| 20 Jan 2015 | iproute2 |