§ 8.5 基于 IP 的共享/分割带宽

§ 8.5 基于 IP 的共享/分割带宽

我有一台带宽为 100 Mbps 的服务器。

具有动态 IP 的客户端可以连接到 Web 服务器并下载大文件

最多有10 个客户端可以同时下载

我保证为每个客户提供 10 Mbps 的带宽

我需要使用tc允许他们在单独下载时使用所有带宽,或者在下载客户端 > 1 时平等共享带宽

从未与tc

我想到了:

tc qdisc del root dev ens3 default 10
tc qdisc add dev ens3 root handle 1: htb rate 100mbps
tc class add dev ens3 parent 1: classid 1:1 htb rate 10mbps ceil 90mbps
tc class add dev ens3 parent 1:1 classid 1:10 htb rate 10mbps ceil 90mbps

但当两个客户端开始下载时,它们共享 10mbps 带宽

我需要什么时候

1 client - max 100 Mbps
2 clients - max 50 Mbps each
3 clients - max 33 Mbps each
4 clients - max 25 Mbps each
...

如何让它工作?

答案1

据我所知,没有简单的解决方案。

作为(旧的但据我所知仍然有用的)手册状态:

§ 8.5 基于 IP 的共享/分割带宽

对于许多管理员来说,这是在用户之间分配带宽的理想方法。不幸的是,没有简单的解决方案,而且随着共享网络链接的机器数量增加,它变得越来越复杂。

为了在 N 个 IP 地址之间平等划分带宽,必须有 N 个类。

答案2

# Remove existing qdisc
tc qdisc del root dev ens3

# Set up new qdisc with HTB
tc qdisc add dev ens3 root handle 1: htb default 10

# Define root class
tc class add dev ens3 parent 1: classid 1:1 htb rate 100mbps

# Define class for single client
tc class add dev ens3 parent 1:1 classid 1:10 htb rate 10mbps ceil 100mbps

# Define class for two clients
tc class add dev ens3 parent 1:1 classid 1:20 htb rate 50mbps ceil 100mbps

# Define class for three clients
tc class add dev ens3 parent 1:1 classid 1:30 htb rate 33mbps ceil 100mbps

# Define class for four clients
tc class add dev ens3 parent 1:1 classid 1:40 htb rate 25mbps ceil 100mbps

# Add SFQ qdisc for each class
tc qdisc add dev ens3 parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev ens3 parent 1:20 handle 20: sfq perturb 10
tc qdisc add dev ens3 parent 1:30 handle 30: sfq perturb 10
tc qdisc add dev ens3 parent 1:40 handle 40: sfq perturb 10

此脚本设置了一个层次结构,其中每个类对应不同数量的客户端,并且它们的带宽受到相应的限制。sfq qdisc 用于在每个类内提供公平排队。

10 也是如此

# ... (previous configuration)

# Define class for five clients
tc class add dev ens3 parent 1:1 classid 1:50 htb rate 20mbps ceil 100mbps

# Define class for six clients
tc class add dev ens3 parent 1:1 classid 1:60 htb rate 16.67mbps ceil 100mbps

# Define class for seven clients
tc class add dev ens3 parent 1:1 classid 1:70 htb rate 14.29mbps ceil 100mbps

# Define class for eight clients
tc class add dev ens3 parent 1:1 classid 1:80 htb rate 12.5mbps ceil 100mbps

# Define class for nine clients
tc class add dev ens3 parent 1:1 classid 1:90 htb rate 11.11mbps ceil 100mbps

# Define class for ten clients
tc class add dev ens3 parent 1:1 classid 1:100 htb rate 10mbps ceil 100mbps

# ... (add SFQ qdisc for each new class)

相关内容