Entwicklung eines Zond zur Messung der Internetgeschwindigkeit



Guten Tag an alle Habra-Nutzer.



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



Hintergrund



Ich arbeite in einem Unternehmen, das Kabelfernsehen und Internetzugang anbietet. Und wie es in solchen Unternehmen der Fall ist, höre ich regelmäßig Beschwerden über die Inkonsistenz des Tarifplans mit dem im Vertrag angegebenen. Jetzt beschwert sich der Benutzer über die niedrige Geschwindigkeit "über das Kabel", dann über die hohen Pings bestimmter Dienste, manchmal über das völlige Fehlen des Internets zu einer bestimmten Tageszeit. Oft landen solche Beschwerden im Anwendungspool, wonach einer der Mitarbeiter mit einem funktionierenden Laptop, auf dem alle Messungen durchgeführt werden, an die Baustelle gesendet wird. Und oft stellt sich heraus, dass alles in Ordnung mit der Geschwindigkeit ist. Und die niedrige Geschwindigkeit ist tatsächlich auf einem Mobiltelefon, über Wi-Fi, auf dem Balkon. Na ja, oder so ähnlich.



Leider ist es unmöglich, zum Beispiel um 21:37 Uhr zum Abonnenten zu gehen, wenn er die niedrigsten Geschwindigkeiten hat. Der Arbeitstag der Mitarbeiter ist jedoch begrenzt. Das Ersetzen des Routers hat keine Auswirkungen. Der Frequenzbereich für Wi-Fi in unserem Land ist bedauerlicherweise überfüllt.



Als Referenz : Der staatliche Anbieter in der Republik Belarus schaltet WLAN auf allen zur Verwendung bereitgestellten Geräten zwangsweise ein und sendet die SSID ByFly von jedem Gerät. Auch wenn der Teilnehmer keinen Internetdienst hat, sondern nur ein Haustelefon. Dies erfolgt für zusätzliche Verkäufe. Sie können eine Karte dieses Betreibers in einem Verkaufsstand kaufen, eine Verbindung zu einem beliebigen Punkt mit dem Namen ByFly herstellen und durch Eingabe von Daten von der Karte Internetdienste erhalten. Unter Berücksichtigung einer nahezu 100% igen Abdeckung von Städten und einer erheblichen Abdeckung des Privatsektors und ländlicher Siedlungen ist es kein Problem, einen Verbindungspunkt zu finden.



Die Beobachtung unserer externen Kommunikationskanäle zeigt, dass eine bestimmte Bandbreitenreserve vorhanden ist. Insgesamt nutzen Abonnenten die verfügbaren Kanäle auch während der Hauptverkehrszeit nicht. Damit sind wir alle sehr ernst. Die Verwendung unterschiedlicher Dienste und Server zur Geschwindigkeitsmessung hat zu interessanten Ergebnissen geführt. Es stellt sich heraus, dass nicht alle Dienste gleichermaßen nützlich sind ... Besonders abends. Und Sie sollten ihnen nicht eindeutig vertrauen. Viele Betreiber desselben Ookla-Netzwerks verfügen nicht über breite Kommunikationskanäle oder arbeiten durchgängig. Dies bedeutet, dass es oft fast unmöglich ist, abends ein ehrliches Ergebnis zu erzielen. Und die Autobahnen sündigen. Zum Beispiel zeigen Versuche, die Geschwindigkeit in Japan zu messen, äußerst bedauerliche Ergebnisse ...



Primärlösung





Foto zur Veranschaulichung



Zwei Geschwindigkeitsregelungsserver wurden bereitgestellt. Der erste ist LibreSpeed , der zweite ist der Speedtest von OOKLA . Die Leistung beider Dienste wurde verglichen. Wir beschlossen, in Ookla anzuhalten. Bis zu 90% der Abonnenten nutzen diesen speziellen Dienst.



Als nächstes wurden Anweisungen für Benutzer und Mitarbeiter geschrieben, wie die Geschwindigkeit innerhalb und außerhalb des Netzwerks gemessen werden kann. Jene. Beim Starten des Tests wird die Geschwindigkeit standardmäßig im Netzwerk gemessen. Der Server befindet sich an unserer Hauptstation, und die Ookla-Lösung wählt standardmäßig den Server aus, der dem Teilnehmer am nächsten liegt. Daher überprüfen wir den Betrieb unseres eigenen Datenübertragungsnetzes.



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



Nun, ähnliche Aktionen für externe Kommunikationskanäle. Wir haben große Betreiber mit großen Kanälen auf Speedtest-Servern gefunden und diese in Empfehlungen geschrieben (verzeihen Sie Moskva - Rostelecom und Riga - Baltcom, aber ich werde diese Knoten empfehlen, um eine angemessene Anzahl zu erhalten. Persönlich habe ich von diesen Servern bis zu ~ 870 Megabit erhalten während der Stoßzeiten).



Warum, fragen Sie, sind solche Schwierigkeiten? Alles ist sehr einfach. Wir haben ein ziemlich praktisches Tool erhalten, mit dem wir in kompetenten Händen feststellen können: Gibt es Probleme in unseren Netzwerken, gibt es Probleme im republikanischen Netzwerk, gibt es Probleme mit der Autobahn? Wenn sich eine Person über eine niedrige Download-Geschwindigkeit eines Dienstes beschwert, können wir die Geschwindigkeit des Abonnentenkanals messen und dann mit dem vergleichen, was sie vom Dienst erhält. Und es wird argumentiert, um zu zeigen, dass wir den im Vertrag vorgeschriebenen Kanal ehrlich hervorheben. Und 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 das alles tun, ohne beim Abonnenten zu Hause zu sein? Nehmen Sie eine billige Einzelplatine mit einem Gigabit-Netzwerk und machen Sie daraus eine sogenannte Sonde. Das Gerät sollte in einem bestimmten Zeitintervall die Geschwindigkeit über das Kabel messen. Die Lösung sollte Open Source sein, so unprätentiös wie möglich, mit einem praktischen Admin-Panel zum Anzeigen der Messergebnisse. Das Gerät sollte so billig wie möglich sein, damit es problemlos ausgetauscht und ohne Angst für n Tage beim Abonnenten gelassen werden kann.



Implementierung







Als Grundlage wurde BananaPI (Modell M1) herangezogen. Es gibt tatsächlich zwei Gründe für die Wahl.



  1. Gigabit-Port.
  2. Er lag nur auf dem Nachttisch.


Als nächstes wurde beschlossen, den Python-Client speedtest-cli für den Dienst Speedtest by Ookla als Backend für die Geschwindigkeitsmessung zu verwenden. Pythonping- Bibliothek zum Messen der Ping-Geschwindigkeit. Nun, und PHP für den Admin-Bereich. Der Einfachheit halber habe ich Bootstrap verwendet .



Aufgrund der Tatsache, dass die Himbeerressourcen nicht aus Gummi bestehen, wurde ein Bündel von Nginx + PHP-Fpm + SQLite3 verwendet. Wir wollten MySQL wegen seiner Schwere und Redundanz aufgeben. Vorwegnahme einer Frage zu Iperf. Es musste aufgegeben werden, da es nicht in andere als lokale Richtungen verwendet werden konnte.



Anfangs folgte ich dem Weg vieler auf dieser Seite. Der speedtest-cli-Client wurde geändert. Aber dann, nach einigem Nachdenken, gab er die Idee auf. Ich habe meinen eigenen Mitarbeiter geschrieben, der die Funktionen des ursprünglichen Clients nutzt.



Um Pings zu analysieren, habe ich einfach einen separaten Handler geschrieben. Wir nehmen den Durchschnittswert durch Messung. Pingovalka kennt sowohl eine IP-Adresse als auch einen Domainnamen.



Ich habe keine asynchrone Arbeit erreicht. Sie wird in diesem Fall nicht besonders gebraucht.



Das Admin-Panel zur Auswertung der Ergebnisse erwies sich als recht minimalistisch.



Feige. Das Hauptverwaltungsfenster mit Testergebnissen



Feige. Einstellungen testen





Feige. Aktualisieren der Speedtest-Serverliste



Das war's. Die Idee wurde auf dem Knie in der Freizeit von der Arbeit verwirklicht. Die Feldversuche haben noch nicht begonnen. Wir planen jedoch, in naher Zukunft Prototypen auf den Markt zu bringen. Sie können dort sowohl Anbieter als auch Kunden von Anbietern verwenden. Niemand stört es, rund um die Uhr zu Hause zu messen. Das Einzige, woran Sie sich erinnern sollten, ist, dass wenn Sie aktiv im Internet surfen oder etwas herunterladen, die Messung niedriger ausfällt als die tatsächliche. Im Idealfall sollte die Sonde als einziger Verkehrskonsument im Netzwerk verbleiben.



PS: Bitte treten Sie nicht für die Qualität des Codes. Ich bin Autodidakt ohne Erfahrung. Quellcode auf GitHub . Die Kritik wird akzeptiert.



All Articles