Программный комплекс NeTAMS предназначен для учета и управления трафиком в вашей IP–сети передачи данных. Он работает на сервере под управлением операционных систем Linux, FreeBSD или Solaris и занимается непрерывным сбором, анализом, фильтрацией и отображением статиски о передаваемой в вашей локальной сети информации. NeTAMS выполнен в виде монолитного процесса–демона и написан на языке C/C++ в виде многопоточного приложения. Он состоит из следующих компонентов (которые здесь будет принято называть сервисами):
processor хранит в себе полные сведения обо всех объектах, подлежащих учету (IP–адреса, подсети), политиках учета, организует передачу сообщений между другими сервисами
data–source поставляет сервису processor данные о прошедшем трафике
storage хранит статистическую информацию, частично конфигурационную информацию
server обеспечивает интерактивное взаимодействие работающей программы с администратором и внешними скриптами через telnet–подобный API
scheduler, html, quota, billing и т.д. обеспечивают вторичные функции обработки статистики, такие как поддержка квот, профилей пользователей биллинга, статических HTML–страниц и прочее.
Поскольку первичным источником информации о трафике является IP–пакет, то основным объектом, статистика по которому учитывается, является IP–адрес. Совместно с адресом хранятся правила (политики) учета и фильтрации, ключ БД и другая информация, совместно образуя единую учетную единицу, или юнит (NetUnit). В настоящий момент поддерживаются следующие типы юнитов:
host — характеризуется единственным IP–адресом
cluster — характеризуется набором (до 12) IP–адресов
net — характеризуется адресом подсети и сетевой маской
user — то же, что и тип host, однако может нести дополнительные параметры, например адрес электронной почты для уведомления или пароль
group — представляет собой логическую группу (объединение) любого количества юнитов любого типа, в том числе и других групп (могут быть вложенными)
Информация о прошедшем трафике может поставляться сервису data–source от операционной системы или от внешнего устройства/приложения. Операционная система может предоставлять механизм перехвата (divert, ipq) и/или копирования (tee, ulog) проходящих через ядро пакетов userland–приложению, каковым является NeTAMS, или отслеживать пакеты, проходящие «мимо» или «через» сетевой интерфейс при помощи библиотеки libpcap. С другой стороны, исходная информация о прошедшем трафике может быть сгенерирована в виде потока сообщений протокола Cisco NetFlow установленным в сети маршрутизатором Cisco или одной из множества свободно доступных программ, снимающих статистику и генерирующих потоки NetFlow. Среди них fprobe (http://www.fprobe.org), ng_netflow (только FreeBSD, /usr/ports/net/ng_netflow), ipfw2netflow и flowprobe (входят в комплект поставки NeTAMS).
Ниже приведен список доступных типов data–source в зависимости от используемой операционной системы
Метода захвата пакетов | Linux | FreeBSD | Solaris |
Перехват пакетов у ядра ОС | IPQ | IPFW divert | |
Копирование пакетов из ядра ОС | IPFW tee | ||
Копирование пакетов, проходящих через сетевой интерфейс | libpcap | libpcap | libpcap |
Внешний источник NetFlow | + | + | + |
Источник NetFlow на этом же компьютере | flowprobe | flowprobe | flowprobe |
ulog2netflow | ipfw2netflow | ||
ng_netflow | |||
Модуль NETGRAPH | + |
Для обеспечения сохранности информации, выполнения поиска, отображения суммарная статистика попадает сервису storage, который сохраняет ее в базе данных. На текущий момент поддерживаются четыре типа хранилищ:
unix hash (Berkley DB)
MySQL (версии 4.0.х и выше)
PostgresSQL
Oracle
Обычно unix hash уже присутствует в операционной системе (его, например, использует sendmail), что упрощает инсталляцию, однако скорость работы, надежность и функциональность оставляет желать лучшего. Рекомендуется использовать SQL–базу данных.
Один экземпляр NeTAMS может иметь несколько настроенных и одновременно работающих сервисов data–source и storage.