Mikrotik 队列和限制总上行带宽

Mikrotik 队列和限制总上行带宽

使用 Mikrotik 路由器(嵌入式 Linux 的形式),我为每台机器创建了与源 IP 地址匹配的简单队列。

4 个机器队列中的每一个对于 Tx/Rx 都有无限突发 3Mbps/3Mbps。

在所有 4 台机器上同时进行 speedtest.net 测试时,每台机器都显示 3Mbps(并且在那里正确限制),但是上行链路上的总带宽达到 12Mbps(我需要将上行链路的最大带宽设置为 10Mbps)。

我想将通过上行链路端口的实际流量限制为 10Mbps,而不管其他队列在做什么(我需要这个捕获所有队列对上行链路速度有最终决定权)。

例如我需要:

场景 A

  • 机器 A 以 3Mbps 的速度传输
  • 机器 B 的传输速度为 3Mbps
  • 机器 C 以 3Mbps 的速度传输
  • 机器 D 以 0Mbps 的速度传输,上行速度 = 9Mbps

场景 B

  • 机器 A 尝试以 3Mbps 的速度传输
  • 机器 B 尝试以 3Mbps 的速度传输
  • 机器 C 尝试以 3Mbps 的速度传输
  • 机器 D 尝试以 3Mbps 的速度传输
  • 上行速度 = 10Mbps
  • 机器A、B、C、D的实际传输速度=2.5Mbps

这是为了允许带宽队列稍微超额订阅,因为并非所有队列都始终以 3Mbps 的速度传输。

这是可能的吗?如果可以,该如何做呢?

答案1

您可能不想使用简单队列,而是想使用队列树。请参阅:http://wiki.mikrotik.com/wiki/Manual:Queue#Queue_Tree

简而言之,您需要一个用于上传的顶级队列和一个用于下载的单独队列,因此请在每个方向上重复此操作,并根据需要将源地址更改为目标地址。

  1. 创建一个最大速率为 10Mbps 的队列:

    /queue tree add name=all_up limit-at=10M parent=machine_ingress_interface

  2. 使用数据包标记按源或目标 IP 标记每个数据包。例如,来自机器 A 的流量被标记为 machine_a_up:

    /ip firewall mangle add action=mark chain=prerouting new-packet-mark=machine_a_up src-address=192.168.1.2

  3. 创建一个队列来对标有指定父队列的流量进行整形:

    /queue tree add name=machine_a_up packet-mark=machine_a_up parent=all_up

或者,查看 PCQ.它也许能用较少的工作完成你想要做的事情。

相关内容