logo
PolskiPL Flag EnglishUK Flag Strona NiceShapera
[NiceShaper 0.6rc6 16.08.2008r.]

drobne wydanie poprawiające kilka drobnych spraw, ważne ze względu na zmiany w gcc 4.3, wprowadzone poprawki:
- poprawki dla kompilacji pod gcc w wersji 4.3
- rozszerzenie szerokosci kolumny statystyk
- usuniecie obsługi przestarzalych dyrektyw, support oraz iptables return
- akceptowany jest interfejs ppp+

pobierz: niceshaper0.6rc6.tar.bz2

[NiceShaper 0.6rc5 07.06.2008r.]

Jako że zbliża się czas na wydanie stabilnego następcy NiceShapera 0.5, głównym obiektem prac nad tą wersją była jakość kodu, przełożyło się to na zwiększenie stabilności, skuteczności podziału łącza, oraz zmniejszenie obciążenia generowanego przez program.
Liczba łatek składajacych sie na to wydanie była największą z dotychczasowych wersji testowych.

Tak więc, zmiany bezpośrednio zauważalne dla użytkowania programu przedstawiającą się następująco:

Punkty z Mantisa:
- (#006) - przy klasach z wieloma filtrami używających markowania tylko pierwszy filtr był wprowadzany do tc.
- (#012) - nowa dyrektywa: log, obsługuje sysloga, wskazany plik oraz ekran terminala (tylko w czasie inicjalizacji).
- (#014) - poprawiony problem z odczytem iptables return
- (#018) - Niepoprawnie czytane były znaczniki markowania pakietów, podawane w formie szesnastkowej 0xNUMER
- (#019) - po dłuższym czasie działania, pojawiało się opóźnienie w statystykach

Inne usunięte problemy:
- jeśli w sekcji było kilka aliasów tego samego interfejsu, były one źle odczytywane co skutkowało, niepotrzebnymi komunikatami błędów zgłaszanymi przez program tc, przy starcie.
- usunięto problem z pojawianiem się bardzo wysokich rate zaraz po starcie programu oraz włączaniu klas.
- usuniecie drobnych potencjalnych wycieków pamięci.
- usuniecie ryzyka niepoprawnej inicjalizacji klasy przy nikłym ruchu na łączu.
- oczyszczenie i usprawnienie kodu komunikacji miedzy procesowej.
- oparcie żądania przekazania statystyk o sygnały systemowe, zamiast o plik flagi, którego obecność była sprawdzana co pewien interwał czasowy, co jest niedopuszczalne. Było to rozwiązanie które wprowadziłem jako chwilowe a o którym całkowicie zapomniałem. Dodatkowo, poprawka ta mocno zwiększyła responsywność statystyk, szczególnie zauważalnie przy dużych wartościach parametru reload.

Pozostałe zmiany:
- kontrola konfiguracji jest teraz bardzo restrykcyjna
- dyrektywy oznaczone w poprzednich wydaniach rc jako przestarzałe, zostały usunięte z programu
- dyrektywa support mark-on nazywa się teraz mark-on-ifaces
- wykrycie uszkodzenia łańcuchów iptables NiceShapera, skutkuje natychmiastowym wyłączeniem się programu
- sprawdzane jest wskazanie protokołu oraz czy klasa podlega markowaniu pakietów jeśli filtr tego wymaga
- obsługa filtra length
- obsługa negacji filtrów sport/dport/srcip/dstip
- jako zakończenie każdej z sekcji wystarczy znacznik: "</>"
- możliwość komentowania całych bloków plików konfiguracyjnych, tak jak to ma miejsce w większości języków programowania (np./* */ w C/C++), przez znaczniki <# komentarz #>.
- nowa dyrektywa: iptables target w miejsce iptables-return - możliwość określenia celu filtra na ACCEPT,RETURN lub nawet DROP ( chociażby prosta blokada zalegających z opłatami klientów, szczególnie wygodna dla konfiguracji generowanych automatycznie )
- w statystykach pojawia się przybliżona suma wykorzystania pasma przez całą sekcje, możliwe jest także konfigurowanie statystyk poprzez opcje:
stats classes {all|active|working|false} sum {top|bottom|false}
- domyślne pliki konfiguracyjne maja teraz końcówkę .ns, dodałem niedopracowany jeszcze niceshaper.syntax dla mc, pomoc w jego rozbudowie mile widziana.
- powróciła dyrektywa strict znana z poprzedniej stabilnej wersji NiceShapera.

pobierz: niceshaper0.6rc5.tar.bz2


[NiceShaper 0.6rc4.1 25.10.2007r.]

DO WCZORAJ WYDANEJ WERSJI RC4 WKRADŁ SIĘ BŁAD KTÓRY UTRUDNIAŁ POPRAWNE REAGOWANIE NA PRZECIĄŻENIE ŁĄCZA, PRZEZ CO PASMO MOGŁO ZOSTAĆ W PEŁNI WYSYCANE. UPGRADE OBOWIĄZKOWE!!!

pobierz: niceshaper0.6rc4.1.tar.bz2


[NiceShaper 0.6rc4 24.10.2007r.]

Wydanie to sponsoruje wydajność oraz stabilność i tym kwestią poświęciłem najwięcej pracy. Oto zmiany od wersji poprzedniej:

- przepisana została obsługa numeracji filtrów i znaczników
- wyeliminowane zostały błedy pojawiające się przy wielu filtrach istniejących w ramach jednej klasy
- pojawiły się nowe możliwości sterowania markowaniem pakietów
- wyeliminowane zostały drobne błędy w algorytmie podziału, powodujące ryzyko zwieszenia oraz pewne nieścisłości w przyznawaniu pasma.
- opcje uruchomieniowe --no-daemon, --force-pidfile
- testowanie integralności firewalla w czasie działania
- obsługa esfq
- obsługa parametru perturb w sfq i esfq
- parametr overtake został wyrzucony
- akceptowany jest interfejs bond
- include {file|usersfile} - dołączanie plików konfiguracyjnych oraz konwersja i dołączanie pliku users z wersji 0.5 NiceShapera, wyrzucone zostały wszelkie ślady po rozszerzonej skladni usersfile czyli testowanej od początku linii 0.6 składni
- usprawiony został protokół komunikacji między procesami
- skrypt install.sh zastapiony przez Makefile, kompilacja z optymalizacjami, domyślnie włączone O2
- dla interfejsów imq przekierowanie w ramach iptables jest teraz domyślnie włączone stąd dyrektywa imq-redirect zostaje oznaczona jako przestarzała, pozostawiona została możliwość wyłączenia automatycznego przekierowania poprzez opcje imq autoredirect {true|false} } która wobec powyższego domyslnie przyjmuje wartość true
- przepisany parser plików konfiguracyjnych, mogą pojawić się naprawde głupie problemy kod wymaga dłuższego przetestowania, jednak ostatecznie zyskujemy jasną budowe dyrektyw konfiguracyjnych, wymusiło to jeszcze kilka pedantycznych zmian zapisu:
- htb-scheduler, hbr-prio -> htb scheduler, htb prio
- support mark on -> support mark-on
- iptables-return > iptables return
- parametr mode zostaje zgłaszany jako przestarzały, tak naprawde swoją nazwą nie odzwierciedlał spełnianego zadania a w jego miejsce pojawia się parametr iptables hook,i tu najprościej dokonać zastapień:
mode download >iptables hook POSTROUTING
mode upload >iptables hook PREROUTING
- dzięki poprawionemu parserowi konfiguracji mamy lepsze wykrywanie błedów konfiguracji, oraz poprawione ich komunikowanie.
- default w ramach sekcji nie jest wymagany, opcje zostają automatyczne rozpoznane i rozpropagowane na klasy, jednak można go ciągle używać, nie zostaje wyrzucony gdyż zwiększa czytelność.
- mozliwosc wyboru języka komunikatów błedów

pobierz: niceshaper0.6rc4.tar.bz2


[NiceShaper 0.6rc3 05.12.2006r.]

Wreszcie mamy algorytm dzielący łącze równie dobrze jak ten ze starego dobrego niceshapera 0.5. jeszcze w wersji podstawowej bez dodatkowych możliwości przydzielania priorytetów , ale ze względu na skok jakościowy nie mogłem się oprzeć przedwczesnej publikacji;)
- parametr overtake zostaje usunięty z programu a z kolejną wersją będzie raportowany jako użycie nieznanej opcji.
- pliki konfiguracyjne oraz wynik polecenia `iptables -L` wczytywane są bezpośrednio do pamięci i tam przetwarzane, a więc jest zysk w postaci wyeliminowania zbędnej bieganiny po dysku i mniejszego obciążenie systemu.
- poprawiono bład w wyniku którego wykorzystanie łącza przez klasę do-not-shape wykazywane było na poziomie nie większym od domyślnego ceil sekcji.
- jako możliwość zmniejszenia objętości pliku klas wprowadziłem średnik będący równoznaczny z użyciem znaku nowej linii, stąd konfiguracja może wyglądać teraz tak:

class download eth1 ftp ; match from localhost srcip 192.168.0.10 dstip 192.168.0.0/24 ; do-not-shape
class download eth1 Komp_1 ; match dstip 192.168.0.15
class download eth1 Komp_2 ; match dstip 192.168.0.16
class download eth1 Komp_3 ; match dstip 192.168.0.17

- niestety ze względu na przedłużające sie pracę wprowadzenie pełnej obsługi markowania pakietów zostało przesunięte na kolejne wydanie, dlatego trzeba zwracać uwagę na możliwość podmiany pakietów zamarkowanych przed niceshaperem np. celem wysłania wybranych usług kolejnym łączem.
- podziękowania za pomoc w tropieniu błędów dla Zbigniewa Czernika.

pobierz: niceshaper0.6rc3.tar.bz2


[NiceShaper 0.6rc2 29.09.2006r.]

Wersja ta zawiera kilka zmian w składni, stąd należy zadbać o aktualizację plików konfiguracyjnych zawierających poniższe opcje:
- htb_prio -> htb-prio.
- scheduler -> htb-scheduler.
- imq auto redirect -> imq-redirect.
- do not shape -> do-not-shape.

Wprowadziłem naprawdę sporo poprawek napotkanych błędów i niedopracowań, między innymi:
- poprawne wyładowanie programu po wykonaniu niceshaper stop, restart lub wykryciu błędu w konfiguracji.
- poprawione wykrywanie błędów w konfiguracji.
- poprawnie działają klasy typu virtual i wrapper.
- poprawka z błędnym przydzielaniem id filtrów gdy na jednym interfejsie współdziała kilka sekcji.
- wyrzucenie pozostałości po eksperymentalnym wprowadzeniu priorytetów, priorytety pojawią sie w nowym algorytmie podziału dynamicznego.
- poprawka nie działającego filtrowania po tos i ttl ( brak ładowania modułów w iptables ).
- poprawki wpływające na wydajność.

Z nowych funkcjonalności:
- obsługa vlanow w formie ethXX.xxxx oraz interfejsu ath.
- opcja iptables-return.
- w dyrektywie iface używamy tych samych filtrów co przy konstruowaniu klas, używamy tu także słowa match, dla wygody w prostych konfiguracjach można też użyć starego src/dst network.
- reload może się teraz mieścić w przedziale 0.1s do 600s z krokiem nie mniejszym niż 0.1s.

pobierz: niceshaper0.6rc2.tar.bz2


[NiceShaper 0.6rc1_01 20.08.2006r.]

Póki co bez fanfar, jednak wreszcie włączona do kodu została eksperymentalna obsługa wielu sekcji co przedkłada się na fakt że NiceShaper potrafi obsługiwać każdą ilość skonfigurowanych łącz, tym samym proszę szersze grono użytkowników o raportowanie poprzez e-mail napotkanych problemów, jeśli to możliwe z załączeniem plików konfiguracyjnych oraz zrzutów tekstowych z pracy programu uruchomionego z opcjami debugowania.
Przez tak wczesne wydanie liczę na dużą ilość raportów, by w tym czasie zająć się sprawami stabilności i wydajności.
W planach jest także szersze opisanie nowej funkcjonalności na przykładach oraz tłumaczenie dokumentacji na język angielski, jak myślicie jaka jest szansa że NiceShaper 0.6 wypłynie na szersze wody?;)

- dodatkowo pojawiły się opcje definiujące właściciela, grupe i uprawnienia do pliku statystyk.

pobierz: niceshaper0.6rc1_01.tar.bz2


[NiceShaper 0.6pre2_02 31.07.2006r.]

Symboliczne wydanie wypuszczone tylko dlatego że przez najbliższe 2 tygodnie nie zapowiada się na jakiekolwiek prace gdyż wreszcie wyjeżdzam na zasłużony urlop ;), a problemy które aktualnie poprawiłem mogły delikatnie utrudniać życie.

- usunąłem warningi występujące przy kompilacji z opcja -Wall.
- usunąłem problem z komunikowaniem "unrecognized option" dla pewnego typu opcji.
- w momencie gdy plik konfiguracyjny zamykała opcja match, klasa do której filtr należał zostawała niepoprawnie zainicjowana.
- dodałem filtry state, tos i ttl, szczegóły w dokumentacji.

pobierz: niceshaper0.6pre2_02.tar.bz2


[NiceShaper 0.6pre2_01 07.07.2006r.]

W ten długi okres nieobecności ( sesja, mnóstwo nowych obowiązków w pracy zawodowej i długi weekend w wspaniałym Zakopanym ;) czyniłem kolejne nieudane próby kontynuowania prac nad NiceShaper'em, wreszcie jednak w mijającym tygodniu masa krytyczna motywacji przekroczyła ilość obowiązków i udało mi się zasiąść do realizacji planów, wkładając naprawdę wiele godzin pracy by posprzątać po poprzednich eksperymentach i wprowadzić kilka nowości i udogodnień, oto garść najważniejszych:

- usuniecie problemu generowania komunikatow "HTB: quantum of class 10001 is big. Consider r2q change."
- zgłaszany komunikat błedy "Unknown arg `--dport'" powodowany jest przez brak wyszczególnienia protokołu co opisano w dokumentacji.
- pliki config, class, users i katalog konfiguracyjny można wskazywać przez zestaw opcji.
- na starcie tabela mangle przeszukiwana jest na obecność starych nieusuniętych wpisów, wygenerowanych przez wcześniejsze działania NiceShapera.
Bardzo prosty algorytm wyszukuje łańcuchy rozpoczynające się od ns_, stąd nie wolno takich tworzyć na własny użytek gdyż także zostaną usunięte. Jeśli takie wpisy są potrzebne należy je odnowić po każdym uruchomieniu NiceShaper'a.
- filtry ipsrc i ipdst mogą wskazywać całe podsieci IP ograniczone maską, która może być zapisana w formie bitowej lub kropkowano-dziesiętnej, jednocześnie druga forma nie musi być ciągła bitowo. jednak takiej maski nie wolno użyć dla filtru u32 który potrafi obsługiwać wyłącznie maske ciągłą.
- bardzo dużo kodu zostało napisanego w celu zapewnienia właściwej obsługi błedów w konfiguracji, obecnie każda nieznana opcja powoduje wyłączenie inicjalizacji, a funkcja parsowania plików konfiguracyjnych została przepisana i dokładnie sprawdzona.
- nazwa klasy może mieć maksymalnie 20 znaków, co wydaje mi się jest wystarczające.
- obsluga localhostu - okazalo sie ze pracy w programie nie było wiele za to ogrom czasu pożarło opracowanie podstawowych koncepcji i opisów w dokumentacji, jednak ostatecznie rozwiązanie jest proste i wydaje się elastyczne, zapraszam do dokumentacji do rozdziału "Jak traktować localhosta".

Tutaj nie powinna dziwić zmiana wersji na pre2, jednocześnie podyktowana kilkoma racjonalnymi względami, pre1_03 okazało się dość stabilne, zachowanie obecnej wersji ze względu na miejscami sporą przebudowę kodu jest troszkę nieprzewidywalne, wielu rzeczy nie zdążę przetestować, liczę na to że pomożecie wyszukać wszystkie niedociągnięcia a z przyjemnością zabiorę się za ich usuwanie.

pobierz: niceshaper0.6pre2_01.tar.bz2


[NiceShaper 0.6pre1_03 10.04.2006r.]

- naprawde sporo pracy włożyłem w uzyskanie zadowalającej stabilności, usunąłem jak się wydaje te wszystkie problemy spotykane przy włączaniu i wyłączaniu które udało mi się osobiście wywołać.
Jedyne niedociągnięcie to fakt że w pewnych okolicznosciach NS nie potrafi zakończyć poprawnie pracy.
Należy wtedy wykonac # killall -9 niceshaper i usunąć plik /var/run/niceshaper.pid.
Kiedy tylko ten problem zostanie rozwiązany otrzymamy wersje pre2, lecz już teraz jest o wiele lepiej, stąd aktualizacja poprzednich wersji 0.6 jest zalecana.

pobierz: niceshaper0.6pre1_03.tar.bz2


[NiceShaper 0.6pre1_02 08.03.2006r.]

- naprawione segmentation fault po zapytaniu w convert.
- poprawione zgloszenie #00007
- przy wyjściu nie wykonujemy ip link set down dla interfejsów imq.
- przerobiono skrypt dla parametru uruchomieniowego convert, plik users jest teraz niekompatybilny z tym z wersji 0.5, lecz będzie ciągle wspierany w bardzo podobnej formie jako alternatywa dla pliku klas, ze względu na swoją prostotę oraz przejrzystość w sytuacji gdy interesuje nas wyłącznie podział ruchu pomiędzy poszczególne komputery.
- W tym wydaniu plik users musi zostać jeszcze przekonwertowany na postać z klasami lecz w przyszłości NiceShaper potrafił będzie korzystać z niego bezpośrednio, a wybór między nim a plikiem klas będzie się odbywał za pomocą opcji konfiguracyjnej.
- kolejne prace w kierunku obsługi wielu łącz.
- szczegóły na temat zmian w pliku users w dokumentacji.

pobierz: niceshaper0.6pre1_02.tar.bz2


[NiceShaper 0.6pre1_01 14.02.2006r.]

- zaimplementowana obsługa IMQ, szczegóły w dokumentacji ( Mantis #0000001 ).
- zaimplementowany prosty mechanizm debugingu dający mozliwośc wyświetlania komend wysyłanych do systemu.

pobierz: niceshaper0.6pre1_01.tar.bz2


[NiceShaper 0.6pre1_00 11.02.2006r.]

- by przyśpieszyć prace zdecydowałem się na upublicznienie NiceShapera w wersji rozwojowej.
- po zapoznaniu się z moimi wpisami które możliwie szybko ukażą się w mantisie, będzie można zauważyć także wiele braków w podstawowej funkcjonalności.
- dlatego proszę o zapoznanie się z programem oraz zgłaszanie przemyśleń na forum, a błedów i propozycji właśnie w Mantisie.
- kolejne wersje testowe ( snapshoty ) udostępniane będą razem z changelogiem właśnie w tym dziale.

pobierz: niceshaper0.6pre1_00.tar.bz2