Entwicklung eines Zonds zur Messung der Internetgeschwindigkeit

Entwicklung eines Zonds zur Messung der Internetgeschwindigkeit
Guten Tag an alle Habra-Benutzer.

Ich lese ständig Artikel auf Habré über die Entwicklung dieser oder jener Funktionalität auf Malinka. Ich habe beschlossen, meine Arbeit hier zu teilen.

Vorgeschichte

Ich arbeite für ein Unternehmen, das Kabelfernseh- und Internetzugangsdienste anbietet. Und wie es in solchen Unternehmen der Fall ist, höre ich regelmäßig Beschwerden über die Nichtübereinstimmung des Tarifplans mit den Vertragsangaben. Entweder beschwert sich der Nutzer über die geringe Geschwindigkeit „per Kabel“, dann über hohe Pings bestimmter Dienste, manchmal auch über das völlige Fehlen des Internets zu bestimmten Tageszeiten. Oftmals enden solche Beschwerden in einem Anfragepool, auf dessen Grundlage einer der Mitarbeiter mit einem Arbeitslaptop, auf dem alle Messungen vorgenommen werden, „vor Ort“ geht. Und oft stellt sich heraus, dass mit der Geschwindigkeit alles in Ordnung ist. Und die niedrige Geschwindigkeit ist tatsächlich über ein Mobiltelefon, über WLAN, auf dem Balkon möglich. Na ja, oder so ähnlich.

Leider ist es nicht möglich, einen Teilnehmer beispielsweise um 21:37 Uhr anzufahren, wenn er die niedrigsten Geschwindigkeiten hat. Schließlich sind die Arbeitszeiten der Mitarbeiter begrenzt. Ein Austausch des Routers hat keine Auswirkung, weil... Der Frequenzbereich für WLAN ist in unserem Land völlig überfüllt.

Der Ordnung halber — Der staatliche Anbieter in der Republik Belarus schaltet WLAN auf allen zur Nutzung vorgesehenen Geräten zwangsweise ein und sendet von jedem Gerät die ByFly-SSID. Auch wenn der Teilnehmer keinen Internetdienst, sondern nur ein Festnetztelefon hat. Dies geschah für zusätzliche Verkäufe. Sie können bei diesem Betreiber an einem Kiosk eine Karte kaufen, sich mit einem beliebigen Punkt namens ByFly verbinden und durch Eingabe der Daten von der Karte Internetdienste erhalten. Angesichts der nahezu 100-prozentigen Abdeckung von Städten und einer erheblichen Abdeckung des privaten Sektors und ländlicher Gebiete ist die Suche nach einem Anschlusspunkt kein Problem.

Beobachtungen unserer externen Kommunikationskanäle zeigen, dass eine gewisse Bandbreitenreserve vorhanden ist. Und Abonnenten verbrauchen auch in der Hauptverkehrszeit nicht die gesamten verfügbaren Kanäle. Das nehmen wir sehr ernst. Der Einsatz verschiedener Dienste und unterschiedlicher Geschwindigkeitsmessserver führte zu interessanten Ergebnissen. Es stellt sich heraus, dass nicht alle Dienste gleich nützlich sind... Vor allem abends. Und man sollte ihnen auf keinen Fall vertrauen. Viele Betreiber desselben Ookla-Netzwerks verfügen nicht über umfassende Kommunikationskanäle oder arbeiten direkt hintereinander. Das führt dazu, dass es abends oft fast unmöglich ist, ein ehrliches Ergebnis zu erzielen. Ja, und die Autobahnen erweisen sich als Sünde. Beispielsweise zeigen Versuche, Geschwindigkeiten in Japan zu messen, äußerst katastrophale Ergebnisse ...

Primäre Entscheidung

Entwicklung eines Zonds zur Messung der Internetgeschwindigkeit
Das Foto dient zur Veranschaulichung.

Es wurden zwei Geschwindigkeitskontrollserver eingesetzt. Der erste ist LibreSpeed, zweite - Speedtest von OOKLA. Die Leistung beider Dienste wurde verglichen. Schließlich haben wir uns entschieden, in Ookla anzuhalten, weil... Bis zu 90 % der Abonnenten nutzen diesen Service.

Als nächstes wurden Anleitungen für Benutzer und Mitarbeiter verfasst, wie Geschwindigkeiten innerhalb und außerhalb des Netzwerks gemessen werden können. Diese. Zu Beginn des Tests wird standardmäßig die Geschwindigkeit innerhalb des Netzwerks gemessen. Der Server befindet sich an unserer Kopfstelle und die Ookla-Lösung wählt standardmäßig den Server aus, der dem Abonnenten am nächsten liegt. Auf diese Weise überprüfen wir die Funktionsfähigkeit unseres eigenen Datenübertragungsnetzes.

Um die Geschwindigkeit innerhalb des Landes zu messen (wir haben ein separates Netzwerk für Telekommunikationsbetreiber, das alle Betreiber und wichtigsten Rechenzentren im Land vereint), müssen Sie einen Anbieter im Land auswählen und eine zweite Messung durchführen. Wir haben empirisch mehrere Server identifiziert, die zu jeder Tageszeit mehr oder weniger stabile Ergebnisse liefern, und haben sie gemäß den Empfehlungen in der Anleitung aufgelistet.

Nun, ähnliche Aktionen für externe Kommunikationskanäle. Wir haben große Betreiber mit großen Kanälen auf Speedtest-Servern gefunden und sie in Empfehlungen geschrieben (sorry „Moskva – Rostelecom“ und „Riga – Baltcom“, aber ich werde diese Knoten empfehlen, um ausreichende Zahlen zu erhalten. Persönlich habe ich bis zu ~870 Megabit von erhalten diese Server während der Spitzenzeiten).

Warum, fragen Sie, solche Schwierigkeiten? Alles ist sehr einfach. Wir haben ein recht praktisches Tool erhalten, mit dem wir in kompetenten Händen feststellen können, ob es Probleme in unseren Netzwerken gibt, ob es Probleme im republikanischen Netzwerk gibt oder ob es Probleme mit dem Backbone gibt. Wenn sich jemand über die niedrige Download-Geschwindigkeit eines Dienstes beschwert, können wir die Geschwindigkeit des Kanals des Abonnenten messen und sie dann mit dem vergleichen, was er von dem Dienst erhält. Und es ist angemessen nachzuweisen, dass wir den im Vertrag angegebenen Kanal ehrlich zuweisen. Wir können auch die möglichen Gründe für einen solchen Geschwindigkeitsunterschied erklären.

Sekundärlösung

Die Frage des Geschwindigkeitsabfalls abends/tagsüber bleibt offen. Wie kann man dasselbe tun, ohne beim Abonnenten zu Hause zu sein? Nehmen Sie eine günstige Single-Board-Karte mit Gigabit-Netzwerk und basteln Sie daraus eine sogenannte Probe. Das Gerät muss in einem bestimmten Zeitintervall Geschwindigkeitsmessungen entlang des Kabels durchführen. Die Lösung sollte Open Source sein, möglichst unprätentiös sein und über ein praktisches Admin-Panel zum Anzeigen der Messergebnisse verfügen. Das Gerät sollte möglichst günstig sein, damit es problemlos ausgetauscht und n Tage lang bedenkenlos beim Abonnenten belassen werden kann.

Implementierung

Entwicklung eines Zonds zur Messung der Internetgeschwindigkeit

Als Basis diente BananaPI (Modell M1). Es gibt eigentlich zwei Gründe für diese Wahl.

  1. Gigabit-Port.
  2. Es lag einfach im Nachttisch herum.

Als nächstes wurde beschlossen, den Python-Client zu verwenden Speedtest-CLI für den Dienst Speedtest by Ookla als Backend zur Geschwindigkeitsmessung. Bibliothek Pythonping um die Ping-Geschwindigkeit zu messen. Nun, und PHP für das Admin-Panel. Zur leichteren Wahrnehmung habe ich verwendet bootstrap.

Da die Ressourcen von Raspberry nicht flexibel sind, wurde die Kombination nginx+php-fpm+sqlite3 verwendet. Ich wollte MySQL wegen seiner Komplexität und Redundanz aufgeben. Ich erwarte eine Frage zu Iperf. Es musste aufgegeben werden, da es nicht möglich war, es in anderen als den örtlichen Richtungen zu nutzen.

Zunächst bin ich dem Weg vieler auf dieser Seite gefolgt. Der Speedtest-Cli-Client wurde geändert. Aber dann, nachdem er ein wenig nachgedacht hatte, gab er diese Idee auf. Ich habe meinen eigenen Worker geschrieben, der die Fähigkeiten des ursprünglichen Clients nutzt.

Um Pings zu analysieren, habe ich einfach einen separaten Handler geschrieben. Wir nehmen den Durchschnittswert aus der Messung. Das Ping-Tool kann sowohl IP-Adressen als auch Domänennamen verarbeiten.

Ich habe keine asynchrone Arbeit erreicht. Dies ist in diesem Fall nicht besonders erforderlich.

Das Admin-Panel zur Ergebnisauswertung ist recht minimalistisch ausgefallen.

Entwicklung eines Zonds zur Messung der InternetgeschwindigkeitFig. Hauptadministrationsfenster mit Testergebnissen

Entwicklung eines Zonds zur Messung der InternetgeschwindigkeitFig. Testeinstellungen

Entwicklung eines Zonds zur Messung der Internetgeschwindigkeit
Fig. Aktualisieren Sie die Liste der Speedtest-Server

Das ist alles. Die Idee wurde auf den Knien, in meiner Freizeit, umgesetzt. Feldtests haben noch nicht begonnen. Wir planen jedoch, in naher Zukunft Prototypen auf den Markt zu bringen. Es kann sowohl von dortigen Anbietern als auch von Kunden von Anbietern genutzt werden. Niemand stört Sie, rund um die Uhr zu Hause Messungen vorzunehmen. Das Einzige, was Sie beachten sollten, ist, dass der Messwert niedriger ausfällt als der tatsächliche Wert, wenn Sie aktiv im Internet surfen oder etwas herunterladen. Idealerweise müssen Sie also die Sonde als einzigen Verkehrskonsumenten im Netzwerk belassen.

PS: Bitte kritisieren Sie mich nicht für die Qualität des Codes. Ich bin Autodidakt und habe keine Erfahrung. Quellcode für GitHub. Kritik wird akzeptiert.

Source: habr.com

Kommentar hinzufügen