要求:
每个组的用户数量是任意的。任何特定组的带宽为 1000kbps。每个组中每个用户的带宽为 70kbps。任何时候,任何用户消耗的带宽都不应超过 70kbps。我使用的是 tc & iptables & ipset。
ipset -L slowips
Name: slowips
Type: hash:ip
Revision: 1
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 240
References: 3
Members:
172.16.79.3
172.16.79.4
IP表:
iptables -t mangle -I POSTROUTING -m set --match-set slowips dst -j CLASSIFY --set-class 1:12
我的 TC 脚本:
#!/bin/bash
tc qdisc del dev eth0 root
tc qdisc del dev eth1 root
tc qdisc add dev eth0 parent root handle 1: hfsc default 11
tc class add dev eth0 parent 1: classid 1:1 hfsc sc rate 1000kbps ul rate 1000kbps
tc class add dev eth0 parent 1:1 classid 1:11 hfsc sc rate 1000kbps ul rate 1000kbps
tc class add dev eth0 parent 1:1 classid 1:12 hfsc sc rate 70kbps ul rate 70kbps
tc qdisc add dev eth0 parent 1:11 handle 11:1 pfifo
tc qdisc add dev eth0 parent 1:12 handle 12:1 pfifo
通过上述设置,单个用户可获得 70kbps 带宽,当另一个用户登录时,70 kbps 带宽将分配给他们。我实际上想要的是让新登录的用户获得 70kbps 带宽,因为 slab 是 1000kbps。