Способ и устройство табличного поиска для таблиц OpenFlow, а также носитель данных
OPENFLOW TABLES TABLE SEARCH METHOD AND DEVICE, AND ALSO THE DATA MEDIA

Область техники
Настоящее изобретение относится, в общем, к области передачи данных по протоколу Ethernet, а именно, к способу и устройству табличного поиска для таблиц OpenFlow, а также к носителю данных.
Предпосылки создания изобретения
С развитием программно-определяемых сетей (Software Defined Network, SDN) были предприняты широкомасштабные разработки технологии OpenFlow ("открытый поток") как основной технологии SDN-сетей. Стандарт OpenFlow становился все более зрелым и был признан, а также принят к применению, различными производителями оборудования и операторами сетей. Однако будучи новой и все еще развивающейся технологией, технология OpenFlow связана со значительными трудностями как в плоскости коммутации, так и в плоскости управления, а также обладает сравнительно большим количеством технических узких мест на практике, что может препятствовать ее дальнейшему распространению и применению.
В плоскости коммутации существуют по меньшей мере перечисленные ниже основные проблемы.
1. Для поддержки услуг повышенной сложности и удовлетворения требованиям расширяемости услуг в технологии OpenFlow принята концепция многоуровневых таблиц потоков, без ограничения числа уровней в таблицах потоков. Для каждого пакета поиск по таблице потоков может выполняться несколько раз с использованием различных ключевых слов, при этом результат поиска в таблице потоков более высокого уровня может быть взят в качестве ключевого слова для дальнейших поисков по таблицам потоков. Потенциально это увеличивает сложность разработки и негативно сказывается на эффективности коммутации.
2. В стандарте OpenFlow определено, что таблица потоков может применяться для табличного поиска с использованием комбинации произвольных ключевых полей. В настоящее время наиболее популярным является решение, в котором таблицу потоков реализуют с использованием микросхемы троичной адресуемой по содержимому памяти (Ternary Content Addressable Memory, TCAM). Поскольку в стандарте OpenFlow определено большое количество ключевых полей, в случае, когда рассматривают все такие поля, для указания на одну запись таблицы необходим 576-битный ключ, и соответственно, 36-мегабитная микросхема ТСАМ может хранить максимум 64К записей таблицы, что, конечно, не отвечает отраслевым потребностям. При этом микросхемы ТСАМ являются дорогостоящим ресурсом, и реализация таблицы потоков исключительно с помощью микросхем ТСАМ не представляется реалистичной.
Сущность изобретения
Для решения технических задач, стоящих на сегодняшних день, в вариантах осуществления настоящего изобретения требуется предложить способ и устройство для табличного поиска для таблиц OpenFlow, а также соответствующий носитель данных.
Ниже описаны методы реализации технических решений, предложенных в вариантах осуществления настоящего изобретения.
В одном из вариантов осуществления настоящего изобретения предложен способ табличного поиска для таблиц OpenFlow, который включает описанные ниже шаги. В плоскости управления таблицы OpenFlow каждого уровня разбивают, на основе ключевых полей, на таблицу потоков с точным соответствием и по меньшей мере одну таблицу потоков с соответствием классификации. Принимают конфигурационную информацию таблицы потоков, переданную контроллером OpenFlow. Конфигурационную информацию таблицы потоков передают, в виде записи таблицы, в таблицу потоков с точным соответствием или таблицу потоков с соответствием классификации на основе ключевых полей, содержащихся в конфигурационной информации таблиц потоков. В плоскости коммутации выполняют поиск соответствующей записи таблицы в таблице потоков с точным соответствием с использованием всех ключевых слов в пакете. Если соответствующая запись таблицы найдена, пакет обрабатывают согласно действию, указанному в соответствующей записи таблицы. Если соответствующая запись таблицы не найдена, извлекают ключевые слова из различных ключевых полей пакета с целью параллельного поиска по меньшей мере в одной таблице потоков с соответствием классификации. Запись таблицы в таблице потоков с точным соответствием создают динамически на основе результата поиска по меньшей мере в одной таблице потоков с соответствием классификации. Пакет обрабатывают согласно действию из динамически созданной записи таблицы.
В еще одном из вариантов осуществления настоящего изобретения предложено устройство табличного поиска для таблицы OpenFlow, включающее модуль плоскости управления и модуль плоскости коммутации. Модуль плоскости управления сконфигурирован для разбиения, на основе ключевых полей, таблицы OpenFlow каждого уровня на таблицу потоков с точным соответствием и по меньшей мере одну таблицу потоков с соответствием классификации; для приема конфигурационной информации таблиц потоков, сформированной контроллером OpenFlow; и для передачи, на основе ключевых полей, содержащихся в конфигурационной информации таблиц потоков, конфигурационной информации таблиц потоков, в виде записи таблицы, в таблицу потоков с точным соответствием или в таблицу потоков с соответствием классификации. Модуль плоскости коммутации сконфигурирован для поиска соответствующей записи таблицы по таблице потоков с точным соответствием с использованием всех ключевых слов в пакете; когда соответствующая запись таблицы найдена, для обработки пакета согласно действию в соответствующей записи таблицы; а когда соответствующая запись таблицы не найдена, для извлечения ключевых слов из различных ключевых полей пакета с целью параллельного поиска по меньшей мере в одной таблице потоков с соответствием классификации, для динамического создания записи таблицы в таблице потоков с точным соответствием на основе результата поиска по меньшей мере по одной таблице потоков с соответствием классификации и для обработки пакета согласно действию из динамически созданной записи таблицы.
В еще одном из вариантов осуществления настоящего изобретения предложен компьютерный носитель данных, на котором хранят компьютерные программы, сконфигурированные для выполнения описанного выше способа табличного поиска для таблицы OpenFlow.
В настоящем изобретении предложены способ и устройство табличного поиска для таблиц OpenFlow, а также соответствующий носитель данных. В плоскости управления таблицы OpenFlow каждого уровня разбивают, на основе ключевых полей, на таблицу потоков с точным соответствием и по меньшей мере одну таблицу потоков с соответствием классификации. Принимают конфигурационную информацию таблицы потоков, переданную контроллером OpenFlow. Конфигурационную информацию таблицы потоков передают, в виде записи таблицы, в таблицу потоков с точным соответствием или таблицу потоков с соответствием классификации на основе ключевых полей, содержащихся в конфигурационной информации таблиц потоков. В плоскости коммутации выполняют поиск соответствующей записи таблицы в таблице потоков с точным соответствием с использованием всех ключевых слов в пакете. Если соответствующая запись таблицы найдена, пакет обрабатывают согласно действию, указанному в соответствующей записи таблицы. Если соответствующая запись таблицы не найдена, извлекают ключевые слова из различных ключевых полей пакета с целью параллельного поиска по меньшей мере в одной таблице потоков с соответствием классификации. Записи таблицы в таблице потоков с точным соответствием создают динамически на основе результата поиска по меньшей мере в одной таблице потоков с соответствием классификации. Пакет обрабатывают согласно действию из динамически созданной записи таблицы. Таким образом, когда впоследствии снова будет необходима коммутация пакета, она будет выполнена путем непосредственного однократного поиска в таблице потоков с точным соответствием. При этом таблица потоков с точным соответствием может быть реализована в динамической памяти с произвольным доступом (Dynamic Random Access Memory, DRAM), а не только в микросхеме ТСАМ, что позволяет сберегать ресурсы микросхемы ТСАМ.
Краткое описание чертежей
Фиг. 1 представляет собой эскизную блок-схему процедуры, при помощи которой может быть реализован способ табличного поиска для таблиц OpenFlow в соответствии с одним из вариантов осуществления настоящего изобретения.
Фиг. 2 представляет эскизную блок-схему, с разбиением на плоскость управления и плоскость коммутации, которая иллюстрирует, каким образом может быть реализован способ табличного поиска для таблиц OpenFlow в соответствии с одним из вариантов осуществления настоящего изобретения.
Фиг. 3 представляет собой эскизную блок-схему конкретной процедуры выполнения шага 102 в одном из вариантов осуществления настоящего изобретения.
Фиг. 4 представляет собой эскизную блок-схему конкретной процедуры выполнения шага 103 в одном из вариантов осуществления настоящего изобретения.
Фиг. 5 представляет собой эскизную блок-схему структуры устройства табличного поиска для таблиц OpenFlow в соответствии с одним из вариантов осуществления настоящего изобретения.
Подробное описание изобретения
В соответствии с одним из вариантов осуществления настоящего изобретения, в плоскости управления таблицы OpenFlow каждого уровня разбивают, на основе ключевых полей, на таблицу потоков с точным соответствием и по меньшей мере одну таблицу потоков с соответствием классификации. Принимают конфигурационную информацию таблицы потоков, переданную контроллером OpenFlow. Конфигурационную информацию таблицы потоков передают, в виде записи таблицы, в таблицу потоков с точным соответствием или в таблицу потоков с соответствием классификации на основе ключевых полей, содержащихся в конфигурационной информации таблиц потоков. В плоскости коммутации выполняют поиск соответствующей записи таблицы в таблице потоков с точным соответствием с использованием всех ключевых слов в пакете. Если соответствующая запись таблицы найдена, пакет обрабатывают согласно действию, указанному в соответствующей записи таблицы. Если соответствующая запись таблицы не найдена, извлекают ключевые слова из различных ключевых полей пакета с целью параллельного поиска по меньшей мере в одной таблице потоков с соответствием классификации. Записи таблицы в таблице потоков с точным соответствием создают динамически на основе результата поиска по меньшей мере в одной таблице потоков с соответствием классификации. Пакет обрабатывают согласно действию из динамически созданной записи таблицы.
Далее настоящее изобретение будет описано более подробно в сочетании с приложенными чертежами и вариантами его осуществления.
В одном из вариантов осуществления настоящего изобретения предложен способ табличного поиска для таблиц OpenFlow. В соответствии с иллюстрацией фиг. 1 и фиг. 2, способ включает шаги, описанные ниже.
На шаге 101, в плоскости управления, таблицы OpenFlow каждого уровня разбивают, на основе ключевых полей, на таблицу потоков с точным соответствием и по меньшей мере одну таблицу потоков с соответствием классификации.
В данном случае упомянутая по меньшей мере одна таблица потоков с соответствием классификации может включать: таблицу потоков второго уровня (L2), таблицу потоков третьего уровня (L3), таблицу потоков технологии многопротокольной коммутации на базе меток (Multiple Protocol Label Switch, MPLS), таблицу потоков с использованием подстановочных знаков (wildcard) и т.п.
В таблице потоков второго уровня хранят конфигурационную информацию таблицы потоков, относящуюся к базовым сервисам второго уровня. Ключевые слова поиска в записях таблицы включают идентификатор виртуальной локальной вычислительной сети (VLAN ID), МАС-адрес источника, МАС-адрес назначения и другую информацию.
В таблице потоков третьего уровня хранят конфигурационную информацию таблицы потоков, относящуюся к базовым сервисам третьего уровня. Ключевые слова поиска в записях таблицы включают VLAN ID, IP-адрес источника, IP-адрес назначения и другую информацию.
В таблице потоков MPLS хранят конфигурационную информацию таблицы потоков, относящуюся к базовым сервисам технологии MPLS. Ключевые слова в поиска в записях таблицы включают маску MPLS.
В таблице потоков с точным соответствием хранят соответствующую конфигурационную информацию таблицы потоков, точно соответствующую всем ключевым записям таблицы, которые определены протоколом OpenFlow 1.х.
6
В таблице потоков с точным соответствием в памяти DRAM хранят, в форме хэш-таблицы, переданную конфигурационную информацию таблицы потоков, а также динамически созданные записи таблицы. На практике количество динамически создаваемых записей таблицы может быть огромным, как правило, таблица потоков с точным соответствием требует создания таблицы с не менее 4×10 элементами.
В таблице потоков с использованием подстановочных знаков хранят остальную конфигурационную информацию таблицы потоков, отсутствующую в описанных выше четырех типах таблиц потоков. В таблице потоков с использованием подстановочных знаков все ключевые слова, определенные в стандарте OpenFlow 1.x, могут быть использованы как ключевые для выполнения поиска с неточным соответствием. Маска может быть сконфигурирована в любом поле, храниться она может в ТСАМ-памяти.
На шаге 102 принимают конфигурационную информацию таблицы потоков, переданную контроллером OpenFlow. Конфигурационную информацию таблицы потоков передают, в виде записи таблицы, в таблицу потоков с точным соответствием или таблицу потоков с соответствием классификации на основе ключевых полей, содержащихся в конфигурационной информации таблиц потоков.
А именно, программа-агент OpenFlow принимает конфигурационную информацию таблицы потоков, переданную контроллером OpenFlow. Программа-агент OpenFlow передает конфигурационную информацию таблицы потоков с ключевыми полями, полностью соответствующими всем ключевым словам, в виде записи таблицы потоков с точным соответствием в таблицу потоков с точным соответствием; передает конфигурационную информацию таблицы потоков с ключевыми полями, соответствующими только базовому сервису второго уровня, в виде записи таблицы потоков второго уровня в таблицу потоков второго уровня; передает конфигурационную информацию таблицы потоков с ключевыми полями, соответствующими только базовому сервису третьего уровня, в виде записи таблицы потоков третьего уровня в таблицу потоков третьего уровня; передает конфигурационную информацию таблицы потоков с ключевыми полями, соответствующими только базовому сервису MPLS, в виде записи таблицы MPLS в таблицу потоков MPLS; и передает остальную конфигурационную информацию таблицы потоков, в виде записи таблицы потоков с использованием подстановочных знаков, в таблицу потоков с использованием подстановочных знаков.
В соответствии с иллюстрацией фиг. 3, этот шаг может включать шаги, описанные ниже.
На шаге 301 программа-агент OpenFlow принимает информацию о модификации таблицы потоков, переданную контроллером OpenFlow.
На шаге 302 программа-агент OpenFlow выполняет анализ ключевых полей в информации о модификации таблицы потоков.
На шаге 303 определяют, соответствуют ли ключевые поля только базовому сервису второго уровня. Если это так, выполняют шаг 304; в противном случае выполняют шаг 305.
На шаге 304 передают информацию о модификации таблицы потоков, в виде записи таблицы, в таблицу потоков второго уровня.
А именно, выполняют поиск по таблице потоков второго уровня на основе ключевых полей из информации о модификации таблицы потоков. Если в таблице потоков второго уровня будет найдена соответствующая запись, то над найденной записью таблицы выполняют операцию, включающую добавление, удаление или модификацию, в зависимости от действия, которое задано в информации о модификации таблицы потоков. Если в таблице потоков второго уровня не будет найдено соответствующих записей, в контроллер OpenFlow возвращают сообщение, указывающее на то, что такой таблицы потоков не существует.
На шаге 305 определяют, соответствуют ли ключевые поля только базовому сервису третьего уровня. Если это так, выполняют шаг 306; в противном случае выполняют шаг 307.
На шаге 306 передают информацию о модификации таблицы потоков, в виде записи таблицы, в таблицу потоков третьего уровня.
А именно, выполняют поиск по таблице потоков третьего уровня на основе ключевых полей из информации о модификации таблицы потоков. Если в таблице потоков третьего уровня будет найдена соответствующая запись, то над найденной записью таблицы выполняют операцию, включающую добавление, удаление или модификацию, в зависимости от действия, которое задано в информации о модификации таблицы потоков. Если в таблице потоков третьего уровня не будет найдено соответствующих записей, в контроллер OpenFlow возвращают сообщение указывающее на то, что такой таблицы потоков не существует.
На шаге 307 определяют, соответствуют ли ключевые поля только базовому сервису технологии MPLS. Если это так, выполняют шаг 308; в противном случае выполняют шаг 309.
На шаге 308 передают информацию о модификации таблицы потоков, в виде записи таблицы, в таблицу потоков MPLS.
А именно, выполняют поиск по таблице потоков MPLS на основе ключевых полей из информации о модификации таблицы потоков. Если в таблице потоков MPLS будет найдена соответствующая запись, то над найденной записью таблицы выполняют операцию, включающую добавление, удаление или модификацию, в зависимости от действия, которое задано в информации о модификации таблицы потоков. Если в таблице потоков MPLS не будет найдено соответствующих записей, в контроллер OpenFlow возвращают сообщение, указывающее на то, что такой таблицы потоков не существует.
На шаге 309 определяют, совпадают ли ключевые поля со всеми ключевыми словами. Если это так, выполняют шаг 310; в противном случае выполняют шаг 311.
На шаге 310 передают информацию о модификации таблицы потоков, в виде записи таблицы, в таблицу потоков с точным соответствием.
А именно, выполняют поиск по таблице с точным соответствием на основе ключевых полей из информации о модификации таблицы потоков. Если в таблице потоков с точным соответствием будет найдена соответствующая запись, то над найденной записью таблицы выполняют операцию, включающую добавление, удаление или модификацию, в зависимости от действия, которое задано в информации о модификации таблицы потоков. Если в таблице потоков с точным соответствием не будет найдено соответствующих записей, в контроллер OpenFlow возвращают сообщение, указывающее на то, что такой таблицы потоков не существует.
На шаге 311 передают информацию о модификации таблицы потоков, в виде записи таблицы, в таблицу потоков с использованием подстановочных знаков.
А именно, выполняют поиск по таблице потоков с использованием подстановочных знаков на основе ключевых полей из информации о модификации таблицы потоков. Если в таблице потоков с использованием подстановочных знаков будет найдена соответствующая запись, то над найденной записью таблицы выполняют операцию, включающую добавление, удаление или модификацию, в зависимости от действия, которое задано в информации о модификации таблицы потоков. Если в таблице потоков с использованием подстановочных знаков не будет найдено соответствующих записей, в контроллер OpenFlow возвращают сообщение, указывающее на то, что такой таблицы потоков не существует.
На шаге 103, в плоскости коммутации, выполняют поиск соответствующей записи таблицы в таблице потоков с точным соответствием с использованием всех ключевых слов в пакете. Если соответствующая запись найдена, пакет обрабатывают согласно действию, указанному в соответствующей записи таблицы. Если соответствующей записи таблицы не найдено, извлекают ключевые слова из различных ключевых полей пакета с целью параллельного поиска по меньшей мере в одной таблице потоков с соответствием классификации. Записи таблицы в таблице потоков с точным соответствием создают динамически на основе результата поиска по меньшей мере в одной таблице потоков с соответствием классификации. Пакет обрабатывают согласно действию из динамически созданной записи таблицы. На данном шаге динамическое создание записи таблицы в таблице потоков с точным соответствием на основе результата поиска по меньшей мере в одной таблице потоков с соответствием классификации может включать шаги, описанные ниже.
Действие, указанное в соответствующей записи таблицы, которая была найдена по меньшей мере в одной таблице потоков с соответствием классификации, назначают в набор действий для процедуры коммутации таблицы потоков. Набор действий для процедуры коммутации таблицы потоков и все ключевые слова пакета рассматривают как одну запись таблицы потоков с точным соответствием. Такой записи таблицы назначают тег «динамическая запись таблицы». Записывают временную метку формирования этой записи таблицы. Время жизни записи таблицы назначают равным минимальному времени жизни записи таблицы в течение табличного поиска.
В соответствии с иллюстрацией фиг. 4, этот шаг, в частности, может включать шаги, описанные ниже.
На шаге 401 анализируют принятый пакет и извлекают все ключевые слова пакета согласно определению в протоколе OpenFlow 1.х.
На шаге 402 выполняют поиск в таблице N (N=0) с точным соответствием с использованием всех извлеченных ключевых слов. Если найдена соответствующая запись таблицы, выполняют шаг 403. Если соответствующих записей не найдено, выполняют шаг 404.
На шаге 403 определяют, является ли найденная запись таблицы динамической. Если найденная запись таблицы является динамической, выполняют шаг 405. Если найденная запись таблицы не является динамической, выполняют шаг 406.
На шаге 404 выполняют параллельный поиск по таблице потоков второго уровня, таблице потоков третьего уровня, таблице потоков MPLS и таблице потоков с использованием подстановочных знаков таблицы N с использованием ключевых слов второго уровня, ключевых слов третьего уровня, ключевых слов MPLS и всех ключевых слов, соответственно, и затем выполняют шаг 409.
На шаге 405 определяют, не является ли запись таблицы просроченной. Если запись таблицы просрочена, выполняют шаг 404. Если запись таблицы не просрочена, выполняют шаг 407.
На шаге 406 определяют, присутствует ли в записи таблицы флажковый указатель «переход к таблице N+1», указывающий на необходимость перехода к таблице N=N+1. Если это не так, выполняют шаг 407. В противном случае выполняют шаг 408.
На шаге 407 пакет обрабатывают согласно действию, указанному в записи таблицы, которая точно соответствует спецификациям стандарта OpenFlow 1.x. Пакет модифицируют согласно сконфигурированному действию и затем пересылают, отбрасывают или выгружают в контроллер, согласно заданному действию. На этом выполнение процедуры завершается.
На шаге 408 действие и метаданные из записи таблицы сохраняют и добавляют в набор действий для процедуры коммутации таблицы потоков. Шаг 404 выполняют согласно метаданным и ключевым словами в записи таблицы, переходя к таблице потоков следующего уровня, т.е. таблице N (N=N+1), для выполнения табличного поиска.
На шаге 409, когда соответствующая запись таблицы найдена, выбирают запись таблицы с наивысшим приоритетом, и действие из этой записи таблицы добавляют в набор действий для процедуры коммутации таблицы потоков. Если соответствующая запись не найдена, пакет обрабатывают согласно действию, заданному по умолчанию.
На шаге 410 определяют, присутствует ли в записи таблицы, имеющей наивысший приоритет, флажковый указатель «переход к таблице N+1», указывающий на необходимость перехода к таблице N+1 (N=N+1). Если это не так, выполняют шаг 411. В противном случае выполняют шаг 412.
На шаге 411 выполняют поиск по таблице потоков с точным соответствием, соответствующей текущей таблице N, с использованием всех ключевых слов пакета. Если соответствующая запись найдена, выполняют шаг 413. Если соответствующих записей не найдено, выполняют шаг 414.
На шаге 412 действие и метаданные из записи таблицы сохраняют и добавляют в набор действий для процедуры коммутации таблицы потоков. Шаг 404 выполняют согласно метаданным и ключевым словами в записи таблицы, переходя к таблице потоков следующего уровня, т.е. таблице N (N=N+1), для выполнения табличного поиска.
На шаге 413 для записи таблицы назначают тег «динамическая запись таблицы», записывают временную метку формирования этой записи таблицы и время жизни записи таблицы обновляют, делая его равным минимальному времени жизни записи таблицы во время табличного поиска. Действие из исходной записи таблицы обновляют согласно набору действий для процедуры коммутации таблицы потоков и затем выполняют шаг 415.
На шаге 414 набор действий для процедуры коммутации таблицы потоков и все ключевые слова в пакете принимают в качестве одной записи таблицы потоков с точным соответствием, для этой записи таблицы назначают тег «динамическая запись таблицы», записывают временную метку формирования этой записи таблицы, время жизни этой записи таблицы назначают равным минимальному времени жизни записи таблицы во время табличного поиска, и затем выполняют шаг 415.
На шаге 415 пакет обрабатывают согласно действию обновленной или динамически заданной записи таблицы потоков с точным соответствием.
В данном варианте осуществления настоящего изобретения, на шаге 103, выполняют также контроль возраста и обновление динамической записи таблицы потоков с точным соответствием.
После приема, программой-агентом OpenFlow в устройстве коммутации пакетов, информации о модификации таблицы потоков, переданной контроллером OpenFlow, программа-агент OpenFlow обновляет таблицу потоков с точным соответствием и по меньшей мере одну таблицу потоков с соответствием классификации из таблиц потоков, согласно способу, реализованному в плоскости управления, без обновления динамической записи таблицы потоков с точным соответствием. При создании каждой динамической записи таблицы в плоскости коммутации записывают временную метку ее создания. После приема пакета, если разность между текущей временной меткой и временной меткой создания, превосходит заданное время жизни, считают, что данная динамическая запись таблицы является просроченной, и заново инициируют создание динамической записи таблицы с целью обновления динамической записи таблицы. Для повышения скорости обновления таблицы время жизни, как правило, задают равным порядка нескольких секунд или сотен миллисекунд.
Принцип устаревание динамической записи таблицы аналогичен обычным таблицам OpenFlow. Устаревание в динамических записях таблиц отличается от обычных таблиц OpenFlow в том отношении, что время жизни динамических записей таблицы конфигурируется не контроллером OpenFlow, а задается, при создании или обновлении динамической таблицы, равным минимальному времени жизни в течение всей процедуры табличного поиска.
После шага 103, после того как пакет передан по адресу, поиск выполняют непосредственно в таблице потоков с точным соответствием и пакет может передаваться при помощи однократного выполнения табличного поиска. При этом таблица потоков с точным соответствием может быть реализована в DRAM-памяти, а не только в микросхеме ТСАМ, что позволяет сберечь ресурсы микросхемы ТСАМ.
В настоящем изобретении предложено также устройство табличного поиска для таблиц OpenFlow, которое основано на описанном выше способе. В соответствии с иллюстрацией фиг. 5, устройство включает модуль 51 плоскости управления и модуль 52 плоскости коммутации.
Модуль 51 плоскости управления сконфигурирован для разбиения, на основе ключевых полей, таблицы OpenFlow каждого уровня на таблицу потоков с точным соответствием и по меньшей мере одну таблицу потоков с соответствием классификации; для приема конфигурационной информации таблиц потоков, сформированной контроллером OpenFlow; и для передачи, на основе ключевых полей, содержащихся в конфигурационной информации таблиц потоков, конфигурационной информации таблиц потоков, в виде записи таблицы, в таблицу потоков с точным соответствием или в таблицу потоков с соответствием классификации.
Модуль 52 плоскости коммутации сконфигурирован для поиска соответствующей записи таблицы по таблице потоков с точным соответствием с использованием всех ключевых слов в пакете; когда соответствующая запись таблицы найдена, для обработки пакета согласно действию в соответствующей записи таблицы; а когда соответствующая запись таблицы не найдена, для извлечения ключевых слов из различных ключевых полей пакета с целью параллельного поиска по меньшей мере в одной таблице потоков с соответствием классификации, для динамического создания записи таблицы в таблице потоков с точным соответствием на основе результата поиска по меньшей мере в одной таблице потоков с соответствием классификации и для обработки пакета согласно действию из динамически созданной записи таблицы.
Упомянутая по меньшей мере одна таблица потоков с соответствием классификации может включать: таблицу потоков второго уровня (L2), таблицу потоков третьего уровня (L3), таблицу потоков технологии многопротокольной коммутации на базе меток (Multiple Protocol Label Switch, MPLS), таблицу потоков с использованием подстановочных знаков (wildcard) и т.п.
В таблице потоков второго уровня хранят конфигурационную информацию таблицы потоков, относящуюся к базовым сервисам второго уровня. Ключевые слова поиска в записях таблицы включают VLAN ID, МАС-адрес источника, МАС-адрес назначения и другую информацию.
В таблице потоков третьего уровня хранят конфигурационную информацию таблицы потоков, относящуюся к базовым сервисам третьего уровня. Ключевые слова поиска в записях таблицы включают VLAN ID, МАС-адрес источника, МАС-адрес назначения и другую информацию.
В таблице потоков MPLS хранят конфигурационную информацию таблицы потоков, относящуюся к базовым сервисам технологии MPLS. Ключевые слова в поиска в записях таблицы включают маску MPLS.
В таблице потоков с точным соответствием хранят соответствующую конфигурационную информацию таблицы потоков, точно соответствующую всем ключевым записям таблицы, которые определены протоколом OpenFlow 1.х.
6
В таблице потоков с точным соответствием, в памяти DRAM, хранят, в форме хэш-таблицы, переданную конфигурационную информацию таблицы потоков, а также динамически созданные записи таблицы. На практике количество динамически создаваемых записей таблицы может быть огромным, как правило, таблица потоков с точным соответствием требует создания таблицы с не менее 4×10 элементами.
В таблице потоков с использованием подстановочных знаков хранят остальную конфигурационную информацию таблицы потоков, отсутствующую в описанных выше четырех типах таблиц потоков. В таблице потоков с использованием подстановочных знаков все ключевые слова, определенные в протоколе OpenFlow 1.x, принимаются как ключевые для выполнения поиска с неточным соответствием. Маска может быть сконфигурирована в любом поле, а храниться она может в ТСАМ-памяти.
Программа-агент OpenFlow в модуле 51 плоскости управления принимает конфигурационную информацию таблицы потоков, переданную контроллером OpenFlow. Программа-агент OpenFlow передает конфигурационную информацию таблицы потоков с ключевыми полями, полностью соответствующими всем ключевым словам, в виде записи таблицы потоков с точным соответствием в таблицу потоков с точным соответствием; передает конфигурационную информацию таблицы потоков с ключевыми полями, соответствующими только базовому сервису второго уровня, в виде записи таблицы потоков второго уровня в таблицу потоков второго уровня; передает конфигурационную информацию таблицы потоков с ключевыми полями, соответствующими только базовому сервису третьего уровня, в виде записи таблицы потоков третьего уровня в таблицу потоков третьего уровня; передает конфигурационную информацию таблицы потоков с ключевыми полями, соответствующими только базовому сервису MPLS, в виде записи таблицы MPLS в таблицу потоков MPLS; и передает остальную конфигурационную информацию таблицы потоков в виде записи таблицы потоков с использованием подстановочных знаков в таблицу потоков с использованием подстановочных знаков.
Модуль 52 плоскости коммутации при этом сконфигурирован, когда соответствующая запись таблицы не найдена, для извлечения ключевых слов из различных ключевых полей пакета с целью параллельного поиска по меньшей мере в одной таблице потоков с соответствием классификации; для назначения действия, указанного в соответствующей записи таблицы, которая была найдена по меньшей мере в одной таблице потоков с соответствием классификации, в набор действий для процедуры коммутации таблицы потоков; для принятия набора действий процедуры коммутации таблицы потоков и всех ключевых слов в пакете в качестве одной записи таблицы потоков с точным соответствием; и назначения, для этой записи таблицы, тега «динамическая запись таблицы», записи временной метки формирования этой записи таблицы, и назначения времени жизни этой записи таблицы. Время жизни записи таблицы назначают равным минимальному времени жизни записи таблицы в течение табличного поиска.
При этом модуль 52 плоскости коммутации сконфигурирован для устаревания данных и для обновления динамической записи таблицы в таблице потоков с точным соответствием.
Когда модуль 52 плоскости коммутации принимает пакет, если разность между текущей временной меткой и временной меткой создания превосходит заданное время жизни, считают, что данная динамическая запись таблицы является просроченной, и заново инициируют создание динамической записи таблицы с целью обновления динамической записи таблицы. Когда динамическую запись таблицы создают или обновляют, время жизни динамической записи таблицы может быть принято равным минимальному времени жизни для записи таблицы в течение табличного поиска.
В соответствии с одним из вариантов осуществления настоящего изобретения способ табличного поиска для таблиц OpenFlow, когда его реализуют в форме программного функционального кода и распространяют или используют в качестве самостоятельного продукта, может храниться на читаемом носителе данных. Ввиду этого, технические решения, предложенные в различных вариантах осуществления настоящего изобретения, могут быть реализованы в программном продукте. Такой программный продукт хранят на носителе данных, при этом он включает несколько инструкций, которые обеспечивают выполнение компьютерным устройством (персональный компьютер, сервер, сетевое устройство и т.п.) части или всех способов в соответствии с одним из вариантов осуществления настоящего изобретения. Носитель данных может включать USB-устройство, съемный жесткий диск, память только для чтения (Read-Only Memory, ROM), магнитный или оптический диск, а также другие носители, способные хранить программный код. Таким образом, варианты осуществления настоящего изобретения не ограничены никакой конкретной комбинацией аппаратного и программного обеспечения.
Соответственно, в одном из вариантов осуществления настоящего изобретения предложен компьютерный носитель данных, на котором хранят компьютерные программы. Компьютерные программы приспособлены для выполнения любых из способов табличного поиска для таблиц OpenFlow в соответствии с различными вариантами осуществления настоящего изобретения.
Все рассмотренное выше является лишь предпочтительными вариантами осуществления настоящего изобретения и не имеет целью ограничить объем настоящего изобретения. Все модификации, эквивалентные замены и усовершенствования, выполненные в пределах сущности настоящего изобретения, могут попадать в объем его правовой защиты.
Промышленная применимость
В соответствии вариантами осуществления настоящего изобретения, в плоскости управления таблицы OpenFlow каждого уровня разбивают, на основе ключевых полей, на таблицу потоков с точным соответствием и по меньшей мере одну таблицу потоков с соответствием классификации. Конфигурационную информацию таблицы потоков передают, в виде записи таблицы, в таблицу потоков с точным соответствием или таблицу потоков с соответствием классификации на основе ключевых полей, содержащихся в конфигурационной информации таблиц потоков. В плоскости коммутации выполняют поиск соответствующей записи таблицы в таблице потоков с точным соответствием с использованием всех ключевых слов в пакете. Если соответствующая запись найдена, пакет обрабатывают согласно действию, указанному в соответствующей записи таблицы. Если соответствующая запись таблицы не найдена, извлекают ключевые слова из различных ключевых полей пакета с целью параллельного поиска по меньшей мере в одной таблице потоков с соответствием классификации. Динамически создают запись таблицы потоков с точным соответствием и обрабатывают пакет. Таким образом, когда пакет впоследствии будет снова коммутироваться, возможна его коммутация при помощи однократного поиска в таблице потоков с точным соответствием. При этом таблица потоков с точным соответствием может быть реализована в DRAM-памяти, а не только в микросхеме ТСАМ, что позволяет сберечь ресурсы микросхемы ТСАМ.