Для понимания работы программы следует рассмотреть внутреннюю архитектуру.
-
Рассмотрим простой вариант: по одному сетевому интерфейсу для внутренней и внешней cети.
Имеется два основных программных компонента сервера - сетевой драйвер и сервис.
Сетевой драйвер работает на уровне ядра операционной системы. Он включается между драйвером сетевой карты и протоколом TCP/IP, и через него пропускается весь трафик. Сетевой драйвер имеет возможность этот трафик пропустить, отфильтровать, а также задержать в своей очереди, что делается для выполнения задачи регулирования скорости (шейпер). Кроме того, часть трафика снимается и передается сервису программы для его дальнейшего анализа.
У сетевой карты может быть включен режим "прослушки" (promiscuous mode). В этом случае сетевая карта будет принимать не только свои пакеты, но и все другие. При использовании в сети HUB (концентраторов) или управляемых коммутаторов позволяет реализовать учет всего трафика, циркулирующего в сети, а не только проходящего через сервер.
Система загружает по отдельному экземпляру драйвера на каждый интерфейс. В настройках сетевых интерфейсов этот драйвер присутствует в списке сетевых служб, и имеется возможность его включить или выгрузить индивидуально для каждого интерфейса, сняв соответствующую галку привязки. Если драйвер от интерфейса отвязать, то программа с ним работать не будет. Отвязывать драйвер от интерфейса следует:
• | При несовместимости драйвера программы с драйвером сетевой карты. Это позволит запустить и настроить работу программы хотя бы в ограниченном варианте. |
• | На сетевом интерфейсе нет IP-трафика. Например, только PPPoE. В этом случае драйвер можно отключить, что сэкономит немного оперативной памяти и уменьшит нагрузку на процессор. |
• | Интерфейс не используется в программе. |
У WAN-интерфейсов имеются особенности: для них система загружает один общий сетевой драйвер. В связи с этим в программе реализована отдельная логика работы с несколькими WAN-интерфейсами, и есть некоторые ограничения по их применению (смотрите раздел "Интерфейсы и сети").
Драйвер программы решает следующие основные задачи:
• | Маркировка трафика. Для внутреннего интерфейса это тип трафика (внутренний транзитный, внутренний на сам сервер, внешний), соотнесение трафика пользователям (авторизованный или неавторизованный). Пакеты метятся атрибутами: тарифы, бесплатный, ограничения по скорости, маршрутизация и т.д. |
• | Внутренняя буферизация трафика, передаваемого на обработку сервиса программы. Важная функция, т.к. сервис программы в силу загруженности системы бывает не в состоянии вовремя забрать все данные. В итоге переполнение буфера повлечет потери данных. Размер буфера задается в настройках программы, и эта настройка может быть использована для улучшения работы программы в особых случаях. |
• | Фильтрация трафика на основе правил (фильтров). Здесь также реализуется логика внешнего и внутреннего сетевого экрана. |
• | Динамическая фильтрация для UDP и FTP-DATA. |
• | Ограничение скорости. Осуществляется путем задержки пакетов в очереди. Для решения этой задачи производится измерение скорости передачи данных. |
• | Перенаправление (редирект) TCP-соединений. Механизм применяется для реализации функции Transparent Proxy. |
• | Переадресация пакетов по виртуальным маршрутам. Используется для реализации функции Advanced Routing. |
• | Учет трафика по отдельным TCP-сессиям. Учитывается трафик в прокси- и SOCKS-сервере, в так называемом Kernel режиме учета. |
• | Блокировка внешних сетей при остановке Traffic Inspector. |
• | Определение тега VLAN для принимаемого пакета, а также добавление необходимых тегов для отправляемых пакетов. |
Для анализа работы драйвера с него снимаются статистические данные - различные счетчики пакетов и т.д. Данные доступны в списке интерфейсов консоли, а также отдельно в разделе "Диагностики".
Текущая страница справки: http://help.smart-soft.ru/doc20/index.html?intstruct.htm