Распрацоўка zond-а для замеру хуткасці інтэрнэту

Распрацоўка zond-а для замеру хуткасці інтэрнэту
Добры дзень усім хабра-карыстальнікам.

Увесь час чытаю на хабры артыкула аб распрацоўках таго ці іншага функцыяналу на «малінцы». Вырашыў вось падзяліцца сваёй напрацоўкай.

перадгісторыя

Працую я ў кампаніі, якая прадстаўляе паслугі кабельнага тэлебачання і доступу ў інтэрнэт. І, як гэта бывае ў падобных кампаніях, перыядычна чую скаргі аб неадпаведнасці тарыфнага плана заяўленаму ў дамове. То карыстач жаліцца на нізкую хуткасць «па кабелі», то на высокія пінгі вызначаных сэрвісаў, часам на поўную адсутнасць інтэрнэту ў вызначаны час сутак. Часцяком, такія скаргі пападаюць у пул заявак, па якіх адбываецца выезд "на месца" аднаго з супрацоўнікаў з працоўным наўтбукам, на якім і вырабляюцца ўсе замеры. І, часцяком, высвятляецца, што са хуткасцю ўсё ў парадку. А нізкая хуткасць насамрэч на мабільным тэлефоне, праз wi-fi, на балконе. Ну, ці нешта падобнае.

Нажаль, выязджаць да абанента напрыклад у 21:37, калі ў яго найболей нізкія хуткасці, не атрымліваецца. Усё ж такі працоўны дзень супрацоўнікаў абмежаваны. Замена роўтара эфекту не дае, т.я. дыяпазон частот для wi-fi у нашай краіне сумна захламлены.

Для даведкі — дзяржаўны правайдэр у РБ прымусова ўключае на ўсіх прыладах wi-fi, якія прадстаўляюцца ў карыстанне, і вяшчае SSID ByFly з кожнай прылады. Нават калі ў абанента няма паслугі інтэрнета, а толькі хатні тэлефон. Зроблена гэта для дадатковых продажаў. Можна ў шапіку купіць карту дадзенага аператара, падлучыцца да любой кропкі з імем ByFly і, увёўшы дадзеныя з карты, атрымліваць паслугі інтэрнэту. З улікам амаль 100% пакрыцця гарадоў і значным пакрыццём прыватнага сектара і сельскіх населеных пунктаў - знайсці кропку падключэння не складае праблем.

Назіранне за нашымі вонкавымі каналамі сувязі паказваюць, што маецца зададзены запас паласы прапускання. І абаненты сумарна не спажываюць наяўныя каналы нават у гадзіну-пік. З гэтым у нас усё вельмі сур'ёзна. Выкарыстанне розных сэрвісаў і розных сервераў замеру хуткасці прывёў да цікавых вынікаў. Аказваецца не ўсе сэрвісы аднолькава карысныя... Асабліва па-вечарам. І не варта адназначна ім давяраць. Мноства аператараў той жа сеткі Ookla не маюць шырокіх каналаў сувязі, альбо працуюць упрытык. А гэта значыць, што ў вячэрні час атрымаць сумленны вынік часта практычна немагчыма. Ды і магістралы аказваецца грашаць. Для прыкладу спробы замеру хуткасці ў японію паказваюць вельмі жаласныя вынікі…

Першаснае рашэнне

Распрацоўка zond-а для замеру хуткасці інтэрнэту
Фота носіць ілюстрацыйны характар

Былі разгорнутыя два серверы кантролю хуткасці. Першы - гэта LibreSpeed, другі - Speedtest ад OOKLA. Параўноўваліся паказчыкі абодвух сэрвісаў. Спыніцца вырашылі ўсёткі на Ookla т.к. да 90% абанентаў карыстаюцца менавіта дадзеным сэрвісам.

Далей былі напісаны інструкцыі для карыстальнікаў і супрацоўнікаў аб тым, як вырабляць замеры хуткасці ўнутры сеткі і вонкі. Г.зн. пры запуску тэсту па змаўчанні адбываецца замер хуткасці ўсярэдзіне сетак. Сервер вось размешчаны ў нас на галаўной станцыі, а рашэнне Ookla па змаўчанні выбірае найблізкі сервер да абанента. Такім чынам мы правяраем працу ўласнай сеткі перадачы даных.

Для замеру хуткасці ўнутры краіны (ёсць у нас асобная сетка для аператараў сувязі, якая аб'ядноўвае ўсіх аператараў і асноўныя дата-цэнтры ўнутры краіны) трэба выбраць правайдэра ўнутры краіны і зрабіць паўторны замер. Мы дасведчаным шляхам вылучылі некалькі сервераў якія даюць больш-менш стабільны вынік у любы час сутак і прапісалі іх рэкамендаванымі ў інструкцыі.

Ну і аналагічныя дзеянні для вонкавых каналаў сувязі. Знайшлі вялікіх аператараў з вялікімі каналамі на speedtest серверах і напісалі іх у рэкамендацыях (ужо прабачыце «Moskva – Rostelecom» і «Riga – Baltcom», але буду менавіта дадзеныя вузлы рэкамендаваць для атрымання адэкватных лічбаў. Асабіста я атрымліваў да ~870 мегабіт з дадзеных сервераў у гадзіны-пік).

Навошта, спытаецеся вы, такія складанасці? Усё вельмі проста. Мы атрымалі дастаткова зручную прыладу, якая ва ўмелых руках дазваляе вызначыць: ці няма праблем у нашых сетках, ці няма праблем у рэспубліканскай сетцы, ці няма праблем у магістрала. Калі чалавек скардзіцца на нізкую хуткасць спампоўкі з нейкага сэрвісу — мы можам зрабіць замер хуткасці канала абанента і пасля параўнаць з тым, што ён атрымлівае ад сэрвісу. І аргументавана паказаць, што мы сапраўды вылучаем канал, прапісаны ў дамове. А таксама можам растлумачыць магчымыя прычыны такой розніцы ў хуткасцях.

Другаснае рашэнне

Застаецца адкрытым пытанне падзення хуткасці па-вечарам/на працягу сутак. Як зрабіць усё тое ж самае не знаходзячыся ў абанента дома? Узяць танны аднаплатнік з гігабітнай сеткай і зрабіць з яго так званы зонд. Прылада павінна з зададзеным інтэрвалам часу рабіць замеры хуткасці па кабелі. Рашэнне павінна быць апенсорснае, максімальна непатрабавальнае, з зручнай адмінкай для прагляду вынікаў замераў. Прылада павінна быць максімальна таннай, каб можна было лёгка замяніць і без асцярог пакідаць у абанента на n сутак.

Рэалізацыя

Распрацоўка zond-а для замеру хуткасці інтэрнэту

За аснову быў узяты BananaPI (мадэль M1). Прычын выбару насамрэч дзве.

  1. Гігабітны порт.
  2. Ён проста валяўся ў тумбачцы.

Далей было прынята рашэнне выкарыстоўваць python кліента SpeedTest-кліматыч для сэрвісу Speedtest by Ookla у якасці бэкэнда для замеру хуткасці. Бібліятэку Pythonping для замеру хуткасці пінга. Ну, і php для адмінкі. Для прыемнасці ўспрымання прымяніў вушка.

З прычыны таго, што рэсурсы малінкі не гумовыя была скарыстана звязак nginx+php-fpm+sqlite3. Ад MySQL жадалася адмовіцца з-за яе цяжару і празмернасці. Прадбачу пытанне адносна Iperf. Ад яго прыйшлося адмовіцца з прычыны немагчымасці яго выкарыстання на кірунках адрозных ад лакальных.

Першапачаткова пайшоў па-шляху многіх на гэтым сайце. Мадыфікаваў кліент speedtest-cli. Але затым, крыху падумаўшы, адмовіўся ад дадзенай задумы. Напісаў свой воркер, які выкарыстоўвае магчымасці арыгінальнага кліента.

Для аналізу пінгаў проста напісаў асобны апрацоўшчык. Бярэм сярэдняе значэнне па замеры. Пінгавалка ўмее як ​​ip адрас так і даменнае імя.

Асінхроннасці працы не дамагаўся. Яна ў дадзеным выпадку не асоба патрэбна.

Адмінка для адзнакі вынікаў атрымалася даволі мінімалістычная.

Распрацоўка zond-а для замеру хуткасці інтэрнэтуМал. Асноўнае акно адмінкі з вынікамі тэсціравання

Распрацоўка zond-а для замеру хуткасці інтэрнэтуМал. Наладкі тэставання

Распрацоўка zond-а для замеру хуткасці інтэрнэту
Мал. Абнаўленне спісу сервераў Speedtest

Вось уласна і ўсё. Ідэя рэалізавана на каленцы, у вольны ад працы час. Палявыя выпрабаванні пакуль не пачалі. Але плануем хуткім часам запусціць у працу дасведчаныя ўзоры. Выкарыстоўваць можна як правайдэрам там і кліентам правайдэраў. Ніхто не перашкаджае паставіць рабіць замеры дома кругласутачна. Адзінае, варта памятаць, што калі вы актыўна сёрфіце ў сетцы ці нешта пампуеце - то і замер атрымаецца ніжэй рэальнага. Так што ў ідэале - трэба зонд пакідаць у сетцы адзіным спажыўцом трафіку.

PS: за якасць кода прашу не штурхаць. Я самавук без досведу. Зыходны код на GitHub. Крытыка прымаецца.

Крыніца: habr.com

Дадаць каментар