Способ фильтрации части пакетов в сетевой сессии
Владельцы патента RU 2790635:
Акционерное общество "Научно-производственное предприятие " Цифровые решения" (RU)
Изобретение относится к области обработки сетевого трафика. Техническим результатом изобретения является обеспечение фильтрации пакетов для TCP/UDP-сессии в устройствах предварительной обработки. В способе на основе IP-адресов и TCP/UDP-портов принятого пакета рассчитывается HASH-сумма. В ячейке RAM-памяти, адрес которой равен полученной HASH-сумме, выполняется поиск информации об уже принятом пакете с такой же HASH-суммой, принадлежащего к той же сессии. По результатам сравнения счетчика принятых пакетов TCP-сессии и анализа наличия флагов SYN или FIN в TCP-заголовке, или времени, когда был принят последний пакет сессии, используемого для учета времени в UDP-сессиях, принимается решение о передаче пакета в выходной интерфейс или его удалении. 3 ил.
Область техники
Изобретение относится к области построения систем мониторинга и анализа сетей передачи данных, а именно к методам высокоскоростного поиска и отслеживания TCP/UDP-сессий в высоконагруженных сетях, может быть использовано в устройствах предварительной обработки для систем глубокого анализа сетевого трафика, поддерживающих стек протоколов TCP/UDP/IP. Заявляемый способ направлен на обеспечение функции фильтрации части пакетов, принадлежащих к сессиям протоколов TCP/UDP, и может быть применен в устройствах предварительной обработки сетевого трафика.
Уровень техники
Известен способ динамической фильтрации пакетов с использованием отслеживания сессий патент JP 4162210 B2, H04L12/66, 24.12.2004, «Dynamic packet filter using session tracking», его недостатком является невозможность избирательной фильтрации пакетов сессии.
Техническим результатом предложенного изобретения является обеспечение передачи начальных и завершающих пакетов TCP/UDP-сессии и фильтрации остальных пакетов сессии.
Поставленный технический результат достигается тем, что предложен способ фильтрации части пакетов в сетевой сессии, заключающийся в динамической фильтрации пакетов с использованием отслеживания TCP/UDP-сессий, где пакет после приема передается в блок анализа пакета, в котором выполняется выделение из пакета IP и TCP/UDP-заголовков и формирование на их основе дескриптора, далее пакет сохраняется в пакетный буфер, а дескриптор – в буфер дескрипторов и затем передается в блок расчета HASH, в котором на основе полей заголовков пакета, включающих IP-адреса получателя и отправителя, TCP/UDP-порты получателя и отправителя, рассчитывается HASH-сумма по алгоритму счетчика с аутентификацией Галуа, в одной ячейке RAM-памяти содержатся записи с информацией о четырех сессиях для случаев, когда несколько TCP/UDP-сессий могут иметь одинаковое значение HASH-суммы, при этом указанная информация включает в себя IP-адрес получателя, IP-адрес отправителя, TCP/UDP-порт получателя, TCP/UDP-порт отправителя, время, когда был принят последний пакет сессии, счетчик количества принятых пакетов сессии, затем блок отслеживания сессий проверяет в ячейке RAM-памяти, адрес которой равен HASH-сумме, наличие информации, состоящей из полей заголовков пакета, по которым выполнялся расчет HASH-суммы, об уже принятом пакете с такой же HASH-суммой, если в ячейке уже присутствует информация, то выполняется ее сравнение с данными из дескриптора пакета, если информация совпадает и пакет не содержит флага SYN в TCP-заголовке, то считается, что пакет принадлежит к уже существующей сессии и выполняется инкремент (увеличение значения) счетчика количества принятых пакетов сессии и сравнение счетчика с настраиваемым значением, задающим порог, после которого пакеты сессии удаляются, если счетчик количества принятых пакетов сессии превысил порог и пакет не содержит флаг FIN в TCP-заголовке или время превысило установленное значение для UDP-сессий, то принимается решение об удалении пакета, которое передается в блок удаления пакетов, если информация совпадает, но в пакете присутствует флаг SYN в TCP-заголовке, то выполняется присвоение нового идентификатора сессии и в ячейку RAM-памяти заносится информация о текущем пакете, если информация не совпадает, то аналогичным образом проверяются остальные три записи, в случае отсутствия совпадений информации создается новая запись в ячейке RAM-памяти, после чего блок удаления пакетов при наличии решения об удалении выполняет операцию удаления пакета из пакетного буфера, в противном случае передает пакет в выходной интерфейс.
Пороговое значение количества пакетов TCP-сессии и пороговое значение времени UDP-сессии, после достижения которых пакеты сессии удаляются при соблюдении вышеуказанных условий, может записываться заранее оператором через несвязанный с сетью конфигурационный интерфейс, первоначально при настройке (инициализации) устройства и не меняются в течение всего времени его работы. Пороговое значение количества пакетов TCP-сессии находится в диапазоне от 1 до 63, пороговое значение времени UDP-сессии находится в диапазоне от 10 мс до 30 с. Пороговые значения задаются оператором в зависимости от характера сетевого трафика, организационных, эксплуатационных требований.
Проведенный анализ уровня техники позволяет определить, что предложенное техническое решение является новым и имеет изобретательский уровень, а возможность его использования в промышленности определяет его как промышленно применимое.
Эти и другие аспекты станут очевидными и будут объяснены со ссылками на чертеж и вариант осуществления, описанный в дальнейшем.
Изобретение поясняется следующими графическими материалами:
Фиг. 1 – схема, иллюстрирующая функциональные блоки, реализующие предложенный способ фильтрации части пакетов в сетевой сессии.
Фиг. 2 – схема, иллюстрирующая структуру дескриптора.
Фиг. 3 – схема, иллюстрирующая структуру хранения в памяти информации о сессиях.
Осуществление изобретения
Предложенный способ отслеживания сессий позволяет сохранять в памяти результат обработки пакетов и применять его для обработки последующих пакетов данной сессии. Сессия пакетов – набор пакетов, имеющих одинаковые адреса отправителя и получателя, порты отправителя и получателя и протокол (IP и TCP/UDP-заголовков). При этом формат 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.
Флаг SYN обозначает начало соединения и синхронизирует порядковые номера. Первый отправленный пакет должен иметь установленным этот флаг.
Флаг FIN сообщает, что все пакеты были отправлены, и соединение можно завершить. Позволяет контролировать порядок сообщений, как порт источника, так и порт назначения будут поддерживать свой уникальный порядковый номер для отправляемых сообщений.
Для достижения поставленного технического результата выполняются следующие операции:
Оператором на этапе инициализации устройства через несвязанный с сетью конфигурационный интерфейс задается пороговое значение количества пакетов TCP сессии и пороговое значение времени UDP сессии, после достижения которых пакеты сессии удаляются. Данные пороговые значения остаются неизменным до тех пор, пока не будут изменены оператором.
Прием пакета через входной интерфейс (101), после приема пакета выполняется анализ и выделение заголовков пакета. Для этого пакет передается в блок анализа пакета (102), в котором выполняется выделение из пакета IP и TCP/UDP-заголовков. Пакет сохраняется в пакетном буфере (103) до момента принятия решения о наборе действий, выполняемых над пакетом. На основе информации о пакете и его заголовков формируется дескриптор пакета, показанный на фиг.2, который сохраняется в отдельный буфер дескрипторов (104). Информация включает в себя IP-адрес получателя (201), IP-адрес отправителя (202), порт получателя (203), порт отправителя (204), время, когда был принят последний пакет сессии (205) и счетчик количества принятых пакетов сессии (206).
Дескриптор передается в блок расчета HASH (105), в котором на основе полей заголовков пакета (IP-адресов и TCP/UDP-портов получателя и отправителя) рассчитывается HASH-сумма по алгоритму счетчика с аутентификацией Галуа. Так можно выполнять побитовую логическую операцию «исключающее ИЛИ» (XOR) над соответствующими битами IP-адреса получателя (32 бит), IP-адреса отправителя (32 бит), порта получателя (16 бит), порта отправителя (16 бит) и отправлять результаты операции побитового «исключающее ИЛИ» (XOR) и генерировать HASH-сумму, имеющую Y-биты, где Y является положительным целым числом, например, для указанного примера 10 бит. В алгоритме счетчика с аутентификацией Галуа (GCM) входные блоки вектора байт нумеруются последовательно, номер блока кодируется блочным алгоритмом. Выход функции шифрования используется в операции XOR (исключающее ИЛИ) с открытым текстом для получения HASH-суммы. Схема представляет собой потоковый шифр, поэтому использование уникального вектора байт гарантирует получение уникальной HASH-суммы.
Для обработки в случае, когда несколько TCP/UDP-сессий имеют одинаковое значение HASH-суммы, в одной ячейке RAM-памяти (107) может содержатся запись с информацией о четырех сессиях. Информация включает в себя IP-адрес получателя (201), IP-адрес отправителя (202), порт получателя (203), порт отправителя (204), время, когда был принят последний пакет сессии (205), используемого для учета времени в UDP-сессиях, в случае превышения которого считается, что сессия закрыта, и счетчик количества принятых пакетов сессии (206). Установлено, что при хранении информации о четырех сессиях вероятность коллизии ничтожно мала. В одной ячейке RAM-памяти (107) содержатся записи с информацией о четырёх сессиях (HASH №1, HASH №2, HASH №3, HASH №4), где адрес ячейки равняется HASH-сумме, как показано на фиг.3. Таким образом, для разрешения коллизий, возникающих при отслеживании сессии с одинаковым значением HASH-суммы, наличие записей о четырех сессиях является необходимым и достаточным.
Блок отслеживания сессий (106) проверяет в ячейке RAM-памяти (107), адрес которой равен HASH-сумме, наличие информации, состоящей из полей заголовков пакета, по которым выполнялся расчет HASH-суммы, об уже принятом пакете с такой же HASH-суммой, если в ячейке уже присутствует информация, то выполняется ее сравнение с данными из дескриптора полученного пакета. Если информация совпадает и пакет не содержит флага SYN в TCP-заголовке, то считается, что пакет принадлежит к уже существующей сессии и выполняется инкремент счетчика количества принятых пакетов сессии (206) и сравнение счетчика с задаваемым оператором настраиваемым значением, задающим порог, после которого пакеты сессии удаляются. Если счетчик количества принятых пакетов сессии превысил порог и пакет не содержит флага FIN в TCP-заголовке или время превысило установленное значение для UDP-сессий, то принимается решение об удалении пакета, которое передается в блок удаления пакетов (108). Если информация совпадает, но в пакете присутствует флаг SYN в TCP-заголовке, то выполняется присвоение нового идентификатора сессии и в ячейку RAM-памяти (107) заносится информация о текущем пакете. Если информация не совпадает, то аналогичным образом проверяются остальные три записи. В случае отсутствия совпадений информации создается новая запись в ячейке RAM-памяти (107).
Блок удаления пакетов (108) при наличии решения об удалении выполняет операцию удаления пакета из пакетного буфера (103), если решение об удалении пакета не принято, то пакет передается в выходной интерфейс (109).
В предпочтительном варианте осуществления изобретения вышеуказанные логические блоки: блок анализа пакета (102), блок расчета HASH (105), блок отслеживания сессий (106), блок удаления пакетов (108), могут быть реализованы или выполнены на базе перепрограммируемой логической интегральной схемы (ПЛИС) или сверхбольшой интегральной схемы (СБИС). Блоки могут быть реализованы конечным автоматом и несколькими регистрами с соответствующей внутренней логикой и реализуется автоматически, например, из представленного XML-описания сетевого протокола, они управляются микрокодом, хранящимся в встроенной памяти. Специалисту очевидно, что вышеуказанные логические блоки, схемы обработки могут быть выполнены с помощью элемента памяти, который записывает обрабатываемые данные и процессора обработки, в качестве которых могут применяться процессор общего назначения, машиночитаемый носитель, конечный автомат или другое аппаратно-программируемое логическое устройство, дискретный логический элемент или транзисторная логика или любого их сочетания, чтобы выполнять описанные выше функции.
В качестве конфигурационного интерфейса для настройки, в зависимости от элементной базы, может быть использован стандартный цифровой интерфейс, например, PCIe, PCI, SPI и т.д.
Предложенный способ отслеживания сессий в сетевом трафике ориентирован на применение в устройствах на базе ПЛИС или СБИС, например, в брокерах сетевых пакетов (NPB), которые работают на уровне пакетов, где правила распределения и агрегации трафика в брокерах сетевых пакетов полностью определяются настройками. В NPB нет стандартов построения таблиц пересылки (MAC-таблиц) и протоколов обмена с другими коммутаторами (типа STP), а поэтому диапазон возможных пользовательских настроек и интерпретируемых полей в них гораздо шире. Брокер может равномерно распределить трафик из одного или нескольких входных портов на заданный диапазон выходных портов с функцией равномерной нагрузки по выходу. Также можно задать правила на копирование, фильтрацию, классификацию, дедупликацию и модификацию трафика к разным группам входных портов NPB, а также применять последовательно друг за другом в самом устройстве. ПЛИС или СБИС может быть запрограммирована для выполнения предложенного способа и размещена в любом месте компьютерной сети центра обработки данных или NPB.
Предложенный по изобретению способ отслеживания сессий в сетевом трафике может выполняться посредством одной или нескольких компьютерных программ, содержащих код компьютерной программы или порции программного обеспечения, исполняющиеся на компьютере или процессоре. Компьютерная программа содержит элементы кода компьютерной программы или порции программного кода, которые побуждают компьютер выполнять предложенный способ.
Варианты осуществления изобретения не являются исчерпывающими и приведены только с целью пояснения и подтверждения промышленной применимости, и специалисты в данной области техники способны создавать альтернативные варианты его осуществления без отрыва от объема формулы, но в пределах сущности изобретения, отраженной в описании.
Способ фильтрации части пакетов в сетевой сессии, заключающийся в динамической фильтрации пакетов с использованием отслеживания сессий, отличающийся тем, что принятый пакет передается в блок анализа пакета, в котором выполняется выделение из пакета IP и TCP/UDP-заголовков и формирование на их основе дескриптора, далее пакет сохраняется в пакетный буфер, а дескриптор в буфер дескрипторов, и затем передается в блок расчета HASH, в котором на основе полей заголовков пакета, включающих IP-адреса получателя и отправителя, TCP/UDP-порты получателя и отправителя, рассчитывается HASH-сумма по алгоритму счетчика с аутентификацией Галуа, при этом в одной ячейке RAM-памяти содержатся записи с информацией о четырех сессиях для случаев, когда несколько сессий могут иметь одинаковое значение HASH-суммы, при этом информация включает в себя IP-адрес получателя, IP-адрес отправителя, TCP/UDP-порты получателя и отправителя, время, когда был принят последний пакет сессии, счетчик количества принятых пакетов сессии, затем блок отслеживания сессий проверяет в ячейке RAM-памяти, адрес которой равен HASH-сумме, наличие информации, состоящей из полей заголовков пакета, по которым выполнялся расчет HASH-суммы, об уже принятом пакете с такой же HASH-суммой, если в ячейке уже присутствует информация, то выполняется ее сравнение с данными из дескриптора пакета, если информация совпадает и пакет не содержит флага SYN в TCP-заголовке, то считается, что пакет принадлежит к уже существующей сессии и выполняется увеличение значения счетчика количества принятых пакетов сессии и сравнение значения счетчика с настраиваемым значением, задающим порог, после которого пакеты сессии удаляются, если счетчик количества принятых пакетов сессии превысил порог и пакет не содержит флага FIN в TCP-заголовке или время превысило установленное значение для UDP-заголовков, то принимается решение об удалении пакета, которое передается в блок удаления пакетов, если информация совпадает, но в пакете присутствует флаг SYN в TCP-заголовке, то выполняется присвоение нового идентификатора сессии и в ячейку RAM-памяти заносится информация о текущем пакете, если информация не совпадает, то аналогичным образом проверяются остальные три записи, в случае отсутствия совпадений информации создается новая запись в ячейке RAM-памяти, после чего блок удаления пакетов при наличии решения об удалении выполняет операцию удаления пакета из пакетного буфера, в противном случае передает пакет в выходной интерфейс.