Usunięte problemy:
- Wyeliminowanie zbędnych komunikatów "RTNETLINK error: No such file or directory", występujących w trakcie wyłączania NiceShapera, gdy dwie lub więcej sekcji współdzieli interfejs.
Usunięte problemy:
- By zapobiec ścinaniu ruchu przy starcie, wprowadzony został mechanizm dwuetapowej inicjalizacji kolejki domyślnej w htb. W pierwszym kroku kolejka ta otrzymuje przepustowość równą sumie prędkości sekcji na interfejsie. Właściwa wartość iface fallback-rate nadawana jest gdy każda z sekcji przeładuje się przynajmniej jednokrotnie.
- Wprowadzenie poprawnego mnożnika dla jednostek w układzie SI, wzorem iproute kb/s to 1000 a nie 1024 bity na sekundę, analogicznie dla pozostałych przedrostków.
- Poprawka problemu zmniejszania wartości ceil klasy typu wrapper jeśli wartość ta jest większa od przepustowości sekcji.
- Poprawka problemu nieuruchamiania się pliku binarnego skompilowanego dla architektury 64 bitowej. Poprawkę wprowadzono pół-oficjalnie do wydania 1.0pre4 w dwa dni po publikacji.
- Usunięcie ostrzeżeń kompilacji "warning: comparison between signed and unsigned integer expressions".
Statystyki:
- Uporządkowanie kodu odpowiedzialnego za funkcjonalności odczytywania statystyk w trakcie działania NiceShapera oraz automatyczne zrzucanie ich do pliku.
- Zabezpieczenie dostępu do statystyk za pomocą hasła losowanego przy każdym uruchomieniu NiceShapera. Nie wymaga ustawienia i posługiwania się hasłem jeśli niceshaper stats uruchamiany jest na tej samej maszynie na której działa NiceShaper.
- Wprowadzenie parametru stats password oraz uruchomieniowego stats --password dla zabezpieczenia zdalnego odczytywania statystyk.
- Wprowadzenie parametru stats rewrite umożliwiającego ustalenie częstotliwości automatycznego zrzucania statystyk do pliku. Jak się okazuje pojawiały się głosy że domyślne 30 sekund to zbyt rzadkie odświeżanie tego pliku.
Inne:
- Drobne poprawki w dokumentacji.
Usunięte problemy:
- w niektórych przypadkach inicjalizacja za pomocą iptables-save|iptables-restore kończyła się niepowodzeniem. Usunięto ten problem i dodatkowo wprowadzono dokładniejsze informowanie o błędach, jeśli wystąpią na tym etapie.
Dodane opcje:
- dodanie dyrektywy iface-<iface> {speed|do-not-shape-method|fallback-rate}.
- wprowadzenie parametrów sekcji: section {htb-burst|htb-cburst}.
- wprowadzenie parametrów klas: htb {burst|cburst}.
Dokumentacja:
- dodanie do dokumentacji diagramu htb.png.
- uaktualnienie tutoriala.
- uaktualnienia w opisach instalacji plików edytorów.
Pozostałe zmiany:
- uaktualnienie i rozwinięcie podświetlania składni plików konfiguracyjnych w Vimie oraz w małym stopniu w Midnight Commanderze.
- dodanie do pakietu tar.bz2 skryptów startowych dla Debiana i CentOS, dostarczanych już wczesniej z pakietami binarnymi dla tych dystrybucji. Skrypty te mają szansę zadziałać również w innych podobnych dystrybucjach.
Usunięte problemy:
- proces kontrolujący sekcje zawieszał się gdy przeładowanie sekcji trwało dłużej od wartości parametru reload.
Najczęściej problem pojawiał się w trakcie inicjalizacji sekcji, zawierających dużą liczbę klas.
- ze względu na pojawiającego się konflikty w dostępie do iptables,
NiceShaper rozpoczyna swoją pracę dopiero po skończonej inicjalizacji przez wszystkie sekcje.
- usunięto poważny problem nieoddawania pasma gdy przydzielone klasie pasmo, ścięte zostało do wartości równej wartości parametru low.
- w wersji 1.0pre1 plik statystyk nie był wypełniany statystykami klas.
- usunięto problem kompilacji przez GCC w wersji 4.7, oraz kilka warningów.
Pozostałe zmiany:
- teraz plik statystyk odświeżany jest nie częściej niż co 30 sekund,
zbyt częste odświeżanie pliku generowało zbędne obciążenie operacjami dyskowymi.
- rozszerzono w dokumentacji opis markowania pakietów.
Zmiany w konfiguracji:
- domyślne położenie konfiguracji przeniesiono do katalogu /etc/niceshaper, a pliki konfiguracyjne mają teraz rozszerzenie .conf.
- dyrektywa include obsługuje ścieżki absolutne, oraz relatywne do katalogu konfiguracyjnego confdir.
- z rożnych powodów a szczególnie obsługi hosta lokalnego wraca dyrektywa mode {download|upload},
opcjonalnie iptables hook pozwala nadpisać uchwyt w iptables nie wpływając na inne ustanowione przez mode parametry.
- iptables [hook|append-hook|insert-hook] to teraz: iptables hook {PREROUTING|POSTROUTING} oraz iptables hook-mode {insert|append}.
- usunięto dyrektywę iface sekcji, teraz wystarczające są standardowe filtry dyrektywy match.
- uporządkowano kwestie dyrektyw i parametrów przyjmujących wartości tak/nie.
Obowiązują tylko yes oraz no. true to teraz yes, false i none to teraz no.
- sekcje wzorem klas nie muszą być zamykane. Kończą się one wraz z rozpoczęciem kolejnej sekcji lub zakończeniem pliku konfiguracyjnego.
- NiceShaper był zbyt liberalny odnośnie akceptowanych zapisów jednostek przepustowości, zostało to uporządkowane.
jednostyki przepustowości uzyte w konfiguracji są konwertowane na jednolitą notację lub całkowicie odrzucane.
- typ klasy ustalany jest za pomocą dyrektywy type {standard-class|do-not-shape|virtual|wrapper}.
Statystyki:
- kolejna przyjemna funkcjonalność. Niceshaper stats komunikuje się z uruchomionym procesem niceshapera za pomocą protokołu TCP/IP.
Dzięki temu możliwa jest obsługa parametrów wskazywanych w linii poleceń oraz zdalne odczytywanie statystyk.
Już nie trzeba przekonfigurowywać i restartować NiceShapera żeby chociażby zmienić jednostkę wyświetlanych statystyk.
Domyślnie NiceShaper nasłuchuje wyłącznie na localhoscie, dyrektywa stats listen zmienia to zachowanie
i umożliwia zdalne odczytywanie statystyk.
Uwaga!! Kod jest w bardzo świeżej wersji, w przyszłości zostanie zaimplementowane szyfrowanie transmisji oraz autoryzacja hasłem.
W tej chwili trzeba mieć na uwadze że uruchomienie zdalnych statystyk może prowadzić do ich przechwycenia.
- dodano wartosci section shape do statystyk.
- dodano do statystyk kolumnę prev-ceil, gdyż para ceil i prev-utilize było myląca.
Pozostałe zmiany:
- uporządkowano od strony dokumentacji (przepisano cały rozdział) oraz kodu zagadnienie kontroli transferów własnych routera.
Dyrektywy from localhost i to localhost zostały usunięte na rzecz from-local i to-local.
- poprawiono proces deamonizacji.
- procesy NiceShapera ładnie przedstawiają się na liście procesów komendy ps:)
- uporządkowano sprawę pliku użytkowników (users). Dodano możliwość użycia pliku użytkowników zamiast pliku klas.
- kolejka root inicjowana na interfejsach ma 1000mbit. Wcześniejsze 100mbit ograniczało transfery lokalne na interfejsach gigabitowych.
Tak więc, zmiany bezpośrednio zauważalne dla użytkowania programu przedstawiającą się następująco:
Usunięte problemy:
- przy klasach z wieloma filtrami używających markowania tylko pierwszy filtr był wprowadzany do tc.
- nowa dyrektywa log. Obsługuje sysloga, wskazany plik logów oraz ekran terminala (tylko w czasie inicjalizacji).
- poprawiony problem z odczytem iptables return.
- niepoprawnie czytane były znaczniki markowania pakietów, podawane w formie szesnastkowej 0xNUMER.
- po dłuższym czasie działania, pojawiało się opóźnienie w statystykach.
- 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 momencie włączania klas.
- usunieto kilka drobnych potencjalnych wycieków pamięci.
- usunieto ryzyka niepoprawnej inicjalizacji klasy przy nikłym ruchu na łączu.
- oczyszczenie i usprawnienie kodu komunikacji miedzyprocesowej.
- 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 wprowadzone jako chwilowe a zostało na dłużej.
Poza usunieciem niepotrzebnych operacji dyskowych poprawka ta mocno zwiększyła responsywność statystyk.
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.
- dodano obsługę filtra length.
- dodano obsługę negacji filtrów sport/dport/srcip/dstip.
- jako zakończenie każdej z sekcji wystarczy znacznik: ">".
- wprowadzono 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 #>.
- dodano dyrektywe iptables target w miejsce iptables-return - możliwość określenia celu filtra na ACCEPT, RETURN lub nawet DROP.
(DROP może być przydatne chociażby jako szybka i 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 nową dyrektywe 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.