
- •1. О Squid, этом faq, и других информационных ресурсах по Squid
- •1.1 Что такое Squid?
- •1.8 Работает ли Squid под Windows nt?
- •1.9 Какие доступны листы рассылки по Squid ?
- •1.10 Я не могу найти описание как отписаться от вашего списка рассылки.
- •1.11 Какие веб-страницы посвящены Squid ?
- •1.12 Поддерживает ли Squid ssl/https/tls?
- •1.13 Каков официальный статус Squid?
- •1.14 Совместим ли Squid c проблемой 2000 ?
- •1.15 Могу ли я заплатить кому-нибудь за поддержку Squid ?
- •1.16 Создатели Squid faQrus
- •1.17 О этом документе
- •2. Получение и компиляция Squid
- •2.1 Какие файлы мне загрузить ?
- •2.2 Как мне откомпилировать Squid?
- •2.3 Какой компилятор мне необходим?
- •2.4 Что еще мне необходимо для компиляции Squid?
- •2.5 А есть откомпилированные бинарники?
- •2.6 Как мне наложить патч ?
- •2.7 Опции configure.
- •2.8 Undefined reference to __inet_ntoa
- •2.9 Как мне получить действительное dns ttl в ip-rtit Squid?
- •2.10 Моя платформа - bsd/os или bsdi и я не могу откомпилировать Squid.
- •2.11 Проблемы компиляции libmiscutil.A на Solaris.
- •2.12 У меня проблемы при компиляции Squid на некоторой платформе.
- •2.13 Я вижу много предупреждений во время компиляции.
- •2.14 Сборка Squid на os/2
- •3. Установка и запуск Squid
- •3.1 Насколько мощная система мне необходима, чтобы запускать Squid?
- •3.2 Как мне установить Squid?
- •3.3 Что делает файл squid.Conf?
- •3.4 А у вас есть пример squid.Conf?
- •3.5 Как мне запустить Squid?
- •3.6 Как мне запускать Squid автоматически во время загрузки системы?
- •3.7 Как узнать запущен ли Squid?
- •3.8 Опции командной строки squid.
- •3.9 Как мне посмотреть как работает Squid ?
- •4. Проблемы настройки
- •4.1 Как мне присоединится к иерархии кешей ?
- •4.9 Как мне настроить в Squid перенаправление всех запросов на другой прокси ?
- •4.10 У меня есть процессы dnsserver, которые не используются, нужно ли мне уменьшить их кол-во в squid.Conf?
- •4.11 Среднее время обработки запроса моим dnsserver достаточно велико, как мне его уменьшить ?
- •4.12 Каким самым простым способом я могу изменить http-порт, установленный по умолчанию?
- •4.13 Возможно ли контролировать насколько велика каждая из cache_dir?
- •4.14 Какой размер cache_dir должен использовать?
- •4.15 Я добавил новую cache_dir. Потеряю ли я свой кеш ?
- •4.16 Squid и http-gw из пакета tis.
- •4.17 Что такое ``http_x_forwarded_for''? Почему squid снабжает ним www-сервера и как мне это прекратить?
- •4.18 Может ли Squid сделать анонимными http-запросы?
- •4.19 Могу ли я заставить Squid ходить напрямую на некоторые сайты?
- •4.20 Могу ли я заставить Squid ходить напрямую на некоторые сайты?
- •4.21 Могу ли я предотвратить закачку больших файлов пользователями?
- •5. Взаимодействие между броузерами и Squid-ом
- •5.1 Ручная настройка Netscape
- •5.2 Автоматическая настройка Netscape
- •5.3 Настройка Lynx и Mosaic
- •5.4 Redundant Proxy Auto-Configuration
- •5.5 Proxy Auto-Configuration with url Hashing
- •5.6 Настройка Microsoft Internet Explorer
- •5.7 Настройка Netmanage Internet Chameleon WebSurfer
- •5.8 Настройка прокси в Opera 2.12
- •5.9 Как мне указать Squid использовать определенное имя пользователя для ftp?
- •5.10 Настройка броузеров для wpad
- •5.11 Настройка броузеров для wpad с dhcp.
- •5.12 Ie 5.0x crops trailing slashes from ftp url's
- •5.13 Ie 6.0 sp1 не работает при использовании аутентификации basic.
- •6. Файлы журналов Squid
- •6.1 Squid.Out
- •6.2 Cache.Log
- •6.3 Useragent.Log
- •6.4 Store.Log
- •6.5 Hierarchy.Log
- •6.6 Access.Log
- •6.7 Результирующие коды Squid
- •6.8 Http status codes
- •6.9 Методы запроса
- •6.10 Коды иерархий
- •Invalid code
- •6.11 Cache/log (Squid-1.X)
- •6.12 Swap.State (Squid-2.X)
- •6.13 Какие лог-файлы я могу безопасно удалить?
- •6.18 Почему я так часто получаю сообщения получаю err_no_clients_big_obj?
- •6.19 Что значит err_lifetime_exp?
- •6.20 Восстановление ``потеряных'' файлов из кеша.
- •6.21 Могу ли я использовать store.Log,чтобы определить был ли объект закеширован ?
- •7.4 Как я могу проксировать/кешировать Real Audio?
- •7.5 Как мне удалить объект из кеша?
- •7.6 Using icmp to Measure the Network
- •Inspecting the database
- •7.7 Почему так мало запросов tcp_ims_miss попадают в лог?
- •7.8 Как мне заставить Squid не кешировать некоторые сервера или url-ы?
- •7.9 Как я могу удалить и вновь создать кеш?
- •7.10 Почему я не могу запустить Squid как root?
- •7.11 Можете ли вы подсказать мне хороший вариант обновления Squid с минимальными затратами времени?
- •7.12 Может ли Squid слушать более одного http-порта ?
- •7.12 Can Squid listen on more than one http port?
- •7.13 Can I make origin servers see the client's ip address when going through Squid?
- •8. Память
- •8.1 Почему Squid использует так много памяти!?
- •8.2 Как мне узнать сколько памяти использует мой процесс Squid ?
- •8.3 Мой процесс Squid безгранично растет.
- •8.4 Я установил параметр cache_mem равным XX, но мой процесс превышает это значение !
- •8.5 Как мне проанализировать использование памяти, основываясь на показаниях кеш-менеджера ?
- •8.6 Значение ``Total memory accounted'' меньше, чем размер моего процесса Squid.
- •8.7 Xmalloc: Unable to allocate 4096 bytes!
- •8.8 Fork: (12) Cannot allocate memory
- •8.9 Как я могу уменьшить размер используемой Squid-ом памяти ?
- •8.10 Использование альтерантивной библиотеки malloc.
- •8.11 Сколько памяти необходимо моему серверу Squid ?
- •9. Менеджер кеша
- •9.1 Что такое кеш-менеджер ?
- •9.2 Как мне его установить ?
- •9.3 Настройка кеш-менеджера для cern httpd 3.0
- •9.4 Настройка кеш-менеджера для Apache
- •9.5 Настройка кеш-менеджера для Roxen 2.0 и более поздних версий
- •9.7 Почему он говорит, что мне небходим пароль и url ?
- •9.8 Я хочу остановить кеш удаленно. Какой пароль ?
- •9.9 How do I make the cache host default to my cache?
- •9.23 Что такое fqdncache и чем он отличается от ipcache?
- •9.24 Что значит ``Page faults with physical I/o: 4897'' ?
- •9.25 Что значит поле ignored в 'cache server list' ?
- •10. Контроль доступа
- •10.1 Введение
- •10.2 Как мне разрешить моим клиентам использовать кеш?
- •10.3 Как мне настроить Squid, чтобы он не кешировал определенный сервер?
- •10.4 Как мне организовать acl списка запрета?
- •10.5 Как мне блокировать доступ к кешу определенным пользователям и группам?
- •10.6 А у вас есть cgi-программа, позволяющая пользователям менять свой пароль доступа к прокси?
- •10.7 Есть ли способ осуществлять поиск ident только для определенного хоста и сравнивать результат со списком пользователей в squid.Conf?
- •10.8 Типичные ошибки
- •10.9 Я установил собственные контроли доступа, но они не работают! Почему?
- •10.10 Прокси-аутентификация и братские кеши
- •10.11 Какой самый простой способ запретить все адреса назначения кроме одного?
- •10.13 Squid не распознает мой поддомен
- •10.14 Почему Squid запрещает доступ к некоторым портам?
- •10.20 Могу ли я устанавливать acl-лы, основанные на mac-адресах, а не на ip?
- •10.21 Отладка acl
- •10.22 Могу ли я ограничить количество соединений для клиента?
- •10.23 Я пытаюсь запретить доступ к foo.Com, но это не срабатывает.
- •10.24 Я хочу изменить или создать собственное сообщение о ошибке.
- •10.25 Я хочу видеть локальную временную зону в сообщениях о ошибке
- •11. Решение проблем
- •11.1 Почему я получаю ``Proxy Access Denied?''
- •11.2 Я не могу заставить работать local_domain.Squidкеширует объекты с моих локальных серверов.
- •11.3 Я получаю Connection Refused, когда кеш пытается получить объект с братского кеша (sibling), хотя братский кеш считает, что он отдал объект моему кешу.
- •11.4 Кончаются файловые дескрипторы.
- •11.5 Что за странные строки о удалении объектов?
- •11.6 Могу ли заставить Windows nt ftp-сервер показывать директории в формате Unix?
- •11.7 Почему я получаю ``Ignoring miss from non-peer X.X.X.X?''
- •11.8 Dns lookups for domain names with underscores (_) always fail.
- •11.9 Почему Squid сообщает: ``Illegal character in hostname; underscores are not allowed?'
- •11.10 Почему я получаю запрет доступа от братского кеша ?
- •11.11 Cannot bind socket fd nn to *:8080 (125) Address already in use
- •11.12 IcpDetectClientClose: error XXX.XXX.XXX.XXX: (32) Broken pipe
- •11.13 IcpDetectClientClose: fd 135, 255 unexpected bytes
- •11.14 Does Squid work with ntlm Authentication?
- •11.15 Опция default parent не работает!
- •11.16 ``Hot Mail'' complains about: Intrusion Logged. Access denied.
- •11.17 Мой Squid становиться слишком медленным после того, как проработает некоторое время.
- •11.18 Warning: Failed to start 'dnsserver'
- •11.19 Как послать отчет о ошибке в Squid
- •11.20 Отладка Squid
- •11.21 Fatal: ipcache_init: dns name lookup tests failed
- •11.22 Fatal: Failed to make swap directory /var/spool/cache: (13) Permission denied
- •11.23 Fatal: Cannot open http Port
- •11.24 Fatal: All redirectors have exited!
- •11.25 Fatal: file_map_allocate: Exceeded filemap limit
- •11.26 Fatal: You've run out of swap file numbers.
- •11.27 I am using up over 95% of the filemap bits?!!
- •11.28 Fatal: Cannot open /usr/local/squid/logs/access.Log: (13) Permission denied
- •11.29 Когда я использую имя пользователя и пароль, я не имею доступа к некоторым файлам.
- •11.30 PingerOpen: icmp_sock: (13) Permission denied
- •11.31 Что такое петля передачи ?
- •11.32 Accept failure: (71) Protocol error
- •11.33 StoreSwapInFileOpened: ... Size mismatch
- •11.34 Почему я получаю fwdDispatch: Cannot retrieve 'https://www.Buy.Com/corp/ordertracking.Asp' ?
- •11.35 Squid не может получить url-ы типа http://3626046468/ab2/cybercards/moreinfo.Html
- •11.36 Я получаю большое количество ошибок типа ``uri has whitespace'' в моем cache.Log, что я должен делать ?
- •11.37 CommBind: Cannot bind socket fd 5 to 127.0.0.1:0: (49) Can't assign requested address
- •11.38 Unknown cache_dir type '/var/squid/cache'
- •11.39 Unrecognized: 'cache_dns_program /usr/local/squid/bin/dnsserver'
- •11.40 Is dns_defnames broken in 2.3.Stable1 and stable2?
- •11.41 What does sslReadClient: fd 14: read failure: (104) Connection reset by peer mean?
- •11.42 Что значит Connection refused?
- •11.43 Squid: error: no running copy
- •11.44 Fatal: getgrnam failed to find groupid for effective group 'nogroup'
- •11.45 ``Unsupported Request Method and Protocol'' for https urLs.
- •11.46 Squid использует 100% cpu
- •11.47 Webmin's cachemgr.Cgi убивает операционную систему
- •11.48 Segment Violation во время запуска или при первом запросе
- •11.49 UrlParse: Illegal character in hostname 'proxy.Mydomain.Com:8080proxy.Mydomain.Com'
- •11.50 Не работают запросы для инетрнациональных доменных имен
- •11.51 Почему иногда я получаю ``Zero Sized Reply''?
- •12. Как работает Squid?
- •12.1 Что такое кешируемые объекты?
- •12.2 Что такое пмс протокол?
- •12.3 Что такое dnsserver ?
- •12.4 Для чего предназначена программа ftpget ?
- •12,5 Ftp put не работает!
- •12.6 Что такое иерархии кэш-памяти? Какие родители, братья и сестры?
- •12.7 Что такое разрешение кеш алгоритм?
- •12,8 Над какими новыми возможностями сейчас работают разработчики Squid?
- •12,9 Расскажите подробнее о рабочих нагрузок интернет-трафика
- •12.10 Каковы компромиссы кэширования с системой кэш nlanr?
- •12.11 Где мне найти больше информации о файервол?
- •12.12 Что такое `` хранения lru истечения Возраст?''
- •12.13 Что такое `` Отказ побед на 1,01; Войдя в хит-Only-режиме в течение 5 минут''?
- •12.14 Перечитывает ли кальмар периодически свой файл конфигурации?
- •12.15 Как unlinkd работу?
- •12.16 Что такое икона url?
- •12.17 Как мне заставить моих обычных ftp-клиентов и спользовать Squid?
- •12.18 Почему Выберите время средние петли так высоко?
- •12.19 Как Squid дело с печеньем?
- •12.20 Как Squid решает, когда, чтобы обновить в кэше объект?
- •12.21 Что такое отложенное чтение ?
- •12.22 Почему входящий трафик моего кэша равным исходящий трафик?
- •12.23 Почему некоторые предметы не попали кэшировать?
- •12.24 Что поддержания активности соотношение означает?
- •12.25 Как работает кэш Squid-алгоритм замены работы?
- •12.26 Какие закрытых и открытых ключей?
- •12.27 Для чего нужна forw_via_db?
- •12.28 Посылает ли Squid пакеты порту 7 (эхо)? Если да, то почему?
- •12.29 Что значит `` предупреждение: Ответ от неизвестных имен [abcd]''?
- •12.30 Как Squid распространения кэш-файлов среди доступных каталогах?
- •12.31 Почему я вижу отрицательную Процент попадания байт?
- •12.32 Что означает сообщение `` Отключение использования закрытых ключей'' означает?
- •12.33 Что такое наполовину закрытый файловый дескриптор?
- •12.34 Что делает - Enable-кучи замену?
- •12.35 Почему действительный размер используемый размер файловой ситсемы больше, чем считает Squid?
- •12.36 Как работают positive_dns_ttl и negative_dns_ttl ?
- •12.37 Что значит swapin md5 несоответствие ?
- •12.38 Что означает не удалось распаковать файл подкачки данных мета ?
- •12.39 Почему не сделать Squid Ident поиска в режиме перехвата?
- •12.40 DnsSubmit: перегрузки очереди, отвергая бла
- •12.41 Что такое пассивные ftp-соединения?
- •13. Multicast
- •13.1 Что такое Multicast?
- •13.2 Как я могу знать, если я нахожусь на Mbone?
- •13.3 Мне следует использовать Multicast пмс?
- •13.4 Как мне настроить Squid для отправки Multicast icp запросы?
- •13.5 Как я знаю, что Multicast ttl использовать?
- •13.6 Как мне настроить Squid, чтобы получать и отвечать на Multicast пмс?
- •14. Системно-зависимые сверхестественности :)
- •14.1 Solaris
- •14.2 FreeBsd
- •14.5 Linux
- •14.7 Irix
- •15. Редиректоры
- •15.1 Что такое редиректор?
- •15.2 Почему используют редиректор?
- •15.3 Как это работает?
- •15.4 А примеры имеются ?
- •15.5 Can I use the redirector to return http redirect messages?
- •15.6 Fatal: All redirectors have exited!
- •15.7 Редиректор не срабатывает при повторной отработке ident
- •16. Кэш Сборники
- •16.1 Что такое кэш дайджест?
- •16.2 Как и почему они используются?
- •16.3 Что такое теория за кэш дайджесты?
- •16.4 Как размер кэша дайджест на Squid определяется?
- •16.5 Что хэш-функции (и сколько их) а Squid использовать?
- •16.6 Как объекты добавляются в кэш дайджест на Squid?
- •16,7 Ли Squid поддержки делеции в кэш дайджесты? Каковы различий / дельт?
- •16,8 Когда и как часто местные дайджест построили?
- •16.9 Как Кэш Дайджесты передаваться между сверстниками?
- •16.10 Как и где хранится кэш дайджесты?
- •16.11 Как Кэш Дайджест статистики в Cache Manager следует интерпретировать?
- •16.12 Какие ложные значения и как они должны быть обработаны?
- •16.13 Как Кэш Дайджест деятельности, связанной прослеживается / отлажена?
- •16.14 А как насчет пмс?
- •16.15 Есть ли Спецификация Cache Digest?
- •16.16 Можно ли будет шататься моменты времени, когда cache_digests извлекаются из сверстников?
- •17. Прозрачное кеширование/проксирование
- •17.1 Прозрачное кеширование для Solaris, SunOs, и bsd систем
- •17.2 Прозрачное кеширование на Linux 2.0 и ipfwadm
- •Этот метод поддерживает только протокол http, gopher и ftp не поддерживаются
- •17.3 Прозрачное кеширование на Linux 2.2 и ipchains
- •17.4 Прозрачное кеширование на Linux 2.4 и netfilter
- •17.5 Прозрачное кеширование и маршуртизаторы Cisco
- •17.6 Прозрачное кеширование на linux 2.0.29 и cisco ios 11.1
- •17.7 Кеш пытается соединится сам с собой ...
- •17.8 Прозрачное кеширование с FreeBsd
- •17.9 Прозрачное кеширование с сервером доступа acc Tigris digital
- •17.10 ``Connection reset by peer'' и Cisco policy routing
- •17.11 Wccp - Web Cache Coordination Protocol
- •Ios Version 11.X
- •Ios Version 12.X
- •17.13 А как насчет wccPv2?
- •17.14 Прозрачное проксирование с свитчами Foundry l4
- •18.3 Конфигурирование Squid 2.2
- •18.4 Конфигурирование Squid 2.1
- •18.5 Как я могу опрашивать Squid snmp Agent
- •18.6 Для чего я могу использовать snmp и Squid?
- •18.7 Как я могу использовать snmp со Squid?
- •18.8 Где я могу найти больше информации о Squid и snmp?
- •18.9 Мониторинг Squid при помощи mrtg
- •19. Squid версии 2
- •19.1 Какие новые возможности?
- •19.2 Как мне теперь настроить 'ssl_proxy'?
- •19.3 Logfile rotation doesn't work with Async I/o
- •19.4 Добавление нового диска для кеша
- •19.5 Squid 2 performs badly on Linux
- •19.6 Как мне настроить proxy authentication в Squid-2?
- •19.7 Почему proxy-auth отвергает всех пользователей в Squid-2.2?
- •19.8 Delay Pools
- •19.9 Могу ли я сохранить мой кеш при обновлении с версии 1.1 до 2?
- •19.10 Пользовательские сообщения о ошибках
- •19.11 Мой squid.Conf от версии 1.1 не работает!
- •20. Режим httpd-акселератора
- •20.1 Что такое режим httpd-акселератора?
- •20.2 Как мне это установить ?
- •20.3 Когда используется httpd-aкселератор, номер порта для редиректа неверен
- •21.5 Сервера идентификации
- •22. Diskd
- •22.1 Что такое diskd?
- •22.7 Как мне настроить распределенную память?
- •22.8 Иногда распределенная память и очереди сообщений не освобождаются, когда Squid завершает работу.
- •22.9 Что за параметры q1 и q2?
- •23. Аутентификация
- •23.1 Как в Squid работает прокси-аутентификация ?
- •23.2 Как мне использовать аутентификацию для контроля доступа?
- •23.3 Кеширует ли Squid запросы аутентификации?
- •23.4 А пароли передаются открытым текстом или шифруются?
- •23.5 Могу ли я использовать Winbind аутентификацию ?
- •24. Термины и определения
- •24.1 Сосед (Neighbor)
- •24.2 Регулярные выражения
- •25. Беспокойство о безопасности
- •25.1 Прокси открытого доступа
- •25.2 Релай почты
19.8 Delay Pools
от David Luyer.
Информация представленная здесь верна для версии 2.2. Настоятельно рекомендуется использовать как минимум версию Squid 2.2, если вы хотите пременять delay pools.
Delay pools предосталвяет способ органичения ширины полосы пропускания для определенных запросов на основе любого списка критериев. The idea came from a Western Australian university who wanted to restrict student traffic costs (without affecting staff traffic, and still getting cache and local peering hits at full speed). There was some early Squid 1.0 code by Central Network Services at Murdoch University, which I then developed (at the University of Western Australia) into a much more complex patch for Squid 1.0 called ``DELAY_HACK.'' I then tried to code it in a much cleaner style and with slightly more generic options than I personally needed, and called this ``delay pools'' in Squid 2. I almost completely recoded this in Squid 2.2 to provide the greater flexibility requested by people using the feature.
Чтобы delay pools заработал в Squid 2.2, вам необходимо использовать опцию --enable-delay-pools в configure перед компиляцией.
Терминология для этой секции FAQ:
pool
набор групп ведер соответсвующий данному классу
bucket group
a group of buckets within a pool, such as the per-host bucket group, the per-network bucket group or the aggregate bucket group (the aggregate bucket group is actually a single bucket)
bucket
an individual delay bucket represents a traffic allocation which is replenished at a given rate (up to a given limit) and causes traffic to be delayed when empty
class
the class of a delay pool determines how the delay is applied, ie, whether the different client IPs are treated seperately or as a group (or both)
class 1
класс 1 для delay pool contains a single unified bucket, которые применяются для всех запросов с хоста, указанного в пуле.
class 2
a class 2 delay pool contains one unified bucket and 255 buckets, one for each host on an 8-bit network (IPv4 class C)
class 3
contains 255 buckets for the subnets in a 16-bit network, and individual buckets for every host on these networks (IPv4 class B)
Delay pools позволяет органичивать трафик для клиентов или групп клиентов различными способами:
can specify peer hosts which aren't affected by delay pools, ie, local peering or other 'free' traffic (with the no-delay peer option).
delay behavior is selected by ACLs (low and high priority traffic, staff vs students or student vs authenticated student or so on).
each group of users has a number of buckets, a bucket has an amount coming into it in a second and a maximum amount it can grow to; when it reaches zero, objects reads are deferred until one of the object's clients has some traffic allowance.
any number of pools can be configured with a given class and any set of limits within the pools can be disabled, for example you might only want to use the aggregate and per-host bucket groups of class 3, not the per-network one.
This allows options such as creating a number of class 1 delay pools and allowing a certain amount of bandwidth to given object types (by using URL regular expressions or similar), and many other uses I'm sure I haven't even though of beyond the original fair balancing of a relatively small traffic allocation across a large number of users.
Есть некоторые органичения для delay pools:
delay pools are incompatible with slow aborts; quick abort should be set fairly low to prevent objects being retrived at full speed once there are no clients requesting them (as the traffic allocation is based on the current clients, and when there are no clients attached to the object there is no way to determine the traffic allocation).
delay pools only limits the actual data transferred and is not inclusive of overheads such as TCP overheads, ICP, DNS, icmp pings, etc.
it is possible for one connection or a small number of connections to take all the bandwidth from a given bucket and the other connections to be starved completely, which can be a major problem if there are a number of large objects being transferred and the parameters are set in a way that a few large objects will cause all clients to be starved (potentially fixed by a currently experimental patch).
Как я могу ограничить общую ширину канала для Squid скажем в, 512 Kbps?
acl all src 0.0.0.0/0.0.0.0 # мог уже быть определен
delay_pools 1
delay_class 1 1
delay_access 1 allow all
delay_parameters 1 64000/64000 # 512 kbits == 64 kbytes per second
Для пояснений указаных директив смотрите файл конфигурации.
The 1 second buffer (max = restore = 64kbytes/sec) is because a limit is requested, and no responsiveness to a busrt is requested. If you want it to be able to respond to a burst, increase the aggregate_max to a larger value, and traffic bursts will be handled. Рекомендуется, чтобы максимальное значение было как минимум в два раза больше значения restore - if there is only a single object being downloaded, sometimes the download rate will fall below the requested throughput as the bucket is not empty when it comes to be replenished.
Как ограничить еденичное соединение до 128 Кб/сек?
Вы не можете органичить скорость еденичного HTTP-запроса. Вы можете органичить определенный хост на некоторую полосу пропускания. Чтобы ограничить определенный хост, создайтеacl для этого хоста, используя пример, приведенный выше. Чтобы органичить группу хостов, вы должны указать delay pool класса 2 или 3. К примеру:
acl only128kusers src 192.168.1.0/255.255.192.0
acl all src 0.0.0.0/0.0.0.0
delay_pools 1
delay_class 1 3
delay_access 1 allow only128kusers
delay_access 1 deny all
delay_parameters 1 64000/64000 -1/-1 16000/64000
Для пояснений указаных директив смотрите файл конфигурации.
Представленное выше решение описывает кеш, оперирующий каналом в 512кбит/с, но каждый IP-адрес получает только 128кбит/с.
Как вы персонифицируете использование delay pools?
У нас есть шесть локальных кешей, все они используют опции 'proxy-only no-delay' т.к. это быстрые машины, соединенные посредством сети fast ethernet и сети microwave (ATM).
Для локального доступа мы используем ACL dstdomain и b for delay pool exceptions we use a dst ACL as well since the delay pool ACL processing is done using "fast lookups", which means (among other things) it won't wait for a DNS lookup if it would need one.
Наш прокси имеет два виртуальных интерфейса, один из которых используется для аутентификации соединений машин из отдела не оплачивающего траффик, а второй используется для delay pools. Итак, пользователям основной Unix-системы разрешено выбирать между быстрым и медленным трафиком, но необходимо платить за любой их трафик при использовании быстрого кеша. Запросы идентификации отключены при доступе через медленный кеш за ненадобностью. Медленные соединения задерживаются с использованием delay pool класса 3, чтобы разделять как отделы так и пользователей. Мы распознаем пользователей Lynx на главном хосте и группируем их в один delay bucket, т.к. они в основном просматривают текстовые страницы и врядли будут источником проблем. Если бы это произошло, то мы могли бы поместить эти хосты в delay pool класса 1, чтобы усилить структурирование.
I prefer using a slow restore rate and a large maximum rate to give preference to people who are looking at web pages as their individual bucket fills while they are reading, and those downloading large objects are disadvantaged. This depends on which clients you believe are more important. Also, one individual 8 bit network (a residential college) have paid extra to get more bandwidth.
Вот соответствующая часть моего конфига (IP-адреса и т.п. изменены):
# ACL definitions
# Local network definitions, domains a.net, b.net
acl LOCAL-NET dstdomain a.net b.net
# Local network; nets 64 - 127. Also nearby network class A, 10.
acl LOCAL-IP dst 192.168.64.0/255.255.192.0 10.0.0.0/255.0.0.0
# Virtual i/f used for slow access
acl virtual_slowcache myip 192.168.100.13/255.255.255.255
# All permitted slow access, nets 96 - 127
acl slownets src 192.168.96.0/255.255.224.0
# Special 'fast' slow access, net 123
acl fast_slow src 192.168.123.0/255.255.255.0
# User hosts
acl my_user_hosts src 192.168.100.2/255.255.255.254
# "All" ACL
acl all src 0.0.0.0/0.0.0.0
# Don't need ident lookups for billing on (free) slow cache
ident_lookup_access allow my_user_hosts !virtual_slowcache
ident_lookup_access deny all
# Security access checks
http_access [...]
# These people get in for slow cache access
http_access allow virtual_slowcache slownets
http_access deny virtual_slowcache
# Access checks for main cache
http_access [...]
# Delay definitions (read config file for clarification)
delay_pools 2
delay_initial_bucket_level 50
delay_class 1 3
delay_access 1 allow virtual_slowcache !LOCAL-NET !LOCAL-IP !fast_slow
delay_access 1 deny all
delay_parameters 1 8192/131072 1024/65536 256/32768
delay_class 2 2
delay_access 2 allow virtual_slowcache !LOCAL-NET !LOCAL-IP fast_slow
delay_access 2 deny all
delay_parameters 2 2048/65536 512/32768
Те же самые настройки применяются для некоторых отделов использующих delay pools класса 2, чтобы позволить им более гибко управлять доступом для различных лабораторий и студентов.
Где еще я могу найти информацию о delay pools?
Все также хорошо задокументировано в конфигурационном файле, есть примеры. Т.к. люди часто теряют свой конфиг, то вот копия соответствующей его секции.
# DELAY POOL PARAMETERS (all require DELAY_POOLS compilation option)
# -----------------------------------------------------------------------------
# TAG: delay_pools
# This represents the number of delay pools to be used. For example,
# if you have one class 2 delay pool and one class 3 delays pool, you
# have a total of 2 delay pools.
#
# To enable this option, you must use --enable-delay-pools with the
# configure script.
#delay_pools 0
# TAG: delay_class
# This defines the class of each delay pool. There must be exactly one
# delay_class line for each delay pool. For example, to define two
# delay pools, one of class 2 and one of class 3, the settings above
# and here would be:
#
#delay_pools 2 # 2 delay pools
#delay_class 1 2 # pool 1 is a class 2 pool
#delay_class 2 3 # pool 2 is a class 3 pool
#
# The delay pool classes are:
#
# class 1 Everything is limited by a single aggregate
# bucket.
#
# class 2 Everything is limited by a single aggregate
# bucket as well as an "individual" bucket chosen
# from bits 25 through 32 of the IP address.
#
# class 3 Everything is limited by a single aggregate
# bucket as well as a "network" bucket chosen
# from bits 17 through 24 of the IP address and a
# "individual" bucket chosen from bits 17 through
# 32 of the IP address.
#
# NOTE: If an IP address is a.b.c.d
# -> bits 25 through 32 are "d"
# -> bits 17 through 24 are "c"
# -> bits 17 through 32 are "c * 256 + d"
# TAG: delay_access
# This is used to determine which delay pool a request falls into.
# The first matched delay pool is always used, ie, if a request falls
# into delay pool number one, no more delay are checked, otherwise the
# rest are checked in order of their delay pool number until they have
# all been checked. For example, if you want some_big_clients in delay
# pool 1 and lotsa_little_clients in delay pool 2:
#
#delay_access 1 allow some_big_clients
#delay_access 1 deny all
#delay_access 2 allow lotsa_little_clients
#delay_access 2 deny all
# TAG: delay_parameters
# This defines the parameters for a delay pool. Each delay pool has
# a number of "buckets" associated with it, as explained in the
# description of delay_class. For a class 1 delay pool, the syntax is:
#
#delay_parameters pool aggregate
#
# For a class 2 delay pool:
#
#delay_parameters pool aggregate individual
#
# For a class 3 delay pool:
#
#delay_parameters pool aggregate network individual
#
# The variables here are:
#
# pool a pool number - ie, a number between 1 and the
# number specified in delay_pools as used in
# delay_class lines.
#
# aggregate the "delay parameters" for the aggregate bucket
# (class 1, 2, 3).
#
# individual the "delay parameters" for the individual
# buckets (class 2, 3).
#
# network the "delay parameters" for the network buckets
# (class 3).
#
# A pair of delay parameters is written restore/maximum, where restore is
# the number of bytes (not bits - modem and network speeds are usually
# quoted in bits) per second placed into the bucket, and maximum is the
# maximum number of bytes which can be in the bucket at any time.
#
# For example, if delay pool number 1 is a class 2 delay pool as in the
# above example, and is being used to strictly limit each host to 64kbps
# (plus overheads), with no overall limit, the line is:
#
#delay_parameters 1 -1/-1 8000/8000
#
# Note that the figure -1 is used to represent "unlimited".
#
# And, if delay pool number 2 is a class 3 delay pool as in the above
# example, and you want to limit it to a total of 256kbps (strict limit)
# with each 8-bit network permitted 64kbps (strict limit) and each
# individual host permitted 4800bps with a bucket maximum size of 64kb
# to permit a decent web page to be downloaded at a decent speed
# (if the network is not being limited due to overuse) but slow down
# large downloads more significantly:
#
#delay_parameters 2 32000/32000 8000/8000 600/64000
#
# There must be one delay_parameters line for each delay pool.
# TAG: delay_initial_bucket_level (percent, 0-100)
# The initial bucket percentage is used to determine how much is put
# in each bucket when squid starts, is reconfigured, or first notices
# a host accessing it (in class 2 and class 3, individual hosts and
# networks only have buckets associated with them once they have been
# "seen" by squid).
#
#delay_initial_bucket_level 50