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
Zdjęcie jest poglądowe
Wdrożono dwa serwery kontroli prędkości. Pierwszy jest
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
Za podstawę przyjęto BananaPI (model M1). Tak naprawdę są dwa powody takiego wyboru.
- Gigabitowy port.
- Po prostu leżał na szafce nocnej.
Następnie zdecydowano się użyć klienta Pythona
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.
Ryc. Główne okno administracyjne z wynikami testów
Ryc. Ustawienia testowe
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
Źródło: www.habr.com