Открыть сервис

nDPI

nDPI (от англ. ntop Deep Packet Inspection) — это программная библиотека с открытым исходным кодом для глубокого анализа пакетов (DPI), предназначенная для идентификации сетевых протоколов и приложений в трафике компьютерных сетей. Разрабатывается и поддерживается командой ntop, известной также по проекту ntopng — сетевому монитору с веб-интерфейсом. nDPI используется для классификации трафика в реальном времени, что позволяет сетевым администраторам, провайдерам и разработчикам анализировать, какие приложения (например, веб-браузеры, мессенджеры, потоковые сервисы, торренты) генерируют сетевой поток, без необходимости вскрытия зашифрованного содержимого.

История

Проект nDPI был создан в 2011 году как ответвление (форк) от более старой библиотеки OpenDPI, которая, в свою очередь, была основана на технологии, разработанной компанией ipoque (позднее приобретённой EMC). OpenDPI имела ограниченную лицензию и не поддерживалась, что побудило команду ntop начать разработку собственной версии с более открытой моделью распространения. Первый публичный релиз nDPI состоялся в 2012 году, и с тех пор библиотека активно развивается: добавляются новые протоколы, улучшается производительность и точность детектирования.

Ключевым этапом стало внедрение поддержки анализа зашифрованного трафика (в частности, TLS/SSL) в середине 2010-х годов. Поскольку всё больше приложений начали шифровать свои данные, nDPI перешёл от простого поиска сигнатур в полезной нагрузке к методам, основанным на статистике потоков, размерах пакетов, временных характеристиках и метаданных установки соединения. В 2020-х годах nDPI стал одним из наиболее популярных DPI-движков с открытым кодом, используемым как в академических исследованиях, так и в коммерческих продуктах.

Архитектура и принцип работы

nDPI реализован на языке C и предоставляет C-интерфейс (API) для интеграции в другие программы. Библиотека не требует специального аппаратного обеспечения и может работать на стандартных серверах под управлением Linux, FreeBSD, macOS и Windows. Основные компоненты nDPI:

  • Ядро (core engine): отвечает за обработку пакетов, поддержание состояния потоков и принятие решений о классификации.
  • Модуль протоколов: содержит набор правил (сигнатур) для идентификации более 300 протоколов и приложений, включая HTTP, HTTPS, DNS, SSH, BitTorrent, Skype, Zoom, Netflix, YouTube, Telegram, WhatsApp (продукт Meta, признанной экстремистской и запрещённой в РФ) и многие другие.
  • Модуль статистики: собирает метрики по каждому потоку (объём трафика, количество пакетов, временные метки, IP-адреса, порты).
  • Модуль обнаружения аномалий: может выявлять подозрительные паттерны, например, сканирование портов, DoS-атаки или попытки обхода DPI.

Методы идентификации

nDPI использует комбинацию нескольких методов для классификации трафика:

  1. Сигнатурный анализ: поиск характерных строк или байтовых последовательностей в незашифрованной части пакета (например, в HTTP-запросе или в начале TLS-рукопожатия).
  2. Портовый анализ: проверка номеров портов источника и назначения (устаревающий метод, так как многие приложения используют динамические порты).
  3. Поведенческий анализ: оценка характеристик потока — размеров пакетов, интервалов между ними, направления передачи данных. Например, для VoIP-трафика характерны небольшие пакеты с постоянной частотой.
  4. Анализ TLS-рукопожатия: извлечение имени сервера (SNI) из сертификата или расширения ClientHello, что позволяет определить, к какому сервису обращается клиент, даже при шифровании.
  5. Статистическое моделирование: использование машинного обучения (в экспериментальных версиях) для классификации трафика на основе многомерных признаков.

Классификация протоколов

nDPI поддерживает широкий спектр протоколов, разделённых на категории:

Полный список протоколов обновляется с каждым релизом; на начало 2024 года nDPI поддерживает более 300 различных протоколов и приложений.

Применение

nDPI используется в различных сценариях, связанных с мониторингом и управлением сетями:

  • Сетевой мониторинг: интеграция с ntopng, Prometheus, Grafana, Zabbix для визуализации трафика по приложениям.
  • Системы обнаружения вторжений (IDS/IPS): например, в Suricata nDPI используется как модуль для классификации трафика, что помогает выявлять аномалии.
  • Биллинг и тарификация: провайдеры могут применять nDPI для разделения трафика на категории (например, «веб», «видео», «торренты») и применять разные тарифы.
  • Политика безопасности: блокировка или ограничение определённых приложений (например, торрентов или мессенджеров) в корпоративных сетях.
  • Анализ качества обслуживания (QoS): приоритизация трафика для критически важных приложений (VoIP, видеоконференции) и ограничение для фоновых (обновления, торренты).
  • Академические исследования: изучение структуры интернет-трафика, разработка новых методов классификации, тестирование алгоритмов машинного обучения.

Преимущества и ограничения

Преимущества

  • Открытый исходный код: nDPI распространяется по лицензии LGPLv3, что позволяет использовать, модифицировать и встраивать библиотеку в коммерческие и некоммерческие проекты без лицензионных отчислений.
  • Высокая производительность: библиотека способна обрабатывать трафик на скоростях до 10 Гбит/с на одном ядре современного процессора.
  • Непрерывное обновление: команда ntop регулярно выпускает новые версии с поддержкой актуальных протоколов (например, QUIC, HTTP/3, новые версии мессенджеров).
  • Модульность: nDPI можно использовать как самостоятельную библиотеку или встраивать в другие приложения через API.
  • Кроссплатформенность: работает на основных операционных системах.

Ограничения

  • Ограниченная эффективность при полном шифровании: если трафик полностью зашифрован (например, при использовании VPN с шифрованием всего потока), nDPI не может определить конкретное приложение внутри туннеля, хотя может идентифицировать сам протокол туннелирования.
  • Зависимость от сигнатур: для новых или редко используемых протоколов может потребоваться ручное добавление сигнатур.
  • Ресурсоёмкость: на высоконагруженных сетях (более 40 Гбит/с) может потребоваться аппаратное ускорение или распределённая обработка.
  • Юридические ограничения: в некоторых странах использование DPI, включая nDPI, может регулироваться законами о тайне связи и персональных данных. В Российской Федерации применение средств DPI для перехвата и анализа трафика без согласия сторон может быть ограничено законодательством (Федеральный закон «О связи», «О персональных данных»).

Примеры использования

  • ntopng: nDPI является основным движком для классификации трафика в этом популярном сетевом мониторе. Администратор может видеть, какой процент трафика приходится на YouTube, Telegram, BitTorrent и т.д.
  • Suricata: IDS/IPS-система с открытым кодом использует nDPI для расширенной классификации протоколов, что позволяет создавать более точные правила обнаружения.
  • pfSense: встроенный модуль nDPI позволяет фильтровать трафик по приложениям на уровне межсетевого экрана.
  • nProbe: инструмент для экспорта NetFlow/IPFIX, который использует nDPI для обогащения потоковых данных информацией о приложениях.

Интересные факты

  • nDPI поддерживает детектирование более 300 протоколов, но точное число постоянно растёт: в версии 4.0 (2021 год) было добавлено около 50 новых протоколов, включая Clubhouse, Signal и TikTok.
  • Библиотека способна обнаруживать не только приложения, но и версии протоколов (например, TLS 1.2 vs TLS 1.3) и даже названия клиентских программ (например, «curl» или «wget»).
  • nDPI активно используется в исследовательских проектах, связанных с анализом интернет-цензуры и блокировок, в том числе для изучения работы систем «ТСПУ» (технических средств противодействия угрозам) в России.

Источники

  • ntop.org — официальный сайт проекта nDPI.
  • Репозиторий nDPI на GitHub (ntop/nDPI).
  • Документация ntopng и nProbe.
  • Статья «Deep Packet Inspection: A Survey» (2019) — обзор методов DPI.
  • Материалы конференций SharkFest и NFV/SDN (2015–2023) по применению nDPI.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →