Dynamically adjusting bandwidth limits
3.10.2020Full quote by Perry:
“I got a request from a refugee center to set up qos so that in the evenings and on weekends the bandwidth-limit gets raised from 35Mbit to 45Mbit, and back down to 35Mbit Mon-Fri 7:00 to 20:00. To do this, I did the following. It’s a hack, which could be improved (like storing up slow speed and fast speed in a config file somewhere).
So this is what I did…. I wrote the following script (/root/qos-schedule.sh)
#!/bin/sh . /lib/functions.sh SLOW=35000 FAST=45000 SPEED=$SLOW #check to see if it's the weekend if [[ $(date +%u) -gt 5 ]]; then SPEED=$FAST else # check to see if it's not between 7:00 and 20:00 if [[ $(date +%H) -lt 7 ]] || [[ $(date +%H) -ge 20 ]]; then SPEED=$FAST fi fi #compare the speed to the current settings. OLDSPEED=$(uci get qos.ffuplink.download) if [[ $OLDSPEED -ne $SPEED ]]; then logger -t qos-schedule.sh "setting time-based qos to $SPEED" uci set qos.ffuplink.download=$SPEED uci commit qos /etc/init.d/qos reload fi
I added it to crontab to run every hour
Additionally I added the script to /etc/rc.local (so that the correct speed is set at startup)
Additionally I created a hotplug script /etc/hotplug.d/ntp/50-qos-schedule
#!/bin/sh #logger -t hotplug-ntp-qos-schedule "Action is $ACTION, stratum is $stratum" [ "$ACTION" = stratum ] || exit 0 logger -t hotplug-ntp-qos-schedule "Running qos-schedule from ntp hotplug event" /root/qos-schedule.sh
Lastly, I added /root/qos-schedule.sh
and /etc/hotplug.d/ntp/50-qos-schedule
to /etc/sysupgrade.conf
kls0e Would you like to add that to your list of super cool tutorials?”
absolutely.