Opublikowano wydanie platformy LibreQoS 1.4, stworzonej w celu sprawiedliwego rozdziału dostępnej przepustowości między użytkownikami oraz zmniejszenia negatywnych efektów związanych z buforowaniem pakietów (Bufferbloat) w sprzęcie sieciowym. Platforma może być wykorzystywana przez dostawców lub administratorów prywatnych sieci do optymalizacji przepływów ruchu, utrzymywania minimalnych opóźnień i dzielenia przepustowości z uwzględnieniem priorytetów. Kod projektu został napisany w językach C, Python i Rust i jest rozpowszechniany na licencji GPLv2. Projekt rozwija się pod kierownictwem Dave'a Tahta, współzałożyciela projektu Bufferbloat, twórcy dystrybucji CeroWrt oraz autora licznych RFC związanych z obsługą kolejek sieciowych.
LibreQoS pozwala na zmniejszenie opóźnień i zwiększenie niezawodności interaktywnych sesji, gier, platform online do nauki, ruchu VoIP oraz wideokonferencji w warunkach dużego obciążenia sieci, na przykład spowodowanego pobieraniem przez niektórych użytkowników filmów w kilku strumieniach lub aktywnością miłośników torrentów (LibreQoS rozwiązuje problem z zacinaniem się wideokonferencji, gdy ktoś w tej samej sieci zaczyna pobierać filmy w 4K). Zastosowanie LibreQoS zmniejsza dostępność maksymalnej przepustowości dla jednego użytkownika, ale pozwala znacznie zredukować opóźnienia oraz sprawiedliwie podzielić zasoby między wszystkimi uczestnikami wymiany danych. W przeprowadzonym teście zastosowanie LibreQoS pozwoliło na zmniejszenie opóźnień przy odbiorze danych z 106 do 9 ms, a przy wysyłaniu z 517 do 23 ms, kosztem obniżenia prędkości ciągłego pobierania z 74 do 25 Mbps i przesyłania z 29 do 8 Mbps.
Na podstawie LibreQoS leży zastosowanie systemu zarządzania kolejkami sieciowymi CAKE (Common Applications Kept Enhanced) i harmonogramu pakietów fq_codel (Fair Queuing Controlled Delay), a także wykorzystanie eBPF i XDP (Express Data Path) do wykonywania obsługi na poziomie sterownika sieciowego z możliwością bezpośredniego dostępu do bufora DMA pakietów. Algorytm CAKE zaprojektowano w celu zastąpienia i uproszczenia skomplikowanej hierarchii dyscyplin przetwarzania kolejek pakietów, zdolny do maksymalnego wykorzystania dostępnej przepustowości oraz zapewnienia minimalnych opóźnień, nawet na najwolniejszych łączach z dostawcą oraz przy pracy na słabo wydajnych urządzeniach.
LibreQoS oferuje również narzędzia do monitorowania opóźnień między wysyłaniem żądania a otrzymywaniem odpowiedzi (RTT, round-trip time), w odniesieniu do poszczególnych użytkowników, punktów dostępowych i witryn. Został opracowany interfejs webowy do analizy stanu, który umożliwia wizualizację ruchu w sieci, śledzenie zmian obciążenia i opóźnień oraz identyfikację najbardziej aktywnych użytkowników. Możliwe jest tworzenie elastycznych hierarchicznych schematów ograniczania ruchu oraz integracja z UISP i Splynx w celu mapowania topologii i klientów.
LibreQoS jest instalowany na serwer, umieszczanym między brzegowym routerem dostawcy a podstawowym routerem sieci lokalnej. Jeden serwer z LibreQoS może zarządzać ograniczeniem ruchu dla wielu tysięcy użytkowników, na przykład serwera z 16-rdzeniowym procesorem Xeon Gold wystarcza do przetwarzania ruchu klientów ISP o przepustowości 11 Gbit/s.
W nowej wersji:
- Wykorzystano nową architekturę bazującą na backendzie napisanym w języku Rust. Backend obejmuje:
- Proces w tle lqosd, odpowiedzialny za załadunek i konfigurację programów eBPF, ekstrakcję statystyk bezpośrednio z eBPF oraz udostępnianie szyny do wymiany danych między komponentami.
- Narzędzie lqtop do przeglądania aktualnej aktywności.
- Interfejs webowy lqos_node_manager do kategoryzacji ruchu, monitorowania, zarządzania stanem systemu i analizy bieżącej aktywności.
- Bibliotekę lqos_python do umożliwienia dostępu do szyny z poziomu skryptów w języku Python.
- Generator plików konfiguracyjnych lqos_setup.
- System uwierzytelniania użytkowników lqos_users.
- Dodano możliwość używania akceleratora mostów sieciowych opartego na XDP zamiast standardowego systemu jądra bridge. W tym trybie można osiągnąć wzrost wydajności o 30%.
- Dodano wsparcie dla analizy pakietów i strumieni ruchu.
- Dodany tryb pracy Single-interface, pozwalający na użycie jednego interfejsu sieciowego i VLAN-ów dla ruchu zewnętrznego (dostawca) i wewnętrznego (sieć lokalna).
- Proponowany nowy interfejs webowy z większą liczbą nowych wykresów.




Źródło: opennet.ru
