Développement d'un zond pour mesurer la vitesse d'Internet

Développement d'un zond pour mesurer la vitesse d'Internet
Bonjour à tous les utilisateurs de Habra.

Je lis constamment des articles sur Habré sur le développement de telle ou telle fonctionnalité sur Malinka. J'ai décidé de partager mon travail ici.

Préhistoire

Je travaille pour une entreprise qui fournit des services de télévision par câble et d'accès à Internet. Et, comme cela arrive dans de telles entreprises, j'entends périodiquement des plaintes concernant l'incohérence du plan tarifaire avec ce qui est indiqué dans le contrat. Soit l'utilisateur se plaint du faible débit « via câble », soit des pings élevés de certains services, parfois de l'absence totale d'Internet à certaines heures de la journée. Souvent, de telles plaintes aboutissent à un pool de demandes, sur la base desquelles l'un des employés se rend « sur place » avec un ordinateur portable en état de marche, sur lequel toutes les mesures sont prises. Et, souvent, il s’avère que tout va bien avec la vitesse. Et le faible débit se fait effectivement sur un téléphone portable, via wi-fi, sur le balcon. Eh bien, ou quelque chose de similaire.

Malheureusement, il n'est pas possible de se rendre chez un abonné, par exemple, à 21h37, alors qu'il a les débits les plus bas. Après tout, les horaires de travail des salariés sont limités. Remplacer le routeur n'a aucun effet, car... La gamme de fréquences du Wi-Fi dans notre pays est terriblement encombrée.

Pour la petite histoire — le fournisseur d'État de la République de Biélorussie active de force le Wi-Fi sur tous les appareils fournis et diffuse le SSID ByFly à partir de chaque appareil. Même si l'abonné ne dispose pas de service Internet, mais seulement d'un téléphone résidentiel. Cela a été fait pour des ventes supplémentaires. Vous pouvez acheter une carte auprès de cet opérateur dans un kiosque, vous connecter à n'importe quel point nommé ByFly et, en saisissant les données de la carte, recevoir des services Internet. Compte tenu d’une couverture proche de 100 % des villes et d’une couverture importante du secteur privé et des zones rurales, trouver un point de connexion ne pose pas de problème.

Les observations de nos canaux de communication externes montrent qu'il existe une réserve de bande passante donnée. Et les abonnés ne consomment pas la totalité des chaînes disponibles, même aux heures de pointe. Nous sommes très sérieux à ce sujet. L’utilisation de différents services et de différents serveurs de mesure de vitesse a conduit à des résultats intéressants. Il s'avère que tous les services ne sont pas également utiles... Surtout le soir. Et il ne faut absolument pas leur faire confiance. De nombreux opérateurs du même réseau Ookla ne disposent pas de canaux de communication larges ou travaillent en parallèle. Cela signifie que le soir, il est souvent presque impossible d'obtenir un résultat honnête. Oui, et les autoroutes s'avèrent être un péché. Par exemple, les tentatives de mesure de la vitesse au Japon donnent des résultats extrêmement désastreux...

Décision principale

Développement d'un zond pour mesurer la vitesse d'Internet
La photo est à titre indicatif.

Deux serveurs de contrôle de vitesse ont été déployés. Le premier est LibreSpeed, la deuxième - Test de vitesse d'OOKLA. Les performances des deux services ont été comparées. Après tout, nous avons décidé de nous arrêter à Ookla parce que... jusqu'à 90 % des abonnés utilisent ce service.

Ensuite, des instructions ont été rédigées à l'intention des utilisateurs et des employés sur la manière de mesurer les vitesses à l'intérieur et à l'extérieur du réseau. Ceux. Lorsque le test démarre, par défaut la vitesse au sein du réseau est mesurée. Le serveur est situé au niveau de notre tête de réseau, et la solution Ookla sélectionne par défaut le serveur le plus proche de l'abonné. Nous vérifions ainsi le fonctionnement de notre propre réseau de transmission de données.

Pour mesurer la vitesse dans le pays (nous disposons d'un réseau distinct pour les opérateurs de télécommunications, qui regroupe tous les opérateurs et les principaux centres de données du pays), vous devez sélectionner un fournisseur dans le pays et effectuer une deuxième mesure. Nous avons identifié empiriquement plusieurs serveurs qui donnent des résultats plus ou moins stables à tout moment de la journée et les avons répertoriés comme recommandé dans la notice.

Eh bien, des actions similaires pour les canaux de communication externes. Nous avons trouvé de grands opérateurs avec de grandes chaînes sur les serveurs speedtest et les avons écrits dans des recommandations (désolé "Moskva - Rostelecom" et "Riga - Baltcom", mais je recommanderai ces nœuds pour obtenir des chiffres adéquats. Personnellement, j'ai reçu jusqu'à ~ 870 mégabits de ces serveurs aux heures de pointe).

Pourquoi, demandez-vous, de telles difficultés ? Tout est très simple. Nous avons reçu un outil assez pratique qui, entre des mains compétentes, nous permet de déterminer s'il y a des problèmes dans nos réseaux, s'il y a des problèmes dans le réseau républicain ou s'il y a des problèmes avec le backbone. Si une personne se plaint d’une faible vitesse de téléchargement d’un service, nous pouvons mesurer la vitesse de la chaîne de l’abonné puis la comparer avec ce qu’elle reçoit du service. Et il est raisonnable de montrer que nous attribuons honnêtement le canal spécifié dans le contrat. On peut également expliquer les raisons possibles d’une telle différence de vitesses.

Solution secondaire

La question de la baisse de vitesse le soir/le jour reste ouverte. Comment faire la même chose sans être au domicile de l’abonné ? Prenez une carte monocarte bon marché avec un réseau Gigabit et faites-en une soi-disant sonde. L'appareil doit effectuer des mesures de vitesse le long du câble à un intervalle de temps donné. La solution doit être open source, aussi simple que possible, avec un panneau d'administration pratique pour visualiser les résultats des mesures. L'appareil doit être le moins cher possible afin qu'il puisse être facilement remplacé et laissé à l'abonné pendant n jours sans crainte.

exécution

Développement d'un zond pour mesurer la vitesse d'Internet

BananaPI (modèle M1) a été pris comme base. Il y a en réalité deux raisons à ce choix.

  1. Port Gigabit.
  2. Il traînait juste sur la table de nuit.

Ensuite, il a été décidé d'utiliser le client python speedtest-cli pour le service Speedtest by Ookla comme backend pour mesurer la vitesse. Bibliothèque Pythonping pour mesurer la vitesse de ping. Eh bien, et php pour le panneau d'administration. Pour faciliter la perception, j'ai utilisé bootstrap.

En raison du fait que les ressources de Raspberry ne sont pas flexibles, la combinaison nginx+php-fpm+sqlite3 a été utilisée. Je voulais abandonner MySQL à cause de sa lourdeur et de sa redondance. J'anticipe une question concernant Iperf. Il a dû être abandonné en raison de l'impossibilité de l'utiliser dans des directions autres que locales.

Au départ, j'ai suivi le chemin de beaucoup sur ce site. Modification du client speedtest-cli. Mais ensuite, après avoir réfléchi un peu, il a abandonné cette idée. J'ai écrit mon propre travailleur qui utilise les capacités du client d'origine.

Pour analyser les pings, j'ai simplement écrit un gestionnaire distinct. Nous prenons la valeur moyenne de la mesure. L'outil ping peut gérer à la fois l'adresse IP et le nom de domaine.

Je n'ai pas réalisé de travail asynchrone. Ce n’est pas particulièrement nécessaire dans ce cas.

Le panneau d'administration permettant d'évaluer les résultats s'est avéré assez minimaliste.

Développement d'un zond pour mesurer la vitesse d'InternetFig. Fenêtre d'administration principale avec les résultats des tests

Développement d'un zond pour mesurer la vitesse d'InternetFig. Paramètres de test

Développement d'un zond pour mesurer la vitesse d'Internet
Fig. Mettre à jour la liste des serveurs Speedtest

C'est tout. L'idée a été mise en œuvre à genoux, pendant mon temps libre. Les tests sur le terrain n'ont pas encore commencé. Mais nous prévoyons de lancer des prototypes dans un avenir proche. Il peut être utilisé aussi bien par les prestataires que par les clients des prestataires. Personne ne vous dérange pour prendre des mesures à la maison XNUMX heures sur XNUMX. La seule chose dont vous devez vous rappeler est que si vous surfez activement sur Internet ou téléchargez quelque chose, la mesure sera inférieure à la mesure réelle. Donc, idéalement, vous devez laisser la sonde sur le réseau en tant que seul consommateur de trafic.

PS : s'il vous plaît, ne me critiquez pas pour la qualité du code. Je suis autodidacte sans expérience. Code source pour GitHub. La critique est acceptée.

Source: habr.com

Ajouter un commentaire