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:
Как можно увидеть, сообщение содержит заголовок IPFIX и два набора IPFIX: один набор шаблонов, который представляет построение используемого набора данных, а также один набор данных, который содержит фактические данные. Когда IPFIX отправляется по протоколу, который сохраняет состояние сеанса (TCP или SCTP), набор шаблонов не нужно передавать повторно, так как он буферизируется в Collectors. Поскольку набор шаблонов может меняться с течением времени, его необходимо передавать повторно, если устанавливается новое состояние сеанса или если IPFIX отправляется по UDP, который является протоколом без сеансов.