Mikrotik очереди и ограничение общей пропускной способности восходящего канала

С помощью маршрутизатора Mikrotik (форма встроенного Linux) я создал простые очереди для каждой машины, соответствующие IP-адресу источника.

Каждая из 4 машинных очередей имеет неограниченный пакет 3 Мбит / с / 3 Мбит / с для Tx/Rx.

Во время speedtest.net на всех 4 машинах одновременно каждая машина показывает 3 Мбит / с (и там правильно ограничена), однако общая пропускная способность восходящей линии связи составляет 12 Мбит / с (для восходящего потока необходимо установить максимум 10 Мбит / с).

Я хочу ограничить фактический трафик, проходящий через порт восходящей линии связи, до 10 Мбит / с независимо от того, что делают другие очереди (мне нужно, чтобы это перехватило всю очередь, чтобы иметь окончательное значение скорости восходящей линии связи).

Например мне нужно:

Сценарий А

  • Машина A передает со скоростью 3 Мбит / с
  • Машина B передает со скоростью 3 Мбит / с
  • Машина C передает со скоростью 3 Мбит / с
  • Машина D передает со скоростью 0 Мбит / с, скорость восходящей линии связи = 9 Мбит / с

Сценарий Б

  • Машина A пытается передать @ 3Mbps
  • Машина B пытается передать @ 3Mbps
  • Машина C пытается передать @ 3Mbps
  • Машина D пытается передать @ 3Mbps
  • Скорость восходящей линии связи = 10 Мбит / с
  • Фактическая скорость передачи машины A,B,C,D = 2,5 Мбит / с

Это позволяет слегка переподписать очереди пропускной способности, поскольку не все будут передавать со скоростью 3 Мбит / с все время.

Возможно ли это, и если да, то как можно это сделать?

1 ответ

Решение

Вместо использования простых очередей вы, вероятно, захотите использовать дерево очередей. Смотрите: http://wiki.mikrotik.com/wiki/Manual:Queue

Вкратце, вам понадобится очередь верхнего уровня для загрузки и отдельная очередь для загрузки, поэтому дублируйте ее для каждого направления, меняющего src-адрес на dest-адрес в зависимости от ситуации.

  1. Создайте очередь с максимальной скоростью 10 Мбит / с для:

    /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. Это может сделать то, что вы хотите с меньшим количеством работы.

Другие вопросы по тегам