Netflow

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

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

## Содержание

* 1 Архитектура
* 2 Описание протокола
* 3 Аналоги
* 4 Примечания
* 5 Ссылки

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

[править | править код]

Архитектура 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 получаемые значения являются не точными, а оценочными.

## Аналоги

[править | править код]

* sFlow (RFC 3176, Brocade Networks)
* NetStream (3Com, H3C, Huawei)
* Cflow (Alcatel-Lucent)
* Jflow & cflowd (Juniper Networks)

## Примечания

[править | править код]

1. ↑ Specification of the IP Flow Information Export (IPFIX) Protocol for the Exchange of IP Traffic Flow Information (неопр.). Дата обращения: 27 февраля 2011. Архивировано 3 июля 2013 года.
2. ↑ Information Model for IP Flow Information Export Архивная копия от 4 июля 2013 на Wayback Machine (англ.)

## Ссылки

[править | править код]

* Спецификация протокола версии 9 (англ.)
* Страница протокола на сайте Cisco Systems (англ.)
* PMACCT — свободная реализация сенсора для UNIX-систем (также поддерживает sFlow и IPFIX) (англ.)
* Flow-tools — свободная реализация коллектора NetFlow (англ.)
* FlowViewer — свободная реализация анализатора NetFlow (англ.)
* NetFlow на Xgu.ru — детальное описание NetFlow и процедуры настройки источника, коллектора и хранилища NetFlow-информации в открытых системах
* NetFlow. Учет трафика на маршрутизаторах cisco. — краткий ликбез по использованию NetFlow для снятия информации о трафике с устройств cisco.
* NetFlow. «Самописный парсер» — Описание процесса создания собственного парсера протокола NetFlow.