如何配置每个 IP 的 QoS?

如何配置每个 IP 的 QoS?

我们已经说过,专用网络中的用户通过正在执行的地址(NAT)4连接到互联网。我必须配置为向用户提供访问权限,但对用户的带宽进行限制,而对其他用户则没有限制。Linux routerpublic IPnetwork address translationQoSInternet2

eth0:121.51.26.35
eth1:10.239.107.1

eth0Linux Router一个10Mbps链接。eth1连接到switch4节点连接到switch。我想配置为仅限制一组用户的tc带宽以仅累积使用。 (当1个用户下载/上传时,他/她必须收到,但当3个用户同时下载/上传时,他们必须收到)2 nodes(XyZ in picture)3Mbps3Mbps1MBps

首先请告诉我这个要求是否可以实现,如果是,我该如何进行?

下面是拓扑图

在此输入图像描述

答案1

您需要选择一个类感知 qdisc,例如 HFSC 或 HTB。

然后你必须构建一个像这样的类树:

Root Class (10MBit)
|
\--- XyZ Class (rate 3Mbit ceil 3Mbit)
|    |
|    \--- Client 10 (rate 1.5Mbit ceil 3Mbit)
|    \--- Client 11 (rate 1.5Mbit ceil 3Mbit)
|
\--- Client 30 (rate 3.5Mbit ceil 10Mbit)
\--- Client 40 (rate 3.5Mbit ceil 10Mbit)

并且在两个接口上(用于上传和下载整形)。

使用 HTB 来获得可预测的结果,您应该确保子级之和始终等于父级。因此 Root 有 10Mbit,其直接子级相等 (Xyz 3Mbit + Client30 3.5Mbit + Client40 + 3.5Mbit == 10Mbit)。同样,XyZ 有 3Mbit 及其子 Client10+Client11。

很多年前,我写了一个脚本,做了类似的事情:

https://github.com/frostschutz/FairNAT

今天它已经无人维护,但也许它可以给你一些想法。

Linux 中的流量整形是一个被忽视/深奥的领域,也很难找到好的文档。不确定这是否改变了......

http://lartc.org/ (忽略wondershaper部分)

和内核数据包传输图http://www.docum.org/docum.org/kptd/(还有常见问题解答)

或者,如果这一切都太复杂,也许像 ESFQ 这样的无状态 qdisc 就能满足您的需要。它试图在客户端之间实现某种平衡,而不实际应用任何硬带宽限制。

祝你好运。

相关内容