Область техники
Изобретение относится к области построения систем анализа сетей передачи данных, а именно к способам высокоскоростного поиска и отслеживания 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, где для каждого возможного из 2∧N значений сжатого вектора балансировки ставится в соответствие номер выходного интерфейса - таблицу балансировки размером 2∧N, где пакеты, принадлежащие одной и той же сессии, имеют одинаковый вектор 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, где для каждого возможного из 2∧N значений сжатого вектора балансировки ставится в соответствие номер выхода/порта-таблицу балансировки размером 2∧N, где пакеты, принадлежащие одной и той же сессии, имеют одинаковый вектор 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.
Предложенный по изобретению способ балансировки с сохранением целостности потоков данных может выполняться посредством одной или нескольких компьютерных программ, содержащих программный код или порции программного обеспечения для исполнения на компьютере/процессоре. Компьютерная программа содержит элементы программного кода, которые побуждают компьютер выполнять заявленный способ.
Варианты осуществления изобретения не являются исчерпывающими и приведены только с целью пояснения и подтверждения промышленной применимости, и специалисты в данной области техники способны создавать альтернативные варианты осуществления без отрыва от объема формулы, но в пределах сущности изобретения, отраженной в описании.
название | год | авторы | номер документа |
---|---|---|---|
Способ отслеживания фрагментов пакетов в сетевом трафике | 2022 |
|
RU2778462C1 |
Способ обеспечения идентичности балансировки для двунаправленного потока данных сетевой сессии | 2022 |
|
RU2786629C1 |
Способ отслеживания сессий в сетевом трафике | 2022 |
|
RU2786178C1 |
Способ динамической фильтрации сетевых пакетов по принадлежности к сессии | 2022 |
|
RU2779135C1 |
Способ фильтрации части пакетов в сетевой сессии | 2022 |
|
RU2790635C1 |
Способ определения дублирующихся пакетов в потоке сетевого трафика | 2022 |
|
RU2790636C1 |
Способ фильтрации сетевого трафика на основе правил с маской при пакетной коммутации | 2022 |
|
RU2795295C1 |
Способ работы кластера шлюзов безопасности | 2021 |
|
RU2757297C1 |
СПОСОБ УПРАВЛЕНИЯ СОЕДИНЕНИЯМИ В МЕЖСЕТЕВОМ ЭКРАНЕ | 2012 |
|
RU2517411C1 |
Способ работы межсетевого экрана | 2017 |
|
RU2667805C1 |
Изобретение относится к области систем анализа сетей передачи данных, а именно к способам балансировки с сохранением целостности потоков данных с учетом принадлежности к сессиям протоколов TCP/UDP. Техническим результатом является обеспечение функционирования устройств предварительной обработки трафика с балансировкой пакетов без разрыва сессий при изменении параметров балансировки. Технический результат достигается тем, что предложен способ балансировки с сохранением целостности потоков данных, в котором выделяются поля пакетов в виде битового вектора - дескриптора, тело пакета сохраняется в SRAM-памяти на время обработки, далее из сформированного вектора заголовков пакета строится hash 5-tuple сессии, который подается в качестве адреса в DDR-память хранилища сессий. Данными, получаемыми из памяти, являются запомненные параметры сессии, если отмечено, что сессия уже встречалась, тогда переиспользуется выход, задействованный в предыдущий раз, а если выходной интерфейс для сессии в параметрах, полученных из DDR-памяти хранилища сессий не определен или прошел таймаут сессии - происходит определение нового выхода для сессии. Одновременно с этим параметры сессии записываются/обновляются в DDR хранилище сессий. Выходом таблицы балансировки является номер выходного интерфейса для сессии, в который тело пакета извлекается из пакетного буфера и выдается в выбранный выходной интерфейс. 1 з.п. ф-лы, 4 ил.
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 секунд, то происходит определение нового выходного интерфейса для сессии.
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 |
Авторы
Даты
2023-11-21—Публикация
2023-08-31—Подача