Экспорт информации о потоках IP

Экспорт информации о потоках IP (англ. Internet Protocol Flow Information Export, IPFIX) — протокол IETF, а также название рабочей группы IETF, определяющей этот протокол. Он был создан для стандартизации универсального формата экспорта информации о потоках Интернет-протокола с маршрутизаторов, сетевых зондов и других устройств, используемых системами агрегации, учёта и биллинга, а также средствами управления сетью для предоставления таких сервисов, как измерение, учёт и биллинг. Стандарт IPFIX определяет, каким образом информация о потоках IP должна быть оформлена и передана от экспортёра к коллектору[1]. Ранее многие операторы сетей передачи данных использовали проприетарную технологию NetFlow от Cisco Systems для экспорта сведений о потоках трафика.

Требования к стандарту IPFIX были сформулированы в оригинальном RFC 3917. Версия 9 протокола NetFlow от Cisco стала основой для IPFIX. Базовые спецификации IPFIX определены в RFC 7011-RFC 7015 и RFC 5103.

Архитектура

Ниже представлена типовая архитектура передачи информации в системе IPFIX:

                       Экспортёр      IPFIX         Коллектор
                          O--------------------------->O
                          |
                          | Дом наблюдения
                          |
       Процесс учёта #1   | Процесс учёта #2
         O----------------O----------------O Процесс учёта #3
         |                |                |
         | Точка наблюдения #1 | Точка наблюдения #2 | Точка наблюдения #3
         v                |                |
---- IP-трафик --->      |                |
                          v                |
------- Больше IP-трафика --->       |
                                           v
--------------------- Ещё больше IP-трафика --->

Набор процессов учёта собирает пакеты данных в одной или нескольких точках наблюдения, при необходимости фильтрует их и агрегирует информацию по ним. Затем экспортёр объединяет точки наблюдения в домен наблюдения и передаёт сведения посредством протокола IPFIX на коллектор. Экспортёры и коллекторы состоят во многие-ко-многим отношении: один экспортёр может отправлять данные нескольким коллекторам, а один коллектор принимать данные от многих экспортёров[2].

Протокол

Аналогично протоколу NetFlow, в IPFIX под потоком понимается любое количество пакетов, зафиксированных в определённом временном промежутке и обладающих рядом одинаковых свойств, например: один и тот же источник, тот же получатель, тот же протокол. С помощью IPFIX такие устройства, как маршрутизаторы, могут информировать централизованную станцию мониторинга о своём представлении о поведении большей сети.

IPFIX является push-протоколом, то есть каждый отправитель периодически отправляет сообщения IPFIX на настроенных получателей без участия самого получателя.

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

В качестве транспортного протокола по умолчанию в IPFIX предпочтён протокол управления передачей потоков (SCTP), однако может использоваться и протокол управления передачей (TCP) или протокол пользовательских дейтаграмм (UDP).

Пример

Простая информационная таблица, передаваемая через IPFIX, может выглядеть так:

Источник         Назначение     Пакетов
------------------------------------------
192.168.0.201  192.168.0.1     235
192.168.0.202  192.168.0.1     42

Эти данные будут отправлены в следующем сообщении IPFIX:

Биты 0..15 Биты 16..31
Версия = 0x000a Длина сообщения = 64 байта
Метка времени экспорта = 31 декабря 2005, 23:59:60
Порядковый номер = 0
Идентификатор домена наблюдения = 12345678
Set ID = 2 (Шаблон) Длина набора = 20 байт
Идентификатор шаблона = 256 Количество полей = 3
Тип = sourceIPv4Address Длина поля = 4 байта
Тип = destinationIPv4Address Длина поля = 4 байта
Тип = packetDeltaCount Длина поля = 4 байта
Set ID = 256 (Набор данных
использует шаблон 256)
Длина набора = 28 байт
Запись 1, поле 1 = 192.168.0.201
Запись 1, поле 2 = 192.168.0.1
Запись 1, поле 3 = 235 пакетов
Запись 2, поле 1 = 192.168.0.202
Запись 2, поле 2 = 192.168.0.1
Запись 2, поле 3 = 42 пакетов

Как видно из примера, сообщение содержит заголовок IPFIX и два набора: один набор шаблонов, описывающий структуру соответствующего набора данных, и непосредственно набор данных, содержащий сами значения. При передаче IPFIX через протокол, поддерживающий состояние сеанса (TCP или SCTP), набор шаблонов не требует повторной передачи — он кэшируется коллектором. Однако при изменении шаблона, открытии нового сеанса или при использовании безсеансового UDP набор шаблонов должен быть передан заново.

Примечания

Литература

Ссылки