Technology

ทำความรู้จักกับ QoS จราจร แห่งโลก Network

By Arnon Puitrakul - 21 สิงหาคม 2020 - 1 min read min(s)

ทำความรู้จักกับ QoS จราจร แห่งโลก Network

QoS หรือ Quality of Service เป็นการจัดการจราจรในระบบเครือข่ายคอมพิวเตอร์ เพื่อให้การส่งข้อมูลเป็นไปได้อย่างราบลื่นขึ้น บางเคส แค่เปิด และ ตั้งค่าการใช้งาน QoS ก็ทำให้การใช้งานโดยรวมดูเร็วขึ้นอย่างไม่น่าเชื่อเลย ถ้าเราทำดี ๆ วันนี้เราจะพามาทำความรู้จักกันว่ามันทำงานยังไง

เครือข่าย ก็เหมือน ถนน 🛣

Road Example of QoS

เพื่อให้เห็นภาพได้ง่ายขึ้น เราอยากให้ทุกคนคิดภาพเครือข่าย ในบ้านของเรา ว่ามันเหมือนมีถนนอยู่เต็มไปหมด อุปกรณ์ของเราอาจจะเป็น บ้าน หรือ ตึก ในการที่เราจะเดินทางไปมา เราก็ต้องใช้ ถนน แน่นอน ว่าบางที เราอาจจะเจอรถติด หรือ รถโล่งไปเลย นั่นแหละ โลกของเครือข่ายในคอมพิวเตอร์มันเป็นแบบนี้เลย

นึกถึง Server ใหญ่ ๆ ที่มีคนเข้ามาใช้งาน มีการส่งข้อมูลเยอะมาก รถวิ่งไปมาเต็มไปหมด มันก็วุ่นวายไม่ต่างจากลาดพร้าวที่ติดชาตินี้ ได้ไปชาติหน้า (นั่นมันของแคราย) บางทีมันก็มีทางแยก ลองนึกภาพว่า ถ้าเกิดเราไม่มีไฟจราจรละคิดว่าจะเป็นยังไง รถก็น่าจะชนกันจน รถไปไม่ถึงที่หมายเลยก็เป็นได้

ถ้าเปรียบเทียบให้ชัดเจนขึ้นอีก เช่น Network ในบ้านของเราก็คือเมือง การที่จะเป็นเมืองย่อมต้องมีทางเข้าออก ถ้าเป็นบ้าน ๆ เราทั่วไป ก็น่าจะมีประตูบ้านแค่อันเดียวคือ กล่องของ ISP ที่เขาเอามาให้เรา ความกว้างของถนนคือ ความเร็วที่เราซื้อไว้ พูดในภาษา Network  ก็คือ Bandwidth เช่น 500 Mbps ยิ่งเราจ่ายเยอะ มันก็มีรถวิ่งเข้าออกได้มากขึ้น ก็เหมือนกับที่เราสามารถรับส่งข้อมูลได้มากขึ้นนั่นเอง

ตัวอย่างง่าย ๆ ถ้าเราดู Netflix 4K มันจะใช้ Bandwidth ประมาณ 50 Mbps ต่อ 1 Stream หรือก็คือ 1 จอที่เราดูใช้ 50 Mbps ดูสักจอนึง ไม่น่าจะมีปัญหา

ลื่น ๆ สมูทปรูดปราด แน่นอน แล้วถ้าเราดูสัก 3 จอพร้อม ๆ กันละ มันก็จะต้องใช้ Bandwidth ทั้งหมด 50 คูณด้วย 3 หรือก็คือ 150 Mbps แต่ปัญหาคือ เน็ตที่เราซื้อมีแค่ 100 Mbps เท่านั้น ทำให้ 1 ใน 3 ที่เกินมา ก็ต้องไปยืนต่อคิวเพื่อจะเข้า และ ออกจากเมืองนั่นเอง

ปัญหาคือ พอรถติดแบบนี้ แล้วถ้ามีคนป่วยแล้วต้องออกจากเมืองเดี๋ยวนั้นละ ทำให้ถ้าเราให้ความสำคัญของรถทุกคันเท่า ๆ กัน บางคันอาจจะรอได้ บางคันอาจจะรอไม่ได้ สุดท้ายคันที่รอไม่ได้ก็แย่ไป ถ้ายกตัวอย่างให้ดูจริงขึ้นหน่อย

ถ้าเรามีคนดู Netflix, เปิด Pornhub และ คุยกับแฟนไปพร้อม ๆ กัน ลองคิดตามว่า ถ้า Bandwidth เต็ม จริง ๆ จะเป็นยังไง อันที่ทำ Video Conference น่าจะเป็นปัญหามากที่สุด เพราะอีกฝั่ง หรือปลายสายต้องได้รับข้อมูลจากเราตลอด และเราก็ต้องได้รับข้อมูลจากปลายสายตลอดเช่นกัน ดังนั้น ถ้า Bandwidth ไม่พอ เราอาจจะเจออาการที่ว่า คุยแล้วกระตุก ค้าง หรือหลุดไปเลย ในขณะที่ถ้า Video มีอาการกระตุกบ้าง มันก็พอรับได้อยู่ แล้วเราจะทำยังไงถึงคนที่ คุยกับแฟนจะได้คุยกันอย่างสมใจ โดยที่คนที่ใช้ Video Streaming ไม่ได้รับผลกระทบมากนัก

QoS คือคำตอบ

QoS (Quality of Service) เป็นตัวที่จะเข้ามาช่วยเราในการจัดการปัญหาการจราจรในเครือข่ายของเราได้ โดยที่มันเข้ามาเป็นเหมือนคนจัดการเข้าออกของข้อมูลของเราอย่างเป็นระบบมากขึ้น จากเดิมที่ใช้เป็น Queue ที่ใครมาก่อน ก็ได้ไปก่อน แต่จากปัญหาที่เรายกตัวอย่างเมื่อครู่ มันทำแบบนั้นไม่ได้ซะทีเดียว

ถ้าจากปัญหาเมื่อครู่ ถ้าเรามี QoS เราอาจจะตั้งค่าให้ ไม่ว่าจะเกิดอะไรขึ้น ถ้าข้อมูลที่เกี่ยวกับ Video Conference ให้ไปก่อน ส่วน Video Streaming ค่อยไปทีหลัง ทำให้เครื่องที่ใช้ Video Conference ก็จะคุยได้อย่างราบลื่นไม่มีสะดุด ส่วนเครื่องที่เหลือก็ต้องต่อคิวออกกันแล้ว ส่วนวีดีโอมันก็พอรอได้ มันก็จะไม่ได้แย่เท่าไหร่นั่นเอง

ในการใช้งาน QoS จริง ๆ ต้องบอกเลยว่า เป็นอะไรที่ซับซ้อนอยู่พอตัว เอาจริง ๆ คือ เรามองว่ามันไม่ได้มีกฏชัดเจนมากขนาดที่จะบอกว่าตั้งค่ายังไง ๆ ตรง ๆ มันขึ้นกับการใช้งานของเครือข่ายเรามากกว่า ว่าเราให้ความสำคัญกับอะไรก่อนกัน ถ้าเกิดมันต้องต่อคิวกันจริง ๆ

QoS Setting in RouterOS
Queue Settings RouterOS

การตั้งค่า ขึ้นกับรุ่นของ Router ที่เราใช้งาน บางรุ่นทำได้เบื้องต้น พื้นฐานปรับอะไรไม่ได้มาก แต่บางรุ่นที่ใช้งานกันระดับ ธุรกิจ และ  องค์กร จะมีตัวเลือกให้ปรับได้เยอะมาก ๆ ฟิคได้ยัน IP Address ของเครื่องที่ต้องการปรับให้เป็นอภิสิทธิเครื่องเลย

หรืออย่างถ้าเป็นรุ่นที่ใช้กันตามบ้าน ก็จะออกแบบมาให้ลดความยุ่งยากสำหรับผู้ใช้ทั่วไปที่อาจจะไม่มีความรู้เรื่องของ Network เลย ก็อาจจะปรับให้เป็นโหมดแทน เช่น ให้เกม หรือ VoIP ออกก่อน สำเร็จรูปมาเลย ก็มีเหมือนกัน

เมื่อไหร่ที่เราควรเริ่มใช้ QoS ?

อ่านมาถึงตรงนี้แล้ว หลาย ๆ คนอาจจะกำหมัด และอยากจะเปิด QoS กันแล้ว แต่เราจะบอกว่า บางทีเราก็ไม่ได้จำเป็นที่จะต้องใช้ QoS เลย ถ้า Network ของเราสามารถทำงานได้อย่างราบลื่นอยู่แล้ว

คิดเหมือนกับว่า คิวปกติที่ต่อกัน ทุกคนสามารถเข้าออกได้ทันทีไม่ต้องรอคิว แล้วเราจะนั่งจัดคิวทำไม ดังนั้น Network ที่ควรมีการใช้ QoS คือ Network ที่มีการใช้งานหนาแน่น เมื่อเทียบกับ Resource ที่มี ในที่นี้เราพูดถึง Bandwidth ต่าง ๆ เช่น Bandwidth ของ Internet ที่เราพูดถึงกันในตอนแรก หรือถ้าในระดับองค์กรที่มี Firewall หรือ IPS/IDS ก็ต้องพิจารณาถึงความสามารถในการทำงานของอุปกรณ์เหล่านี้ด้วย ถ้ามันน้อยกว่าที่เราใช้งาน เราก็ต้องมานั่งเรียงคิวแล้วว่า จะให้ใครออกได้ก่อน ใครออกได้หลัง ไม่งั้นยุ่งแน่นอน

ทำให้ ถ้า Network ที่เราใช้งานมันโอเค ใช้งานได้อย่างราบลื่นอยู่แล้ว เราไม่จำเป็นต้องเข้าไปเปิดการใช้งาน QoS ให้เสียเวลาเลย การจะดูง่าย ๆ ให้เราอยู่ใน Network คนเดียวเลย เอาตอนที่ไม่มีคนใช้งาน แล้วให้เราลอง Ping ไปที่เว็บไหนก็ได้ เช่น Google ก็ได้ (ที่ไหนก็ได้ที่ออก Internet และเป็น Server ที่ดีหน่อย หรืออาจจะเป็นเครื่องภายในก็ได้ ยังไงมันต้องผ่าน Router อยู่ดี) ถ้าใช้ macOS หรือ Linux ไหนก็ได้ให้เข้าไปที่ Terminal และพิมพ์คำสั่งนี้

ping -c 10 google.com

ตัวเครื่องมันจะส่งข้อมูลขนาดเล็ก ๆ ไปที่ Google จำนวน 10 ครั้ง โดยที่มันจะบอก Round-Trip Time (RTT) หรือเวลาที่เริ่มนับเมื่อเครื่องเริ่มส่งข้อมูลไปที่ Google และได้การตอบกลับยืนยันว่าได้ข้อมูลแล้วกลับมา ที่ด้านล่างสุดมันจะสรุปผลออกมาเป็น ค่าต่าง ๆ เช่น RTT ต่ำสุด สูงสุด ค่าเฉลี่ย

Testing QoS : macOS Ping Result
มันจะดูเยอะนิดนึง เพราะเราทดสอบผ่าน WiFi ถ้าใช้สายมันก็จะลดความผัวผวนที่เกิดจาก WiFi ได้ ตัดผู้ต้องสงสัยไปได้

ให้เราลองดูที่ค่าเฉลี่ย และเก็บไว้ก่อน จากนั้นเราลองทำการทดลองเดียวกันนี้ซ้ำอีกครั้ง ถ้าเราเห็นว่า เวลามันเพิ่มขึ้นเยอะจนแย่มาก ๆ เช่น 90 - 100 ms แบบนั้นแหละ เราว่าแย่มากแล้วละ

ถามว่าเอาจริง ๆ คือ เท่าไหร่ดี เราไม่มีตัวเลขให้ขนาดนั้น แต่ถ้าเอาเล่นเกมจริงจังเลย เราบอกว่าเกมเรารันที่ 60 FPS หรือก็คือ ใน 1 วินาที เราจะต้อง Refresh หน้าจอใหม่ 60 ครั้ง นั่นหมายถึงการอัพเดทที่อยู่ของตัวละครที่เล่นกับเราด้วย อย่างน้อยเครือข่ายของเรา จะต้องรับ และ ส่งค่าให้ทันการอัพเดท ก็คือเอา 1 หารด้วย 60 มันก็จะได้ออกมาเป็น 16.67 ms นั่นคือ RTT ขั้นต่ำที่จะทำให้เกมสามารถดึงค่าจริงของคนที่เราเล่นด้วยได้ทุก Frame ถ้ามันเกิด มันจะมีวิธีการคำนวณอยู่ อันนี้เราไม่ยุ่งละกัน เดี๋ยวจะยาว

ROV in iPhone 11 Pro Max
ถ้าเล่น ROV จะรู้เลย ว่า Latency สำคัญมาก ๆ

ซึ่งถ้าเราเล่นเกมกันจริง ๆ โดยเฉพาะเกม MOBA หรือ FPS Latency มีผลเยอะมาก ๆ จริง ๆ มันก็คือ Ping นั่นเอง มันคือชื่อโปรแกรมที่ใช้วัด Latency หรือก็คือ RTT ที่เราพูดถึงนั่นเอง

ทำให้ถ้าเราบอกว่า เรื่องเกมสำคัญมาก ต้องการความเร่งด่วนที่สุด และ Latency มันเกินกว่าที่เราจะรับได้ เราก็อาจจะเข้าไปเปิด QoS เพื่อให้เกมของเราที่มันต้องการรับส่งค่าไว ๆ ได้เข้าและออกก่อนคนอื่น เช่นการเล่นเว็บทั่ว ๆ ไปที่มันรอโหลดได้

Note ให้ว่า คำว่ารอได้ของเราคือ มันไม่ได้ขึ้นกับอย่างอื่นมากนัก เช่น การเข้าเว็บ เราก็แค่โหลดข้อมูลเข้ามา หรือ การดู Video ที่เราสามารถ Buffer หรือโหลดคาไว้ได้เลย อะไรพวกนี้มันไม่ได้ต้องการความ Realtime มากเท่ากับ Online Game หรือ Video Conference ส่วนเวลาที่เราบอกว่ามันต้องรอคือ แค่ระดับ Milisecond ในเครือข่ายที่มีความหนาแน่นน้อยถึงปานกลาง ถ้าถึงระดับวินาทีนี่ต้องพิจารณาแล้วนะ ฮ่า ๆ

QoS ก็ทำให้ระบบพินาศได้เช่นกัน

การเปิดใช้งาน QoS มีผลทำให้การทำงานของ Router หรือ Switch ทำงานหนักขึ้นแน่นอน เพราะแทนที่มันจะให้ทุกคันต่อคิวกัน มันต้องมาค่อย ๆ เปิดกระจกดูหน้าแต่ละคนว่าเป็นใครบ้าง เผื่อใครได้เป็นอภิสิทธิ์ชน จะได้เอาออกจากคิวแล้วให้ไปก่อนได้เลย

คิดเป็น Network จริง ๆ เราต้องบอกเลยว่า จริง ๆ แล้วในการใช้งานของเรามันมี Packet หรือ ที่เราเทียบว่าเป็นรถ ออกไปเยอะมากใน 1 วินาที ดังนั้น การดูว่าแต่ละคนเป็นใครเป็นงานหนักอยู่พอตัว ยิ่งระบบที่มีความสามารถในการตั้งค่าได้ละเอียดมาก ๆ มันก็เหมือนกับเวลาเราขับรถไปแล้วเจอที่ไหนมีตำรวจจราจร ที่นั่นรถติดอะ เหมือนกัน บางทีถ้าถนนมัน Flow  ได้ดีอยู่แล้ว ทุกคนสามารถผ่านไปมาได้อย่างสะดวกไม่ติดแหง๊กอยู่บนถนน แล้วอยู่ ๆ มีพี่ตำรวจจราจรมาโบก เอ้าติดเฉย

ซ้ำร้ายกว่านั้นอีก ถ้าจำนวนรถที่เราวิ่งผ่านมีเยอะมาก กว่าที่ตำรวจที่จะเปิดกระจกไล่เช็คว่าเป็นใคร ตอนนั้นแหละปัญหาเกิดทันที สุดท้าย รถก็ต้องเข้าคิวรอเพื่อให้คุณตำรวจเปิดถึงคันนั้น มันก็ไปคอขวดอีก ถ้าเป็นในความเป็นจริงคือ อัตราการใช้งาน CPU ของ Router หรือ Switch ที่เราเปิด QoS อาจจะพุ่งสูงปรี๊ดถึง 100% เลยก็เป็นได้

สุดท้ายเมื่อข้อมูลที่รอเช็คอยู่มันล้นไปเรื่อย ๆ จนคิวไม่ไหวแล้ว มันก็ต้องทำการ Drop Packet หรือที่เรามักจะเจออาการ กดแล้วไม่ไป ทำไม Latency มันขึ้น ๆ ลง ๆ เหวี่ยง ๆ เหมือนผู้หญิงเม้นท์มา ส่วนนึงก็อาจจะเกิดจากอาการนี้ได้

เราเคยเจอมาก่อน ตอนที่ใช้ Router ที่ AIS ให้มาตัวก่อนหน้านานมาก ๆๆๆๆ แล้วคือเมื่อเราโหลดไฟล์ใหญ่ ๆ พร้อมกับ น้องเราเล่น LoL ปรากฏว่า เกมที่น้องเราเล่น Latency มันพุ่งปรี๊ดเลย จาก 10 ms บวกลบ นิดหน่อยกลายเป็น 100 กว่าได้เลย พอเราเปิด QoS มันก็ไม่ดีขึ้นเท่าไหร่ แถมเหวี่ยงขึ้นลง แต่ CPU ของ Router กลายเป็นขึ้น 100% เลยทำให้รู้เลยว่า ไม่น่ารอดแล้ว พอเปลี่ยนไปใช้ Router ที่มีพลังมากขึ้น อาการนี้ก็ดีขึ้นมาก ๆ

จากเรื่องนี้ทำให้เราเห็นเลยว่า QoS ไม่ใช่ Final Solution ของทุกเคส เผลอ ๆ จะทำให้ชิบหายหนักเข้าไปอีก บางที Hardware มันไม่ไหว เรา Tune เต็มที่แล้วมันไม่รอด ก็คือมันไม่รอดแล้ว ก็ต้องเปลี่ยนไปใช้ตัวที่แรงขึ้นเพื่อให้รองรับการใช้งานของเราได้นั่นเอง

สรุป

QoS หรือ Quality of Service เป็นเครื่องมือตัวนึงที่ช่วยให้เราจัดการจราจร เพื่อจัดลำดับความสำคัญเพื่อให้สิ่งที่มันควรจะรีบได้ไป สิ่งที่รอได้รอไป ทำให้ถ้าเราตั้งค่าถูก มันจะทำให้การใช้งานเครือข่ายโดยรวมมีความลื่นไหลมากขึ้น คุย Video Call กับแฟน ก็กระตุกน้อยลง ทั้งนี้ Router แต่ละตัวก็มีวิธี และ ความลึก ในการตั้งค่า QoS ไม่เหมือนกัน ลองหาคู่มือของอุปกรณ์เรามาอ่านแล้วลองทำตาม สำหรับใครที่เครือข่ายมันใช้งานได้ลื่นไหลอยู่แล้วก็ อย่า หา ทำ การทำงานกับ Server สอนเราว่า อะไรที่ใช้ได้ก็อย่าไปยุ่งกับมัน ใช้ไม่ได้ขึ้นมา มันไม่สนุกแน่นอน หรือถ้าลองทำแล้ว มันไม่ช่วยเลย อาจจะไปปรึกษากับคนที่รู้เรื่อง Network เพื่อวิเคราะห์หาสาเหตุต่อไป