Разработка на зона за измерване на скоростта на интернет

Разработка на зона за измерване на скоростта на интернет
Добър ден на всички потребители на Хабра.

Постоянно чета статии на Habré за развитието на тази или онази функционалност на Malinka. Реших да споделя работата си тук.

праистория

Работя във фирма, която предоставя услуги за кабелна телевизия и достъп до Интернет. И както се случва в такива компании, периодично чувам оплаквания относно несъответствието на тарифния план с това, което е посочено в договора. Или потребителят се оплаква от ниска скорост „чрез кабел“, след това от висок ping на определени услуги, понякога от пълна липса на интернет в определени часове на деня. Често такива оплаквания завършват в набор от заявки, въз основа на които един от служителите отива „на място“ с работещ лаптоп, на който се правят всички измервания. И често се оказва, че всичко е наред със скоростта. И ниската скорост всъщност е на мобилен телефон, през wi-fi, на балкона. Е, или нещо подобно.

За съжаление не е възможно да отидете при абонат например в 21:37, когато той има най-ниските скорости. Все пак работното време на служителите е ограничено. Смяната на рутера няма ефект, защото... Честотният диапазон на wi-fi у нас е ужасно затрупан.

За протокола — държавният доставчик в Република Беларус принудително включва wi-fi на всички предоставени за ползване устройства и излъчва SSID на ByFly от всяко устройство. Дори ако абонатът няма интернет услуга, а само домашен телефон. Това беше направено за допълнителни продажби. Можете да закупите карта от този оператор в павилион, да се свържете с всяка точка с име ByFly и, като въведете данните от картата, да получите интернет услуги. Като се има предвид почти 100% покритие на градовете и значително покритие на частния сектор и селските райони, намирането на точка за свързване не е проблем.

Наблюденията на нашите външни комуникационни канали показват, че има определен резерв от честотна лента. А абонатите не консумират общо наличните канали, дори и в час пик. Ние сме много сериозни по този въпрос. Използването на различни услуги и различни сървъри за измерване на скорост доведе до интересни резултати. Оказва се, че не всички услуги са еднакво полезни... Особено вечер. И определено не трябва да им се доверявате. Много оператори на една и съща мрежа на Ookla нямат широки комуникационни канали или работят обратно. Това означава, че вечер често е почти невъзможно да се получи честен резултат. Да, и магистралите се оказват грешни. Например опитите за измерване на скоростта в Япония показват изключително катастрофални резултати...

Първоначално решение

Разработка на зона за измерване на скоростта на интернет
Снимката е само с илюстративна цел.

Бяха внедрени два сървъра за контрол на скоростта. Първият е LibreSpeed, второ - Speedtest от OOKLA. Изпълнението на двете услуги беше сравнено. Все пак решихме да се спрем на Ookla, защото... до 90% от абонатите използват тази услуга.

След това бяха написани инструкции за потребителите и служителите как да измерват скоростите вътре и извън мрежата. Тези. Когато тестът започне, по подразбиране се измерва скоростта в мрежата. Сървърът се намира в нашата централна станция и решението Ookla по подразбиране избира сървъра, който е най-близо до абоната. По този начин проверяваме работата на собствената си мрежа за пренос на данни.

За да измерите скоростта в страната (имаме отделна мрежа за телекомуникационни оператори, която обединява всички оператори и основни центрове за данни в страната), трябва да изберете доставчик в страната и да направите второ измерване. Ние емпирично идентифицирахме няколко сървъра, които дават повече или по-малко стабилни резултати по всяко време на деня и ги изброихме, както се препоръчва в инструкциите.

Е, подобни действия за външни комуникационни канали. Намерихме големи оператори с големи канали на сървъри за скоростни тестове и ги написахме в препоръки (съжалявам „Москва - Ростелеком“ и „Рига - Балтком“, но ще препоръчам тези възли, за да получа адекватни номера. Лично аз получих до ~870 мегабита от тези сървъри по време на пиковите часове).

Защо, питате вие, такива трудности? Всичко е много просто. Получихме доста удобен инструмент, който в способни ръце ни позволява да определим дали има проблеми в нашите мрежи, дали има проблеми в републиканската мрежа или дали има проблеми с опорната мрежа. Ако човек се оплаче от ниска скорост на изтегляне от някоя услуга, можем да измерим скоростта на канала на абоната и след това да я сравним с това, което получава от услугата. И е разумно да покажем, че ние честно разпределяме канала, посочен в договора. Можем да обясним и възможните причини за такава разлика в скоростите.

Вторично решение

Въпросът за спада на скоростта вечер/денем остава открит. Как да направите същото, без да сте в дома на абоната? Вземете една евтина едноплаткова карта с гигабитова мрежа и си направете така наречената сонда. Устройството трябва да измерва скоростта по дължината на кабела през даден интервал от време. Решението трябва да е с отворен код, възможно най-непретенциозно, с удобен административен панел за преглед на резултатите от измерванията. Устройството трябва да бъде възможно най-евтино, за да може лесно да се смени и да се остави на абоната за n дни без страх.

Изпълнение

Разработка на зона за измерване на скоростта на интернет

За основа беше взет BananaPI (модел M1). Всъщност има две причини за този избор.

  1. Гигабитов порт.
  2. Просто лежеше на нощното шкафче.

След това беше решено да се използва клиентът на python Speedtest-CLI за услугата Speedtest от Ookla като бекенд за измерване на скоростта. библиотека Pythonping за измерване на скоростта на ping. Е, и php за админ панела. За по-лесно възприятие използвах Bootstrap.

Поради факта, че ресурсите на Raspberry не са гъвкави, беше използвана комбинацията nginx+php-fpm+sqlite3. Исках да се откажа от MySQL поради неговата тежест и излишък. Очаквам въпрос относно Iperf. Наложи се да бъде изоставен поради невъзможността да се използва в посоки, различни от местните.

Първоначално последвах пътя на мнозина в този сайт. Променен на speedtest-cli клиента. Но след като помисли малко, той се отказа от тази идея. Написах собствен worker, който използва възможностите на оригиналния клиент.

За да анализирам пинговете, просто написах отделен манипулатор. Вземаме средната стойност от измерването. Инструментът ping може да обработва както IP адрес, така и име на домейн.

Не постигнах асинхронна работа. В този случай не е особено необходимо.

Административният панел за оценка на резултатите се оказа доста минималистичен.

Разработка на зона за измерване на скоростта на интернетФиг. Основен администраторски прозорец с резултати от тестване

Разработка на зона за измерване на скоростта на интернетФиг. Тестови настройки

Разработка на зона за измерване на скоростта на интернет
Фиг. Актуализирайте списъка със сървъри за Speedtest

Това е всичко. Идеята се осъществи на колене, в свободното ми време. Полевите тестове все още не са започнали. Но планираме да пуснем прототипи в близко бъдеще. Може да се използва както от доставчици там, така и от клиенти на доставчици. Никой не ви притеснява да правите измервания у дома денонощно. Единственото нещо, което трябва да запомните е, че ако сърфирате активно в интернет или изтегляте нещо, измерването ще бъде по-ниско от реалното. Така че в идеалния случай трябва да оставите сондата в мрежата като единствен потребител на трафик.

PS: Моля, не ме критикувайте за качеството на кода. Аз съм самоук без опит. Изходен код за GitHub. Критиката се приема.

Източник: www.habr.com

Добавяне на нов коментар