Przykładowe wdrożenie automatycznego provisioningu w sieci korzystającej z rozwiązań xPON marki Huawei
1. Wprowadzenie i założenia
Celem niniejszego artykułu jest teoretyczny opis przykładowego wdrożenia automatycznego provisioningu w sieci, która korzysta z rozwiązań marki Huawei. Treść została oparta na rozwiązaniach wykorzystywanych w działającej sieci (nie jest to więc rozważanie czysto teoretyczne), ale artykuł nie jest poradnikiem, który przeprowadzi cię przez konfigurację krok po kroku.
2. Wymagania
Poradnik traktuje głównie o rozwiązaniach PON marki Huawei, poniższe informacje będą aktualne dla terminali OLT z serii MA5800 oraz terminali ONT GPON / XGS-PON. Do automatycznego provisioningu wykorzystywane są dwie technologie: DHCP Option 43 oraz TR-069.
Głównym narzędziem do obsługi jest GenieACS – jest to rozwiązanie open source’owe przystosowane do automatyzacji konfiguracji i zdalnego zarządzania urządzeniami, podstawą pracy GenieACS jest protokół TR-069.
Oficjalna strona GenieACS:
Github:
https://github.com/genieacs/genieacs
Oprogramowanie GenieACS należy zainstalować na odpowiednio skonfigurowanym serwerze, w naszym przypadku użyty został serwer oparty na Debianie. GenieACS wykorzystuje NodeJS i bazę danych MongoDB.
GenieACS (lub inny serwer ACS, jeżeli używasz / preferujesz) jest podstawą do stworzenia automatycznego provisioning niezależnie od rozwiązań, które stosujesz w sieci.
Dokumentaję możesz znaleźć poniżej:
https://docs.genieacs.com/en/latest/
3. Komunikacja OLT → ONT
Pierwszym krokiem jest autoryzacja ONT, należy odpowiednio skonfigurować srv-profile oraz line-profile, a następnie autoryzować ONT zgodnie ze sposobem, jaki wykorzystujesz.
Wgranie wstępnej konfiguracji w pliku *.xml – plik należy uprzednio przygotować i dostosować do potrzeb swojej sieci. Poniżej przedstawiamy przykład:
Przykładowy plik *.xml możesz pobrać z tego odnośnika: https://cdr.pl/download/huawei/wan_eg8145x6.zip
W archiwum znajduje się plik przystosowany do urządzeń Huawei OptiXstar EG8145X6-10. Plik należy odpowiednio zedytować, a następnie wgrać do ONT. XML musi zostać umieszczony na serwerze FTP / SFTP, następnie wgrywamy go komendami:
a. diagnose
b. ont-load info configuration <Nazwa pliku>.xml ftp <IP address> <Login FTP> <Hasło FTP>
c. wybieramy ONT → ont-load select (np. ont-load select 0/2 0 3)
d. ont-load start
e. display ont-load info
f. po chwili zatrzymujemy wgrywanie pliku komendą ont-load stop
4. Komunikacja router → ONT
W sytuacji, którą opisuję w poniższym artykule plik XML służy tylko i wyłącznie do wstępnego skonfigurowania ONT tak, aby ten dostał DHCP. Dalsza konfiguracja, w tym konfiguracja komunikacji z GenieACS, jest przesyłana z routera z wykorzystaniem DHCP Option 43.
Dane do logowania TR-069 możesz również przesłać poprzez plik XML, w takim wypadku nie musisz używać DHCP Option 43.
5. Konfiguracja z poziomu serwera ACS
Serwer ACS (w naszym przypadku GenieACS) umożliwia zdalną modyfikację ustawień z wykorzystaniem protokołu TR-069. Urządzenia podłączone zgodnie ze wcześniejszymi krokami będą widoczne z poziomu panelu zarządzania, na tym etapie możesz już zmieniać ich konfigurację.
W dużej, rozbudowanej sieci ręczna konfiguracja każdego z podłączonych ONT generowałaby horrendalny czas poświęcony na utrzymanie systemu, stąd też jedna z najważniejszych i najprzydatniejszych funkcji – skrypty.
GenieACS umożliwia stworzenie customowych skryptów, pisane są w JavaScript, a konkretnie w uproszczonej wersji JavaScript, mają bardzo uproszczoną bibliotekę dostępnych funkcji. Skrypty wywołuje konkretne zdarzenie – event, lista obsługiwanych eventów jest ustandaryzowana w TR-069:
Specyfikacja danych CWMP / TR-069:
https://cwmp-data-models.broadband-forum.org/
Poniżej screen przykładowego skryptu ze wstępną konfiguracją ONT Huawei, skrypt jest uruchamiany podczas pierwszego włączenia urządzenia (urządzenie z ustawieniami fabrycznymi):
Na powyższej grafice możemy zobaczyć dwie główne, najważniejsze i najczęściej używane funkcje: clear oraz declare:
clear(path, timestamp) – funkcja pozwala usunąć z bazy danych informacje przypisane do danego urządzenia, co jest bardzo ważne w przypadku konfiguracji urządzeń z ustawieniami fabrycznymi.
declare(path, timestamps, values) – funkcja pozwala deklarować parametry, czyli w zasadzie jest to główna funkcja umożliwiająca skonfigurowanie urządzenia.
Pełny opis funkcji znajdziesz w dokumentacji GenieACS.
Na powyższym przykładzie (screenie) najpierw czyszczone są dane z bazy danych (funkcja clear), a następnie przechodzimy do deklaracji informacji o urządzeniu, skonfigurowanie WAN access i w końcu włączenie IGMP Snoopingu – w sieci wykorzystywane jest IPTV. Na koniec do urządzenia przypisywany jest Tag – tagi ułatwiają rozróżnienie urządzeń w panelu GenieACS i mogą być również wykorzystywane podczas wywoływania skryptów.
Powyższy skrypt jest wywoływany podczas uruchomienia urządzenia w ustawieniach fabrycznych, skonfigurować wywołanie możesz w zakładce Presets:
Na powyższym screenie pokazany jest cały preset dla wcześniejszego skryptu, w presecie znajdują się dwa główne elementy:
Events – tutaj deklarujemy zdarzenia, w tym przypadku wykorzystywane jest 0 BOOTSTRAP – czyli wykrywane są urządzenia z ustawieniami fabrycznymi.
Precondition – w tym miejscu można ustawić dodatkowe, wstępne warunki. W powyższym przykładzie skrypt zostanie wywołany tylko dla ONT Huaweia (odpowiednie OUI) i pomijane są urządzenia z tagiem TEST.
Reasumując – korzystając z odpowiednich zdarzeń i skryptów GenieACS pozwala ci wprowadzić zaawansowaną automatyzację konfiguracji i zarządzania podłączonymi urządzeniami. Prócz ustawień wstecznych możesz np. pilnować konfiguracji urządzenia po reboocie, wprowadzać skrypty wywoływane czasowo lub zgodnie z harmonogramem. Co więcej – GenieACS pozwala ci skorzystać z API, dzięki czemu możesz dokonać integracji ze swoim systemem. Przykładowo, możesz udostępniać pracownikom panel, który poprzez integrację z GenieACS pozwoli zdalnie zmienić SSID sieci u danego abonenta.


