NetFlow и sFlow — протоколы сбора и анализа данных о сетевом трафике, применяемые для мониторинга, планирования пропускной способности, обнаружения атак и биллинга по трафику в дата-центрах и у провайдеров. Оба протокола работают на сетевом оборудовании (маршрутизаторах, коммутаторах) и экспортируют статистику в коллектор для анализа.
NetFlow
NetFlow разработан Cisco в 1996 году. Поток (flow) в NetFlow — группа пакетов с одинаковым набором ключевых атрибутов: source IP, destination IP, source port, destination port, протокол, ToS, входной интерфейс. Каждый поток описывается записью: количество пакетов, байт, timestamp начала/конца, флаги TCP.
Архитектура NetFlow:
- Flow exporter — маршрутизатор/коммутатор, агрегирующий пакеты в потоки и экспортирующий записи на коллектор.
- Flow collector — сервер, принимающий, хранящий и обрабатывающий записи о потоках (ntopng, Elastiflow, Grafana с InfluxDB).
- Analysis application — интерфейс для визуализации и алертинга (Zabbix, Kibana).
Версии NetFlow: v1 (1996), v5 (наиболее распространённая), v9 (гибкий формат, 2004, RFC 3954), IPFIX (IP Flow Information Export, 2013, RFC 7011) — стандартизированная версия, поддерживаемая оборудованием не-Cisco.
sFlow
sFlow (sampled flow) — открытый стандарт (RFC 3176, 2001) для мониторинга трафика через выборку пакетов. Вместо анализа каждого пакета sFlow копирует каждый N-й пакет (обычно каждый 1/512 или 1/2048) и передаёт полный заголовок коллектору. Это снижает нагрузку на оборудование по сравнению с NetFlow, но даёт статистическое приближение.
NetFlow vs sFlow
| Параметр | NetFlow | sFlow |
|---|---|---|
| Тип данных | Агрегированные потоки | Образцы пакетов |
| Точность | 100% всего трафика | Статистическая выборка |
| Нагрузка на устройство | Выше | Ниже |
| Vendor | Cisco (+ IPFIX) | Открытый стандарт |
| Задержка данных | До 1 минуты | Несколько секунд |
Применение в хостинге и ЦОД
NetFlow/sFlow используются провайдерами и дата-центрами для: биллинга трафика клиентов по фактическому потреблению, обнаружения DDoS-атак (аномальный рост трафика на конкретный IP), планирования пропускной способности каналов, отладки маршрутизации и BGP-политик. Zabbix поддерживает приём данных NetFlow для мониторинга пропускной способности.
История
NetFlow создан инженерами Cisco Дарреном Кером и Барри Тулли в 1996 году как внутренняя функция IOS. В 2004 году Cisco опубликовала NetFlow v9 как RFC 3954, открыв формат. На основе v9 в 2013 году разработан IPFIX (RFC 7011) как независимый стандарт IETF. sFlow появился в 2001 году (RFC 3176) как open-source альтернатива.
На что обращать внимание
Для анализа NetFlow-данных на Linux-сервере используйте nfdump/nfcapd (хранение и анализ), ntopng (веб-интерфейс) или Elastiflow (ElasticSearch + Kibana). При высоком объёме трафика коллектор требует быстрых NVMe-дисков — записи NetFlow генерируются интенсивно. IPFIX совместим с большинством анализаторов NetFlow v9.
NetFlow в хостинге
NetFlow экспорт настраивается на пограничных маршрутизаторах и коммутаторах: Cisco, Juniper, MikroTik. Коллекторы: ntopng, nfdump, ElastiFlow (Elasticsearch), Pmacct. Zabbix поддерживает SNMP-опрос трафика, но не полноценный NetFlow — для NetFlow нужен отдельный коллектор. DDoS-атаки выявляются по аномальному росту пропускной способности от конкретного источника — NetFlow показывает top talkers за секунды. VPS-провайдеры могут предоставлять NetFlow-данные по запросу для анализа нападений. sFlow — семплированный протокол (каждый N-й пакет): менее точный, но не нагружает процессор коммутатора.