流控用于对网络数据流发送和接收进行控制,流量被控制在指定的范围值内,即传输的流量只能小于或等于流控值,反之超过的流量将会被丢弃或延迟发送。

流控执行的两种方式:

  • 丢弃所有超出的流量限制的数据 –rate limiting (丢弃) ,当queue-size=0 超出部分流量被全部丢弃。
  • 超出指定限制流量加入到队列中–rate equalizing (计划发送) ,当queue-size=unlimited(无限制),队列中的数据按照比例均衡发送。

下面两组图片进一步理解rate limitingrate equalizing的区别:

上图采用rate limiting,queue-size=0显示了传输流量超出了指定限速带宽的那部分被直接丢弃掉。网络ping会出现丢包

上图显示了传输流量超出了指定限速带宽的那部分,将进入队列容器queue-size=unlimited,在实际使用中会有一个范围值),超出部分的数据会延迟发送。网络ping会出现延迟增大。

注意:当指定了queue-size的大小后,数据包延迟发送只会在队列容器没有满的情况下,如果队列容器没有多余的空间缓存数据,数据包同样会被丢弃,但需要注意增加queue-size会增加路由器的内存消耗。

在RouterOS队列容器值(queue-size)可以通过/queue type指定,每种类型的queue type有不同的队列长度大小,队列的类型包括:(pfifo-limit, bfifo-limit, pcq-limit, pcq-total-limit, red-limit,但所有的类型原则上是一样的,即queue-size决定数据报是被丢弃还是延迟发送。