Internet Protocol Flow Information Export (IPFIX) — это протокол IETF , а также название рабочей группы IETF , определяющей протокол. Он был создан на основе потребности в общем, универсальном стандарте экспорта информации о потоке интернет-протокола с маршрутизаторов , зондов и других устройств, которые используются системами-посредниками, системами учета/биллинга и системами управления сетями для упрощения таких услуг, как измерение, учет и выставление счетов. Стандарт IPFIX определяет, как информация о потоке IP должна форматироваться и передаваться от экспортера к сборщику. [1] Ранее многие операторы сетей передачи данных полагались на фирменную технологию NetFlow компании Cisco Systems для экспорта информации о потоке трафика.
Требования стандартов IPFIX были изложены в оригинальном RFC 3917. Cisco NetFlow версии 9 стал основой для IPFIX. Основные спецификации для IPFIX задокументированы в RFC 7011 — RFC 7015 и RFC 5103.
На следующем рисунке показана типичная архитектура потока информации в архитектуре IPFIX:
Экспортер IPFIX Сборщик О---------------------------->О | | Наблюдение | Домен | Измерение №1 | Измерение №2 O----------------O----------------O Измерение №3 | | | | Наблюдение | Наблюдение | Наблюдение | Пункт №1 | Пункт №2 | Пункт №3 в | |---- IP-трафик ---> | | в |--------------- Больше IP-трафика ---> | в---------------------------------- Больше IP-трафика --->
Пул процессов измерения собирает пакеты данных в одной или нескольких точках наблюдения , опционально фильтрует их и агрегирует информацию об этих пакетах. Затем экспортер собирает каждую из точек наблюдения в домен наблюдения и отправляет эту информацию через протокол IPFIX коллектору . Экспортеры и коллекторы находятся в отношениях «многие ко многим» : один экспортер может отправлять данные многим коллекторам, а один коллектор может получать данные от многих экспортеров. [2]
Подобно протоколу NetFlow, IPFIX считает потоком любое количество пакетов, наблюдаемых в определенном временном интервале и имеющих ряд общих свойств, например, « один и тот же источник, одно и то же место назначения, один и тот же протокол ». Используя IPFIX, такие устройства, как маршрутизаторы, могут информировать центральную станцию мониторинга о своем видении потенциально более крупной сети.
IPFIX — это push-протокол , т.е. каждый отправитель будет периодически отправлять сообщения IPFIX настроенным получателям без какого-либо взаимодействия со стороны получателя.
Фактическая структура данных в сообщениях IPFIX в значительной степени зависит от отправителя. IPFIX представляет структуру этих сообщений получателю с помощью специальных шаблонов . Отправитель также может использовать определяемые пользователем типы данных в своих сообщениях, поэтому протокол свободно расширяем и может адаптироваться к различным сценариям.
IPFIX предпочитает использовать протокол передачи управления потоком (SCTP) в качестве протокола транспортного уровня , но также допускает использование протокола управления передачей (TCP) или протокола пользовательских датаграмм (UDP) .
Простой набор информации, отправляемый через IPFIX, может выглядеть следующим образом:
Пакеты Источник-Назначение------------------------------------------192.168.0.201 192.168.0.1 235192.168.0.202 192.168.0.1 42
Этот набор информации будет отправлен в следующем сообщении IPFIX:
Биты 0..15 | Биты 16..31 |
---|---|
Версия = 0x000a | Длина сообщения = 64 байта |
Временная метка экспорта = 2005-12-31 23:59:60 | |
Порядковый номер = 0 | |
Идентификатор домена наблюдения = 12345678 | |
Установить ID = 2 (Шаблон) | Установите длину = 20 байт |
Идентификатор шаблона = 256 | Количество полей = 3 |
Тип = исходный IPv4-адрес | Длина поля = 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: один набор шаблонов, который представляет построение используемого набора данных, а также один набор данных, который содержит фактические данные. Когда IPFIX отправляется по протоколу, который сохраняет состояние сеанса (TCP или SCTP), набор шаблонов не нужно передавать повторно, так как он буферизируется в Collectors. Поскольку набор шаблонов может меняться с течением времени, его необходимо передавать повторно, если устанавливается новое состояние сеанса или если IPFIX отправляется по UDP, который является протоколом без сеансов.