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.