КОММУТИРУЮЩЕЕ УСТРОЙСТВО, КОНТРОЛЛЕР, СПОСОБ КОНФИГУРИРОВАНИЯ КОММУТИРУЮЩЕГО УСТРОЙСТВА И СПОСОБ И СИСТЕМА ДЛЯ ОБРАБОТКИ ПАКЕТА Российский патент 2017 года по МПК H04L12/70 

Описание патента на изобретение RU2628476C1

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ

[0001] Настоящее изобретение относится к области связи, в частности к коммутирующему устройству, контроллеру, способу конфигурирования коммутирующего устройства и к способу и системе для обработки пакета.

УРОВЕНЬ ТЕХНИКИ

[0002] OpenFlow является протоколом управления между контроллером OpenFlow (OpenFlow Controller, для краткости – контроллер) и коммутатором OpenFlow (OpenFlow Switch, для краткости – коммутатор). Контроллер управляет поведениями коммутатора предпочтительно с использованием таблицы потоков (Flow Table). Таблица потоков хранится в коммутаторе и формируется из множества записей о потоках (Flow Entry). Каждая запись о потоке включает в себя, как правило, поля соответствия (Match Fields) и команды (Instructions). Как правило, поле соответствия указывает информацию, которую нужно сопоставить (которая может быть такой информацией, как различные поля заголовка пакета или ID порта, из которого коммутатор принимает пакет), и обеспечивает присвоенное значение информации, которую нужно сопоставить, причем присвоенное значение используется для сравнения с фактическим значением информации, которая относится к пакету и которую нужно сопоставить, а команды включают в себя множество типов команд, которые включают в себя действие (Action), используемое для указания выполнения некой операции над пакетом.

[0003] После приема пакета коммутатор выполняет сопоставление между принятым пакетом и полем соответствия в каждой записи о потоке в таблице потоков, которую нужно сопоставить (то есть сравнивает фактическое значение информации, которая относится к пакету и которую нужно сопоставить, с присвоенным значением поля соответствия в каждой записи о потоке в таблице потоков, которую нужно сопоставить, чтобы определить, являются ли они одним и тем же). Если успешно сопоставление между принятым пакетом и полем соответствия в записи о потоке (то есть содержимое поля соответствия в записи о потоке совпадает с фактическим значением информации, которая относится к пакету и которую нужно сопоставить), то коммутатор обрабатывает пакет в соответствии с командой в записи о потоке, для которой сопоставление успешно; если терпит неудачу сопоставление между принятым пакетом и полями соответствия всех остальных записей о потоках в таблице потоков, которую нужно сопоставить, и в таблице потоков существует запись о потоке Table-Miss (запись о потоке Table-Miss является специальной записью о потоке в таблице потоков OpenFlow, и эта запись о потоке не имеет поля соответствия, то есть сопоставление между этой записью о потоке и всеми пакетами может иметь успех, и эта запись о потоке имеет наименьший приоритет сопоставления), то коммутатор обрабатывает пакет в соответствии с записью о потоке Table-Miss (например, пакет можно отбросить или отправить контроллеру для обработки), а если нет записи о потоке Table-Miss, то коммутатор в соответствии с атрибутами таблицы потоков определяет, как обрабатывать тот пакет (например, пакет может быть выполнен с возможностью отбрасывания или отправки контроллеру для обработки). В соответствии с записью о потоке Table-Miss или атрибутами таблицы потоков, если пакет нужно отправить контроллеру, то контроллеру отправляется первое сообщение OpenFlow (первое сообщение OpenFlow включает в себя все или часть содержимого пакета, на котором терпит неудачу сопоставление), используемое для указания, что сопоставление терпит неудачу. Если контроллер принимает первое сообщение OpenFlow, то контроллер может доставить запись о потоке в коммутатор с использованием второго сообщения OpenFlow, чтобы дать коммутатору команду создать новую запись о потоке в таблице потоков, которую нужно сопоставить, и присвоенное значение, которое относится к информации, которую нужно сопоставить, и находится в поле соответствия новой записи о потоке, соответствует фактическому значению информации, которая относится к пакету и которую нужно сопоставить. После создания записи о потоке в таблице потоков, которую нужно сопоставить, коммутатор может снова выполнять сопоставление над пакетом. Независимо от сообщенного коммутатором пакета контроллер также может напрямую доставить третье сообщение OpenFlow, чтобы дать коммутатору команду создать новую запись о потоке в таблице потоков, которую нужно сопоставить.

[0004] Для уменьшения сообщений OpenFlow между коммутатором и контроллером уровень техники обеспечивает способ конфигурирования коммутатора, который включает в себя этапы, на которых: Сначала в коммутаторе конфигурируется синхронизирующая таблица потоков и правило синхронизации для назначенной таблицы потоков, причем правило синхронизации используется для преобразования записи о потоке в назначенной таблице потоков в запись о потоке в синхронизирующей таблице потоков, посредством этого реализуя синхронизацию операций обновления, таких как добавление, изменение и удаление записи о потоке, между двумя таблицами потоков. Затем коммутатор принимает второе или третье сообщение OpenFlow, доставляемое контроллером, и добавляет, изменяет или удаляет запись о потоке в таблице потоков, назначенной вторым или третьим сообщением OpenFlow, а если таблица потоков, назначенная вторым или третьим сообщением OpenFlow, имеет синхронизирующую таблицу потоков, то коммутатор в синхронизирующей таблице потоков обновляет запись о потоке, соответствующую записи о потоке, согласно правилу синхронизации.

[0005] Уровень техники имеет следующий недостаток: когда обновляется запись о потоке в назначенной таблице потоков, также нужно синхронно обновлять запись о потоке в синхронизирующей таблице потоков. Если синхронизирующее обновление терпит неудачу, то запись о потоке в синхронизирующей таблице потоков не обновляется, и поэтому, когда выполняется сопоставление между пакетом и записью о потоке в синхронизирующей таблице потоков, выполняется ошибочное сопоставление пакетов. Кроме того, коммутатору нужно хранить большое количество записей о потоках, в записях о потоках разных таблиц потоков существует большое количество избыточной информации, и служебная нагрузка системы увеличивается с увеличением масштаба организации сети.

РАСКРЫТИЕ ИЗОБРЕТЕНИЯ

[0006] Для устранения избыточной информации, существующей в записях о потоках разных таблиц потоков, и уменьшения количества записей о потоках варианты осуществления настоящего изобретения обеспечивают коммутирующее устройство, контроллер, способ конфигурирования коммутирующего устройства и способ и систему для обработки пакета. Технические решения выглядят следующим образом:

[0007] В соответствии с первым аспектом вариант осуществления настоящего изобретения обеспечивает способ конфигурирования коммутирующего устройства, причем в коммутирующем устройстве заданы одна или более таблиц потоков, и способ включает в себя:

задание первой записи о потоке по меньшей мере в одной из таблиц потоков, причем первая запись о потоке включает в себя поле соответствия; поле соответствия используется для назначения информации, которую нужно сопоставить, и указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных; информация, которую нужно сопоставить, включает в себя одно или более из поля заголовка пакета, идентификатора входного порта, из которого коммутирующее устройство принимает пакет, и метаданных, ассоциированных с пакетом; и каждая запись в базе данных включает в себя первое поле, и первое поле используется для обозначения присвоенного значения информации, которую нужно сопоставить.

[0008] При необходимости поле соответствия дополнительно используется для назначения идентификатора базы данных и указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, идентификатор которого является идентификатором базы данных.

[0009] При необходимости каждая запись базы данных дополнительно включает в себя второе поле, и второе поле используется для обозначения параметра обработки пакетов; и

первая запись о потоке дополнительно включает в себя команду обработки пакетов, и команда обработки пакетов используется для указания коммутирующему устройству: обработать пакет в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой записи, когда в базе данных существует первая запись, соответствующая пакету.

[0010] При необходимости, когда в базе данных существует множество первых записей,

поле соответствия используется для указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, чтобы получить первую из множества первых записей; и команда обработки пакетов используется для указания коммутирующему устройству обработать пакет в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой из первых записей; или

поле соответствия используется для указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, чтобы получить множество первых записей; и команда обработки пакетов используется для указания коммутирующему устройству: раздельно обработать множество пакетов, которые дублируются коммутирующим устройством, в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в каждой из множества первых записей.

[0011] При необходимости первая запись о потоке дополнительно включает в себя команду обработки записей, и команда обработки записей используется для указания коммутирующему устройству: выполнить операцию над назначенной записью в назначенной базе данных, когда в базе данных существует первая запись, соответствующая пакету.

[0012] При необходимости команда обработки записей включает в себя одну или более из следующих команд: первую команду изменения, вторую команду изменения, команду добавления и команду удаления, причем

первая команда изменения используется для указания коммутирующему устройству: выполнить вычисление над текущим значением первого назначенного поля в первой назначенной записи в первой назначенной базе данных, чтобы получить значение обновления первого назначенного поля и записать значение обновления в первую назначенную базу данных, когда в базе данных существует первая запись, соответствующая пакету;

вторая команда изменения используется для указания коммутирующему устройству: изменить текущее значение второго назначенного поля во второй назначенной записи во второй назначенной базе данных на заданное значение, когда в базе данных существует первая запись, соответствующая пакету;

команда добавления используется для указания коммутирующему устройству: добавить третью назначенную запись в третью назначенную базу данных, когда в базе данных существует первая запись, соответствующая пакету; и

команда удаления используется для указания коммутирующему устройству: удалить четвертую назначенную базу данных или четвертую назначенную запись в четвертой назначенной базе данных, когда в базе данных существует первая запись, соответствующая пакету.

[0013] При необходимости первая запись о потоке включает в себя приоритет, приоритет используется для указания последовательности сопоставления между пакетом и каждой из первой записи о потоке, и способ дополнительно включает в себя:

задание второй записи о потоке по меньшей мере в одной из таблиц потоков, причем приоритет второй записи о потоке ниже, чем у первой записи о потоке, вторая запись о потоке универсально соответствует всем пакетам, вторая запись о потоке включает в себя команду добавления записи, и команда добавления записи используется для указания коммутирующему устройству добавить запись в назначенную базу данных в соответствии с пакетом, соответствующим второй записи о потоке.

[0014] При необходимости способ дополнительно включает в себя:

прием команды конфигурирования, доставляемой оператором, и создание базы данных в соответствии с командой конфигурирования; или

прием команды создания базы данных, отправленной контроллером, и создание базы данных в соответствии с командой создания базы данных, причем команда создания базы данных включает в себя идентификатор базы данных и информацию о поле базы данных.

[0015] При необходимости команда создания базы данных дополнительно включает в себя по меньшей мере одну из информации об атрибуте базы данных и статистической информации; информация об атрибуте базы данных включает в себя максимальное количество записей в базе данных, время ожидания для записи в базе данных, и следует ли позволять коммутирующему устройству изменять запись в базе данных; и статистическая информация включает в себя общее количество записей в базе данных, общее количество сопоставлений между базой данных и пакетами, общее количество успешных сопоставлений и общее количество успешных сопоставлений каждой записи.

[0016] При необходимости способ дополнительно включает в себя:

прием команды обновления базы данных, отправленной контроллером, и обновление базы данных в соответствии с командой обновления базы данных, причем команда обновления базы данных включает в себя по меньшей мере одну из команды удаления базы данных и команды обновления записи, и команда обновления записи включает в себя добавление записи в базу данных, удаление записи из базы данных и изменение записи в базе данных.

[0017] При необходимости способ дополнительно включает в себя:

прием сообщения-запроса, отправленного контроллером, причем сообщение-запрос используется для запроса одного или более из информации об атрибуте базы данных, содержимого записи в базе данных и статистической информации о базе данных; и

отправку контроллеру ответного сообщения, причем ответное сообщение соответствует сообщению-запросу.

[0018] При необходимости перед заданием первой записи о потоке по меньшей мере в одной из таблиц потоков способ дополнительно включает в себя:

запрос, существует ли база данных, и

задание первой записи о потоке по меньшей мере в одной из таблиц потоков, когда существует база данных; и

передачу контроллеру сообщения, означающего, что база данных не существует, когда база данных не существует.

[0019] В соответствии со вторым аспектом вариант осуществления настоящего изобретения обеспечивает способ конфигурирования коммутирующего устройства, причемспособ включает в себя:

отправку сообщения установки первой записи о потоке, причем сообщение установки первой записи о потоке включает в себя идентификатор таблицы потоков и первую запись о потоке; сообщение установки первой записи о потоке используется для указания коммутирующему устройству задать первую запись о потоке в таблице потоков, соответствующей идентификатору таблицы потоков; первая запись о потоке включает в себя поле соответствия, и поле соответствия используется для назначения информации, которую нужно сопоставить, и указания коммутирующему устройству выполнить сопоставление между информацией, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных; информация, которую нужно сопоставить, включает в себя одно или более из поля заголовка пакета, идентификатора входного порта, из которого коммутирующее устройство принимает пакет, и метаданных, ассоциированных с пакетом; и каждая запись в базе данных включает в себя первое поле, и первое поле используется для обозначения присвоенного значения информации, которую нужно сопоставить.

[0020] При необходимости поле соответствия дополнительно используется для назначения идентификатора базы данных и указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, идентификатор которого является идентификатором базы данных.

[0021] При необходимости каждая запись базы данных дополнительно включает в себя второе поле, и второе поле используется для обозначения параметра обработки пакетов; и

первая запись о потоке дополнительно включает в себя команду обработки пакетов, и команда обработки пакетов используется для указания коммутирующему устройству: обработать пакет в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой записи, когда в базе данных существует первая запись, соответствующая пакету.

[0022] При необходимости, когда в базе данных существует множество первых записей,

поле соответствия используется для указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, чтобы получить первую из множества первых записей; и команда обработки пакетов используется для указания коммутирующему устройству обработать пакет в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой из первых записей; или

поле соответствия используется для указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, чтобы получить множество первых записей; и команда обработки пакетов используется для указания коммутирующему устройству: раздельно обработать множество пакетов, которые дублируются коммутирующим устройством, в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в каждой из множества первых записей.

[0023] При необходимости первая запись о потоке дополнительно включает в себя команду обработки записей, и команда обработки записей используется для указания коммутирующему устройству: выполнить операцию над назначенной записью в назначенной базе данных, когда в базе данных существует первая запись, соответствующая пакету.

[0024] При необходимости команда обработки записей включает в себя одну или более из следующих команд: первую команду изменения, вторую команду изменения, команду добавления и команду удаления, причем

первая команда изменения используется для указания коммутирующему устройству: выполнить вычисление над текущим значением первого назначенного поля в первой назначенной записи в первой назначенной базе данных, чтобы получить значение обновления первого назначенного поля и записать значение обновления в первую назначенную базу данных, когда в базе данных существует первая запись, соответствующая пакету;

вторая команда изменения используется для указания коммутирующему устройству: изменить текущее значение второго назначенного поля во второй назначенной записи во второй назначенной базе данных на заданное значение, когда в базе данных существует первая запись, соответствующая пакету;

команда добавления используется для указания коммутирующему устройству: добавить третью назначенную запись в третью назначенную базу данных, когда в базе данных существует первая запись, соответствующая пакету; и

команда удаления используется для указания коммутирующему устройству: удалить четвертую назначенную базу данных или четвертую назначенную запись в четвертой назначенной базе данных, когда в базе данных существует первая запись, соответствующая пакету.

[0025] При необходимости первая запись о потоке включает в себя приоритет, приоритет используется для указания последовательности сопоставления между пакетом и каждой из первой записи о потоке, и способ дополнительно включает в себя:

отправку сообщения установки второй записи о потоке, причем сообщение установки второй записи о потоке включает в себя идентификатор таблицы потоков и вторую запись о потоке, приоритет второй записи о потоке ниже, чем у первой записи о потоке, вторая запись о потоке универсально соответствует всем пакетам, вторая запись о потоке включает в себя команду добавления записи, и команда добавления записи используется для указания коммутирующему устройству добавить запись в назначенную базу данных в соответствии с пакетом, соответствующим второй записи о потоке.

[0026] При необходимости способ дополнительно включает в себя:

отправку коммутирующему устройству команды создания базы данных, причем команда создания базы данных используется для указания коммутирующему устройству создать базу данных, и команда создания базы данных включает в себя идентификатор базы данных и информацию о поле базы данных.

[0027] При необходимости команда создания базы данных дополнительно включает в себя по меньшей мере одну из информации об атрибуте базы данных и статистической информации; информация об атрибуте базы данных включает в себя максимальное количество записей в базе данных, время ожидания для записи в базе данных, и следует ли позволять коммутирующему устройству изменять запись в базе данных; и статистическая информация включает в себя общее количество записей в базе данных, общее количество сопоставлений между базой данных и пакетами, общее количество успешных сопоставлений и общее количество успешных сопоставлений каждой записи.

[0028] При необходимости способ дополнительно включает в себя:

отправку коммутирующему устройству команды обновления базы данных, причем команда обновления базы данных включает в себя по меньшей мере одну из команды удаления базы данных и команды обновления записи, и команда обновления записи включает в себя добавление записи в базу данных, удаление записи из базы данных и изменение записи в базе данных.

[0029] При необходимости способ дополнительно включает в себя:

отправку коммутирующему устройству сообщения-запроса, причем сообщение-запрос используется для запроса одного или более из информации об атрибуте базы данных, содержимого записи в базе данных и статистической информации о базе данных.

[0030] При необходимости способ дополнительно включает в себя:

прием сообщения, возвращенного коммутирующим устройством и означающего, что база данных не существует.

[0031] В соответствии с третьим аспектом вариант осуществления настоящего изобретения обеспечивает способ обработки пакета, причем способ включает в себя:

прием пакета;

получение значения информации, которая относится к пакету и которую нужно сопоставить, в соответствии с полем соответствия первой записи о потоке в таблице потоков, с которой нужно сопоставить пакет, причем первая запись о потоке включает в себя поле соответствия и команду обработки пакетов; поле соответствия используется для назначения информации, которую нужно сопоставить; и информация, которую нужно сопоставить, включает в себя одно или более из поля заголовка пакета, идентификатора входного порта, из которого коммутирующее устройство принимает пакет, и метаданных, ассоциированных с пакетом;

выполнение по команде поля соответствия сопоставления между значением информации, которая относится к пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, причем первое поле используется для обозначения присвоенного значения информации, которую нужно сопоставить; и

обработку пакета в соответствии с командой обработки пакетов, когда получена первая запись, соответствующая пакету.

[0032] При необходимости обработка пакета в соответствии с командой обработки пакетов включает в себя:

обработку пакета в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой записи, причем второе поле используется для обозначения параметра обработки пакетов.

[0033] При необходимости, когда в базе данных существует множество первых записей, обработка пакета в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой записи, причем второе поле используется для обозначения параметра обработки пакетов, включает в себя:

обработку пакета в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой из первых записей; или

дублирование пакета для получения множества пакетов и обработку множества пакетов в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в каждой из множества первых записей.

[0034] При необходимости первая запись о потоке дополнительно включает в себя команду обработки записей, и способ дополнительно включает в себя:

выполнение операции над назначенной записью в назначенной базе данных по команде обработки записей.

[0035] При необходимости команда обработки записей включает в себя одну или более из следующих команд: первую команду изменения, вторую команду изменения, команду добавления и команду удаления, причем

выполнение операции над назначенной записью в назначенной базе данных включает в себя:

выполнение вычисления над текущим значением первого назначенного поля в первой назначенной записи в первой назначенной базе данных в соответствии с первой командой изменения, чтобы получить значение обновления первого назначенного поля и записать значение обновления в первую назначенную базу данных, после того, как получена первая запись, соответствующая пакету;

изменение текущего значения второго назначенного поля во второй назначенной записи во второй назначенной базе данных на заданное значение в соответствии со второй командой изменения после того, как получена первая запись, соответствующая пакету;

добавление третьей назначенной записи в третью назначенную базу данных в соответствии с командой добавления после того, как получена первая запись, соответствующая пакету; и/или

удаление четвертой назначенной базы данных или четвертой назначенной записи в четвертой назначенной базе данных в соответствии с командой удаления после того, как получена первая запись, соответствующая пакету.

[0036] При необходимости первая запись о потоке включает в себя приоритет, приоритет используется для указания последовательности сопоставления между пакетом и каждой первой записью о потоке, в таблице потоков дополнительно задана вторая запись о потоке, приоритет второй записи о потоке ниже, чем у первой записи о потоке, вторая запись о потоке универсально соответствует всем пакетам, вторая запись о потоке включает в себя команду добавления записи, и способ дополнительно включает в себя:

выполнение сопоставления между пакетом и второй записью о потоке и успешное выполнение сопоставления, и добавление записи в назначенную базу данных в соответствии с пакетом по команде добавления записи, когда в базе данных не существует записи, соответствующей пакету.

[0037] В соответствии с четвертым аспектом вариант осуществления настоящего изобретения обеспечивает коммутирующее устройство, причем в коммутирующем устройстве заданы одна или более таблиц потоков, и устройство включает в себя:

первый модуль задания, выполненный с возможностью задания первой записи о потоке по меньшей мере в одной из таблиц потоков, причем первая запись о потоке включает в себя поле соответствия; поле соответствия используется для назначения информации, которую нужно сопоставить, и указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных; информация, которую нужно сопоставить, включает в себя одно или более из поля заголовка пакета, идентификатора входного порта, из которого коммутирующее устройство принимает пакет, и метаданных, ассоциированных с пакетом; и каждая запись в базе данных включает в себя первое поле, и первое поле используется для обозначения присвоенного значения информации, которую нужно сопоставить.

[0038] При необходимости поле соответствия дополнительно используется для назначения идентификатора базы данных и указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, идентификатор которого является идентификатором базы данных.

[0039] При необходимости каждая запись базы данных дополнительно включает в себя второе поле, и второе поле используется для обозначения параметра обработки пакетов; и

первая запись о потоке дополнительно включает в себя команду обработки пакетов, и команда обработки пакетов используется для указания коммутирующему устройству: обработать пакет в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой записи, когда в базе данных существует первая запись, соответствующая пакету.

[0040] При необходимости, когда в базе данных существует множество первых записей,

поле соответствия используется для указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, чтобы получить первую из множества первых записей; и команда обработки пакетов используется для указания коммутирующему устройству обработать пакет в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой из первых записей; или

поле соответствия используется для указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, чтобы получить множество первых записей; и команда обработки пакетов используется для указания коммутирующему устройству: раздельно обработать множество пакетов, которые дублируются коммутирующим устройством, в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в каждой из множества первых записей.

[0041] При необходимости первая запись о потоке дополнительно включает в себя команду обработки записей, и команда обработки записей используется для указания коммутирующему устройству: выполнить операцию над назначенной записью в назначенной базе данных, когда в базе данных существует первая запись, соответствующая пакету.

[0042] При необходимости команда обработки записей включает в себя одну или более из следующих команд: первую команду изменения, вторую команду изменения, команду добавления и команду удаления, причем

первая команда изменения используется для указания коммутирующему устройству: выполнить вычисление над текущим значением первого назначенного поля в первой назначенной записи в первой назначенной базе данных, чтобы получить значение обновления первого назначенного поля и записать значение обновления в первую назначенную базу данных, когда в базе данных существует первая запись, соответствующая пакету;

вторая команда изменения используется для указания коммутирующему устройству: изменить текущее значение второго назначенного поля во второй назначенной записи во второй назначенной базе данных на заданное значение, когда в базе данных существует первая запись, соответствующая пакету;

команда добавления используется для указания коммутирующему устройству: добавить третью назначенную запись в третью назначенную базу данных, когда в базе данных существует первая запись, соответствующая пакету; и

команда удаления используется для указания коммутирующему устройству: удалить четвертую назначенную базу данных или четвертую назначенную запись в четвертой назначенной базе данных, когда в базе данных существует первая запись, соответствующая пакету.

[0043] При необходимости первая запись о потоке включает в себя приоритет, приоритет используется для указания последовательности сопоставления между пакетом и каждой из первой записи о потоке, и устройство дополнительно включает в себя:

второй модуль задания, выполненный с возможностью задания второй записи о потоке по меньшей мере в одной из таблиц потоков, причем приоритет второй записи о потоке ниже, чем у первой записи о потоке, вторая запись о потоке универсально соответствует всем пакетам, вторая запись о потоке включает в себя команду добавления записи, и команда добавления записи используется для указания коммутирующему устройству добавить запись в назначенную базу данных в соответствии с пакетом, соответствующим второй записи о потоке.

[0044] При необходимости устройство дополнительно включает в себя:

модуль создания, выполненный с возможностью приема команды конфигурирования, доставляемой оператором, и создания базы данных в соответствии с командой конфигурирования; или

приема команды создания базы данных, отправленной контроллером, и создания базы данных в соответствии с командой создания базы данных, причем команда создания базы данных включает в себя идентификатор базы данных и информацию о поле базы данных.

[0045] При необходимости команда создания базы данных дополнительно включает в себя по меньшей мере одну из информации об атрибуте базы данных и статистической информации; информация об атрибуте базы данных включает в себя максимальное количество записей в базе данных, время ожидания для записи в базе данных, и следует ли позволять коммутирующему устройству изменять запись в базе данных; и статистическая информация включает в себя общее количество записей в базе данных, общее количество сопоставлений между базой данных и пакетами, общее количество успешных сопоставлений и общее количество успешных сопоставлений каждой записи.

[0046] При необходимости устройство дополнительно включает в себя:

модуль обновления, выполненный с возможностью приема команды обновления базы данных, отправленной контроллером, причем команда обновления базы данных включает в себя по меньшей мере одну из команды удаления базы данных и команды обновления записи, и команда обновления записи включает в себя добавление записи в базу данных, удаление записи из базы данных и изменение записи в базе данных; и

обновления базы данных в соответствии с командой обновления базы данных.

[0047] При необходимости устройство дополнительно включает в себя:

модуль приемопередатчика, выполненный с возможностью приема сообщения-запроса, отправленного контроллером, причем сообщение-запрос используется для запроса одного или более из информации об атрибуте базы данных, содержимого записи в базе данных и статистической информации о базе данных; и

отправки контроллеру ответного сообщения, причем ответное сообщение соответствует сообщению-запросу.

[0048] При необходимости перед заданием первой записи о потоке по меньшей мере в одной из таблиц потоков устройство дополнительно включает в себя:

модуль запроса, выполненный с возможностью запроса, существует ли база данных, и

задания первой записи о потоке по меньшей мере в одной из таблиц потоков, когда существует база данных; и

передачи контроллеру сообщения, означающего, что база данных не существует, когда база данных не существует.

[0049] В соответствии с пятым аспектом вариант осуществления настоящего изобретения обеспечивает коммутирующее устройство, причем в коммутирующем устройстве заданы одна или более таблиц потоков, и коммутирующее устройство включает в себя процессор и сетевой интерфейс, и процессор выполнен с возможностью:

задания первой записи о потоке по меньшей мере в одной из таблиц потоков, причем первая запись о потоке включает в себя поле соответствия; поле соответствия используется для назначения информации, которую нужно сопоставить, и указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных; информация, которую нужно сопоставить, включает в себя одно или более из поля заголовка пакета, идентификатора входного порта, из которого коммутирующее устройство принимает пакет, и метаданных, ассоциированных с пакетом; и каждая запись в базе данных включает в себя первое поле, и первое поле используется для обозначения присвоенного значения информации, которую нужно сопоставить.

[0050] При необходимости поле соответствия дополнительно используется для назначения идентификатора базы данных и указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, идентификатор которого является идентификатором базы данных.

[0051] При необходимости каждая запись базы данных дополнительно включает в себя второе поле, и второе поле используется для обозначения параметра обработки пакетов; и

первая запись о потоке дополнительно включает в себя команду обработки пакетов, и команда обработки пакетов используется для указания коммутирующему устройству: обработать пакет в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой записи, когда в базе данных существует первая запись, соответствующая пакету.

[0052] При необходимости, когда в базе данных существует множество первых записей,

поле соответствия используется для указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, чтобы получить первую из множества первых записей; и команда обработки пакетов используется для указания коммутирующему устройству обработать пакет в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой из первых записей; или

поле соответствия используется для указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, чтобы получить множество первых записей; и команда обработки пакетов используется для указания коммутирующему устройству: раздельно обработать множество пакетов, которые дублируются коммутирующим устройством, в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в каждой из множества первых записей.

[0053] При необходимости первая запись о потоке дополнительно включает в себя команду обработки записей, и команда обработки записей используется для указания коммутирующему устройству: выполнить операцию над назначенной записью в назначенной базе данных, когда в базе данных существует первая запись, соответствующая пакету.

[0054] При необходимости команда обработки записей включает в себя одну или более из следующих команд: первую команду изменения, вторую команду изменения, команду добавления и команду удаления, причем

первая команда изменения используется для указания коммутирующему устройству: выполнить вычисление над текущим значением первого назначенного поля в первой назначенной записи в первой назначенной базе данных, чтобы получить значение обновления первого назначенного поля и записать значение обновления в первую назначенную базу данных, когда в базе данных существует первая запись, соответствующая пакету;

вторая команда изменения используется для указания коммутирующему устройству: изменить текущее значение второго назначенного поля во второй назначенной записи во второй назначенной базе данных на заданное значение, когда в базе данных существует первая запись, соответствующая пакету;

команда добавления используется для указания коммутирующему устройству: добавить третью назначенную запись в третью назначенную базу данных, когда в базе данных существует первая запись, соответствующая пакету; и

команда удаления используется для указания коммутирующему устройству: удалить четвертую назначенную базу данных или четвертую назначенную запись в четвертой назначенной базе данных, когда в базе данных существует первая запись, соответствующая пакету.

[0055] При необходимости первая запись о потоке включает в себя приоритет, приоритет используется для указания последовательности сопоставления между пакетом и каждой из первой записи о потоке, и процессор дополнительно выполнен с возможностью:

задания второй записи о потоке по меньшей мере в одной из таблиц потоков, причем приоритет второй записи о потоке ниже, чем у первой записи о потоке, вторая запись о потоке универсально соответствует всем пакетам, вторая запись о потоке включает в себя команду добавления записи, и команда добавления записи используется для указания коммутирующему устройству добавить запись в назначенную базу данных в соответствии с пакетом, соответствующим второй записи о потоке.

[0056] При необходимости сетевой интерфейс выполнен с возможностью:

приема команды конфигурирования, доставляемой оператором, или приема команды создания базы данных, отправленной контроллером, причем команда создания базы данных включает в себя идентификатор базы данных и информацию о поле базы данных; и

процессор дополнительно выполнен с возможностью:

создания базы данных в соответствии с командой конфигурирования; или

создания базы данных в соответствии с командой создания базы данных.

[0057] При необходимости команда создания базы данных дополнительно включает в себя по меньшей мере одну из информации об атрибуте базы данных и статистической информации; информация об атрибуте базы данных включает в себя максимальное количество записей в базе данных, время ожидания для записи в базе данных, и следует ли позволять коммутирующему устройству изменять запись в базе данных; и статистическая информация включает в себя общее количество записей в базе данных, общее количество сопоставлений между базой данных и пакетами, общее количество успешных сопоставлений и общее количество успешных сопоставлений каждой записи.

[0058] При необходимости сетевой интерфейс выполнен с возможностью:

приема команды обновления базы данных, отправленной контроллером, причем команда обновления базы данных включает в себя по меньшей мере одну из команды удаления базы данных и команды обновления записи, и команда обновления записи включает в себя добавление записи в базу данных, удаление записи из базы данных и изменение записи в базе данных; и

процессор дополнительно выполнен с возможностью обновления базы данных в соответствии с командой удаления базы данных.

[0059] При необходимости сетевой интерфейс выполнен с возможностью:

приема сообщения-запроса, отправленного контроллером, причем сообщение-запрос используется для запроса одного или более из информации об атрибуте базы данных, содержимого записи в базе данных и статистической информации о базе данных; и

процессор дополнительно выполнен с возможностью отправки контроллеру ответного сообщения, причем ответное сообщение соответствует сообщению-запросу.

[0060] При необходимости процессор дополнительно выполнен с возможностью:

запроса, существует ли база данных, и

задания первой записи о потоке по меньшей мере в одной из таблиц потоков, когда существует база данных; и

передачи контроллеру сообщения, означающего, что база данных не существует, когда база данных не существует.

[0061] В соответствии с шестым аспектом вариант осуществления настоящего изобретения обеспечивает контроллер, причем контроллер включает в себя:

первый модуль отправки, выполненный с возможностью отправки сообщения установки первой записи о потоке, причем сообщение установки первой записи о потоке включает в себя идентификатор таблицы потоков и первую запись о потоке; сообщение установки первой записи о потоке используется для указания коммутирующему устройству задать первую запись о потоке в таблице потоков, соответствующей идентификатору таблицы потоков; первая запись о потоке включает в себя поле соответствия, и поле соответствия используется для назначения информации, которую нужно сопоставить, и указания коммутирующему устройству выполнить сопоставление между информацией, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных; информация, которую нужно сопоставить, включает в себя одно или более из поля заголовка пакета, идентификатора входного порта, из которого коммутирующее устройство принимает пакет, и метаданных, ассоциированных с пакетом; и каждая запись в базе данных включает в себя первое поле, и первое поле используется для обозначения присвоенного значения информации, которую нужно сопоставить.

[0062] При необходимости поле соответствия дополнительно используется для назначения идентификатора базы данных и указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, идентификатор которого является идентификатором базы данных.

[0063] При необходимости каждая запись базы данных дополнительно включает в себя второе поле, и второе поле используется для обозначения параметра обработки пакетов; и

первая запись о потоке дополнительно включает в себя команду обработки пакетов, и команда обработки пакетов используется для указания коммутирующему устройству: обработать пакет в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой записи, когда в базе данных существует первая запись, соответствующая пакету.

[0064] При необходимости, когда в базе данных существует множество первых записей,

поле соответствия используется для указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, чтобы получить первую из множества первых записей; и команда обработки пакетов используется для указания коммутирующему устройству обработать пакет в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой из первых записей; или

поле соответствия используется для указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, чтобы получить множество первых записей; и команда обработки пакетов используется для указания коммутирующему устройству: раздельно обработать множество пакетов, которые дублируются коммутирующим устройством, в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в каждой из множества первых записей.

[0065] При необходимости первая запись о потоке дополнительно включает в себя команду обработки записей, и команда обработки записей используется для указания коммутирующему устройству: выполнить операцию над назначенной записью в назначенной базе данных, когда в базе данных существует первая запись, соответствующая пакету.

[0066] При необходимости команда обработки записей включает в себя одну или более из следующих команд: первую команду изменения, вторую команду изменения, команду добавления и команду удаления, причем

первая команда изменения используется для указания коммутирующему устройству: выполнить вычисление над текущим значением первого назначенного поля в первой назначенной записи в первой назначенной базе данных, чтобы получить значение обновления первого назначенного поля и записать значение обновления в первую назначенную базу данных, когда в базе данных существует первая запись, соответствующая пакету;

вторая команда изменения используется для указания коммутирующему устройству: изменить текущее значение второго назначенного поля во второй назначенной записи во второй назначенной базе данных на заданное значение, когда в данных существует первая запись, соответствующая пакету;

команда добавления используется для указания коммутирующему устройству: добавить третью назначенную запись в третью назначенную базу данных, когда в базе данных существует первая запись, соответствующая пакету; и

команда удаления используется для указания коммутирующему устройству: удалить четвертую назначенную базу данных или четвертую назначенную запись в четвертой назначенной базе данных, когда в базе данных существует первая запись, соответствующая пакету.

[0067] При необходимости первая запись о потоке включает в себя приоритет, приоритет используется для указания последовательности сопоставления между пакетом и каждой из первой записи о потоке, и контроллер дополнительно включает в себя:

второй модуль отправки, выполненный с возможностью отправки сообщения установки второй записи о потоке, причем сообщение установки второй записи о потоке включает в себя идентификатор таблицы потоков и вторую запись о потоке, приоритет второй записи о потоке ниже, чем у первой записи о потоке, вторая запись о потоке универсально соответствует всем пакетам, вторая запись о потоке включает в себя команду добавления записи, и команда добавления записи используется для указания коммутирующему устройству добавить запись в назначенную базу данных в соответствии с пакетом, соответствующим второй записи о потоке.

[0068] При необходимости контроллер дополнительно включает в себя:

третий модуль отправки, выполненный с возможностью отправки коммутирующему устройству команды создания базы данных, причем команда создания базы данных используется для указания коммутирующему устройству создать базу данных, и команда создания базы данных включает в себя идентификатор базы данных и информацию о поле базы данных.

[0069] При необходимости команда создания базы данных дополнительно включает в себя по меньшей мере одну из информации об атрибуте базы данных и статистической информации; информация об атрибуте базы данных включает в себя максимальное количество записей в базе данных, время ожидания для записи в базе данных, и следует ли позволять коммутирующему устройству изменять запись в базе данных; и статистическая информация включает в себя общее количество записей в базе данных, общее количество сопоставлений между базой данных и пакетами, общее количество успешных сопоставлений и общее количество успешных сопоставлений каждой записи.

[0070] При необходимости контроллер дополнительно включает в себя:

четвертый модуль отправки, выполненный с возможностью отправки коммутирующему устройству команды обновления базы данных, причем команда обновления базы данных включает в себя по меньшей мере одну из команды удаления базы данных и команды обновления записи, и команда обновления записи включает в себя добавление записи в базу данных, удаление записи из базы данных и изменение записи в базе данных.

[0071] При необходимости контроллер дополнительно включает в себя:

пятый модуль отправки, выполненный с возможностью отправки коммутирующему устройству сообщения-запроса, причем сообщение-запрос используется для запроса одного или более из информации об атрибуте базы данных, содержимого записи в базе данных и статистической информации о базе данных.

[0072] При необходимости контроллер дополнительно включает в себя:

первый модуль приема, выполненный с возможностью приема сообщения, возвращенного коммутирующим устройством и означающего, что база данных не существует.

[0073] В соответствии с седьмым аспектом вариант осуществления настоящего изобретения обеспечивает контроллер, включающий в себя процессор и сетевой интерфейс, причем процессор выполнен с возможностью:

отправки сообщения установки первой записи о потоке, причем сообщение установки первой записи о потоке включает в себя идентификатор таблицы потоков и первую запись о потоке; сообщение установки первой записи о потоке используется для указания коммутирующему устройству задать первую запись о потоке в таблице потоков, соответствующей идентификатору таблицы потоков; первая запись о потоке включает в себя поле соответствия, и поле соответствия используется для назначения информации, которую нужно сопоставить, и указания коммутирующему устройству выполнить сопоставление между информацией, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных; информация, которую нужно сопоставить, включает в себя одно или более из поля заголовка пакета, идентификатора входного порта, из которого коммутирующее устройство принимает пакет, и метаданных, ассоциированных с пакетом; и каждая запись в базе данных включает в себя первое поле, и первое поле используется для обозначения присвоенного значения информации, которую нужно сопоставить.

[0074] При необходимости поле соответствия дополнительно используется для назначения идентификатора базы данных и указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, идентификатор которого является идентификатором базы данных.

[0075] При необходимости каждая запись базы данных дополнительно включает в себя второе поле, и второе поле используется для обозначения параметра обработки пакетов; и

первая запись о потоке дополнительно включает в себя команду обработки пакетов, и команда обработки пакетов используется для указания коммутирующему устройству: обработать пакет в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой записи, когда в базе данных существует первая запись, соответствующая пакету.

[0076] При необходимости, когда в базе данных существует множество первых записей,

поле соответствия используется для указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, чтобы получить первую из множества первых записей; и команда обработки пакетов используется для указания коммутирующему устройству обработать пакет в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой из первых записей; или

поле соответствия используется для указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, чтобы получить множество первых записей; и команда обработки пакетов используется для указания коммутирующему устройству: раздельно обработать множество пакетов, которые дублируются коммутирующим устройством, в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в каждой из множества первых записей.

[0077] При необходимости первая запись о потоке дополнительно включает в себя команду обработки записей, и команда обработки записей используется для указания коммутирующему устройству: выполнить операцию над назначенной записью в назначенной базе данных, когда в базе данных существует первая запись, соответствующая пакету.

[0078] При необходимости команда обработки записей включает в себя одну или более из следующих команд: первую команду изменения, вторую команду изменения, команду добавления и команду удаления, причем

первая команда изменения используется для указания коммутирующему устройству: выполнить вычисление над текущим значением первого назначенного поля в первой назначенной записи в первой назначенной базе данных, чтобы получить значение обновления первого назначенного поля и записать значение обновления в первую назначенную базу данных, когда в базе данных существует первая запись, соответствующая пакету;

вторая команда изменения используется для указания коммутирующему устройству: изменить текущее значение второго назначенного поля во второй назначенной записи во второй назначенной базе данных на заданное значение, когда в данных существует первая запись, соответствующая пакету;

команда добавления используется для указания коммутирующему устройству: добавить третью назначенную запись в третью назначенную базу данных, когда в базе данных существует первая запись, соответствующая пакету; и

команда удаления используется для указания коммутирующему устройству: удалить четвертую назначенную базу данных или четвертую назначенную запись в четвертой назначенной базе данных, когда в базе данных существует первая запись, соответствующая пакету.

[0079] При необходимости первая запись о потоке включает в себя приоритет, приоритет используется для указания последовательности сопоставления между пакетом и каждой из первой записи о потоке, и процессор дополнительно выполнен с возможностью:

отправки сообщения установки второй записи о потоке, причем сообщение установки второй записи о потоке включает в себя идентификатор таблицы потоков и вторую запись о потоке, приоритет второй записи о потоке ниже, чем у первой записи о потоке, вторая запись о потоке универсально соответствует всем пакетам, вторая запись о потоке включает в себя команду добавления записи, и команда добавления записи используется для указания коммутирующему устройству добавить запись в назначенную базу данных в соответствии с пакетом, соответствующим второй записи о потоке.

[0080] При необходимости процессор дополнительно выполнен с возможностью:

отправки коммутирующему устройству команды создания базы данных, причем команда создания базы данных используется для указания коммутирующему устройству создать базу данных, и команда создания базы данных включает в себя идентификатор базы данных и информацию о поле базы данных.

[0081] При необходимости команда создания базы данных дополнительно включает в себя по меньшей мере одну из информации об атрибуте базы данных и статистической информации; информация об атрибуте базы данных включает в себя максимальное количество записей в базе данных, время ожидания для записи в базе данных, и следует ли позволять коммутирующему устройству изменять запись в базе данных; и статистическая информация включает в себя общее количество записей в базе данных, общее количество сопоставлений между базой данных и пакетами, общее количество успешных сопоставлений и общее количество успешных сопоставлений каждой записи.

[0082] При необходимости процессор дополнительно выполнен с возможностью:

отправки коммутирующему устройству команды обновления базы данных, причем команда обновления базы данных включает в себя по меньшей мере одну из команды удаления базы данных и команды обновления записи, и команда обновления записи включает в себя добавление записи в базу данных, удаление записи из базы данных и изменение записи в базе данных.

[0083] При необходимости процессор дополнительно выполнен с возможностью:

отправки коммутирующему устройству сообщения-запроса, причем сообщение-запрос используется для запроса одного или более из информации об атрибуте базы данных, содержимого записи в базе данных и статистической информации о базе данных.

[0084] При необходимости сетевой интерфейс выполнен с возможностью:

приема сообщения, возвращенного коммутирующим устройством и означающего, что база данных не существует.

[0085] В соответствии с восьмым аспектом вариант осуществления настоящего изобретения обеспечивает коммутирующее устройство, причем устройство включает в себя:

второй модуль приема, выполненный с возможностью приема пакета;

модуль получения, выполненный с возможностью получения значения информации, которая относится к пакету и которую нужно сопоставить, в соответствии с полем соответствия первой записи о потоке в таблице потоков, с которой нужно сопоставить пакет, причем первая запись о потоке включает в себя поле соответствия и команду обработки пакетов, и поле соответствия используется для назначения информации, которую нужно сопоставить; и информация, которую нужно сопоставить, включает в себя одно или более из поля заголовка пакета, идентификатора входного порта, из которого коммутирующее устройство принимает пакет, и метаданных, ассоциированных с пакетом;

модуль сопоставления, выполненный с возможностью выполнения по команде поля соответствия сопоставления между значением информации, которая относится к пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, причем первое поле используется для обозначения присвоенного значения информации, которую нужно сопоставить; и

первый модуль обработки, выполненный с возможностью обработки пакета в соответствии с командой обработки пакетов, когда получена первая запись, соответствующая пакету.

[0086] При необходимости первый модуль обработки выполнен с возможностью:

обработки пакета в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой записи, причем второе поле используется для обозначения параметра обработки пакетов.

[0087] При необходимости, когда в базе данных существует множество первых записей, первый модуль обработки выполнен с возможностью:

обработки пакета в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой из первых записей; или

дублирования пакета для получения множества пакетов и обработки множества пакетов в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в каждой из множества первых записей.

[0088] При необходимости первая запись о потоке дополнительно включает в себя команду обработки записей, и первый модуль обработки дополнительно выполнен с возможностью выполнения операции над назначенной записью в назначенной базе данных по команде обработки записей.

[0089] При необходимости команда обработки записей включает в себя одну или более из следующих команд: первую команду изменения, вторую команду изменения, команду добавления и команду удаления, причем

первый модуль обработки дополнительно выполнен с возможностью:

выполнения вычисления над текущим значением первого назначенного поля в первой назначенной записи в первой назначенной базе данных в соответствии с первой командой изменения, чтобы получить значение обновления первого назначенного поля и записать значение обновления в первую назначенную базу данных, после того, как получена первая запись, соответствующая пакету;

изменения текущего значения второго назначенного поля во второй назначенной записи во второй назначенной базе данных на заданное значение в соответствии со второй командой изменения после того, как получена первая запись, соответствующая пакету;

добавления третьей назначенной записи в третью назначенную базу данных в соответствии с командой добавления после того, как получена первая запись, соответствующая пакету; и/или

удаления четвертой назначенной базы данных или четвертой назначенной записи в четвертой назначенной базе данных в соответствии с командой удаления после того, как получена первая запись, соответствующая пакету.

[0090] При необходимости первая запись о потоке включает в себя приоритет, приоритет используется для указания последовательности сопоставления между пакетом и каждой первой записью о потоке, в таблице потоков дополнительно задана вторая запись о потоке, приоритет второй записи о потоке ниже, чем у первой записи о потоке, вторая запись о потоке универсально соответствует всем пакетам, вторая запись о потоке включает в себя команду добавления записи, и устройство дополнительно включает в себя:

второй модуль обработки, выполненный с возможностью: выполнения сопоставления между пакетом и второй записью о потоке и успешного выполнения сопоставления, и добавления записи в назначенную базу данных в соответствии с пакетом по команде добавления записи, когда в базе данных не существует записи, соответствующей пакету.

[0091] В соответствии с девятым аспектом вариант осуществления настоящего изобретения обеспечивает коммутирующее устройство, включающее в себя процессор и сетевой интерфейс, причем процессор выполнен с возможностью:

приема пакета;

получения значения информации, которая относится к пакету и которую нужно сопоставить, в соответствии с полем соответствия первой записи о потоке в таблице потоков, с которой нужно сопоставить пакет, причем первая запись о потоке включает в себя поле соответствия и команду обработки пакетов, и поле соответствия используется для назначения информации, которую нужно сопоставить; и информация, которую нужно сопоставить, включает в себя одно или более из поля заголовка пакета, идентификатора входного порта, из которого коммутирующее устройство принимает пакет, и метаданных, ассоциированных с пакетом;

выполнения по команде поля соответствия сопоставления между значением информации, которая относится к пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, причем первое поле используется для обозначения присвоенного значения информации, которую нужно сопоставить; и

обработки пакета в соответствии с командой обработки пакетов, когда получена первая запись, соответствующая пакету.

[0092] При необходимости процессор дополнительно выполнен с возможностью:

обработки пакета в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой записи, причем второе поле используется для обозначения параметра обработки пакетов.

[0093] При необходимости, когда в базе данных существует множество первых записей, в дополнение к обработке пакета в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой записи, причем второе поле используется для обозначения параметра обработки пакетов, процессор дополнительно выполнен с возможностью:

обработки пакета в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой из первых записей; или

дублирования пакета для получения множества пакетов и обработки множества пакетов в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в каждой из множества первых записей.

[0094] При необходимости первая запись о потоке дополнительно включает в себя команду обработки записей, и процессор дополнительно выполнен с возможностью:

выполнения операции над назначенной записью в назначенной базе данных по команде обработки записей.

[0095] При необходимости команда обработки записей включает в себя одну или более из следующих команд: первую команду изменения, вторую команду изменения, команду добавления и команду удаления, причем

процессор дополнительно выполнен с возможностью:

выполнения вычисления над текущим значением первого назначенного поля в первой назначенной записи в первой назначенной базе данных в соответствии с первой командой изменения, чтобы получить значение обновления первого назначенного поля и записать значение обновления в первую назначенную базу данных, после того, как получена первая запись, соответствующая пакету;

изменения текущего значения второго назначенного поля во второй назначенной записи во второй назначенной базе данных на заданное значение в соответствии со второй командой изменения после того, как получена первая запись, соответствующая пакету;

добавления третьей назначенной записи в третью назначенную базу данных в соответствии с командой добавления после того, как получена первая запись, соответствующая пакету; и/или

удаления четвертой назначенной базы данных или четвертой назначенной записи в четвертой назначенной базе данных в соответствии с командой удаления после того, как получена первая запись, соответствующая пакету.

[0096] При необходимости первая запись о потоке включает в себя приоритет, приоритет используется для указания последовательности сопоставления между пакетом и каждой первой записью о потоке, в таблице потоков дополнительно задана вторая запись о потоке, приоритет второй записи о потоке ниже, чем у первой записи о потоке, вторая запись о потоке универсально соответствует всем пакетам, вторая запись о потоке включает в себя команду добавления записи, и процессор дополнительно выполнен с возможностью:

выполнения сопоставления между пакетом и второй записью о потоке и успешного выполнения сопоставления, и добавления записи в назначенную базу данных в соответствии с пакетом по команде добавления записи, когда в базе данных не существует записи, соответствующей пакету.

[0097] В соответствии с десятым аспектом вариант осуществления настоящего изобретения обеспечивает систему для обработки пакета, причем система включает в себя вышеупомянутый контроллер и вышеупомянутое коммутирующее устройство.

[0098] В вариантах осуществления настоящего изобретения (присвоенное) значение, которое присваивается полем соответствия в записи о потоке в таблице потоков и относится к информации, которую нужно сопоставить, хранится с использованием поля в записи в базе данных, база данных включает в себя много записей, запись также включает в себя много полей, и многие поля могут хранить большое количество значений, которые присваиваются полями соответствия и принадлежат информации, которую нужно сопоставить. Таким образом, отличаются все значения, которые присваиваются с помощью полей соответствия и принадлежат информации, которую нужно сопоставить, и записи о потоках, команды для которых являются одинаковыми, можно упростить до одной записи о потоке, посредством этого уменьшая количество записей о потоках и устраняя избыточную информацию, существующую в записях о потоках; а когда в базе данных не существует значения, которое присваивается с помощью поля соответствия и относится к информации, которую нужно сопоставить, операцию добавления нужно выполнить только один раз, чтобы добавить в базу данных значение информации, которую нужно сопоставить, и не нужно выполнять дополнительную операцию обновления информации, посредством этого исключая возможность ошибки.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

[0100] Для более понятного описания технических решений в вариантах осуществления настоящего изобретения, ниже кратко представлены сопровождающие чертежи, необходимые для описания вариантов осуществления. Очевидно, что сопровождающие чертежи в нижеследующем описании показывают лишь некоторые варианты осуществления настоящего изобретения, и специалист в данной области техники может получить другие и чертежи из этих сопровождающих чертежей без творческих усилий.

[0101] Фиг. 1 – схематическое представление типичного сценария применения системы OpenFlow в соответствии с вариантом осуществления настоящего изобретения;

[0102] Фиг. 2 – схематическое представление процесса, в котором коммутатор OpenFlow обрабатывает пакет в соответствии с вариантом осуществления настоящего изобретения;

[0103] Фиг. 3 – блок-схема способа конфигурирования коммутирующего устройства в соответствии с вариантом осуществления настоящего изобретения;

[0104] Фиг. 4 – блок-схема другого способа конфигурирования коммутирующего устройства в соответствии с вариантом осуществления настоящего изобретения;

[0105] Фиг. с 5 по 8 – блок-схемы способа обработки пакета в соответствии с вариантом осуществления настоящего изобретения;

[0106] Фиг. 9 и фиг. 10 – схематические структурные схемы коммутирующего устройства в соответствии с вариантом осуществления настоящего изобретения;

[0107] Фиг. 11 и фиг. 12 – схематические структурные схемы контроллера в соответствии с вариантом осуществления настоящего изобретения;

[0108] Фиг. 13 и фиг. 14 – схематические структурные схемы другого коммутирующего устройства в соответствии с вариантом осуществления настоящего изобретения; и

[0109] Фиг. 15 – схематическая структурная схема системы для обработки пакета в соответствии с вариантом осуществления настоящего изобретения.

ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ

[0110] Чтобы сделать понятнее задачи, технические решения и преимущества настоящего изобретения, ниже подробно описаны варианты осуществления настоящего изобретения со ссылкой на сопровождающие чертежи.

[0111] Варианты осуществления настоящего изобретения применимы к сетевой архитектуре, в которой плоскость управления отделяется от плоскости перенаправления, и в частности, применимы к сетевой архитектуре OpenFlow. Плоскость управления можно развернуть централизованно, плоскость перенаправления можно развернуть распределенно на множестве физических устройств в соответствии с фактическими потребностями, плоскость управления управляет плоскостью перенаправления и посредством этого может реализовывать различные сетевые функции, например маршрутизацию и коммутацию.

[0112] Для удобства понимания технических решений, предусмотренных в вариантах осуществления настоящего изобретения, предлагается типичный сценарий применения вариантов осуществления настоящего изобретения, используя в качестве примера сетевую архитектуру OpenFlow, но настоящее изобретение этим не ограничивается. В сетевой архитектуре OpenFlow сетевой элемент плоскости управления называется контроллером OpenFlow (для краткости – контроллер), а сетевой элемент плоскости перенаправления называется коммутатором OpenFlow (для краткости – коммутатор). Обращаясь к фиг. 1, коммутатор S соединен с контроллером C. Коммутатор S осуществляет связь с контроллером C, используя сигнальную информацию, которая соответствует протоколу OpenFlow. Коммутатор S имеет x портов, которые отдельно обозначаются P1, P2, …, и Px, причем x – натуральное число и x≥2, каждый порт может соединяться с хостом, и соединенный с портом Px хост может обозначаться PCx. В показанном на фиг. 1 сценарии хост PCx соединен напрямую с портом Px коммутатора S, а в другом сценарии применения вариантов осуществления настоящего изобретения коммутатор S может также соединяться отдельно с контроллером C и хостом, используя другой коммутатор. Варианты осуществления настоящего изобретения не ограничивают способ, которым коммутатор S отдельно соединен с контроллером C и хостом PCx.

[0113] Коммутатор S может хранить одну или более таблиц потоков. Каждая таблица потоков имеет уникальный идентификатор (Identity, для краткости – ID), и в вариантах осуществления настоящего изобретения ID называется ID таблицы потоков. Каждая таблица потоков образуется из множества записей о потоках.

[0114] Обращаясь к Таблицу 1, содержимое записи о потоке включает в себя поля соответствия (Match Fields) и команды (Instructions).

Таблица 1 Поля соответствия Команды

[0115] ID таблицы потоков используется для обозначения таблицы потоков, которой относится к запись о потоке. Поле соответствия используется для назначения информации, которую нужно сопоставить, для которой выполняется сопоставление с различными типами информации, например полем заголовка пакета или другой информацией, ассоциированной с пакетом (включая ID входного порта, из которого коммутатор принимает пакет и метаданные, ассоциированные с пакетом, причем можно сослаться на нижеследующее подробное описание); и обеспечения присвоенного значения информации, которую нужно сопоставить. Команда используется для указания, как выполнять операцию над пакетом, на котором успешно выполняется сопоставление. Как правило, по команде контроллера C коммутатор S добавляет запись о потоке, удаляет запись о потоке и обновляет запись о потоке в таблице потоков. Кроме того, содержимое записи о потоке дополнительно включает в себя приоритет (Priority). Приоритет используется для указания последовательности сопоставления между пакетом и каждой записью о потоке в таблице потоков. Кроме того, содержимое записи о потоке дополнительно включает в себя счетчики (Counters), время ожидания (Timeouts) и Cookie.

[0116] После того, как коммутатор S принимает пакет, отправленный хостом PCx, начинает выполняться сопоставление между пакетом и всеми записями о потоках в первой таблице потоков, которую нужно сопоставить (как правило, это таблица потоков, чье значение ID таблицы потоков является минимальным). Если сопоставление терпит неудачу, то пакет можно отбросить или отправить контроллеру для обработки (которую можно завершить путем исполнения записи о потоке Table-Miss в таблице потоков). Если сопоставление успешно, то исполняется команда в записи о потоке, над которой успешно выполняется сопоставление. Команды включают в себя множество типов, например команда обработки пакетов Action и команда управления конвейером Goto-Table, и некоторые команды включают в себя параметр. Например, предположим, что командой является "Goto-Table Table2", причем "Goto-Table" является типом команды, а "Table2" является параметром, и смыслом этой команды является переход к таблице потоков, ID таблицы потоков которой является Table2, чтобы продолжить выполнение сопоставления и обработку пакета.

[0117] Если командой в записи о потоке, над которой успешно выполняется сопоставление, является переход к другой таблице потоков, то переходят к другой таблице потоков, чтобы продолжить выполнение сопоставления и обработку пакета. То есть сопоставление может выполняться между пакетом и множеством таблиц потоков. Action также включает в себя множество типов, например Output Port1, причем Output является типом Action, который обозначает отправку пакета, а Port1 является параметром, который обозначает порт 1, и все Action обозначает, что пакет отправляется из порта 1. Ниже подробно описывается процесс сопоставления и обработки пакета и множества таблиц потоков.

[0118] Обращаясь к фиг. 2, предположим, что коммутатор S принимает из входного порта P1 пакет Packet, отправленный хостом PC1. Сопоставление в коммутаторе S выполняется последовательно между пакетом Packet и таблицами потоков Table0 (первая таблица потоков, которую нужно сопоставить), Table1, …, и TableN. После приема пакета Packet коммутатор отправляет пакет Packet и IDP1 входного порта (ingress port) в Table0 для конвейерного сопоставления. После того, как Table0 завершает сопоставление и обработку, получается следующая информация: IDP1 входного порта, обработанный пакет Packet+ и метаданные (metadata), ассоциированные с пакетом Packet+, и переходят к следующей таблице потоков в соответствии с Goto-Table для выполнения сопоставления и обработки, либо пакет отбрасывается в соответствии с командой Action, либо пакет отправляется из порта в соответствии с командой Action, либо пакет отправляется в контроллер для обработки в соответствии с командой Action. Метаданные являются динамической информацией, сформированной после того, как Table0 обработает пакет Packet, и динамическую информацию нужно использовать в таблице потоков, сопоставление между которой и пакетом Packet+ нужно выполнять впоследствии. Например, после того, как Packet обрабатывается с помощью Table0, заголовок GRE удаляется из Packet, а затем заголовок GRE можно записать в метаданные. Информация передается в следующую таблицу потоков, предположим, в Table1, для выполнения сопоставления. Аналогично процессу обработки Table0 также получается информация после завершения сопоставления для всех таблиц потоков между Table0 и TableN. После того, как информация передается в TableN, TableN получает окончательно обработанный пакет. Следует отметить, что информация, передаваемая между таблицами потоков, не ограничивается вышеупомянутой перечисленной информацией, например, между таблицами потоков может дополнительно передаваться набор действий (Action Set). Набор действий первоначально является пустым набором (когда пакет отправляется в Table0) и используется для действий хранения в командах, заданных в таблице потоков, и эти команды могут передаваться в другую таблицу потоков и, в конечном счете, исполняться в таблице потоков, в которой заканчивается конвейер.

Вариант осуществления 1

[0119] Этот вариант осуществления настоящего изобретения обеспечивает способ конфигурирования коммутирующего устройства, причем способ применим к вышеупомянутому сценарию применения. Обращаясь к фиг. 3, процесс согласно способу включает в себя:

[0120] Этап 301: Контроллер отправляет сообщение установки первой записи о потоке, причем сообщение установки первой записи о потоке включает в себя ID таблицы потоков и первую запись о потоке, и сообщение установки первой записи о потоке используется для указания коммутирующему устройству задать первую запись о потоке в таблице потоков, соответствующей ID таблицы потоков.

[0121] Первая запись о потоке включает в себя поле соответствия. Поле соответствия используется для назначения информации, которую нужно сопоставить, и указания коммутирующему устройству выполнить сопоставление между информацией, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных.

[0122] Информация, которую нужно сопоставить, включает в себя, но не ограничивается, одно или более из поля заголовка пакета, ID входного порта, из которого коммутирующее устройство принимает пакет, и метаданных, ассоциированных с пакетом. Информация, которую нужно сопоставить, является содержимым, заданным в настоящее время в протоколе OpenFlow, и не исключено, что в будущем протокол OpenFlow может задать другую информацию или больше информации, которую нужно сопоставлять.

[0123] Каждая запись в базе данных включает в себя первое поле, и первое поле используется для обозначения присвоенного значения информации, которую нужно сопоставить.

[0124] В частности, база данных может заранее задаваться в коммутирующем устройстве. Кроме того, коммутирующее устройство может создавать базу данных в соответствии с введенной вручную командой конфигурирования, либо коммутирующее устройство создает базу данных по команде контроллера.

[0125] Этап 302: Коммутирующее устройство задает первую запись о потоке по меньшей мере в одной таблице потоков в соответствии с сообщением установки первой записи о потоке.

[0126] В частности, коммутирующее устройство задает первую запись о потоке в таблице потоков, соответствующей ID таблицы потоков, который находится в сообщении установки первой записи о потоке.

[0127] В этом варианте осуществления настоящего изобретения (присвоенное) значение, которое присваивается полем соответствия в записи о потоке в таблице потоков и относится к информации, которую нужно сопоставить, хранится с использованием поля в записи в базе данных, база данных включает в себя много записей, запись также включает в себя много полей, и многие поля могут хранить большое количество значений, которые присваиваются полями соответствия и принадлежат информации, которую нужно сопоставить. Таким образом, отличаются все значения, которые присваиваются с помощью полей соответствия и принадлежат информации, которую нужно сопоставить, и записи о потоках, команды для которых являются одинаковыми, можно упростить до одной записи о потоке, посредством этого уменьшая количество записей о потоках и устраняя избыточную информацию, существующую в записях о потоках; а когда в базе данных не существует значения, которое присваивается с помощью поля соответствия и относится к информации, которую нужно сопоставить, операцию добавления нужно выполнить только один раз, чтобы добавить в базу данных значение информации, которую нужно сопоставить, и не нужно выполнять дополнительную операцию обновления информации, посредством этого исключая возможность ошибки.

Вариант осуществления 2

[0128] Этот вариант осуществления настоящего изобретения обеспечивает способ конфигурирования коммутирующего устройства, причем способ применим к вышеупомянутому сценарию применения. Обращаясь к фиг. 4, процесс согласно способу включает в себя:

[0129] Этап 401: Контроллер отправляет команду создания базы данных в коммутирующее устройство, причем команда создания базы данных используется для указания коммутирующему устройству создать базу данных.

[0130] В частности, контроллер включает в себя, но не ограничивается, контроллер C, показанный на фиг. 1, коммутирующее устройство включает в себя, но не ограничивается, коммутатор S на фиг. 1, и в коммутаторе S заданы одна или более таблиц потоков.

[0131] В частности, контроллер может отправить коммутирующему устройству команду создания базы данных, используя сообщение OpenFlow. Команда создания базы данных включает в себя ID базы данных и информацию о поле базы данных, причем информация о поле базы данных включает в себя имя поля. Информация о поле базы данных дополнительно может включать в себя тип данных, длину и значение поля по умолчанию, и является ли поле ключом базы данных.

[0132] Например, предположим, что командой создания базы данных, передаваемой в сообщении OpenFlow, является "Create DataBase: DataBase ID=0, Fields (MAC, Port-ID)". В команде создания базы данных ID базы данных равен 0, и запись в базе данных включает в себя два поля: поле адреса Управления доступом к среде передачи (Media Access Control, для краткости – MAC) и поле Port-ID (ID порта). Кроме того, может назначаться тип данных и длина каждого поля, например, можно назначить, что поле MAC-адреса является массивом символов, чья длина равна 6, а поле Port-ID является 32-разрядным целым числом без знака. Можно дополнительно назначить, является ли поле первичным ключом базы данных, например, в этом варианте осуществления контроллер может назначить поле MAC-адреса в качестве первичного ключа, и таким образом, запись базы данных может однозначно определяться с использованием MAC-адреса.

[0133] Кроме того, команда создания базы данных дополнительно может включать в себя по меньшей мере одну из информации об атрибуте базы данных и статистической информации. Информация об атрибуте базы данных включает в себя одно или более из максимального количества записей в базе данных, время ожидания для записи и следует ли позволять коммутирующему устройству изменять запись в базе данных. Статистическая информация включает в себя одно или более из общего количества записей в базе данных, общего количества сопоставлений между базой данных и пакетами, общего количества раз успешных сопоставлений и общего количества раз успешных сопоставлений каждой записи.

[0134] Этап 402: Коммутирующее устройство принимает команду создания базы данных, отправленную контроллером, и создает базу данных в соответствии с командой создания базы данных.

[0135] Следует отметить, что коммутирующее устройство может дополнительно принимать команду конфигурирования, доставляемую оператором, и создавать базу данных в соответствии с командой конфигурирования.

[0136] Этап 403: Контроллер отправляет команду обновления базы данных в коммутирующее устройство, причем команда обновления базы данных включает в себя команду удаления базы данных и команду обновления записи, и команда обновления записи включает в себя добавление записи в базу данных, удаление записи из базы данных и изменение записи в базе данных.

[0137] Контроллер может управлять коммутирующим устройством для изменения базы данных в соответствии со служебной необходимостью и в любое время. В частности, контроллер может отправить коммутирующему устройству команду обновления базы данных, используя сообщение OpenFlow. Например, предположим, что командой обновления записи является Add Record: DataBase ID=0, Fields (MAC=MAC1, Port-ID=1). Команда обновления записи используется для указания коммутирующему устройству добавить такую запись в базу 0 данных, как: значение поля MAC равно MAC1, и значение поля Port-ID равно 1.

[0138] Предположим, что созданной коммутирующим устройством базой данных является база данных, показанная в Таблице 2, ID базы данных равен 0, база данных включает в себя 2 записи, и каждая запись включает в себя поле MAC и поле Port-ID.

Таблица 2 База 0 данных MAC Port-ID MAC1 1 MAC2 2

[0139] Следует отметить, что коммутирующее устройство может создавать базу данных в пространстве хранения коммутирующего устройства либо может создавать базу данных также в физическом устройстве вне коммутирующего устройства.

[0140] Этап 404: Коммутирующее устройство обновляет базу данных в соответствии с командой обновления базы данных.

[0141] В частности, этап 404 включает в себя: удаление с помощью коммутирующего устройства назначенной базы данных в соответствии с командой удаления базы данных; и обновление записи в базе данных в соответствии с командой обновления записи.

[0142] Перед тем, как коммутирующее устройство обновляет базу данных в соответствии с командой обновления базы данных, способ включает в себя: запрос с помощью коммутирующего устройства, существует ли обновляемая база данных, и существует ли обновляемая запись. Когда не существует ни обновляемой базы данных, ни обновляемой записи, коммутирующее устройство передает контроллеру сообщение, означающее, что не существует ни обновляемой базы данных, ни обновляемой записи.

[0143] Этап 405: Контроллер отправляет сообщение установки первой записи о потоке, причем сообщение установки первой записи о потоке включает в себя ID таблицы потоков и первую запись о потоке, и сообщение установки первой записи о потоке используется для указания коммутирующему устройству задать первую запись о потоке в таблице потоков, соответствующей ID таблицы потоков.

[0144] Первая запись о потоке включает в себя поле соответствия. Поле соответствия используется для назначения информации, которую нужно сопоставить, и указания коммутирующему устройству выполнить сопоставление между информацией, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, чтобы получить первую запись, соответствующую пакету. Информация, которую нужно сопоставить, включает в себя одно или более из поля заголовка пакета, ID входного порта, из которого коммутирующее устройство принимает пакет, и метаданных, ассоциированных с пакетом.

[0145] Первое поле используется для обозначения присвоенного значения информации, которую нужно сопоставить, а второе поле используется для обозначения параметра обработки пакетов. В частности, каждое поле в каждой записи в базе данных может использоваться в качестве первого поля или второго поля, что зависит от полей соответствия и команд обработки пакетов в разных записях о потоках в таблице потоков. Например, поле MAC-адреса в Таблице 2 может использоваться в качестве первого поля, и поле Port-ID может использоваться в качестве первого поля, и дополнительно может использоваться в качестве второго поля.

[0146] Кроме того, поле соответствия дополнительно может использоваться для назначения ID базы данных и указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, идентификатор которого является ID базы данных.

[0147] Например, предположим, что ID таблицы потоков, передаваемым в сообщении установки первой записи о потоке, является "Table ID=0", и первой записью о потоке является "Match ((SRC MAC=MAC, In Port=Port-ID), DataBase ID=0), Instructions (Goto-Table Table1)". "Match ((SRC MAC=MAC, In Port=Port-ID)" является полем соответствия, информацией, которая присваивается полем соответствия и которую нужно сопоставить, является SRC MAC (MAC-адрес источника) и In Port (порт, из которого принимается пакет), и ID базы данных, назначенный полем соответствия, равен 0. Поле соответствия используется для указания коммутирующему устройству выполнить сопоставление отдельно между SRC MAC принятого пакета и значением MAC в поле MAC в ID базы данных и между In Port принятого пакета и значением Port в поле Port-ID. В соответствии с указанием из поля соответствия поле MAC и поле Port-ID в базе данных используются в качестве первого поля.

[0148] В методе реализации из этого варианта осуществления настоящего изобретения первая запись о потоке дополнительно включает в себя команду обработки пакетов, и команда обработки пакетов используется для указания коммутирующему устройству: обработать пакет в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой записи, после того, как получена первая запись, соответствующая пакету.

[0149] Команды в записи о потоке включают в себя многие типы, кроме описанного выше типа команд, которым является команда Goto-Table для выполнения перехода между таблицами потоков, существует другой тип команд, который является действием (Action), указывающим коммутатору, как выполнять операцию над пакетом, например перенаправление, отбрасывание, изменение заголовка пакета, инкапсулирование, декапсулирование и отправку пакета контроллеру. В этом варианте осуществления настоящего изобретения этот тип команд называется командой обработки пакетов.

[0150] Например, предположим, что ID таблицы потоков, передаваемым в сообщении установки первой записи о потоке, является "Table ID=1", и первой записью о потоке является "Match ((DST MAC=MAC), DataBase ID=0), Instructions Apply-Actions (Output (MatchRecord. Port-ID)))". "Instructions Apply-Actions (Output (MatchRecord. Port-ID))" является командой обработки пакетов и используется для указания коммутирующему устройству: перенаправить пакет в Port, указанный значением поля Port-ID в первой записи, после того, как получена первая запись, соответствующая пакету (запись, которая находится в базе данных и включает в себя поле MAC, причем значение поля MAC у записи совпадает со значением DST MAC в пакете). Поле Port-ID в записи в базе данных используется в качестве второго поля.

[0151] База данных включает в себя множество записей, и каждая запись включает в себя первое поле, и поэтому может возникать ситуация, в которой имеется множество первых записей, соответствующих пакету. В этой ситуации может использоваться способ обработки с установкой разных полей соответствия и команд обработки пакетов для указания пакета. Этот вариант осуществления предусматривает два типа разных полей соответствия и команд обработки пакетов.

[0152] Первый тип: поле соответствия используется для указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, чтобы получить первую из множества первых записей, соответствующих пакету; и команда обработки пакетов используется для указания коммутирующему устройству: обработать пакет в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой из первых записей.

[0153] Например, предположим, что ID таблицы потоков, передаваемым в информации установки первой записи о потоке, является "Table ID=Y", и первой записью о потоке является "MatchFirst ((SRC IP=Field2), DataBase ID=X), Instructions Apply-Actions (Set-Field (SRC MAC, MatchRecord. Field1)), Goto-Table TableM)". Поле соответствия в первой записи о потоке используется для указания выполнить сопоставление между SRC IP в пакете и полем Field2 в записи в базе данных, чтобы получить первую соответствующую запись из первых записей, и команда обработки пакетов используется для указания установить SRC MAC пакета в значение поля (Field)1 первой записи, а затем перейти к таблице M потоков для обработки.

[0154] Второй тип: поле соответствия используется для указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, чтобы получить множество первых записей, соответствующих пакету; и команда обработки пакетов используется для указания коммутирующему устройству: обработать множество пакетов, которые дублируются коммутирующим устройством, в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в каждой из множества первых записей.

[0155] Например, предположим, что ID таблицы потоков, передаваемым в сообщении установки первой записи о потоке, является "Table ID=Z", и первой записью о потоке является "MatchAll ((DST IP=Field3) DataBase ID=X), Instructions Apply-Actions (Set-Field (SRC MAC, MatchRecord. Field1)), Goto-Table TableN)". Поле соответствия в первой записи о потоке используется для указания выполнить сопоставление между DST IP в пакете и полем Field3 в записи в базе данных, чтобы получить все соответствующие первые записи (предполагается, что имеется две первых записи). Коммутирующее устройство воспроизводит пакет в двух копиях. Команда обработки пакетов используется для указания раздельно установить SRC MAC двух пакетов в значения Field1 в этих двух записях, а затем перейти к таблице N потоков для обработки.

[0156] В другом методе реализации из этого варианта осуществления настоящего изобретения первая запись о потоке дополнительно включает в себя команду обработки записей, и команда обработки записей используется для указания коммутирующему устройству: выполнить операцию над назначенной записью в назначенной базе данных после того, как получена первая запись, соответствующая пакету.

[0157] Кроме того, команда обработки записей может включать в себя одну или более из следующих команд: первую команду изменения, вторую команду изменения, команду добавления и команду удаления, причем первая команда изменения используется для указания коммутирующему устройству: выполнить вычисление над текущим значением первого назначенного поля в первой назначенной записи в первой назначенной базе данных, чтобы получить значение обновления первого назначенного поля и записать значение обновления в первую назначенную базу данных, когда в базе данных существует первая запись, соответствующая пакету; вторая команда изменения используется для указания коммутирующему устройству: изменить текущее значение второго назначенного поля во второй назначенной записи во второй назначенной базе данных на заданное значение, когда в базе данных находится первая запись, соответствующая пакету; команда добавления используется для указания коммутирующему устройству: добавить третью назначенную запись в третью назначенную базу данных, когда в базе данных существует первая запись, соответствующая пакету; и команда удаления используется для указания коммутирующему устройству: удалить четвертую назначенную базу данных или четвертую назначенную запись в четвертой назначенной базе данных, когда в базе данных существует первая запись, соответствующая пакету.

[0158] В частности, первая, вторая, третья и четвертая назначенные базы данных являются базами данных, соответствующими ID баз данных, заданным в команде обработки записей. Может быть известно, что первая, вторая, третья и четвертая назначенные базы данных могут быть одной и той же базой данных либо могут быть разными базами данных. Кроме того, когда ID базы данных не задан в команде обработки записей, базой данных по умолчанию является текущая база данных, а затем команда обработки записей используется для указания коммутирующему устройству: выполнить операцию над первой записью после того, как получена первая запись, соответствующая пакету. Например, предположим, что командой обработки записей является "UpdateDatabase (MatchRecord.Sequence-Number=(MatchRecord.Sequence-Number+1)mod(2**32)), Goto-Table Table2)". Команда обработки записей используется для указания выполнить операцию по модулю 232 над значением поля Sequence-Number в первой записи плюс единица, а затем обновить результат операции по модулю в базе данных, и затем перейти к Table2.

[0159] Этап 406: Коммутирующее устройство задает первую запись о потоке по меньшей мере в одной таблице потоков в соответствии с сообщением установки первой записи о потоке.

[0160] Например, предположим, что коммутирующее устройство отдельно создает в Table0 и Table1 первые записи о потоках, показанные в Таблице 3 и Таблице 4, в соответствии с сообщением установки первой записи о потоке, отправленным контроллером на этапе 405.

Таблица 3 Таблица 0 Поле соответствия Команда Goto-Table Поле MAC, MAC источника которого=DataBase 0,
Поле Port-ID, входной порт которого=DataBase 0
Goto-Table Table 1

Таблица 4 Таблица 1 Поле соответствия Команда обработки пакетов Поле MAC, MAC назначения которого=DataBase 0 Output (соответствующий полю Port-ID в записи)

[0161] Следует отметить, что перед тем, как коммутирующее устройство задает первую запись о потоке в таблице потоков, способ включает в себя: запрос с помощью коммутирующего устройства, существует ли база данных, и задание первой записи о потоке в таблице потоков, когда существует база данных; и передачу сообщения контроллеру с помощью коммутирующего устройства, означающего, что база данных не существует, когда база данных не существует.

[0162] Этап 407: Контроллер отправляет сообщение установки второй записи о потоке, причем сообщение установки второй записи о потоке включает в себя ID таблицы потоков и вторую запись о потоке, приоритет второй записи о потоке ниже, чем у первой записи о потоке, и вторая запись о потоке универсально соответствует всем пакетам.

[0163] Вторая запись о потоке включает в себя команду добавления записи, причем команда добавления записи используется для указания коммутирующему устройству добавить запись в назначенную базу данных в соответствии с пакетом, соответствующим второй записи о потоке.

[0164] В частности, каждая запись о потоке в таблице потоков включает в себя приоритет, и приоритет используется для указания последовательности сопоставления между пакетом и каждой записью о потоке.

[0165] Предположим, что второй записью о потоке является "Table-Miss, Instructions (Apply-Actions (UpdateDatabase (DataBase ID=0, Find: SRC MAC=MAC, UpdateContent (SRC MAC=MAC, Port-ID=In Port))), Goto-Table Table1)", причем "Table-Miss" ссылается на то, что нет соответствующего содержимого, то есть все пакеты соответствуют универсально. "UpdateDatabase (DataBase ID=0, Find: SRC MAC=MAC, UpdateContent (SRC MAC=MAC, In Port=Port-ID))" относится к тому, что в базе данных, ID базы данных которой равен 0, ищут запись, MAC-адрес которой является MAC-адресом источника пакета, и если эта запись не обнаружена, то MAC-адрес источника пакета и входной порт P1 добавляются в базу данных; а если запись обнаружена, то не нужно добавлять ни MAC-адрес источника пакета, ни входной порт P1, и ID порта обновляется непосредственно до In Port.

[0166] Этап 408: Коммутирующее устройство задает вторую запись о потоке по меньшей мере в одной таблице потоков в соответствии с сообщением установки второй записи о потоке.

[0167] Например, предположим, что коммутирующее устройство создает в Table0 вторую запись о потоке, показанную в Таблице 5, в соответствии с сообщением установки второй записи о потоке, отправленным контроллером на этапе 407, вторая запись о потоке имеет низкий приоритет, а первая запись о потоке в Table0 имеет высокий приоритет.

Таблица 5 Таблица 0 Приоритет Поле соответствия Команда Высокий приоритет Поле MAC, MAC источника которого=DataBase 0,
Поле Port-ID, входной порт которого=DataBase 0
Goto-Table Table 1
Низкий приоритет Table-Miss UpdateDatabase:
SRC MAC=MAC,
In Port=Port-ID,
Goto-Table Table 1

[0168] Этап 409: Контроллер отправляет коммутирующему устройству сообщение-запрос, причем сообщение-запрос используется для запроса одного или более из информации об атрибуте базы данных, содержимого записи в базе данных и статистической информации о базе данных.

[0169] Этап 410: Коммутирующее устройство принимает сообщение-запрос, отправленное контроллером, причем сообщение-запрос используется для запроса одного или более из информации об атрибуте базы данных, содержимого записи в базе данных и статистической информации о базе данных; и отправляет контроллеру ответное сообщение, причем ответное сообщение соответствует сообщению-запросу.

[0170] В частности, то, что ответное сообщение соответствует сообщению-запросу, включает в себя: соответствующее содержимое, обнаруженное в соответствии с содержимым, которое указывается сообщением-запросом и которое контроллеру нужно запросить. Как сообщение-запрос, так и ответное сообщение могут иметь формат сообщения OpenFlow.

[0171] Следует отметить, что этот вариант осуществления не ограничивает последовательность исполнения между этапами 403, 405, 407 и 409.

[0172] В этом варианте осуществления настоящего изобретения (присвоенное) значение, которое присваивается полем соответствия в записи о потоке в таблице потоков и относится к информации, которую нужно сопоставить, хранится с использованием поля в записи в базе данных, база данных включает в себя много записей, запись также включает в себя много полей, и многие поля могут хранить большое количество значений, которые присваиваются полями соответствия и принадлежат информации, которую нужно сопоставить. Таким образом, отличаются все значения, которые присваиваются с помощью полей соответствия и принадлежат информации, которую нужно сопоставить, и записи о потоках, команды для которых являются одинаковыми, можно упростить до одной записи о потоке, посредством этого уменьшая количество записей о потоках и устраняя избыточную информацию, существующую в записях о потоках; а когда в базе данных не существует значения, которое присваивается с помощью поля соответствия и относится к информации, которую нужно сопоставить, операцию добавления нужно выполнить только один раз, чтобы добавить в базу данных значение информации, которую нужно сопоставить, и не нужно выполнять дополнительную операцию обновления информации, посредством этого исключая возможность ошибки.

Вариант осуществления 3

[0173] Этот вариант осуществления настоящего изобретения обеспечивает способ обработки пакета, причем способ применим к вышеупомянутому сценарию применения и может исполняться коммутатором S, показанным на фиг. 1. В коммутаторе S заданы одна или более таблиц потоков. Обращаясь к фиг. 5, процесс согласно способу включает в себя:

[0174] Этап 501: Принять пакет.

[0175] Кроме того, при приеме пакета коммутирующее устройство получает ID входного порта, из которого принимается пакет, и метаданные, ассоциированные с пакетом.

[0176] Этап 502: Получить значение информации, которая относится к пакету и которую нужно сопоставить, в соответствии с полем соответствия первой записи о потоке в таблице потоков, с которой нужно сопоставить пакет.

[0177] Первая запись о потоке включает в себя поле соответствия и команду обработки пакетов, и поле соответствия используется для назначения информации, которую нужно сопоставить. Информация, которую нужно сопоставить, включает в себя одно или более из поля заголовка пакета, ID входного порта, из которого коммутирующее устройство принимает пакет, и метаданных, ассоциированных с пакетом.

[0178] Этап 503: Выполнить по команде поля соответствия сопоставление между значением информации, которая относится к пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных.

[0179] Когда получена первая запись, соответствующая пакету, выполняется этап 504. Когда не получена первая запись, соответствующая пакету, пакет можно отправить контроллеру, или над пакетом выполняется отбрасывающая обработка.

[0180] Первое поле используется для обозначения присвоенного значения информации, которую нужно сопоставить.

[0181] Этап 504: Обработать пакет в соответствии с командой обработки пакетов.

[0182] В этом варианте осуществления настоящего изобретения (присвоенное) значение, которое присваивается полем соответствия в записи о потоке в таблице потоков и относится к информации, которую нужно сопоставить, хранится с использованием поля в записи в базе данных, база данных включает в себя много записей, запись также включает в себя много полей, и многие поля могут хранить большое количество значений, которые присваиваются полями соответствия и принадлежат информации, которую нужно сопоставить. Таким образом, отличаются все значения, которые присваиваются с помощью полей соответствия и принадлежат информации, которую нужно сопоставить, и записи о потоках, команды для которых являются одинаковыми, можно упростить до одной записи о потоке, посредством этого уменьшая количество записей о потоках и устраняя избыточную информацию, существующую в записях о потоках; а когда в базе данных не существует значения, которое присваивается с помощью поля соответствия и относится к информации, которую нужно сопоставить, операцию добавления нужно выполнить только один раз, чтобы добавить в базу данных значение информации, которую нужно сопоставить, и не нужно выполнять дополнительную операцию обновления информации, посредством этого исключая возможность ошибки.

Вариант осуществления 4

[0183] Этот вариант осуществления настоящего изобретения обеспечивает способ обработки пакета, и в этом варианте осуществления предполагается, что в показанном на фиг. 1 коммутаторе S обслуживаются две таблицы потоков, причем одна таблица используется для обработки принятого пакета Ethernet, а предпочтительно для выполнения функции запоминания MAC-адресов, и в дальнейшем называется таблицей запоминания (предполагается, что ID таблицы запоминания является Table0, и таблица запоминания является первой таблицей потоков); другая используется для обработки внешней отправки пакета Ethernet, а предпочтительно для выполнения функции перенаправления пакетов Ethernet, и в дальнейшем называется таблицей перенаправления (предполагается, что ID таблицы перенаправления является Table1). После того, как таблица запоминания заканчивает обработку пакета, переходят к таблице перенаправления с использованием команды для выполнения отправляющей обработки. Хосты PC1 и PC2, показанные на фиг. 1, соединены соответственно с портом P1 и портом P2 в S, и S соединен с контроллером C. IP у P1 является IP1, и MAC-адресом P1 является MAC1. IP у P2 является IP2, и MAC-адресом P2 является MAC2. PC1 намеревается осуществить связь с PC2 в первый раз (PC1 знает IP-адрес PC2, и между тем PC1 и PC2 не знают MAC-адресов друг друга). Сначала PC1 отправляет к S пакет запроса по протоколу разрешения адресов (Address Resolution Protocol, для краткости – ARP), чтобы запросить разрешение MAC-адреса, соответствующего IP2 (широковещательная рассылка осуществляется всем хостам, и после приема широковещательной рассылки хост, IP-адресом которого является IP2, информирует PC1 о MAC-адресе). Пакет запроса ARP включает в себя MAC-адрес MAC1 у PC1, MAC-адрес назначения (широковещательный MAC-адрес, то есть FFFFFFFFFFFF) и IP-адрес IP2 для запроса разрешения MAC-адреса.

[0184] Обращаясь к фиг. 6, процесс согласно способу включает в себя:

[0185] Этап 601: Контроллер дает коммутатору команду отправить контроллеру пакет, на котором терпит неудачу сопоставление, и дает коммутатору команду создать базу данных.

[0186] Во-первых, контроллер дает коммутатору команду отдельно установить запись о потоке Table-Miss в Table0 и Table1. Запись о потоке Table-Miss дает коммутатору команду отправить контроллеру пакет, который терпит неудачу в сопоставлении с Table0 или Table1. Предположим, что записью о потоке Table-Miss в Table0 является "Table ID=0, Table-Miss, Instructions (Apply-Actions (Output (CONTROLLER)))"; а записью о потоке Table-Miss в Table1 является "Table ID=1, Table-Miss, Instructions (Apply-Actions (Output (CONTROLLER)))".

[0187] Следует отметить, что приоритет записи о потоке Table-Miss ниже, чем у других записей о потоках в Table0 и Table1, и таким образом можно обеспечить, что сопоставление между пакетом и записью о потоке Table-Miss выполняется только после того, как терпит неудачу сопоставление между пакетом и другими записями о потоках.

[0188] Во-вторых, контроллер дает коммутатору команду установить запись о потоке в Table1, и запись о потоке дает коммутатору команду отправить пакет, MAC-адресом назначения которого является широковещательный адрес, во ВСЕ порты (ВСЕ порты относятся ко всем портам в коммутаторе за исключением порта, из которого принимается пакет, то есть широковещательного). Предположим, что записью о потоке является "Table ID=1, Match (DST MAC=FFFFFFFFFFFF), Instructions (Apply-Actions (Output (ALL)))".

[0189] Тогда контроллер дает коммутатору команду создать базу данных, используя сообщение OpenFlow. Предположим, что сообщением OpenFlow является "Create DataBase: DataBase ID=0, Fields (MAC, Port-ID)".

[0190] в конечном счете контроллер дает коммутатору команду установить первую запись о потоке в Table0, причем первая запись о потоке дает коммутатору команду выполнить сопоставление между MAC-адресом источника пакета Ethernet и MAC-адресом каждой записи в назначенной базе данных и между ID входного порта пакета Ethernet и полем ID порта каждой записи в назначенной базе данных, и если сопоставление успешно, перейти к Table1. Предположим, что первой записью о потоке является "Table ID=0, Match ((SRC MAC=MAC, In Port=Port-ID), DataBase ID=0), Instructions (Goto-Table Table1)".

[0191] Этап 602: Хост PC1 отправляет пакет запроса ARP.

[0192] Пакет запроса ARP запрашивает разрешение MAC-адреса, соответствующего IP2. MAC-адресом источника у пакета является MAC1, а MAC-адресом назначения у пакета является широковещательный адрес (то есть FFFFFFFFFFFF).

[0193] Этап 603: Коммутатор принимает пакет запроса ARP.

[0194] В частности, коммутатор S принимает пакет запроса ARP из входного порта P1.

[0195] Этап 604: Коммутатор в соответствии с полем соответствия в первой записи о потоке в Table0 получает значение информации, которая относится к пакету и которую нужно сопоставить. Table0 является таблицей потоков, с которой нужно сопоставить пакет запроса ARP.

[0196] Первая запись о потоке включает в себя поле соответствия и команду обработки пакетов, и поле соответствия используется для назначения информации, которую нужно сопоставить; информация, которую нужно сопоставить, включает в себя одно или более из поля заголовка пакета, ID входного порта, из которого коммутирующее устройство принимает пакет, и метаданных, ассоциированных с пакетом.

[0197] Кроме того, поле соответствия дополнительно используется для назначения ID базы данных и указания коммутатору выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, ID которого является ID базы данных.

[0198] В частности, в этом варианте осуществления первой таблицей потоков, с которой нужно сопоставить пакет запроса ARP, является таблица запоминания Table0. Предположим, что первой записью о потоке является первая запись о потоке, созданная на этапе 601, и информацией, которая присваивается полем соответствия в первой записи о потоке и которую нужно сопоставить, является IDP1 входного порта, из которого принимается пакет запроса ARP, и MAC-адрес источника MAC1 у пакета запроса ARP (то есть поле заголовка в заголовке кадра Ethernet).

[0199] Этап 605: Коммутатор определяет, существует ли база данных, указанная полем соответствия в первой записи о потоке в Table0, и если база данных существует, выполняет этап 606; если база данных не существует, завершает текущий процесс.

[0200] В частности, поле соответствия дополнительно используется для назначения ID базы данных. Коммутатор обходит все базы данных в соответствии с ID базы данных, и если база данных обнаружена, то определяет, что база данных существует; если база данных не обнаружена, то определяет, что база данных не существует.

[0201] Этап 606: Коммутатор по команде поля соответствия в первой записи о потоке в Table0 выполняет сопоставление между значением информации, которая относится к пакету запроса ARP и которую нужно сопоставить, и первым полем каждой записи в базе данных.

[0202] Когда получена первая запись, соответствующая пакету запроса ARP, выполняется этап 611. Когда не получена первая запись, соответствующая пакету запроса ARP, выполняется этап 607.

[0203] В частности, если коммутатор S не запомнил MAC-адрес и Port-ID у PC1 (контроллер не информирует коммутатор S о MAC-адресе и Port-ID хоста PC1), то MAC1 и P1 не существуют в поле MAC и Port-ID каждой записи в базе данных, указанной полем соответствия в первой записи о потоке в таблице запоминания Table0. В этом случае терпит неудачу сопоставление между значением информации, которая относится к пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, и не получена никакая первая запись, соответствующей пакету. В противном случае, если коммутатор S запомнил MAC1 и P1, то MAC1 и P1 существуют в базе данных, и получена первая запись, соответствующая пакету.

[0204] Этап 607: Коммутатор отправляет контроллеру пакет запроса ARP и ID входного порта, из которого коммутатор принимает пакет запроса ARP.

[0205] В частности, запись о потоке Table-Miss заранее устанавливается в каждой таблице потоков в коммутаторе, то есть, если сопоставление терпит неудачу, то пакет отбрасывается или отправляется контроллеру для обработки. В этом варианте осуществления настоящего изобретения пакет отправляется контроллеру для обработки.

[0206] Коммутатор отправляет контроллеру пакет запроса ARP и ID входного порта, используя сообщение OpenFlow. Кроме того, коммутатор может дополнительно буферизовать пакет запроса ARP и отправить контроллеру идентификатор буфера. Например, сообщением OpenFlow, отправленным контроллеру коммутатором, является Packet-In (пакет запроса ARP, причем In Port=1 и Buffer-ID=1).

[0207] Этап 608: Контроллер дает коммутатору команду добавить в базу данных первую запись.

[0208] После приема контроллер отправляет коммутатору (используя сообщение OpenFlow) команду обновления записи, причем команда обновления записи дает коммутатору команду добавить в базу данных запись с MAC1 и P1. Если коммутатор буферизует пакет запроса ARP, то контроллер может дополнительно передавать идентификатор буфера в команде обновления записи, а если коммутатор не буферирует пакет запроса ARP, то контроллеру нужно вернуть пакет запроса ARP в коммутатор. Например, командой обновления записи является Add Record: DataBase ID=0, Fields (MAC=MAC1, Port-ID=1), Buffer-ID=1.

[0209] Этап 609: Коммутатор добавляет первую запись в базу данных.

[0210] В частности, после приема команды добавления записи, отправленной контроллером, коммутатор добавляет первую запись в базу данных в соответствии с командой добавления записи.

[0211] Этап 610: Коммутатор по команде поля соответствия в первой записи о потоке в Table0 снова выполняет сопоставление между значением информации, которая относится к пакету запроса ARP и которую нужно сопоставить, и первым полем каждой записи в базе данных.

[0212] Когда получена первая запись, соответствующая пакету запроса ARP, выполняется этап 611. Когда не получена первая запись, соответствующая пакету запроса ARP, выполняется этап 607.

[0213] В этом варианте осуществления настоящего изобретения после того, как выполняется этап 609, можно снова выполнять сопоставление над пакетом запроса ARP, то есть коммутатор по команде поля соответствия снова выполняет сопоставление между значением информации, которая относится к пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных.

[0214] В частности, в базе данных существует запись, полем MAC которой является MAC1, и полем ID порта которой является 1, и поэтому успешно выполняется сопоставление над Table0, чтобы получить первую запись, соответствующую пакету запроса ARP.

[0215] Этап 611: Коммутатор обрабатывает пакет запроса ARP в соответствии с командой обработки пакетов из первой записи о потоке в Table0.

[0216] В частности, командой в записи о потоке в таблице запоминания Table0 является "Instructions (Goto-Table Table1)", то есть вышеупомянутая команда перехода. То есть, когда в базе данных существуют MAC1 и P1, переходят к таблице перенаправления Table1, чтобы продолжить обработку информации пакета.

[0217] Поскольку запись о потоке "Match (DST MAC=FFFFFFFFFFFF), Instructions (Apply-Actions (ALL))" заранее устанавливается в таблице перенаправления Table1, причем DST MAC относится к MAC-адресу назначения, а Apply-Actions (ALL) относится к отправке пакета во все порты, и поскольку MAC-адресом назначения у пакета запроса ARP является FFFFFFFFFFFF, сопоставление над Table1 выполняется успешно, и исполняется команда отправки пакета во все порты (за исключением входного порта P1 в пакете запроса ARP).

[0218] Этап 612: Коммутатор принимает команду обновления базы данных, отправленную контроллером, и обновляет базу данных в соответствии с командой обновления базы данных.

[0219] Команда обновления базы данных включает в себя команду удаления базы данных и команду обновления записи. Обновление базы данных в соответствии с командой обновления базы данных включает в себя: удаление назначенной базы данных в соответствии с командой удаления базы данных; и обновление записи в базе данных в соответствии с командой обновления записи.

[0220] Команда обновления записи включает в себя добавление записи в базу данных, удаление записи из базы данных и изменение записи в базе данных.

[0221] Контроллер может управлять коммутатором для изменения базы данных и записи в соответствии со служебной необходимостью и в любое время.

[0222] Следует отметить, что перед обновлением базы данных в соответствии с командой обновления базы данных коммутатор может обнаруживать, существует ли обновляемая база данных, и существует ли обновляемая запись. Когда не существует ни базы данных, ни записи, коммутатор может сообщить это контроллеру.

[0223] Следует отметить, что этот вариант осуществления настоящего изобретения не ограничивает последовательность исполнения этапа 612, и этап 612 может выполняться до или после любого этапа из этого варианта осуществления.

[0224] В этом варианте осуществления настоящего изобретения (присвоенное) значение, которое присваивается полем соответствия в записи о потоке в таблице потоков и относится к информации, которую нужно сопоставить, хранится с использованием поля в записи в базе данных, база данных включает в себя много записей, запись также включает в себя много полей, и многие поля могут хранить большое количество значений, которые присваиваются полями соответствия и принадлежат информации, которую нужно сопоставить. Таким образом, отличаются все значения, которые присваиваются с помощью полей соответствия и принадлежат информации, которую нужно сопоставить, и записи о потоках, команды для которых являются одинаковыми, можно упростить до одной записи о потоке, посредством этого уменьшая количество записей о потоках и устраняя избыточную информацию, существующую в записях о потоках; а когда в базе данных не существует значения, которое присваивается с помощью поля соответствия и относится к информации, которую нужно сопоставить, операцию добавления нужно выполнить только один раз, чтобы добавить в базу данных значение информации, которую нужно сопоставить, и не нужно выполнять дополнительную операцию обновления информации, посредством этого исключая возможность ошибки.

Вариант осуществления 5

[0225] Этот вариант осуществления настоящего изобретения обеспечивает способ обработки пакета. В варианте осуществления 4 настоящего изобретения коммутатор S завершает перенаправление во все порты (за исключением входного порта P1 в пакете запроса ARP) пакета запроса ARP, отправленного хостом PC1. В этом варианте осуществления настоящего изобретения предполагается, что после приема пакета запроса ARP хост PC2 отвечает коммутатору S с использованием пакета ответа ARP, причем пакет ответа ARP включает в себя MAC-адрес MAC2 у PC2 и MAC-адрес назначения MAC1. Исходя из этого и обращаясь к фиг. 7, этот вариант осуществления настоящего изобретения обеспечивает способ обработки пакета, причем процесс согласно способу включает в себя:

[0226] Этап 701: Контроллер дает коммутатору команду установить первую запись о потоке в Table1 и установить вторую запись о потоке в Table0.

[0227] Предположим, что первой записью о потоке является "Table ID=1, Match ((DST MAC=MAC), DataBase ID=0), Instructions Apply-Actions (Output (MatchRecord. Port-ID)))". Поле соответствия в первой записи о потоке используется для указания выполнить сопоставление между MAC-адресом назначения пакета и DST MAC в записи в базе 0 данных, и если соответствующая первая запись существует в базе 0 данных, то пакет перенаправляется в порт, сохраненный в поле Port-ID в первой записи.

[0228] Предположим, что второй записью о потоке является "Table ID=0, Table-Miss, Instructions (Apply-Actions (UpdateDatabase(DataBase ID=0, Find: SRC MAC=MAC, UpdateContent(SRC MAC=MAC, In Port=Port-ID))), Goto-Table Table1)", причем "Table-Miss" ссылается на то, что нет соответствующего содержимого, то есть все пакеты соответствуют универсально. "UpdateDatabase (DataBase ID=0, Find: SRC MAC=MAC, UpdateContent (SRC MAC=MAC, In Port=Port-ID))" относится к тому, что в базе 0 данных в поле MAC ищут запись, MAC-адрес которой является MAC-адресом источника пакета, и если эта запись не обнаружена, то MAC-адрес источника пакета и входной порт P1 добавляются в базу 0 данных; а если запись обнаружена, то не нужно добавлять ни MAC-адрес источника пакета, ни входной порт P1, и Port-ID обновляется непосредственно до In Port.

[0229] Следует отметить, что этап 701 и этап 601 в варианте осуществления 4 настоящего изобретения могут выполняться одновременно.

[0230] Этап 702: Хост PC2 отправляет пакет ответа ARP.

[0231] В частности, после приема пакета запроса ARP хост PC2 отвечает PC1 с использованием пакета ответа ARP, причем MAC-адресом источника у пакета ответа ARP является MAC2, а MAC-адресом назначения у пакета ответа ARP является MAC1, и коммутатор принимает пакет ответа ARP из порта P2.

[0232] Этап 703: Коммутатор получает пакет ответа ARP.

[0233] В частности, после приема пакета ответа ARP из входного порта P2 коммутатор S отправляет пакет в таблицу запоминания Table0 для выполнения сопоставления.

[0234] Этап 704: Коммутатор в соответствии с полем соответствия в первой записи о потоке в Table0 получает значение информации, которая относится к пакету и которую нужно сопоставить.

[0235] В частности, в этом варианте осуществления первой таблицей потоков, с которой нужно сопоставить пакет ответа ARP, является таблица запоминания Table0. Информацией, которая относится к пакету ответа ARP и которую нужно сопоставить, является ID P2 входного порта у пакета ответа ARP и MAC-адрес источника MAC2, из которого отправляется пакет запроса ARP.

[0236] В частности, этап 704 является таким же, как этап 604 в варианте осуществления 4 настоящего изобретения, и его описание здесь не приводится.

[0237] Этап 705: Коммутатор определяет, существует ли база данных, указанная полем соответствия в первой записи о потоке в Table0, и если база данных существует, выполняет этап 706; если база данных не существует, завершает текущий процесс.

[0238] В частности, этап 705 является таким же, как этап 605 в варианте осуществления 4 настоящего изобретения, и его описание здесь не приводится.

[0239] Этап 706: Коммутатор по команде поля соответствия в первой записи о потоке в Table0 выполняет сопоставление между значением информации, которая относится к пакету ответа ARP и которую нужно сопоставить, и первым полем каждой записи в базе данных.

[0240] Когда получена первая запись, соответствующая пакету ответа ARP, выполняется этап 709. Когда не получена первая запись, соответствующая пакету ответа ARP, выполняется этап 707.

[0241] Аналогично процессу обработки пакета запроса ARP (можно сослаться на этап 606 в варианте осуществления 4 настоящего изобретения), после того, как коммутатор принимает пакет ответа ARP, сопоставление выполняется над MAC-адресом источника MAC2 у пакета ответа ARP в базе данных, указанной первой информацией указания в записи о потоке в таблице запоминания Table0. Если коммутатор S не запомнил MAC-адрес у PC2 (контроллер не информирует коммутатор S о MAC-адресе хоста PC2), то MAC2 не существует в базе данных. В противном случае, если коммутатор S запомнил MAC2, то MAC2 существует в базе данных.

[0242] Этап 707: Коммутатор выполняет сопоставление между пакетом ответа ARP и второй записью о потоке в Table0 и успешно выполняет сопоставление, и добавляет первую запись в базу данных по команде из второй записи о потоке.

[0243] В частности, коммутатор S добавляет запись, MAC-адресом которой является MAC2, и портом которой является P2, в базу данных, ID базы данных которой равен 0. MAC2 соответствует P2.

[0244] Этап 708: Коммутатор по команде поля соответствия в первой записи о потоке в Table0 снова выполняет сопоставление между значением информации, которая относится к пакету ответа ARP и которую нужно сопоставить, и первым полем каждой записи в базе данных.

[0245] Когда получена первая запись, соответствующая пакету ответа ARP, выполняется этап 709.

[0246] Этап 709: Коммутатор обрабатывает пакет ответа ARP в соответствии с командой обработки пакетов из первой записи о потоке в Table0 и переходит к Table1; и коммутатор по команде поля соответствия в первой записи о потоке в Table1 выполняет сопоставление между значением информации, которая относится к пакету ответа ARP и которую нужно сопоставить, и первым полем каждой записи в базе данных. Когда получена первая запись, соответствующая пакету ответа ARP, коммутатор обрабатывает пакет ответа ARP в соответствии с командой обработки пакетов в первой записи о потоке в Table1.

[0247] В частности, как описано на этапе 701, первой записью о потоке, установленной в Table1, является "Table ID=1, Match ((DST MAC=MAC), DataBase ID=0), Instructions Apply-Actions (Output (MatchRecord. Port-ID)))". Поле соответствия в первой записи о потоке используется для указания выполнить сопоставление между MAC-адресом назначения у пакета и DST MAC в записи в базе 0 данных, и команда обработки пакетов в первой записи о потоке используется для указания: если соответствующая первая запись существует в базе 0 данных, перенаправить пакет ответа ARP с использованием поля Port-ID в первой записи в качестве параметра порта и вывести пакет ответа ARP в порт, обозначенный параметром порта.

[0248] Хост PC1 с использованием порта P1 получает пакет ответа ARP, отправленный хостом PC2, и может узнать MAC-адрес хоста PC2 путем разрешения пакета ответа ARP. Таким образом, хост PC1 и хост PC2 знают IP- и MAC-адреса друг друга, и хост PC1 и хост PC2 могут передавать друг другу пакеты. Кроме того, используя весь показанный на фиг. 6 и фиг. 7 процесс, коммутатор сохраняет IP- и MAC-адреса хоста PC1 и хоста PC2, и когда хост PC1 и хост PC2 могут передавать пакеты друг другу, коммутатор может безотказно перенаправлять пакеты двух хостов.

[0249] Этап 710: Коммутатор принимает команду обновления базы данных, отправленную контроллером, причем команда обновления базы данных включает в себя команду удаления базы данных и команду обновления записи, и удаляет назначенную базу данных в соответствии с командой удаления базы данных и обновляет запись в базе данных в соответствии с командой обновления записи.

[0250] Команда обновления записи включает в себя добавление записи в базу данных, удаление записи из базы данных и изменение записи в базе данных.

[0251] Контроллер может управлять коммутатором для изменения базы данных и записи в соответствии со служебной необходимостью и в любое время.

[0252] Следует отметить, что перед обновлением базы данных в соответствии с командой обновления базы данных коммутатор может обнаруживать, существует ли обновляемая база данных, и существует ли обновляемая запись. Когда не существует ни базы данных, ни записи, коммутатор может сообщить это контроллеру.

[0253] Следует отметить, что этот вариант осуществления настоящего изобретения не ограничивает последовательность исполнения этапа 710, и этап 710 может выполняться до или после любого этапа из этого варианта осуществления.

[0254] В этом варианте осуществления настоящего изобретения (присвоенное) значение, которое присваивается полем соответствия в записи о потоке в таблице потоков и относится к информации, которую нужно сопоставить, хранится с использованием поля в записи в базе данных, база данных включает в себя много записей, запись также включает в себя много полей, и многие поля могут хранить большое количество значений, которые присваиваются полями соответствия и принадлежат информации, которую нужно сопоставить. Таким образом, отличаются все значения, которые присваиваются с помощью полей соответствия и принадлежат информации, которую нужно сопоставить, и записи о потоках, команды для которых являются одинаковыми, можно упростить до одной записи о потоке, посредством этого уменьшая количество записей о потоках и устраняя избыточную информацию, существующую в записях о потоках; а когда в базе данных не существует значения, которое присваивается с помощью поля соответствия и относится к информации, которую нужно сопоставить, операцию добавления нужно выполнить только один раз, чтобы добавить в базу данных значение информации, которую нужно сопоставить, и не нужно выполнять дополнительную операцию обновления информации, посредством этого исключая возможность ошибки.

Вариант осуществления 6

[0255] Этот вариант осуществления настоящего изобретения обеспечивает способ обработки пакета, и в этом варианте осуществления предполагается, что контроллер дает коммутатору команду создать базу данных, ID базы данных которой равен 1. Каждая запись в базе данных включает в себя четыре поля: ID туннеля GRE (Tunnel-ID), IP-адрес внешнего источника (Outer-SRC-IP), IP-адрес внешнего назначения (Outer-DST-IP) и порядковый номер (Sequence-Number). Значением по умолчанию у IP-адреса внешнего источника является 2.2.2.2, а значением по умолчанию у порядкового номера является 0. При необходимости контроллер может назначить, что первичным ключом является ID туннеля GRE. Кроме того, в коммутаторе обслуживаются две таблицы потоков Table2 (первая таблица потоков) и Table3. Контроллер дает коммутатору команду установить запись о потоке в Table2 и дает коммутатору команду записать в метаданные ID туннеля GRE у пакета, IP-адресом назначения которого является 1.1.1.1, и перейти к Table3.

[0256] Обращаясь к фиг. 8, процесс согласно способу включает в себя:

[0257] Этап 801: Получить пакет.

[0258] В частности, после приема пакета коммутатор отправляет пакет в Table2 для сопоставления.

[0259] В частности, запись о потоке в Table2 используется для указания записать в метаданные ID туннеля GRE у пакета, IP-адресом которого назначения является 1.1.1.1, и перейти к Table3.

[0260] Этап 802: Определить, существует ли база данных, указанная полем соответствия в первой записи о потоке в Table3, и если база данных существует, выполнить этап 803; если база данных не существует, выйти.

[0261] Например, предположим, что в Table3 устанавливается первая запись о потоке: "Match ((Tunnel-ID=MetaData.GRE-ID), DataBase ID=0), Instructions (Apply-Actions (Push-GRE-Header(MatchRecord.Sequence-Number), Push-IP-Header(MatchRecord.Outer-SRC-IP, MatchRecord.Outer-DST-IP)), UpdateDatabase(MatchRecord.Sequence-Number=(MatchRecord.Sequence-Number+1) mod(2**32))), Goto-Table TableM)".

[0262] В частности, запись о потоке в Table3 используется для указания коммутатору выполнить сопоставление между ID туннеля GRE в метаданных и полем ID туннеля GRE в базе данных, ID базы данных которой равен 1. Коммутатор определяет, существует ли база данных, ID базы данных которой равен 1.

[0263] Этап 803: По команде поля соответствия в первой записи о потоке в Table3 выполнить сопоставление между значением информации, которая относится к пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных.

[0264] В частности, если база данных существует, то запрашивается, совпадает ли значение поля ID туннеля GRE в базе данных с ID туннеля GRE в метаданных. Если значение поля ID туннеля GRE в базе данных совпадает с ID туннеля GRE в метаданных, то получается первая запись, соответствующая пакету, и выполняется этап 805, а если значение поля ID туннеля GRE в базе данных отличается от ID туннеля GRE в метаданных, то выполняется этап 804.

[0265] Этап 804: Создать запись в базе данных, чтобы можно было снова успешно выполнить сопоставление между пакетом и первой записью о потоке в Table3.

[0266] В частности, если терпит неудачу сопоставление над Table3, то пакет можно перенаправить в контроллер. Контроллер дает коммутатору команду добавить в базу данных, ID базы данных которой равен 1, запись о том, что: ID туннеля GRE равен 1, IP-адресом внешнего источника является 3.3.3.3, и IP-адресом внешнего назначения является 4.4.4.4. Поскольку контроллер не назначил порядковый номер, для поля порядкового номера у вновь добавленной записи используется значение по умолчанию, то есть 0, и в качестве IP-адреса внешнего источника используется 3.3.3.3, назначенный здесь вместо значения по умолчанию.

[0267] Этап 805: Обработать пакет в соответствии с командой обработки пакетов из записи о потоке в Table3.

[0268] В частности, если успешно выполняется сопоставление над Table3, то команда из записи о потоке в Table3 дает команду добавить заголовок GRE в пакет (порядковый номер в заголовке GRE устанавливается в значение поля порядкового номера, соответствующего сопоставимому ID туннеля GRE в базе данных), добавить заголовок IP (IP-адрес источника в заголовке IP устанавливается в IP-адрес внешнего источника, соответствующий сопоставимому ID туннеля GRE в базе данных, а IP-адрес назначения в заголовке IP устанавливается в IP-адрес, соответствующий сопоставимому ID туннеля GRE в базе данных), и выполнить операцию по модулю 232 над значением порядкового номера плюс единица, а затем обновить результат операции по модулю в базе данных и перейти к TableM (M – натуральное число).

[0269] Этап 806: Коммутатор принимает команду обновления базы данных, отправленную контроллером, причем команда обновления базы данных включает в себя команду удаления базы данных и команду обновления записи, и удаляет назначенную базу данных в соответствии с командой удаления базы данных и обновляет запись в базе данных в соответствии с командой обновления записи.

[0270] Команда обновления записи включает в себя добавление записи в базу данных, удаление записи из базы данных и изменение записи в базе данных.

[0271] Контроллер может управлять коммутатором для изменения базы данных и записи в соответствии со служебной необходимостью и в любое время.

[0272] Следует отметить, что этот вариант осуществления настоящего изобретения не ограничивает последовательность исполнения этапа 806, и этап 806 может выполняться до или после любого этапа из этого варианта осуществления.

[0273] В этом варианте осуществления настоящего изобретения (присвоенное) значение, которое присваивается полем соответствия в записи о потоке в таблице потоков и относится к информации, которую нужно сопоставить, хранится с использованием поля в записи в базе данных, база данных включает в себя много записей, запись также включает в себя много полей, и многие поля могут хранить большое количество значений, которые присваиваются полями соответствия и принадлежат информации, которую нужно сопоставить. Таким образом, отличаются все значения, которые присваиваются с помощью полей соответствия и принадлежат информации, которую нужно сопоставить, и записи о потоках, команды для которых являются одинаковыми, можно упростить до одной записи о потоке, посредством этого уменьшая количество записей о потоках и устраняя избыточную информацию, существующую в записях о потоках; а когда в базе данных не существует значения, которое присваивается с помощью поля соответствия и относится к информации, которую нужно сопоставить, операцию добавления нужно выполнить только один раз, чтобы добавить в базу данных значение информации, которую нужно сопоставить, и не нужно выполнять дополнительную операцию обновления информации, посредством этого исключая возможность ошибки.

Вариант осуществления 7

[0274] Этот вариант осуществления настоящего изобретения обеспечивает коммутирующее устройство, причем коммутирующее устройство хранит одну или более таблиц потоков. Устройство включает в себя:

первый модуль задания, выполненный с возможностью задания первой записи о потоке по меньшей мере в одной таблице потоков, причем первая запись о потоке включает в себя поле соответствия, и поле соответствия используется для назначения информации, которую нужно сопоставить, и указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных.

[0275] Информация, которую нужно сопоставить, включает в себя одно или более из поля заголовка пакета, ID входного порта, из которого коммутирующее устройство принимает пакет, и метаданных, ассоциированных с пакетом. Каждая запись в базе данных включает в себя первое поле, и первое поле используется для обозначения присвоенного значения информации, которую нужно сопоставить.

[0276] В этом варианте осуществления настоящего изобретения (присвоенное) значение, которое присваивается полем соответствия в записи о потоке в таблице потоков и относится к информации, которую нужно сопоставить, хранится с использованием поля в записи в базе данных, база данных включает в себя много записей, запись также включает в себя много полей, и многие поля могут хранить большое количество значений, которые присваиваются полями соответствия и принадлежат информации, которую нужно сопоставить. Таким образом, отличаются все значения, которые присваиваются с помощью полей соответствия и принадлежат информации, которую нужно сопоставить, и записи о потоках, команды для которых являются одинаковыми, можно упростить до одной записи о потоке, посредством этого уменьшая количество записей о потоках и устраняя избыточную информацию, существующую в записях о потоках; а когда в базе данных не существует значения, которое присваивается с помощью поля соответствия и относится к информации, которую нужно сопоставить, операцию добавления нужно выполнить только один раз, чтобы добавить в базу данных значение информации, которую нужно сопоставить, и не нужно выполнять дополнительную операцию обновления информации, посредством этого исключая возможность ошибки.

Вариант осуществления 8

[0277] Этот вариант осуществления настоящего изобретения обеспечивает коммутирующее устройство, причем коммутирующее устройство хранит одну или более таблиц потоков. Обращаясь к фиг. 9, устройство включает в себя:

первый модуль 901 задания, выполненный с возможностью задания первой записи о потоке по меньшей мере в одной таблице потоков, причем первая запись о потоке включает в себя поле соответствия, и поле соответствия используется для назначения информации, которую нужно сопоставить, и указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных.

[0278] Информация, которую нужно сопоставить, включает в себя одно или более из поля заголовка пакета, ID входного порта, из которого коммутирующее устройство принимает пакет, и метаданных, ассоциированных с пакетом. Каждая запись в базе данных включает в себя первое поле, и первое поле используется для обозначения присвоенного значения информации, которую нужно сопоставить.

[0279] При необходимости поле соответствия дополнительно используется для назначения ID базы данных и указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, ID которого является ID базы данных.

[0280] При необходимости каждая запись базы данных дополнительно включает в себя второе поле, и второе поле используется для обозначения параметра обработки пакетов.

[0281] Первая запись о потоке дополнительно включает в себя команду обработки пакетов, и команда обработки пакетов используется для указания коммутирующему устройству: обработать пакет в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой записи, когда в базе данных существует первая запись, соответствующая пакету.

[0282] При необходимости, когда в базе данных существует множество первых записей,

поле соответствия используется для указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, чтобы получить первую из множества первых записей; и команда обработки пакетов используется для указания коммутирующему устройству: обработать пакет в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой из первых записей; или поле соответствия используется для указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, чтобы получить множество первых записей; и команда обработки пакетов используется для указания коммутирующему устройству: раздельно обработать множество пакетов, которые дублируются коммутирующим устройством, в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в каждой из множества первых записей.

[0283] При необходимости первая запись о потоке дополнительно включает в себя команду обработки записей, и команда обработки записей используется для указания коммутирующему устройству: выполнить операцию над назначенной записью в назначенной базе данных, когда в базе данных существует первая запись, соответствующая пакету.

[0284] При необходимости команда обработки записей включает в себя одну или более из следующих команд: первую команду изменения, вторую команду изменения, команду добавления и команду удаления, причем

первая команда изменения используется для указания коммутирующему устройству: выполнить вычисление над текущим значением первого назначенного поля в первой назначенной записи в первой назначенной базе данных, чтобы получить значение обновления первого назначенного поля и записать значение обновления в первую назначенную базу данных, когда в базе данных существует первая запись, соответствующая пакету; вторая команда изменения используется для указания коммутирующему устройству: изменить текущее значение второго назначенного поля во второй назначенной записи во второй назначенной базе данных на заданное значение, когда в базе данных существует первая запись, соответствующая пакету; команда добавления используется для указания коммутирующему устройству: добавить третью назначенную запись в третью назначенную базу данных, когда в базе данных существует первая запись, соответствующая пакету; и команда удаления используется для указания коммутирующему устройству: удалить четвертую назначенную базу данных или четвертую назначенную запись в четвертой назначенной базе данных, когда в базе данных существует первая запись, соответствующая пакету.

[0285] При необходимости первая запись о потоке включает в себя приоритет, приоритет используется для указания последовательности сопоставления между пакетом и каждой первой записью о потоке, и устройство дополнительно включает в себя:

второй модуль 902 задания, выполненный с возможностью задания второй записи о потоке по меньшей мере в одной таблице потоков, причем приоритет второй записи о потоке ниже, чем у первой записи о потоке, вторая запись о потоке универсально соответствует всем пакетам, вторая запись о потоке включает в себя команду добавления записи, и команда добавления записи используется для указания коммутирующему устройству добавить запись в назначенную базу данных в соответствии с пакетом, соответствующим второй записи о потоке.

[0286] При необходимости устройство дополнительно включает в себя:

модуль 903 создания, выполненный с возможностью приема команды конфигурирования, доставляемой оператором, и создания базы данных в соответствии с командой конфигурирования; или приема команды создания базы данных, отправленной контроллером, и создания базы данных в соответствии с командой создания базы данных, причем команда создания базы данных включает в себя ID базы данных и информацию о поле базы данных.

[0287] При необходимости команда создания базы данных дополнительно включает в себя по меньшей мере одну из информации об атрибуте базы данных и статистической информации; информация об атрибуте базы данных включает в себя максимальное количество записей в базе данных, время ожидания для записи в базе данных, и следует ли позволять коммутирующему устройству изменять запись в базе данных; и статистическая информация включает в себя общее количество записей в базе данных, общее количество сопоставлений между базой данных и пакетами, общее количество успешных сопоставлений и общее количество успешных сопоставлений каждой записи.

[0288] При необходимости устройство дополнительно включает в себя:

модуль 904 обновления, выполненный с возможностью приема команды обновления базы данных, отправленной контроллером, и обновления базы данных в соответствии с командой обновления базы данных, причем команда обновления базы данных включает в себя по меньшей мере одну из команды удаления базы данных и команды обновления записи, и команда обновления записи включает в себя добавление записи в базу данных, удаление записи из базы данных и изменение записи в базе данных.

[0289] При необходимости устройство дополнительно включает в себя:

модуль 905 приемопередатчика, выполненный с возможностью приема сообщения-запроса, отправленного контроллером, и отправки контроллеру ответного сообщения, причем ответное сообщение соответствует сообщению-запросу, и сообщение-запрос используется для запроса одного или более из информации об атрибуте базы данных, содержимого записи в базе данных и статистической информации о базе данных.

[0290] При необходимости устройство дополнительно включает в себя:

модуль 906 запроса, выполненный с возможностью запроса, существует ли база данных, и задания первой записи о потоке по меньшей мере в одной таблице потоков, когда база данных существует; и передачи контроллеру сообщения, означающего, что база данных не существует, когда база данных не существует.

[0291] В этом варианте осуществления настоящего изобретения (присвоенное) значение, которое присваивается полем соответствия в записи о потоке в таблице потоков и относится к информации, которую нужно сопоставить, хранится с использованием поля в записи в базе данных, база данных включает в себя много записей, запись также включает в себя много полей, и многие поля могут хранить большое количество значений, которые присваиваются полями соответствия и принадлежат информации, которую нужно сопоставить. Таким образом, отличаются все значения, которые присваиваются с помощью полей соответствия и принадлежат информации, которую нужно сопоставить, и записи о потоках, команды для которых являются одинаковыми, можно упростить до одной записи о потоке, посредством этого уменьшая количество записей о потоках и устраняя избыточную информацию, существующую в записях о потоках; а когда в базе данных не существует значения, которое присваивается с помощью поля соответствия и относится к информации, которую нужно сопоставить, операцию добавления нужно выполнить только один раз, чтобы добавить в базу данных значение информации, которую нужно сопоставить, и не нужно выполнять дополнительную операцию обновления информации, посредством этого исключая возможность ошибки.

Вариант осуществления 9

[0292] Этот вариант осуществления настоящего изобретения обеспечивает коммутирующее устройство. Обращаясь к фиг. 10, коммутирующее устройство может быть сервером. Как правило, сервер включает в себя по меньшей мере один процессор 1001 (например, CPU), по меньшей мере один сетевой интерфейс 1002 или другой интерфейс связи, запоминающее устройство 1003 и по меньшей мере одну шину 1004 связи. Специалист в данной области техники может понять, что показанная на фиг. 10 структура сервера не устанавливает ограничение для коммутирующего устройства и может включать в себя больше или меньше компонентов, чем показано на фигуре, или сочетание некоторых компонентов, или другие компоновки компонентов.

[0293] Нижеследующее подробно описывает компоненты коммутирующего устройства со ссылкой на фиг. 10.

[0294] Шина 1004 связи выполнена с возможностью реализации соединения и связи между процессором 1001, запоминающим устройством 1003 и сетевым интерфейсом 1002.

[0295] По меньшей мере один сетевой интерфейс 1002 (который может быть проводным или беспроводным) реализует связь и соединение между коммутирующим устройством и по меньшей мере двумя другими компьютерами (например, хостами), и отдельно между коммутирующим устройством и по меньшей мере одним сервером (например, контроллером) (компьютеры и сервер могут совместно использовать сетевой интерфейс 1002 и отдельно соединен к коммутирующим устройством), и может использоваться Интернет, глобальная сеть, локальная сеть, городская сеть или т. п.

[0296] Запоминающее устройство 1003 может быть выполнено с возможностью хранения компьютерной программы и модуля приложения, и процессор 1001 исполняет различные применения функций и обработку данных коммутирующего устройства путем прогона компьютерной программы и модуля приложения, сохраненных в запоминающем устройстве 1003. Запоминающее устройство 1003 предпочтительно может включать в себя область хранения программ и область хранения данных, причем область хранения программ может хранить операционную систему, прикладную программу, необходимую по меньшей мере одной функции (например, функции сопоставления и функции исполнения команд в записи о потоке в таблице потоков), и т. п.; а область хранения данных может хранить данные (например, таблицу потоков и базу данных, которые сохраняются), которые создаются в соответствии с использованием коммутирующего устройства, и т. п. К тому же запоминающее устройство 1003 может включать в себя высокоскоростное RAM (Random Access Memory, оперативное запоминающее устройство), а также может включать в себя энергонезависимое запоминающее устройство (non-volatile memory), например, по меньшей мере одно дисковое запоминающее устройство, устройство на флэш-памяти, или другое энергозависимое твердотельное запоминающее устройство.

[0297] Процессор 1001 является центром управления коммутирующего устройства, соединен с частями всего коммутирующего устройства с использованием различных интерфейсов и линий и исполняет различные функции коммутирующего устройства и обрабатывает данные путем прогона или исполнения компьютерной программы и/или модуля приложения, сохраненных в запоминающем устройстве 1003, и вызова данных, сохраненных в запоминающем устройстве 1003, посредством этого выполняя общий контроль коммутирующего устройства.

[0298] В частности, путем прогона или исполнения компьютерной программы и/или модуля приложения, сохраненных в запоминающем устройстве 1003, и вызова данных, сохраненных в запоминающем устройстве 1003, процессор 1001 может реализовать: задание первой записи о потоке по меньшей мере в одной таблице потоков, причем первая запись о потоке включает в себя поле соответствия, и поле соответствия используется для назначения информации, которую нужно сопоставить, и указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных. Информация, которую нужно сопоставить, включает в себя одно или более из поля заголовка пакета, ID входного порта, из которого коммутирующее устройство принимает пакет, и метаданных, ассоциированных с пакетом. Каждая запись в базе данных включает в себя первое поле, и первое поле используется для обозначения присвоенного значения информации, которую нужно сопоставить.

[0299] Предпочтительно, чтобы поле соответствия дополнительно использовалось для назначения ID базы данных и указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, ID которого является ID базы данных.

[0300] Предпочтительно, чтобы каждая запись базы данных дополнительно включала в себя второе поле, и второе поле используется для обозначения параметра обработки пакетов; и первая запись о потоке дополнительно включает в себя команду обработки пакетов, и команда обработки пакетов используется для указания коммутирующему устройству: обработать пакет в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой записи, когда в базе данных существует первая запись, соответствующая пакету.

[0301] Предпочтительно, когда в базе данных существует множество первых записей, поле соответствия используется для указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, чтобы получить первую из множества первых записей; и команда обработки пакетов используется для указания коммутирующему устройству: обработать пакет в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой из первых записей; или поле соответствия используется для указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, чтобы получить множество первых записей; и команда обработки пакетов используется для указания коммутирующему устройству: обработать множество пакетов, которые дублируются коммутирующим устройством, в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в каждой из множества первых записей.

[0302] Предпочтительно, чтобы первая запись о потоке дополнительно включала в себя команду обработки записей, и команда обработки записей используется для указания коммутирующему устройству: выполнить операцию над назначенной записью в назначенной базе данных, когда в базе данных существует первая запись, соответствующая пакету.

[0303] При необходимости команда обработки записей включает в себя одну или более из следующих команд: первую команду изменения, вторую команду изменения, команду добавления и команду удаления, причем первая команда изменения используется для указания коммутирующему устройству: выполнить вычисление над текущим значением первого назначенного поля в первой назначенной записи в первой назначенной базе данных, чтобы получить значение обновления первого назначенного поля и записать значение обновления в первую назначенную базу данных, когда в базе данных существует первая запись, соответствующая пакету; вторая команда изменения используется для указания коммутирующему устройству: изменить текущее значение второго назначенного поля во второй назначенной записи во второй назначенной базе данных на заданное значение, когда в базе данных существует первая запись, соответствующая пакету; команда добавления используется для указания коммутирующему устройству: добавить третью назначенную запись в третью назначенную базу данных, когда в базе данных существует первая запись, соответствующая пакету; и команда удаления используется для указания коммутирующему устройству: удалить четвертую назначенную базу данных или четвертую назначенную запись в четвертой назначенной базе данных, когда в базе данных существует первая запись, соответствующая пакету.

[0304] При необходимости первая запись о потоке включает в себя приоритет, приоритет используется для указания последовательности сопоставления между пакетом и каждой первой записью о потоке, и процессор 1001 может реализовать: задание второй записи о потоке по меньшей мере в одной таблице потоков, причем приоритет второй записи о потоке ниже, чем у первой записи о потоке, вторая запись о потоке универсально соответствует всем пакетам, вторая запись о потоке включает в себя команду добавления записи, и команда добавления записи используется для указания коммутирующему устройству добавить запись в назначенную базу данных в соответствии с пакетом, соответствующим второй записи о потоке.

[0305] При необходимости сетевой интерфейс 1002 может реализовать: прием команды конфигурирования, доставляемой оператором, или прием команды создания базы данных, отправленной контроллером, причем команда создания базы данных включает в себя ID базы данных и информацию о поле базы данных.

[0306] При необходимости процессор 1001 может реализовать: создание базы данных в соответствии с командой конфигурирования; или создание базы данных в соответствии с командой создания базы данных.

[0307] Предпочтительно, чтобы команда создания базы данных дополнительно включала в себя по меньшей мере одну из информации об атрибуте базы данных и статистической информации; информация об атрибуте базы данных включает в себя максимальное количество записей в базе данных, время ожидания для записи в базе данных, и следует ли позволять коммутирующему устройству изменять запись в базе данных; и статистическая информация включает в себя общее количество записей в базе данных, общее количество сопоставлений между базой данных и пакетами, общее количество успешных сопоставлений и общее количество успешных сопоставлений каждой записи.

[0308] При необходимости сетевой интерфейс 1002 может реализовать: прием команды обновления базы данных, отправленной контроллером, причем команда обновления базы данных включает в себя команду удаления базы данных и команду обновления записи, и команда обновления записи включает в себя добавление записи в базу данных, удаление записи из базы данных и изменение записи в базе данных; и

процессор 1001 может реализовать: обновление базы данных в соответствии с командой удаления базы данных.

[0309] При необходимости сетевой интерфейс 1002 может реализовать: прием сообщения-запроса, отправленного контроллером, причем сообщение-запрос используется для запроса одного или более из информации об атрибуте базы данных, содержимого записи в базе данных и статистической информации о базе данных; и процессор 1001 может реализовать: отправку контроллеру ответного сообщения, причем ответное сообщение соответствует сообщению-запросу.

[0310] При необходимости процессор 1001 может реализовать: запрос, существует ли база данных, и задание первой записи о потоке по меньшей мере в одной таблице потоков, когда база данных существует; и передачу контроллеру сообщения, означающего, что база данных не существует, когда база данных не существует.

[0311] В этом варианте осуществления настоящего изобретения (присвоенное) значение, которое присваивается полем соответствия в записи о потоке в таблице потоков и относится к информации, которую нужно сопоставить, хранится с использованием поля в записи в базе данных, база данных включает в себя много записей, запись также включает в себя много полей, и многие поля могут хранить большое количество значений, которые присваиваются полями соответствия и принадлежат информации, которую нужно сопоставить. Таким образом, отличаются все значения, которые присваиваются с помощью полей соответствия и принадлежат информации, которую нужно сопоставить, и записи о потоках, команды для которых являются одинаковыми, можно упростить до одной записи о потоке, посредством этого уменьшая количество записей о потоках и устраняя избыточную информацию, существующую в записях о потоках; а когда в базе данных не существует значения, которое присваивается с помощью поля соответствия и относится к информации, которую нужно сопоставить, операцию добавления нужно выполнить только один раз, чтобы добавить в базу данных значение информации, которую нужно сопоставить, и не нужно выполнять дополнительную операцию обновления информации, посредством этого исключая возможность ошибки.

Вариант осуществления 10

[0312] Этот вариант осуществления настоящего изобретения обеспечивает контроллер, причем контроллер включает в себя:

первый модуль отправки, выполненный с возможностью отправки сообщения установки первой записи о потоке, причем сообщение установки первой записи о потоке включает в себя ID таблицы потоков и первую запись о потоке; сообщение установки первой записи о потоке используется для указания коммутирующему устройству задать первую запись о потоке в таблице потоков, соответствующей ID таблицы потоков; первая запись о потоке включает в себя поле соответствия, и поле соответствия используется для назначения информации, которую нужно сопоставить, и указания коммутирующему устройству выполнить сопоставление между информацией, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных.

[0313] Информация, которую нужно сопоставить, включает в себя одно или более из поля заголовка пакета, ID входного порта, из которого коммутирующее устройство принимает пакет, и метаданных, ассоциированных с пакетом. Каждая запись в базе данных включает в себя первое поле, и первое поле используется для обозначения присвоенного значения информации, которую нужно сопоставить.

[0314] В этом варианте осуществления настоящего изобретения (присвоенное) значение, которое присваивается полем соответствия в записи о потоке в таблице потоков и относится к информации, которую нужно сопоставить, хранится с использованием поля в записи в базе данных, база данных включает в себя много записей, запись также включает в себя много полей, и многие поля могут хранить большое количество значений, которые присваиваются полями соответствия и принадлежат информации, которую нужно сопоставить. Таким образом, отличаются все значения, которые присваиваются с помощью полей соответствия и принадлежат информации, которую нужно сопоставить, и записи о потоках, команды для которых являются одинаковыми, можно упростить до одной записи о потоке, посредством этого уменьшая количество записей о потоках и устраняя избыточную информацию, существующую в записях о потоках; а когда в базе данных не существует значения, которое присваивается с помощью поля соответствия и относится к информации, которую нужно сопоставить, операцию добавления нужно выполнить только один раз, чтобы добавить в базу данных значение информации, которую нужно сопоставить, и не нужно выполнять дополнительную операцию обновления информации, посредством этого исключая возможность ошибки.

Вариант осуществления 11

[0315] Этот вариант осуществления настоящего изобретения обеспечивает контроллер. Обращаясь к фиг. 11, контроллер включает в себя:

первый модуль 1101 отправки, выполненный с возможностью отправки сообщения установки первой записи о потоке, причем сообщение установки первой записи о потоке включает в себя ID таблицы потоков и первую запись о потоке; сообщение установки первой записи о потоке используется для указания коммутирующему устройству задать первую запись о потоке в таблице потоков, соответствующей ID таблицы потоков; первая запись о потоке включает в себя поле соответствия, и поле соответствия используется для назначения информации, которую нужно сопоставить, и указания коммутирующему устройству выполнить сопоставление между информацией, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных.

[0316] Информация, которую нужно сопоставить, включает в себя одно или более из поля заголовка пакета, ID входного порта, из которого коммутирующее устройство принимает пакет, и метаданных, ассоциированных с пакетом. Каждая запись в базе данных включает в себя первое поле, и первое поле используется для обозначения присвоенного значения информации, которую нужно сопоставить.

[0317] При необходимости поле соответствия дополнительно используется для назначения ID базы данных и указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, ID которого является ID базы данных.

[0318] При необходимости каждая запись базы данных дополнительно включает в себя второе поле, и второе поле используется для обозначения параметра обработки пакетов; и

первая запись о потоке дополнительно включает в себя команду обработки пакетов, и команда обработки пакетов используется для указания коммутирующему устройству: обработать пакет в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой записи, когда в базе данных существует первая запись, соответствующая пакету.

[0319] При необходимости, когда в базе данных существует множество первых записей, поле соответствия используется для указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, чтобы получить первую из множества первых записей; и команда обработки пакетов используется для указания коммутирующему устройству: обработать пакет в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой из первых записей; или поле соответствия используется для указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, чтобы получить множество первых записей; и команда обработки пакетов используется для указания коммутирующему устройству: раздельно обработать множество пакетов, которые дублируются коммутирующим устройством, в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в каждой из множества первых записей.

[0320] При необходимости первая запись о потоке дополнительно включает в себя команду обработки записей, и команда обработки записей используется для указания коммутирующему устройству: выполнить операцию над назначенной записью в назначенной базе данных, когда в базе данных существует первая запись, соответствующая пакету.

[0321] При необходимости команда обработки записей включает в себя одну или более из следующих команд: первую команду изменения, вторую команду изменения, команду добавления и команду удаления, причем

первая команда изменения используется для указания коммутирующему устройству: выполнить вычисление над текущим значением первого назначенного поля в первой назначенной записи в первой назначенной базе данных, чтобы получить значение обновления первого назначенного поля и записать значение обновления в первую назначенную базу данных, когда в базе данных существует первая запись, соответствующая пакету;

вторая команда изменения используется для указания коммутирующему устройству: изменить текущее значение второго назначенного поля во второй назначенной записи во второй назначенной базе данных на заданное значение, когда в данных существует первая запись, соответствующая пакету;

команда добавления используется для указания коммутирующему устройству: добавить третью назначенную запись в третью назначенную базу данных, когда в базе данных существует первая запись, соответствующая пакету; и

команда удаления используется для указания коммутирующему устройству: удалить четвертую назначенную базу данных или четвертую назначенную запись в четвертой назначенной базе данных, когда в базе данных существует первая запись, соответствующая пакету.

[0322] При необходимости первая запись о потоке включает в себя приоритет, приоритет используется для указания последовательности сопоставления между пакетом и каждой первой записью о потоке, и контроллер дополнительно включает в себя:

второй модуль 1102 отправки, выполненный с возможностью отправки сообщения установки второй записи о потоке, причем сообщение установки второй записи о потоке включает в себя ID таблицы потоков и вторую запись о потоке, приоритет второй записи о потоке ниже, чем у первой записи о потоке, вторая запись о потоке универсально соответствует всем пакетам, вторая запись о потоке включает в себя команду добавления записи, и команда добавления записи используется для указания коммутирующему устройству добавить запись в назначенную базу данных в соответствии с пакетом, соответствующим второй записи о потоке.

[0323] При необходимости контроллер дополнительно включает в себя:

третий модуль 1103 отправки, выполненный с возможностью отправки коммутирующему устройству команды создания базы данных, причем команда создания базы данных используется для указания коммутирующему устройству создать базу данных, и команда создания базы данных включает в себя ID базы данных и информацию о поле базы данных.

[0324] При необходимости команда создания базы данных дополнительно включает в себя по меньшей мере одну из информации об атрибуте базы данных и статистической информации; информация об атрибуте базы данных включает в себя максимальное количество записей в базе данных, время ожидания для записи в базе данных, и следует ли позволять коммутирующему устройству изменять запись в базе данных; и статистическая информация включает в себя общее количество записей в базе данных, общее количество сопоставлений между базой данных и пакетами, общее количество успешных сопоставлений и общее количество успешных сопоставлений каждой записи.

[0325] При необходимости контроллер дополнительно включает в себя:

четвертый модуль 1104 отправки, выполненный с возможностью отправки коммутирующему устройству команды обновления базы данных, причем команда обновления базы данных включает в себя по меньшей мере одну из команды удаления базы данных и команды обновления записи, и команда обновления записи включает в себя добавление записи в базу данных, удаление записи из базы данных и изменение записи в базе данных.

[0326] При необходимости контроллер дополнительно включает в себя:

пятый модуль 1105 отправки, выполненный с возможностью отправки коммутирующему устройству сообщения-запроса, причем сообщение-запрос используется для запроса одного или более из информации об атрибуте базы данных, содержимого записи в базе данных и статистической информации о базе данных.

[0327] При необходимости контроллер дополнительно включает в себя:

первый модуль 1106 приема, выполненный с возможностью приема сообщения, возвращенного коммутирующим устройством и означающего, что база данных не существует.

[0328] В этом варианте осуществления настоящего изобретения (присвоенное) значение, которое присваивается полем соответствия в записи о потоке в таблице потоков и относится к информации, которую нужно сопоставить, хранится с использованием поля в записи в базе данных, база данных включает в себя много записей, запись также включает в себя много полей, и многие поля могут хранить большое количество значений, которые присваиваются полями соответствия и принадлежат информации, которую нужно сопоставить. Таким образом, отличаются все значения, которые присваиваются с помощью полей соответствия и принадлежат информации, которую нужно сопоставить, и записи о потоках, команды для которых являются одинаковыми, можно упростить до одной записи о потоке, посредством этого уменьшая количество записей о потоках и устраняя избыточную информацию, существующую в записях о потоках; а когда в базе данных не существует значения, которое присваивается с помощью поля соответствия и относится к информации, которую нужно сопоставить, операцию добавления нужно выполнить только один раз, чтобы добавить в базу данных значение информации, которую нужно сопоставить, и не нужно выполнять дополнительную операцию обновления информации, посредством этого исключая возможность ошибки.

Вариант осуществления 12

[0329] Этот вариант осуществления настоящего изобретения обеспечивает контроллер. Обращаясь к фиг. 12, контроллер может быть сервером. Как правило, сервер включает в себя по меньшей мере один процессор 1201 (например, CPU), по меньшей мере один сетевой интерфейс 1202 или другой интерфейс связи, запоминающее устройство 1203 и по меньшей мере одну шину 1204 связи. Специалист в данной области техники может понять, что показанная на фиг. 12 структура сервера не устанавливает ограничение для контроллера и может включать в себя больше или меньше компонентов, чем показано на фигуре, или сочетание некоторых компонентов, или другие компоновки компонентов.

[0330] Нижеследующее подробно описывает компоненты контроллера со ссылкой на фиг. 12.

[0331] Шина 1204 связи выполнена с возможностью реализации соединения и связи между процессором 1201, запоминающим устройством 1203 и сетевым интерфейсом 1202.

[0332] По меньшей мере один сетевой интерфейс 1202 (который может быть проводным или беспроводным) реализует связь и соединение между контроллером и по меньшей мере одним сервером (например, коммутирующим устройством), и может использоваться Интернет, глобальная сеть, локальная сеть, городская сеть или т. п.

[0333] Запоминающее устройство 1203 может быть выполнено с возможностью хранения компьютерной программы и модуля приложения, и процессор 1201 исполняет различные применения функций и обработку данных контроллера путем прогона компьютерной программы и модуля приложения, сохраненных в запоминающем устройстве 1203. Запоминающее устройство 1203 предпочтительно может включать в себя область хранения программ и область хранения данных, причем область хранения программ может хранить операционную систему, прикладную программу, необходимую по меньшей мере одной функции (например, доставку записи о потоке), и т. п.; и область хранения данных может хранить данные (например, сохраненный пакет), которые создаются в соответствии с использованием контроллера, и т. п. К тому же запоминающее устройство 1203 может включать в себя высокоскоростное RAM (Random Access Memory, оперативное запоминающее устройство), а также может включать в себя энергонезависимое запоминающее устройство (non-volatile memory), например, по меньшей мере одно дисковое запоминающее устройство, устройство на флэш-памяти, или другое энергозависимое твердотельное запоминающее устройство.

[0334] Процессор 1201 является центром управления контроллера, соединен с частями всего контроллера с использованием различных интерфейсов и линий и исполняет различные функции контроллера и обрабатывает данные путем прогона или исполнения компьютерной программы и/или модуля приложения, сохраненных в запоминающем устройстве 1203, и вызова данных, сохраненных в запоминающем устройстве 1203, посредством этого выполняя общий контроль контроллера.

[0335] В частности, путем прогона или исполнения компьютерной программы и/или модуля приложения, сохраненных в запоминающем устройстве 1203, и вызова данных, сохраненных в запоминающем устройстве 1203, процессор 1201 может реализовать: отправку сообщения установки первой записи о потоке, причем сообщение установки первой записи о потоке включает в себя ID таблицы потоков и первую запись о потоке; сообщение установки первой записи о потоке используется для указания коммутирующему устройству задать первую запись о потоке в таблице потоков, соответствующей ID таблицы потоков; первая запись о потоке включает в себя поле соответствия, и поле соответствия используется для назначения информации, которую нужно сопоставить, и указания коммутирующему устройству выполнить сопоставление между информацией, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных. Информация, которую нужно сопоставить, включает в себя одно или более из поля заголовка пакета, ID входного порта, из которого коммутирующее устройство принимает пакет, и метаданных, ассоциированных с пакетом. Каждая запись в базе данных включает в себя первое поле, и первое поле используется для обозначения присвоенного значения информации, которую нужно сопоставить.

[0336] При необходимости поле соответствия дополнительно используется для назначения ID базы данных и указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, ID которого является ID базы данных.

[0337] При необходимости каждая запись базы данных дополнительно включает в себя второе поле, и второе поле используется для обозначения параметра обработки пакетов; и первая запись о потоке дополнительно включает в себя команду обработки пакетов, и команда обработки пакетов используется для указания коммутирующему устройству: обработать пакет в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой записи, когда в базе данных существует первая запись, соответствующая пакету.

[0338] При необходимости, когда в базе данных существует множество первых записей, поле соответствия используется для указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, чтобы получить первую из множества первых записей; и команда обработки пакетов используется для указания коммутирующему устройству: обработать пакет в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой из первых записей; или поле соответствия используется для указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, чтобы получить множество первых записей; и команда обработки пакетов используется для указания коммутирующему устройству: раздельно обработать множество пакетов, которые дублируются коммутирующим устройством, в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в каждой из множества первых записей.

[0339] При необходимости первая запись о потоке дополнительно включает в себя команду обработки записей, и команда обработки записей используется для указания коммутирующему устройству: выполнить операцию над назначенной записью в назначенной базе данных, когда в базе данных существует первая запись, соответствующая пакету.

[0340] Предпочтительно, чтобы команда обработки записей включала в себя одну или более из следующих команд: первую команду изменения, вторую команду изменения, команду добавления и команду удаления, причем первая команда изменения используется для указания коммутирующему устройству: выполнить вычисление над текущим значением первого назначенного поля в первой назначенной записи в первой назначенной базе данных, чтобы получить значение обновления первого назначенного поля и записать значение обновления в первую назначенную базу данных, когда в базе данных существует первая запись, соответствующая пакету; вторая команда изменения используется для указания коммутирующему устройству: изменить текущее значение второго назначенного поля во второй назначенной записи во второй назначенной базе данных на заданное значение, когда в базе данных существует первая запись, соответствующая пакету; команда добавления используется для указания коммутирующему устройству: добавить третью назначенную запись в третью назначенную базу данных, когда в базе данных существует первая запись, соответствующая пакету; и команда удаления используется для указания коммутирующему устройству: удалить четвертую назначенную базу данных или четвертую назначенную запись в четвертой назначенной базе данных, когда в базе данных существует первая запись, соответствующая пакету.

[0341] При необходимости первая запись о потоке включает в себя приоритет, приоритет используется для указания последовательности сопоставления между пакетом и каждой первой записью о потоке, и процессор 1201 может реализовать: отправку сообщения установки второй записи о потоке, причем сообщение установки второй записи о потоке включает в себя ID таблицы потоков и вторую запись о потоке, приоритет второй записи о потоке ниже, чем у первой записи о потоке, вторая запись о потоке универсально соответствует всем пакетам, вторая запись о потоке включает в себя команду добавления записи, и команда добавления записи используется для указания коммутирующему устройству добавить запись в назначенную базу данных в соответствии с пакетом, соответствующим второй записи о потоке.

[0342] При необходимости процессор 1201 может реализовать: отправку коммутирующему устройству команды создания базы данных, причем команда создания базы данных используется для указания коммутирующему устройству создать базу данных, и команда создания базы данных включает в себя ID базы данных и информацию о поле базы данных.

[0343] При необходимости процессор 1201 может реализовать: команда создания базы данных дополнительно включает в себя по меньшей мере одну из информации об атрибуте базы данных и статистической информации; информация об атрибуте базы данных включает в себя максимальное количество записей в базе данных, время ожидания для записи в базе данных, и позволять ли коммутирующему устройству изменять запись в базе данных; и статистическая информация включает в себя общее количество записей в базе данных, общее количество сопоставлений между базой данных и пакетами, общее количество успешных сопоставлений и общее количество успешных сопоставлений каждой записи.

[0344] При необходимости процессор 1201 может реализовать: отправку коммутирующему устройству команды обновления базы данных, причем команда обновления базы данных включает в себя по меньшей мере одну из команды удаления базы данных и команды обновления записи, и команда обновления записи включает в себя добавление записи в базу данных, удаление записи из базы данных и изменение записи в базе данных.

[0345] При необходимости процессор 1201 может реализовать: отправку коммутирующему устройству сообщения-запроса, причем сообщение-запрос используется для запроса одного или более из информации об атрибуте базы данных, содержимого записи в базе данных и статистической информации о базе данных.

[0346] При необходимости сетевой интерфейс 1202 выполнен с возможностью приема сообщения, возвращенного коммутирующим устройством и означающего, что база данных не существует.

[0347] В этом варианте осуществления настоящего изобретения (присвоенное) значение, которое присваивается полем соответствия в записи о потоке в таблице потоков и относится к информации, которую нужно сопоставить, хранится с использованием поля в записи в базе данных, база данных включает в себя много записей, запись также включает в себя много полей, и многие поля могут хранить большое количество значений, которые присваиваются полями соответствия и принадлежат информации, которую нужно сопоставить. Таким образом, отличаются все значения, которые присваиваются с помощью полей соответствия и принадлежат информации, которую нужно сопоставить, и записи о потоках, команды для которых являются одинаковыми, можно упростить до одной записи о потоке, посредством этого уменьшая количество записей о потоках и устраняя избыточную информацию, существующую в записях о потоках; а когда в базе данных не существует значения, которое присваивается с помощью поля соответствия и относится к информации, которую нужно сопоставить, операцию добавления нужно выполнить только один раз, чтобы добавить в базу данных значение информации, которую нужно сопоставить, и не нужно выполнять дополнительную операцию обновления информации, посредством этого исключая возможность ошибки.

Вариант осуществления 13

[0348] Этот вариант осуществления настоящего изобретения обеспечивает коммутирующее устройство, применимое к способу обработки пакета, предусмотренному в варианте осуществления 3 настоящего изобретения. Обращаясь к фиг. 13, устройство включает в себя:

третий модуль 1301 приема, выполненный с возможностью приема пакета;

модуль 1302 получения, выполненный с возможностью получения значения информации, которая относится к пакету и которую нужно сопоставить, в соответствии с полем соответствия первой записи о потоке в таблице потоков, с которой нужно сопоставить пакет, причем первая запись о потоке включает в себя поле соответствия и команду обработки пакетов, и поле соответствия используется для назначения информации, которую нужно сопоставить; и информация, которую нужно сопоставить, включает в себя одно или более из поля заголовка пакета, ID входного порта, из которого коммутирующее устройство принимает пакет, и метаданных, ассоциированных с пакетом;

модуль 1303 сопоставления, выполненный с возможностью выполнения по команде поля соответствия сопоставления между значением информации, которая относится к пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, причем первое поле используется для обозначения присвоенного значения информации, которую нужно сопоставить; и

первый модуль 1304 обработки, выполненный с возможностью обработки пакета в соответствии с командой обработки пакетов, когда получена первая запись, соответствующая пакету.

[0349] В этом варианте осуществления настоящего изобретения (присвоенное) значение, которое присваивается полем соответствия в записи о потоке в таблице потоков и относится к информации, которую нужно сопоставить, хранится с использованием поля в записи в базе данных, база данных включает в себя много записей, запись также включает в себя много полей, и многие поля могут хранить большое количество значений, которые присваиваются полями соответствия и принадлежат информации, которую нужно сопоставить. Таким образом, отличаются все значения, которые присваиваются с помощью полей соответствия и принадлежат информации, которую нужно сопоставить, и записи о потоках, команды для которых являются одинаковыми, можно упростить до одной записи о потоке, посредством этого уменьшая количество записей о потоках и устраняя избыточную информацию, существующую в записях о потоках; а когда в базе данных не существует значения, которое присваивается с помощью поля соответствия и относится к информации, которую нужно сопоставить, операцию добавления нужно выполнить только один раз, чтобы добавить в базу данных значение информации, которую нужно сопоставить, и не нужно выполнять дополнительную операцию обновления информации, посредством этого исключая возможность ошибки.

Вариант осуществления 14

[0350] Этот вариант осуществления настоящего изобретения обеспечивает коммутирующее устройство, применимое к способу обработки пакета, предусмотренному в вариантах осуществления 3-6 настоящего изобретения. Обращаясь к фиг. 14, устройство включает в себя:

второй модуль 1401 приема, выполненный с возможностью приема пакета;

модуль 1402 получения, выполненный с возможностью получения значения информации, которая относится к пакету и которую нужно сопоставить, в соответствии с полем соответствия первой записи о потоке в таблице потоков, с которой нужно сопоставить пакет, причем первая запись о потоке включает в себя поле соответствия и команду обработки пакетов, и поле соответствия используется для назначения информации, которую нужно сопоставить; и информация, которую нужно сопоставить, включает в себя одно или более из поля заголовка пакета, ID входного порта, из которого коммутирующее устройство принимает пакет, и метаданных, ассоциированных с пакетом;

модуль 1403 сопоставления, выполненный с возможностью выполнения по команде поля соответствия сопоставления между значением информации, которая относится к пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, причем первое поле используется для обозначения присвоенного значения информации, которую нужно сопоставить; и

первый модуль 1404 обработки, выполненный с возможностью обработки пакета в соответствии с командой обработки пакетов, когда получена первая запись, соответствующая пакету.

[0351] При необходимости первый модуль 1404 обработки выполнен с возможностью обработки пакета в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой записи, причем второе поле используется для обозначения параметра обработки пакетов.

[0352] При необходимости, когда в базе данных существует множество первых записей, первый модуль 1404 обработки выполнен с возможностью:

обработки пакета в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой из первых записей; или дублирования пакета для получения множества пакетов и обработки множества пакетов в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в каждой из множества первых записей.

[0353] При необходимости первая запись о потоке дополнительно включает в себя команду обработки записей, и первый модуль 1404 обработки дополнительно выполнен с возможностью выполнения операции над назначенной записью в назначенной базе данных по команде обработки записей.

[0354] Предпочтительно, чтобы команда обработки записей включала в себя одну или более из следующих команд: первую команду изменения, вторую команду изменения, команду добавления и команду удаления, причем первый модуль 1404 обработки выполнен с возможностью:

выполнения вычисления над текущим значением первого назначенного поля в первой назначенной записи в первой назначенной базе данных в соответствии с первой командой изменения, чтобы получить значение обновления первого назначенного поля и записать значение обновления в первую назначенную базу данных, после того, как получена первая запись, соответствующая пакету; изменения текущего значения второго назначенного поля во второй назначенной записи во второй назначенной базе данных на заданное значение в соответствии со второй командой изменения после того, как получена первая запись, соответствующая пакету; добавления третьей назначенной записи в третью назначенную базу данных в соответствии с командой добавления после того, как получена первая запись, соответствующая пакету; и/или удаления четвертой назначенной базы данных или четвертой назначенной записи в четвертой назначенной базе данных в соответствии с командой удаления после того, как получена первая запись, соответствующая пакету.

[0355] При необходимости первая запись о потоке включает в себя приоритет, приоритет используется для указания последовательности сопоставления между пакетом и каждой первой записью о потоке, в таблице потоков дополнительно задана вторая запись о потоке, приоритет второй записи о потоке ниже, чем у первой записи о потоке, вторая запись о потоке универсально соответствует всем пакетам, вторая запись о потоке включает в себя команду добавления записи, и устройство дополнительно включает в себя:

второй модуль 1405 обработки, выполненный с возможностью: выполнения сопоставления между пакетом и второй записью о потоке и успешного выполнения сопоставления, и добавления записи в назначенную базу данных в соответствии с пакетом по команде добавления записи, когда в базе данных не существует записи, соответствующей пакету.

[0356] В этом варианте осуществления настоящего изобретения (присвоенное) значение, которое присваивается полем соответствия в записи о потоке в таблице потоков и относится к информации, которую нужно сопоставить, хранится с использованием поля в записи в базе данных, база данных включает в себя много записей, запись также включает в себя много полей, и многие поля могут хранить большое количество значений, которые присваиваются полями соответствия и принадлежат информации, которую нужно сопоставить. Таким образом, отличаются все значения, которые присваиваются с помощью полей соответствия и принадлежат информации, которую нужно сопоставить, и записи о потоках, команды для которых являются одинаковыми, можно упростить до одной записи о потоке, посредством этого уменьшая количество записей о потоках и устраняя избыточную информацию, существующую в записях о потоках; а когда в базе данных не существует значения, которое присваивается с помощью поля соответствия и относится к информации, которую нужно сопоставить, операцию добавления нужно выполнить только один раз, чтобы добавить в базу данных значение информации, которую нужно сопоставить, и не нужно выполнять дополнительную операцию обновления информации, посредством этого исключая возможность ошибки.

Вариант осуществления 15

[0357] Этот вариант осуществления настоящего изобретения обеспечивает коммутирующее устройство, применимое к способу обработки пакета, предусмотренному в вариантах осуществления 3-6 настоящего изобретения. Коммутирующее устройство может быть сервером. Как правило, сервер включает в себя по меньшей мере один процессор (например, CPU), по меньшей мере один сетевой интерфейс или другой интерфейс связи, запоминающее устройство и по меньшей мере одну шину связи.

[0358] Процессор, сетевой интерфейс, запоминающее устройство и шина связи являются такими же, как процессор 1001, сетевой интерфейс 1002, запоминающее устройство 1003 и шина 1004 связи (обращаясь к фиг. 10) в коммутирующем устройстве, предусмотренном в варианте осуществления 9, и их описание здесь не приводится.

[0359] В частности, путем прогона или исполнения компьютерной программы и/или модуля приложения, сохраненных в запоминающем устройстве, и вызова данных, сохраненных в запоминающем устройстве, процессор может реализовать: прием пакета; получение значения информации, которая относится к пакету и которую нужно сопоставить, в соответствии с полем соответствия первой записи о потоке в таблице потоков, с которой нужно сопоставить пакет, причем первая запись о потоке включает в себя поле соответствия и команду обработки пакетов, и поле соответствия используется для назначения информации, которую нужно сопоставить; и информация, которую нужно сопоставить, включает в себя одно или более из поля заголовка пакета, ID входного порта, из которого коммутирующее устройство принимает пакет, и метаданных, ассоциированных с пакетом; выполнение по команде поля соответствия сопоставления между значением информации, которая относится к пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных; и обработку пакета в соответствии с командой обработки пакетов, когда получена первая запись, соответствующая пакету, причем первое поле используется для обозначения присвоенного значения информации, которую нужно сопоставить.

[0360] При необходимости процессор может реализовать: обработку пакета в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой записи, причем второе поле используется для обозначения параметра обработки пакетов.

[0361] При необходимости, когда в базе данных существует множество первых записей, процессор может реализовать: обработку пакета в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой из первых записей; или дублирование пакета для получения множества пакетов и обработку множества пакетов в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в каждой из множества первых записей.

[0362] При необходимости процессор может реализовать: выполнение операции над назначенной записью в назначенной базе данных по команде обработки записей.

[0363] Предпочтительно, чтобы команда обработки записей включала в себя одну или более из следующих команд: первую команду изменения, вторую команду изменения, команду добавления и команду удаления, причем процессор может реализовать: выполнение вычисления над текущим значением первого назначенного поля в первой назначенной записи в первой назначенной базе данных в соответствии с первой командой изменения, чтобы получить значение обновления первого назначенного поля и записать значение обновления в первую назначенную базу данных, после того, как получена первая запись, соответствующая пакету; изменение текущего значения второго назначенного поля во второй назначенной записи во второй назначенной базе данных на заданное значение в соответствии со второй командой изменения после того, как получена первая запись, соответствующая пакету; добавление третьей назначенной записи в третью назначенную базу данных в соответствии с командой добавления после того, как получена первая запись, соответствующая пакету; и/или удаление четвертой назначенной базы данных или четвертой назначенной записи в четвертой назначенной базе данных в соответствии с командой удаления после того, как получена первая запись, соответствующая пакету.

[0364] При необходимости первая запись о потоке включает в себя приоритет, приоритет используется для указания последовательности сопоставления между пакетом и каждой первой записью о потоке, в таблице потоков дополнительно задана вторая запись о потоке, приоритет второй записи о потоке ниже, чем у первой записи о потоке, вторая запись о потоке универсально соответствует всем пакетам, вторая запись о потоке включает в себя команду добавления записи, и процессор может реализовать: выполнение сопоставления между пакетом и второй записью о потоке и успешное выполнение сопоставления, и добавление записи в назначенную базу данных в соответствии с пакетом по команде добавления записи, когда в базе данных не существует записи, соответствующей пакету.

[0365] В этом варианте осуществления настоящего изобретения (присвоенное) значение, которое присваивается полем соответствия в записи о потоке в таблице потоков и относится к информации, которую нужно сопоставить, хранится с использованием поля в записи в базе данных, база данных включает в себя много записей, запись также включает в себя много полей, и многие поля могут хранить большое количество значений, которые присваиваются полями соответствия и принадлежат информации, которую нужно сопоставить. Таким образом, отличаются все значения, которые присваиваются с помощью полей соответствия и принадлежат информации, которую нужно сопоставить, и записи о потоках, команды для которых являются одинаковыми, можно упростить до одной записи о потоке, посредством этого уменьшая количество записей о потоках и устраняя избыточную информацию, существующую в записях о потоках; а когда в базе данных не существует значения, которое присваивается с помощью поля соответствия и относится к информации, которую нужно сопоставить, операцию добавления нужно выполнить только один раз, чтобы добавить в базу данных значение информации, которую нужно сопоставить, и не нужно выполнять дополнительную операцию обновления информации, посредством этого исключая возможность ошибки.

Вариант осуществления 16

[0366] Этот вариант осуществления настоящего изобретения обеспечивает систему для обработки пакета. Обращаясь к фиг. 15, система включает в себя контроллер 1501 и коммутирующее устройство 1502.

[0367] В частности, контроллер 1501 может быть контроллером, описанным в вариантах осуществления настоящего изобретения 10-12, коммутирующее устройство 1502 может быть коммутирующим устройством, описанным в вариантах осуществления 7, 8, 9, 13, 14 и 15 настоящего изобретения, и их описание здесь не приводится.

[0368] В этом варианте осуществления настоящего изобретения (присвоенное) значение, которое присваивается полем соответствия в записи о потоке в таблице потоков и относится к информации, которую нужно сопоставить, хранится с использованием поля в записи в базе данных, база данных включает в себя много записей, запись также включает в себя много полей, и многие поля могут хранить большое количество значений, которые присваиваются полями соответствия и принадлежат информации, которую нужно сопоставить. Таким образом, отличаются все значения, которые присваиваются с помощью полей соответствия и принадлежат информации, которую нужно сопоставить, и записи о потоках, команды для которых являются одинаковыми, можно упростить до одной записи о потоке, посредством этого уменьшая количество записей о потоках и устраняя избыточную информацию, существующую в записях о потоках; а когда в базе данных не существует значения, которое присваивается с помощью поля соответствия и относится к информации, которую нужно сопоставить, операцию добавления нужно выполнить только один раз, чтобы добавить в базу данных значение информации, которую нужно сопоставить, и не нужно выполнять дополнительную операцию обновления информации, посредством этого исключая возможность ошибки.

[0369] Следует отметить, что когда предусмотренное в варианте осуществления коммутирующее устройство обрабатывает пакет, описание только в качестве примера выполняется с использованием разделения функциональных модулей. В реальном применении функции могут назначаться для реализации разными функциональными модулями в соответствии с потребностями, то есть внутренняя структура коммутирующего устройства разделяется на разные функциональные модули, чтобы реализовать все или часть описанных выше функций. Кроме того, вариант осуществления коммутирующего устройства, предусмотренный вариантами осуществления, относится к той же идее, что и вариант осуществления способа обработки пакета, и вариант осуществления способа может служить в качестве ориентира для подробностей определенного процесса его реализации, и подробности еще раз не описываются в этом документе.

[0370] Порядковые номера вышеупомянутых вариантов осуществления настоящего изобретения предназначены всего лишь для описания и не предназначены для указания приоритетов вариантов осуществления.

[0371] Специалисту в данной области техники может быть понятно, что все или некоторые этапы вариантов осуществления можно реализовать аппаратными средствами или программой, выдающей команды соответствующим аппаратным средствам. Программа может храниться на машиночитаемом носителе информации. Носитель информации может включать в себя: постоянное запоминающее устройство, магнитный диск, оптический диск или т. п.

[0372] Вышеизложенное описание представляет собой лишь примерные варианты осуществления настоящего изобретения и не предназначено для ограничения настоящего изобретения. Любая модификация, эквивалентная замена и усовершенствование, выполненные без отклонения от принципа настоящего изобретения, должны входить в объем правовой охраны настоящего изобретения.

Похожие патенты RU2628476C1

название год авторы номер документа
СЕТЕВАЯ СИСТЕМА И СПОСОБ ПОЛУЧЕНИЯ ДАННЫХ ТЕГА VLAN 2012
  • Йосида Хироказу
  • Судзуки Йодзи
  • Такасима Масанори
RU2589340C2
УЗЛОВОЕ УСТРОЙСТВО И СПОСОБ СВЯЗИ 2009
  • Ивао Тадасиге
  • Такахаси Юдзи
  • Кога Сиунсуке
  • Ногути Юри
  • Мияке Масато
  • Тоедзуми Тацуя
RU2502203C2
КОММУТАЦИОННОЕ УСТРОЙСТВО, СПОСОБ И ПРОГРАММА УПРАВЛЕНИЯ НАСТРОЙКОЙ VLAN 2013
  • Нагакура Сохей
  • Судзуки Йодзи
RU2604995C1
УСТРОЙСТВО УПРАВЛЕНИЯ, СИСТЕМА СВЯЗИ, СПОСОБ УПРАВЛЕНИЯ КОММУТАТОРАМИ И ПРОГРАММА 2014
  • Такасима Масанори
  • Судзуки Йодзи
  • Кубота Кадзуси
RU2612599C1
АДАПТИВНАЯ БАЛАНСИРОВКА НАГРУЗКИ ПРИ ОБРАБОТКЕ ПАКЕТОВ 2016
  • Мехра Ашвани Кумар
  • Ананд Прашант
RU2675212C1
УПРАВЛЕНИЕ ПАМЯТЬЮ ДЛЯ ВЫСОКОСКОРОСТНОГО УПРАВЛЕНИЯ ДОСТУПОМ К СРЕДЕ 2007
  • Дравида Субрахманям
  • Нараян Срирам
RU2419226C2
УПРАВЛЕНИЕ ПАМЯТЬЮ ДЛЯ ВЫСОКОСКОРОСТНОГО УПРАВЛЕНИЯ ДОСТУПОМ К СРЕДЕ 2007
  • Дравида Субрахманям
  • Нараян Срирам
RU2491737C2
ПРИВОДИМОЕ В ДЕЙСТВИЕ КОНТРОЛЛЕРОМ ОАМ ДЛЯ OPENFLOW 2012
  • Йоха Давид
  • Керн Андраш
RU2608879C2
АВТОМАТИЧЕСКОЕ УСТАНОВЛЕНИЕ ИЗБЫТОЧНЫХ ТРАКТОВ С ОСТОРОЖНЫМ ВОССТАНОВЛЕНИЕМ В СЕТИ ПАКЕТНОЙ КОММУТАЦИИ 2014
  • Фаркаш Янош
  • Аллан Дэвид Иан
RU2636689C2
УСТРОЙСТВО УПРАВЛЕНИЯ, СИСТЕМА СВЯЗИ, СПОСОБ УПРАВЛЕНИЯ УЗЛОМ И ПРОГРАММА 2013
  • Оикава Сейдзи
  • Такасима Масанори
RU2586019C2

Иллюстрации к изобретению RU 2 628 476 C1

Реферат патента 2017 года КОММУТИРУЮЩЕЕ УСТРОЙСТВО, КОНТРОЛЛЕР, СПОСОБ КОНФИГУРИРОВАНИЯ КОММУТИРУЮЩЕГО УСТРОЙСТВА И СПОСОБ И СИСТЕМА ДЛЯ ОБРАБОТКИ ПАКЕТА

Изобретение относится к технологиям сетевой связи. Технический результат заключается в повышении скорости передачи данных в сети. Способ содержит этапы, на которых: задают посредством коммутирующего устройства первую запись о потоке по меньшей мере в одной из таблиц потоков, причем первая запись о потоке содержит поле соответствия; поле соответствия используется для назначения информации, которую нужно сопоставить, и указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных; информация, которую нужно сопоставить, содержит одно или более из поля заголовка пакета, идентификатора входного порта, из которого коммутирующее устройство принимает пакет, и метаданных, ассоциированных с пакетом; и каждая запись в базе данных содержит первое поле, и первое поле используется для обозначения присвоенного значения информации, которую нужно сопоставить; выполняют посредством коммутирующего устройства сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных в соответствии с первой записью о потоке. 4 н. и 11 з.п. ф-лы, 15 ил., 5 табл.

Формула изобретения RU 2 628 476 C1

1. Способ конфигурирования коммутирующего устройства, причем в коммутирующем устройстве в системе OpenFlow заданы одна или более таблиц потоков, и способ содержит этапы, на которых:

задают посредством коммутирующего устройства первую запись о потоке по меньшей мере в одной из таблиц потоков, причем первая запись о потоке содержит поле соответствия; поле соответствия используется для назначения информации, которую нужно сопоставить, и указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных; информация, которую нужно сопоставить, содержит одно или более из поля заголовка пакета, идентификатора входного порта, из которого коммутирующее устройство принимает пакет, и метаданных, ассоциированных с пакетом; и каждая запись в базе данных содержит первое поле, и первое поле используется для обозначения присвоенного значения информации, которую нужно сопоставить;

выполняют посредством коммутирующего устройства сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных в соответствии с первой записью о потоке.

2. Способ по п. 1, в котором поле соответствия дополнительно используется для назначения идентификатора базы данных и указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, идентификатор которого является идентификатором базы данных.

3. Способ по п. 2, в котором каждая запись базы данных дополнительно содержит второе поле, и второе поле используется для обозначения параметра обработки пакетов; и

первая запись о потоке дополнительно содержит команду обработки пакетов, и команда обработки пакетов используется для указания коммутирующему устройству обработать пакет в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой записи, когда в базе данных существует первая запись, соответствующая пакету.

4. Способ по п. 3, в котором, когда в базе данных существует множество первых записей,

поле соответствия используется для указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, чтобы получить первую из множества первых записей; и команда обработки пакетов используется для указания коммутирующему устройству: обработать пакет в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой из первых записей; или

поле соответствия используется для указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, чтобы получить множество первых записей; и команда обработки пакетов используется для указания коммутирующему устройству раздельно обработать множество пакетов, которые дублируются коммутирующим устройством, в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в каждой из множества первых записей.

5. Способ обработки пакета в коммутирующем устройстве в системе Openflow, причем способ содержит этапы, на которых:

принимают пакет;

получают значение информации, которая относится к пакету и которую нужно сопоставить, в соответствии с полем соответствия первой записи о потоке в таблице потоков, с которой нужно сопоставить пакет, причем первая запись о потоке содержит поле соответствия и команду обработки пакетов, и поле соответствия используется для назначения информации, которую нужно сопоставить, которая содержит одно или более из поля заголовка пакета, идентификатора входного порта, из которого коммутирующее устройство принимает пакет, и метаданных, ассоциированных с пакетом;

выполняют по команде поля соответствия сопоставление между значением информации, которая относится к пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, причем первое поле используется для обозначения присвоенного значения информации, которую нужно сопоставить; и

обрабатывают пакет в соответствии с командой обработки пакетов, когда получена первая запись, соответствующая пакету.

6. Способ по п. 5, в котором этап, на котором обрабатывают пакет в соответствии с командой обработки пакетов, содержит этап, на котором:

обрабатывают пакет в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой записи, причем второе поле используется для обозначения параметра обработки пакетов.

7. Способ по п. 6, в котором, когда в базе данных существует множество первых записей, этап, на котором обрабатывают пакет в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой записи, в котором второе поле используется для обозначения параметра обработки пакетов, содержит этап, на котором:

обрабатывают пакет в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой из первых записей; или

дублируют пакет для получения множества пакетов и обрабатывают множество пакетов в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в каждой из множества первых записей.

8. Способ по любому из пп. 5-7, в котором первая запись о потоке дополнительно содержит команду обработки записей, и способ дополнительно содержит этап, на котором:

выполняют операцию над назначенной записью в назначенной базе данных по команде обработки записей.

9. Способ по п. 8, в котором команда обработки записей содержит одну или более из следующих команд: первую команду изменения, вторую команду изменения, команду добавления и команду удаления, причем

этап, на котором выполняют операцию над назначенной записью в назначенной базе данных, содержит этапы, на которых:

выполняют вычисление над текущим значением первого назначенного поля в первой назначенной записи в первой назначенной базе данных в соответствии с первой командой изменения, чтобы получить значение обновления первого назначенного поля и записать значение обновления в первую назначенную базу данных после того, как получена первая запись, соответствующая пакету;

изменяют текущее значение второго назначенного поля во второй назначенной записи во второй назначенной базе данных на заданное значение в соответствии со второй командой изменения после того, как получена первая запись, соответствующая пакету;

добавляют третью назначенную запись в третью назначенную базу данных в соответствии с командой добавления после того, как получена первая запись, соответствующая пакету; и/или

удаляют четвертую назначенную базу данных или четвертую назначенную запись в четвертой назначенной базе данных в соответствии с командой удаления после того, как получена первая запись, соответствующая пакету.

10. Коммутирующее устройство в системе Openflow, причем в коммутирующем устройстве заданы одна или более таблиц потоков и устройство содержит:

средство для задания первой записи о потоке по меньшей мере в одной из таблиц потоков, причем первая запись о потоке содержит поле соответствия; поле соответствия используется для назначения информации, которую нужно сопоставить, и указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных; информация, которую нужно сопоставить, содержит одно или более из поля заголовка пакета, идентификатора входного порта, из которого коммутирующее устройство принимает пакет, и метаданных, ассоциированных с пакетом; и каждая запись в базе данных содержит первое поле, и первое поле используется для обозначения присвоенного значения информации, которую нужно сопоставить;

средство для выполнения сопоставления между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных в соответствии с первой записью о потоке.

11. Устройство по п. 10, в котором поле соответствия дополнительно используется для назначения идентификатора базы данных и указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, идентификатор которого является идентификатором базы данных.

12. Устройство по п. 11, в котором каждая запись базы данных дополнительно содержит второе поле, и второе поле используется для обозначения параметра обработки пакетов; и

первая запись о потоке дополнительно содержит команду обработки пакетов, и команда обработки пакетов используется для указания коммутирующему устройству обработать пакет в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой записи, когда в базе данных существует первая запись, соответствующая пакету.

13. Устройство по п. 12, в котором, когда в базе данных существует множество первых записей,

поле соответствия используется для указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, чтобы получить первую из множества первых записей; и команда обработки пакетов используется для указания коммутирующему устройству обработать пакет в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в первой из первых записей; или

поле соответствия используется для указания коммутирующему устройству выполнить сопоставление между значением информации, которая относится к принятому пакету и которую нужно сопоставить, и первым полем каждой записи в базе данных, чтобы получить множество первых записей; и команда обработки пакетов используется для указания коммутирующему устройству раздельно обработать множество пакетов, которые дублируются коммутирующим устройством, в соответствии с командой обработки пакетов, используя в качестве параметра второе поле в каждой из множества первых записей.

14. Устройство по любому из пп. 10-13, в котором первая запись о потоке дополнительно содержит команду обработки записей, и команда обработки записей используется для указания коммутирующему устройству выполнить операцию над назначенной записью в назначенной базе данных, когда в базе данных существует первая запись, соответствующая пакету.

15. Коммутирующее устройство в системе Openflow, причем коммутирующее устройство выполнено с возможностью выполнения способа по любому из пп. 5-7.

Документы, цитированные в отчете о поиске Патент 2017 года RU2628476C1

US 2011317559 A1, 29.12.2011
WO 2012060403 A1, 10.05.2012
CN 102739549 A, 17.10.2012
CN 102857416 A, 02.01.2013.

RU 2 628 476 C1

Авторы

Тань Шиюн

Даты

2017-08-17Публикация

2013-07-19Подача