Способ отслеживания фрагментов пакетов в сетевом трафике
A WAY TO TRACK FRAGMENTS OF PACKETS IN NETWORK TRAFFIC

Область техники
Изобретение относится к области построения систем мониторинга и анализа сетей передачи данных, а именно к методам высокоскоростного поиска и отслеживания фрагментированного IP-трафика в высоконагруженных сетях, может быть использовано в устройствах предварительной обработки для систем глубокого анализа сетевого трафика, поддерживающих стек протоколов TCP/IP. Заявляемый способ направлен на обеспечение функций обработки сетевых пакетов с целью обеспечения целостности информационных потоков в сессиях протоколов TCP или UDP и может быть применен в устройствах предварительной обработки сетевого трафика.
Уровень техники
Известен способ обработки фрагментированного IP-трафика («Method and system for IP fragmentation handling», патент US8325717B2, H04L12/28, H04L12/56, H04L12/54, G06F15/16, 04.12.2012), недостатком его является необходимость промежуточного хранения сетевых пакетов, которое приводит к увеличению задержек при передаче пакетов-фрагментов одного IP-пакета.
Техническим результатом изобретения является обеспечение функционирования устройств предварительной обработки трафика с гарантией целостности информационных потоков, передаваемых через TCP/UDP сессии при обработке фрагментированных IP-пакетов.
Поставленный технический результат достигается тем, что предложен способ отслеживания фрагментов пакетов в сетевом трафике, заключающийся в поиске всех фрагментов IP-пакета и обеспечения одинакового для всех фрагментов способа обработки, заключающийся в том, что после приема пакета через входной интерфейс выполняется передача пакета в блок анализа пакета, выделение из пакета Ethernet, IP и TCP/UDP-заголовков, и формирование на их основе информационного блока – дескриптора, передача пакета в пакетный буфер, а дескриптора – в буфер дескрипторов, затем дескриптор передается в блок анализа фрагментов, в котором выполняется проверка флага наличия фрагментов IP-пакета и полей «Идентификатор» и «Смещение фрагмента», если пакет фрагментирован и смещение фрагмента равно 0, то в RAM-памяти создается запись, содержащая «Идентификатор», «Смещение фрагмента», IP-адреса получателя и отправителя и TCP/UDP порты получателя и отправителя, если пакет фрагментирован и «Смещение фрагмента» не равно 0, то в RAM-памяти выполняется поиск записи с совпадающими IP-адресами и «Идентификатором», и в дескриптор пакета записываются TCP/UDP-порты адреса получателя и отправителя из RAM-памяти, затем блок расчета HASH получает от блока анализа фрагментов дескриптор и рассчитывает общую HASH-сумму пакета, а блок балансировки на основе общей HASH-суммы распределяет пакеты между выходными интерфейсами.
В предпочтительном варианте блок расчета HASH на основе данных дескриптора рассчитывает общую HASH-сумму пакета по сумме IP-адреса получателя и отправителя, сумме TCP/UDP-портов получателя и отправителя и коду протокола L4, например, по алгоритму счетчика с аутентификацией Галуа.
В предпочтительном варианте блок балансировки осуществляет распределение пакетов между выходными интерфейсами на основе сравнения значений вычисленной общей HASH-суммы и определённых в соответствие номеров выходных интерфейсов.
Проведенный анализ уровня техники позволяет определить, что предложенное техническое решение является новым и имеет изобретательский уровень, а возможность его использования в промышленности определяет его как промышленно применимое.
Эти и другие аспекты станут очевидными и будут объяснены со ссылками на чертеж и вариант осуществления, описанный в дальнейшем.
Изобретение поясняется следующими графическими материалами:
Фиг. 1 – схема, иллюстрирующая функциональные блоки, реализующие предложенный способ отслеживания фрагментов пакетов в сетевом трафике.
Фиг. 2 – структура дескриптора.
Фиг. 3 – таблица соответствия выходных интерфейсов значениям HASH в блоке балансировки при балансировке на 4 интерфейса.
Фиг. 4 – блок схема алгоритма отслеживания фрагментов пакетов в сетевом трафике.
Осуществление изобретения
Для достижения поставленного технического результата выполняются следующие этапы операции:
1. Прием пакета через входной интерфейс (101).
2. Пакет передается в блок анализа пакета (102), в котором выполняется выделение из пакета Ethernet, IP и TCP/UDP-заголовков, например, таких как кодов протокола L4, «Идентификатор» и «Смещение фрагмента» и формирование на их основе информационного блока – дескриптора, который представляет собой блок описываемых данных определенной длины (фиг. 2), в который записываются соответствующие значения полей.
3. Пакет сохраняется в пакетный буфер (103).
4. Дескриптор сохраняется в буфер дескрипторов (104).
5. После дескриптор передается в блок анализа фрагментов (105), в котором выполняется проверка флага наличия фрагментов IP-пакета и полей заголовков «Идентификатор» и «Смещение фрагмента». Поле «Идентификатор» (Identification) представляет значение, назначаемое отправителем пакета и предназначенное для определения корректной последовательности фрагментов при сборке пакета. Для фрагментированного пакета все фрагменты имеют одинаковый идентификатор. При этом 3 бита флагов указывают, что первый бит должен быть всегда равен нулю, второй бит DF (don’t fragment) определяет возможность фрагментации пакета и третий бит MF (more fragments) показывает, не является ли этот пакет последним в цепочке пакетов. Поле «Смещение фрагмента» (Fragment Offset) представляет значение, определяющее позицию фрагмента в потоке данных. Смещение задается количеством восьмибайтовых блоков.
Если пакет фрагментирован и «Смещение фрагмента» равно 0, то в RAM-памяти (106) создается запись, содержащая «Идентификатор», «Смещение фрагмента», IP-адреса получателя и отправителя из IP-заголовка и TCP/UDP порты получателя и отправителя.
Если пакет фрагментирован и «Смещение фрагмента» не равно 0, то выполняется поиск записи с совпадающими IP-адресами и «Идентификатором», и в дескриптор пакета записываются TCP/UDP-порты из RAM-памяти. Таким образом, первый фрагмент пакета и все последующие фрагменты имеют одинаковую информацию в дескрипторе.
Если пакет не фрагментирован, то никаких действий с дескриптором не выполняется.
6. Передача дескриптора в блок расчета HASH (107), где обеспечивается идентичность HASH-суммы для обоих потоков сетевой сессии, а HASH-сумма рассчитывается не по отдельным полям заголовков пакетов, а по сумме IP-адресов получателя и отправителя, сумме TCP/UDP-портов получателя и отправителя и коду протокола L4. Суммирование полей IP-адресов и TCP/UDP-портов позволяет обеспечить одинаковую HASH-сумму при перестановке местами вышеуказанных полей. HASH-сумма вычисляется по алгоритму счетчика с аутентификацией Галуа. Код протокола L4 указывает номер протокола в поле «протокол» заголовка пакета IPv4 (данные какого протокола содержит пакет, например, TCP, UDP, или ICMP) или в поле «Следующий заголовок» пакета IPv6. Разрядность счетчика с аутентификацией Галуа выбирается исходя из условия, чем больше разрядность, тем лучше равномерность распределения и, следовательно, выше идентичность балансировки потоков трафика.
7. Блок балансировки (108) на основе HASH-суммы распределяет пакеты между выходными интерфейсами (109). Каждому выходному интерфейсу соответствует фиксированный набор HASH-сумм. Идентичность балансировки обеспечивается за счет того, что все потоки одной сетевой сессии имеют одинаковую HASH-сумму.
На фиг. 2 показан дескриптор, который содержит информацию: IP-ID (201) – идентификатор пакета, IP-FRAG (202) – идентификатор фрагментации пакета, IP-OFFSET (203) – смещение фрагмента, IP-адрес получателя (204), IP-адрес отправителя (205), порт получателя (206), порт отправителя (207), код протокола L4 (208) и HASH-сумму (209), добавленную в дескриптор блоком расчета HASH (107). Длина битов для соответствующих полей дескриптора может варьироваться в зависимости от версии интернет-протокола.
Формат IP-пакета и структура заголовков, более подробно описаны в спецификации RFC 791 «Internet Protocol DARPA Internet Program Protocol Specification», сентябрь 1981. Протокол TCP, описывается в спецификации RFC 793 «Transmission Control Protocol», сентябрь 1980, протокол UDP, описан в спецификации RFC 768 «User Datagram Protocol», август 1980.
Блок расчета HASH (107) выполняет расчет HASH-суммы на основе алгоритма счетчика с аутентификации Галуа на основе вектора байт, включающего в себя: сумму IP-адресов получателя и отправителя (32 бита), суммы TCP/UDP-портов получателя и отправителя (16 бит) и кода протокола транспортного уровня (8 бит). В результате будет получена HASH-сумма, имеющая Y-биты, где Y является положительным целым числом, например 10 бит.
Счетчик с аутентификацией Галуа (GCM) является разновидностью режима работы симметричных блочных шифров. В алгоритме счетчика с аутентификацией Галуа входные блоки вектора байт нумеруются последовательно, номер блока кодируется блочным алгоритмом. Выход функции шифрования используется в операции XOR «исключающее ИЛИ» с открытым текстом для получения HASH-суммы. Схема представляет собой потоковый шифр, поэтому использование уникального вектора байт гарантирует получение уникальной HASH-суммы. Для алгоритма счетчика с аутентификацией Галуа входные блоки нумеруются последовательно, номер блока шифруется блочным алгоритмом. Выход функции шифрования используется в операции XOR «исключающее ИЛИ» с открытым текстом для получения HASH-суммы. Схема представляет собой потоковый шифр, поэтому использование уникального вектора байт гарантирует получение уникальной HASH-суммы. Значение HASH-суммы, связанной с записью потока данных сетевой сессии, находится в заданном диапазоне значений от 0 до Hmax, например в диапазоне от 0 до 999 или от 0 до 1023.
В GCM используется функция Галуа «Mult» («GHASH (H, A, C)»), которая комбинирует блоки шифротекста и код аутентификации, чтобы получить тег аутентификации. На вход функции подается ключ хеширования H, являющийся результатом шифрования 128 нулевых битов на ключе K, т.е. H=E (K, 0^128). Тег аутентификации используется для проверки целостности сообщения. По каналу передаются: вектор инициализации, блоки шифротекста и код аутентификации (16 байтов).
На фиг. 3 показана таблица соответствия выходных интерфейсов значениям HASH-сумм в блоке балансировки (108) при балансировке на 4 интерфейса, т.е. является таблицей балансировки нагрузки и включает в себя определяемые настройками пользователя номера выходных интерфейсов (индекс очередей). Таблица соответствий записывается в память и является блоком памяти с разрядностью адреса, равным разрядности хеша. В ячейке памяти хранится номер выходного интерфейса, в который должен быть передан пакет с соответствующей HASH-суммой. Например, если HASH-сумма сетевого потока имеет значение от 0 до 255, то блок балансировки (108) на ее основе распределяет пакеты на первый выходной интерфейс, если HASH-сумма сетевого потока имеет значение от 256 до 511, то блок балансировки (108) на ее основе распределяет пакеты на второй выходной интерфейс, если HASH-сумма сетевого потока имеет значение от 512 до 767, то блок балансировки (108) на ее основе распределяет пакеты на третий выходной интерфейс, если HASH-сумма сетевого потока имеет значение от 768 до 1023, то блок балансировки (108) на ее основе распределяет пакеты на четвертый выходной интерфейс.
В предпочтительном варианте осуществления изобретения вышеуказанные логические блоки: блок анализа (фильтр) пакета (102), блок анализа (фильтр) фрагментов (105), блок расчета HASH (107), блок балансировки (108) могут быть реализованы или выполнены на базе перепрограммируемой логической интегральной схемы (ПЛИС) или сверхбольшой интегральной схемы (СБИС). Т.о. эти блоки могут быть реализованы конечным автоматом и несколькими регистрами с соответствующей внутренней логикой и реализуется автоматически, например, из представленного XML-описания сетевого протокола, они управляются микрокодом, хранящимся во встроенной памяти.
Специалисту очевидно, что вышеуказанные логические блоки, схемы/алгоритмы обработки могут быть выполнены с помощью элемента памяти, который записывает обрабатываемые данные и процессора обработки, в качестве которых могут применяться процессор общего назначения, машиночитаемый носитель, конечный автомат или другое аппаратно-программируемое логическое устройство, дискретный логический элемент или транзисторная логика, дискретный компонент аппаратных средств или любого их сочетания, чтобы выполнять описанные выше функции. ПЛИС или СБИС может быть запрограммирована для выполнения предложенного способа и размещена в любом месте компьютерной сети центра обработки данных или брокерах сетевых пакетов (NPB). В частности, может быть запрограммирована на получение пакетов данных из центра обработки данных, вычисление HASH-сумм для каждого пакета данных и вставку HASH-сумм в заголовок пакета данных или дескриптор, как показано на фиг. 2, и выполнение способа, показанного на структурной схеме фиг. 4, используя уравнения, алгоритмы, данные, хранимые значения и вычисления, описанные выше.
Предложенный способ отслеживания фрагментов пакетов в сетевом трафике может выполняться посредством одной или нескольких компьютерных программ, содержащих код компьютерной программы или порции программного обеспечения, исполняющиеся на компьютере или процессоре.
Предложенный способ направлен на обеспечение предварительной обработки трафика с гарантией целостности информационных потоков, передаваемых через TCP/UDP сессии при обработке фрагментированных IP-пакетов, и ориентирован на применение в устройствах на базе ПЛИС или СБИС, например, в NPB, которые работают на уровне пакетов, где правила распределения и агрегации трафика в брокерах сетевых пакетов полностью определяются настройками. В брокерах сетевых пакетов нет стандартов построения таблиц пересылки (MAC-таблиц) и протоколов обмена с другими коммутаторами (типа STP), а поэтому диапазон возможных пользовательских настроек и интерпретируемых полей в них гораздо шире. Брокер может равномерно распределить трафик из одного или нескольких входных портов на заданный диапазон выходных портов с функцией равномерной нагрузки по выходу. Также можно задать правила на копирование, фильтрацию, классификацию, дедупликацию и модификацию трафика. Данные правила можно применять к разным группам входных портов брокера сетевых пакетов, а также применять последовательно друг за другом в самом устройстве.
Варианты осуществления изобретения неявляются исчерпывающими и приведены только с целью пояснения и подтверждения промышленной применимости,и специалисты в данной области техники способны создавать альтернативные варианты его осуществления без отрыва от объема формулы, нов пределах сущности изобретения, отраженной в описании.