Utveckling av en zon för mätning av internethastighet

Utveckling av en zon för mätning av internethastighet
God eftermiddag till alla Habra-användare.

Jag läser ständigt artiklar på Habré om utvecklingen av den eller den funktionaliteten på Malinka. Jag bestämde mig för att dela mitt arbete här.

förhistoria

Jag arbetar för ett företag som tillhandahåller kabel-tv och internettjänster. Och, som händer i sådana företag, hör jag med jämna mellanrum klagomål om inkonsekvensen av tariffplanen med vad som anges i kontraktet. Antingen klagar användaren på låg hastighet "via kabel", sedan över höga pingar av vissa tjänster, ibland över den fullständiga frånvaron av Internet vid vissa tider på dygnet. Ofta hamnar sådana klagomål i en pool av förfrågningar, som utlöser ett besök på platsen av en av de anställda med en fungerande bärbar dator, på vilken alla mätningar görs. Och ofta visar det sig att allt är bra med hastigheten. Och den låga hastigheten är faktiskt på en mobiltelefon, via wi-fi, på balkongen. Tja, eller något liknande.

Tyvärr går det inte att gå till en abonnent till exempel 21:37, då denne har lägst hastighet. De anställdas arbetstid är trots allt begränsad. Att byta routern har ingen effekt, eftersom... Frekvensområdet för wi-fi i vårt land är bedrövligt rörigt.

För posten — den statliga leverantören i Republiken Vitryssland slår på Wi-Fi med tvång på alla enheter som tillhandahålls för användning och sänder ByFly SSID från varje enhet. Även om abonnenten inte har internettjänst, utan bara en hemtelefon. Detta gjordes för merförsäljning. Du kan köpa ett kort från den här operatören i en kiosk, ansluta till valfri punkt som heter ByFly och, genom att ange data från kortet, ta emot Internettjänster. Med tanke på nästan 100 % täckning av städer och betydande täckning av den privata sektorn och landsbygdsområden är det inte ett problem att hitta en anslutningspunkt.

Observationer av våra externa kommunikationskanaler visar att det finns en given bandbreddsreserv. Och prenumeranter konsumerar inte de tillgängliga kanalerna totalt, inte ens under rusningstid. Vi är mycket allvarliga med detta. Användningen av olika tjänster och olika hastighetsmätningsservrar ledde till intressanta resultat. Det visar sig att inte alla tjänster är lika användbara... Speciellt på kvällarna. Och du ska absolut inte lita på dem. Många operatörer av samma Ookla-nätverk har inte breda kommunikationskanaler eller arbetar rygg mot rygg. Det gör att det på kvällen ofta är nästan omöjligt att få ett ärligt resultat. Ja, och motorvägarna visar sig vara syndiga. Till exempel visar försök att mäta hastighet i Japan extremt katastrofala resultat...

Primärt beslut

Utveckling av en zon för mätning av internethastighet
Fotot är illustrativt

Två hastighetskontrollservrar var utplacerade. Den första är LibreSpeed, andra - Speedtest från OOKLA. Båda tjänsternas prestanda jämfördes. När allt kommer omkring bestämde vi oss för att stanna vid Ookla eftersom... upp till 90 % av prenumeranterna använder den här tjänsten.

Därefter skrevs instruktioner för användare och anställda om hur man mäter hastigheter inom och utanför nätverket. De där. När testet startar mäts som standard hastigheten inom nätverket. Servern finns vid vår huvudände och Ookla-lösningen väljer som standard den server som är närmast abonnenten. På så sätt kontrollerar vi driften av vårt eget dataöverföringsnät.

För att mäta hastighet inom landet (vi har ett separat nätverk för teleoperatörer, som förenar alla operatörer och huvuddatacenter inom landet) behöver du välja en leverantör inom landet och göra en andra mätning. Vi har empiriskt identifierat flera servrar som ger mer eller mindre stabila resultat när som helst på dygnet och har listat dem enligt instruktionerna.

Jo, liknande åtgärder för externa kommunikationskanaler. Vi hittade stora operatörer med stora kanaler på speedtest-servrar och skrev dem i rekommendationer (förlåt "Moskva - Rostelecom" och "Riga - Baltcom", men jag kommer att rekommendera dessa noder för att få tillräckliga siffror. Personligen fick jag upp till ~870 megabit från dessa servrar under rusningstid).

Varför, frågar du, sådana svårigheter? Allt är väldigt enkelt. Vi har fått ett ganska bekvämt verktyg som i kapabla händer gör att vi kan avgöra om det finns problem i våra nätverk, om det finns problem i det republikanska nätverket eller om det finns problem med ryggraden. Om en person klagar på låg nedladdningshastighet från någon tjänst kan vi mäta hastigheten på abonnentens kanal och sedan jämföra den med vad han får från tjänsten. Och det är rimligt att visa att vi ärligt allokerar den kanal som anges i kontraktet. Vi kan också förklara de möjliga orsakerna till en sådan skillnad i hastigheter.

Sekundär lösning

Frågan om hastighetsfallet på kvällar/dagar är fortfarande öppen. Hur gör man samma sak utan att vara hemma hos abonnenten? Ta ett billigt enkortskort med gigabitnätverk och gör en så kallad sond av det. Enheten måste göra hastighetsmätningar längs kabeln vid ett givet tidsintervall. Lösningen bör vara öppen källkod, så opretentiös som möjligt, med en bekväm adminpanel för visning av mätresultat. Enheten ska vara så billig som möjligt så att den enkelt kan bytas ut och lämnas hos abonnenten i n dagar utan rädsla.

genomförande

Utveckling av en zon för mätning av internethastighet

BananaPI (modell M1) togs som grund. Det finns faktiskt två skäl till detta val.

  1. Gigabit port.
  2. Den låg bara i nattduksbordet.

Därefter beslutades det att använda python-klienten speedtest-cli för Speedtest by Ookla-tjänsten som en backend för att mäta hastighet. bibliotek Pythonping för att mäta pinghastighet. Tja, och php för adminpanelen. För att underlätta uppfattningen använde jag bootstrap.

På grund av att Raspberrys resurser inte är flexibla användes kombinationen nginx+php-fpm+sqlite3. Jag ville ge upp MySQL på grund av dess tyngd och redundans. Jag förväntar mig en fråga angående Iperf. Den måste överges på grund av omöjligheten att använda den i andra riktningar än lokala.

Till en början följde jag mångas väg på den här webbplatsen. Ändrade speedtest-cli-klienten. Men sedan, efter att ha funderat lite, övergav han denna idé. Jag skrev min egen arbetare som använder funktionerna hos den ursprungliga klienten.

För att analysera pingar skrev jag helt enkelt en separat hanterare. Vi tar medelvärdet från mätningen. Pingverktyget kan hantera både IP-adress och domännamn.

Jag uppnådde inte asynkront arbete. Det behövs inte särskilt i det här fallet.

Administratörspanelen för att utvärdera resultat visade sig vara ganska minimalistisk.

Utveckling av en zon för mätning av internethastighetFIG. Huvudadminfönster med testresultat

Utveckling av en zon för mätning av internethastighetFIG. Testinställningar

Utveckling av en zon för mätning av internethastighet
FIG. Uppdatera listan över Speedtest-servrar

Det är allt. Idén genomfördes på mina knän, på min fritid. Fälttester har ännu inte påbörjats. Men vi planerar att lansera prototyper inom en snar framtid. Det kan användas både av leverantörer där och av leverantörers kunder. Ingen stör dig på att ta mått hemma dygnet runt. Det enda du bör komma ihåg är att om du aktivt surfar på Internet eller laddar ner något, så blir måttet lägre än det riktiga. Så, helst, måste du lämna sonden på nätverket som den enda trafikkonsumenten.

PS: snälla kritisera mig inte för kvaliteten på koden. Jag är självlärd utan erfarenhet. Källkod för GitHub. Kritik accepteras.

Källa: will.com

Lägg en kommentar