เจาะลึกการทำ Bandwidth Management ด้วย Queue Tree บน MikroTik ฉบับมืออาชีพ
ในยุคที่การเชื่อมต่ออินเทอร์เน็ตเป็นหัวใจสำคัญของทั้งธุรกิจและที่พักอาศัย ปัญหาที่พบบ่อยที่สุดคือการแย่งชิงแบนด์วิดท์ (Bandwidth Hogging) เมื่อมีผู้ใช้งานคนใดคนหนึ่งดาวน์โหลดไฟล์ขนาดใหญ่หรือรับชมวิดีโอความละเอียดสูง จนส่งผลให้ผู้ใช้งานคนอื่นไม่สามารถทำงานหรือเล่นเกมได้อย่างราบรื่น การบริหารจัดการลำดับความสำคัญของข้อมูลจึงเป็นเรื่องที่หลีกเลี่ยงไม่ได้
MikroTik RouterOS นำเสนอเครื่องมือที่ทรงพลังอย่าง Queue Tree ซึ่งแตกต่างจาก Simple Queue ทั่วไปตรงที่มันมีความยืดหยุ่นสูงกว่า สามารถจัดการลำดับความสำคัญ (Priority) และแบ่งสัดส่วนการใช้งานตามประเภทของ Packet ข้อมูลได้อย่างแม่นยำ บทความนี้จะพาคุณไปเรียนรู้วิธีการตั้งค่า Queue Tree ตั้งแต่พื้นฐานไปจนถึงระดับที่ใช้งานได้จริงในองค์กร
1. ทำความเข้าใจโครงสร้างและหลักการทำงานของ Queue Tree

Photo by Alexander F Ungerer on Pexels
Queue Tree คือระบบจัดการคิวที่ทำงานร่วมกับ HTB (Hierarchical Token Bucket) ซึ่งเน้นการจัดลำดับความสำคัญของข้อมูลตาม “Packet Mark” ที่ถูกกำหนดมาจากเมนู Mangle ใน Firewall ต่างจาก Simple Queue ที่มักจะยึดตาม IP Address เป็นหลัก Queue Tree จะมองภาพรวมของทราฟฟิกในรูปแบบโครงสร้างต้นไม้ (Parent และ Child) ทำให้เราสามารถกำหนดเพดานรวมของทราฟฟิกทั้งหมด และแบ่งย่อยออกไปตามประเภทบริการได้
ข้อดีที่สำคัญของ Queue Tree คือการประมวลผลที่รวดเร็วและรองรับการทำ Quality of Service (QoS) ที่ซับซ้อน เช่น การให้ความสำคัญกับ VoIP หรือ Game ทราฟฟิกก่อนการดาวน์โหลดทั่วไป แม้ว่าการตั้งค่าจะดูยุ่งยากกว่าในตอนแรก แต่ในระยะยาวมันจะให้ประสิทธิภาพในการจัดสรรทรัพยากรที่คุ้มค่ากว่ามาก โดยเฉพาะในระบบที่มีผู้ใช้งานจำนวนมาก
ความแตกต่างระหว่าง Simple Queue และ Queue Tree
Simple Queue ทำงานตามลำดับจากบนลงล่าง (Sequential) และมักจะใช้จัดการแบนด์วิดท์รายบุคคล ส่วน Queue Tree ทำงานแบบขนานและเน้นการจัดการตามประเภทข้อมูล (Global) โดยต้องอาศัยการทำ Mangle เพื่อระบุตัวตนของ Packet ก่อนเสมอ
2. การเตรียมตัวด้วยการทำ Mangle และ Packet Marking
ก่อนที่เราจะไปตั้งค่าคิว เราต้องทำให้เราเตอร์รู้จักก่อนว่าข้อมูลไหนคืออะไร ขั้นตอนนี้เรียกว่าการทำ Mangle โดยเราจะทำการ “ติดป้าย” (Mark) ให้กับ Connection และ Packet ที่วิ่งผ่านเราเตอร์ เช่น การแยกทราฟฟิก HTTP, การดาวน์โหลดไฟล์ หรือการสตรีมมิ่ง เพื่อให้ Queue Tree นำป้ายเหล่านี้ไปประมวลผลต่อได้ถูกต้อง
การทำ Marking ที่ดีควรเริ่มจากการ Mark Connection ก่อน แล้วจึงนำ Connection Mark นั้นมาทำ Packet Mark อีกที วิธีนี้จะช่วยลดภาระการประมวลผลของ CPU ได้อย่างมหาศาล เพราะเราเตอร์ไม่ต้องตรวจสอบทุกๆ Packet อย่างละเอียด แต่จะตรวจสอบเฉพาะ Connection ที่ระบุไว้เท่านั้น ซึ่งเป็นเทคนิคที่ผู้เชี่ยวชาญ Network นิยมใช้กัน
ตัวอย่าง Script การทำ Mangle เพื่อแยกทราฟฟิก
/ip firewall mangle
add action=mark-connection chain=forward comment="Mark HTTP/HTTPS Connections" \
new-connection-mark=web_conn passthrough=yes protocol=tcp dst-port=80,443
add action=mark-packet chain=forward connection-mark=web_conn \
new-packet-mark=web_pkt passthrough=no
add action=mark-connection chain=forward comment="Mark DNS Connections" \
new-connection-mark=dns_conn passthrough=yes protocol=udp dst-port=53
add action=mark-packet chain=forward connection-mark=dns_conn \
new-packet-mark=dns_pkt passthrough=no
3. การสร้าง Parent Queue และการกำหนด Max Limit
หลังจากที่เราได้ Packet Mark มาแล้ว ขั้นตอนต่อไปคือการสร้างโครงสร้างต้นไม้ในหน้า Queue Tree โดยเริ่มจากการสร้าง Parent Queue ซึ่งเปรียบเสมือน “ท่อหลัก” ของเรา เราต้องกำหนดอินเทอร์เฟซให้ถูกต้อง เช่น ‘global’ สำหรับครอบคลุมทุกทิศทาง หรือระบุเป็นขา WAN สำหรับการอัปโหลด และขา LAN สำหรับการดาวน์โหลด
ในส่วนของ Parent นี้ เราจะกำหนดค่า ‘Max Limit’ ซึ่งคือความเร็วอินเทอร์เน็ตสูงสุดที่เราได้รับจาก ISP จริงๆ การตั้งค่านี้สำคัญมาก เพราะหากเราตั้งค่าสูงเกินจริง ระบบ QoS จะไม่ทำงานเนื่องจาก Queue Tree จะเข้าใจว่ายังมีแบนด์วิดท์เหลืออยู่เสมอ ทำให้ไม่มีการจัดลำดับความสำคัญเกิดขึ้นเมื่อเกิดการใช้งานหนาแน่น
การตั้งค่า Priority และ Limit-At
Limit-At คือแบนด์วิดท์ขั้นต่ำที่ระบบจะ “การันตี” ให้กับคิวนั้นๆ ส่วน Priority คือลำดับความสำคัญ (1-8 โดย 1 คือสูงที่สุด) หากแบนด์วิดท์รวมเริ่มเต็ม ระบบจะตัดแบนด์วิดท์ของคิวที่มี Priority ต่ำกว่าออกไปก่อนเพื่อรักษาคุณภาพของคิวที่มี Priority สูงกว่า
4. การสร้าง Child Queue สำหรับบริการต่างๆ
เมื่อมี Parent แล้ว เราจะสร้าง Child Queue ภายใต้ Parent นั้น โดยเลือก Packet Mark ที่เราทำไว้ในขั้นตอนที่ 2 มาใส่ในแต่ละคิว เช่น คิวสำหรับ DNS ควรมี Priority 1 เพื่อให้การค้นหาชื่อเว็บไซต์รวดเร็วเสมอ ส่วนคิวสำหรับ Web ทั่วไปอาจจะอยู่ที่ Priority 3 และคิวสำหรับดาวน์โหลดไฟล์ขนาดใหญ่อาจจะอยู่ที่ Priority 8
การแบ่ง Child Queue ช่วยให้เราควบคุมได้ว่า ในขณะที่ทุกคนกำลังใช้งานพร้อมกัน ใครควรจะได้ไปต่อ และใครควรจะถูกจำกัดความเร็ว วิธีนี้ช่วยแก้ปัญหา “เน็ตอืด” ในช่วงเวลาเร่งด่วนได้อย่างเห็นผลชัดเจน โดยที่เราไม่ต้องไปจำกัดความเร็วรายบุคคลให้เสียความรู้สึก แต่เป็นการบริหารจัดการตามความสำคัญของข้อมูลแทน
ตัวอย่าง Script การสร้าง Queue Tree
/queue tree
add max-limit=50M name=Total_Download parent=global
add limit-at=5M max-limit=50M name=Web_Traffic packet-mark=web_pkt \
parent=Total_Download priority=3
add limit-at=2M max-limit=50M name=DNS_Traffic packet-mark=dns_pkt \
parent=Total_Download priority=1
add limit-at=10M max-limit=50M name=Others packet-mark=no-mark \
parent=Total_Download priority=8
5. การตรวจสอบและปรับแต่งประสิทธิภาพ (Monitoring)
หลังจากตั้งค่าเสร็จสิ้น สิ่งที่ขาดไม่ได้คือการตรวจสอบทราฟฟิกในหน้า Queue Tree เราควรสังเกตแถบสีของคิว หากคิวเปลี่ยนเป็นสีเหลืองหรือสีแดง แสดงว่าแบนด์วิดท์ในส่วนนั้นกำลังถูกใช้งานจนเต็มเพดาน (Max Limit) ซึ่งเป็นสัญญาณว่าระบบ Queue Tree กำลังทำงานเพื่อจัดสรรทรัพยากรให้อยู่
หากพบว่าบริการบางอย่างยังช้าอยู่ แม้จะตั้ง Priority สูงแล้ว อาจต้องกลับไปตรวจสอบที่ Mangle ว่าเราจับ Packet ได้ครบถ้วนหรือไม่ หรืออาจต้องปรับค่า Limit-At ให้สูงขึ้นเพื่อให้มั่นใจว่าบริการนั้นๆ จะได้รับแบนด์วิดท์ที่เพียงพอต่อการใช้งานขั้นต่ำเสมอ การทำ Queue Tree ไม่ใช่การตั้งค่าครั้งเดียวจบ แต่เป็นการปรับแต่งให้เหมาะสมกับพฤติกรรมของผู้ใช้งานในเครือข่ายนั้นๆ
เทคนิคการตรวจสอบความถูกต้อง
- เช็คในหน้า Mangle ว่ามี Traffic วิ่งผ่าน Packet Mark ที่เราสร้างไว้หรือไม่
- ทดสอบดาวน์โหลดไฟล์ใหญ่ๆ แล้วดูว่าคิว Priority ต่ำถูกบีบความเร็วลงจริงไหม
- ใช้เครื่องมือ Torch ใน MikroTik เพื่อดูว่ามี IP ไหนที่ใช้แบนด์วิดท์สูงแต่ยังไม่ได้ถูกจัดลงคิว
- ปรับค่า Max Limit ของ Parent ให้น้อยกว่าความเร็วเน็ตจริงประมาณ 5-10% เพื่อเผื่อ Overhead
- แยกทิศทาง Upload และ Download ให้ชัดเจนเพื่อการจัดการที่แม่นยำ
สรุป
การบริหารจัดการแบนด์วิดท์ด้วย Queue Tree บน MikroTik เป็นวิธีการระดับมืออาชีพที่ช่วยให้การใช้งานอินเทอร์เน็ตในเครือข่ายมีประสิทธิภาพสูงสุด แม้จะมีความซับซ้อนในการตั้งค่าที่ต้องเริ่มจากการ Mark ข้อมูลใน Firewall แต่ผลลัพธ์ที่ได้คือความเสถียรและความยุติธรรมในการเข้าถึงทรัพยากรเครือข่าย
หัวใจสำคัญคือการเข้าใจลำดับความสำคัญของข้อมูลและการวางโครงสร้าง Parent-Child ให้สอดคล้องกับความเร็วอินเทอร์เน็ตที่มีอยู่จริง เมื่อคุณเชี่ยวชาญการใช้ Queue Tree แล้ว คุณจะสามารถควบคุมทราฟฟิกทุกรูปแบบได้อย่างเบ็ดเสร็จ ไม่ว่าจะเป็นการทำ QoS สำหรับร้านเกม ออฟฟิศ หรือหอพักก็ตาม





