1 (edytowany przez vatazhka 2008-02-01 10:40:49)

Temat: QoS - zmiana parametrów "w locie"

Mój ISP w ustalonych godzinach zmienia parametry łącza na wyższe. Chciałbym dostosowywać ustawienia QoS do tych zmian, tak abym mógł korzystać z VoIP czy gier sieciowych nawet wtedy, gdy będę ściągał coś z sieci.

Na szybko napisałem taki skrypt:

#!/bin/sh

if [ $1 == "day" ]; then {
    uci set qos.wan.upload=256
    uci set qos.wan.download=1024
    qos-stop
    qos-start
} elif [ $1 == "night" ]; then {
    uci set qos.wan.upload=512
    uci set qos.wan.download=2048
    qos-stop
    qos-start
} fi

Uruchamiam go z crona:

0 8 * * * /etc/init.d/qos-change day
0 0 * * * /etc/init.d/qos-change night

Wadą jest to, że wywołanie qos-stop/qos-start powoduje skasowanie i ponowne utworzenie listy reguł firewalla oraz drzew kolejkowania pakietów, a co za tym idzie - utratę statystyk. Czy znacie bardziej elegacki sposób?

Nie wiem, czy w ogóle przejmowanie się parametrami QoS ma w tym przypadku sens. Pamiętam, że kiedyś QoS w Linuksie nie było zaimplementowane zbyt dobrze, można było ustawić co najwyżej orientacyjne limity - np. ustawienie maksymalnej przepływności na 512 kbit/s skutkowało tym, że można było osiągać w granicach 1 Mbit/s, kiedy łącze zewnętrzne było nieobciążone i 300 kbit/s, kiedy było w pełni wysycone, no ale wtedy używało się innych polityk kolejkowania... Bardziej od limitowania maksymalnych przepustowości interesuje mnie priorytetyzacja określonego typu ruchu sieciowego.