С помощью маршрутизатора Mikrotik (форма встроенного Linux) я создал простые очереди для каждой машины, соответствующие исходному IP-адресу.
Каждая из 4 машинных очередей имеет неограниченный пакет 3 Мбит / с / 3 Мбит / с для Tx / Rx.
Во время speedtest.net на всех 4 машинах одновременно каждая машина показывает 3 Мбит / с (и там правильно ограничена), однако общая пропускная способность восходящего канала достигает 12 Мбит / с (мне нужно установить это значение на максимум 10 Мбит / с для восходящего потока).
Я хочу ограничить фактический трафик, проходящий через порт восходящего канала до 10 Мбит / с, независимо от того, что делают другие очереди (мне нужна эта очередь перехвата всех, чтобы последнее слово о скорости восходящего канала).
Например мне нужно:
Сценарий А
Сценарий B
Это сделано для того, чтобы разрешить небольшое превышение подписки на очереди полосы пропускания, поскольку не все будут постоянно передавать со скоростью 3 Мбит / с.
Возможно ли это, и если да, то как это сделать?
Вместо использования простых очередей вы, вероятно, захотите использовать дерево очередей. Видеть: http://wiki.mikrotik.com/wiki/Manual:Queue#Queue_Tree
Вкратце, вам понадобится очередь верхнего уровня для загрузки и отдельная очередь для загрузки, поэтому продублируйте это для каждого направления, изменяя src-address на dest-address, если это необходимо.
Создайте очередь с максимальной скоростью 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. Он может делать то, что вы хотите, с меньшими усилиями.