การพัฒนาโซนสำหรับวัดความเร็วอินเทอร์เน็ต

การพัฒนาโซนสำหรับวัดความเร็วอินเทอร์เน็ต
สวัสดีตอนบ่ายแก่ผู้ใช้ Habra ทุกท่าน

ฉันอ่านบทความเกี่ยวกับHabréเกี่ยวกับการพัฒนาฟังก์ชันนี้หรือฟังก์ชันนั้นใน Malinka อยู่ตลอดเวลา ฉันตัดสินใจแบ่งปันงานของฉันที่นี่

ประวัติศาสตร์

ฉันทำงานให้กับบริษัทที่ให้บริการเคเบิลทีวีและบริการอินเทอร์เน็ต และเช่นเดียวกับที่เกิดขึ้นในบริษัทดังกล่าว ฉันได้ยินคำร้องเรียนเป็นระยะเกี่ยวกับความไม่สอดคล้องกันของแผนภาษีกับสิ่งที่ระบุไว้ในสัญญา ผู้ใช้บ่นเกี่ยวกับความเร็วต่ำ "ผ่านสายเคเบิล" จากนั้นเกี่ยวกับบริการบางอย่างที่มีการส่ง Ping สูง บางครั้งอาจเกี่ยวกับการขาดอินเทอร์เน็ตโดยสิ้นเชิงในบางช่วงเวลาของวัน บ่อยครั้งที่การร้องเรียนดังกล่าวจบลงด้วยการร้องขอจำนวนมาก ซึ่งกระตุ้นให้พนักงานคนหนึ่งที่มีแล็ปท็อปทำงานเข้าเยี่ยมชมไซต์งาน ซึ่งจะมีการวัดผลทั้งหมด และบ่อยครั้งปรากฎว่าทุกอย่างเรียบร้อยดีตามความเร็ว และความเร็วต่ำจริง ๆ แล้วบนโทรศัพท์มือถือผ่าน Wi-Fi บนระเบียง เอ๊ะ หรืออะไรทำนองนั้น

น่าเสียดายที่ไม่สามารถไปหาสมาชิกได้ เช่น เวลา 21:37 น. ซึ่งเป็นช่วงที่มีความเร็วต่ำสุด เพราะเวลาทำงานของพนักงานมีจำกัด การเปลี่ยนเราเตอร์ไม่มีผลใดๆ เนื่องจาก... ช่วงความถี่ของ Wi-Fi ในประเทศของเรานั้นรกมาก

สำหรับบันทึก — ผู้ให้บริการของรัฐในสาธารณรัฐเบลารุสบังคับเปิด Wi-Fi บนอุปกรณ์ทั้งหมดที่มีให้ใช้งานและเผยแพร่ ByFly SSID จากแต่ละอุปกรณ์ แม้ว่าผู้ใช้บริการจะไม่มีบริการอินเทอร์เน็ตแต่มีเพียงโทรศัพท์บ้านเท่านั้น ทำเพื่อการขายเพิ่มเติม คุณสามารถซื้อการ์ดจากผู้ให้บริการรายนี้ได้ที่ตู้เชื่อมต่อกับจุดใดก็ได้ที่ชื่อ ByFly และโดยการป้อนข้อมูลจากการ์ดเพื่อรับบริการอินเทอร์เน็ต เนื่องจากครอบคลุมเมืองเกือบ 100% และครอบคลุมพื้นที่ภาคเอกชนและพื้นที่ชนบทอย่างมีนัยสำคัญ การค้นหาจุดเชื่อมต่อจึงไม่ใช่ปัญหา

การสังเกตช่องทางการสื่อสารภายนอกของเราแสดงให้เห็นว่ามีการสำรองแบนด์วิธที่กำหนด และสมาชิกไม่รับชมช่องสัญญาณที่มีอยู่ทั้งหมด แม้แต่ในชั่วโมงเร่งด่วนก็ตาม เราจริงจังกับเรื่องนี้มาก การใช้บริการที่แตกต่างกันและเซิร์ฟเวอร์การวัดความเร็วที่แตกต่างกันทำให้เกิดผลลัพธ์ที่น่าสนใจ ปรากฎว่าบริการบางอย่างไม่ได้มีประโยชน์เท่ากัน... โดยเฉพาะในตอนเย็น และคุณไม่ควรเชื่อใจพวกเขาอย่างแน่นอน ผู้ให้บริการหลายรายในเครือข่าย Ookla เดียวกันไม่มีช่องทางการสื่อสารที่กว้างขวางหรือทำงานติดต่อกัน ซึ่งหมายความว่าในตอนเย็นแทบจะเป็นไปไม่ได้เลยที่จะได้ผลลัพธ์ที่ตรงไปตรงมา ใช่แล้วทางหลวงกลับกลายเป็นบาป ตัวอย่างเช่น ความพยายามที่จะวัดความเร็วในญี่ปุ่นแสดงผลลัพธ์ที่เลวร้ายอย่างยิ่ง...

การตัดสินใจเบื้องต้น

การพัฒนาโซนสำหรับวัดความเร็วอินเทอร์เน็ต
รูปภาพนี้ใช้เพื่อเป็นตัวอย่างเท่านั้น

มีการปรับใช้เซิร์ฟเวอร์ควบคุมความเร็วสองตัว อันแรกก็คือ LibreSpeed, ที่สอง - การทดสอบความเร็วจาก OOKLA. เปรียบเทียบประสิทธิภาพของบริการทั้งสอง สุดท้ายเราตัดสินใจหยุดที่ Ookla เพราะ... สมาชิกมากถึง 90% ใช้บริการนี้

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

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

การกระทำที่คล้ายกันสำหรับช่องทางการสื่อสารภายนอก เราพบผู้ให้บริการรายใหญ่ที่มีช่องสัญญาณขนาดใหญ่บนเซิร์ฟเวอร์ทดสอบความเร็วและเขียนไว้ในคำแนะนำ (ขออภัย “Moskva - Rostelecom” และ “Riga - Baltcom” แต่ฉันจะแนะนำโหนดเหล่านี้เพื่อให้ได้ตัวเลขที่เพียงพอ โดยส่วนตัวแล้ว ฉันได้รับมากถึง ~870 เมกะบิตจาก เซิร์ฟเวอร์เหล่านี้ในช่วงเวลาเร่งด่วน)

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

โซลูชันรอง

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

การดำเนินงาน

การพัฒนาโซนสำหรับวัดความเร็วอินเทอร์เน็ต

BananaPI (รุ่น M1) ถูกนำมาใช้เป็นพื้นฐาน จริงๆ แล้วมีสองเหตุผลสำหรับการเลือกนี้

  1. พอร์ตกิกะบิต
  2. มันก็แค่นอนอยู่บนโต๊ะข้างเตียง

ต่อไปก็ตัดสินใจใช้ไคลเอนต์หลาม Speedtest-CLI สำหรับบริการ Speedtest by Ookla เพื่อเป็นแบ็คเอนด์ในการวัดความเร็ว ห้องสมุด หลามปิง เพื่อวัดความเร็ว ping และ php สำหรับแผงผู้ดูแลระบบ เพื่อความสะดวกในการรับรู้ฉันใช้ บูต.

เนื่องจากทรัพยากรของ Raspberry ไม่ยืดหยุ่น จึงมีการใช้ชุดค่าผสม nginx+php-fpm+sqlite3 ฉันอยากจะเลิกใช้ MySQL เพราะมันหนักและซ้ำซ้อน ฉันคาดว่าจะมีคำถามเกี่ยวกับ Iperf มันจะต้องถูกละทิ้งเนื่องจากเป็นไปไม่ได้ที่จะใช้มันในทิศทางอื่นนอกเหนือจากในท้องถิ่น

ตอนแรกฉันเดินตามเส้นทางของหลาย ๆ คนในไซต์นี้ แก้ไขไคลเอนต์ speedtest-cli แต่แล้วหลังจากคิดได้เล็กน้อยเขาก็ละทิ้งความคิดนี้ ฉันเขียนคนงานของตัวเองที่ใช้ความสามารถของไคลเอนต์ดั้งเดิม

เพื่อวิเคราะห์การ Ping ฉันเพียงแค่เขียนตัวจัดการแยกต่างหาก เราใช้ค่าเฉลี่ยจากการวัด เครื่องมือ ping สามารถรองรับทั้งที่อยู่ IP และชื่อโดเมน

ฉันไม่ได้ทำงานแบบอะซิงโครนัสสำเร็จ ไม่จำเป็นอย่างยิ่งในกรณีนี้

แผงผู้ดูแลระบบสำหรับการประเมินผลลัพธ์นั้นค่อนข้างเรียบง่าย

การพัฒนาโซนสำหรับวัดความเร็วอินเทอร์เน็ตมะเดื่อ หน้าต่างผู้ดูแลระบบหลักพร้อมผลการทดสอบ

การพัฒนาโซนสำหรับวัดความเร็วอินเทอร์เน็ตมะเดื่อ ทดสอบการตั้งค่า

การพัฒนาโซนสำหรับวัดความเร็วอินเทอร์เน็ต
มะเดื่อ อัปเดตรายการเซิร์ฟเวอร์ Speedtest

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

PS: โปรดอย่าวิพากษ์วิจารณ์ฉันถึงคุณภาพของโค้ด ฉันเรียนด้วยตัวเองไม่มีประสบการณ์ ซอร์สโค้ดสำหรับ GitHub. คำติชมเป็นที่ยอมรับ

ที่มา: will.com

เพิ่มความคิดเห็น