Sviluppo di una zona per misurare la velocità di Internet

Sviluppo di una zona per misurare la velocità di Internet
Buon pomeriggio a tutti gli utenti Habra.

Leggo costantemente articoli su Habré sullo sviluppo di questa o quella funzionalità su Malinka. Ho deciso di condividere il mio lavoro qui.

Sfondo

Lavoro per un'azienda che fornisce servizi di televisione via cavo e accesso a Internet. E, come accade in tali aziende, sento periodicamente lamentele sull'incoerenza del piano tariffario con quanto indicato nel contratto. O l'utente si lamenta della bassa velocità “via cavo”, poi dei ping elevati di alcuni servizi, a volte della completa assenza di Internet in determinati orari della giornata. Spesso tali reclami finiscono in un pool di richieste, in base alle quali uno dei dipendenti si reca “sul posto” con un laptop funzionante, sul quale vengono effettuate tutte le misurazioni. E, spesso, si scopre che con la velocità va tutto bene. E la bassa velocità è effettivamente sul cellulare, via wi-fi, sul balcone. Bene, o qualcosa di simile.

Purtroppo non è possibile recarsi da un abbonato, ad esempio, alle 21:37, quando ha le velocità più basse. Dopotutto, l'orario di lavoro dei dipendenti è limitato. La sostituzione del router non ha alcun effetto, perché... La gamma di frequenze per il Wi-Fi nel nostro Paese è tristemente disordinata.

Per la cronaca — il fornitore statale della Repubblica di Bielorussia attiva forzatamente la connessione Wi-Fi su tutti i dispositivi forniti per l'uso e trasmette l'SSID ByFly da ciascun dispositivo. Anche se l'abbonato non dispone di un servizio Internet, ma solo di un telefono di casa. Ciò è stato fatto per vendite aggiuntive. Puoi acquistare una carta da questo operatore presso un chiosco, collegarti a qualsiasi punto denominato ByFly e, inserendo i dati della carta, ricevere i servizi Internet. Considerando una copertura pari quasi al 100% delle città e una copertura significativa del settore privato e delle aree rurali, trovare un punto di connessione non è un problema.

Le osservazioni dei nostri canali di comunicazione esterni mostrano che esiste una determinata riserva di larghezza di banda. E gli abbonati non consumano in totale i canali disponibili, nemmeno nelle ore di punta. Siamo molto seri a questo proposito. L'utilizzo di diversi servizi e diversi server di misurazione della velocità ha portato a risultati interessanti. Si scopre che non tutti i servizi sono ugualmente utili... Soprattutto la sera. E non dovresti assolutamente fidarti di loro. Molti operatori della stessa rete Ookla non dispongono di ampi canali di comunicazione o lavorano fianco a fianco. Ciò significa che la sera spesso è quasi impossibile ottenere un risultato onesto. Sì, e le autostrade risultano peccaminose. Ad esempio, i tentativi di misurare la velocità in Giappone mostrano risultati estremamente disastrosi...

Decisione primaria

Sviluppo di una zona per misurare la velocità di Internet
La foto è a scopo illustrativo.

Sono stati implementati due server di controllo della velocità. Il primo è Velocità libera, il secondo - Test di velocità di OOKLA. Sono state confrontate le prestazioni di entrambi i servizi. Dopotutto, abbiamo deciso di fermarci a Ookla perché... fino al 90% degli abbonati utilizza questo servizio.

Successivamente sono state scritte istruzioni per utenti e dipendenti su come misurare la velocità all'interno e all'esterno della rete. Quelli. All'avvio del test, per impostazione predefinita viene misurata la velocità all'interno della rete. Il server si trova presso la nostra sede centrale e la soluzione Ookla seleziona per impostazione predefinita il server più vicino all'abbonato. In questo modo controlliamo il funzionamento della nostra rete di trasmissione dati.

Per misurare la velocità all'interno del Paese (abbiamo una rete separata per gli operatori di telecomunicazioni, che unisce tutti gli operatori e i principali data center all'interno del Paese), è necessario selezionare un fornitore all'interno del Paese ed effettuare una seconda misurazione. Abbiamo individuato empiricamente diversi server che danno risultati più o meno stabili in ogni momento della giornata e li abbiamo elencati come consigliato nelle istruzioni.

Bene, azioni simili per i canali di comunicazione esterni. Abbiamo trovato grandi operatori con canali ampi sui server speedtest e li abbiamo scritti nei consigli (scusate “Moskva - Rostelecom” e “Riga - Baltcom”, ma consiglierò questi nodi per ottenere numeri adeguati. Personalmente, ho ricevuto fino a ~870 megabit da questi server durante le ore di punta).

Perché, chiedi, tali difficoltà? Tutto è molto semplice. Abbiamo ricevuto uno strumento abbastanza comodo che, in mani capaci, ci permette di determinare se ci sono problemi nelle nostre reti, se ci sono problemi nella rete repubblicana o se ci sono problemi con la dorsale. Se una persona si lamenta della bassa velocità di download di qualche servizio, possiamo misurare la velocità del canale dell’abbonato e poi confrontarla con ciò che riceve dal servizio. Ed è ragionevole dimostrare che assegniamo onestamente il canale specificato nel contratto. Possiamo anche spiegare le possibili ragioni di tale differenza di velocità.

Soluzione secondaria

Resta aperta la questione del calo di velocità nelle ore serali/diurne. Come fare la stessa cosa senza essere a casa dell’abbonato? Prendi una scheda economica a scheda singola con una rete Gigabit e creane una cosiddetta sonda. Il dispositivo deve effettuare misurazioni della velocità lungo il cavo in un determinato intervallo di tempo. La soluzione dovrebbe essere open source, il più semplice possibile, con un comodo pannello di amministrazione per visualizzare i risultati delle misurazioni. Il dispositivo dovrebbe essere il più economico possibile in modo che possa essere facilmente sostituito e lasciato con l'abbonato per n giorni senza paura.

implementazione

Sviluppo di una zona per misurare la velocità di Internet

Come base è stata presa BananaPI (modello M1). In realtà le ragioni di questa scelta sono due.

  1. Porta Gigabit.
  2. Era semplicemente sul comodino.

Successivamente, si è deciso di utilizzare il client Python SpeedTest-cli per il servizio Speedtest by Ookla come backend per misurare la velocità. biblioteca Python per misurare la velocità di ping. Bene, e php per il pannello di amministrazione. Per facilità di percezione ho usato bootstrap.

Dato che le risorse di Raspberry non sono flessibili, è stata utilizzata la combinazione nginx+php-fpm+sqlite3. Volevo abbandonare MySQL a causa della sua pesantezza e ridondanza. Anticipo una domanda riguardante Iperf. Dovette essere abbandonato per l'impossibilità di utilizzarlo per destinazioni diverse da quelle locali.

Inizialmente ho seguito il percorso di molti su questo sito. Modificato il client speedtest-cli. Ma poi, dopo averci pensato un po’, abbandonò l’idea. Ho scritto il mio lavoratore che utilizza le funzionalità del client originale.

Per analizzare i ping, ho semplicemente scritto un gestore separato. Prendiamo il valore medio dalla misurazione. Lo strumento ping può gestire sia l'indirizzo IP che il nome di dominio.

Non ho raggiunto il lavoro asincrono. Non è particolarmente necessario in questo caso.

Il pannello di amministrazione per la valutazione dei risultati si è rivelato piuttosto minimalista.

Sviluppo di una zona per misurare la velocità di InternetFig. Finestra di amministrazione principale con i risultati dei test

Sviluppo di una zona per misurare la velocità di InternetFig. Impostazioni di prova

Sviluppo di una zona per misurare la velocità di Internet
Fig. Aggiorna l'elenco dei server Speedtest

È tutto. L'idea è stata realizzata in ginocchio, nel tempo libero. Le prove sul campo non sono ancora iniziate. Ma prevediamo di lanciare prototipi nel prossimo futuro. Può essere utilizzato sia dai fornitori lì che dai clienti dei fornitori. Nessuno ti disturba a prendere le misurazioni a casa XNUMX ore su XNUMX. L'unica cosa che dovresti ricordare è che se navighi attivamente in Internet o scarichi qualcosa, la misurazione sarà inferiore a quella reale. Quindi, idealmente, è necessario lasciare la sonda sulla rete come unico consumatore di traffico.

PS: per favore non criticarmi per la qualità del codice. Sono autodidatta senza esperienza. Codice sorgente per GitHub. Le critiche sono accettate.

Fonte: habr.com

Aggiungi un commento