Linux

多個使用者之間的公平頻寬重新分配

  • October 19, 2010

我在家裡有一個 debian 伺服器,使用我的個人網際網路連接(50 mbps 以上)。我已經使用 OpenSSH 設置了一個簡單的 SFTP 服務,以便與多個使用者共享大文件 (10 Gb+)。

這是我的問題:關於頻寬重新分配,這是叢林。我有使用者使用標準 ADSL 連接,其他使用者使用光纖連接等。每個使用者都有不同的下載速度,通常最大的下載頻寬獲勝。

我想知道是否可以在使用者之間“幾乎平均”分配我的上傳頻寬。

理想情況下,每個使用者能夠以高達 50/n mbps 的速度下載文件(其中 n 是連接的使用者數)。

非常感謝您的幫助。

由於您使用的是 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 留作備用。

引用自:https://serverfault.com/questions/192247