多个用户之间公平分配带宽

多个用户之间公平分配带宽

我家里有一台 Debian 服务器,使用我的个人互联网连接(最高 50 mbps)。我使用 OpenSSH 设置了一个简单的 SFTP 服务,以便与多个用户共享大文件(10 Gb+)。

这是我的问题:关于带宽重新分配,这是一个丛林问题。我的用户有标准 ADSL 连接,其他用户有光纤连接,等等。每个用户的下载速度都不同,通常下载带宽最大的用户获胜。

我想知道是否可以将我的上传带宽“几乎平均地”分配给各个用户。

理想情况下,每个用户能够以高达 50/n mbps 的速度下载文件(其中 n 是连接的用户数)。

非常感谢您的帮助。

答案1

由于您使用的是 Debian Linux,因此您可以相当轻松地完成此操作。您可以使用此脚本对带宽进行“公平”重新分配:

#Put here your Internet-interface instead of eth1
ext_iface=eth1
eiface_addr=192.169.158.150

###############Remove shaper rules###############################3
iptables -t mangle --flush

tc qdisc del dev $ext_iface root 2> /dev/null > /dev/null

iptables -t mangle -D POSTROUTING -o $ext_iface -j shape-in 2> /dev/null > /dev/null
iptables -t mangle -F shape-in 2> /dev/null > /dev/null
iptables -t mangle -X shape-in 2> /dev/null > /dev/null

##############Adding shaper rules###################################
tc qdisc add dev $ext_iface root handle 1:0 htb default 10
tc class add dev $ext_iface parent 1:0 classid 1:1 htb rate 100mbit ceil 100mbit

tc class add dev $ext_iface parent 1:1 classid 1:5 htb rate 100mbit ceil 100mbit prio 0
tc class add dev $ext_iface parent 1:1 classid 1:10 htb rate 48mbit ceil 48mbit prio 0

tc qdisc add dev $ext_iface parent 1:5 handle 5: pfifo limit 5
tc qdisc add dev $ext_iface parent 1:10 handle 10: pfifo limit 10

iptables -t mangle -N shape-in
iptables -t mangle -I POSTROUTING -o $ext_iface -j shape-in

#Priority for pings
iptables -t mangle -A shape-in -p icmp -j MARK --set-mark 5

#Priority for Server Access
iptables -t mangle -A shape-in -s $eiface_addr -j MARK --set-mark 5

#Othet packets (user\'s internet traffic)
iptables -t mangle -A shape-in -m mark --mark 0 -j MARK --set-mark 10

tc filter add dev $ext_iface parent 1:0 prio 0 protocol ip handle 5 fw flowid 1:5
tc filter add dev $ext_iface parent 1:0 prio 1 protocol ip handle 10 fw flowid 1:10

请注意,用户将获得 48/n 通道,并且剩下 2 Mbs 作为备用。

答案2

您遇到的问题到底是什么?当有人使用光纤线路下载时,较慢的下载器是否会完全断网?除非是这种情况,否则您可能应该让服务器的 TCP/IP 堆栈尽可能地处理客户端的不同下载速度。最终每个人都应该获得您上传的那部分内容。

此外,我认为您认为每位用户 50/n mbps 是“公平”的,这种想法是错误的。例如,假设您只有两个用户连接,一个使用光纤,下载速度为 50 mbps,另一个使用拨号,下载速度为 56 kbps。您真的想将光纤下载速度限制为 25 mbps,而基本上将剩余的 25 mbps 浪费在拨号用户身上吗?

如果我处在你的位置,我不会费心去强加这种“公平”的概念。如果你这么做了,用户很快就会想办法抢占更大的上传带宽,比如打开额外的连接。

相关内容