logo
PolskiPL Flag EnglishUK Flag Strona NiceShapera
NiceShaper jest programem działającym w środowisku routera z systemem operacyjnym Linux. Wykorzystuje sprawdzony algorytm podziału łącza HTB. Umożliwia efektywniejsze dzielenie pasma, niż to, utworzone poprzez przydzielenie użytkownikom sieci stałych przepustowości. Dodatkowo upraszcza to, co w kształtowaniu ruchu sieciowego w Linuksie skomplikowane, a także wprowadza wiele dodatkowych funkcjonalności. NiceShaper stale monitorując ilości danych przepływających przez router, w odpowiedzi na zmieniające się obciążenie i charakterystykę ruchu generowanego przez użytkowników, dynamicznie dostosowuje przepustowość działających klas, do poziomu umożliwiającego możliwie najpełniejsze wykorzystanie łącza. Jednocześnie nie dopuszczając do powstawania przeciążeń, gwarantuje wygodę użytkowania usług interaktywnych.

NiceShape chroni pasma użytkowników, rozsądnie korzystających z przepustowości łącza i dba o to, by nie dopuścić do nadmiernego wysycenia pasma uploadu blokującego łącze.

Ponadto NiceShaper oferuje:

  • Przejrzysta i intuicyjna konfiguracja wymiernie skraca nakład czasu wymagany, do osiągnięcia pierwszego uruchomienia podziału łącza.
  • Dyrektywa o nazwie "host", będąca uproszczonym zamiennikiem klas, daje odpowiedni dla większości standardowych konfiguracji kompromis pomiędzy: prostotą, przejrzystością i elastycznością.
  • Funkcjonalność makr, umożliwiającą, automatyczne generowanie (w oparciu o proste pętle) większej liczby podobnych do siebie klas.
  • Wyzwalacze (triggery) automatycznie zmieniające wybrane parametry klas o wskazanych porach dnia (trigger alter) lub po przekroczeniu wskazanej ilości pobranych/wysłanych danych (trigger quota).
  • Zautomatyzowaną obsługę mechanizmu markowania pakietów oraz interfejsów IMQ, używanych w celu zapewnienia, obsługi kontroli pasm wychodzących, hostów używających prywatnej adresacji IP maskowanych za pomocą Source NAT.
  • Wygodny, również zdalny, monitoring pracy.
  • A także automatyczny, zgodny z ustalonym interwałem, zapis do wskazanego pliku aktualnych przydziałów klas - chociażby w celu udostępnienia przez serwis www.

Oto wykres MRTG prezentujący efekt działania NiceShapera:
Wykres MRTG
Wykres został zarejestrowany w sieci, w której użytkownicy bardzo intensywnie wykorzystują oprogramowanie P2P, wymagające udostępniania zasobów. Jest to zabójcze dla łącz asymetrycznych charakteryzujących się małym pasmem wychodzącym. Na zielono download, upload - niebieska linia, obydwa kierunki przepływu danych praktycznie zawsze w pełni obciążone. Mimo to każdy użytkownik ma zagwarantowane wygodne surfowanie, pracę lub grę online. Konfiguracja statyczna praktycznie wyklucza tak skuteczne wysycenie pasma w obydwu kierunkach, wymuszając kompromis pomiędzy stopniem wykorzystania łącza a wygodą użytkowania usług interaktywnych.

[2016-04-24]

Ubuntu - błędne wykrywanie uszkodzenia struktury HTB przy starcie

Kernel Ubuntu kompilowany jest bez opcji CONFIG_CLS_U32_PERF, stąd NiceShaper nie może w pełni monitorować aktywności sieciowej. Zalecanym rozwiązaniem jest rekompilacja kernela z włączoną opcją. Niezalecanym, uruchomienie markowania pakietów na wszystkich kontrolowanych interfejsach sieciowych (mark-on-ifaces).

[2016-03-06]

Po ponad 2 latach prac, udostępniony zostaje NiceShaper w wersji 1.2.0.

Jest to bardzo ważne wydanie. Gałąź 1.2 jest bardzo dojrzała i mocno zmodernizowana względem 1.0. Poza oprogramowaniem, również dokumentacje doczekały się porządnego przeglądu oraz mnóstwa poprawek: językowych i merytorycznych.

Po informacje odnośnie zmian zachodzących w trakcie całego procesu rozwoju, odsyłam do dokumentu listy zmian a po kompletne i aktualne opisy do dokumentacji. Zaznaczając, że lista zmian nie zawiera wszystkich najdrobniejszych modyfikacji i poprawek.

Na co warto zwrócić szczególną uwagę?:

  • Przeprojektowano i ponownie zaimplementowano algorytm dynamicznego podziału.
  • Wprowadzono makra plików klas, implementując 3 typy makr, umożliwiających automatyzowanie tworzenia dużej liczby klas.
  • Ponownie zaimplementowano obsługę hostów (użytkowników) sieci, czyli znanego jeszcze z wersji 0.5 uproszczonego zamiennika klas, tworząc dyrektywę host. Dyrektywa ta może być mieszana razem z klasami a jej przejrzystość i elastyczność jest wreszcie naprawdę zadowalająca.
  • Wprowadzono mechanizm autonaprawy struktury QoS oraz filtrów Iptables. Ma on szczególne znaczenie dla łącz PPPoE, gdzie, w trakcie restartu interfejsu ppp, NiceShaper wyłączał się.
  • Usunięto, nie zawsze intuicyjne, filtry sekcji a w ich miejsce wprowadzono globalną listę sieci lokalnych local-subnets.
  • Ograniczono wykorzystywanie programu iptables w procesie zliczania ruchu i wykrywania aktywności hostów. Dodatkowo łańcuchy iptables nie są już tworzone dla każdej sekcji z osobna. Jeśli zajdzie taka potrzeba, tworzone są maksymalnie dwa zbiorcze: jeden dla wszystkich sekcji i klas specjalnych pracujących w trybie download (o nazwie ns_dwload), drugi dla trybu upload (łańcuch ns_upload).
  • Moduł stats został zastąpiony przez status.
  • Ruch generowany przez klasy specjalne typów wrapper oraz do-not-shape, nie jest wliczany do sekcji. Dlatego dotychczasowe przypisywanie ich do sekcji było mylące, więc teraz te klasy przypisywane do żadnej z sekcji już nie są.
  • Oraz na mnóstwo innych poprawionych wad projektowych, problemów i błędów.

[2013-07-04]

W odróżnieniu od wersji 0.6 która nigdy nie uzyskała oficjalnie statusu stabilnej, linia 1.0 doczekała się tylko jednego Release Candidate a na dodatek lista poprawek jest niezwykle skromna.

Zatem - zapraszam do pobierania!

To co najważniejsze w nowym NS to wyeliminowanie uruchamiania komendy systemowej tc. NiceShaper rozmawia bezpośrednio z kernelem więc dodawanie/usuwanie/modyfikowanie klas i filtrów HTB jest teraz piekielnie szybkie i tym większy zysk z tej zmiany im więcej operacji wykonywanych w jednym cyklu. Wreszcie usunięte zostało to ciążące od początku istnienia projektu wąskie gardło wydajności. wprowadza nową ciekawą funkcjonalność w postaci wyzwalaczy. Pozwalających na wprowadzenie quoty dla klas oraz alternatywnych wartości konfiguracyjnych o określonych porach doby.