OpenWrt - QoS
Quality of service w OpenWrt
Ostatnia zmiana: 2013-11-26 18:43

1. qos-scripts
2. simpleshaper
3. The Wonder Shaper
4. Inne skrypty


Użytkując łącze internetowe wraz z kilkoma osobami (komputerami) prędzej czy później zaistnieje sytuacja, kiedy jeden z osób całkowicie zajmuje pasmo np. ściągając plik, a inne nie mogą wtedy korzystać z internetu. Albo coś ściąga z www, albo np. gra i wymaga minimalnych opóźnień albo nagminnie korzysta z programów p2p. Wtedy z pomocą przychodzi QoS, czyli odpowiedni podział i priorytetowanie łącza. Łącze można dzielić na poszczególne adresy ip (wtedy określone adresy dostają określone pasmo gwarantowane i maksymalne), na usługi lub porty (wtedy ruch np. www ma pierwszeństwo na p2p) lub połączyć to wszystko w jedno. Poniżej przedstawiono dwa warianty: podział na usługi (pakiet qos-scripts) oraz podział na adresy ip (pakiet simpleshaper). Wszystkie te programy wykorzystują mechanizmy dostępne normalnie w linuksie - programy tc oraz iptables. Jeżeli ktoś ma już sprawdzoną i działającą konfigurację, zapewne da się ją przenieść do OpenWrt.

UWAGA: ten poradnik z żaden sposób nie wyczerpuje tematu. Właściwe ustawienie QoS to temat-rzeka i wymaga wielu godzin prób i dopracowania konfiguracji.
qos-scripts
Zawarty jest standardowo w repozytorium OpenWrt. Instalacja sprowadza się do wydania polecenia

    # opkg update
    # opkg install qos-scripts

Konfiguracja zawarta jest w pliku /etc/config/qos. Jest tam definicja klas i parametrów jakie definiują - wystarczy tylko ustawić parametry swojego łącza internetowego:

    # uci set qos.wan.download=4096
    # uci set qos.wan.upload=512
    # uci commit qos

i zrestartować router. Parametry należy podać w kbps.
UWAGA: należy zmierzyć ile faktycznie ma łącze (nie należy ufać ISP) - jeżeli podczas pomiarów wyjdzie że łącze ma 3,5Mbps a nie 4Mbps to taką rzeczywistą wartość należy podać. A najlepiej podać wartość lekko zaniżoną (np. o 10%).
simpleshaper
Jest to pakiet autorstwa Artura Wronowskiego i realizuje sztywny podział pasma na adresy IP (czyli mamy w sieci np. trzy komputery i każdemu przydzielamy określone pasmo).
Instalacja:

    # opkg install ftp://artekw.cerbero.pl/simpleshaper/simpleshaper-latest.ipk
    # /etc/init.d/simpleshaper enable

Konfiguracja zawarta jest w pliku /etc/config/simpleshaper. Podobnie jak w poprzednim przypadku należy podać parametry naszego łącza:

    # uci set simpleshaper.@settings[0].line_download=4096
    # uci set simpleshaper.@settings[0].line_upload=512
    # uci commit simpleshaper

Parametry należy podać w kbps. Następnie należy zdefiniować poszczególne adresy ip:

    # uci add simpleshaper shape
    # uci set simpleshaper.@shape[-1].ip_addr=192.168.1.3
    # uci set simpleshaper.@shape[-1].guaranted_dl=256
    # uci set simpleshaper.@shape[-1].max_dl=512
    # uci set simpleshaper.@shape[-1].guaranted_ul=256
    # uci set simpleshaper.@shape[-1].max_ul=512
    # uci commit simpleshaper
    # /etc/init.d/simpleshaper start

gdzie:
  • ip_addr - adres ip komputera
  • guaranted_dl - gwarantowane pasmo pobierania
  • max_dl - maksymalne pasmo pobierania
  • guaranted_ul - gwarantowane pasmo wysyłania
  • max_ul - maksymalne pasmo wysyłania
Ważna uwaga: suma pasma ze wszystkich adresów nie może przekroczyć przepustowości łącza internetowego zdefiniowanego w line_download/line_upload. W innym przypadku QoS nie będzie działać poprawnie.
The Wonder Shaper
Skrypt ten ma być "złotym gralem" kształtowania transferu. Utworzony na podstawie kolejek HTB i SFQ ma za zadanie priorytetyzować ruch interaktywny przed resztą ("bulk") co ma zapobiec opóźnieniom i przestojom przy dużym obciążeniu ruchem. Przy okazji można także ograniczyć ruch na określonym interfejsie.

    # opkg install wshaper
    # uci set wshaper.settings.network=wan
    # uci set wshaper.settings.downlink=4096
    # uci set wshaper.settings.uplink=512
    # uci commit wshaper
    # /etc/init.d/wshaper start
    # /etc/init.d/wshaper enable

W tym przypadku ograniczamy interfejs logiczny WAN na 4096kbps down i 512kbps up.
Inne skrypty
Konfiguracja QoS opiera się o tworzenie odpowiednich reguł z wykorzystaniem narzędzi tc oraz iptables. Poniżej linki prezentujące przykładowe konfiguracje.

https://forum.openwrt.org/viewtopic.php?id=23285
http://openrouter.info/forum/viewtopic.php?f=30&t=125&p=5148#p5148