Классификация сетевого трафика является важным процессом, необходимым для правильной организации передачи данных между приложениями, которые его генерируют. Определение трафика в 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
Архитектура 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. Кроме того, обогащение данных трафика дополнительными выборками может повысить различимость пакетов трафика, что приведет к повышению точности классификации пользовательских протоколов.
shadrap
Спасибо, интересно! А какие методы для анализа траффика сейчас используют операторы? Например блокировки VOIP в UAE , они довольно продвинулись в блокировках даже тонеллированных и шифрованного VOIP .