Добрый день! Такой вопрос по Queue Tree
Есть автономка, в ней существуют несколько категорий абонентов с различными квотами на использование различных(!) каналов. Есть бордер роутер с ROS, на котором сходится внутрянка с внешними каналами.
Имеется несколько подключенных апстримов и несколько IX. Каждый апстрим или IX приходит в отдельном влане. С остальной сетью роутер общается по OSPF и iBGP по 2 вланам (для резервирования).
Суть в том, что клиенту, в зависимости от категории, полагается ограниченная скорость через апстримов, при этом на трафик, который будет ходить через IX, требование не распространяется. Иными словами, если целевая сеть доступна через IX, то в данном случае ограничение применяться не должно.
А вот если трафик ходит через апстрим, то скорость должна ограничиваться, причем ограничение должно применяться суммарно по всем апстримам для одного клиента.
То есть, например, клиент с ограничением 50мбит/с качает одновременно с разных хостов. Один поток заходит через апстрим А и имеет скорость 30мбит, другой заходит через апстрим В и должен иметь, соответственно, не более 20 мбит. А если некий третий поток зайдет через IX, то он может идти на любой скорости дополнительно к 50мбитам, идущим через апстримов.
Надеюсь, понятно изложил)
Я изучил мануалы по Queue и прочел несколько статей. Понял, как делать очереди, типы, метить пакеты.
Вопрос в том, как "по уму" привязать определенную очередь сразу к нескольким интерфейсам. Например, есть сеть, в которой каждый клиент должен получать не более 50 мбит. Я делаю очередь типа PCQ на каждое направление, соответственно. А вот куда вязать их, я не понял. Я могу привязать к одном интерфейсу, например к влану определенного апстрима, но тогда очередь будет работать только для него. Можно, конечно, сделать набор правил для каждого апстрима, но тогда не понятно, как их согласовать между собой, чтобы было общее ограничение скорости.
Пока единственное, что пришло на ум, это метить пакеты в mangle по признаку выходного интерфейса и делать одинаковую метку для всех пакетов, которые ходят через вланы всех апстримов. Затем уже в queue запускать в нужную очередь пакеты с этой меткой. Пакеты в сторону IX не метить и не запускать в очередь вообще. Как родительскую указать, получается, global, чтобы работала для всех интерфейсов.
Но сдается мне, что есть какое-то более правильное решение.