آموزش جامع راه اندازی QoS میکروتیک (مدیریت پیشرفته پهنای باند در RouterOS v7)
در دنیای شبکههای مدرن امروزی، مدیریت صحیح ترافیک و تخصیص هوشمندانه پهنای باند یکی از حیاتیترین وظایف مدیران شبکه است. هنگامی که چندین کاربر بهطور همزمان در حال دانلود فایلهای حجیم، تماشای ویدیوهای آنلاین و برقراری تماسهای صوتی هستند، شبکهای که فاقد سیستم اولویتبندی باشد، به سرعت دچار افت کیفیت، افزایش شدید پینگ و در نهایت نارضایتی کاربران خواهد شد. اینجاست که راه اندازی QoS میکروتیک به عنوان یک راهکار قطعی و قدرتمند وارد میدان میشود.
قابلیت Quality of Service یا به اختصار QoS، مجموعهای از تکنیکهاست که به روتر شما اجازه میدهد ترافیکهای حساس به تأخیر (مانند DNS و ICMP و تماسهای صوتی) را در اولویت قرار داده و از انحصار پهنای باند توسط ترافیکهای سنگین (مانند دانلودهای طولانی) جلوگیری کند.
پیشنیازها و سختافزار مورد نیاز برای تنظیمات QoS در روتر میکروتیک
پیش از ورود به مباحث فنی و کدهای اسکریپت، باید زیرساخت خود را بررسی کنید. سیستم QoS به دلیل بررسی تکتک پکتهای عبوری (Packet Inspection) و قرار دادن آنها در صفهای مختلف، نیازمند پردازش بالایی است.
- نسخه سیستمعامل: اسکریپت ارائه شده در این مقاله مختص RouterOS v7 است. میکروتیک در نسخه 7 قابلیتهای بینظیری مانند الگوریتم FQ-CoDel را معرفی کرده است که تحولی عظیم در کنترل ترافیک میکروتیک ایجاد میکند.
- سختافزار قدرتمند: اگر در یک شبکه سازمانی بزرگ با پهنای باند بالا (مثلاً لینکهای گیگابیتی اینترنت) قصد پیادهسازی این سناریو را دارید، روترهای ارزانقیمت ممکن است دچار گلوگاه پردازشی (CPU Bottleneck) شوند. در سناریوهای حرفهای و دیتاسنترها، استفاده از نسخه مجازی میکروتیک (CHR) بر روی سرورهای قدرتمند سازمانی مانند سرور HP DL360 Gen9 یک انتخاب هوشمندانه است. پردازندههای سری Xeon در سرورهای HP DL360 Gen9 به راحتی میتوانند میلیونها پکت را در ثانیه در بخش Mangle پردازش کرده و الگوریتمهای پیچیده Queue Tree را بدون افت سرعت اجرا کنند.
- آشنایی اولیه با مفاهیم: داشتن دانش پایهای درباره Mangle، Address List و Queue Tree (در سطح MTCRE) برای درک بهتر این آموزش ضروری است.
مشکل بزرگ به نام FastTrack (نکتهای که بسیاری فراموش میکنند!)
یکی از بزرگترین چالشها در مسیر راه اندازی QoS میکروتیک، ویژگی پیشفرضی به نام FastTrack است که درصورت استفاده از تنظیمات پیشفرض میکروتیک، فعال میشود. شرکت میکروتیک برای کاهش بار پردازشی روتر، قابلیت FastTrack را طراحی کرده است که باعث میشود پکتهای مربوط به کانکشنهای تثبیتشده (Established) مستقیماً و بدون عبور از بخش Mangle و Queue Tree مسیردهی شوند. این یعنی اگر FastTrack فعال باشد، اسکریپت QoS شما عملاً هیچ ترافیکی را نخواهد دید و صفهای شما خالی میمانند!
برای حل این مشکل، نیازی نیست FastTrack را کاملاً غیرفعال کنید، زیرا باعث افزایش شدید مصرف CPU میشود. در عوض، باید به روتر بگویید که کانکشنهای علامتگذاری شده توسط سیستم QoS ما را از قابلیت FastTrack مستثنی کند. بدین منظور باید به مسیر IP -> Firewall -> Filter Rules رفته و در رول مربوط به action=fasttrack-connection، شرط connection-mark=!LAN-WAN-Conn را اضافه کنید. این کار تضمین میکند که ترافیک هدف ما به درستی وارد صفهای مدیریت پهنای باند شود.
بررسی معماری اسکریپت هوشمند QoS
اسکریپت ما برای راه اندازی QoS میکروتیک، از چهار بخش اصلی و کاملاً ساختاریافته تشکیل شده است که هر کدام وظیفه خاصی را در زنجیره کنترل ترافیک شبکه بر عهده دارند.
بخش اول: تعریف Address List شبکههای داخلی
در گام نخست، باید رنج آیپیهای داخلی شبکه خود را به روتر معرفی کنیم. این کار از طریق Address List انجام میشود. استفاده از لیستها باعث میشود تا اگر در آینده سابنت جدیدی به شبکه اضافه شد، نیازی به تغییر رولهای پیچیده فایروال نداشته باشید و تنها با اضافه کردن یک خط به لیست، آن سابنت تحت پوشش QoS قرار گیرد.
بخش دوم: دستهبندی اینترفیسها (Interface Lists)
یکی از اصول مهم در کانفیگهای تمیز و استاندارد میکروتیک، استفاده از Interface List است. ما دو لیست مجزا ایجاد میکنیم: یکی با نام LocalNetwork که شامل پورتهای متصل به کاربران داخلی (مثل ether2) است و دیگری با نام GlobalNetwork که شامل اینترفیسهای متصل به اینترنت است. این جداسازی، نوشتن رولهای جهتدار (آپلود و دانلود) را در مراحل بعدی بسیار ساده و خوانا میکند.
بخش سوم: علامتگذاری ترافیک با استفاده از Mangle
قلب تپنده تنظیمات QoS در میکروتیک، جدول Mangle است. در این بخش ما به شکل کاملاً بهینه ترافیک را نشانهگذاری میکنیم. بسیاری از کاربران، کانکشنها را هم برای آپلود و هم برای دانلود مارک میکنند که این کار باعث هدررفت منابع پردازشی سرور (مانند همان سرور HP DL360 Gen9 که پیشتر اشاره شد) میشود.
در اسکریپت ما، کانکشنها تنها یک بار در مسیر Forward و با اکشن mark-connection نشانهگذاری میشوند (با نام LAN-WAN-Conn). سپس بر اساس اینکه ترافیک از کدام اینترفیس در حال عبور است، پکتها به عنوان Upload-Packet یا Download-Packet علامتگذاری عمومی میشوند.
پس از این مرحله، با استفاده از پارامتر passthrough=no، پکتهای عمومی را به دستههای دقیقتری مانند ترافیک وب (پورتهای 80 و 443)، درخواستهای DNS (پورت 53) و ICMP (برای پینگ) تفکیک میکنیم. ترافیکی که در هیچیک از این دستهها نگنجد، به صورت خودکار نشان Other-Packet را دریافت میکند.
بخش چهارم: صفبندی (Queue Tree) و معجزه FQ-CoDel
حالا که تمام پکتها به درستی دارای لیبلهای اختصاصی هستند، نوبت به محدودسازی و اولویتبندی آنها در Queue Tree میرسد. در اینجا ما دو صف والد (Parent) برای مجموع آپلود و مجموع دانلود میسازیم.
در زیرمجموعه این صفها، صفهای فرزند (Children) قرار میگیرند. ما به ترافیک DNS و ICMP بالاترین اولویت (Priority=1 و Priority=2) را اختصاص دادهایم تا حتی در زمان دانلودهای سنگین توسط کاربران، فرآیند باز کردن صفحات وب و پینگ شبکه با هیچ تأخیری مواجه نشود.
پدیده Bufferbloat زمانی رخ میدهد که بافرهای تجهیزات شبکه بیش از حد پر شده و باعث افزایش شدید و ناگهانی پینگ میشوند. در نسخههای قدیمی میکروتیک مجبور بودیم از الگوریتمهایی نظیر PCQ استفاده کنیم. اما در RouterOS v7، نوع جدیدی از صف به نام
fq-codel معرفی شده است. این الگوریتم Active Queue Management (AQM) به صورت کاملاً خودکار و هوشمند، تأخیر بستهها را اندازهگیری کرده و بستههای حجیم را کنترل میکند تا ترافیکهای سبک و بلادرنگ، بدون معطلی از روتر عبور کنند. در این اسکریپت، ما FQ-CoDel را روی تمامی صفهای فرزند اعمال کردهایم.تداخل QoS با Policy Routing (سناریوی مسیریابی بدون Connection Mark)
یکی از سؤالات رایج در راه اندازی QoS میکروتیک این است که آیا رولهای Mangle مربوط به این اسکریپت با رولهای Policy Routing (هدایت ترافیک به مسیرهای خاص) تداخلی ایجاد میکنند؟
پاسخ کوتاه این است: خیر، تداخلی وجود ندارد. در معماری Packet Flow میکروتیک، رولهای مربوط به mark-routing معمولاً در زنجیره Prerouting نوشته میشوند و وظیفه آنها تعیین مسیر خروجی بسته است. از آنجایی که اسکریپت QoS ما در زنجیره Forward (که بعد از تصمیمگیری مسیریابی اجرا میشود) عمل میکند، خللی در مسیریابی ایجاد نخواهد شد.
علاوه بر این، در سیستم میکروتیک، یک بسته میتواند بهطور همزمان یک routing-mark (برای مسیریابی) و یک connection-mark همراه با packet-mark (برای کنترل پهنای باند) داشته باشد. تنها شرط مهم این است که در رولهای Policy Routing خود، تیک گزینه passthrough=yes را زده باشید تا روتر پس از اعمال مارک مسیریابی، پردازش بسته را در زنجیره Mangle متوقف نکند و آن را به رولهای QoS ما تحویل دهد.
راهنمای محاسبه دقیق مقادیر پهنای باند در Queue Tree (مرحله ۴)
برای اینکه سیستم QoS میکروتیک به درستی کار کند و بافرها تحت کنترل باقی بمانند، تخصیص مقادیر limit-at و max-limit در مرحله چهارم اسکریپت باید بر اساس قوانین مشخصی انجام شود. مقداردهی اشتباه در این بخش باعث از کار افتادن صفبندی (Queueing) خواهد شد. مقادیر پیشفرض اسکریپت متناسب با سرور مجازی میکروتیک با پورت 1 گیگابیت تنظیم شده است.
- محاسبه max-limit برای صفهای والد (Parents): این مقدار نشاندهنده کل پهنای باند در دسترس شما است.
قانون طلایی: هیچگاه این مقدار را معادل ۱۰۰٪ سرعت اسمی اینترنت خود قرار ندهید. برای جلوگیری از پدیده Bufferbloat در مودم و تجهیزات ISP، همیشه مقدارmax-limitوالد را بین ۸۵٪ تا ۹۵٪ از حداکثر سرعت واقعی (تست شده) در نظر بگیرید. - محاسبه limit-at برای صفهای فرزند (Children): این پارامتر به معنای پهنای باند تضمینشده برای آن صف در زمان شلوغی شبکه است. روتر تحت هر شرایطی این مقدار را برای آن دسته از ترافیک رزرو میکند.
قانون طلایی: مجموع مقادیرlimit-atدر تمامی صفهای فرزند، باید دقیقاً مساوی یا کمتر از مقدارmax-limitصف والد آنها باشد. - محاسبه max-limit برای صفهای فرزند (Children): این پارامتر سقف مصرف یک صف را در زمان خلوتی شبکه تعیین میکند. معمولاً این مقدار را برابر با
max-limitصف والد تنظیم میکنند تا هر سرویس بتواند از کل ظرفیت خالی شبکه استفاده کند.
در سرویسهای ADSL، سرعت آپلود بسیار محدود است و پر شدن آن باعث افزایش شدید پینگ میشود. در این سناریو راه اندازی QoS میکروتیک، سرعت واقعی دانلود را 16M و آپلود را 1M فرض میکنیم. برای اعمال قانون ۹۰٪، سقف دانلود را 15M و سقف آپلود را 900k (معادل ۹۰۰ کیلوبیت) در نظر میگیریم.
محاسبات بخش دانلود (Parent max-limit = 15M)
- ترافیک Download DNS: مقدار
limit-at=1M(تضمین سرعت باز شدن صفحات) | مقدارmax-limit=15M - ترافیک Download ICMP: مقدار
limit-at=1M(تضمین پینگ پایین و بدون نوسان) | مقدارmax-limit=15M - ترافیک Download Web: مقدار
limit-at=8M(تخصیص تضمینی برای وبگردی روزمره) | مقدارmax-limit=15M - ترافیک Download Other: مقدار
limit-at=5M(باقیمانده ظرفیت برای ترافیک متفرقه و دانلودها) | مقدارmax-limit=15M - بررسی صحت محاسبات: مجموع مقادیر تضمینشده (۱ + ۱ + ۸ + ۵ = ۱۵ مگابیت) که دقیقاً برابر با ظرفیت والد است.
محاسبات بخش آپلود (Parent max-limit = 900k)
- ترافیک Upload DNS: مقدار
limit-at=100k| مقدارmax-limit=900k - ترافیک Upload ICMP: مقدار
limit-at=100k| مقدارmax-limit=900k - ترافیک Upload Web: مقدار
limit-at=500k(برای ارسال درخواستهای وب) | مقدارmax-limit=900k - ترافیک Upload Other: مقدار
limit-at=200k(برای ارسال فایل و ترافیک متفرقه) | مقدارmax-limit=900k - بررسی صحت محاسبات: مجموع مقادیر تضمینشده (۱۰۰ + ۱۰۰ + ۵۰۰ + ۲۰۰ = ۹۰۰ کیلوبیت) که با محدودیت آپلود تنظیم شده مطابقت دارد.
کد کامل اسکریپت راه اندازی QoS در میکروتیک (RouterOS v7)
در نهایت، کد کامل و بهینهسازی شده برای اجرای تمامی سناریوهای بالا در زیر قرار داده شده است. شما میتوانید این کد را به دقت کپی کرده و پس از تغییر مقادیر آیپیها، نام اینترفیسها و محدودیتهای پهنای باند (در بخش Step 4)، آن را در روتر میکروتیک خود اجرا نمایید.
# ==============================================================================
# Advanced Protocol-Based QoS for RouterOS v7 with FQ-CoDel, By ServerSwitch.ir
# ==============================================================================
# IMPORTANT: FASTTRACK COMPATIBILITY
# If you are using default MikroTik firewall rules, FastTrack will bypass this QoS.
# Go to IP -> Firewall -> Filter Rules.
# Find the rule with action=fasttrack-connection.
# Modify it to ignore connections marked by this script:
# /ip firewall filter set [find action=fasttrack-connection] connection-mark=!LAN-WAN-Conn
# ==============================================================================
# Step 1: define local address ranges
/ip firewall address-list
add list=local-range address=192.168.0.0/16
add list=local-range address=172.16.0.0/12
add list=local-range address=10.0.0.0/8
# Step 2: define local and internet interfaces
# interface lists
/interface list
add comment="Clients" name=LocalNetwork
add comment="Internet Interfaces" name=GlobalNetwork
# interface members (Change these based on your network)
/interface list member
add list=LocalNetwork interface=ether2
add list=GlobalNetwork interface=pppoe-client1
# Step 3: define firewall rules (Mangle)
/ip firewall mangle
add action=mark-connection chain=forward comment="Mark LAN-WAN Connection" in-interface-list=LocalNetwork out-interface-list=GlobalNetwork new-connection-mark=LAN-WAN-Conn passthrough=yes
add action=mark-packet chain=forward comment="Generic Download Packet" connection-mark=LAN-WAN-Conn in-interface-list=GlobalNetwork new-packet-mark=Download-Packet passthrough=yes
add action=mark-packet chain=forward comment="Generic Upload Packet" connection-mark=LAN-WAN-Conn out-interface-list=GlobalNetwork new-packet-mark=Upload-Packet passthrough=yes
add action=mark-packet chain=forward comment="Download Web" new-packet-mark=Download-Web-Packet packet-mark=Download-Packet passthrough=no protocol=tcp src-port=80,443,8080,8888
add action=mark-packet chain=forward comment="Download DNS" new-packet-mark=Download-DNS-Packet packet-mark=Download-Packet passthrough=no protocol=udp src-port=53
add action=mark-packet chain=forward comment="Download ICMP" new-packet-mark=Download-ICMP-Packet packet-mark=Download-Packet passthrough=no protocol=icmp
add action=mark-packet chain=forward comment="Download Other" new-packet-mark=Download-Other-Packet packet-mark=Download-Packet passthrough=no
add action=mark-packet chain=forward comment="Upload Web" new-packet-mark=Upload-Web-Packet packet-mark=Upload-Packet passthrough=no protocol=tcp dst-port=80,443,8080,8888
add action=mark-packet chain=forward comment="Upload DNS" new-packet-mark=Upload-DNS-Packet packet-mark=Upload-Packet passthrough=no protocol=udp dst-port=53
add action=mark-packet chain=forward comment="Upload ICMP" new-packet-mark=Upload-ICMP-Packet packet-mark=Upload-Packet passthrough=no protocol=icmp
add action=mark-packet chain=forward comment="Upload Other" new-packet-mark=Upload-Other-Packet packet-mark=Upload-Packet passthrough=no
# Step 4: define queues and Active Queue Management
# Create an FQ-CoDel queue type (RouterOS v7 Exclusive)
/queue type
add kind=fq-codel name=fq-codel-default
/queue tree
add comment="Total Download" max-limit=1G name=Download parent=global
add comment="Total Upload" max-limit=512M name=Upload parent=global
add comment="Download Web" limit-at=400M max-limit=1G name=Download-Web packet-mark=Download-Web-Packet parent=Download priority=3 queue=fq-codel-default
add comment="Download ICMP" limit-at=100M max-limit=1G name=Download-ICMP packet-mark=Download-ICMP-Packet parent=Download priority=2 queue=fq-codel-default
add comment="Download DNS" limit-at=100M max-limit=1G name=Download-DNS packet-mark=Download-DNS-Packet parent=Download priority=1 queue=fq-codel-default
add comment="Download Other" limit-at=400M max-limit=1G name=Download-Other packet-mark=Download-Other-Packet parent=Download queue=fq-codel-default
add comment="Upload Web" limit-at=320M max-limit=512M name=Upload-Web packet-mark=Upload-Web-Packet parent=Upload priority=3 queue=fq-codel-default
add comment="Upload DNS" limit-at=64M max-limit=512M name=Upload-DNS packet-mark=Upload-DNS-Packet parent=Upload priority=1 queue=fq-codel-default
add comment="Upload ICMP" limit-at=64M max-limit=512M name=Upload-ICMP packet-mark=Upload-ICMP-Packet parent=Upload priority=2 queue=fq-codel-default
add comment="Upload Other" limit-at=64M max-limit=512M name=Upload-Other packet-mark=Upload-Other-Packet parent=Upload queue=fq-codel-default
نتیجهگیری نهایی
اجرای یک سیستم مدیریت پهنای باند میکروتیک به صورت اصولی، تفاوت بین یک شبکه پرتنش و کند و یک شبکه پایدار و پرسرعت را رقم میزند. با استفاده از اسکریپت ارائهشده و بهرهگیری از جادوی FQ-CoDel در RouterOS v7، شما میتوانید کیفیت سرویس (Quality of Service) شبکههای خود را به سطح کلاسهای سازمانی ارتقا دهید. به یاد داشته باشید که موفقیت این سیستم در گرو بررسی دقیق ترافیک، اطمینان از دور زدن قانون FastTrack و استفاده از سختافزارهای مناسب (مانند نصب بر روی سرورهای پردازشی نظیر HP DL360 Gen9 در دیتاسنترها یا انتخاب روترهای مناسب در شبکههای سازمانی) میباشد.














