Instalacja pakietów i skryptów odpowiedzialnych za QoS w OpenWrt jak wszystko (prawie) jest prosta i banalna. Trochę bardziej problematycznym jest wybór skryptu odpowiedzialnego za QoS. W OpenWrt dominują dwa skrypty: autorem jednego jest niejaki Rudi zaś drugiego nbd - jeden z developerów OpenWrt. Analizując watek na oficjalnym forum OpenWrt poświęcony QoS zauważyć można, że zarówno jeden jak i drugi skrypt ma swoich gorących zwolenników jak i przeciwników. Można spotkać się z opinią że skrypt autorstwa nbd jest gorszy niż skrypt Rudi'ego jako, że słabiej priorytetyzuje ruch VoIP. Trudno to jednoznacznie ocenić; najlepiej samemu zainstalować jedną z wersji i przeprowadzić odpowiednie testy. Skryty nbd w przeciwieństwie do skryptów Rudi'ego posiadają możliwość konfiguracji za pośrednictwem X-Wrt.
Instalacja skryptu nbd jest prosta i banalna i sprowadza się do kliknięcia przycisku znajdującego się na stronie X-Wrt Network\QoS . Spowoduje to, iż system samodzielnie dociągnie sobie wszystkie potrzebne mu pakiety i skrypty oraz przeładuje stronę X-Wrt.
Jeżeli używamy Kamikaze to instalacja pakietu sprowadza się do jednej komendy
opkg install qos-scripts
Ustawiamy wartości maksymalne UL/DL zależne od posiadanego łącza internetowego.
uci set qos.wan.upload=256 uci set qos.wan.download=1024 uci commit qos
Automatyczny start QoS przy starcie systemu
/etc/init.d/qos enable
Po pomyślnym zainstalowaniu skryptów odpowiedzialnych za QoS na stronie Network\Qos wypełniamy poszczególne opcje tj.
Ręczne sterowanie QoS
qos-start - uruchomienie usługi QoS qos-stop - zatrzymanie QoS qos-stat - podgląd priorytetów
Zaawansowana konfiguracja QoS zawarta jest w pliku /etc/config/qos
Mimo nieposiadania konfiguratora graficznego, sama konfiguracja skryptu jest stosunkowo łatwa, nie powinna nastręczyć problemów nawet początkującym użytkownikom o ile nie boją się oni linii poleceń.
Pierwszym etapem będzie zainstalowanie skryptu za pomocą opkg:
opkg install http://files.eschauzier.org/qos-re_1.05_all.ipk # nietestowane na 8.09
Następnie należy otworzyć plik /etc/qos.conf w dowolnym edytorze i odnaleźć linie:
# Download speed in kilobits per second # Set 5% - 10% lower than *measured* line speed (set to zero to disable) DOWNLOAD=100
# Upload speed in kilobits per second # Set 5% - 10% lower than *measured* line speed (set to zero to disable) UPLOAD=50
Zmieniamy wartości DOWNLOAD i UPLOAD na te nam odpowiadające pamiętając o zmniejszeniu rzeczywistych wartości o 5 do 10%. Jeśli ustawimy te wartości na zbyt wysokie to zacznie nam się zapychać kolejka pakietów i wtedy cały QoS na nic nam się nie zda. Po tej operacji mamy właściwie poprawnie skonfigurowane zarządzanie pasmem.
Jako, że nie pojawiają się nowe wersje skryptu Rudego, a co za tym idzie nie ma wersji na Kamikaze. Poniżej przedstawiono skuteczny sposób na zmuszenie tego skryptu do pracy z Kamikaze.
- Instalujemy pakiety
opkg install qos-script (potrzeba nam zależności tego pakietu, **potem go usuwamy!!**)
opkg remove qos-scripts
opkg install ip
opkg install http://files.eschauzier.org/qos-re_1.05_all.ipk -nodeps (wersja HTB)
lub
opkg install http://files.eschauzier.org/qos-re-hfsc_1.05_all.ipk -nodeps (wersja HFSC)
- Konfiguracja
nano /etc/qos.conf
Na dole zmieniamy parametr QOS_IF na interfejs do którego podłączony jest Internet.
# Define custom QoS interface. Defaults to wan interface. #QOS_IF=br0
W przypadku połaczeń po PPPoE to będzie „ppp0”, w innych przypadkach(DHCP, statik) eth0(informacja niepewna). Oczywiście przed zapisaniem usuwamy znak hasha(#)
- Skrypt startowy
nano /etc/rc.d/S99qos #!/bin/sh qos-start
Modyfikując QoS pod własne potrzeby wykorzystać możemy zaawansowane filtry klasyfikujące ruch sieciowy m.in. na podstawie nagłówków pakietów (L7-filters). Przestrzegam tutaj przed nadmiernym optymizmem w wykorzystaniu tych filtrów, jednakże w przypadku niektórych rodzajów ruchu sieciowego sprawdzają się całkiem przyzwoicie.
Standardowo skrypt nbd oferuje dosyć ograniczoną liczbę tych filtrów. Aby poszerzyć sobie możliwości klasyfikacji i priorytetyzowaniu ruchu sieciowego za pomocą filtrów L7 musimy ściągnąć sobie sygnatury interesującego nas ruchu ze strony http://l7-filter.sourceforge.net/protocols i zapisać je w katalogu /etc/l7-protocols. Tak zapisane sygnatury możemy później wykorzystać w samodzielnie tworzonych przez nas regułach QoS.
Najnowsza wersja stabilna: v.0.4-20
Instalujemy pakiet poprzez dodanie do pliku /etc/opkg.conf linijki przed „dest root /”
src shaper ftp://artekw.cerbero.pl/simpleshaper/old # dla 7.09 tylko brcm-2.4 src shaper ftp://artekw.cerbero.pl/simpleshaper/8.09.1/ # dla 8.09.1
Następnie koniecznie jest wykonanie aktualizacji drzewa pakietów
opkg update
Ostatecznie instalujemy pakiet
opkg install simpleshaper
Pakiet zainstaluje wszystkie potrzebne inne pakiety do poprawnego działania.
Alternatywnym wyjściem jest pobranie pakietu do /tmp
cd /tmp wget ftp://artekw.cerbero.pl/simpleshaper/simpleshaper_<wersja>.ipk
oraz zainstalowanie ręcznie
opkg install simpleshaper_<wersja>.ipk
Program zawiera plik konfiguracyjny(/etc/config/simpleshaper), który można edytować naszym ulobionym edytorem lub poprostu uci.
Przykład konfiguracji
config settings
option line_download 1024
option line_upload 1024
config shape
option ip_addr 192.168.1.1
option guaranted_dl 512
option max_dl 1024
option guaranted_ul 768
option max_ul 1024
option prio 0
option queue 11
config shape
option ip_addr 192.168.1.2
option guaranted_dl 768
option max_dl 1024
option guaranted_ul 768
option max_ul 1024
option prio 1
option queue 12
config shape
option ip_addr 192.168.1.3
option guaranted_dl 256
option max_dl 512
option guaranted_ul 256
option max_ul 512
option prio 1
option queue 13
Skrypt posiada regułę dotyczącą ograniczania pasma dla sieci P2P przy pomocy IPP2P. Domyslnie ustawienia powodują, że ruch P2P(zarówno download i upload) osięgnie maksymalnie 30% łącza całego.
Zarządzanie pasmem aktywujemy komendą
ss-start
Natomiast wyłączamy
ss-stop
Dostępne są również proste statystyki
ss-stat
Domyślnie dostarczany skrypt init jest wyłaczony, dlatego też, aby aktywować usługę podziału pasma na starcie naszego routera wydajemy komendę
/etc/init.d/simpleshaper enable
Jeżeli korzystamy z środowiska SDK lub kompilujemy własnoręcznie niestabilny kod(trunk) to jesteśmy w stanie samodzielnie utworzyć pakiet simpleshaper nie czekając aż autor zrobi to za nas
Pobieramy najnowszą wersje ze strony http://artekw.cerbero.pl/gitweb, klikając na 'snapshot' przy najakualniejszej zmianie. Pobieramy plik tgz i rozpakowujemy archiwum. Powstały folder simpleshaper przegrywamy do katalogu packages w SDK lub buildrocie.
W przypadku korzystania z SDK wystarczy wejśc do głównego folderu tegoż SDK i wykonać polecenie
make
Natomiast w przypadku buildroota(trunk) musimy w menu konfiguracyjnym w kategorii Network wybrać nasz pakiet zaznaczanąc '*' lub 'M' jeżeli niechcemy go integrować z obrazem. Ostatnią czynnością jest zapisanie konfiguracji i wykonanie komendy
make package/simpleshaper/{clean,compile,install}
Dyskusja