Способ отслеживания сессий в сетевом трафике
METHOD FOR TRACKING SESSIONS IN NETWORK TRAFFIC

Область техники
Изобретение относится к области построения систем мониторинга и анализа сетей передачи данных, а именно к методам высокоскоростного поиска и отслеживания TCP/UDP сессий в высоконагруженных сетях, может быть использовано в устройствах предварительной обработки для систем глубокого анализа сетевого трафика, поддерживающих стек протоколов TCP/IP. Заявляемый способ направлен на обеспечение функций обработки сетевых пакетов, таких как фильтрация и балансировка, с учетом принадлежности к сессиям протоколов TCP или UDP и может быть применен в устройствах предварительной обработки сетевого трафика.
Уровень техники
Известны способы отслеживания сессий для балансировки нагрузки на серверные системы «Global server load balancing», патент US 7454500 B1, G06F 15/173, 18.11.2008, «Server load balancing using IP option field approach to identify route to selected server», патент US 7088718 B1, H04L 12/28, 08.08.2006, недостатками их являются невозможность обеспечения целостности информационных потоков, передаваемых через TCP/UDP сессии, а также невозможность реализации в устройствах предварительной обработки трафика на базе перепрограммируемой логической интегральной схемы (ПЛИС) или сверхбольшой интегральной схемы (СБИС).
Техническим результатом предложенного изобретения является обеспечение функционирования устройств предварительной обработки трафика с обеспечением целостности информационных потоков, передаваемых через TCP/UDP сессии.
Поставленный технический результат достигается тем, что предложен способ отслеживания сессий в сетевом трафике, заключающийся в отслеживании сессий для балансировки нагрузки на серверные системы, где сетевой пакет после приема передается в блок анализа пакета, в котором выполняется выделение из пакета Ethernet, IP и TCP/UDP-заголовков, кода протокола L4 и формирование на их основе информационного блока – дескриптора, далее пакет сохраняется в пакетный буфер, а дескриптор – в буфер дескрипторов и затем в блок поиска сессии, в котором по алгоритму счетчика с аутентификацией Галуа рассчитывается HASH-сумма сессии по IP-адресам получателя и отправителя, TCP/UDP-портам получателя и отправителя и коду протокола L4, при этом для разрешения коллизий, возникающих при отслеживании сессии на основе HASH-суммы сессии, в одной ячейке RAM-памяти сессий содержатся записи с информацией, по меньшей мере, о четырех сессиях, затем блок поиска сессии проверяет в ячейке RAM-памяти сессий, адрес которой равен HASH-сумме сессии, наличие информации, состоящей из полей заголовков пакета, по которым выполнялся расчет HASH-суммы сессии, об уже принятом пакете с такой же HASH-суммой сессии, если в ячейке уже присутствует информация, то выполняется ее сравнение с данными из дескриптора, если информация о сессии не найдена, то дескриптор передается в блок обработки сессии, в RAM-памяти правил сохраняется набор правил, определяющий правила коммутации, блок обработки сессии выполняет поиск правила, под которое попадает дескриптор, который ведется до первого совпадения, если совпадение не найдено, то пакет отбрасывается, по результатам поиска устанавливается значение поля ACTION в дескриптор и дескриптор передается в блок поиска сессии, который в соответствующую ячейку RAM-памяти сессий записывает значение ACTION из дескриптора, далее блок коммутации на основе значения ACTION либо удаляет пакет из пакетного буфера, либо передает пакет в соответствующий выходной интерфейс.
Проведенный анализ уровня техники позволяет определить, что предложенное техническое решение является новым и имеет изобретательский уровень, а возможность его использования в промышленности определяет его как промышленно применимое.
Эти и другие аспекты станут очевидными и будут объяснены со ссылками на чертеж и вариант осуществления, описанный далее.
Изобретение поясняется следующими графическими материалами:
Фиг. 1 – схема, иллюстрирующая функциональные блоки, реализующие предложенный способ отслеживания сессий в сетевом трафике.
Фиг. 2 – схема, иллюстрирующая пример балансировки с сохранением целостности информационных сессий.
Фиг. 3 – схема, иллюстрирующая структуру дескриптора.
Фиг. 4 – схема, иллюстрирующая структуру записи о сессии в RAM-памяти.
Фиг. 5 – схема, иллюстрирующая структуру правило в RAM-памяти правил.
Фиг.6 – схема, иллюстрирующая структуру хранения в RAM-памяти информации о сессиях.
Фиг. 7 – схема, иллюстрирующая алгоритм отслеживания сессий в сетевом трафике.
Осуществление изобретения
Предложенный способ отслеживания сессий позволяет сохранять в памяти результат обработки пакетов и применять его для обработки последующих пакетов данной сессии. Сессия пакетов – набор пакетов, имеющих одинаковые адреса отправителя и получателя, порты отправителя и получателя и протокол (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), в котором выполняется выделение из пакета Ethernet, IP и TCP/UDP-заголовков, кода протокола L4 и формирование на их основе информационного блока – дескриптора.
Пакет сохраняется в пакетном буфере (103) до момента принятия решения о наборе действий, выполняемых над пакетом. На основе информации о пакете и его заголовков формируется дескриптор, показанный на фиг. 3, который сохраняется в отдельный буфер дескрипторов (104).
Возможна ситуация, что у разных пакетов с разными значениями полей заголовков: IP-адресов, кода протокола L4 и TCP/UDP портов может получиться одна и та же HASH-сумма и по отношению к пакету может быть принято ошибочное решение, чтобы этого не произошло в памяти по одному адресу, который является значением HASH-суммы сессии, хранится до 4-х дескрипторов, если рассчитанная HASH-сумма сессии у данных дескрипторов совпадает.
Установлено, что при хранении информации о 4-х сессиях вероятность коллизии ничтожно мала. В одной ячейке RAM-памяти сессий (105) содержатся записи с информацией о четырёх сессиях (HASH №1, HASH №2, HASH №3, HASH №4), где адрес ячейки равняется HASH-сумме сессии, как показано на фиг. 6. Информация об уже полученных ранее сессиях имеет структуру, показанную на фиг. 4. Таким образом, для разрешения коллизий, возникающих при отслеживании сессии, необходимы записи с информацией о четырех сессиях. В случае балансировки потоки могут разводиться на разные интерфейсы без риска быть в дальнейшем потерянными/отброшенными на других коммутаторах, а при агрегации пакеты из разных интерфейсов могут быть собраны в один, что в целом обеспечивает целостность потока в сетевом трафике.
HASH-сумма сессии рассчитывается на основе данных дескриптора по IP-адресам получателя и отправителя, TCP/UDP-портам получателя и отправителя, коду протокола L4, например, по алгоритму счетчика с аутентификацией Галуа. Можно выполнять, например, побитовую логическую операцию «исключающее ИЛИ» (XOR) над соответствующими битами IP-адреса получателя (32 бит), IP-адреса отправителя (32 бит), кода протокола L4 (8 бит), порта получателя (16 бит), порта отправителя (16 бит) и отправлять результаты операции побитового «исключающее ИЛИ» (XOR) в рандомизатор и генерировать HASH-сумму, имеющую Y-биты, где Y является положительным целым числом, например, для указанного примера – 10 бит.
В алгоритме счетчика с аутентификацией Галуа (GCM) входные блоки вектора байт нумеруются последовательно, номер блока кодируется блочным алгоритмом. Выход функции шифрования используется в операции XOR («исключающее ИЛИ») с открытым текстом для получения HASH-суммы. Схема представляет собой потоковый шифр, поэтому использование уникального вектора байт гарантирует получение уникальной HASH-суммы.
Блок поиска сессии (106) рассчитывает HASH-сумму сессии на основе полей дескриптора (IP-адресов получателя и отправителя, TCP/UDP-портам получателя и отправителя, коду протокола L4), например, по алгоритму счетчика с аутентификацией Галуа и ищет совпадения в RAM-памяти сессий (105), если информация о сессии не найдена, то дескриптор передается в блок обработки сессии (108), при этом n – номер записи для разрешения коллизий. Таким образом проверяется в ячейке RAM-памяти сессий (105), адрес которой равен HASH-сумме, наличие информации, состоящей из полей заголовков пакета, по которому выполнялся расчет HASH-суммы, об уже принятом пакете с такой же HASH-суммой, если в ячейке уже присутствует информация, то выполняется ее сравнение с данными из дескриптора, если информация совпадает, но в пакете присутствует флаг SYN в TCP-заголовке, то выполняется присвоение нового идентификатора выполняемого действия ACTION и в ячейку RAM-памяти сессий заносится информация о текущем пакете, если информация совпадает и пакет не содержит флага SYN в TCP-заголовке, то считается, что пакет принадлежит к уже существующей сессии и к дескриптору пакета добавляется, хранящийся в этой ячейке RAM-памяти сессий, идентификатор ACTION, если информация не совпадает, то аналогичным образом проверяются остальные три записи, в случае отсутствия совпадений информации создается новая запись в ячейке RAM-памяти сессий.
В протоколе TCP предусмотрен флаг SYN начала сессии, как только флаг будет принят, то будет ясно, что сессия открыта и информацию о ней нужно записать в память. В протоколе UDP нет аналогичного флага, поэтому решение о том, можно ли закрывать сессию, принимается в случае, если в течение времени «LIMIT_T» никаких пакетов с одинаковыми контролируемыми полями из заголовка не приходило. Таким образом для UDP-сессий проверяется временной интервал между двумя пакетами сессии и если он превышает установленный Т порог (например, более 30 секунд), то считается, что пришедший пакет относится к новой сессии, а информация об устаревшей сессии удаляется.
В RAM-памяти правил (107) сохранен набор правил, определяющий правила коммутации в определенный выходной интерфейс (110). Правило состоит из значения и маски, маска определяет какие поля значения учитываются при сравнении, например, IP_DST & RULE_IP_DST_MASK == RULE_IP_DST_VAL & RULE_IP_DST_MASK.
Таблица 1. Пример правила в RAM-памяти правил
Возможные типы правил:
0 – IP_DST
1 – IP_SRC
2 – PORT_DST
3 – PORT_SRC
4 – PROTOCOL_CODE
Пример обработки:
Принимается пакет со следующими параметрами IP_DST = 192.168.0.32, IP_SRC = 192.168.0.15, PORT_DST = 443, PORT_SRC = 32457, PROTOCOL_L4 = 6 (TCP).
При поиске правил выполняется последовательное сравнение параметров пакета со значениями в правиле.
Для правила №0
Рассчитывается значение параметра пакета после наложения маски: 192.168.0.32 & 0.0.0.255 = 0.0.0.32. Рассчитывается значение правила после наложения маски: 0.0.0.171 & 0.0.0.255 = 0.0.0.171. Выполняется сравнение с 0.0.0.32 = 0.0.0.171, значит пакет не подпадает под правило №0.
Для правила №1
Рассчитывается значение параметра пакета после наложения маски:443 & 65535 = 443. Рассчитывается значение правила после наложения маски: 443 & 65535 = 443. Выполняется сравнение с 443 = 443, значит пакет подпадает под правило №1 и он будет направлен в порт 3.
Блок обработки сессии (108) выполняет поиск правила, как показано выше, под которое попадает дескриптор. Поиск ведется до первого совпадения, если совпадения не найдено, то пакет отбрасывается. По результатам поиска устанавливается значение поля ACTION в дескриптор («255» – неизвестно, «0» – отбросить, «1: N» – передать в порт от 1 до N) и дескриптор передается в блок поиска сессии (106). На основе идентификатора ACTION принимается решение о действии, выполняемом над пакетом.
Блок поиска сессии (106) в соответствующую ячейку RAM-памяти сессий (105) записывает значение ACTION из дескриптора. Для разных дескрипторов работают разные правила: либо пакет отбросить, либо перенаправить на определённый порт. Таким образом, блок коммутации (109) на основе значения ACTION «0», «255» либо удаляет пакет из пакетного буфера, когда значение «0», либо «1:N» передает пакет в соответствующий выходной интерфейс (110).
Передача трафика одной TCP/UDP-сессии в один выходной порт или трафика одной пары IP-портов (IP-адресов, TCP/UDP-портов) в один выходной порт или трафика от одного пользователя в один выходной порт обеспечивает сохранение целостности сессий при передаче сетевого трафика в сети с множеством устройств обработки сетевого трафика и маршрутизаторов.
В предпочтительном варианте осуществления изобретения вышеуказанные логические блоки: блок анализа пакета (102), блок поиска сессии (106), блок обработки сессии (108), блок коммутации (109), могут быть реализованы или выполнены на базе ПЛИС или СБИС. Блоки могут быть реализованы конечным автоматом и несколькими регистрами с соответствующей внутренней логикой и реализуется автоматически, например, из представленного XML-описания сетевого протокола, они управляются микрокодом, хранящимся во встроенной памяти. Специалисту очевидно, что вышеуказанные логические блоки, схемы/алгоритмы обработки могут быть выполнены с помощью элемента памяти, который записывает обрабатываемые данные из процессора обработки, в качестве которых могут применяться: процессор общего назначения, машиночитаемый носитель, конечный автомат или другое аппаратно-программируемое логическое устройство, дискретный логический элемент или транзисторная логика или любого их сочетания, чтобы выполнять описанные выше функции.
Предложенный способ отслеживания сессий в сетевом трафике ориентирован на применение в устройствах на базе ПЛИС или СБИС, например, в брокерах сетевых пакетов (NPB), которые работают на уровне пакетов, где правила распределения и агрегации трафика в брокерах сетевых пакетов полностью определяются настройками. В NPB нет стандартов построения таблиц пересылки (MAC-таблиц) и протоколов обмена с другими коммутаторами (типа STP), поэтому диапазон возможных пользовательских настроек и интерпретируемых полей в них гораздо шире. Брокер может равномерно распределить трафик из одного или нескольких входных портов на заданный диапазон выходных портов с функцией равномерной нагрузки по выходу. Также можно задать правила на копирование, фильтрацию, классификацию, дедупликацию и модификацию трафика к разным группам входных портов NPB, а также применять последовательно друг за другом в самом устройстве. ПЛИС или СБИС может быть запрограммирована для выполнения предложенного способа и размещена в любом месте компьютерной сети центра обработки данных или NPB.
Предложенный по изобретению способ отслеживания сессий в сетевом трафике может выполняться посредством одной или нескольких компьютерных программ, содержащих код компьютерной программы или порции программного обеспечения, исполняющихся на компьютере или процессоре. Компьютерная программа содержит элементы кода компьютерной программы или порции программного кода, которые побуждают компьютер выполнять предложенный способ.
Варианты осуществления изобретения не являются исчерпывающими и приведены только с целью пояснения и подтверждения промышленной применимости, и специалисты в данной области техники способны создавать альтернативные варианты его осуществления без отрыва от объема формулы, но в пределах сущности изобретения, отраженной в описании.