Область техники, к которой относится изобретение
Изобретение относится к технологиям сетевой связи, в частности, к способам эффективного решения задач обработки сетевых пакетов, таких как маршрутизация (routing), фильтрация (filtering), маршрутизация на основе политик (policy based routing - PBR), трансляция сетевых адресов (network address translation - NAT) и т.д., а также любой комбинации указанных задач.
Уровень техники
В настоящее время широкое распространение получил подход, при котором современное сетевое оборудование строится на основе универсальных аппаратных компонентов. Это вызвано тем, что процесс производства таких компонентов хорошо налажен, вследствие чего их стоимость достаточно мала по сравнению со специализированным оборудованием. Примером универсальных аппаратных компонентов оборудования могут служить х86 и х64 совместимые центральные процессоры (CPU) общего назначения, оперативная память (RAM), сетевые платы (NIC) и т.п.
При этом настройка сетевого оборудования осуществляется администратором сети с использованием высокоуровневого языка конфигурирования путем написания набора правил, в соответствии с которыми сетевое оборудование организует свою деятельность. Набор таких правил далее будет упоминаться как конфигурация сетевого оборудования. Примером конфигурации сетевого оборудования может служить таблица маршрутизации для сетей, работающих на основе протоколов IPv4/IPv6, список контроля доступа (access control list - ACL) и т.д.
Универсальные аппаратные компоненты имеют стандартизированные интерфейсы для взаимодействия между собой, поэтому они являются легко взаимозаменяемыми. При необходимости можно заменить какой-то имеющийся компонент на более новый, и тем самым улучшить производительность всей системы в целом. Однако, в последнее время наблюдается многократный рост пропускной способности сетевых адаптеров, в то время как рост производительности центральных процессоров и оперативной памяти переживает стагнацию. Вследствие этого становится невозможным увеличить производительность сетевого оборудования путем простой замены аппаратных компонентов.
Поэтому, в сложившихся условиях, на первый план выходит задача оптимизации издержек, возникающих при взаимодействии разных аппаратных компонентов, а не задача ускорения отдельно взятого аппаратного компонента. Указанная задача связана с максимально эффективным использованием вычислительных мощностей, доступных в настоящее время.
Одной из важных проблем, препятствующих эффективному использованию вычислительных мощностей сетевого оборудования, является медленная скорость передачи данных между центральным процессором и оперативной памятью. По сути, процессор простаивает весь промежуток времени между моментом отправки запроса на очередной блок данных и моментом получения запрошенного блока данных.
При обработке сетевых пакетов значительная часть запросов к оперативной памяти связана с необходимостью загрузки правил в центральный процессор. С ростом количества правил увеличивается количество запросов к оперативной памяти, соответственно растут и издержки, возникающие при обработке каждого сетевого пакета. Вследствие чего при большом количестве правил время обработки сетевых пакетов становится недопустимо большим.
Несмотря на то, что оборудование на основе универсальных аппаратных компонентов не ориентировано на выполнение задач по обработке сетевых пакетов, тем не менее, оно вполне способно эффективно решать подобные задачи. Однако для этого требуется разработать такой подход к обработке сетевых пакетов, который бы минимизировал издержки, возникающие при взаимодействии аппаратных компонентов этого оборудования.
Существующий уровень техники предоставляет различные способы организации работы компонентов сетевого оборудования для обработки данных.
В качестве патентов-аналогов выбраны патенты, которые основаны на эксплуатации так называемого OpenFlow-совместимого оборудования, а именно следующие изобретения:
1. Патент RU 2 589 340 С2, МПК H04L 12/70, 10.07.2016. - Сетевая система и способ получения данных тега VLAN.
2. Патент RU 2 628 476 С1, МПК H04L 12/70, 17.08.2017. - Коммутирующее устройство, контроллер, способ конфигурирования коммутирующего устройства и способ и система для обработки пакета.
3. Патент RU 2 609 086 С2, МПК H04L 12/70, 30.01.2017. - Сетевое устройство пересылки пакетов (варианты), способ настройки сетевого устройства пересылки пакетов (варианты) и способ пересылки пакета.
4. Патент RU 2 554 543 С2, МПК H04L 12/00, H04L 12/70, 27.06.2015. -Блок связи, система связи, способ связи и носитель записи.
Согласно описанию из Патента RU 2 628 476 «Коммутирующее устройство, контроллер, способ конфигурирования коммутирующего устройства и способ и система для обработки пакета» OpenFlow является протоколом управления между контроллером OpenFlow (OpenFlow Controller, для краткости - контроллер) и коммутатором OpenFlow (OpenFlow Switch, для краткости -коммутатор).
Контроллер управляет поведениями коммутатора предпочтительно с использованием таблицы потоков (Flow Table). Таблица потоков хранится в коммутаторе и формируется из множества записей о потоках (Flow Entry). Каждая запись о потоке включает в себя, как правило, поля соответствия (Match Fields) и команды (Instructions).
Как правило, поле соответствия указывает информацию, которую нужно сопоставить (которая может быть такой информацией, как различные поля заголовка пакета или ID порта, из которого коммутатор принимает пакет), и обеспечивает присвоенное значение информации, которую нужно сопоставить, причем присвоенное значение используется для сравнения с фактическим значением информации, которая относится к пакету и которую нужно сопоставить, а команды включают в себя множество типов команд, которые включают в себя действие (Action), используемое для указания выполнения некой операции над пакетом."
Таким образом, все указанные выше патенты-аналоги имеют тот общий признак с заявленным изобретением, что пакеты обрабатываются в соответствии с набором правил (в OpenFlow это называется Flow Table), где каждое правило (в OpenFlow это называется Flow Entry) в наборе состоит из полей пакетов (в OpenFlow это называется Match Fields) и действий (в OpenFlow это называется Instructions).
Как следует из описания протокола OpenFlow - это протокол управления между контроллером и коммутатором, описывающий возможности коммутатора по обработке сетевых пакетов. При этом реализация таких возможностей в конкретных программно-аппаратных комплексах может быть различна и допускает оптимизацию в соответствии с характеристиками конкретного оборудования. Таким образом, патенты-аналоги направлены на решение проблем, возникающих при эксплуатации уже реализованных OpenFlow-совместимых программно-аппаратных комплексов.
В отличие от патентов-аналогов заявленное изобретение описывает новые способы реализации программно-аппаратных комплексов для обработки сетевых пакетов, в том числе и OpenFlow-совместимых комплексов. Таким образом, патенты-аналоги и заявленное изобретение направлены на решение разных задач. В этом заключается новизна предлагаемого изобретения, в отличие от существующих изобретений.
Наиболее близким к заявленному техническому решению является Патент RU 2 609 086 С2, МПК H04L 12/70, 30.01.2017. - Сетевое устройство пересылки пакетов (варианты), способ настройки сетевого устройства пересылки пакетов (варианты) и способ пересылки пакета. Это техническое решение принято за прототип.
Патент-прототип описывает способ исправления недостатка стандарта OpenFlow версии 1.0, а именно невозможность использования нескольких таблиц (Flow Table). В качестве решения предлагается прогонять сетевой пакет через одну и ту же таблицу несколько раз, но при этом каждый раз с разными значениями полей (Match Fields), конкретно - с разным значением поля "ID порта, из которого коммутатор принимает пакет". Значение этого поля меняется путем отправки пакета в аппаратную петлю. Пакет отправляется в сеть и сразу же возвращается, но уже через другой порт. Таким образом, патент-прототип позволяет имитировать несколько таблиц с помощью одной, путем разбиения записей (Flow Entry) в ней на группы, при этом каждая группа записей реагирует только на пакеты, принятые из определенного порта коммутатора.
Несмотря на достоинства, прототип имеет недостатки. Количество имитируемых таким образом таблиц ограничено количеством портов в коммутаторе. Это существенно ограничивает возможности администратора по конфигурации коммутатора. Кроме того, многократный прогон одних и тех же сетевых пакетов через одну и ту же таблицу негативно сказывается на пропускной способности коммутатора, в худшем случае при имитации N таблиц пропускная способность коммутатора будет падать в N раз.
В отличие от патента-прототипа, заявленное изобретение предлагает администратору более гибкие инструменты для конфигурации сетевого оборудования, при этом пропускная способность сетевого оборудования, независимо от его конфигурации, будет оставаться всегда высокой.
В качестве примера возьмем ту же задачу, которая решалась в патенте-прототипе, но переформулированную в терминах нашего патента, а именно: организация правил в виде нескольких наборов правил.
В патенте-прототипе для того, чтобы отправить сетевой пакет на обработку в следующую таблицу использовалась аппаратная петля. В нашем патенте для того, чтобы отправить сетевой пакет на обработку в следующий набор правил достаточно создать нетерминальное правило с действием, например, JUMP (см. пример 2 и таблицы 6, 7), которое выполнит переход к первому правилу из следующего набора, то есть изменит порядок применения правил к пакету. Отметим, что нетерминальные правила используются только на этапе конфигурирования сетевого оборудования.
Предлагаемое изобретение позволяет преобразовать все исходные наборы правил в один набор примитивных терминальных правил и построить индекс этих правил. На этапе обработки пакетов уже используются преобразованные правила, и, как показано в разделе "Раскрытие изобретения", при этом пропускная способность оборудования не зависит ни от количества исходных правил, ни от количества наборов исходных правил.
Таким образом, предлагаемое изобретение применимо, в том числе, для создания OpenFlow-совместимого оборудования, поддерживающего работу с несколькими таблицами (Flow Table) и обеспечивающего при этом не меньшую (возможно - большую) производительность, чем аналогичное оборудование, поддерживающее работу только с одной таблицей.
Помимо этого, предлагаемое изобретение применимо для создания и других программно-аппаратных комплексов, выполняющих обработку сетевых пакетов в соответствии с заданным набором правил.
Техническая цель заявленного изобретения заключается в увеличении количества сетевых пакетов, которые возможно передать из одного сегмента в сети в другой за единицу времени, соблюдая при этом политику безопасности, установленную администратором сети. То есть целью является увеличение пропускной способности сетевого оборудования с заданной конфигурацией, которое находится на границе сегментов сети.
Классическим подходом достижения этой цели является наращивание количества экземпляров сетевого оборудования и организация балансировки трафика между этими экземплярами. Например, вместо одного межсетевого экрана может использоваться два сетевых экрана и балансировщик трафика, равномерно распределяющий поток сетевых пакетов между межсетевыми экранами, что, в лучшем случае, двукратно увеличит пропускную способность системы в целом. Очевидно, недостатком такого подхода является его высокая стоимость: оборудование необходимо закупить, под него необходимо выделить место в серверном помещении, подвести электроснабжение, организовать его охлаждение и так далее.
Поэтому, целью заявленного изобретения является увеличение пропускной способности оборудования без увеличения количества его экземпляров. Это равнозначно увеличению количества сетевых пакетов, обрабатываемых за единицу времени единицей сетевого оборудования. Такую величину будем называть эффективностью сетевого оборудования.
Таким образом, технический результат, достигаемый при использовании заявленного изобретения, заключается в повышении эффективности сетевого оборудования по обработке сетевых пакетов в соответствии с заданной конфигурацией.
В результате реализации предлагаемого способа организации взаимодействия компонентов сетевого оборудования решаются следующие задачи:
1) минимизируется количество пересылок данных между центральным процессором и другими компонентами системы;
2) не требуется использования новых инструментов настройки от администратора сетевого оборудования;
3) не требуется замены и модификации существующих компонентов системы.
Технический результат достигается за счет реализации способа организации взаимодействия компонентов сетевого оборудования, который характеризуется следующими существенными признаками:
1) (наличие действия или совокупности действий) Способ предполагает наличие предварительного подготовительного этапа работы оборудования. Этот этап заключается в имитации обработки тех пакетов, которые теоретически могли бы прийти на сетевое оборудование с заданной конфигурацией. В процессе этой имитации становится известно, через какие правила пройдет сетевой пакет при попадании в сетевое оборудование. Объединение вместе правил, принадлежащих одному и тому же пути сетевого пакета, позволяет получить набор преобразованных правил, которые с одной стороны эквивалентны исходным, а с другой стороны - являются более простыми, что позволяет построить их индекс и выполнять эффективный поиск по ним.
2) (порядок выполнения действий во времени) Способ предполагает, что подготовительный этап выполняется еще до начала приема первого пакета из сети. Это означает, что между моментом, когда администратор задает новую конфигурацию для оборудования, и моментом, когда оборудование на самом деле начинает работать в соответствии с новой конфигурацией, проходит некоторое время, на практике - до нескольких секунд. Очевидно, что в некоторых случаях это является недостатком, поскольку не позволяет менять конфигурацию оборудования очень часто (несколько раз в секунду). Однако, следует отметить, что затраты на подготовительный этап единовременны, в то время как положительный эффект от выполнения этого этапа длится все время работы оборудования вплоть до применения новой конфигурации. Поэтому, если конфигурация оборудования меняется относительно редко, то предлагаемый способ вполне оправдан.
3) (условия осуществления действий; режим; использование устройств) Способ предполагает возможность подключения дополнительного аппаратного компонента к существующему сетевому оборудованию на основе универсальных аппаратных компонентов. В рамках заявленного изобретения описывается принцип работы дополнительного устройства, способного эффективно преобразовывать набор произвольных правил в набор терминальных примитивных правил. Это дополнительное устройство может использоваться для минимизации времени, необходимого на выполнение подготовительного этапа, что расширяет область применимости заявленного изобретения. В случае, если использование дополнительного устройства затруднено или нецелесообразно, способ предполагает возможность выполнения подготовительного этапа с помощью только имеющихся аппаратных компонентов.
Изобретение иллюстрируется следующими рисунками.
Фиг. 1 - блок-схема архитектуры современной вычислительной системы на базе х86 или х64 совместимого процессора общего назначения;
Фиг. 2 - блок-схема последовательности операций в сетевом оборудовании при обработке сетевого пакета;
Фиг. 3 - блок-схема последовательности операций в сетевом оборудовании при обработке сетевого пакета, иллюстрирующая работу изобретения согласно варианту осуществления «полностью аппаратное решение»;
Фиг. 4 - блок-схема архитектуры современной вычислительной системы на базе х86 или х64 совместимого процессора общего назначения, иллюстрирующая реализацию изобретения согласно варианту осуществления «полностью аппаратное решение»;
Фиг. 5 - блок-схема преобразователя правил в предлагаемом способе;
Фиг. 6 - блок-схема модуля объединения правил в преобразователе правил;
Фиг. 7 - блок-схема реализации способа с помощью полностью аппаратного решения, выполняющего функции преобразования, хранения и поиска правил (вариант 1);
Фиг. 8 - блок-схема реализации способа с помощью аппаратного решения, выполняющего функции преобразования и поиска правил, с хранением исходных и примитивных терминальных правил в оперативной памяти (вариант
2);
Фиг. 9 - блок-схема реализации способа с помощью аппаратного решения, выполняющего функции только преобразования правил (вариант 3);
Фиг. 10 - блок-схема реализации способа, предполагающего снижение количества дополнительных подключаемых аппаратных компонентов (вариант 4).
Раскрытие изобретения
Для раскрытия заявленного изобретения используются следующие термины и определения.
Поле - значение некоторого свойства или атрибута, представленное в числовой форме.
Пакет - специальным образом оформленное сообщение, передаваемое по линиям связи.
Поля пакета - совокупность всех полей, каким-либо образом имеющих отношение к пакету в процессе его обработки. Поле пакета не обязательно является информацией, хранящейся в самом пакете, такой как, например, номер сетевого протокола. Полем пакета может быть информация, необходимая для обработки пакета и хранящаяся в сетевом оборудовании, такая как, например, временная метка приема пакета или номер правила, применяемого к пакету в данный момент времени.
Правило - совокупность набора проверок и упорядоченного набора действий, выполняемых по отношению к полям пакета.
Проверка (правила) - предикат, принимающий один или несколько полей пакета и возвращающий булево значение (1 (проверка пройдена) или 0 (проверка не пройдена)). Примером проверки может служить проверка того, что сумма всех полей пакета является четным числом.
Говорят, что пакет подходит под правило, если все проверки правила, примененные к полям пакета, возвращают положительный результат.
Действие (правила) - операция, выполняемая над полями пакета. Примером действия может служить запись некоторых полей пакета в журнал.
Следующие проверки называются примитивными:
1. Проверка на то, что поле пакета равно заданному значению.
2. Проверка на то, что поле пакета имеет заданный префикс.
3. Проверка на то, что поле пакета находится в заданном диапазоне.
Правило называется примитивным, если все его проверки являются примитивными.
Вердикт - действие, изменяющее порядок применения правил к пакету.
Вердикт называется терминальным, если он завершает процесс применения правил к пакету.
Правило называется терминальным, если оно содержит терминальный вердикт.
Конфигурация (сетевого оборудования) - упорядоченный набор правил, определяющих алгоритм обработки сетевых пакетов.
Две конфигурации являются эквивалентными друг другу, если при применении этих наборов к любому пакету, они оказывают на него одинаковое воздействие.
Путем пакета будем называть упорядоченный в хронологическом порядке набор правил, под которые подошел пакет в процессе его обработки сетевым оборудованием.
Общие основные признаки предлагаемого способа организации работы компонентов сетевого оборудования для обработки сетевых пакетов заключаются в следующем.
Современные вычислительные системы на базе х86 и х64 совместимых процессоров устроены следующим образом (фиг. 1):
- центральный процессор 100 имеет встроенный контроллер памяти 101, поэтому соединен непосредственно со слотами оперативной памяти RAM 102 посредством соответствующей шины 103;
- чипсет 104 через различные типы шин 105 соединяется со слотами для периферийных устройств 106, в том числе и для сетевых адаптеров NIC 107;
- центральный процессор CPU 100 и чипсет 104 соединяются друг с другом внутренней шиной 108.
Когда сетевой пакет 109 приходит в сетевой адаптер NIC 107, он пересылается в оперативную память RAM 102 посредством механизма DMA 110 (Direct Memory Access - прямой доступ к памяти).
Схема на фиг. 2 демонстрирует, что при большом количестве правил обработка сетевого пакета может занять значительное время.
Механизм DMA 200 позволяет передавать данные между оперативной памятью RAM 202 и периферийными устройствами NIC 201 без участия центрального процессора CPU 203, позволяя ему заниматься в это время другими задачами. Таким образом, центральный процессор CPU 203 приступает к обработке сетевого пакета 204, когда сетевой пакет 204 уже находится в оперативной памяти RAM 202.
При этом значительная часть времени при обработке сетевого пакета 204 тратится на загрузку правил 205 из оперативной памяти RAM 202 в центральный процессор CPU 203. Это вызвано тем, что процессору CPU 203 заранее неизвестно, какие правила необходимо применить к сетевому пакету 204. Поэтому центральный процессор CPU 203 запрашивает из оперативной памяти RAM 202 по одному все правила от 1 до N, где N - количество правил, до тех пор, пока не найдется терминальное правило, под которое подойдет сетевой пакет 204.
С увеличением количества правил N в конфигурации сетевого оборудования увеличивается количество загрузок правил из оперативной памяти. Это имеет за собой негативные последствия, в частности, возникают многочисленные простои 206, препятствующие эффективному использованию процессора, во время которых процессор ожидает получения данных из памяти, а также существенно возрастает нагрузка на шину памяти, препятствуя тем самым работе других процессов в системе, поскольку многоядерный процессор может выполнять несколько задач одновременно. Таким образом, пропускная способность сетевого оборудования сильно зависит от того, сколько правил находится в его конфигурации.
Задача, на решение которой направлено данное изобретение, заключается в разработке способа взаимодействия процессора с другими компонентами системы, приводящего к увеличению количества сетевых пакетов, которые возможно передать из одного сегмента в сети в другой за единицу времени, соблюдая при этом политику безопасности, установленную администратором сети.
Заявленное изобретение осуществляется с использованием устройства, подключаемого к процессору, либо реализуемого полностью или частично программным образом, и выполняющего обработку запросов, поступающих от процессора. Оно позволяет за относительно короткий фиксированный промежуток времени по заданному набору полей пакета определить, под какие правила подходит сетевой пакет, то есть определить те правила, которые должны быть загружены в процессор для применения их к сетевому пакету. Заявленное изобретение дополняет существующие программно-аппаратные комплексы, позволяя их компонентам выполнять свои задачи более эффективно.
Схема на фиг. 3 демонстрирует, как устройство для реализации способа позволяет значительно сократить время обработки сетевого пакета согласно одному из вариантов осуществления изобретения - «полностью аппаратное решение» (см. фиг. 7). Механизм приема пакетов из сетевой платы 301 в оперативную память 303 осуществляется по-прежнему с помощью прямого доступа к памяти 300. Однако, в этом варианте осуществления изобретения процессор 304 не обращается к оперативной памяти 303 с целью поиска подходящих правил. Вместо этого процессор отправляет запрос в устройство 302 в виде полей пакета 306. Устройство 302 с помощью внутренних модулей выполняет быстрый поиск тех правил из конфигурации сетевого оборудования, под которое подходит сетевой пакет 305. Отметим, что в это время правила к пакету не применяются, однако, поиск правил происходит с учетом тех изменений, которые могли бы происходить, если бы применение правил имело место быть. Найдя необходимые правила, устройство 302 формирует и отправляет процессору 304 набор действий 307, которые тот выполняет по отношению к сетевому пакету 305. Один простой 308, который является временем обработки запроса процессора 304 устройством 302, значительно меньше многочисленных простоев (см. блок 206 на фиг. 2), которые являются временем получения нескольких правил из оперативной памяти 303. Кроме того, в таком варианте осуществления изобретения, шина памяти не задействуется для передачи правил, и поэтому она может быть использована для передачи другой информации. Таким образом, устройство для реализации способа позволяет существенно увеличить пропускную способность сетевого оборудования, и при этом пропускная способность становится уже независимой от количества правил в конфигурации сетевого оборудования.
На фиг. 4 приведена блок-схема, иллюстрирующая устройство для реализации изобретения.
Само устройство для реализации способа в данном случае представляет собой отдельную РCI-плату 400, подключаемую непосредственно к процессору 407 (если такая возможность есть), либо к чипсету 408 (в противном случае) посредством PCIe шины 406.
Перед началом использования устройства 400 для реализации способа, необходимо провести процедуру его настройки, которая выглядит следующим образом:
1. Преобразователю правил 404 передается заранее сформированный набор исходных правил посредством DMA-пересылки, который сохраняется в соответствующий буфер 401.
2. Преобразователь правил 404 преобразует набор исходных правил в набор примитивных терминальных правил, который сохраняется в соответствующий буфер 402.
3. Классификатор пакетов 405 на основе терминальных примитивных правил строит индекс правил 403.
В случае изменения набора исходных правил может быть проведена процедура повторной настройки устройства 400 для реализации способа. При этом во время повторной настройки устройство продолжает свою работу в штатном режиме.
После успешного завершения настройки, устройство для реализации способа может быть использовано для того, чтобы выполнять поиск правил, необходимых для обработки сетевых пакетов. Для этого процессор 407 отправляет в классификатор пакетов 405 наборов полей пакета, который предварительно был принят из сетевого адаптера 410 и помещен в оперативную память 409. Классификатор пакетов 405 использует индекс правил 403, построенный им же на этапе настройки устройства, для того, чтобы определить позицию искомого правила в буфере терминальных примитивных правил 402. Передавать проверки найденного правила процессору не требуется, поскольку проверки используются только для поиска правил. Поэтому классификатор пакетов 405 передает процессору лишь действия найденного правила.
Возможность построения индекса правил из набора терминальных примитивных правил неоднократно описывалась в открытых источниках, например, в [1,2]. Отметим, что время поиска в таком индексе не зависит от количества правил в конфигурации сетевого оборудования, а зависит только от числа инспектируемых полей сетевого пакета. Поскольку это число является константой на всем протяжении работы сетевого оборудования, время поиска в индексе правил ограничено сверху относительно небольшим фиксированным временем.
Однако возможность преобразования набора произвольных правил в эквивалентный ему набор терминальных примитивных правил нигде раньше не описывалась. Вместе с тем, терминальность и примитивность всех правил в наборе является необходимым условием для построения индекса правил и, соответственно, для работы всего устройства для реализации способа. Поэтому именно преобразователь правил 404 является основным источником новизны заявленного изобретения.
На фиг. 5 представлена блок-схема преобразователя правил в составе устройства для реализации способа на фиг. 4.
Общее описание атрибутов преобразователя правил.
Являющийся одним из основных компонентов устройства для реализации способа преобразователь правил обладает рядом важных свойств.
Разработанный преобразователь правил (фиг. 5) позволяет имитировать процесс применения исходного набора правил ко всем сетевым пакетам, которые теоретически могут попасть в сетевое оборудование. Это позволяет определить пути различных пакетов еще до их попадания в систему.
Путь пакета нетрудно преобразовать в примитивное терминальное правило. Для этого в качестве проверок правила используются проверки на равенство полей пакета тем значениям, которые привели к формированию пути пакета. А в качестве действий правила используется конкатенация всех действий из пути пакета.
Формально, поиска всех путей пакетов с последующим их преобразованием в примитивные терминальные правила достаточно для реализации преобразователя для реализации способа. Но на практике такой подход неосуществим, поскольку количество различных пакетов, которые теоретически могут попасть в сетевое оборудование, слишком велико.
Поэтому, важным свойством разработанного преобразователя является возможность группировки сетевых пакетов, имеющих одинаковые пути, в множества, которые можно описать с помощью примитивных предикатов. Таким образом, количество итоговых примитивных терминальных правил будет зависеть уже не от количества возможных пакетов, а от количества возможных путей пакетов, число которых значительно меньше.
Наконец, разработанный преобразователь позволяет оптимизировать действия, входящие в правила из пути пакета. Если несколько действий изменяют одно и то же поле пакета, то, в некоторых случаях, их можно заменить эквивалентным действием. Например, пару действий "прибавление числа 1" и "вычитание числа 6" можно заменить одним действием "вычитание числа 5". Это позволяет сократить количество действий в результирующих примитивных терминальных правилах.
Преобразователь на фиг. 5 работает следующим образом.
Входными данными для преобразователя правил являются исходные правила, помещаемые в буфер 500. Выходными данными преобразователя являются терминальные примитивные правила, сохраняемые в буфер 510.
Перед началом преобразования контроллер порядка вычислений 505 инициализирует регистры начальными значениями. Регистр базового правила 508 инициализируется правилом, под которое подходит любой пакет, и которое не выполняет над пакетом никаких действий. Регистр селектора правила 502 инициализируется значением, указывающим на первое правило из набора исходных правил 500. Регистр текущего пути 504 инициализируется пустым путем. Эти три регистра полностью описывают текущее состояние контроллера порядка вычислений 505 и могут в произвольный момент времени быть сохранены в хранилище состояний контроллера 507 или извлечены из него. Регистр текущего правила (503) не входит в состояние контроллера. Перед началом преобразования хранилище состояний контроллера 507 не содержит ни одного состояния.
Работа преобразователя правил основана на итеративном принципе. В начале каждой итерации декодер правил 501 извлекает из буфера исходных правил 500 правило, на которое указывает регистр селектора правил 502, преобразует его в форму, удобную для последующих вычислений и помещает его в регистр текущего правила 503. Дальнейшие действия зависят от вердикта текущего правила.
В случае, если текущее правило является терминальным, то результат работы модуля объединения правил 506 передается модулю оптимизации и компрессии правил 509. Модуль оптимизации и компрессии правил 509 может отбросить новое правило, в случае, если это правило никогда не сможет сработать, например, если оно описывает пустое множество пакетов. Также модуль оптимизации и компрессии правил 509 может объединить новое правило с одним из имеющихся терминальных примитивных правил. Наконец, новое правило может быть добавлено в конец буфера терминальных примитивных правил 510.
В случае, если же текущее правило не является терминальным, то происходит следующее. Состояние контроллера помещается в хранилище состояний контроллера 507 для того, чтобы позже иметь возможность продолжить вычисления того пути пакетов, которое не содержит текущего правила. Значение регистра базового правила 508 замещается результатом работы модуля объединения правил 506, регистр текущего пути 504 дополняется значением регистра селектора правил 502, а регистр селектора правил 502 модифицируется в соответствии с вердиктом текущего правила. На этом итерация заканчивается.
Обработка текущего пути пакетов заканчивается при наступлении одного из событий:
1. Регистр селектора правила 502 указывает на конец буфера исходных правил 500.
2. Регистр базового правила 508 содержит правило, под которое не может попасть ни один пакет.
После этого состояние всех регистров замещается теми значениями, которые были ранее сохранены в хранилище состояний контроллера 507 и контроллер продолжает обработку того пути пакетов, которое не содержит нетерминального пути, вызвавшего смену состояний контроллера.
Работа преобразователя правил заканчивается после обработки всех возможных путей пакетов.
Из всех модулей преобразователя правил наиболее сложным является модуль объединения правил 506. Он позволяет на основе пары упорядоченных правил А и В сформировать правило С, которое имеет следующие свойства. Во-первых, под правило С подходят только те пакеты, которые подходят под правила А и В одновременно, причем с учетом тех изменений, которые оказывают действия правила А на поля пакета. Во-вторых, действия правила С, эквиваленты тем действиям, которые содержатся одновременно в правилах А и В.
На фиг. 6 представлена схема работы модуля объединения правил 506 в преобразователе правил, который представлен на фиг. 5.
На фиг. 6 представлены проверки базового правила 600 и действия базового правила 602, которые соответствуют значениям в регистре базового правила 508 на фиг. 5. Проверки текущего правила 601 и действия текущего правила 603 соответствуют значениям в регистре текущего правила 503 на фиг. 5.
Модуль объединения правил применяет действия базового правила к проверкам текущего правила 601 в обратном порядке в соответствующем модуле 604, что позволяет получить набор проверок 606, описывающих множество пакетов, которые теоретически могли бы дойти до текущего правила по тому пути, из которого было образовано базовое правило. Полученный набор проверок 606 затем объединяется с проверками базового правила 600 в соответствующем модуле 607 для того, чтобы получить результирующий набор проверок 608.
Для вычисления итогового набора действий 609 достаточно объединить набор действий базового и текущего правил, и, по возможности, его оптимизировать. Эта работа происходит в соответствующем модуле 605.
Пример полей пакета и соответствующего набора проверок и действий.
Без ограничения общности будем считать, что пакет имеет только одно поле (таблица 1). На практике, полями пакета являются такие атрибуты, как адреса сетевого уровня отправителя и получателя, номер протокола транспортного уровня, адреса транспортного уровня (порты) отправителя и получателя, и другие атрибуты.
В таблице 2 представлен вариант списка проверок, которые используются в дальнейших примерах реализации изобретения. На практике в качестве проверок могут использоваться более сложные логические выражения, содержащие арифметические, битовые и другие операции, выполняемые над несколькими полями пакета.
В таблице 3 представлен вариант списка действий, которые используются в дальнейших примерах реализации изобретения. На практике в качестве действий могут использоваться более сложные операции, например, инициализация поля пакета случайным числом.
Рассмотрим варианты осуществления заявленного изобретения в соответствии с изложенными выше условиями. Построим примеры преобразования исходных произвольных правил в эквивалентные им наборы примитивных терминальных правил. Примеры демонстрируют принципы, на которых основана работа преобразователя для реализации способа.
Пример 1 (таблицы 4 и 5) - набор исходных правил содержит одно нетерминальное правило (с действием LOG).
Нетрудно заметить, что правило №1 из таблицы 4 было преобразовано в правила №1 и 2 в таблице 5. При этом правило №1 из таблицы 5 является комбинацией правил №1 и 2 из таблицы 4, а правило №2 из таблицы 5 является комбинацией правил №1 и 3 из таблицы 5.
Пример 2 (таблицы 6 и 7) - набор исходных правил содержит одно нетерминальное правило, изменяющее порядок применения правил к пакету (с действием JUMP), и одно нетерминальное правило, изменяющее значение поля пакета (с действием MARK=MARK+X). Вместе эти правила образуют управляющую конструкцию, называемую в высокоуровневых языках программирования циклом.
Условием выхода из цикла является значение метки меньшее, чем 100. При этом каждую итерацию цикла метка увеличивается на 50. Поэтому пакет не может провести в цикле более двух итераций.
Таблица 7 - Эквивалентный набор примитивных терминальных правил
Анализируя пути прохождения пакетов можно выяснить, что, например, пакет с меткой 11 имеет путь, состоящий из правил №1, 2, 1, 2, 3 из таблицы 6. Преобразование этого пути в примитивное терминальное правило дает правило №1 из таблицы 7.
Пример 3 (таблицы 8 и 9) - исходный набор правил содержит непримитивное нетерминальное правило (с проверкой MARK % X=Y и действием LOG).
Поскольку метка может принимать значения только из диапазона от 0 до 255, очевидно, что дать число 5 в результате деления на 100 могут только три метки, а именно метки со значениями 5, 105 и 205. Соответственно, правило №1 из таблицы 8 преобразуется в три правила №1, 2, 3 из таблицы 9.
Таким образом, на основании вышеизложенного для реализации способа организации работы компонентов сетевого оборудования для обработки сетевых пакетов в данном техническом решении предлагаются следующие 4 варианта осуществления изобретения.
Основной вариант осуществления заявленного изобретения использует отдельный аппаратный компонент - аппаратный ускоритель, выполняющий функции преобразования, хранения и поиска правил (Вариант 1). Аппаратный компонент может быть реализован программным образом.
Эмуляция аппаратного компонента, с одной стороны, сводит к минимуму затраты на внедрение заявленного изобретения в существующее сетевое оборудование, но, с другой стороны, программная реализация имеет более низкую производительность по сравнению с аппаратной. В качестве компромисса может использоваться одно из нижеследующих вариантов осуществления изобретения, который предполагает реализацию части функционала аппаратным образом, а оставшейся части - программным образом.
Схема на фиг. 7 иллюстрирует способ, для реализации которого используется полностью аппаратное решение, выполняющее функции преобразования, хранения и поиска правил (Вариант 1).
Вариант осуществления предполагает наличие дополнительного подключаемого компонента - аппаратного ускорителя 703, который берет на себя часть задач, связанных с принятием решений о дальнейших действиях, применяемых к сетевому пакету 709, тем самым снимая нагрузку с других компонентов системы, таких как центральный процессор 705, оперативная память 704, системные шины и так далее, в частности, аппаратный ускоритель 703 берет на себя задачу по преобразованию набора исходных правил 706 в набор примитивных терминальных правил, задачу построения индекса на основе преобразованных правил, задачу хранения преобразованных правил и индекса правил, задачу обработки запросов, поступающих от процессора 705, по поиску правил, под которые подходит заданный сетевой пакет 709, принятый из сетевого адаптера 702.
- Вариант осуществления предполагает наличие предварительного подготовительного этапа 700 работы оборудования. Этот этап заключается в преобразовании правил администратора к тому виду, который наилучшим образом подходит для обработки сетевых пакетов 709, поступивших на сетевую плату 702. Во время предварительного этапа 700 работы сетевого оборудования центральный процессор 705 инициирует DMA-пересылку исходных правил 706 из оперативной памяти 704 в аппаратный ускоритель 703. Аппаратный ускоритель 703 преобразует эти правила к примитивной терминальной форме и строит на их основе индекс. Блок-схема устройства для реализации способа приведена на фиг. 4. По завершении этого процесса аппаратный ускоритель 703 уведомляет центральный процессор 705 посредством аппаратного прерывания о своей готовности к обработке запросов.
- Вариант осуществления предполагает, что подготовительный этап 700 выполняется заблаговременно, до начала основного этапа 701 работы оборудования. Это означает, что сетевое оборудование не может приступить к обработке сетевых пакетов 709 в соответствии с заданным набором правил до тех пор, пока аппаратный ускоритель 703 не выполнит необходимые подготовительные действия и не сообщит об этом центральному процессору 705. Такая задержка необходима, так как именно за счет выполнения подготовительного этапа 700 сетевое оборудование способно впоследствии на основном этапе 701 работы значительно быстрее обрабатывать сетевые пакеты.
- Вариант осуществления предполагает, что поиск правил, под которые подходит сетевой пакет 709, осуществляется в аппаратном ускорителе 703. Для этого центральный процессор 705 формирует и отправляет запрос на поиск правил для аппаратного ускорителя 703. Запрос состоит только из набора полей 707 обрабатываемых пакетов 709, которые встречаются в наборах проверок исходных правил. Аппаратный ускоритель 703 выполняет поиск правил, под которые подходит сетевой пакет 709, используя полученные от центрального процессора 705 наборы полей 707 и индекс правил, построенный на подготовительном этапе 700 работы оборудования.
- Вариант осуществления предполагает, что во время основного этапа 701 работы оборудования из аппаратного ускорителя 703 в центральный процессор 705 передаются наборы действий 708, ассоциированные с найденными примитивными терминальными правилами. Поскольку набор действий 708 терминального примитивного правила содержит в себе все действия исходных правил из пути пакета 709, то центральный процессор 705 может сразу же обработать сетевой пакет 709, не обращаясь к другим компонентам системы, получая при этом обработанный сетевой пакет 710, который может быть передан обратно в сеть с помощью сетевого адаптера 702.
- Вариант осуществления предполагает, что оперативная память 704 используется процессором 705 для хранения правил только на предварительном этапе 700 работы оборудования. Во время предварительного этапа 700 хранение правил 706 в оперативной памяти 704 необходимо для организации их DMA-пересылки в аппаратный ускоритель 703. Во время основного этапа 701 работы сетевого оборудования хранение правил 706 в оперативной памяти 704 не требуется, поскольку процессор 705 получает всю необходимую информацию для обработки сетевых пакетов 709 непосредственно от аппаратного ускорителя 703.
Таким образом, повышение эффективности сетевого оборудования по обработке сетевых пакетов в соответствии с заданной конфигурацией достигается за счет построенного на подготовительном этапе 700 индекса правил. Индекс правил является более удобной формой представления терминальных правил для более эффективного поиска, время поиска в индексе правил ограничено сверху относительно небольшим фиксированным временем. Увеличение пропускной способности сетевого оборудования происходит за счет того, что время поиска в построенном индексе не зависит от количества правил в конфигурации сетевого оборудования. Учитываются только инспектируемые поля сетевого пакета, число которых является константой на всем протяжении работы сетевого оборудования.
Схема на фиг. 8 иллюстрирует способ, для реализации которого используется аппаратное решение, выполняющее функции преобразования и поиска правил, с хранением исходных и примитивных терминальных правил в оперативной памяти (Вариант 2).
Вариант осуществления предполагает наличие дополнительного подключаемого компонента - аппаратного ускорителя 803. Аппаратный ускоритель 803 берет на себя часть задач, связанных с обработкой сетевых пакетов 811, тем самым снимая нагрузку с других компонентов системы, таких как центральный процессор 805, оперативная память 804, системные шины и так далее. В частности, аппаратный ускоритель 803 берет на себя задачу по преобразованию набора исходных правил 806 в набор примитивных терминальных правил 807, задачу построения индекса на основе преобразованных правил, задачу хранения индекса правил, задачу обработки запросов, поступающих от процессора 805, по поиску правил, под которые подходит заданный сетевой пакет 811.
- Вариант осуществления предполагает наличие предварительного подготовительного этапа 800 работы оборудования. Этот этап заключается в преобразовании правил администратора к тому виду, который наилучшим образом подходит для обработки сетевых пакетов 811, поступивших на сетевую плату 802. Во время подготовительного этапа 800 работы сетевого оборудования центральный процессор 805 инициирует DMA-пересылку исходных правил 806 из оперативной памяти 804 в аппаратный ускоритель 803. Аппаратный ускоритель 803 преобразует эти правила 806 к примитивной терминальной форме и строит на их основе индекс.По завершении этого процесса аппаратный ускоритель 803 уведомляет центральный процессор 805 посредством аппаратного прерывания о своей готовности к обработке запросов. Центральный процессор 805 инициирует обратную DMA-пересылку уже преобразованных к примитивной терминальной форме правил 807 из аппаратного ускорителя 803 в оперативную память 804.
- Вариант осуществления предполагает, что подготовительный этап 800 выполняется заблаговременно, до начала основного этапа 801 работы оборудования. Это означает, что сетевое оборудование не может приступить к обработке сетевых пакетов 811 в соответствии с заданным набором правил до тех пор, пока аппаратный ускоритель 803 не выполнит необходимые подготовительные действия и не сообщит об этом центральному процессору 805. Такая задержка необходима, так как именно за счет выполнения подготовительного этапа 800 сетевое оборудование способно впоследствии на основном этапе 801 работы значительно быстрее обрабатывать сетевые пакеты 811.
- Вариант осуществления предполагает, что поиск правил, под которые подходит сетевой пакет 811, осуществляется в аппаратном ускорителе 803. Для этого центральный процессор 805 формирует запрос на поиск правил для аппаратного ускорителя 803. Запрос состоит только из набора полей 808 обрабатываемых пакетов 811, которые встречаются в наборах проверок исходных правил 806. Аппаратный ускоритель 803 выполняет поиск правил, под которые подходит сетевой пакет 811, используя полученные наборы полей 808 и индекс правил, построенный на подготовительном этапе 800 работы оборудования.
- Вариант осуществления предполагает, что во время основного этапа 801 работы оборудования из аппаратного ускорителя 803 в центральный процессор 805 передаются только номера 809 примитивных терминальных правил, под которые подошли обрабатываемые пакеты 811. Используя эти номера правил 809, центральный процессор 805 вычисляет позиции наборов действий 810, ассоциированных с найденными примитивными терминальными правилами в оперативной памяти 804 и запрашивает их. Получив наборы действий 810, центральный процессор 805 применяет их к сетевым пакетам 811, получая при этом обработанные сетевые пакеты 812, которые затем отправляются в сеть сетевым адаптером 802.
- Вариант осуществления предполагает, что оперативная память 804 используется процессором 805 для хранения как исходных 806, так и примитивных терминальных правил 807. Хранение правил в оперативной памяти 804 позволяет упростить конструкцию аппаратного ускорителя 803, однако требует дополнительного обращения, связанного с передачей наборов действий 810 на каждый сетевой пакет 811 к оперативной памяти 804 со стороны центрального процессора 805 во время основного этапа работы 801.
Таким образом, повышение эффективности сетевого оборудования по обработке сетевых пакетов в соответствии с заданной конфигурацией достигается за счет построенного на подготовительном этапе 800 индекса правил. Индекс правил является более удобной формой представления терминальных правил для более эффективного поиска, время поиска в индексе правил ограничено сверху относительно небольшим фиксированным временем. Увеличение пропускной способности сетевого оборудования происходит за счет того, что время поиска в построенном индексе не зависит от количества правил в конфигурации сетевого оборудования. Учитываются только инспектируемые поля сетевого пакета, число которых является константой на всем протяжении работы сетевого оборудования.
Схема на фиг. 9 иллюстрирует способ, для реализации которого используется аппаратное решение, выполняющее функции только преобразования правил (Вариант 3).
- Вариант осуществления предполагает наличие дополнительного подключаемого компонента - аппаратного ускорителя 903. Аппаратный ускоритель 903 берет на себя часть задач, связанных с обработкой сетевых пакетов 906, тем самым снимая нагрузку с других компонентов системы, таких как центральный процессор 905, оперативная память 904, системные шины и так далее. В частности, аппаратный ускоритель 903 берет на себя задачу по преобразованию набора исходных правил 907 в набор примитивных терминальных правил 908.
- Вариант осуществления предполагает наличие предварительного подготовительного этапа 900 работы оборудования. Этот этап заключается в преобразовании правил администратора к тому виду, который наилучшим образом подходит для обработки сетевых пакетов 906. Во время предварительного подготовительного этапа 900 работы сетевого оборудования центральный процессор 905 инициирует DMA - пересылку исходных правил 907 из оперативной памяти 904 в аппаратный ускоритель 903. Аппаратный ускоритель 903 преобразует эти правила к примитивной терминальной форме 908 и уведомляет центральный процессор 905 посредством аппаратного прерывания об этом. Центральный процессор 905 инициирует обратную DMA-пересылку уже преобразованных правил 908 из аппаратного ускорителя 903 в оперативную память 904. Затем центральный процессор 905 строит в оперативной памяти 904 индекс 909 терминальных примитивных правил 908.
- Вариант осуществления предполагает, что подготовительный этап 900 выполняется заблаговременно, до начала основного этапа 901 работы оборудования. Это означает, что сетевое оборудование не может приступить к обработке сетевых пакетов 906 в соответствии с заданным набором правил 907 до тех пор, пока аппаратный ускоритель 903 не выполнит необходимые подготовительные действия и не сообщит об этом центральному процессору 905. Такая задержка необходима, так как именно за счет выполнения подготовительного этапа 900 сетевое оборудование способно впоследствии на основном этапе 901 работы значительно быстрее обрабатывать сетевые пакеты 906.
- Вариант осуществления предполагает, что поиск правил, под которые подходит сетевой пакет 906, осуществляется путем взаимодействия процессора 905 и оперативной памяти 904. Для этого центральный процессор 905 формирует набор полей 910 обрабатываемых пакетов 906 и использует их в качестве ключа для индекса правил 909, построенного на подготовительном этапе 900 работы оборудования и хранящийся в оперативной памяти 904.
- Вариант осуществления предполагает, что во время основного этапа 901 работы оборудования между аппаратным ускорителем 903 и оперативной памятью 904 передача данных отсутствует. Поскольку индекс правил 909 хранится в оперативной памяти 904, то номера найденных правил 911 центральный процессор 905 получает также из оперативной памяти 904. Используя эти номера правил 911, центральный процессор 905 вычисляет позиции наборов действий 912, ассоциированных с найденными примитивными терминальными правилами 908 в оперативной памяти 904 и запрашивает их. Получив наборы действий 912, центральный процессор 905 применяет их к сетевым пакетам 906, получая при этом обработанные сетевые пакеты 913, которые затем отправляются в сеть сетевым адаптером 902.
- Вариант осуществления предполагает, что оперативная память 904 используется процессором 905 для хранения исходных правил 907, преобразованных правил 908 и для хранения индекса правил 909. Хранение правил в оперативной памяти 904 позволяет упростить конструкцию аппаратного ускорителя 903, однако требует нескольких дополнительных обращений на каждый сетевой пакет 906 к оперативной памяти 904 со стороны центрального процессора 905 во время основного этапа работы 901.
Таким образом, повышение эффективности сетевого оборудования по обработке сетевых пакетов в соответствии с заданной конфигурацией достигается за счет построенного на подготовительном этапе 900 индекса правил 909. Индекс правил 909 является более удобной формой представления терминальных правил для более эффективного поиска, время поиска в индексе правил ограничено сверху относительно небольшим фиксированным временем. Увеличение пропускной способности сетевого оборудования происходит за счет того, что время поиска в построенном индексе не зависит от количества правил в конфигурации сетевого оборудования. Учитываются только инспектируемые поля сетевого пакета, число которых является константой на всем протяжении работы сетевого оборудования.
Схема на фиг. 10 иллюстрирует способ, в котором используется полностью программное решение (Вариант 4).
Вариант осуществления предполагает снижение количества дополнительных подключаемых аппаратных компонентов.
- Вариант осуществления предполагает наличие предварительного подготовительного этапа 1000 работы оборудования. Этот этап заключается в преобразовании правил администратора к тому виду, который наилучшим образом подходит для обработки сетевых пакетов 1005 сетевым адаптером 1002. Во время предварительного подготовительного этапа 1000 работы сетевого оборудования центральный процессор 1004 преобразует исходные правила 1006 к примитивной терминальной форме и строит в оперативной памяти 1003 индекс 1008 терминальных примитивных правил 1007.
- Вариант осуществления предполагает, что подготовительный этап 1000 выполняется заблаговременно, до начала основного этапа 1001 работы оборудования. Это означает, что сетевое оборудование не может приступить к обработке сетевых пакетов 1005 в соответствии с заданным набором правил 1006 до тех пор, пока центральный процессор 1004 не выполнит необходимые подготовительные действия. Такая задержка необходима, так как именно за счет выполнения подготовительного этапа 1000 сетевое оборудование способно впоследствии на основном этапе 1001 работы значительно быстрее обрабатывать сетевые пакеты 1005.
- Вариант осуществления предполагает, что поиск правил, под которые подходит сетевой пакет 1005, осуществляется путем взаимодействия процессора 1004 и оперативной памяти 1003. Для этого центральный процессор 1004 формирует набор полей 1009 обрабатываемых пакетов и использует их в качестве ключа для индекса правил 1008, построенный на подготовительном этапе 1000 работы оборудования и хранящийся в оперативной памяти 1003.
- Вариант осуществления предполагает, что во время основного этапа 1001 работы оборудования передача данных осуществляется только между центральным процессором 1004 и оперативной памятью 1003. Поскольку индекс правил 1008 хранится в оперативной памяти 1003, то номера найденных правил 1010 центральный процессор 1004 получает также из оперативной памяти 1003. Используя эти номера правил 1010, центральный процессор 1004 вычисляет позиции наборов действий 1011, ассоциированных с найденными примитивными терминальными правилами 1007 в оперативной памяти 1003 и запрашивает их. Получив наборы действий 1011, центральный процессор 1004 применяет их к сетевым пакетам 1005, получая при этом обработанные сетевые пакеты 1012, которые затем отправляются в сеть сетевым адаптером 1002.
- Вариант осуществления предполагает, что оперативная память 1003 используется процессором 1004 для хранения исходных правил 1006, преобразованных правил 1007 и для хранения индекса правил 1008. Хранение правил 1006 и 1007 и индекса правил 1008 в оперативной памяти 1003 и преобразование исходных правил 1006 к примитивной терминальной форме с помощью центрального процессора 1004 позволяет полностью убрать необходимость в аппаратном ускорителе, однако увеличивает время, затрачиваемое на выполнение подготовительного этапа 1000 работы оборудования, и требует нескольких дополнительных обращений на каждый сетевой пакет 1005 к оперативной памяти 1003 со стороны центрального процессора 1004 во время основного этапа работы 1001.
Таким образом, повышение эффективности сетевого оборудования по обработке сетевых пакетов в соответствии с заданной конфигурацией достигается за счет построенного на подготовительном этапе 1000 индекса правил 1008. Индекс правил 1008 является более удобной формой представления терминальных правил для более эффективного поиска, время поиска в индексе правил ограничено сверху относительно небольшим фиксированным временем. Увеличение пропускной способности сетевого оборудования происходит за счет того, что время поиска в построенном индексе не зависит от количества правил в конфигурации сетевого оборудования. Учитываются только инспектируемые поля сетевого пакета, число которых является константой на всем протяжении работы сетевого оборудования.
Таким образом, с помощью данного изобретения обеспечивается решение задачи, которая заключается в разработке способа взаимодействия процессора с другими компонентами системы, приводящего к увеличению количества сетевых пакетов, которые возможно передать из одного сегмента в сети в другой за единицу времени, соблюдая при этом политику безопасности, установленную администратором сети.
При этом способ не требует использования новых инструментов настройки от администратора сетевого оборудования и не требует замены и модификации существующих компонентов системы.
Технический результат достигается за счет реализации способа организации взаимодействия компонентов сетевого оборудования, который для заданного сетевого пакета исключает загрузку в процессор тех правил, под которые этот пакет не может подойти, и обеспечивает загрузку только тех правил, под которые этот пакет подходит, сводя к минимуму количество пересылок данных между центральным процессором и другими компонентами системы. То есть обеспечивается существенное увеличение пропускной способности сетевого оборудования с заданной конфигурацией, которое находится на границе сегментов сети.
Источники информации
1. Madhi D., Ramasamy К., 2007, "Network routing algorithms, protocols, and architectures", Morgan Kaufmann, USA, стр. 1-957.
2. Varghese G., 2005, "Network Algorithmics An Interdisciplinary Approach to Designing Fast Networked Devices ", Morgan Kaufmann, USA. стр. 1-491.
3. Патент RU 2 589 340 C2, МПК H04L 12/70, 10.07.2016. - Сетевая система и способ получения данных тега VLAN.
4. Патент RU 2 628 476 С1, МПК H04L 12/70, 17.08.2017. - Коммутирующее устройство, контроллер, способ конфигурирования коммутирующего устройства и способ и система для обработки пакета.
5. Патент RU 2 609 086 С2, МПК H04L 12/70, 30.01.2017. - Сетевое устройство пересылки пакетов (варианты), способ настройки сетевого устройства пересылки пакетов (варианты) и способ пересылки пакета.
6. Патент RU 2 554 543 С2, МПК H04L 12/00, H04L 12/70, 27.06.2015. - Блок связи, система связи, способ связи и носитель записи.
Изобретение относится к технологиям сетевой связи. Технический результат заключается в повышении эффективности сетевого оборудования по обработке сетевых пакетов в соответствии с заданной конфигурацией, который достигается за счет реализации способа организации взаимодействия компонентов сетевого оборудования. В способе для заданного сетевого пакета исключают загрузку в процессор тех правил, под которые этот пакет не может подойти, и обеспечивают загрузку только тех правил, под которые этот пакет подходит, сводя к минимуму количество пересылок данных между центральным процессором и другими компонентами системы. То есть обеспечивается существенное увеличение пропускной способности сетевого оборудования с заданной конфигурацией, которое находится на границе сегментов сети. Способ характеризует взаимодействие процессора с другими компонентами системы, приводящее к увеличению количества сетевых пакетов, которые возможно передать из одного сегмента сети в другой за единицу времени, соблюдая при этом политику безопасности, установленную администратором сети. 4 н. и 19 з.п. ф-лы, 10 ил.
1. Способ организации работы компонентов сетевого оборудования для обработки сетевых пакетов, реализуемый с помощью полностью аппаратного решения, выполняющего функции преобразования, хранения и поиска правил, необходимых для обработки сетевых пакетов по заданному набору полей пакета, при этом способ включает в себя следующие действия: аппаратный ускоритель 703 преобразует набор исходных правил 706 в набор примитивных терминальных правил, выполняет построение индекса правил для определения позиции искомого правила в буфере примитивных терминальных правил, хранение преобразованных правил и индекса правил, обработку запросов, поступающих от процессора 705, по поиску правил, под которые подходит заданный сетевой пакет 709, при этом в качестве запроса используются набор полей 707 обрабатываемых пакетов, в качестве ответа на запрос используется набор действий 708, ассоциированный с найденными примитивными терминальными правилами, применение которого к пакету дает обработанный сетевой пакет 710.
2. Способ по п. 1, в котором: осуществляется предварительный подготовительный этап 700 работы сетевого оборудования преобразования правил администратора, при этом центральный процессор 705 инициирует DMA-пересылку исходных правил 706 из оперативной памяти 704 в аппаратный ускоритель 703, аппаратный ускоритель 703 преобразует эти правила к примитивной терминальной форме и строит на их основе индекс и уведомляет центральный процессор 705 посредством аппаратного прерывания о своей готовности к обработке запросов.
3. Способ по п. 1, в котором: подготовительный этап 700 выполняется заблаговременно, до начала основного этапа 701 работы оборудования, при этом сетевое оборудование выполняет обработку сетевых пакетов 709 в соответствии с заданным набором правил после того, как аппаратный ускоритель 703 выполняет необходимые подготовительные действия и сообщает об этом центральному процессору 705.
4. Способ по п. 1, в котором: поиск правил, под которые подходит сетевой пакет 709, осуществляется в аппаратном ускорителе 703, для этого центральный процессор 705 формирует и отправляет запрос на поиск правил для аппаратного ускорителя 703, запрос состоит только из набора полей 707 обрабатываемых пакетов 709, которые встречаются в наборах проверок исходных правил, аппаратный ускоритель 703 выполняет поиск правил, под которые подходит сетевой пакет 709, используя полученные от центрального процессора 705 наборы полей 707 и индекс правил, построенный на подготовительном этапе 700 работы оборудования.
5. Способ по п. 1, в котором: во время основного этапа 701 работы оборудования из аппаратного ускорителя 703 в центральный процессор 705 передаются наборы действий 708, ассоциированные с найденными примитивными терминальными правилами, поскольку набор действий 708 терминального примитивного правила содержит в себе все действия исходных правил из пути пакета 709, то центральный процессор 705 может сразу же обработать сетевой пакет 709, не обращаясь к другим компонентам системы, получая при этом обработанный сетевой пакет 710, который может быть передан обратно в сеть с помощью сетевого адаптера 702.
6. Способ по п. 1, в котором: оперативная память 704 используется процессором 705 для хранения правил только на предварительном этапе 700 работы оборудования, во время предварительного этапа 700 хранение правил 706 в оперативной памяти 704 необходимо для организации их DMA-пересылки в аппаратный ускоритель 703, во время основного этапа 701 работы сетевого оборудования хранение правил 706 в оперативной памяти 704 не требуется, поскольку процессор 705 получает всю необходимую информацию для обработки сетевых пакетов 709 непосредственно от аппаратного ускорителя 703.
7. Способ организации работы компонентов сетевого оборудования для обработки сетевых пакетов, реализуемый с помощью аппаратного решения, выполняющего функции преобразования и поиска правил, с хранением в оперативной памяти исходных и примитивных терминальных правил, необходимых для обработки сетевых пакетов по заданному набору полей пакета, в котором дополнительный подключаемый компонент - аппаратный ускоритель 803 осуществляет преобразование набора исходных правил в набор примитивных терминальных правил, построение индекса правил для определения позиции искомого правила в буфере примитивных терминальных правил, хранение индекса правил, обработку запросов, поступающих от процессора 805, поиск правил, которые выполняет заданный сетевой пакет 811, при этом в качестве запроса используется набор полей 808 обрабатываемых пакетов, в качестве ответа на запрос используются номера правил 809, которые могут использоваться для получения набора действий 810, применение которого к пакету дает обработанный сетевой пакет 812.
8. Способ по п. 7, в котором предполагается наличие предварительного подготовительного этапа 800 работы оборудования, который заключается в преобразовании правил администратора, при этом во время подготовительного этапа 800 работы сетевого оборудования центральный процессор 805 инициирует DMA-пересылку исходных правил 806 из оперативной памяти 804 в аппаратный ускоритель 803, который преобразует эти правила 806 к примитивной терминальной форме и строит на их основе индекс, по завершении этого процесса аппаратный ускоритель 803 уведомляет центральный процессор 805 посредством аппаратного прерывания о своей готовности к обработке запросов, центральный процессор 805 инициирует обратную DMA-пересылку уже преобразованных к примитивной терминальной форме правил 807 из аппаратного ускорителя 803 в оперативную память 804.
9. Способ по п. 7, в котором подготовительный этап 800 выполняется заблаговременно, до начала основного этапа 801 работы оборудования, это означает, что сетевое оборудование приступает к обработке сетевых пакетов 811 в соответствии с заданным набором правил после того, как аппаратный ускоритель 803 выполнит необходимые подготовительные действия и сообщит об этом центральному процессору 805.
10. Способ по п. 7, в котором поиск правил, под которые подходит сетевой пакет 811, осуществляется в аппаратном ускорителе 803, для этого центральный процессор 805 формирует запрос на поиск правил для аппаратного ускорителя 803, запрос состоит только из набора полей 808 обрабатываемых пакетов 811, которые встречаются в наборах проверок исходных правил 806, аппаратный ускоритель 803 выполняет поиск правил, под которые подходит сетевой пакет 811, используя полученные наборы полей 808 и индекс правил, построенный на подготовительном этапе 800 работы оборудования.
11. Способ по п. 7, в котором во время основного этапа 801 работы оборудования из аппаратного ускорителя 803 в центральный процессор 805 передаются только номера 809 примитивных терминальных правил, под которые подошли обрабатываемые пакеты 811, используя эти номера правил 809, центральный процессор 805 вычисляет позиции наборов действий 810, ассоциированных с найденными примитивными терминальными правилами в оперативной памяти 804, и запрашивает их, получив наборы действий 810, центральный процессор 805 применяет их к сетевым пакетам 811, получая при этом обработанные сетевые пакеты 812, которые затем отправляются в сеть сетевым адаптером 802.
12. Способ по п. 7, в котором оперативная память 804 используется процессором 805 для хранения как исходных 806, так и примитивных терминальных правил 807.
13. Способ организации работы компонентов сетевого оборудования для обработки сетевых пакетов, реализуемый с помощью аппаратного решения, выполняющего функции только преобразования правил, с хранением в оперативной памяти исходных и примитивных терминальных правил, необходимых для обработки сетевых пакетов по заданному набору полей пакета, и выполнением поиска правил путем взаимодействия центрального процессора и оперативной памяти, в котором дополнительный подключаемый компонент - аппаратный ускоритель 903 во время подготовительного этапа осуществляет преобразование набора исходных правил 907 в набор примитивных терминальных правил 908.
14. Способ по п. 13, в котором предполагается наличие предварительного подготовительного этапа 900 работы оборудования, который заключается в преобразовании правил администратора, при этом во время предварительного подготовительного этапа 900 работы сетевого оборудования центральный процессор 905 инициирует DMA-пересылку исходных правил 907 из оперативной памяти 904 в аппаратный ускоритель 903, который преобразует эти правила к примитивной терминальной форме 908 и уведомляет центральный процессор 905 посредством аппаратного прерывания об этом, центральный процессор 905 инициирует обратную DMA-пересылку уже преобразованных правил 908 из аппаратного ускорителя 903 в оперативную память 904, затем центральный процессор 905 строит в оперативной памяти 904 индекс 909 терминальных примитивных правил 908, предназначенный для быстрого определения позиции искомого правила в буфере преобразованных правил.
15. Способ по п. 13, в котором подготовительный этап 900 выполняется заблаговременно, до начала основного этапа 901 работы оборудования, при этом сетевое оборудование приступает к обработке сетевых пакетов 906 в соответствии с заданным набором правил 907 после того, как аппаратный ускоритель 903 выполнит необходимые подготовительные действия и сообщит об этом центральному процессору 905.
16. Способ по п. 13, в котором поиск правил, под которые подходит сетевой пакет 906, осуществляется путем взаимодействия процессора 905 и оперативной памяти 904, для этого центральный процессор 905 формирует набор полей 910 обрабатываемых пакетов 906 и использует их в качестве ключа для индекса правил 909, построенного на подготовительном этапе 900 работы оборудования и хранящегося в оперативной памяти 904.
17. Способ по п. 13, в котором во время основного этапа 901 работы оборудования между аппаратным ускорителем 903 и оперативной памятью 904 передача данных отсутствует, поскольку индекс правил 909 хранится в оперативной памяти 904, то номера найденных правил 911 центральный процессор 905 получает также из оперативной памяти 904, используя эти номера правил 911, центральный процессор 905 вычисляет позиции наборов действий 912, ассоциированных с найденными примитивными терминальными правилами 908 в оперативной памяти 904, и запрашивает их, получив наборы действий 912, центральный процессор 905 применяет их к сетевым пакетам 906, получая при этом обработанные сетевые пакеты 913, которые затем отправляются в сеть сетевым адаптером 902.
18. Способ по п. 13, в котором оперативная память 904 используется процессором 905 для хранения исходных правил 907, преобразованных правил 908 и для хранения индекса правил 909, при этом осуществляется хранение правил в оперативной памяти 904 и дополнительные обращения к оперативной памяти 904 со стороны центрального процессора 905 во время основного этапа работы 901.
19. Способ организации работы компонентов сетевого оборудования для обработки сетевых пакетов без использования аппаратного ускорителя, в котором выполняется предварительный подготовительный этап 1000 работы оборудования, выполняется преобразование правил администратора и обработка сетевых пакетов 1005 сетевым адаптером 1002, во время предварительного подготовительного этапа 1000 работы сетевого оборудования центральный процессор 1004 преобразует исходные правила 1006 к примитивной терминальной форме и строит в оперативной памяти 1003 индекс 1008 терминальных примитивных правил 1007, предназначенный для быстрого определения позиции искомого правила в буфере примитивных терминальных правил.
20. Способ по п. 19, в котором подготовительный этап 1000 выполняется заблаговременно, до начала основного этапа 1001 работы оборудования, при этом сетевое оборудование приступает к обработке сетевых пакетов 1005 в соответствии с заданным набором правил 1006 после того, как центральный процессор 1004 выполнит необходимые подготовительные действия.
21. Способ по п. 19, в котором поиск правил, под которые подходит сетевой пакет 1005, осуществляется путем взаимодействия процессора 1004 и оперативной памяти 1003, для этого центральный процессор 1004 формирует набор полей 1009 обрабатываемых пакетов и использует их в качестве ключа для индекса правил 1008, построенного на подготовительном этапе 1000 работы оборудования и хранящегося в оперативной памяти 1003.
22. Способ по п. 19, в котором во время основного этапа 1001 работы оборудования передача данных осуществляется только между центральным процессором 1004 и оперативной памятью 1003, поскольку индекс правил 1008 хранится в оперативной памяти 1003, то номера найденных правил 1010 центральный процессор 1004 получает также из оперативной памяти 1003, используя эти номера правил 1010, центральный процессор 1004 вычисляет позиции наборов действий 1011, ассоциированных с найденными примитивными терминальными правилами 1007 в оперативной памяти 1003, и запрашивает их, получив наборы действий 1011, центральный процессор 1004 применяет их к сетевым пакетам 1005, получая при этом обработанные сетевые пакеты 1012, которые затем отправляются в сеть сетевым адаптером 1002.
23. Способ по п. 19, в котором оперативная память 1003 используется процессором 1004 для хранения исходных правил 1006, преобразованных правил 1007 и для хранения индекса правил 1008 и преобразование исходных правил 1006 к примитивной терминальной форме происходит с помощью центрального процессора 1004.
СЕТЕВОЕ УСТРОЙСТВО ПЕРЕСЫЛКИ ПАКЕТОВ (ВАРИАНТЫ), СПОСОБ НАСТРОЙКИ СЕТЕВОГО УСТРОЙСТВА ПЕРЕСЫЛКИ ПАКЕТОВ (ВАРИАНТЫ) И СПОСОБ ПЕРЕСЫЛКИ ПАКЕТА | 2014 |
|
RU2609086C2 |
CN 103428771 A, 04.12.2013 | |||
Способ обработки целлюлозных материалов, с целью тонкого измельчения или переведения в коллоидальный раствор | 1923 |
|
SU2005A1 |
Способ и система для сбора пакетов, сетевое устройство и центр управления сетью | 2014 |
|
RU2668394C2 |
СЕТЕВАЯ СИСТЕМА, СПОСОБ ОБРАБОТКИ ПАКЕТОВ И НОСИТЕЛЬ ЗАПИСИ | 2012 |
|
RU2602333C2 |
Авторы
Даты
2019-12-25—Публикация
2018-12-05—Подача