Классификация сетевого трафика является важным процессом, необходимым для правильной организации передачи данных между приложениями, которые его генерируют. Определение трафика в DPI обеспечивает основу для множества сетевых функций, таких как управление, обеспечение безопасности, разделение услуг, полисинг и другие. В данной статье мы рассматриваем новый подход к классификации прикладных протоколов в сетевых пакетах. Традиционные методы классификации включают в себя следующие: SNI: Метод, несмотря на свою скорость, характеризуется недостаточной точностью, особенно в случаях, когда порты обфусцированы или происходит трансляция сетевых адресов. Инспекция полезной нагрузки: Подход обеспечивает высокую точность, но требует постоянного обновления и может вызывать опасения с точки зрения конфиденциальности данных. Статистическое машинное обучение: Метод использует статистические данные о трафике и также обеспечивает  высокую точность, однако он может быть ресурсоемким и медленным, в том числе требуются очень чистые и размеченные данные. Наш новый подход отличается от этих традиционных методов. Мы исследовали использование глубокого обучения вместо стандартных техник. Наша адаптированная нейронная сеть на базе классической архитектуры сверточной нейронной сети и архитектуры ResNet предназначена для идентификации VPN- и прокси-трафика, а также направлена на точную и эффективную классификацию благодаря оптимизированному подбору гиперпараметров. Видео: презентация исследования на английском для IC-MSQUARE 2023 (12th International Conference on Mathematical Modeling in Physical Sciences) Для исследования эффективности различных архитектур при классификации сетевого трафика были использованы две разные модели: Классическая сверточная нейронная сеть (CNN) и архитектура ResNet. Эти архитектуры были выбраны из-за своей подтвержденной эффективности в обработке сложных паттернов данных и достижения высокой точности в задачах классификации. Сравнивая производительность этих двух моделей, можно получить ценные инсайты относительно их пригодности для анализа сетевого трафика. Классическая сверточная нейронная сеть известна своей способностью обрабатывать сложные паттерны данных, в то время как ResNet предлагает преимущества при обучении глубоких нейронных сетей. Сравнение помогает определить пригодность каждой архитектуры для анализа сетевого трафика. Предложенный метод используют основан на использовании классической архитектуры сверточной нейронной. Сверточный слои. Нейронная сеть начинается с двух последовательных сверточных слоев. Первый сверточный слой принимает на вход данные с одним каналом, представляющим собой трафик. Он применяет операцию свертки с указанным числом выходных каналов (c1_output_dim). Размер ядра (c1_kernel_size) и шаг (c1_stride) также являются параметрами, которые можно настраивать. После операции свертки применяется функция активации ReLU для введения нелинейности. Точно так же второй сверточный слой работает с выходом первого слоя. Он принимает на вход c1_output_dim каналов и создает выход с c2_output_dim каналами, используя размер ядра (c2_kernel_size) и шаг (c2_stride), заданные в конфигурации модели. Операция подвыборки. После каждого сверточного слоя применяется max-pooling. Слой выполняет уменьшение размеров данных путем разделения входных карт признаков на непересекающиеся регионы размером 2. Внутри каждого региона выбирается максимальное значение как представительное значение. Эта операция уменьшает пространственные размеры карт признаков, сохраняя при этом наиболее значимую информацию. Полносвязанные слои. После слоя max-pooling тензор преобразуется в одномерную форму. Затем он проходит через серию трех полносвязанных слоев (fc1, fc2, fc3). Размеры этих слоев заранее определены как 200, 100 и 50 соответственно. Каждому полносвязанному слою применяется регуляризация dropout с вероятностью отсева 0,05 для предотвращения переобучения. После каждого полносвязанного слоя также используются функции активации ReLU. Выходной слой. Финальный полносвязанный слой, названный 'out', служит в качестве выходного слоя. Он принимает выход предыдущего слоя, который имеет 50 признаков, и отображает его в желаемое размерное пространство (output_dim), указанное в гиперпараметрах модели. В целом, эта архитектура, нацелена на захват значимых признаков и  зависимостей в данных о сетевом трафике, что приводит к эффективным результатам классификации. Конфигурация модели и гиперпараметры могут быть настроены для оптимизации производительности в зависимости от конкретной задачи классификации. Архитектура ResNet (Residual Network) это глубокая нейронная сеть, используемая для классификации изображений, но мы ее адаптируем под классификацию сетевого трафика. Она состоит из нескольких блоков с остаточными соединениями, которые облегчают обучение сложным представлениям в данных о трафике. Слои свертки: ResNet начинается с серии сверточных слоев, которые извлекают признаки из входных данных о трафике. Эти слои выполняют свертки, которые включают в себя применение фильтров для захвата локальных паттернов и выявления значимых признаков в данных. Количество выходных каналов (c_output_dim) и размер ядра (c_kernel_size) являются настраиваемыми параметрами. Блоки с остаточными соединениями: Ключевым компонентом ResNet является блок с остаточными соединениями. Каждый блок с остаточными соединениями состоит из двух сверточных слоев. Количество выходных каналов для этих слоев (rb_output_dim) и размер ядра (rb_kernel_size) также являются настраиваемыми параметрами. Остаточное соединение в блоке с остаточными соединениями позволяет сети изучать остаточные представления, которые являются разницей между входом и желаемым выходом. Пакетная нормализация: После каждого сверточного слоя в блоках с остаточными соединениями применяется пакетная нормализация. Она нормализует активации для стабилизации и ускорения процесса обучения. Параметр момента (bn_momentum) определяет вклад статистики предыдущей партии в нормализацию текущей партии. Функция активации: Функция активации (ReLU) применяется после каждого сверточного слоя и в блоках с остаточными соединениями. Она вводит нелинейность, что позволяет сети изучать сложные и нелинейные зависимости в данных о трафике. Пулинг: Иногда используются слои пулинга, такие как максимальное объединение, для уменьшения размеров карт признаков, уменьшая их пространственные размеры, сохраняя при этом наиболее важную информацию. Размер пулинга (p_pool_size) и шаг (p_stride) являются настраиваемыми параметрами. Полносвязанные слои: После сверточных и пулинговых слоев карты признаков преобразуются в одномерную форму и проходят через полносвязанные слои. Размеры этих слоев (fc1_output_dim, fc2_output_dim, fc3_output_dim) заранее определены. Выходной слой: Последний слой архитектуры ResNet — это выходной слой. Он принимает признаки от предыдущих слоев и отображает их в определенное количество выходных классов или меток (output_dim), соответствующих категориям сетевого трафика для классификации. В общем, архитектура ResNet с ее сверточными слоями, блоками с остаточными соединениями, пакетной нормализацией и полносвязанными слоями нацелена на захват и моделирование сложных паттернов и зависимостей в данных о сетевом трафике. Используя остаточные соединения и метод обучения с остатками, ResNet успешно справляется с задачами обучения глубоких нейронных сетей и достигает высокой точности в задачах классификации сетевого трафика. Конкретные значения параметров можно настраивать для оптимизации производительности в зависимости от требований задачи классификации. Исследование фокусируется на сравнении пригодности отдельных архитектур, а не на исследовании взаимодействия различных моделей нейронных сетей. Оно оценивает эффективность каждой архитектуры в анализе сетевого трафика независимо. Поэтому классификация трафика выполняется с помощью одной нейронной сети без взаимодействия с другими моделями. Следует отметить, что классификация выполняется с накоплением результата, при котором выбирается наиболее часто встречающийся класс для пакетов с одним и тем же IP и портом. В данной работе классификация сетевого трафика была основана на тщательно подготовленном наборе данных, собранном в формате Netflow 10 (IPFIX). IPFIX был  разработан для стандартизации форматирования и передачи IP-информации от экспортеров к коллекторам на основе Netflow Version 9. Его поддерживают различные производители, включая Cisco Systems, Solera, VMware, Citrix и других. Основные спецификации для IPFIX можно найти в RFC 7011 по RFC 7015 и RFC 5103. Процесс сбора данных включал запись дампов данных в формате IPFIX на машине, оборудованной возможностями глубокой инспекции пакетов (DPI). Эти машины были подключены к другим машинам, генерирующим трафик через различные VPN. Поскольку весь трафик с этих машин был охвачен VPN, со временем были собраны IP и порт на этих машинах специальным образом, чтобы собрать как можно больше уникальных комбинаций IP и портов для каждой из VPN. Следовательно, было собрано значительное количество данных с уникальными комбинациями IP и портов для обучения нейронной сети, так как VPN получали новые IP и портовые назначения при блокировке. Таблица 1. Структура данных Тип данных Описание octet_delta_count Входящий счетчик длиной N x 8 бит для количества байт, связанных с IP-потоком. packet_delta_count Счетчик входящих пакетов длиной N x 8 бит для количества пакетов, связанных с IP-потоком protocol_identifier Байт IP-протокола ip_class_of_service Класс IP или услуги source_port Порт отправителя source_ipv4 IPv4 отправителя destination_port Порт получателя destination_ipv4 IPv4 получателя bgp_source_as_number Номер автономной системы источника BGP, где N может быть 2 или 4 bgp_destination_as_number Номер автономной системы назначения BGP, где N может быть 2 или 4 input_snmp Идентификатор виртуальной локальной сети, связанный с входящим интерфейсом output_snmp Идентификатор виртуальной локальной сети, связанный с интерфейсом выхода ip_version Версия протокола IPv4 или IPv6 post_nat_source_ipv4 IPv4 нат источника post_nat_source_port Порт нат источника frgmt_delta_packs Дельта фрагментированных пакетов repeat_delta_pack Дельта ретрансляций packet_deliver_time Задержка (RTT/2), мс protocol_code Код протокола с использованием класса автономной системы для нейронной сети Для задач классификации протоколов приложений и классификации трафика набор данных изначально был разделен на обучающий и тестовый наборы в соотношении 80% и 20% соответственно. Для решения проблемы дисбаланса классов применялась корректировка на каждом классе внутри обучающего набора. Данные размечались по данным классов, полученных из стендов, где трафик сбирался и перемешивался с обычным трафиком, который был классифицирован классом из IPFIX. Собранный массив данных был использован для обучения моделей нейронных сетей двух различных архитектура с подбором гиперпарамметров. Общее соотношение протоколов в обучающей выборке приведено в Табл. 2. Таблица 2. Соотношение данных Протокол Соотношение DNS 18.67% HTTP 1.38% HTTPS 16.27% DoH 2.66% ICMP 4.83% Bittorrent 24.73% AdGuard VPN 2.34% VPN Unlimited 12.18% Psiphon 3 12.41% Lantern 4.53% После обучения модели оценивались на отдельном тестовом наборе для определения их производительности.  Метрики рассчитывались следующим образом: где TP – истинно положительный (класс который определила нейронная сеть является правильным классом), FN – ложноотрицательный (нейронная сеть не определила класс), FP – ложноположительный (нейронная сеть определила класс как положительный, однако это оказалось ошибкой). В проведенных экспериментах для анализа VPN-трафика, составляющего значительную часть собранного массива данных, использовалась машина, оснащенная технологией DPI. Для классификации трафика на машине с системой DPI работала нейронная сеть. Трафик, генерируемый машинами, подключенными к DPI через различные VPN, эффективно маршрутизировался через DPI и впоследствии перехватывался для анализа в виде дампов.  Нейронная сеть обрабатывала полученные дампы данных, которые хранились в специально отведенном каталоге, и проводила анализ сетевых пакетов в формате IPFIX. Результаты анализа заносились в базу данных, в которой создавалась полная запись классифицированных IP-адресов, портов и соответствующих им классов прикладных протоколов, а также номеров машин-источников. Эксперимент проводился с использованием VPN, на которых были обучены нейронные сети, но с другим диапазоном IP-адресов для чистоты эксперимента. Нейронная сеть классифицировала трафик и заносила соответствующий класс в базу данных. Затем реальный пользовательский протокол сравнивался с классом, определенным нейронной сетью, для определения количества правильно классифицированных и ошибочных протоколов. По этим результатам рассчитывалась точность. Поскольку мы сосредоточились на оценке способности обученных моделей обнаруживать протокол VPN, проиллюстрируем результаты распознавания именно для VPN для моделей каждой архитектуры, которые показали наилучший результат. Таблица 3. Классическая сверточная нейронная сеть Протоколы TP FP FN F1 Score AdGuard VPN 28 9 50 0.49 VPN Unlimited 3 3 22 0.21 Psiphon 3 8455 160 399 0.97 Lantern 288 105 122 0.72 Таблица 4. Архитектура ResNet Протоколы TP FP FN F1 Score AdGuard VPN 60 5 18 0.84 VPN Unlimited 5 9 20 0.26 Psiphon 3 8847 1030 7 0.95 Lantern 410 75 10 0.91 Архитектура ResNet, при правильной настройке гиперпараметров, превосходит архитектуру классической сверточной нейронной сети в классификации пользовательских протоколов. Модели классической сверточной нейронной сети испытывали трудности с протоколами, которые имели мало уникальных строк данных для обучения. Превосходство модели ResNet можно объяснить ее способностью улавливать и моделировать сложные закономерности и зависимости в данных сетевого трафика с помощью остаточных связей. Кроме того, тщательно подобранные гиперпараметры способствовали повышению производительности по сравнению с исходной моделью. Полученные результаты подчеркивают эффективность архитектуры ResNet и правильно подобранных гиперпараметров для достижения высокой точности в задачах классификации сетевого трафика. Для дальнейшего улучшения классификации пользовательских протоколов в будущем возможно включение новых протоколов, таких как VPN в нейронную сеть архитектуры ResNet. Кроме того, обогащение данных трафика дополнительными выборками может повысить различимость пакетов трафика, что приведет к повышению точности классификации пользовательских протоколов.