Способ глубокого разбора сетевых протоколов для анализа и фильтрации их содержимого
METHOD OF NETWORK PROTOCOL DEEP REVIEW FOR ANALYSIS AND FILTRATION OF THEIR CONTENTS

Изобретение относится к аппаратно-программным комплексам для осуществления беспроводной связи, а именно к способам разбора сетевых протоколов семиуровневой модели OSI для анализа и фильтрации их содержимого.
Модель OSI была известна  ещё в 1970-х [Zimmermann H. OSI reference model–The ISO model of architecture for open systems interconnection //Communications, IEEE Transactions on. – 1980. – Т. 28. – №. 4, . 425-432 с.] и является классикой в области построения сети «Интернет». Также сетевая модель OSI подробно описана в ГОСТ Р ИСО/МЭК 7498-1-99.
Способ высокоскоростного анализа сетевых протоколов 7-го уровня модели OSI (глубокого разбора) требует ЭВМ, содержащую, по меньшей мере, одну сетевую карту для приёма и передачи данных 2-го уровня модели OSI, снабжённую, по меньшей мере, двумя сетевыми интерфейсами (физическими портами). Каждый сетевой интерфейс предоставляет возможность чтения, записи и удаления из его платы памяти, а также возможность передачи данных в другой сетевой интерфейс. Перечисленные действия осуществляются программами, работающими на ЭВМ, где расположен сетевой интерфейс. Каждый сетевой интерфейс обладает устройством кодирования/декодирования сигнала, передающегося по среде передачи посредством радиосигналов либо электрических сигналов для передачи, к примеру, в среде Ethernet (по проводнику), Wi-Fi.
Декодированный сигнал представляет из себя последовательность цифровых пакетов – наборов байт, сохранённых на плате памяти сетевого интерфейса. Аналогично цифровые пакеты, сохранённые в памяти сетевого интерфейса, могут быть закодированы в виде сигнала (радиоволн, электрического сигнала) и переданы по среде передачи другой ЭВМ.
Стандартный способ разбора сетевых пакетов предполагает последовательный разбор от 1-го уровня к 7-му. Сетевой пакет представляет собой множество вложенных друг в друга пакетов, каждый из которых обладает заголовком. Например, переданный по среде передачи Ethernet сетевой  пакет содержит заголовок с адресами сетевого интерфейса отправителя и получателя, типом вложенного в него пакета более высокого уровня, после чего – сам пакет более высокого уровня. Сам пакет более высокого уровня также состоит из адреса отправителя и адреса получателя (к примеру, IP-адресов), прочей служебной информации, после чего – сам пакет более высокого уровня.
Вложенная структура обусловлена вложенностью технологий, используемой в сети Интернет, которая требует кодирования и обеспечения помехоустойчивости,  реализации  адресации внутри локальных сетей, реализации адресации внутри глобальных сетей, реализации  адресации для разбора пришедших данных на ЭВМ и т.д. Каждая подобная вложенность требует отдельного разбора каждого вложенного пакета. В рамках модели OSI используется 7 уровней.
Последовательный разбор пакетов уровень за уровнем является стандартным современным способом глубокого разбора сетевых пакетов  (ГЕТЬМАН А. И. и др. Модель представления данных при проведении глубокого анализа сетевого трафика //Труды Института системного программирования РАН. – 2015. – Т. 27. – №. 4).
Вместе с тем, известные способы не обеспечивают высокоскоростной технологии разбора пакетов для  анализа и фильтрации их содержимого.
Высокоскоростной способ глубокого разбора сетевого трафика обеспечивается, как правило, путем математического ускорения разбора каждого уровня в отдельности, т.е. на ускорение самих вычислений  и на новые средства обработки информации (Bitar A., Abdelfattah M., Betz V. Bringing Programmability to the Data Plane: Packet Processing with a NoC-Enhanced FPGA //Field-Programmable Technology (FPT), 2015 International Conference on. – 2015). Действительно, технологии FPGA позволяют делать вычисления ещё быстрее, но не исчерпывают возможности повышения производительности технологий высокоскоростного глубокого разбора сетевых протоколов.
Известен  способ, реализуемый межсетевым экраном с фильтрацией трафика по мандатным меткам,  который решает задачу разбора пакетов сетевого трафика  с точки зрения сетевой безопасности, а именно известный межсетевой экран предусматривает разбор сетевого пакета в соответствии со спецификацией протокола IP (патент на полезную модель RU №159041, 2015). Следуя спецификации вышеупомянутого ГОСТ Р ИСО/МЭК 7498-1-99 протокол IP находится на 3-м уровне модели OSI. Способ, реализуемый известной межсетевой картой, теряет время на разбор пакета на уровне IP, что не обеспечивает существенного увеличения  производительности процесса разбора сетевых пакетов.
Наиболее близким к предлагаемому является способ для обработки услуги передачи данных, содержащий следующие этапы: прием пакета услуг передачи данных; идентификация информации протокола и/или информации услуги упомянутого пакета услуг передачи данных; отображение информации протокола и/или информации услуги в соответствующее поле типа услуги (ToS) и изменение значения типа услуги упомянутого пакета согласно отображенному полю типа услуги и выполнение планирования очередности для пакета согласно значению типа услуги упомянутого пакета. Идентификация  информации протокола и/или информации услуги упомянутого пакета содержит идентификацию информации протокола и/или информации услуги упомянутого пакета посредством использования технологии глубокой инспекции пакетов (DPI), при этом  информация протокола содержит тип протокола, а информация услуги содержит, по меньшей мере,  информацию качества обслуживания, информацию имени точки доступа, информацию отрезка времени, информацию объема накопленного трафика, информацию накопленной длительности, тип однонаправленного канала и тип услуги. Изменение значения типа услуги упомянутого пакета согласно отображенному полю типа услуги, в частности, содержит создание таблицы переходов согласно отображенному полю типа услуги; запись значения типа услуги, соответствующего потоку данных в элементе таблицы переходов; и изменение значения типа услуги упомянутого пакета, соответствующего потоку данных, на соответствующее значение типа услуги. Перед идентификацией информации протокола и/или информации услуги упомянутого пакета способ содержит запрашивание таблицы переходов согласно информации пятерки элементов IP у пакета данных; и  если в таблице переходов находят соответствующий элемент таблицы переходов, то изменение полей типа услуги всех пакетов, соответствующих потоку, на соответствующее значение типа услуги (заявка на изобретение RU 2012157264, 2014).
Известный способ обработки и разбора сетевых пакетов  позволяет  использовать информацию, полученную  в результате обработки данных проходящего трафика, программой для разбора 7-го уровня модели OSI, однако в нем  не усматривается оптимизаций на уровне получения данных трафика и не предполагается повышение скорости анализа и фильтрации содержимого сетевых пакетов.
Задачей настоящего изобретения является повышение производительности высокоскоростного глубокого разбора сетевых протоколов путем уменьшения  количества вычислений при одновременном получении данных, эквивалентных стандартному способу разбора.
Технический результат – повышение скорости анализа и фильтрации содержимого сетевых пакетов с сохранением качества глубокого разбора сетевых протоколов.
Поставленная задача решается тем, что заявляется способ глубокого разбора сетевых протоколов для  анализа и фильтрации их содержимого путем прохождения сигнала по среде передачи с первого физического уровня семиуровневой модели OSI на второй уровень, где расположены  первый и второй сетевые интерфейсы сетевой карты ЭВМ, в каждом из которых средствами микросхемы сетевого интерфейса осуществляется  декодирование сигналов в последовательность байт, представляющую собой на логическом уровне  множество сетевых пакетов, которые записывают и хранят в памяти первого и второго сетевых интерфейсов, каждый из сетевых интерфейсов имеет регистр управления и по две области памяти, одна область памяти каждого интерфейса предназначена для буферизации входящих пакетов, а вторая область памяти каждого интерфейса предназначена для исходящих пакетов, хранящихся до их кодирования в сигнал и отправки в среду передачи, регистры управления и области памяти каждого интерфейса отображаются в оперативной памяти седьмого уровня, на котором посредством управляющих регистров производится отбор очередей входящих пакетов путем анализа длины заголовков и их фильтрации путем принятия решения пропустить пакет в среду передачи или заблокировать его дальнейшую передачу, управляющая команда с седьмого уровня подается на регистры управления сетевых интерфейсов второго уровня, которые взаимодействуют друг с другом, осуществляя передачу пакетов.
Для осуществления заявляемого способа требуются сетевые карты ЭВМ с как минимум двумя сетевыми интерфейсами и поддержкой программ, обеспечивающих прямой доступ к памяти сетевых интерфейсов. Сетевые карты установлены в компьютере с доступом к сети Интернет, который снабжен операционной системой и прикладными программными средствами (приложениями). Заявляемый способ применим для семиуровневой модели OSI на платформах Linux и FreeBSD. В качестве регистров управления используют процессоры ЭВМ с поддержкой технологии MTRR или его аналога – PAT.
Технология MTRRs (Memory type range registers — Диапазонные регистры типа памяти)  используются для назначения типа (политики кеширования) участкам памяти. Регистры MTRR предоставляют механизм, связывающий типы памяти с физическими адресными диапазонами системной памяти. Они позволяют процессору оптимизировать операции для разных типов памяти, таких как ПЗУ, ОЗУ, кадровый буфер и, отображаемые в памяти устройства ввода-вывода. Они также упрощают разработку системного оборудования, уменьшая количество контактов управляющих памятью, которые использовались для этой цели в ранних процессорах и внешних логических устройствах.
Заявляемый способ по сравнению с известными стандартными способами разбора сетевых протоколов не задействуются уровни 3, 4, 5 и 6, что значительно повышает скорость глубокого разбора полезной части сетевых протоколов, осуществляя необходимый уровень фильтрации и анализа.
Сравнение заявляемого способа с известными позволяет сделать вывод о новой совокупности существенных признаков, которая приводит к достижению нового технического результата. Это позволяет сделать вывод о соответствии заявляемого решения критериям «новизна» и «изобретательский уровень».
Формула заявляемого способа представлена без выделения ограничительной части для лучшего понимания технической сущности и последовательности операций.
Заявляемый способ  осуществляется следующим образом и иллюстрируется следующими схемами:
На Фиг. 1 представлена схема передачи сетевых пакетов из 1-го сетевого интерфейса во 2-й сетевой интерфейс;
На Фиг. 2 представлена схема чтения данных до 7-го уровня;
На Фиг. 3 представлено примерное содержание одного уровня данных.
Сигнал, переданный по среде передачи на физическом уровне, приходит на первый сетевой интерфейс (СИ1) сетевой карты ЭВМ. Средствами микросхемы сетевого интерфейса сигнал декодируется в последовательность байт, представляющую собой на логическом уровне – множество сетевых пакетов. Эти пакеты сохраняются в память первого сетевого интерфейса (СИ1). Память сетевого интерфейса представляет собой две области памяти, структурой данных «очередь» – первый порядок добавления пакетов в «очередь» совпадает с порядком извлечения пакетов из неё. Одна «очередь» используется для буферизации входящих пакетов, вторая «очередь» хранит пакеты до их кодирования в сигнал и отправки в среду передачи. На Фиг.1 они обозначены как «Очередь исходящих» и «Очередь входящих». Области памяти первого сетевого интерфейса, отвечающие за хранение очередей входящей и исходящей, отображаются в оперативную память средствами MTRRs (диапазонных регистров типа памяти) типом fixed range – отображение области данных фиксированного размера. Аналогично – для второго сетевого интерфейса (СИ2) уже в другую область памяти. Регистры управления первым сетевым интерфейсом обеспечивают возможность выполнения команд на первом сетевом интерфейсе: удаление пакета из очереди входящих пакетов, копирование пакета из очереди входящих пакетов первого сетевого интерфейса в очередь исходящих пакетов указанного сетевого интерфейса. Регистры управления вторым  сетевым интерфейсом обеспечивают возможность выполнения команд на втором  сетевом интерфейсе: удаление пакета из очереди входящих пакетов, копирование пакета из очереди входящих пакетов второго сетевого интерфейса в очередь исходящих пакетов указанного сетевого интерфейса.
Регистры управления всех сетевых интерфейсов отображаются в оперативную память ЭВМ средствами MTRRs типом variable range – указатели на произвольные участки памяти для соответствующего сетевого интерфейса. Прикладные программные средства, обеспечивающие исполнение заявляемого способа, выполнены с функцией обеспечения доступа к оперативной памяти, используя её области как общую память (shared memory). Таким образом, программа анализа и фильтрации, анализирующая данные 7-го уровня,  имеет возможность распознавать данные, находящиеся в памяти, отображающей очередь входящих пакетов сетевого интерфейса. Программа анализа данных 7-го уровня при  распознавании «сырого» пакета из очереди входящих пакетов сетевой карты первого интерфейса разбирает пакет и получает данные  7-го уровня следующим образом: распознает данные из пакета 2-го уровня  о его длине и сдвигает указатель (по которому производится распознавание) на эту длину. Аналогично происходит далее, пока указатель не дойдёт до содержимого пакета 7-го уровня. Механизм распознавания передаваемых данных уровень за уровнем иллюстрируется на Фиг.2. Каждый уровень состоит из данных об адресе отправителя, получателя, длины, служебных флагов, управляющих соединением и контрольной суммы. Заявляемый способ пропускает операции  проверки правильности адресов, подсчета контрольной суммы для проверки целостности, не обрабатывает служебные флаги и состояние соединения, сокращая тем самым время на обработку данных каждого уровня. Вместе с тем, для обработки данных при разборе сетевых пакетов, необходимо сохранять информацию о состоянии соединения и проверять, возможен ли данный пакет при данном состоянии соединения. В заявляемом способе разбор и проверка служебной информации каждого уровня не производится, тогда как производится распознавание длины пакета, описанной в заголовке, и игнорирование остальной информации. Содержимое пакета 7-го уровня – это и есть пользовательская информация, которая анализируется прикладными программными средствами (приложениями) глубокого разбора и анализа. В результате проведенного анализа прикладными программными средствами принимается решение: пропустить пакет либо заблокировать и подается соответствующая команда на регистры управления. Для выполнения команды используется область оперативной памяти, отображающая регистры управления из первого сетевого интерфейса, описанные выше. Регистры управления, исходя из команды, записанной в них, либо копируют внутри сетевой карты пакет в очередь исходящих пакетов другого сетевого интерфейса (из первого во второй) и удаляют пакет из своей очереди входящих пакетов (команда «пропустить пакет»), либо просто удаляют пакет из своей очереди входящих пакетов (команда «заблокировать пакет»). Второй интерфейс кодирует пакеты в сигнал по мере появления их в своей очереди исходящих пакетов. Сигнал передаётся в его среду передачи.
Таким образом, при использования заявляемого способа, исключаются накладные расходы на разбор сетевых пакетов с 3-го по 6-й уровень, не требуется множественное копирование данных о сетевых пакетах, не производится проверка правильности заголовков с 3-го по 6-й уровень, но при этом осуществляется глубокая инспекция пакетов и уделяется внимание именно полезному содержимому пакетов (контенту) пользовательской  информации, которая находится на последнем 7-м уровне.
Скорость фильтрации при использовании средств сетевого стека Linux/FreeBSD достигает 100 Мегабит в секунду. В случае использования заявляемого способа высокоскоростного глубокого разбора сетевых протоколов скорость фильтрации достигает 10 Гигабит в секунду.