NetFlow — сетевой протокол, предназначенный для учёта сетевого трафика, разработанный компанией Cisco Systems. Является фактическим промышленным стандартом и поддерживается не только оборудованием Cisco, но и многими другими устройствами (в частности, Juniper, ZTE и Enterasys). Также существуют свободные реализации для UNIX-подобных систем.

Существует несколько версий протокола, наиболее распространёнными из которых на 2011 год являются версии 5 и 9. На основе версии 9 также был разработан открытый стандарт под названием IPFIX (Internet Protocol Flow Information eXport, экспорт информации о потоках IP)[1][2].

Архитектура править

 
Архитектура NetFlow

Для сбора информации о трафике по протоколу NetFlow требуются следующие компоненты:

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

Описание протокола править

NetFlow использует UDP или SCTP для передачи данных о трафике коллектору. Как правило, коллектор слушает порт 2055, 9555 или 9995.

Сенсор выделяет из проходящего трафика потоки, характеризуемые следующими параметрами:

  • Адрес источника;
  • Адрес назначения;
  • Порт источника для UDP и TCP;
  • Порт назначения для UDP и TCP;
  • Тип и код сообщения для ICMP;
  • Номер протокола IP;
  • Сетевой интерфейс (параметр ifindex SNMP);
  • IP Type of Service.

Потоком считается набор пакетов, проходящих в одном направлении. Когда сенсор определяет, что поток закончился (по изменению параметров пакетов, либо по сбросу TCP-сессии), он отправляет информацию в коллектор. В зависимости от настроек он также может периодически отправлять в коллектор информацию о все еще идущих потоках.

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

  • Номер версии протокола;
  • Номер записи;
  • Входящий и исходящий сетевой интерфейс;
  • Время начала и конца потока;
  • Количество байт и пакетов в потоке;
  • Адрес источника и назначения;
  • Порт источника и назначения;
  • Номер протокола IP;
  • Значение Type of Service;
  • Для TCP-соединений — все наблюдаемые в течение соединения флаги;
  • Адрес шлюза;
  • Маски подсети источника и назначения.

Версия 9 также поддерживает дополнительные поля, такие как заголовки IPv6, метки потоков MPLS и адрес шлюза BGP. Некоторые сенсоры могут также поддерживать номер автономной системы.

Если используется UDP, то потерянная из-за проблем с сетью запись не будет получена коллектором. Коллектор может определить потери пакетов по значениям номера записи, которые по стандарту должны быть возрастающими.

Если сенсором выступает сетевое устройство (маршрутизатор или коммутатор), то для экономии ресурсов NetFlow включают только для тех интерфейсов, на которых хотят собирать статистику.

Для экономии ресурсов процессора также применяется «sampled NetFlow». В этом случае сенсор анализирует не все, а каждый n-ый пакет, где n может быть заданным административно или выбираемым случайным образом. При использовании sampled NetFlow получаемые значения являются не точными, а оценочными.

Аналоги править

Примечания править

Ссылки править