Способ обеспечения идентичности балансировки для двунаправленного потока данных сетевой сессии
METHOD FOR ENSURING BALANCING IDENTITY FOR BIDIRECTIONAL NETWORK SESSION DATA FLOW

Область техники
Изобретение относится к области построения систем мониторинга и анализа сетей передачи данных, а именно к методам балансировки TCP/UDP сессий в высоконагруженных сетях, может быть использовано в устройствах предварительной обработки для систем глубокого анализа сетевого трафика, поддерживающих стек протоколов TCP/IP. Заявляемый способ направлен на обеспечение идентичности балансировки для двунаправленного потока данных сетевой сессии и может быть применен в устройствах предварительной обработки сетевого трафика.
Уровень техники
Известен способ балансировки для высокоскоростных сетей («Load balancing method of high-speed network», патент CN101977162B, H04L 12/56, 18.01.2012), недостатком его является отсутствие обеспечения идентичности балансировки для двунаправленного потока данных. При балансировке на основе HASH-суммы, рассчитываемой на основе полей сетевых заголовков пакета, важным требованием является обеспечение идентичности балансировки для двух потоков трафика, составляющих сетевую сессию, (поток от клиента к серверу и поток от сервера к клиенту). Эти потоки отличаются перестановкой местами полей IP-адресов и TCP/UDP-портов.
Техническим результатом изобретения является обеспечение идентичности балансировки для двух потоков трафика, составляющих сетевую сессию, чтобы максимизировать пропускную способность.
Поставленный технический результат достигается тем, что предложен способ обеспечения идентичности балансировки для двунаправленного потока данных сетевой сессии, заключающийся в балансировке на основе HASH-сумм полей сетевых заголовков пакетов, принадлежащих к одной сессии для высокоскоростных сетей, отличающийся тем, что пакет после приема передается в блок анализа, в котором выполняется выделение из пакета Ethernet, IP и TCP/UDP-заголовков и формирование на их основе информационного блока – дескриптора, далее пакет сохраняется в пакетный буфер, а дескриптор – в буфер дескрипторов и затем в блок расчета HASH, в котором рассчитывается общая HASH-сумма пакета по сумме IP-адреса получателя и отправителя, сумме TCP/UDP-портов получателя и отправителя и коду протокола L4, например, по алгоритму счетчика с аутентификацией Галуа, затем блок балансировки на основе сравнения значений вычисленной общей HASH-суммы и определенных им в соответствие номеров выходных интерфейсов распределяет пакеты между выходными интерфейсами.
Проведенный анализ уровня техники позволяет определить, что предложенное техническое решение, является новым, и имеет изобретательский уровень, а возможность его использования в промышленности определяет его как промышленно применимый.
Эти и другие аспекты изобретения станут очевидными и будут объяснены со ссылками на чертежи и варианты осуществления, описанные в дальнейшем.
Изобретение поясняется следующими графическими материалами:
Фиг. 1 – схема, иллюстрирующая функциональные блоки, реализующие предложенный способ балансировки.
Фиг. 2 – структура дескриптора.
Фиг. 3 – таблица соответствия выходных интерфейсов значениям HASH в блоке балансировки при балансировке на 4 интерфейса.
Фиг. 4 – блок схема алгоритма обработки данных.
Осуществление изобретения
Для достижения поставленного технического результата выполняются следующие этапы операций:
1 Прием пакета через входной интерфейс (101).
2 Передача пакета в блок анализа пакета (102), в котором выполняется выделение из пакета Ethernet, IP и TCP/UDP-заголовков и формирование на их основе специального информационного блока (дескриптора), который представляет собой блок описываемых данных определенной длины.
3 Сохранение пакета в пакетный буфер (103).
4 Сохранение дескриптора в буфер дескрипторов (104).
5 Передача дескриптора в блок расчета HASH (105). В блоке расчета обеспечивается идентичность HASH-суммы для обоих потоков сетевой сессии, HASH-сумма рассчитывается не по отдельным полям заголовков пакетов, а по сумме IP-адреса получателя и отправителя, сумме TCP/UDP-портов получателя и отправителя и коду протокола L4. Суммирование полей IP-адресов и TCP/UDP-портов позволяет обеспечить одинаковую HASH-сумму при перестановке местами вышеуказанных полей. HASH-сумма вычисляется по алгоритму счетчика с аутентификацией Галуа. Код протокола L4 указывает номер протокола в поле «Протокол» заголовка пакета IPv4 (данные какого протокола содержит пакет, например, TCP, UDP, или ICMP) или в поле «Следующий заголовок» пакета IPv6. Разрядность счетчика с аутентификацией Галуа выбирается исходя из условия, чем больше разрядность, тем лучше равномерность распределения и, следовательно, выше идентичность балансировки для двух потоков трафика.
Блок балансировки (106) на основе HASH-суммы распределяет пакеты между выходными интерфейсами (107). Каждому выходному интерфейсу соответствует фиксированный набор HASH-сумм. Идентичность балансировки обеспечивается за счет того, что все потоки одной сетевой сессии имеют одинаковую HASH-сумму.
Формат 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. На фиг. 2 показан дескриптор, который содержит информацию: IP-адрес получателя (201),IP-адрес отправителя (202), порт получателя (203), порт отправителя (204), код протокола L4 (205) и HASH-сумму (205). Размерность соответствующих полей дескриптора для версии IPv4 показана на фиг. 2.
Блок расчета HASH (105) выполняет расчет 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 в блоке балансировки (106) при балансировке на4 интерфейса, т.е. является таблицей балансировки нагрузки и включает в себя определяемые настройками пользователя номера выходных интерфейсов (индекс очередей). Таблица соответствий записывается в память и является блоком памяти с разрядностью адреса равным разрядности хеша. В ячейке памяти хранится номер выходного интерфейса, в который должен быть передан пакет с соответствующей HASH-суммой. Например, если HASH-сумма сетевого потока имеет значение от 0 до 255, то блок балансировки (106) на ее основе присваивает и распределяет пакеты на первый выходной интерфейс, если HASH-сумма сетевого потока имеет значение от 256 до 511, то блок балансировки (106) на ее основе присваивает и распределяет пакеты на второй выходной интерфейс, если HASH-сумма сетевого потока имеет значение от 512 до 767, то блок балансировки (106) на ее основе присваивает и распределяет пакеты на третий выходной интерфейс, если HASH-сумма сетевого потока имеет значение от 768 до 1023, то блок балансировки (106) на ее основе присваивает и распределяет пакеты на четвертый выходной интерфейс.
В предпочтительном варианте осуществления изобретения вышеуказанные логические блоки: блок анализа пакета (102), блок расчета HASH (105), блок балансировки (106) могут быть реализованы или выполнены на базе перепрограммируемой логической интегральной схемы (ПЛИС) или сверхбольшой интегральной схемы (СБИС). Так эти блоки могут быть реализованы конечным автоматом и несколькими регистрами с соответствующей внутренней логикой и реализуется автоматически, например, из представленного XML-описания сетевого протокола, они управляются микрокодом, хранящимся в встроенной памяти.
Специалисту очевидно, что вышеуказанные логические блоки, схемы/алгоритмы обработки могут быть выполнены с помощью элемента памяти, который записывает обрабатываемые данные, и процессора обработки, в качестве которого могут применяться процессор общего назначения, машиночитаемый носитель, конечный автомат или другое аппаратно-программируемое логическое устройство, дискретный логический элемент или транзисторная логика, дискретный компонент аппаратных средств или любого их сочетания, чтобы выполнять описанные выше функции. ПЛИС или СБИС может быть запрограммирована для выполнения предложенного способа и размещена в любом месте компьютерной сети центра обработки данных или брокерах сетевых пакетов (NPB). В частности, может быть запрограммирована на получение пакетов данных из центра обработки данных, создание HASH-сумм для каждого пакета данных, согласно вышеописанному алгоритму фиг. 4 и вставку HASH-сумм в заголовок пакета данных или дескриптор, как показано на фиг. 2.
Предложенный в изобретении способ обеспечения идентичности балансировки для двунаправленного потока данных сетевой сессии может выполняться посредством одной или нескольких компьютерных программ, содержащих код компьютерной программы или части программного обеспечения, исполняющиеся на компьютере или процессоре. Программный код обеспечивает компьютером или процессором реализацию выполнения способа, показанного на структурной схеме фиг. 4, используя уравнения, алгоритмы, данные, хранимые значения и вычисления, описанные выше.
Предложенный способ направлен на обеспечение идентичности балансировки для двух потоков трафика, составляющих сетевую сессию и ориентирован на применение в устройствах на базе ПЛИС или СБИС, например, в NPB, которые работают на уровне пакетов, где правила распределения и агрегации трафика в брокерах сетевых пакетов полностью определяются настройками. В брокерах сетевых пакетов нет стандартов построения таблиц пересылки (MAC-таблиц) и протоколов обмена с другими коммутаторами (типа STP), а поэтому диапазон возможных пользовательских настроек и интерпретируемых полей в них гораздо шире. Брокер может равномерно распределить трафик из одного или нескольких входных портов на заданный диапазон выходных портов с функцией равномерной нагрузки по выходу. Также можно задать правила на копирование, фильтрацию, классификацию, дедупликацию и модификацию трафика. Данные правила можно применять к разным группам входных портов брокера сетевых пакетов, а также применять последовательно друг за другом в самом устройстве.
Варианты осуществления изобретения не являются исчерпывающими и приведены только с целью пояснения и подтверждения промышленной применимости, и специалисты в данной области техники способны создавать альтернативные варианты его осуществления без отрыва от объема формулы, но в пределах сущности изобретения, отраженной в описании.