我们正在为我们的服务器应用程序进行 QoS(流量控制)。此服务器为用户提供文件下载服务,我们希望为不同的用户提供不同的优先级和带宽。假设 Linux 服务器为我们的应用程序提供 1M 的带宽,那么我们将为优先级最高的用户提供最多的带宽。
我打算使用 Token 和 Token Bucket 概念来实现这一点,但我不知道如何使用 Timer 和 Measurement 技能来控制生成 Token 的速率,所以我决定从现有的 sw 源代码中学习。有人可以推荐一些流量控制软件/工具吗?
[更新]
我想知道如何使用计时器按速率生成令牌(因为令牌是以某种速率生成的,所以我们可以认为获取令牌的线程将以与生成令牌相同的速率将数据发送到网络接口)。
答案1
答案2
通常,应用程序不控制分配给特定套接字的带宽,也不知道内核发送的流量与其他应用程序发送的流量相比有多少。
该实用程序tc
(iproute2 的一部分)与 iptables 在数据包和连接上设置标记相结合,可用于实现任意复杂的分层令牌桶系统(及其htb
qdisc),您应该考虑研究这一点。