Привет народ.
сквид сконфигурен с поддержкой delay_pools, которые настроены на
раздачу трафика в зависимости от IP клиента.
Закачка музыки валит, соответсвенно, с такой же скоростью.
Определен acl для сети
Определен acl для музыкальных файлов
Задача:
Возникла необходимость не отключить полностью закачку музыки, а
уменьшить ее по сравнению со скоростью закачки остального хлама.
Вопрос: возможно ли в принципе такое осуществить средствами сквида?
Есди да то как?
Спасибо.
>Вопрос: возможно ли в принципе такое осуществить средствами сквида?
>Есди да то как?Ответ: Нужно!!!!
Сейчас попробую сваять примерчик на скору руку, а вообще 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
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 2delay_access 1 allow muzika
delay_access 1 deny alldelay_access 2 allow intranet
delay_access 2 deny alldelay_parameters 1 2000/16000
delay_parameters 2 -1/-1 8000/64000Теперь условие выполняется. Т.е. сначала идет проверка на соответствие условию первого пула. Если да, то идет выдача через первый пул. Если нет - переход на проверку соответствия условию второго пула.
Проверка на практике дала положительные результаты.
Если же имеется группа локальных машин, которым все можно, то надо будет создавать для них отдельное ведро и ставить его первым в списке.Кажись, всё.
Еще раз спасибо.
Позволю себе пару замечаний.Задача про скорость "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