> ВОПРОС
>О ДИНАМИЧЕСКОМ ДЕЛЕНИИ КАНАЛА!!!!!
>Средствами QoS мне показалось это не решить,
А мне показалось, что именно QoS и позволяет это решить!
Правда сам еще не пробовал, но прочитал статью на этом сайте:
http://www.webforum.ru/wbf.php?board=14197Вот твоя постановка задачи:
> Вот уже давно хотел сделать такую штуку, чтоб канал динамически делился
> между активными пользователями поровну,независимо от количества
> потоков закачки каждого клиента.
Решение первое:
---------------------------------------
SFQ, Stochastic Fair Queuing
Дисциплина обработки очереди SFQ пытается распределить поровну
возможность передавать данные между произвольным количеством потоков.
...
ESFQ, Extended Stochastic Fair Queuing
Концептуально, эта дисциплина обработки очереди ничем не отличается от
SFQ, но дает больше возможностей по настройке очереди.
...
Обычная дисциплина SFQ становится неэффективной, если пользователи
работают с программами, поддерживающими несколько потоков. В этом
случае SFQ не способен поровну разделить канал между пользователями.
Однако доступ к дополнительным параметрам алгоритма, обеспечиваемый
дисциплиной обработки очереди ESFQ позволяет решить описанную проблему
использованием другого хэша, например, по исходному адресу.
---------------------------------------
Это решение позволяет делить поровну, но не позволяет делить с учетом весов, как ES Proxy.
Решение второе:
---------------------------------------
CBQ, Class-Based Queue
...
rate
Параметр ограничивает скорость передачи трафика для данной
дисциплины.
weight
Каждый класс получает возможность передать данные. Если у вас
есть классы, значительно отличающиеся полосой пропускания,
имеет смысл разрешить классам с большой пропускной способностью
посылать за раз больше данных, чем классы с небольшой
пропускной способностью
isolated/sharing
У класса, созданного с параметром isolated, нельзя занимать
полосу пропускания. То есть другие классы, настроенные на заем
доступной полосы пропускания никогда не смогут занять полосу
этого класса, даже если она будет свободной.
Наоборот, класс созданный с параметром sharing будет
предоставлять свою свободную часть пропускающей способности
другим классам.
bounded/borrow
Эти два параметра определяют, может ли класс занимать
пропускающую способность других классов. Параметр bounded
запрещает, а borrow разрешает занимать свободную полосу
пропускания классов, сконфигурированных с параметром sharing.
---------------------------------------
Итак, для деления канала поровну ставим
rate = макс. скорости
weight = rate/10
sharing
borrow
и получаем то, что надо: если два процесса имеют одинаковый вес, канал будет делиться между ними поровну.