6.5.8. Действие QUEUE
6.5.8. Действие QUEUE
Действие QUEUE ставит пакет в очередь на обработку пользовательскому процессу. Оно может быть использовано для нужд учета, проксирования или дополнительной фильтрации пакетов.
От переводчика: Далее автор пространно рассуждает о том, что обсуждение данной темы далеко выходит за рамки документа и пр., поэтому, не мудрствуя лукаво, приведу здесь выдержку из http://antonio.mccinet.ru/protection/iptables_howto.html в переводе Евгения Данильченко aka virii5, eugene@kriljon.ru
"...Для того чтобы эта цель была полезна, необходимы еще два компонента:
«queue handler» – обработчик очереди, который выполняет работу по передаче пакетов между ядром и пользовательским приложением; и
пользовательское приложение которое будет получать, возможно обрабатывать, и решать судьбу пакетов.
Стандартный обработчик очереди для IPv4 – модуль ip-queue, который распространяется с ядром и помечен как экспериментальный. Ниже дан пример, как можно использовать iptables для передачи пакетов в пользовательское приложение:
# modprobe iptable_filter # modprobe ip_queue # iptables -A OUTPUT -p icmp -j QUEUE
С этим правилом, созданные локально пакеты ICMP типа (такие, что создаются скажем при помощи команды ping) попадают в модуль ip_queue, который затем пытается передать их в пользовательское приложение. Если ни одно из таких приложений не найдено, пакеты сбрасываются. Чтобы написать пользовательскую программу обработки пакетов, используйте libipq API. Оно распространяется с пакетом iptables. Примеры можно найти в testsuite tools (например redirect.c) на CVS. Статус ip_queue можно проверить с помощью: /proc/net/ip_queue Максимальную длинну очереди (то есть, число пакетов передаваемых в пользовательское приложение без подтверждения обработки) можно контролировать с помощью: /proc/sys/net/ipv4/ip_queue_maxlen По умолчанию – максимальная длинна очереди равна 1024. Как только этот предел достигается, новые пакеты будут сбрасываться, пока очередь не снизиться ниже данного предела. Хорошие протоколы, такие как TCP интерпретируют сброшенные пакеты как перегруженность канала передачи, и успешно с этим справляются (насколько я помню, пакет будет просто переслан заново удаленной стороной, прим. перевод.). Однако, может потребоваться некоторого рода эксперементирование, чтобы определить оптимальную длину очереди в каждом конкретном случае, если по умолчанию очередь слишком мала..."
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Действие
Действие Этот параметр устанавливает число страниц из любой базы данных, которое может одновременно находиться в кеше. Если вы увеличиваете это значение. InterBase поместит больше страниц из каждой базы данных в кеш. По умолчанию SuperServer помещает в кеш 2048 страниц из каждой
Действие
Действие Устанавливает приоритет для SuperServer на Windows/NT/2000. Значение 2 этого параметра устанавливает высокий приоритет (HIGH_PRIORITY_CLASS) серверному процессу InterBase - ibserver.exe. Все остальные значения будут устанавливать серверному процессу InterBase значения нормального приоритета
Действие
Действие Этот параметр устанавливает размер области разделяемой памяти, которая используется в Windows-системах для того, чтобы устанавливать связь между сервером и клиентом, запущенным на той же машине (локальное соединение). Размер по умолчанию - 4
Действие
Действие Этот параметр устанавливает ограничения размера рабочей физической памяти (working size), доступно SuperServer на платформе Windows/NT/2000. Параметр измеряется в однокилобайтовых блоках. По умолчанию оба параметра имеют значение 0, что означает "нет
Действие
Действие Устанавливает состояние блокировки 1 - "Истина", включает сортировку блокировок; 0 - "Ложь", и выключает режим сортировки блокировок. По умолчанию сортировка блокировок
Действие
Действие Этот параметр определяет число секунд, в течение которых менеджер блокировок будет ожидать разрешения обнаруженного конфликта, а по истечении этого срока конфликт будет рассмотрен как потенциальный deadlock (взаимная
Действие
Действие Для архитектуры SuperServer этот параметр не производит никакого действия В архитекторе Classic только один клиент одновременно может обращаться к таблице блокировок Доступ к таблице блокировок определяется мьютексом Запрос мьютекса может быть либо условным, когда
Действие
Действие Устанавливает время ожидания (тайм-аут) соединения. По умолчанию— 180
Действие
Действие Этот параметр определяет, насколько часто будут посылаться фиктивные запросы для проверки тоо, что клиент все еще работaei I lo умолчанию эю 60
Действие
Действие Этот параметр устанавливает максимальный размер пакетов TCP, используемых при обмене между клиентом и сервером. Возможны значения от 1448 до 32768
Работа с типом Queue
Работа с типом Queue Тип Queue (очередь) – это контейнер, гарантирующий размещение элементов по правилу "первым прибыл – первым обслужен". К сожалению, люди сталкиваются с очередями повсеместно: очереди в банке, кинотеатре, по утрам к автомату, продающему кофе, и т.д. При
Очередь (Queue)
Очередь (Queue) Любая последовательность, поддерживающая операции front, push_back и pop_front, может использоваться для модификации queue. В частности, могут использоваться list и deque.template ‹class Container›class queue { friend bool operator==(const queue‹Container›& х, const queue‹Container›& y); friend bool operator‹(const
Очередь с приоритетами (Priority queue)
Очередь с приоритетами (Priority queue) Любая последовательность, с итератором произвольного доступа и поддерживающая операции front, push_back и pop_front, может использоваться для модификации priority_queue. В частности, могут использоваться vector и deque.template ‹class Container, class Compare = less‹Container::value_type›
16.1.1. Определения шаблонов классов Queue и QueueItem
16.1.1. Определения шаблонов классов Queue и QueueItem Ниже представлено определение шаблона класса Queue. Оно помещено в заголовочный файл Queue.h вместе с определением шаблона QueueItem:#ifndef QUEUE_H#define QUEUE_H// объявление QueueItemtemplate class T class QueueItem;template class Typeclass Queue {public:Queue() : front( 0 ), back ( 0 ) { }~Queue();Type&
16.3.1. Функции-члены шаблонов Queue и QueueItem
16.3.1. Функции-члены шаблонов Queue и QueueItem Чтобы понять, как определяются и используются функции-члены шаблонов классов, продолжим изучение шаблонов Queue и QueueItem:template class Typeclass Queue {public:Queue() : front( 0 ), back ( 0 ) { }~Queue();Type& remove();void add( const Type & );bool is_empty() const {return front == 0;}private:QueueItem Type
16.4.1. Объявления друзей в шаблонах Queue и QueueItem
16.4.1. Объявления друзей в шаблонах Queue и QueueItem Поскольку QueueItem не предназначен для непосредственного использования в вызывающей программе, то объявление конструктора этого класса помещено в закрытую секцию шаблона. Теперь класс Queue необходимо объявить другом QueueItem, чтобы