How can I limit the upload/download bandwidth on my CentOS server?
I'm having trouble adding the script code for you here, it is available via this gist - https://gist.github.com/akrasic/7242498#file-limit-tc-sh
The script is using TC and Hierarchical Token Bucket (HTB) to define the rules and lastly the filters that would act as a catch-all rule.
You would need to modify the interface
var if it's different than eth0
˙and the interface_speed
.
Save the script on your server, and start it via:
ḃash limit-tc.sh start
To stop:
bash limit-tc.sh stop
View status: bash limit.tc status
Status output would look something like this:
qdisc htb 1: root refcnt 2 r2q 10 default 30 direct_packets_stat 1
Sent 535666 bytes 6461 pkt (dropped 172, overlimits 7641 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
qdisc sfq 10: parent 1:10 limit 127p quantum 1514b perturb 10sec
Sent 535624 bytes 6424 pkt (dropped 172, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
qdisc sfq 20: parent 1:20 limit 127p quantum 1514b perturb 10sec
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
Dan Nestor
Updated on September 18, 2022Comments
-
Dan Nestor over 1 year
How can I limit the upload and download bandwidth on my CentOS server? This is a box with a single interface,
eth0
. Ideally, I would like a command-line solution (I've been trying to usetc
), something that I could easily switch on and off in a script.So far I've been trying to do something like
tc filter add dev eth0 protocol ip prio 50 u32 police rate 100kbit burst 10240 drop
but I'm obviously missing a lot of knowledge and information. Can somebody help with a quick one-liner?Many thanks, Dan
-
Tabiko over 10 yearsDo you want to limit the bandwidth for a specific user/service ?
-
Dan Nestor over 10 yearsNo, something system-wide would be fine.
-
-
Dan Nestor over 10 yearsLooking at the documentation I understand that for incoming traffic, a "police" filter must be used, which the script does not use. How come it still works?