ทำไมเครือข่ายของคุณถึงหลุดตอน 2 ทุ่ม
การเชื่อมต่อ Proxy หรือ API ของคุณทำงานได้ปกติมาตลอดทั้งวัน แต่พอถึงเวลา 2 ทุ่ม จู่ๆ การเชื่อมต่อก็ค้าง ค่า Latency พุ่งสูงขึ้น และแอปของคุณก็หลุดการเชื่อมต่อ
คุณอาจจะโทษ Wi-Fi ของคุณ แต่จริงๆ แล้วปัญหาเกิดขึ้นลึกเข้าไปในเครือข่ายระดับโลก
นี่คือสาเหตุที่เรื่องนี้เกิดขึ้น:
ความหนาแน่นในช่วงเวลาเร่งด่วน (Peak Hour Congestion) ผู้คนหลายล้านคนเริ่มสตรีมวิดีโอหรือเล่นเกมในช่วงกลางคืน ข้อมูลของคุณต้องเดินทางผ่าน Public Gateways ซึ่งในช่วงเวลา 2 ทุ่ม Gateway เหล่านี้จะทำงานจนถึงขีดจำกัดสูงสุด เมื่อ Buffer เต็ม เราเตอร์จะทำการ Tail Drop โดยการโยน Data Packets ของคุณทิ้งไปเฉยๆ เพราะไม่มีพื้นที่เหลือสำหรับจัดเก็บข้อมูลแล้ว
วงจรแห่งความตายของ TCP (The TCP Death Loop) โปรโตคอลมาตรฐานเมื่อตรวจพบ Packet Loss จะเกิดอาการ Panic โดยจะลดความเร็วการเชื่อมต่อลงครึ่งหนึ่งเพื่อจัดการกับภาระงาน (Load) ในขณะที่ Proxy ของคุณพยายามส่งข้อมูลที่สูญหายไปใหม่ สิ่งนี้ยิ่งเป็นการเพิ่มภาระให้กับระบบที่พังอยู่แล้ว ทำให้ค่า Latency พุ่งจาก 50ms เป็น 300ms และในที่สุดการเชื่อมต่อของคุณก็จะ Time out และหลุดไป
BGP Flapping เราเตอร์ใช้ BGP ในการค้นหาเส้นทางที่ดีที่สุดสำหรับข้อมูลของคุณ ในช่วงเวลาเร่งด่วน เส้นทางที่ดีที่สุดอาจไม่มีความเสถียร เราเตอร์จึงพยายามสลับ Traffic ของคุณไปยังเส้นทางใหม่ การสลับเส้นทางนี้จะทำให้ Session ที่ใช้งานอยู่ขาดตอน คุณจึงเห็นสัญลักษณ์โหลดหมุนๆ หรือข้อความแจ้งเตือนข้อผิดพลาดในการเชื่อมต่อ
วิธีที่องค์กรขนาดใหญ่แก้ไขปัญหานี้ บริษัทต่างๆ ใช้สายสัญญาณเฉพาะ (Dedicated Lines) เพื่อเลี่ยงการใช้งานอินเทอร์เน็ตสาธารณะ
• IPLC (International Private Leased Circuit): ท่อใยแก้วนำแสงส่วนตัว ซึ่งจะไม่ได้รับผลกระทบจากการเพิ่มขึ้นของ Traffic สาธารณะ • IEPL (International Ethernet Private Line): เป็น IPLC ในรูปแบบ Layer-2 ซึ่งให้ค่า Latency ที่เสถียรและไม่มี Packet Loss เลย
การเปรียบเทียบวิธีการกำหนดเส้นทาง (Routing Methods):
- Public Routing: ค่า Latency พุ่งสูงและเกิด Packet Loss
- IPLC: สาย Fiber แบบ Point-to-Point ที่คงที่ มีความเสถียรสูงมาก
- IEPL: การรับส่งข้อมูลผ่าน Ethernet ที่คงที่ มีความเสถียรสูงมาก
วิธีปรับปรุงการตั้งค่าของคุณ หากคุณไม่สามารถซื้อสายสัญญาณส่วนตัวได้ ให้ลองปรับแต่ง Linux Server ของคุณดังนี้:
เปลี่ยนไปใช้ BBR Congestion Control. ต่างจาก Cubic ตรงที่ BBR จะไม่ Panic เมื่อเกิด Packet Loss แต่มันจะรักษาความเร็วโดยการจำลองความจุของช่องสัญญาณ (Pipe Capacity) ที่แท้จริง รันคำสั่งเหล่านี้ใน
sysctl.confของคุณ:net.core.default_qdisc = fqnet.ipv4.tcp_congestion_control = bbrลดค่า MTU ลง. เปลี่ยนค่า Maximum Transmission Unit จาก 1500 เป็น 1420 หรือ 1360 เพื่อป้องกันไม่ให้เราเตอร์ต้องย่อย Packet ที่เข้ารหัสของคุณออกเป็นส่วนๆ
Optional learning community: https://t.me/GyaanSetuAi