Opracowanie strefy pomiaru prędkości Internetu

Opracowanie strefy pomiaru prędkości Internetu
Dzień dobry wszystkim użytkownikom Habra.

Ciągle czytam artykuły na Habré o rozwoju tej czy innej funkcjonalności na Malince. Postanowiłem podzielić się tutaj swoją pracą.

prehistoria

Pracuję w firmie świadczącej usługi telewizji kablowej i dostępu do Internetu. I jak to bywa w takich firmach, okresowo słyszę skargi na niezgodność planu taryfowego z tym, co jest określone w umowie. Albo użytkownik narzeka na niską prędkość „po kablu”, albo na wysokie pingi niektórych usług, czasem na całkowity brak Internetu w określonych porach dnia. Często tego typu reklamacje kończą się pulą próśb, na podstawie których jeden z pracowników udaje się „na miejsce” z działającym laptopem, na którym dokonywane są wszelkie pomiary. I często okazuje się, że z prędkością wszystko jest w porządku. A tak naprawdę niska prędkość jest na telefonie komórkowym, przez Wi-Fi, na balkonie. No albo coś podobnego.

Niestety nie ma możliwości dotarcia do abonenta np. o 21:37, kiedy ma on najniższe prędkości. Przecież godziny pracy pracowników są ograniczone. Wymiana routera nic nie daje, bo... Zakres częstotliwości Wi-Fi w naszym kraju jest żałośnie zaśmiecony.

Dla rekordu — dostawca państwowy w Republice Białorusi przymusowo włącza Wi-Fi na wszystkich oddanych do użytku urządzeniach i rozgłasza identyfikator SSID ByFly z każdego urządzenia. Nawet jeśli abonent nie posiada usługi internetowej, a jedynie telefon domowy. Dokonano tego w celu dodatkowej sprzedaży. Kartę u tego operatora możesz kupić w kiosku, połączyć się z dowolnym punktem o nazwie ByFly i po wprowadzeniu danych z karty korzystać z usług Internetu. Biorąc pod uwagę niemal 100% pokrycie miast oraz znaczny zasięg sektora prywatnego i obszarów wiejskich, znalezienie punktu przyłączenia nie stanowi problemu.

Z obserwacji naszych zewnętrznych kanałów komunikacji wynika, że ​​istnieje pewna rezerwa przepustowości. A abonenci nie korzystają w całości z dostępnych kanałów, nawet w godzinach szczytu. Podchodzimy do tego bardzo poważnie. Korzystanie z różnych usług i różnych serwerów pomiaru prędkości doprowadziło do interesujących wyników. Okazuje się, że nie wszystkie usługi są równie przydatne... Zwłaszcza wieczorami. I zdecydowanie nie powinieneś im ufać. Wielu operatorów tej samej sieci Ookla nie ma szerokich kanałów komunikacji lub pracuje metodą back-to-back. Oznacza to, że wieczorem często prawie niemożliwe jest uzyskanie uczciwego wyniku. Tak, a autostrady okazują się grzeszne. Na przykład próby pomiaru prędkości w Japonii dają wyjątkowo katastrofalne skutki...

Podstawowa decyzja

Opracowanie strefy pomiaru prędkości Internetu
Zdjęcie jest poglądowe

Wdrożono dwa serwery kontroli prędkości. Pierwszy jest Wolna prędkość, druga - Speedtest od OOKLA. Porównano wydajność obu usług. W końcu postanowiliśmy zatrzymać się w Ookla, ponieważ... aż 90% abonentów korzysta z tej usługi.

Następnie napisano instrukcje dla użytkowników i pracowników dotyczące pomiaru prędkości wewnątrz i na zewnątrz sieci. Te. Po rozpoczęciu testu domyślnie mierzona jest prędkość w sieci. Serwer znajduje się na naszej stacji czołowej, a rozwiązanie Ookla domyślnie wybiera serwer najbliższy abonentowi. Sprawdzamy w ten sposób działanie własnej sieci transmisji danych.

Aby zmierzyć prędkość na terenie kraju (posiadamy odrębną sieć dla operatorów telekomunikacyjnych, która skupia wszystkich operatorów i główne centra danych na terenie kraju), należy wybrać dostawcę na terenie kraju i wykonać drugi pomiar. Empirycznie zidentyfikowaliśmy kilka serwerów, które dają mniej więcej stabilne wyniki o każdej porze dnia i umieściliśmy je zgodnie z zaleceniami w instrukcjach.

No cóż, podobne działania dla zewnętrznych kanałów komunikacji. Znaleźliśmy dużych operatorów z dużymi kanałami na serwerach speedtest i zapisaliśmy ich w rekomendacjach (przepraszam „Moskva - Rostelecom” i „Riga - Baltcom”, ale będę polecał te węzły, aby uzyskać odpowiednie liczby. Osobiście otrzymałem do ~870 megabitów z tych serwerów w godzinach szczytu).

Dlaczego, pytasz, takie trudności? Wszystko jest bardzo proste. Otrzymaliśmy dość wygodne narzędzie, które w zdolnych rękach pozwala nam określić, czy występują problemy w naszych sieciach, czy występują problemy w sieci republikańskiej, czy też są problemy z szkieletem. Jeśli dana osoba narzeka na niską prędkość pobierania z jakiegoś serwisu, możemy zmierzyć prędkość kanału abonenta, a następnie porównać ją z tym, co otrzymuje z usługi. I zasadne jest wykazanie, że uczciwie przydzielamy kanał określony w umowie. Możemy również wyjaśnić możliwe przyczyny takiej różnicy prędkości.

Rozwiązanie wtórne

Otwarta pozostaje kwestia spadku prędkości w godzinach wieczornych/w ciągu dnia. Jak zrobić to samo nie będąc w domu abonenta? Weź tanią kartę jednopłytkową z siecią gigabitową i zrób z niej tzw. sondę. Urządzenie musi dokonywać pomiarów prędkości wzdłuż kabla w zadanym odstępie czasu. Rozwiązanie powinno być open source, możliwie bezpretensjonalne, z wygodnym panelem administracyjnym do przeglądania wyników pomiarów. Urządzenie powinno być jak najtańsze, aby można było je łatwo wymienić i bez obaw pozostawić u abonenta na n dni.

realizacja

Opracowanie strefy pomiaru prędkości Internetu

Za podstawę przyjęto BananaPI (model M1). Tak naprawdę są dwa powody takiego wyboru.

  1. Gigabitowy port.
  2. Po prostu leżał na szafce nocnej.

Następnie zdecydowano się użyć klienta Pythona speedtest-cli dla usługi Speedtest by Ookla jako backend do pomiaru prędkości. Biblioteka Pythonowanie do pomiaru prędkości pingu. No i php dla panelu administracyjnego. Dla ułatwienia percepcji użyłem bootstrap.

Ze względu na małą elastyczność zasobów Raspberry, zastosowano kombinację nginx+php-fpm+sqlite3. Chciałem zrezygnować z MySQL ze względu na jego ciężkość i redundancję. Przewiduję pytanie dotyczące Iperf. Trzeba było z niego zrezygnować ze względu na niemożność wykorzystania go w innych kierunkach niż lokalne.

Początkowo podążałem ścieżką wielu na tej stronie. Zmodyfikowano klienta speedtest-cli. Ale po chwili namysłu porzucił ten pomysł. Napisałem własnego workera, który wykorzystuje możliwości oryginalnego klienta.

Aby analizować pingi, po prostu napisałem oddzielny moduł obsługi. Z pomiaru bierzemy średnią wartość. Narzędzie ping może obsługiwać zarówno adres IP, jak i nazwę domeny.

Nie udało mi się osiągnąć pracy asynchronicznej. W tym przypadku nie jest to szczególnie potrzebne.

Panel administracyjny do oceny wyników okazał się dość minimalistyczny.

Opracowanie strefy pomiaru prędkości InternetuRyc. Główne okno administracyjne z wynikami testów

Opracowanie strefy pomiaru prędkości InternetuRyc. Ustawienia testowe

Opracowanie strefy pomiaru prędkości Internetu
Ryc. Zaktualizuj listę serwerów Speedtest

To wszystko. Pomysł zrealizowałem na kolanach, w wolnym czasie. Testy w terenie jeszcze się nie rozpoczęły. Ale w najbliższej przyszłości planujemy wypuścić prototypy. Mogą z niego korzystać zarówno tamtejsi dostawcy, jak i klienci dostawców. Nikt nie przeszkadza Ci w dokonywaniu pomiarów w domu przez całą dobę. Jedyne o czym powinieneś pamiętać to to, że jeśli aktywnie surfujesz po Internecie lub coś pobierasz, to pomiar będzie niższy niż rzeczywisty. W idealnym przypadku należy pozostawić sondę w sieci jako jedynego odbiorcę ruchu.

PS: proszę nie krytykować mnie za jakość kodu. Jestem samoukiem bez doświadczenia. Kod źródłowy dla GitHub. Krytyka jest akceptowana.

Źródło: www.habr.com

Dodaj komentarz