Q1. Как заставить OOPS не ходить DIRECT-ом?
A1. Есть два способа:
    1) использовать директиву parent (не ту, что в описании icp-peer-ов,
       а ту, которая 'parent xxx.yyy.zzz 3128')
       В этом случае 
       a) ВСЕ запросы (кроме попадающих в local-domain или local-networks)
	  будут удовлетворяться через parent-a.
       б) никакие icp-запросы не посылаются
       в) если в oops.cfg не используется директива local-networks,
          то и никаких попыток отрезолвить имена не будет.
       г) Запросы к хостам, попадающим в local-domain или local-networks
          удовлетворяются напрямую.

    2) Использовать icp-peer с описанием parent. В этом случае при получении
       запроса от клиента, посылается icp-запрос ко всем icp-peer-ам (как
       к parent-ам, так и к sibling-ам). При получении от кого-либо ответа
       'HIT' - идем к нему. При получении только 'MISS'-ов - идем к паренту,
       приславшему ответ 'MISS' раньше всех. И только при отсутствии
       каких-бы то ни-было ответов от парентов идем напрямую. Если
       предположить что последний вариант редок - то можно считать что oops
       будет всегда идти через самого быстрого парента.

Q2. Собрал успешно, запустил и в oops.log увидел следующее:
     -------------------------------------------------------
    [0x400]db_open: Invalid argument                              
    [0x400]oops 1.2d Started                                      
    [0x400]DB engine by Sleepycat Software: DB 2.4.14: (6/2/98)   
    При этом в кэш на диске ничего не пишется. Почему и что делать?
A2. Проблема в том, что OOPS был собран со старой версией библиотеки
    DB. Нужно просто установить новую версию, запустить configure и
    make. Взять свежую версию можно с www.sleepycat.com.


Q3. Я отформатировал storages которые в сумме должны были-бы занять 1G,
    но что-то обьем свободного места на диске слабо изменился. Так и должно
    быть?
A3. Да, во время форматирования делается следующее:
    1) создается файл хранилища, если он еще не был создан.
    2) создается 'супер-блок' и бит-мап, которые хранятся в начале файла
    3) делается seek на последний байт файла хранилища и записывается один
       байт. Т.е. - отформатированное таким способом хранилище представляет
       собой "дырку" в файловой системе, которая будет заполняться по мере
       сохранения документов.
    Если такое поведение не подходит - можно создать хранилища заранее с
    помошью команды
	dd if=/dev/null of=storage ...
    В этом случае Вы сразу зарезервируете необходимое место.
    После такого dd не забудьте всё-таки запустить oops -z на это
    хранилище - ведь dd не создает битмап и суперблок...

Q3. Как настроить транспарент прокси?
A3. Внимание: транспарент появился только начиная с версии 1.2f

    Настройка состоит из двух частей - настройка форвардинга пакетов
    от маршрутизатора в сторону прокси-сервера и настройка самого
    прокси-сервера. Первая часть настроек ничем не отличается от того,
    что нужно делать в этом плане для сквида. Можно смотреть FAQ по сквиду,
    можно на http://www.lexa.ru:8100/lexa/transparent-proxy.html

    Вторая часть, конечно отличается.

    Во-первых, в oops.cfg нужно расскоментировать конфиг модуля transparent.
    Выглядеть он будет примерно так:

	module transparent {
		myport 3128
	}

    myport - это тот порт, на который будут перенаправляться пакеты с
    маршрутизатора.

    Во-вторых, в описании группы, в которую попадают ваши пользователи в
    строку redir_mods добавить слово transparent. Т.е. эта строка будет
    выглядеть, например так (в простейшем случае):

	redir_mods transparent;

    или так (это в случае, если Вы используете все три модуля редиректоров):

	redir_mods	transparent redir accel;

    Если есть возможность - установите пакет ipfilter на машине, где
    работает прокси - это позволит обслуживать запросы, не содержащие
    заголовка 'Host:'. Oops автоматически определяет присутствие или
    отсутствие установленного ipfilter во время процедуры configure

    Всё.

    Признаком неработы являются ответы от прокси "Bad formed URL".  Для
    поиска неработающего звена:

    1.	выполните команду telnet proxyhost myport (подставив правильные
	значения) и введите

	GET / HTTP/1.0
	Host: www.cnn.com
	

	В ответ должна появиться страница CNN (CNN взято для примера).
	Этот шаг проверки можно выполнить даже до настройки форвардинга
	пакетов.
    2. 	проверьте tcpdump-ом или snoop-ом что пакеты форвардятся именно на тот
	порт, который указан в myport.

Q4. Как определеляется в какую группу попадает тот или иной хост?
A4. В описании каждой группы есть директива networks или networks_acl
    (или обе). networks_acl просматриваются первыми в том порядке, в котором
    они появляются в oops.cfg. Если попали - используется та группа,
    в которй находится подошедшая строка networks_acl.

    Если хост не попал ни в один из networks_acl - смотрим в networks.
    порядок просмотра идет в сторону уменьшени длины маски - т.е.
    сначала просматриваются наиболее "специфичные" сети, потом - наименее.
    Например сети 

	0/0
	192.168.0.0/24
	192.168.0.0/25

    будут просмотрены в следующем порядке:

	192.168.0.0/25
	192.168.0.0/24
	0/0

    и хост 192.168.0.1 попадет в группу, содержащую 192.168.0.0/25,
    независимо от порядка появления этих групп в конфиге.

Q5. Какая платформа считается наилучшей для OOPS?
Q6. Основная платформа разработки - Solaris, и, я думаю, это и есть наилучшая
    платформа (как sparc, так и x86). Следующая по предпочтительности (и
    очень близкая) - FreeBSD. К сожалению, на сегодняшний день Вы можете
    использовать OOPS под Linux-ом только до определенного уровня нагрузки.
    Причина заключается в том, что библиотека linuxthreads использует модель
    "один трид - один процесс", и oops использует модель "одно соединение -
    один трид".