Изработка на зона за мерење на брзина на Интернет

Изработка на зона за мерење на брзина на Интернет
Добро попладне на сите корисници на Хабра.

Постојано читам написи на Хабре за развојот на оваа или онаа функционалност на Малинка. Решив да ја споделам мојата работа овде.

праисторијата

Работам за компанија која обезбедува кабловска телевизија и услуги за пристап до Интернет. И, како што се случува во такви компании, периодично слушам поплаки за неусогласеноста на тарифниот план со она што е наведено во договорот. Или корисникот се жали на мала брзина „преку кабел“, потоа на високи пингови на одредени услуги, понекогаш и на целосно отсуство на Интернет во одредени периоди од денот. Честопати, ваквите поплаки завршуваат во куп барања, врз основа на кои еден од вработените оди „на лице место“ со работен лаптоп, на кој се прават сите мерења. И, често, излегува дека сè е во ред со брзината. А малата брзина е всушност на мобилен телефон, преку wi-fi, на балкон. Па, или нешто слично.

За жал, не е можно да се оди на претплатник, на пример, во 21:37 часот, кога тој има најниски брзини. Впрочем, работното време на вработените е ограничено. Замената на рутерот нема ефект, бидејќи ... Опсегот на фреквенции за wi-fi кај нас е жално натрупан.

За евиденција — државниот провајдер во Република Белорусија насилно вклучува Wi-Fi на сите уреди што се предвидени за употреба и го емитува ByFly SSID од секој уред. Дури и ако претплатникот нема Интернет услуга, туку само домашен телефон. Ова беше направено за дополнителна продажба. Можете да купите картичка од овој оператор во киоск, да се поврзете на која било точка наречена ByFly и, со внесување на податоците од картичката, да добивате услуги на Интернет. Со оглед на речиси 100% покриеност на градовите и значителна покриеност на приватниот сектор и руралните средини, наоѓањето точка за поврзување не е проблем.

Набљудувањата на нашите надворешни комуникациски канали покажуваат дека постои одредена резерва на пропусен опсег. А претплатниците не ги трошат достапните канали во целост, дури и за време на шпицот. Ние сме многу сериозни во врска со ова. Употребата на различни услуги и различни сервери за мерење брзина доведоа до интересни резултати. Излегува дека не се сите услуги подеднакво корисни... Особено навечер. И дефинитивно не треба да им верувате. Многу оператори од истата мрежа на Ookla немаат широки канали за комуникација или работат зад себе. Тоа значи дека во вечерните часови често е речиси невозможно да се добие искрен резултат. Да, и автопатите испаѓаат грешни. На пример, обидите за мерење на брзината во Јапонија покажуваат крајно катастрофални резултати...

Примарна одлука

Изработка на зона за мерење на брзина на Интернет
Фотографијата е само за илустративни цели.

Беа распоредени два сервери за контрола на брзината. Првиот е LibreSpeed, вториот - Speedtest од OOKLA. Изведбата на двете услуги беше споредена. На крајот на краиштата, решивме да застанеме во Ookla бидејќи ... до 90% од претплатниците ја користат оваа услуга.

Следно, беа напишани упатства за корисниците и вработените како да се измерат брзините внатре и надвор од мрежата. Оние. Кога ќе започне тестот, стандардно се мери брзината во мрежата. Серверот се наоѓа на нашиот главен крај, а решението Ookla стандардно го избира серверот најблиску до претплатникот. На овој начин ја проверуваме работата на нашата сопствена мрежа за пренос на податоци.

За да ја измерите брзината во земјата (имаме посебна мрежа за телекомуникациски оператори, која ги обединува сите оператори и главни центри за податоци во земјата), треба да изберете провајдер во земјата и да направите второ мерење. Емпириски идентификувавме неколку сервери кои даваат повеќе или помалку стабилни резултати во секое време од денот и ги наведовме како што се препорачани во упатствата.

Па, слични акции за надворешни комуникациски канали. Најдовме големи оператори со големи канали на серверите за брз тест и ги напишавме во препораки (извини „Москва - Ростелеком“ и „Рига - Балтком“, но јас ќе ги препорачам овие јазли да добијат соодветен број. Лично добив до ~870 мегабити од овие сервери за време на шпицот).

Зошто, прашувате, такви тешкотии? Сè е многу едноставно. Добивме прилично удобна алатка која, во способни раце, ни овозможува да утврдиме дали има проблеми во нашите мрежи, дали има проблеми во републиканската мрежа или дали има проблеми со 'рбетот. Ако некое лице се жали на мала брзина на преземање од некоја услуга, можеме да ја измериме брзината на каналот на претплатникот и потоа да ја споредиме со она што го добива од услугата. И разумно е да покажеме дека чесно го доделуваме каналот наведен во договорот. Можеме да ги објасниме и можните причини за таквата разлика во брзините.

Секундарно решение

Останува отворено прашањето за падот на брзината во вечерните часови/во текот на денот. Како да го направите истото без да бидете во домот на претплатникот? Земете евтина картичка со една табла со гигабитна мрежа и направете од неа таканаречена сонда. Уредот мора да врши мерења на брзината долж кабелот во даден временски интервал. Решението треба да биде со отворен код, колку што е можно понепретенциозно, со удобен административен панел за прегледување на резултатите од мерењето. Уредот треба да биде што е можно поевтин за да може лесно да се замени и без страв да се остави кај претплатникот n дена.

Реализация

Изработка на зона за мерење на брзина на Интернет

Како основа беше земена BananaPI (модел М1). Всушност, постојат две причини за овој избор.

  1. Гигабитна порта.
  2. Само лежеше наоколу во ноќната маса.

Следно, беше одлучено да се користи клиентот python speedtest-cli за услугата Speedtest by Ookla како заднина за мерење на брзината. Библиотека Пајтонпинг за мерење на брзината на пинг. Па, и php за администраторскиот панел. За олеснување на перцепцијата користев bootstrap.

Поради фактот што ресурсите на Raspberry не се флексибилни, користена е комбинацијата nginx+php-fpm+sqlite3. Сакав да се откажам од MySQL поради неговата тежина и вишок. Очекувам прашање во врска со Iperf. Мораше да се напушти поради неможноста да се користи во други насоки освен локални.

Првично го следев патот на многумина на оваа страница. Го измени клиентот speedtest-cli. Но, потоа, откако малку размислил, ја напуштил оваа идеја. Напишав свој работник кој ги користи можностите на оригиналниот клиент.

За да ги анализирам пинговите, едноставно напишав посебен управувач. Ја земаме просечната вредност од мерењето. Алатката за пинг може да се справи и со IP адресата и со името на доменот.

Не постигнав асинхрона работа. Тоа не е особено потребно во овој случај.

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

Изработка на зона за мерење на брзина на ИнтернетСл. Главен администраторски прозорец со резултати од тестирањето

Изработка на зона за мерење на брзина на ИнтернетСл. Тест поставки

Изработка на зона за мерење на брзина на Интернет
Сл. Ажурирајте ја листата на сервери Speedtest

Тоа е се. Идејата се спроведуваше на колена, во слободно време. Теренските тестови се уште не се започнати. Но, планираме да лансираме прототипови во блиска иднина. Може да се користи и од тамошните провајдери и од клиентите на провајдерите. Никој не ви пречи да правите мерења дома деноноќно. Единственото нешто што треба да го запомните е дека ако активно сурфате на Интернет или преземате нешто, тогаш мерењето ќе биде пониско од вистинското. Значи, идеално, треба да ја оставите сондата на мрежата како единствен потрошувач на сообраќај.

PS: те молам не ме критикувајте за квалитетот на кодот. Јас сум самоук без искуство. Изворниот код за GitHub. Критиката е прифатена.

Извор: www.habr.com

Додадете коментар