Bandwidth Management ด้วย Queue Tree – 2 พฤษภาคม 2569

Bandwidth Management ด้วย Queue Tree: จากวิกฤตเน็ตอืด สู่การจัดการทราฟฟิกแบบมืออาชีพ

ในฐานะที่ผมคลุกคลีอยู่ในวงการ Network มานาน ปัญหาคลาสสิกที่ผมมักจะเจอเสมอไม่ใช่เรื่องของเน็ตไม่แรง แต่เป็นเรื่องของ “การแย่ง Bandwidth” กันเองภายในองค์กร ผมเคยผ่านเหตุการณ์ที่ผู้บริหารกำลังประชุม Video Conference สำคัญ แต่สัญญาณกลับกระตุกและขาดหาย เพียงเพราะพนักงานในแผนกหนึ่งกำลังดาวน์โหลดไฟล์อัปเดตซอฟต์แวร์ขนาดใหญ่พร้อมกัน ปัญหานี้ทำให้ผมรู้ว่าความเร็วอินเทอร์เน็ตที่สูงระดับ Gigabit ไม่ได้ช่วยอะไรเลย หากเราไม่มีการจัดการจราจรที่ดีพอ

การจัดการ Bandwidth ด้วยฟีเจอร์ Simple Queue ใน MikroTik อาจจะเพียงพอสำหรับบ้านพักอาศัยหรือออฟฟิศขนาดเล็ก แต่เมื่อโครงสร้างเครือข่ายซับซ้อนขึ้น มีการแยก VLAN มีการลำดับความสำคัญของข้อมูล (QoS) ที่ต่างกัน Simple Queue จะเริ่มแสดงข้อจำกัด ทั้งในเรื่องของประสิทธิภาพ CPU และความยืดหยุ่นในการจัดลำดับความสำคัญ นั่นคือจุดเริ่มต้นที่ทำให้ผมต้องหันมาศึกษาและใช้งาน Queue Tree อย่างจริงจัง เพื่อสร้างระบบที่ “ฉลาด” และ “ยุติธรรม” สำหรับทุกคนในเครือข่าย

1. ทำไมต้อง Queue Tree? ประสบการณ์จากหน้างานจริง

Bandwidth Management ด้วย Queue Tree

Photo by Erik Mclean on Pexels

ย้อนกลับไปสมัยที่ผมยังใช้ Simple Queue จัดการระบบหอพักขนาด 100 ห้อง ปัญหาที่พบคือเมื่อมีผู้ใช้งานพร้อมกันจำนวนมาก ตัว Router เริ่มมีอาการ CPU Load พุ่งสูงเกิน 90% ส่งผลให้ Latency (Ping) แกว่งอย่างรุนแรง สาเหตุเกิดจาก Simple Queue ทำงานแบบ Sequential หรือการตรวจเช็คเงื่อนไขทีละบรรทัดจากบนลงล่าง ยิ่งมี User มากเท่าไหร่ Router ก็ยิ่งต้องทำงานหนักขึ้นเท่านั้น นี่คือบทเรียนแรกที่ทำให้ผมเข้าใจว่า Simple Queue ไม่ใช่คำตอบสำหรับระบบที่มีสเกลขนาดใหญ่

Queue Tree เข้ามาแก้ปัญหานี้ด้วยการทำงานร่วมกับ Mangle ใน IP Firewall เพื่อทำเครื่องหมาย (Mark Packet) ให้กับข้อมูลก่อน จากนั้นจึงนำ Packet ที่ถูกทำเครื่องหมายแล้วมาจัดลงใน “โครงสร้างแบบต้นไม้” ซึ่งมีความยืดหยุ่นสูงกว่ามาก เราสามารถกำหนดลำดับความสำคัญ (Priority) ได้ถึง 8 ระดับ ทำให้ผมสามารถล็อก Bandwidth ให้กับระบบ VoIP และ Zoom ให้มีความสำคัญสูงสุด (Priority 1) ในขณะที่การดาวน์โหลดไฟล์ทั่วไปถูกจัดไปอยู่ในระดับต่ำสุด (Priority 8) ผลลัพธ์ที่ได้คือเสียงสนทนาที่ใสชัดเจนแม้ในขณะที่ทราฟฟิกโดยรวมจะเต็มขีดจำกัดก็ตาม

ข้อแตกต่างที่เห็นได้ชัดระหว่าง Simple Queue และ Queue Tree

นอกจากเรื่องประสิทธิภาพแล้ว Queue Tree ยังช่วยให้เราสามารถทำ “Global Limitation” ได้อย่างแท้จริง ในขณะที่ Simple Queue มักจะเน้นไปที่การจำกัดรายบุคคล แต่ Queue Tree ช่วยให้เรามองเห็นภาพรวมของท่ออินเทอร์เน็ต เช่น เรามีเน็ต 500Mbps เราสามารถแบ่งเป็นก้อนใหญ่ๆ สำหรับ Wi-Fi 200Mbps และ LAN 300Mbps ได้อย่างแม่นยำ แม้ว่าภายใน Wi-Fi จะมีคนใช้เพียงคนเดียว เขาก็จะไม่สามารถดึง Bandwidth เกิน 200Mbps ไปรบกวนฝั่ง LAN ได้เลย

2. หัวใจสำคัญคือการทำ Mangle: การคัดแยกประเภทข้อมูล

ก่อนที่เราจะไปตั้งค่า Queue Tree สิ่งที่ยากที่สุดและสำคัญที่สุดคือการ “Mark Packet” ครับ ผมเคยพลาดมาแล้วกับการลืมทำเครื่องหมายทราฟฟิกขาออก (Upload) ทำให้คุมความเร็วได้เฉพาะขาดาวน์โหลดอย่างเดียว การทำ Mangle เปรียบเสมือนการติดป้ายสติ๊กเกอร์บนกล่องพัสดุเพื่อให้พนักงานคัดแยก (Router) รู้ว่ากล่องไหนควรไปวางไว้ที่สายพานเส้นไหน หากเราติดป้ายผิด หรือลืมติดป้าย ระบบ Queue Tree ก็จะไม่ทำงานเลย

ในประสบการณ์ของผม การแยก Packet ควรมองเป็น 2 ขั้นตอนเสมอ คือ 1. Mark Connection เพื่อลดภาระของ CPU และ 2. Mark Packet โดยอ้างอิงจาก Connection นั้นๆ วิธีนี้จะช่วยให้ Router ทำงานได้รวดเร็วขึ้นมาก โดยเฉพาะในรุ่นเล็กๆ อย่าง hEX หรือ hAP ac การระบุ Chain ใน Firewall ก็สำคัญไม่แพ้กัน ส่วนใหญ่เราจะใช้ Forward chain สำหรับทราฟฟิกที่วิ่งผ่านตัว Router และต้องระบุ In-Interface หรือ Src-Address ให้ชัดเจนเพื่อป้องกันการสับสนของทิศทางข้อมูล

ตัวอย่างการเขียน Script สำหรับ Mark Packet

/ip firewall mangle
add action=mark-connection chain=forward comment="Mark VoIP Connection" \
    dst-port=5060,5061 new-connection-mark=voip_conn passthrough=yes protocol=udp
add action=mark-packet chain=forward connection-mark=voip_conn \
    new-packet-mark=voip_pkt passthrough=no

add action=mark-connection chain=forward comment="Mark General Web" \
    new-connection-mark=web_conn passthrough=yes protocol=tcp port=80,443
add action=mark-packet chain=forward connection-mark=web_conn \
    new-packet-mark=web_pkt passthrough=no

3. การสร้างโครงสร้างต้นไม้ (Hierarchical Structure)

เมื่อเราได้ Packet Mark มาแล้ว ขั้นตอนต่อไปคือการสร้าง Queue Tree ผมมักจะแนะนำให้เริ่มจากการสร้าง “Parent Queue” เสมอ เปรียบเสมือนการสร้างท่อประธานขนาดใหญ่ โดยแบ่งเป็นฝั่ง Download และ Upload แยกจากกัน (โดยอ้างอิงจาก Interface ขา WAN และ LAN) การกำหนด Max Limit ใน Parent Queue คือการบอก Router ว่า “อินเทอร์เน็ตที่เรามีจริงๆ นั้นมีความเร็วเท่าไหร่” เพื่อให้มันสามารถคำนวณสัดส่วน Bandwidth ให้กับลูกข่ายได้อย่างถูกต้อง

ความมหัศจรรย์ของ Queue Tree อยู่ที่พารามิเตอร์ “Limit At” และ “Max Limit” ครับ Limit At คือการการันตี Bandwidth (Guaranteed Bandwidth) ที่ User หรือ Service นั้นๆ จะได้รับแน่นอนแม้เน็ตจะหนาแน่น ส่วน Max Limit คือเพดานสูงสุดที่วิ่งได้ถ้าท่อยังว่างอยู่ การตั้งค่าแบบนี้ช่วยแก้ปัญหา “เน็ตโดนสูบ” ได้อย่างชะงัดนัก ผมเคยตั้งค่าให้แผนกบัญชีมี Limit At ที่สูงกว่าแผนกอื่นๆ เพื่อให้มั่นใจว่าการส่งข้อมูลภาษีผ่านเว็บสรรพากรจะไม่หลุดแม้จะเป็นช่วงพักเที่ยงที่ทุกคนดู YouTube พร้อมกัน

การกำหนด Priority และการแชร์ Bandwidth

ลำดับความสำคัญ (Priority) ใน Queue Tree จะทำงานเมื่อ Bandwidth รวมเริ่มเต็มเท่านั้น หากเน็ตยังเหลือ ทุกคนจะได้ Max Limit เท่ากันหมด แต่เมื่อไหร่ที่เน็ตเต็ม Router จะเริ่มจ่าย Bandwidth ให้กับ Queue ที่มี Priority 1 ก่อนจนครบตามค่า Limit At แล้วจึงค่อยๆ ไล่ลำดับลงไปหา Priority 8 จุดนี้เองที่ทำให้ระบบ Network ของเรามีความเสถียรในระดับ Enterprise เพราะเราคุมได้ว่าบริการไหน “ห้ามตาย” และบริการไหน “รอได้”

4. เทคนิค PCQ: เคล็ดลับการแบ่งเน็ตให้ทุกคนเท่ากันอัตโนมัติ

ปัญหาหนึ่งที่ผมเจอบ่อยคือ ในหนึ่ง Queue Tree เรามี User 50 คน ถ้าเราไม่ตั้งค่าอะไรเลย คนที่ใช้โปรแกรมช่วยดาวน์โหลดจะดึง Bandwidth ไปเกือบทั้งหมด ทิ้งให้คนอื่นได้ใช้เพียงน้อยนิด การจะมานั่งสร้าง Queue รายคนก็เป็นเรื่องที่เสียเวลาเกินไป วิธีแก้ที่ผมรักมากที่สุดคือการใช้ “PCQ” (Per Connection Queue) ร่วมกับ Queue Tree ครับ

PCQ จะทำหน้าที่เป็น “ตัวแบ่งเค้กอัตโนมัติ” ภายใน Queue นั้นๆ เช่น ถ้าเรากำหนดให้กลุ่ม Wi-Fi มีความเร็วรวม 100Mbps หากมีคนใช้งาน 1 คน เขาจะได้ 100Mbps เต็ม แต่ถ้ามีคนเข้ามาใช้งานเพิ่มเป็น 2 คน PCQ จะทำการหารแบ่งให้คนละ 50Mbps ทันทีโดยที่เราไม่ต้องไปยุ่งอะไรเลย วิธีนี้ช่วยลดงาน Admin ได้มหาศาล และสร้างความพึงพอใจให้กับผู้ใช้งานเพราะทุกคนรู้สึกว่าได้รับความยุติธรรมในการเข้าถึงอินเทอร์เน็ต

ตัวอย่างการตั้งค่า Queue Type แบบ PCQ

/queue type
add kind=pcq name=pcq_download pcq-classifier=dst-address pcq-rate=0
add kind=pcq name=pcq_upload pcq-classifier=src-address pcq-rate=0

/queue tree
add max-limit=100M name=Total_Download parent=bridge-local
add name=Users_Download packet-mark=web_pkt parent=Total_Download \
    queue=pcq_download priority=8

5. การตรวจสอบและปรับแต่ง (Monitoring & Fine-Tuning)

หลังจากคอนฟิกเสร็จ งานของ Network Engineer ยังไม่จบครับ เราต้องทำการ Monitor ดูว่า Queue ที่เราสร้างขึ้นนั้นทำงานตามที่คิดไว้หรือไม่ ในหน้า Queue Tree ของ MikroTik จะมีแถบสีแสดงสถานะ หาก Queue เป็นสีเขียวแสดงว่าทราฟฟิกยังว่าง สีเหลืองคือเริ่มหนาแน่น และสีแดงคือ Bandwidth เต็มตามที่กำหนดไว้ ถ้าผมเห็นสีแดงค้างนานๆ ใน Queue ที่เป็นบริการสำคัญ ผมจะเริ่มพิจารณาปรับเพิ่ม Max Limit หรือขยับ Priority ให้สูงขึ้น

อีกหนึ่งเครื่องมือที่ผมใช้บ่อยคือ “Torch” เพื่อดูว่ามี IP ไหนที่สร้าง Connection ผิดปกติหรือไม่ บางครั้งปัญหาไม่ได้เกิดจากการตั้งค่า Queue แต่เกิดจากเครื่องลูกข่ายติดมัลแวร์แล้วยิง Traffic ปริมาณมหาศาลออกไป การมี Queue Tree จะช่วยจำกัดความเสียหายไม่ให้กระทบต่อส่วนรวม แต่เราก็ยังต้องตามไปแก้ที่ต้นเหตุด้วยเสมอ การทำ Bandwidth Management จึงไม่ใช่เรื่องของการตั้งค่าครั้งเดียวจบ แต่คือการดูแลและปรับปรุงตามพฤติกรรมการใช้งานที่เปลี่ยนไป

เช็คลิสต์สำหรับการทำ Queue Tree ให้สำเร็จ

  • ตรวจสอบว่าปิด Fasttrack ใน Firewall Filter แล้ว (เพราะ Fasttrack จะข้ามกระบวนการ Queue)
  • Mark Packet ให้ครบทั้งขา Upload และ Download
  • Parent Queue ต้องตั้งค่า Max Limit ให้สอดคล้องกับความเร็วอินเทอร์เน็ตจริง
  • ใช้ PCQ เพื่อความยุติธรรมในการแชร์ Bandwidth ภายในกลุ่ม
  • จัดลำดับ Priority (1-8) ให้กับบริการที่สำคัญ เช่น VoIP, Game, Web และดาวน์โหลด ตามลำดับ

สรุป

การจัดการ Bandwidth ด้วย Queue Tree อาจจะดูซับซ้อนในช่วงแรกเมื่อเทียบกับ Simple Queue แต่มันคือการลงทุนที่คุ้มค่าสำหรับระบบเครือข่ายที่มีประสิทธิภาพ จากประสบการณ์ของผม การสละเวลามาทำ Mangle และวางโครงสร้าง Queue Tree ให้ดี ช่วยลดปัญหาการร้องเรียนเรื่องเน็ตช้าลงไปได้มากกว่า 80% และที่สำคัญคือมันช่วยให้เราใช้ทรัพยากรอินเทอร์เน็ตที่มีอยู่ได้อย่างคุ้มค่าที่สุด

ไม่ว่าคุณจะเป็นมือใหม่หรือมือโปร สิ่งสำคัญที่สุดคือการเข้าใจพฤติกรรมทราฟฟิกในเครือข่ายของตัวเอง Queue Tree เป็นเพียงเครื่องมือหนึ่ง แต่ “นโยบาย” ในการจัดลำดับความสำคัญต่างหากที่จะเป็นตัวตัดสินว่าระบบ Network ของคุณจะยอดเยี่ยมเพียงใด หวังว่าบทความนี้จะเป็นแนวทางให้ทุกท่านนำไปประยุกต์ใช้เพื่อสร้างระบบเครือข่ายที่ลื่นไหลและเสถียรกันนะครับ

Leave a Reply

Your email address will not be published. Required fields are marked *