Is it possible to throttle upload bandwidth per `IP` basis using `tc`, `htb` and `iptables` ? (Download limitation not required)
4
votes
1
answer
7685
views
#### Problem
I've searched
internet
like anything but couldn't find much about limiting upload
.
The solutions given are not limiting IP
basis like this one but LAN as a whole.
+-----+
+--------+ | S |
| User A |---+ W |
+--------+ | I |
+--------+ | T | +--------+ +----------+
| User B |---+ C +-----| Router |--------| Internet |
+--------+ | H | +--------+ +----------+
.... ... / ...
+--------+ | H |
| User N |---+ U |
+--------+ | B |
+-----+
- UserA:172.16.10.2
- UserB:172.16.10.3
- RouterPrivate:172.16.0.1
- UserC:172.16.10.4
I want to limit only upload
of 172.16.10.3
& 172.16.10.4
using tc
htb
and iptables
#### What I've already tried
I altered the script as per my requirement.
IF_INET=external
# upload bandwidth limit for interface
BW_MAX=2000
# upload bandwidth limit for 172.16.16.11
BW_CLIENT=900
# first, clear previous settings
tc qdisc del dev ${IF_INET} root
# top-level htb queue discipline; send unclassified data into class 1:10
tc qdisc add dev ${IF_INET} root handle 1: htb default 10
# parent class (wrap everything in this class to allow bandwidth borrowing)
tc class add dev externel parent 1: classid 1:1 htb \
rate ${BW_MAX}kbit ceil ${BW_MAX}kbit
# two child classes
#
# the default child class
tc class add dev ${IF_INET} parent 1:1 \
classid 1:10 htb rate $((${BW_MAX} - ${BW_CLIENT}))kbit ceil ${BW_MAX}kbit
# the child class for traffic from 172.16.16.11
tc class add dev ${IF_INET} parent 1:1 \
classid 1:20 htb rate ${BW_CLIENT}kbit ceil ${BW_MAX}kbit
# classify traffic
tc filter add dev ${IF_INET} parent 1:0 protocol ip prio 1 u32 \
match ip src 172.16.16.11/32 flowid 1:20
but this will *not* work for limiting upload. So what's the solution?
Asked by Adi
(93 rep)
Jun 11, 2015, 02:25 PM
Last activity: Jan 28, 2025, 07:06 AM
Last activity: Jan 28, 2025, 07:06 AM