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.