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-адрес в зависимости от ситуации.
Создайте очередь с максимальной скоростью 10 Мбит / с для:
/queue tree add name=all_up limit-at=10M parent=machine_ingress_interface
Используйте метки пакетов, чтобы пометить каждый пакет по 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
Создайте очередь для формирования трафика, отмеченного указанной родительской очередью:
/queue tree add name=machine_a_up packet-mark=machine_a_up parent=all_up
Кроме того, посмотрите на PCQ. Это может сделать то, что вы хотите с меньшим количеством работы.