تطوير نظام قياس سرعة الإنترنت



مساء الخير لجميع مستخدمي هبرة.



أقرأ باستمرار مقالات عن حبري حول تطور هذه الوظيفة أو تلك على "مالينكا". قررت مشاركة عملي هنا.



خلفية



أنا أعمل في شركة تقدم خدمات تلفزيون الكابل والوصول إلى الإنترنت. وكما هو الحال في مثل هذه الشركات ، أسمع بشكل دوري شكاوى حول تناقض خطة التعريفة مع تلك المنصوص عليها في العقد. يشكو المستخدم الآن من السرعة المنخفضة "عبر الكابل" ، ثم حول الأصوات العالية لخدمات معينة ، وأحيانًا حول الغياب الكامل للإنترنت في وقت معين من اليوم. في كثير من الأحيان ، تنتهي هذه الشكاوى في مجموعة التطبيقات ، والتي يتم بموجبها إرسال أحد الموظفين الذين لديهم كمبيوتر محمول يعمل ، ويتم إجراء جميع القياسات عليه ، إلى الموقع. وكثيراً ما اتضح أن كل شيء على ما يرام مع السرعة. والسرعة المنخفضة في الواقع على الهاتف المحمول ، عبر wi-fi ، على الشرفة. حسنًا ، أو شيء من هذا القبيل.



لسوء الحظ ، من المستحيل الذهاب إلى المشترك على سبيل المثال في الساعة 21:37 ، عندما يكون لديه أدنى سرعة. ومع ذلك ، فإن يوم عمل الموظفين محدود. استبدال الموجه ليس له أي تأثير. النطاق الترددي لشبكة wi-fi في بلدنا فوضوي بشكل مؤسف.



كمرجع - يقوم مزود الدولة في جمهورية بيلاروس بتشغيل wi-fi بالقوة على جميع الأجهزة المتوفرة للاستخدام وبث SSID ByFly من كل جهاز. حتى إذا لم يكن لدى المشترك خدمة إنترنت ، ولكن فقط هاتف منزلي. يتم ذلك لمبيعات إضافية. يمكنك شراء بطاقة هذا المشغل في كشك ، والاتصال بأي نقطة باسم ByFly ، وإدخال البيانات من البطاقة ، تلقي خدمات الإنترنت. مع الأخذ في الاعتبار تغطية المدن بنسبة 100٪ تقريبًا والتغطية الكبيرة للقطاع الخاص والمستوطنات الريفية ، فإن العثور على نقطة اتصال لا يمثل مشكلة.



توضح مراقبة قنوات الاتصال الخارجية أن هناك احتياطيًا معينًا للنطاق الترددي. والمشتركين في المجموع لا يستهلكون القنوات المتاحة ، حتى خلال ساعة الذروة. مع كل هذا نحن جادون للغاية. أدى استخدام خدمات مختلفة وخوادم مختلفة لقياس السرعة إلى نتائج مثيرة للاهتمام. اتضح أنه ليست كل الخدمات مفيدة على حد سواء ... خاصة في المساء. ولا يجب أن تثق بهم بشكل لا لبس فيه. العديد من مشغلي شبكة Ookla نفسها ليس لديهم قنوات اتصال واسعة ، أو أنهم يعملون من البداية إلى النهاية. وهذا يعني أنه غالبًا ما يكون من المستحيل تقريبًا الحصول على نتيجة صادقة في المساء. والطرق السريعة تخطئ. على سبيل المثال ، تُظهر محاولات قياس السرعة في اليابان نتائج مؤسفة للغاية ...



الحل الأساسي





صورة لأغراض توضيحية



تم نشر اثنين من خوادم التحكم في السرعة. الأول هو LibreSpeed ، والثاني هو اختبار السرعة من OOKLA . تمت مقارنة أداء كلتا الخدمتين. قررنا التوقف عند Ookla. يستخدم حتى 90٪ من المشتركين هذه الخدمة المحددة.



بعد ذلك ، تمت كتابة التعليمات للمستخدمين والموظفين حول كيفية قياس السرعة داخل الشبكة وخارجها. أولئك. عند بدء الاختبار ، يتم قياس السرعة داخل الشبكة افتراضيًا. يقع الخادم في محطتنا الرئيسية ، ويقوم حل Ookla افتراضيًا بتحديد أقرب خادم إلى المشترك. وبالتالي ، نتحقق من تشغيل شبكة نقل البيانات الخاصة بنا.



لقياس السرعة داخل البلد (لدينا شبكة منفصلة لمشغلي الاتصالات ، والتي توحد جميع المشغلين ومراكز البيانات الرئيسية داخل الدولة) ، تحتاج إلى تحديد مزود داخل الدولة وإعادة القياس. لقد حددنا تجريبيًا العديد من الخوادم التي تعطي نتائج أكثر أو أقل استقرارًا في أي وقت من اليوم ووصفناها على النحو الموصى به في التعليمات.



حسنا ، إجراءات مماثلة لقنوات الاتصال الخارجية. لقد وجدنا عوامل تشغيل كبيرة ذات قنوات كبيرة على خوادم اختبار السرعة وكتبناها في التوصيات (سامح Moskva - Rostelecom و Riga - Baltcom ، ولكني أوصي بهذه العقد للحصول على أعداد كافية. شخصيًا ، تلقيت ما يصل إلى 870 ميغابايت من هذه الخوادم خلال ساعات الذروة).



لماذا تسأل هل هذه الصعوبات؟ كل شيء بسيط للغاية. لقد تلقينا أداة مناسبة إلى حد ما تسمح لنا ، في أيدٍ قادرة ، بتحديد: هل هناك أي مشاكل في شبكاتنا ، هل هناك مشاكل في الشبكة الجمهورية ، هل هناك مشاكل مع صندوق السيارة. إذا اشتكى شخص من سرعة تنزيل منخفضة من بعض الخدمات ، فيمكننا قياس سرعة قناة المشترك ومن ثم المقارنة مع ما يتلقاه من الخدمة. ويمكن القول أننا نسلط الضوء بصدق على القناة المنصوص عليها في العقد. ويمكننا أيضًا شرح الأسباب المحتملة لهذا الاختلاف في السرعة.



حل ثانوي



مسألة انخفاض السرعة في المساء / خلال النهار لا تزال مفتوحة. كيف تفعل كل نفس دون أن تكون في منزل المشترك؟ خذ لوحة مفردة رخيصة مع شبكة جيجابت وقم بعمل ما يسمى مسبارًا للخروج منه. يجب أن يأخذ الجهاز قياسات للسرعة عبر الكابل في فاصل زمني محدد. يجب أن يكون الحل مفتوح المصدر ، متواضعًا قدر الإمكان ، مع لوحة إدارة ملائمة لعرض نتائج القياس. يجب أن يكون الجهاز رخيصًا قدر الإمكان حتى يمكن استبداله بسهولة وتركه مع المشترك لمدة n أيام دون خوف.



التنفيذ







تم أخذ BananaPI (نموذج M1) كأساس. في الواقع هناك سببان للاختيار.



  1. منفذ جيجابت.
  2. كان مستلقيا على المنضدة.


بعد ذلك ، تقرر استخدام عميل speedtest- cli python لخدمة Speedtest by Ookla كخلفية لقياس السرعة. مكتبة Pythonping لقياس سرعة ping. حسنا ، و PHP لمنطقة المشرف. من أجل الراحة ، استخدمت bootstrap .



نظرًا لحقيقة أن موارد التوت ليست من المطاط ، تم استخدام مجموعة من nginx + php-fpm + sqlite3. أردنا التخلي عن MySQL بسبب ثقلها وتكرارها. توقع سؤال بخصوص Iperf. كان لا بد من التخلي عنها بسبب استحالة استخدامه في مناطق أخرى غير محلية.



في البداية اتبعت مسار الكثيرين على هذا الموقع. تعديل عميل speedtest-cli. ولكن بعد ذلك ، بعد تفكير بسيط ، تخلى عن الفكرة. لقد كتبت عاملي الخاص الذي يستخدم قدرات العميل الأصلي.



لتحليل الأصوات ، قمت ببساطة بكتابة معالج منفصل. نأخذ متوسط ​​القيمة بالقياس. يعرف Pingovalka كل من عنوان IP واسم المجال.



لم أحقق عملاً غير متزامن. ليست هناك حاجة خاصة في هذه الحالة.



تبين أن لوحة الإدارة لتقييم النتائج بسيطة للغاية.



تين. نافذة المشرف الرئيسية مع نتائج الاختبار



تين. إعدادات الاختبار





تين. تحديث قائمة Speedtest خادم



هذا كل شيء. تم تحقيق الفكرة على الركبة ، في وقت الفراغ من العمل. لم تبدأ الاختبارات الميدانية بعد. لكننا نخطط لإطلاق نماذج أولية في المستقبل القريب. يمكنك استخدام كل من الموفرين هناك وعملاء الموفرين. لا أحد يزعج بوضع القياسات في المنزل على مدار الساعة. الشيء الوحيد الذي يجب تذكره هو أنه إذا كنت تتصفح الشبكة بنشاط أو تقوم بتنزيل شيء ما ، فسيصبح القياس أقل من القياس الحقيقي. لذا ، من الناحية المثالية ، يجب ترك المسبار على الشبكة كمستهلك لحركة المرور الوحيد.



ملاحظة: من فضلك لا ركلة لجودة الكود. أنا علمت نفسي بدون خبرة. كود المصدر على جيثب . النقد مقبول.



All Articles