Способ балансировки с сохранением целостности потоков данных Российский патент 2023 года по МПК H04L47/125 H04L45/7453 

Описание патента на изобретение RU2807656C1

Область техники

Изобретение относится к области построения систем анализа сетей передачи данных, а именно к способам высокоскоростного поиска и отслеживания TCP/UDP-сессий в высоконагруженных сетях, и может быть использовано в устройствах предварительной обработки для систем глубокого анализа сетевого трафика, поддерживающих стек протоколов ТСР/IP. Заявляемый способ направлен на обеспечение функций балансировки потоков данных сетевых пакетов с сохранением целостности потоков данных.

Уровень техники

Известен классический способ балансировки, в котором для каждого приходящего пакета строится битовый вектор - дескриптор с описанием полей 5-tuple. Полученный вектор сжимается методом хеширования до битового вектора выбранной размерности разрешающей способности балансировки N. Алгоритм балансировки обеспечивает сохранение целостности сессии -пакеты, принадлежащие одной и той же сессии, имеют одинаковый вектор 5-tuple и соответственно попадают на один и тот же выход/порт.

Однако в случае добавления нового выхода к алгоритму балансировки, часть записей в таблице балансировки будет переписана на новый выход. Это приведет к тому, что установленные сессии, выход для которых переписан, будут прерваны. Аналогичная ситуация наблюдается при удалении выхода из балансировки, где сессии удаленных выходов будут перенаправлены на другие выходы/порты, что также приведет к разрыву сессии.

Также из заявки US 20100149966 А1 опуб.2010.07.17 известен способ балансировки нагрузки между множеством хостов, который сохраняет привязку сеанса к данному хосту. Серверы пересылки генерируют функцию маршрутизации, которые учитывают доступность хоста и распределяют сеансовые пакеты в соответствии с такой функцией маршрутизации (например, хеш-функций). Сеанс распределяется на один и тот же хост для сохранения сходства сеансов. Когда доступность хоста изменяется, создается новая функция маршрутизации, так что любой новый сеанс маршрутизируется в соответствии с новой функцией маршрутизации, а существующие сеансы маршрутизируются в соответствии со старой функцией маршрутизации. Имея одинаковую информацию о состоянии/доступности хостов в системе, серверы пересылки независимо генерируют идентичные функции маршрутизации на основе предварительно согласованного статического протокола.

Недостатком известных решений является разрыв сессии при балансировке пакетов в случае добавления нового выхода/порта или удаления уже используемого выхода/порта.

Техническим результатом предложенного изобретения является обеспечение функционирования устройств предварительной обработки трафика с обеспечением балансировки пакетов без разрыва сессий при изменении параметров балансировки.

Поставленный технический результат достигается тем, что предложен способ балансировки с сохранением целостности потоков данных сетевых пакетов, заключающийся в том, что пакет после приема через входной интерфейс (101), передается в блок анализа пакета (102), где выполняется выделение из пакета необходимых полей пакетов - исходного IP-адреса, исходного порта, целевого IP-адреса, целевого порта и типа протокола, и формирование на их основе битового вектора - дескриптора, где тело пакета сохраняется в пакетном буфере на SRAM-памяти (103) до момента принятия решения о наборе действий, выполняемых над пакетом, а дескриптор передается в блок расчета hash 5-tuple сессии (104), где на основе упомянутых полей пакетов дескриптор сжимается методом хеширования до битового вектора выбранной размерности разрешающей способности балансировки N, где для каждого возможного из 2N значений сжатого вектора балансировки ставится в соответствие номер выходного интерфейса - таблицу балансировки размером 2N, где пакеты, принадлежащие одной и той же сессии, имеют одинаковый вектор hash 5-tuple и, соответственно, далее должны попасть на один и тот же выходной интерфейс.Hash 5-tuple сессии подается в качестве адреса в DDR-память (105) хранилища сессий, где данными, получаемыми из памяти, являются запомненные параметры сессии, если отмечено, что сессия уже встречалась, тогда переиспользуется выходной интерфейс, задействованный в предыдущий раз, а если выход для сессии в параметрах, полученных из DDR-памяти (105) хранилища сессий не определен или прошел таймаут сессии - происходит определение нового выхода для сессии, при этом рассчитанный блоком расчета hash 5-tuple сессии (104) длиной N бит подается в качестве адреса на пакетный буфер на SRAM-памяти (103) - таблицу балансировки, где выходом таблицы балансировки является номер выходного интерфейса (107), а тело пакета извлекается из пакетного буфера на SRAM-памяти (103) и блоком балансировки (106) выдается в выбранный выходной интерфейс (108).

Проведенный анализ уровня техники позволяет определить, что предложенное техническое решение является «новым» и имеет «изобретательский уровень», а возможность его использования в промышленности определяет его промышленно применимым.

Эти и другие аспекты станут очевидными и будут объяснены со ссылками на чертеж и вариант осуществления, описанный в дальнейшем.

Изобретение поясняется следующими графическими материалами:

Фиг. 1 - схема, иллюстрирующая известный способ балансировки.

Фиг. 2 - схема, иллюстрирующая структуру дескриптора.

Фиг. 3 - схема, иллюстрирующая алгоритм - способ балансировки с сохранением целостности информационных сессий.

Фиг. 4 - схема, иллюстрирующая функциональные блоки, реализующие способ балансировки с сохранением целостности информационных сессий.

Осуществление изобретения

Предложенный способ позволяет балансировать без разрыва сессий при изменении параметров балансировки.

Сессия пакетов - набор пакетов, имеющих одинаковые адреса отправителя и получателя, порты отправителя и получателя и протокол (IP и TCP/UDP-заголовков, кода протокола L4). Формат 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.

Для достижения поставленного технического результата выполняются следующие этапы операций:

Прием пакета через входной интерфейс (101), после приема пакета выполняется анализ и выделение заголовков пакета. Для этого пакет передается в блок анализа пакета (102), в котором выполняется выделение необходимых полей пакетов, например, IP и TCP/UDP-заголовков (исходного IP-адреса, исходного порта, целевого IP-адреса, целевого порта и типа протокола), и формирование на их основе информационного блока - битового вектора (дескриптора), показанного на фиг.2. Информация включает в себя IP-адрес получателя (201), IP-адрес отправителя (202), порт получателя (203), порт отправителя (204), типа протокола (205). Тело пакета сохраняется в статической памяти с произвольным доступом (SRAM-памяти) – пакетный буфер на время обработки до момента принятия решения о наборе действий, выполняемых над пакетом.

Тело пакета сохраняется в пакетном буфере на SRAM-памяти (103) до момента принятия решения о наборе действий, выполняемых над пакетом. На основе информации о пакете и его заголовков формируется дескриптор пакета, показанный на фиг. 2. Из сформированного вектора заголовков пакета (дескриптор) блок расчета hash 5-tuple сессии (104) рассчитывает hash 5-tuple сессии, который подается в качестве адреса в DDR-память (105) хранилища сессий.

Дескриптор сжимается методом хеширования до битового вектора выбранной размерности разрешающей способности балансировки N, где для каждого возможного из 2N значений сжатого вектора балансировки ставится в соответствие номер выхода/порта-таблицу балансировки размером 2N, где пакеты, принадлежащие одной и той же сессии, имеют одинаковый вектор hash 5-tuple и, соответственно, далее должны попасть на один и тот же выходной интерфейс. Для этого блок расчета hash 5-tuple сессии (104) рассчитывает hash-сессии на основе полей дескриптора (IP-адресов получателя и отправителя, TCP/UDP-портов получателя и отправителя, кода протокола L4), где кортеж (tuple) состоит из исходного IP-адреса, исходного порта, целевого IP-адреса, целевого порта и типа протокола, как показано на фиг. 2. Кортеж из пяти параметров однозначно идентифицирует сеанс TCP/UDP-сессии. На основе пяти полей дескриптора рассчитывается hash-сумма, например, по алгоритму счетчика с аутентификацией Галуа (GCM) или выполнением побитовой логической операции «исключающее ИЛИ» (XOR) над соответствующими битами IP-адреса получателя (32 бит), IP-адреса отправителя (32 бит), порта получателя (16 бит), порта отправителя (16 бит), типа протокола (8 бит) и отправляет результаты операции побитового «исключающее ИЛИ» и генерирует hash-сумму, имеющую Y-биты, где Y является положительным целым числом. В алгоритме счетчика с аутентификацией Галуа (GCM) входные блоки вектора байт нумеруются последовательно, номер блока кодируется блочным алгоритмом. Выход функции шифрования используется в операции «исключающее ИЛИ» с открытым текстом для получения hash-суммы. Схема представляет собой потоковый шифр, поэтому использование уникального вектора байт гарантирует получение уникальной hash-суммы. Разрядность счетчика с аутентификацией Галуа (GCM) выбирается исходя из условия, чем больше разрядность, тем лучше равномерность распределения и, следовательно, выше идентичность балансировки потоков трафика.

Одновременно с этим сформированные параметры сессии записываются в DDR-память (105). Данными, получаемыми из DDR-памяти, являются запомненные параметры сессии. Если отмечено, что сессия уже встречалась, тогда переиспользуется выход, задействованный в предыдущий раз. Если выход для сессии в параметрах, полученных из DDR-памяти (105), не определен или прошел таймаут сессии - происходит определение нового выхода для сессии. Таким образом, проверяется в ячейке SRAM-памяти сессий, адрес которой равен hash-сумме, наличие информации, состоящей из полей заголовков пакета, по которым выполнялся расчет hash-суммы, об уже принятом пакете с такой же hash-суммой, если в ячейке уже присутствует информация, то выполняется ее сравнение с данными из дескриптора, если информация совпадает, то для пакета переиспользуется выход, задействованный в предыдущий раз.

В TCP-протоколе начало сессии определяется либо по флагу SYN начала сессии, либо, если флаг не установлен, по таймауту - если в течение времени «Limit_T» не было пакетов данной сессии - считается, что сессия новая. Когда сессия открыта, информация о ней записывается в память. Окончание сессии определяется флагом RST, FIN либо таймаутом «Limit_T». В UDP-протоколе не используется аналогичный флаг, поэтому решение принимается в случае, если в течение времени «Limit_T» выход/порт для сессии в параметрах, полученных из DDR-памяти (105), не определен или прошел таймаут сессии -происходит определение нового выхода/порта для сессии.

Проверяется временной интервал между пакетами сессии, и если он превышает порог таймаута «Limit_T» (например, более 30 секунд), то происходит определение нового выхода/порта для сессии. Для этого рассчитанный блоком расчета hash 5-tuple сессии (104) длиной N бит подается в качестве адреса на пакетный буфер - SRAM таблицу балансировки, где выходом таблицы балансировки является номер выходного интерфейса (107) для сессии. Блок балансировки (106) на основе hash 5-tuple сессии распределяет пакеты между выходными интерфейсами (107). Каждому интерфейсу соответствует фиксированный набор hash 5-tuple сессии. Идентичность балансировки обеспечивается за счет того, что все потоки одной сетевой сессии имеют одинаковую hash-сумму. Тело пакета извлекается из пакетного буфера на SRAM-памяти (103) и блоком балансировки (106) выдается в выбранный выходной интерфейс (107).

В предпочтительном варианте осуществления изобретения указанные логические блоки: блок анализа пакета, блок расчета hash 5-tuple сессии, блок балансировки реализованы на базе перепрограммируемой логической интегральной схемы (ПЛИС) или сверхбольшой интегральной схемы (СБИС). Блоки могут быть реализованы конечным автоматом и несколькими регистрами с соответствующей внутренней логикой и реализуются автоматически, например, из представленного XML-описания сетевого протокола, они управляются микрокодом, хранящимся во встроенной памяти. Специалисту очевидно, что вышеуказанные логические блоки, схемы/алгоритмы обработки могут быть выполнены с помощью элемента памяти, который записывает обрабатываемые данные и процесс обработки, в качестве которых могут применяться: процессор общего назначения, машиночитаемый носитель, конечный автомат или другое аппаратно-программируемое логическое устройство, транзисторная логика или любое их сочетание, чтобы выполнять описанные выше функции.

Предложенный способ балансировки с сохранением целостности потоков данных ориентирован на применение в устройствах на базе ПЛИС или СБИС, например, в брокерах сетевых пакетов (NPB), которые работают на уровне пакетов, где правила распределения и агрегации трафика полностью определяются настройками. В NPB нет стандартов построения таблиц пересылки (МАС-таблиц) и протоколов обмена с другими коммутаторами (типа STP), а поэтому диапазон возможных пользовательских настроек и интерпретируемых полей в них гораздо шире. Брокер может равномерно распределить трафик из одного или нескольких входных портов на заданный диапазон выходных портов с функцией равномерной нагрузки по выходу. Также можно задать правила на копирование, фильтрацию, классификацию, дедупликацию и модификацию трафика к разным группам входных портов NPB, а также применять последовательно друг за другом в самом устройстве. ПЛИС или СБИС может быть запрограммирована для выполнения предложенного способа и размещена в любом иерархическом месте компьютерной сети центра обработки данных или NPB.

Предложенный по изобретению способ балансировки с сохранением целостности потоков данных может выполняться посредством одной или нескольких компьютерных программ, содержащих программный код или порции программного обеспечения для исполнения на компьютере/процессоре. Компьютерная программа содержит элементы программного кода, которые побуждают компьютер выполнять заявленный способ.

Варианты осуществления изобретения не являются исчерпывающими и приведены только с целью пояснения и подтверждения промышленной применимости, и специалисты в данной области техники способны создавать альтернативные варианты осуществления без отрыва от объема формулы, но в пределах сущности изобретения, отраженной в описании.

Похожие патенты RU2807656C1

название год авторы номер документа
Способ отслеживания фрагментов пакетов в сетевом трафике 2022
  • Бадин Михаил Викторович
  • Михайлов Алексей Михайлович
  • Плотко Сергей Алексеевич
RU2778462C1
Способ обеспечения идентичности балансировки для двунаправленного потока данных сетевой сессии 2022
  • Бадин Михаил Викторович
  • Михайлов Алексей Михайлович
  • Плотко Сергей Алексеевич
RU2786629C1
Способ отслеживания сессий в сетевом трафике 2022
  • Бадин Михаил Викторович
  • Михайлов Алексей Михайлович
  • Плотко Сергей Алексеевич
RU2786178C1
Способ динамической фильтрации сетевых пакетов по принадлежности к сессии 2022
  • Бадин Михаил Викторович
  • Михайлов Алексей Михайлович
  • Плотко Сергей Алексеевич
RU2779135C1
Способ фильтрации части пакетов в сетевой сессии 2022
  • Шабалов Александр Александрович
  • Бадин Михаил Викторович
  • Михайлов Алексей Михайлович
  • Плотко Сергей Алексеевич
RU2790635C1
Способ определения дублирующихся пакетов в потоке сетевого трафика 2022
  • Бадин Михаил Викторович
  • Михайлов Алексей Михайлович
  • Плотко Сергей Алексеевич
RU2790636C1
Способ фильтрации сетевого трафика на основе правил с маской при пакетной коммутации 2022
  • Бадин Михаил Викторович
  • Михайлов Алексей Михайлович
  • Плотко Сергей Алексеевич
RU2795295C1
Способ работы кластера шлюзов безопасности 2021
  • Гузев Олег Юрьевич
  • Тычина Леонид Анатольевич
RU2757297C1
СПОСОБ УПРАВЛЕНИЯ СОЕДИНЕНИЯМИ В МЕЖСЕТЕВОМ ЭКРАНЕ 2012
  • Иванов Александр Вячеславович
RU2517411C1
Способ работы межсетевого экрана 2017
  • Оладько Алексей Юрьевич
RU2667805C1

Иллюстрации к изобретению RU 2 807 656 C1

Реферат патента 2023 года Способ балансировки с сохранением целостности потоков данных

Изобретение относится к области систем анализа сетей передачи данных, а именно к способам балансировки с сохранением целостности потоков данных с учетом принадлежности к сессиям протоколов TCP/UDP. Техническим результатом является обеспечение функционирования устройств предварительной обработки трафика с балансировкой пакетов без разрыва сессий при изменении параметров балансировки. Технический результат достигается тем, что предложен способ балансировки с сохранением целостности потоков данных, в котором выделяются поля пакетов в виде битового вектора - дескриптора, тело пакета сохраняется в SRAM-памяти на время обработки, далее из сформированного вектора заголовков пакета строится hash 5-tuple сессии, который подается в качестве адреса в DDR-память хранилища сессий. Данными, получаемыми из памяти, являются запомненные параметры сессии, если отмечено, что сессия уже встречалась, тогда переиспользуется выход, задействованный в предыдущий раз, а если выходной интерфейс для сессии в параметрах, полученных из DDR-памяти хранилища сессий не определен или прошел таймаут сессии - происходит определение нового выхода для сессии. Одновременно с этим параметры сессии записываются/обновляются в DDR хранилище сессий. Выходом таблицы балансировки является номер выходного интерфейса для сессии, в который тело пакета извлекается из пакетного буфера и выдается в выбранный выходной интерфейс. 1 з.п. ф-лы, 4 ил.

Формула изобретения RU 2 807 656 C1

1. Способ балансировки с сохранением целостности потоков данных сетевых пакетов, в котором пакет после приема через входной интерфейс (101) передается в блок анализа пакета (102), где выполняется выделение из пакета необходимых полей пакетов – исходного IP-адреса, исходного порта, целевого IP-адреса, целевого порта и типа протокола и формирование на их основе битового вектора – дескриптора, отличающийся тем, что тело пакета сохраняется в пакетном буфере на SRAM-памяти (103) до момента принятия решения о наборе действий, выполняемых над пакетом, а дескриптор передается в блок расчета hash 5-tuple сессии (104), где дескриптор сжимается методом хеширования до битового вектора выбранной размерности разрешающей способности балансировки N, где для каждого возможного из 2^N значений сжатого вектора балансировки – дескриптора ставится в соответствие номер выходного интерфейса, а пакеты, принадлежащие одной и той же сессии, имеют одинаковый вектор hash 5-tuple и, соответственно, далее должны попасть на один и тот же выходной интерфейс, результат расчета hash 5-tuple сессии подается в качестве адреса в DDR-память (105) хранилища сессий, где данными, получаемыми из памяти, являются запомненные параметры сессии, если отмечено, что сессия уже встречалась, тогда переиспользуется выходной интерфейс, задействованный в предыдущий раз, а если выход для сессии в параметрах, полученных из DDR-памяти (105) хранилища сессий не определен или прошел таймаут сессии – происходит определение нового выхода для сессии, при этом рассчитанный блоком расчета hash 5-tuple сессии (104) длинной N бит подается в качестве адреса на пакетный буфер на SRAM-памяти (103) – таблицу балансировки, где выходом таблицы балансировки является номер выходного интерфейса для сессии (107), а тело пакета извлекается из пакетного буфера на SRAM-памяти (103) и блоком балансировки (106) выдается в выбранный выходной интерфейс (107).

2. Способ по п.1, отличающийся тем, что при проверке таймаута сессии осуществляют проверку временного интервала между пакетами сессии, и если он превышает порог таймаута «Limit_T» более 30 секунд, то происходит определение нового выходного интерфейса для сессии.

Документы, цитированные в отчете о поиске Патент 2023 года RU2807656C1

KR 101214794 B1, 24.12.2012
US 20100149966 A1, 17.06.2010
US 20120230225 A1, 13.09.2012
US 20070297410 A1, 27.12.2007
CN 112565101 A, 26.03.2021
CN 109905320 A, 18.06.2019
CN 109688006 A, 26.04.2019
Способ работы межсетевого экрана 2018
  • Оладько Алексей Юрьевич
RU2679227C1

RU 2 807 656 C1

Авторы

Попенко Павел Иванович

Даты

2023-11-21Публикация

2023-08-31Подача