Netflow — собрать и показать

23 сентября 2016
Технологии
Netflow — собрать и показать
Любая система DPI, анализируя трафик, создает отчеты по заданным параметрам (протокол, приложение, абонент, расположение и другие), но эти отчеты необходимо выгружать и визуализировать. Для этих целей используется NetFlow – сетевой протокол, предназначенный для учета сетевого трафика, разработанный компанией Cisco Systems.

Протокол является промышленным стандартом, и его поддерживают не только устройства Cisco, но и многие другие. Это позволяет использовать его для сбора статистики с DPI-платформы.

Кратко о NetFlow

Netflow позволяет анализировать сетевой трафик на уровне сеансов, делая запись о каждой транзакции TCP/IP, что предоставляет довольно подробную статистику. На текущий момент существуют две версии Netflow – 5 и 9. На основе версии 9 был разработан открытый стандарт под названием IPFIX. Также в этой версии поддерживаются дополнительные поля, такие как заголовки IPv6, метки потоков MPLS и адрес шлюза BGP.

Для использования протокола NetFlow необходимы следующие компоненты:

  • Сенсор – собирает статистику по проходящему через него трафику. Обычно это L3-коммутатор или маршрутизатор, хотя можно использовать и отдельно стоящие сенсоры, получающие данные путем зеркалирования порта коммутатора.
  • Коллектор – собирает получаемые от сенсора данные и помещает их в хранилище.
  • Анализатор – выполняет анализ собранных коллектором данных и формирует пригодные для чтения человеком отчеты (часто в виде графиков).

схема netflow

Сенсор выделяет из трафика наборы пакетов, проходящие в одном направлении, – потоки. В коллектор отправляются завершенные или текущие потоки с настроенной периодичностью.

Собранная информация имеет вид записей, содержащих следующие параметры (для версии 5):

  • номер версии протокола
  • номер записи
  • входящий и исходящий сетевой интерфейс
  • время начала и конца потока
  • количество байт и пакетов в потоке
  • адрес источника и назначения
  • порт источника и назначения
  • номер протокола IP
  • значение Type of Service
  • для TCP-соединений – все наблюдаемые в течение соединения флаги
  • адрес шлюза
  • маски подсети источника и назначения.

Из коллектора данные поступают на анализатор (систему обработки и визуализации), который должен понимать формат входящего файла от коллектора и показывать содержащуюся в нем информацию в виде отчетов и графиков.

NetFlow для DPI

С систем DPI достаточно экспортировать статистику по протоколам и направлениям в формате NetFlow 5, так как он наиболее распространен и поддерживается большинством бесплатных и коммерческих средств для сбора и анализа статистики.

Передача DPI-информации в формате NetFlow 5 имеет ряд особенностей:

  • Для передачи информации об используемом протоколе используется поле dstport (номер порта). Когда это возможно, используется номер порта, закрепленный за протоколом ассоциацией IANA, но для протоколов со свободным номером (торренты, скайп и т. п.) выделен специальный номер в верхнем диапазоне (49152–65534), зарезервированном IANA для приватных портов. Если протокол определить не удалось, ему назначается номер порта 65535.
  • Статистика по протоколам передается в агрегированном виде, то есть DPI накапливает статистику по протоколу, объединяя информацию по разным сессиям, а потом с заданной периодичностью передает ее на коллектор. Это позволяет существенно снизить объем передаваемой информации.
  • Информация о направлениях передается в поле dst_as (номер автономной системы).
  • Статистика по направлениям передается в агрегированном виде, то есть DPI накапливает статистику по направлению (номеру AS), объединяя информацию по разным сессиям, а потом с заданной периодичностью передает ее на коллектор. Это позволяет существенно снизить объем передаваемой информации.

Одним из наиболее популярных способов получать и анализировать информацию с платформы DPI является связка:

  1. демон-коллектор, который слушает порт, собирает данные и пишет в файлы
  2. дамп, который читает и выводит собранные nfcapd-данные
  3. визуализатор, который является графическим интерфейсом для данных nfdump.

nfdump

Настройка DPI сводится к указанию следующих параметров:

  1. Включение системы сбора и экспорта статистики (по протоколам, по направлениям, для биллинга, полная статистика по сессиям).
  2. Сетевой интерфейс, через который будет отправляться netflow со статистикой.
  3. Периодичность экспорта данных.
  4. IP-адрес и номер порта коллектора (или нескольких коллекторов для разных типов данных).

Чтобы иметь возможность построить отчеты по трафику посещения сайтов, по абонентам системы с динамической выдачей адресов, связать данные по сессиям и объемам с метаданными, переданными в рамках сессии, необходимо использовать протокол IPFIX (дальнейшее развитие NetFlow-протокола версии 9). Для сбора информации в формате IPFIX подойдет любой универсальный IPFIX-коллектор, который понимает шаблоны, или утилита IPFIX Receiver.

Для установки NfSen потребуется компьютер с установленной CentOS 6 или выше. Требуемое место на диске – от 250 МБ до 1,5 ГБ на каждый день хранения в зависимости от настроек. Объем оперативной памяти от 1G. Однако NfSen не рекомендуется ставить на сервер с DPI-платформой: подготовка отчетов требовательна к ресурсам CPU, что может негативно отразиться на производительности DPI-платформы. Установка NfSen приводит к установке веб-сервера Apache, а ее настройка сводится к включению автозапуска и открытию портов на firewall.

После накопления данных хотя бы за одни сутки NfSen позволит строить графики по протоколам, объему трафика и другие, основанные на полученных сведениях с системы DPI.

nfsen-combined

nfsen-vk-vs-google

Помимо графиков с помощью NfSen можно строить отчеты за произвольные периоды, по протоколам и направлениям.

nfsen-dir-report
nfsen-proto-report

Анализ информации о трафике – это первый шаг на пути оптимизации и улучшения качества услуг, предоставляемых операторами связи. Отчеты и графики показывают реальное потребление полосы пропускания, самые загруженные направления и самых «жадных» потребителей. Данные сведения позволяют производить грамотные настройки приоритетов, заранее выявить приложение или пользователя с наибольшей нагрузкой на полосу пропускания, увидеть тренды и защитить сеть от перегрузки, ограничив скорость.