کیفیت خدمات (Quality of Service یا QoS) یکی از ابزارهای کلیدی در مدیریت ترافیک شبکه است که به مدیران شبکه اجازه میدهد تا اولویتبندی، محدودسازی و بهینهسازی جریانهای داده را بر اساس نیازهای مختلف انجام دهند. در روترهای
میکروتیک که بر پایه سیستمعامل
RouterOS کار میکنند، QoS عمدتاً از طریق مکانیزم صفها (Queues) پیادهسازی میشود. این صفها بر اساس الگوریتم Hierarchical Token Bucket (HTB) عمل میکنند که امکان ایجاد ساختارهای سلسلهمراتبی پیچیده را فراهم میآورد.
در این مقاله جامع، به بررسی روشهای پیشرفته پیکربندی QoS در RouterOS میپردازیم. تمرکز بر صفهای ساده، درخت صفها، صفهای PCQ (Per Connection Queue)، علامتگذاری بستهها با قوانین Mangle و مثالهای عملی برای سناریوهایی مانند VoIP، استریم ویدیو و مدیریت کلی پهنای باند است. این مقاله بر اساس مستندات رسمی میکروتیک (تا نسخه RouterOS v7) و بهترین شیوهها تدوین شده و شامل دستورات CLI (Command Line Interface) برای پیکربندی است.
نکته مهم: برای اعمال QoS، FastTrack را برای ترافیک مورد نظر غیرفعال کنید تا صفها بر روی آن اعمال شوند. همچنین، زمان روتر را برای ویژگیهای زمانمحور (مانند محدودیتهای ساعتی) تنظیم کنید.
مفاهیم پایه QoS در میکروتیک
QoS در میکروتیک بر پایه صفها عمل میکند که مجموعهای از بستههای داده منتظر ارسال هستند. صفها ترافیک را بر اساس نرخ (Rate)، اولویت (Priority) و نوع (Type) مدیریت میکنند. دو نرخ اصلی وجود دارد:
- CIR (Committed Information Rate – limit-at): نرخ تضمینی حداقل، که حتی در شرایط شلوغی تضمین میشود.
- MIR (Maximum Information Rate – max-limit): نرخ حداکثر، که در صورت خالی بودن پهنای باند قابل استفاده است.
دو روش کنترل نرخ:
- Rate Limiting (Dropper/Shaper): بستههای مازاد را دور میریزد (queue-size=0).
- Rate Equalizing (Scheduler): بستههای مازاد را تأخیر میدهد (queue-size=unlimited).
RouterOS تا 8 سطح صف سلسلهمراتبی را پشتیبانی میکند: سطح اول صف رابط (interface queue) و 7 سطح دیگر از صفهای ساده یا درخت صفها. صفها در زنجیرههای packet flow (مانند prerouting، forward، postrouting) اعمال میشوند.
صفهای ساده (Simple Queues) در پیکربندی QoS پیشرفته در روترهای میکروتیک
صفهای ساده برای محدودسازی ترافیک یک هدف خاص (مانند IP یا سابنت) مناسب هستند و برای QoS پیشرفته با ویژگیهایی مانند P2P، اولویتبندی و burst (انفجار موقت) استفاده میشوند. صفها به ترتیب پردازش میشوند (اولین مطابقت اول اعمال میشود)، بنابراین ترتیب مهم است.
خواص کلیدی:
- target: آدرس IP/ماسک یا رابط (از دیدگاه هدف؛ src برای upload، dst برای download).
- direction: both (هر دو جهت)، upload (به هدف)، download (از هدف).
- packet-marks: علامتهای بسته از Mangle (برای دانلود، در prerouting علامتگذاری کنید).
- time: فعالسازی بر اساس زمان (مثال: 09:00-18:00,mon-fri).
- parent: برای ساختار سلسلهمراتبی، نام صف والد.
- priority (1-8): اولویت کودک (1 بالاترین).
- queue: نوع صف (از /queue type).
- limit-at/max-limit: نرخها (مثال: 5M/5M).
- burst-limit/burst-time/burst-threshold: برای انفجار موقت (burst-time دوره محاسبه میانگین است).
مثال پایه: تضمین پهنای باند برای یک سرور
فرض کنید اتصال ISP 15 مگابیت است و میخواهید 5 مگابیت تضمینی برای سرور 192.168.88.251 بدهید:
/queue simple add name=server-queue target=192.168.88.251/32 limit-at=5M/5M max-limit=15M/15M queue=default
آمارها (read-only):
/queue simple print stats
نمایش نرخ، بستههای در صف، دورریختهشده (dropped) و وامگیریها (borrows/lends).
درخت صفها (Queue Trees)
درخت صفها برای QoS پیشرفته و یکجهته مناسب هستند و بدون نیاز به علامتگذاری جداگانه برای جهتها کار میکنند. آنها به HTB والد (مانند global) متصل میشوند و ترافیک را بر اساس علامت بسته (packet-mark) فیلتر میکنند. برخلاف صفهای ساده، ترتیب ندارند و همه ترافیک همزمان عبور میکند.
مثال: محدودسازی ترافیک یوتیوب
ابتدا لیست آدرس برای یوتیوب بسازید:
/ip firewall address-list add list=Youtube address=www.youtube.com
علامتگذاری بستهها در زنجیره forward:
/ip firewall mangle add chain=forward dst-address-list=Youtube in-interface-list=LAN new-packet-mark=pmark-youtube passthrough=yes
ایجاد درخت صف:
/queue tree add name=yt-limit parent=global packet-mark=pmark-youtube max-limit=5M queue=default>
آمارها:
صفهای PCQ (Per Connection Queue)
PCQ برای توزیع عادلانه پهنای باند بین زیرجریانها (sub-streams) طراحی شده و جایگزین صفهای فردی برای کاربران متعدد است. طبقهبندی بر اساس pcq-classifier (src/dst address/port) انجام میشود و هر زیرجریان FIFO مستقل دارد.
پارامترها:
- pcq-rate: نرخ هر زیرجریان (0 برای تقسیم مساوی).
- pcq-limit/pcq-total-limit: اندازه صف هر زیرجریان/کل.
- pcq-burst-rate/time/threshold: برای burst.
- pcq-src/dst-address-mask: ماسک برای گروهبندی (مثال: /32 برای IP فردی، /24 برای سابنت).
انواع پیشفرض: pcq-upload-default (classifier=src-address)، pcq-download-default (classifier=dst-address).
مثال: تقسیم عادلانه دانلود برای سابنت
/queue simple add name=lan-pcq target=192.168.1.0/24 max-limit=100M/100M queue=pcq-download-default
این یک صف PCQ با 100 زیرجریان (برای 100 کاربر) ایجاد میکند که هر کدام به طور مساوی 1 مگابیت میگیرند.
HTB و ساختارهای سلسلهمراتبی
HTB امکان ایجاد والد/کودک را فراهم میکند. والد تمام ترافیک را جذب میکند و کودکان بر اساس اولویت تقسیم میکنند. حداکثر 7 سطح. گزینههای global-total برای کل HTB.
بهترین شیوه: مجموع limit-at کودکان ≤ max-limit والد؛ max-limit هر کودک < max-limit والد.
مثال سلسلهمراتبی: گروه کاربران والد برای LAN:
/queue simple add name=lan-parent target=192.168.1.0/24 max-limit=100M/100M queue=pcq-download-default
کودک برای کاربر خاص:
/queue simple add name=user1 parent=lan-parent target=192.168.1.10/32 limit-at=5M/5M priority=3 queue=default
علامتگذاری بستهها با Mangle
Mangle (/ip firewall mangle) برای علامتگذاری جریانها قبل از صفها استفاده میشود (در prerouting برای دانلود). علامتها (new-packet-mark) ترافیک را به صف خاص هدایت میکنند.
مثال برای VoIP: علامتگذاری پورتهای SIP/RTP:
/ip firewall mangle add chain=forward protocol=udp dst-port=5060 new-packet-mark=voip-mark passthrough=yes
/queue tree add name=voip-queue parent=global packet-mark=voip-mark priority=1 limit-at=1M queue=sfq
انواع صفها (Queue Types)
در /queue type تعریف میشوند. انواع کلیدی:
- FIFO (PFIFO/BFIFO): ساده، بدون اولویت؛ برای بار کم.
- SFQ: عادلانه برای جریانها؛ مناسب VoIP (1024 زیرجریان).
- RED: تشخیص زودرس تصادفی برای جلوگیری از احتقاق؛ با آستانههای min/max.
- PCQ: توزیع عادلانه؛ برای کاربران متعدد.
- CoDel/FQ-CoDel (v7.1+): کنترل تأخیر؛ هدف 5ms، برای کاهش bufferbloat.
- CAKE (v7.1+): پیشرفته با AQM و DRR؛ tins برای اولویت (voice: 25%)، rtt=100ms.
مثال ایجاد نوع سفارشی:
/queue type add name=custom-red kind=red red-min-threshold=10p red-max-threshold=25p red-limit=50p
مثالهای پیکربندی پیشرفته
1. اولویتبندی VoIP
علامتگذاری UDP پورتهای VoIP و اعمال SFQ با اولویت بالا:
/ip firewall mangle add chain=forward protocol=udp dst-port=5060-5090 new-packet-mark=voip passthrough=yes
/queue tree add name=voip parent=global packet-mark=voip priority=1 limit-at=2M queue=sfq
بهترین شیوه: SFQ برای جریانهای متعدد؛ CoDel برای تأخیر کم.
2. مدیریت استریم ویدیو
محدودسازی یوتیوب/نتفلیکس با burst:
/ip firewall address-list add list=video address=netflix.com
/ip firewall mangle add chain=forward dst-address-list=video new-packet-mark=video passthrough=yes
/queue tree add name=video-limit parent=global packet-mark=video max-limit=10M burst-limit=20M burst-time=10s queue=pcq-upload-default
بهترین شیوه: PCQ برای عدالت بین کاربران؛ CAKE tin برای ویدیو (50% آستانه).
3. مدیریت کلی پهنای باند با زمانبندی
برای ساعات کاری، محدودسازی کاربران:
/queue simple add name=office-users target=192.168.1.0/24 time=09:00-18:00,mon-fri max-limit=50M/50M queue=pcq-download-default
بهترین شیوه: نظارت بر dropped packets.
نظارت و عیبیابی
- آمارها: /queue simple/tree print stats (نرخ، queued، dropped).
- گرافها: در Winbox، Tools > Graphing > Queues.
- مشکلات رایج: ترتیب صفها، FastTrack فعال، عدم علامتگذاری درست. از /tool torch برای تست ترافیک استفاده کنید.
بهترین شیوهها
- مجموع نرخ کودکان را با والد هماهنگ کنید تا گرسنگی (starvation) جلوگیری شود.
- از RED/CoDel برای جلوگیری از bufferbloat استفاده کنید.
- PCQ برای محیطهای چندکاربره؛ Queue Tree برای سلسلهمراتبی.
- در v7، از CAKE/FQ-CoDel برای QoS خودکار بهره ببرید.
- همیشه تست کنید: از iperf برای شبیهسازی ترافیک.
این روشها QoS پیشرفتهای را فراهم میکنند که شبکه را کارآمد و عادلانه نگه میدارد. برای جزئیات بیشتر، به مستندات رسمی میکروتیک مراجعه کنید.
دیدگاهها
هیچ دیدگاهی برای این محصول نوشته نشده است.