The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Как ограничить скорость закачки определенных файлов, !*! Susanin, 29-Ноя-02, 02:14  [смотреть все]
Привет народ.
сквид сконфигурен с поддержкой delay_pools, которые настроены на
раздачу трафика в зависимости от IP клиента.
Закачка музыки валит, соответсвенно, с такой же скоростью.
Определен acl для сети
Определен acl для музыкальных файлов
Задача:
Возникла необходимость не отключить полностью закачку музыки, а
уменьшить ее по сравнению со скоростью закачки остального хлама.
Вопрос: возможно ли в принципе такое осуществить средствами сквида?
Есди да то как?
Спасибо.
  • RE: Как ограничить скорость закачки определенных файлов, !*! Squid, 19:41 , 29-Ноя-02 (1)

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

    Ответ: Нужно!!!!
    Сейчас попробую сваять примерчик на скору руку, а вообще 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, 04:31 , 30-Ноя-02 (2)
      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, 14:45 , 02-Дек-02 (3)
        Позволю себе пару замечаний.

        Задача про скорость "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




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру