URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID12
Нить номер: 232
[ Назад ]

Исходное сообщение
"Как ограничить скорость закачки определенных файлов"

Отправлено Susanin , 29-Ноя-02 02:14 
Привет народ.
сквид сконфигурен с поддержкой delay_pools, которые настроены на
раздачу трафика в зависимости от IP клиента.
Закачка музыки валит, соответсвенно, с такой же скоростью.
Определен acl для сети
Определен acl для музыкальных файлов
Задача:
Возникла необходимость не отключить полностью закачку музыки, а
уменьшить ее по сравнению со скоростью закачки остального хлама.
Вопрос: возможно ли в принципе такое осуществить средствами сквида?
Есди да то как?
Спасибо.

Содержание

Сообщения в этом обсуждении
"RE: Как ограничить скорость закачки определенных файлов"
Отправлено Squid , 29-Ноя-02 19:41 

>Вопрос: возможно ли в принципе такое осуществить средствами сквида?
>Есди да то как?

Ответ: Нужно!!!!
Сейчас попробую сваять примерчик на скору руку, а вообще delay_pool's это некоторое даже исскуство в своем роде :) Итак:

#Рисуем acl куда заносим мусор всякий...

acl music    url_regex -i "/usr/local/squid/etc/music.acl"


#Рассказываем сквиду сколько у нас будет пулов (в данном случае один).

delay_pools 1


#Рассказываем к какому типу delay_pool относится наш пул (в данном случае ко второму).

delay_class 1 2


#Рассказываем, что в этот наш пул можно (в данном случае только то что подпадает под acl music).

delay_access 1 allow music
delay_access 1  deny all


#Ну и финально, конфигурируем сам пул (с данными параметрами и учитывая тип, его работу можно описать так: 8000 - суммарная скорость выкачки для всех вместе, которые тянут музыку, 16000 - размер ведра(буфера), первая 1000 - скорость с какой отдавать одному клиенту, вторая 1000 - размера буфера для клиента. Все цены указаны в байтах.)

delay_parameters 1 8000/16000  1000/1000
    

Итого в итоге, один юзер максимально сможет тянуть музычку со скорость 1кб/сек но все вместе, если ринутся качать - в сумме не смогут тянуть больше 8кб/сек. Есстественно - что к этому-же пулу можно прикрутить acl с правилами каких юзеров заворачивать в пул а каких нет.

P.S. Возможно где-то ошибся, так-как в последний раз эту красоту год назад настраивал. Будут вопросы - пиши, найдем что не так.

./squid


"RE: Как ограничить скорость закачки определенных файлов"
Отправлено Susanin , 30-Ноя-02 04:31 
2 ./squid
Большое спасибо за ответ. Но задача, конкретно, стояла следующая:
Имеется:
acl all src 0.0.0.0/0.0.0.0
acl intranet src 192.168.0.0/255.255.255.0
acl muzika urlpath_regex -i \.wav$ \.m3u$ \.mov$ \.ra$ \.rm$ \.mp3$ \.avi$

1. Разрешить группе intranet скачивать музыку со скоростью x
2. Разрешить группе intranet скачивать все остальное со скоростью y
3. x меньше y (x<y)
Скажу сразу - решение найдено. Ниже привожу цепь рассуждений
Если сделать как ты предлагаешь, т.е.:

delay_pools 1
delay_class 1 2
delay_access 1 allow muzika
delay_access 1 allow intranet
delay_access 1 deny all
delay_parameters 1 -1/-1 2000/16000

то все, входящие в группу intranet будут получать от сквида свои 2000 независимо от того, что они качают - музыку или немузыку. Но это не есть полный ответ.
Путем манипуляций с пулами оказалось, что их порядок (по номерам) влияет на получаемые результаты, вышло следующее:

delay_pools 2
delay_class 1 1
delay_class 2 2

delay_access 1 allow muzika
delay_access 1 deny all

delay_access 2 allow intranet
delay_access 2 deny all

delay_parameters 1 2000/16000
delay_parameters 2 -1/-1 8000/64000

Теперь условие выполняется. Т.е. сначала идет проверка на соответствие условию первого пула. Если да, то идет выдача через первый пул. Если нет - переход на проверку соответствия условию второго пула.
Проверка на практике дала положительные результаты.
Если же имеется группа локальных машин, которым все можно, то надо будет создавать для них отдельное ведро и ставить его первым в списке.

Кажись, всё.
Еще раз спасибо.


"RE: Как ограничить скорость закачки определенных файлов"
Отправлено Squid , 02-Дек-02 14:45 
Позволю себе пару замечаний.

Задача про скорость "y" не стояла. По-этому была понята как:
Всем все по максимуму - а музыку зарезать. И было предложено решение.
Порядок следования пулов значения не имеет, просто они просматриваются по порядку. А кому в какой пул - это все средствами acl а не номерами пулов надо реализовывать.

>delay_pools 1
>delay_class 1 2
>delay_access 1 allow muzika
>delay_access 1 allow intranet
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Это зачем??? :))

>delay_access 1 deny all
>delay_parameters 1 -1/-1 2000/16000
>
>то все, входящие в группу intranet будут получать от сквида свои 2000
>независимо от того, что они качают - музыку или немузыку. Но
>это не есть полный ответ.
Ну ессесно, ты же загнал в пул интранет, я такого не писал :))

P.S. Если клиент не подпадает ни под один из пулов - то он идет напрямую, без ограничений.
Порядк пулов у тебя повлиял потому-что под правило allow intranet у тебя подпадает АБСОЛЮТНО ВСЕ. По сему, если у тебя на каком-то пуле стоит этот ДЕФОЛТ то очевидно, что все, что не завернулось до него, в этот пул и попадет.
Правило принятия решения в ACL какое? Верно - до первого попадания в allow, так везде.. в сквидах, в CISCO ACL, в ipwf и т.д.

Всяческих регардов,
надеюсь чем-то помог.

./squid