Quality of service w OpenWrt
Ostatnia zmiana: 2016-04-16 17:39

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.

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.

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 simpleshaper
    # /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 set simpleshaper.@settings[0].enabled=1
    # 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