СПОСОБ УПРАВЛЕНИЯ ТАБЛИЦЕЙ ПОТОКА И СООТВЕТСТВУЮЩИЕ УСТРОЙСТВО И СИСТЕМА
FLOW TABLE MANAGEMENT METHOD AND RELEVANT DEVICE AND SYSTEM

Область техники, к которой относится изобретение
Настоящее изобретение относится к области технологий сетевой передачи данных и, в частности, к способу управления таблицей потока и соответствующим устройству и системе передачи данных.
Уровень техники
Технология открытого потока (OpenFlow) была первоначально предложена Стэнфордским университетом для решения, используя инновационную концепцию межсетевого взаимодействия и основанную на технических условиях протокола управления передачей/Протокола Интернет (TCP/IP, Transmission Control Protocol/Internet Protocol), различных проблем, связанных с узкими местами, которые возникают, когда новые услуги предоставляют в существующих сетях.
В соответствии с основной идеей технологии OpenFlow, обработка перенаправления пакета, которая первоначально полностью управлялась устройством коммутатора (устройство коммутатора может представлять собой, например, коммутатор или маршрутизатор), изменяется так, что она совместно выполняется комматурором OpenFlow (SDN switch) и программно-определенным сетевым (SDN, Software Defined Network) контроллером (SDN Controller).
Контроллер SDN может активно предоставлять в коммутатор OpenFlow, или когда коммутатор OpenFlow передает запрос записи таблицы потока, используемой для обозначения подхода к обработке перенаправления пакета. Коммутатор OpenFlow выполняет, в соответствии с записью таблицы потока, предоставленной контроллером SDN, обработку перенаправления для принимаемого пакета, который соответствует записи таблицы потока.
В предшествующем уровне техники запись таблицы потока, предоставляемая контроллером SDN в коммутатор OpenFlow, в любое время представляет собой полную стандартную запись таблицы потока. Контроллер SDN иногда также предоставляет десятки или сотни записей таблицы потока в коммутатор OpenFlow одновременно. Когда контроллер SDN предоставляет полные стандартные записи в таблицу потока, в некоторых случаях, относительно большое количество служебных сигналов или сигналов в канале управления могут быть переданы, что увеличивает риск перегрузки в канале управления, и они занимают относительно большое количество ресурсов сетевой обработки, как в контроллере SDN, так и в коммутаторе OpenFlow.
Раскрытие сущности изобретения
Варианты осуществления настоящего изобретения направлены на способ администрирования таблицей потока, устройства и системы для уменьшения объема данных записей таблицы потока, предоставляемых контроллером SDN в коммутатор OpenFlow, уменьшая, таким образом, количество служебных сигналов в канале управления, для уменьшения риска перегрузки в канале управления, и уменьшения занимаемых ресурсов сетевой обработки контроллера SDN и коммутатора OpenFlow, для предоставления записей таблицы потока.
В соответствии с первым аспектом, способ администрирования таблицей потока включает в себя:
генерируют, с помощью программно-определенного сетевого контроллера, первую запись в таблицу потока, где первый набор поля в первой записи таблицы потока переносит индекс фактического значения в наборе первого поля, набор первого поля включает в себя N полей, и N представляет собой положительное целое число; и
передают, с помощью программно-определенного сетевого контроллера, сообщение протокола OpenFlow в коммутатор OpenFlow, где сообщение протокола OpenFlow переносит первую запись таблицы потока.
Со ссылкой на первый аспект, в первом возможном подходе к воплощению первого аспекта, индекс представляет собой идентификатор записи в таблицу потока для записи таблицы потока, сохраненной в коммутаторе OpenFlow.
Со ссылкой на первый аспект или первый возможный подход к воплощению первого аспекта, во втором возможном подходе к воплощению первого аспекта, каждое поле в наборе второго поля в первой записи таблицы потока переносит множество фактических значений, где набор второго поля включает в себя поля М, и М представляет собой положительное целое число.
Со ссылкой на первый аспект или первый возможный подход к воплощению первого аспекта или второй возможный подход к воплощению первого аспекта, в третьем возможном подходе к воплощению первого аспекта,
перед генерированием первой записи таблицы потока способ дополнительно включает в себя: принимают, с помощью программно-определенного сетевого контроллера, первый пакет или заголовок первого пакета из коммутатора, и определяют, в соответствии с заданной политикой обработки, набор инструкций маршрутизации, используемый для обработки первого пакета, где поле инструкции первой записи таблицы потока переносит набор инструкций маршрутизации или индекс набора инструкций маршрутизации.
В соответствии со вторым аспектом, способ администрирования таблицей потока включает в себя:
принимают, с помощью коммутатора OpenFlow, сообщение протокола OpenFlow, где сообщение протокола OpenFlow переносит первую запись таблицы потока, набор первого поля в первой записи таблицы потока переносит индекс фактического значения в наборе первого поля, набор первого поля включает в себя N полей, и N представляет собой положительное целое число;
получают, с помощью коммутатора OpenFlow, фактическое значение в наборе первого поля на основе индекса фактического значения в наборе первого поля; и
заменяют, с помощью коммутатора OpenFlow, на фактическое значение в наборе первого поля, индекс, который относится к фактическому значению в наборе первого поля, и который переносится в наборе первого поля, в первой записи таблицы потока.
Со ссылкой на второй аспект, в первом возможном подходе к воплощению второго аспекта, индекс представляет собой идентификатор записи таблицы потока для записи таблицы потока, сохраненной в коммутаторе, и получение фактического значения в наборе первого поля на основе индекса набора первого поля включает в себя: получают, на основе идентификатора записи таблицы потока, фактическое значение, заполненное набором третьего поля, которое находится в записи таблицы потока, представленной идентификатором записи таблицы потока, и которое имеет тот же тип протокола, что и набор первого поля, где поля, которые находятся в наборе третьего поля и в наборе первого поля и которые имеют одинаковый тип протокола, имеют одинаковое фактическое значение.
Со ссылкой на второй аспект или первый возможный подход к воплощению второго аспекта, во втором возможном подходе к воплощению второго аспекта, способ дополнительно включает в себя: передают, с помощью коммутатора OpenFlow, сохраненную первую запись таблицы потока или идентификатор первой записи таблицы потока в программно-определенный сетевой контроллер.
Со ссылкой на второй аспект или первый возможный подход к воплощению второго аспекта или второй возможный подход к воплощению второго аспекта, в третьем возможном подходе к воплощению второго аспекта,
перед тем, как коммутатор OpenFlow примет первую запись таблицы потока, способ дополнительно включает в себя:
передают, с помощью коммутатора OpenFlow, первый пакет или заголовок пакета первого пакета в программно-определенный сетевой контроллер, где
поле инструкции первой записи таблицы потока переносит набор инструкций маршрутизации, используемый для обработки первого пакета или индекса набора инструкций маршрутизации; и
способ дополнительно включает в себя: обрабатывают с помощью коммутатора OpenFlow, первый пакет на основе набора инструкций маршрутизации.
В соответствии с третьим аспектом, способ релейной передачи таблицы потока может включать в себя:
принимают, с помощью устройства виртуального уровня, первое сообщение протокола OpenFlow из первого программно-определенного сетевого контроллера, где первое сообщение протокола OpenFlow переносит первую запись таблицы потока, и первое поле в первой записи таблицы потока переносит индекс фактического значения в первом поле;
принимают, с помощью устройства виртуального уровня, второе сообщение протокола OpenFlow из второго программно-определенного сетевого контроллера, где второе сообщение протокола OpenFlow переносит вторую запись таблицы потока, и четвертое поле во второй записи таблицы потока переносит индекс фактического значения в четвертом поле;
комбинируют, с помощью устройства виртуального уровня, первую запись таблицы потока и вторую запись таблицы потока в третью запись таблицы потока; и
передают, с помощью устройства виртуального уровня, третье сообщение протокола OpenFlow, переносящее третью запись таблицы потока в коммутатор OpenFlow.
В соответствии с четвертым аспектом, программно-определенный сетевой контроллер может включать в себя:
модуль генерирования, выполненный с возможностью генерировать первую запись таблицы потока, где набор первого поля в первой записи таблицы потока переносит индекс фактического значения в наборе первого поля, набор первого поля включает в себя N полей, и N представляет собой положительное целое число; и
модуль передачи, выполненный с возможностью передачи сообщения протокола OpenFlow в коммутатор OpenFlow, где сообщение протокола OpenFlow переносит первую запись таблицы потока.
Со ссылкой на четвертый аспект, в первом возможном подходе к воплощению четвертого аспекта, индекс представляет собой идентификатор записи таблицы потока для записи таблицы потока, сохраненной в коммутаторе OpenFlow.
Со ссылкой на четвертый аспект или первый возможный подход к воплощению четвертого аспекта, во втором возможном подходе к воплощению четвертого аспекта, каждое поле в наборе второго поля в первой записи таблицы потока переносит множество фактических значений записи таблицы потока, где набор второго поля включает в себя М полей, и М представляет собой положительное целое число.
Со ссылкой на четвертый аспект или первый возможный подход к воплощению четвертого аспекта или второй возможный подход к воплощению четвертого аспекта, в третьем возможном подходе к воплощению четвертого аспекта,
программно-определенный сетевой контроллер дополнительно включает в себя модуль приема, выполненный с возможностью: перед тем, как модуль генерирования сгенерирует первую запись таблицы потока, принимать первый пакет или заголовок пакета первого пакета из коммутатора, и определять, в соответствии с заданной политикой обработки, набор инструкций маршрутизации для обработки первого пакета, где поле инструкции первой записи таблицы потока переносит набор инструкций маршрутизации или индекс набора инструкции маршрутизации.
В соответствии с пятым аспектом, коммутатор OpenFlow может включать в себя:
модуль приема, выполненный с возможностью приема сообщения протокола OpenFlow, где сообщение протокола OpenFlow переносит первую запись таблицы потока, набор первого поля в первой записи таблицы потока переносит индекс фактического значения в наборе первого поля, набор первого поля включает в себя N полей, и N представляет собой положительное целое число;
модуль получения выполнен с возможностью получения фактического значения в наборе первого поля на основе индекса фактического значения в наборе первого поля; и
модуль замены, выполненный с возможностью замены на фактическое значение набора первого поля, которое было получено модулем получения, индекса, который относится к фактическому значению набора первого поля, и который переносится в наборе первого поля в первой записи таблицы потока.
Со ссылкой на пятый аспект, в первом возможном подходе к воплощению пятого аспекта, индекс представляет собой идентификатор записи таблицы потока для записи таблицы потока, сохраненной в коммутаторе OpenFlow, где
модуль получения, в частности, выполнен с возможностью получения, на основе идентификатора записи таблицы потока, фактического значения, поданного в наборе третьего поля, которое находится в записи таблицы потока, представленном идентификатором записи таблицы потока, и который имеет тот же тип протокола, что и набор первого поля, где поля, которые находятся в наборе третьего поля и в наборе первого поля, и который имеет тот же тип протокола, имеют одинаковое фактическое значение.
Со ссылкой на пятый аспект или первый возможный подход к воплощению пятого аспекта, во втором возможном подходе к воплощению пятого аспекта, коммутатор OpenFlow дополнительно включает в себя: первый модуль передачи, выполненный с возможностью передачи сохраненной первой записи таблицы потока или идентификатора первой записи таблицы потока в программно-определенный сетевой контроллер.
Со ссылкой на пятый аспект или первый возможный подход к воплощению пятого аспекта, или второй возможный подход к воплощению пятого аспекта, в третьем возможном подходе к воплощению пятого аспекта,
коммутатор OpenFlow дополнительно включает в себя:
второй модуль передачи, выполненный с возможностью: перед приемом первой записи таблицы потока, передавать первый пакет или заголовок пакета первого пакета в программно-определенный сетевой контроллер, где поле инструкции первой записи таблицы потока переносит набор инструкций маршрутизации, используемый для обработки первого пакета или индекса набора инструкций маршрутизации; и
модуль обработки пакета, выполненный с возможностью обработки первого пакета на основе набора инструкций маршрутизации.
В соответствии с шестым аспектом, устройство виртуального уровня включает в себя:
модуль приема, выполненный с возможностью приема первого сообщения протокола OpenFlow из первого программно-определенного сетевого контроллера, где первое сообщение протокола OpenFlow переносит первую запись таблицы потока, и первое поле в первой записи таблицы потока переносит индекс фактического значения в первом поле; и принимать второе сообщение OpenFlow протокола OpenFlow из второго программно-определенного сетевого контроллера, где второе сообщение протокола OpenFlow переносит вторую запись таблицы потока, и четвертое поле во второй записи таблицы потока переносит индекс фактического значения в четвертом поле;
модуль комбинирования, выполненный с возможностью комбинирования первой записи таблицы потока и второй записи таблицы потока в третью запись таблицы потока; и
модуль передачи, выполненный с возможностью передачи третьего сообщения протокола OpenFlow, переносящего третью запись таблицы потока, в коммутатор OpenFlow.
В соответствии с седьмым аспектом, система передачи данных включает в себя:
программно-определенный сетевой контроллер, выполненный с возможностью генерировать первую запись таблицы потока, где набор первого поля в первой записи таблицы потока переносит индекс фактического значения в наборе первого поля, набор первого поля включает в себя N полей, и N представляет собой положительное целое число; и передавать сообщения протокола OpenFlow в коммутатор OpenFlow, где сообщение протокола OpenFlow переносит первую запись таблицы потока; и
коммутатор OpenFlow, выполненный с возможностью приема сообщения протокола OpenFlow; получения фактического значения в наборе первого поля на основе индекса фактического значения в наборе первого поля; и замены на фактическое значение в наборе первого поля индекса, который относится к фактическому значению в наборе первого поля, и который переносят в наборе первого поля в первой записи таблицы потока.
В соответствии с восьмым аспектом, система передачи данных включает в себя:
первый программно-определенный сетевой контроллер, выполненный с возможностью передачи первого сообщения OpenFlow протокола OpenFlow, где первое сообщение протокола OpenFlow переносит первую запись таблицы потока, и первое поле в первой записи таблицы потока переносит индекс фактического значения в первом поле;
второй программно-определенный сетевой контроллер, выполненный с возможностью передачи второго сообщения протокола OpenFlow, где второе сообщение протокола OpenFlow переносит вторую запись таблицы потока, и четвертое поле во второй записи таблицы потока переносит индекс фактического значения в четвертом поле;
устройство виртуального уровня, выполненное с возможностью принимать первое сообщение протокола OpenFlow из первого программно-определенного сетевого контроллера; принимать второе сообщение протокола OpenFlow из второго программно-определенного сетевого контроллера; комбинировать первую запись таблицы потока и вторую запись таблицы потока в третью запись таблицы потока; и передавать третье сообщение протокола OpenFlow, переносящее третью запись таблицы потока, в коммутатор OpenFlow; и
коммутатор OpenFlow, выполненный с возможностью: приема третьего сообщения протокола OpenFlow; деления третьей записи таблицы потока, переносимой в третье сообщение протокола OpenFlow на первую запись таблицы потока и вторую запись таблицы потока; получения фактического значения первого поля на основе индекса фактического значения первого поля; получения фактического значения четвертого поля на основе индекса фактического значения четвертого поля; замены индекса фактического значения в первом поле, переносимого в первом поле, в первой записи таблицы потока на фактическое значение в первом поле; и замены индекса фактического значения четвертого поля, переносимого в четвертом поле, во второй записи таблицы потока на фактическое значение четвертого поля.
Можно видеть, что, в решениях, в вариантах осуществления настоящего изобретения, для первой записи таблицы потока, переносимой в сообщении протокола OpenFlow, переданном контроллером SDN в коммутатор OpenFlow, набор первого поля в первой записи таблицы потока переносит индекс фактического значения в первом наборе поля, вместо переноса фактического значения в наборе первого поля. В техническом воплощении объем данных индекса фактического значения поля обычно меньше, чем или даже гораздо меньше, чем у фактического значения поля. Поэтому, механизм доставки записи таблицы потока в вариантах осуществления позволяет уменьшить общее количество передаваемых служебных сигналов в канале управления между контроллером SDN и коммутатором OpenFlow, уменьшая, таким образом, риск перегрузки в канале управления, что также помогает уменьшить потребление сетевых ресурсов устройства коммутации, и помогает удовлетворять требованиям сложного сетевого взаимодействия.
Краткое описание чертежей
Для более ясного описания технических решений в вариантах осуществления настоящего изобретения или в предшествующем уровне техники, ниже кратко описаны приложенные чертежи, требуемые для описания вариантов осуществления или предшествующего уровня техники. Очевидно, что приложенные чертежи в следующем описании представляют собой только некоторые варианты осуществления настоящего изобретения, и специалист обычного уровня в данной области техники, без творческих усилий, все еще может вывести другие чертежи из этих приложенных чертежей.
На фиг. 1-а схематично показана блок-схема последовательности операций способа администрирования таблицы потока в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 1-b показана схема записи таблицы потока, доставленной SDN, в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 1-c показана другая схема записи таблицы потока, доставленной SDN, в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 1-d показана другая схема записи таблицы потока, доставленной SDN, в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 1-е показана другая схема записи таблицы потока, доставленной SDN, в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 1-f показана другая схема записи таблицы потока, доставленной SDN, в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 1-g показана другая схема записи таблицы потока, доставленной SDN, в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 1-h показана другая схема записи таблицы потока, доставленной SDN, в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 1-i показана схема деления записи таблицы потока в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 1-j показана другая схема деления записи таблицы потока в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 2-а схематично представлена блок-схема последовательности операций другого способа администрирования таблицы потока в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 2-b схематично представлена таблица потока, содержащаяся в коммутатор OpenFlow, в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 2-c показана другая схема записи таблицы потока, доставленной SDN, в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 3-а схематично представлена блок-схема последовательности операций другого способа администрирования таблицы потока в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 3-b показана схема комбинации записей таблицы потока в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 3-c показана другая схема комбинации записей таблицы потока в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 4 схематично представлена блок-схема последовательности операций другого способа администрирования таблицы потока в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 5 схематично представлена блок-схема последовательности операций другого способа администрирования таблицы потока в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 6 схематично представлена блок-схема последовательности операций другого способа администрирования таблицы потока в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 7 схематично представлена блок-схема последовательности операций другого способа администрирования таблицы потока в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 8-а схематично показана структурная схема контроллера SDN в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 8-b схематично показана структурная схема другого контроллера SDN в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 9-а схематично показана структурная схема коммутатора OpenFlow в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 9-b схематично показана структурная схема другого коммутатора OpenFlow в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 9-с схематично показана структурная схема другого коммутатора OpenFlow в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 10 схематично показана структурная схема устройства виртуального уровня в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 11 схематично показана структурная схема другого контроллера SDN в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 12 схематично показана структурная схема другого контроллера SDN в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 13 схематично показана структурная схема другого коммутатора OpenFlow в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 14 схематично показана структурная схема другого коммутатора OpenFlow в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 15 схематично показана структурная схема другого устройства виртуального уровня в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 16 схематично показана структурная схема другого устройства виртуального уровня в соответствии с вариантом осуществления настоящего изобретения;
На фиг. 17 схематично представлена система передачи данных в соответствии с вариантом осуществления настоящего изобретения; и
На фиг. 18 схематично представлена другая система передачи данных в соответствии с вариантом осуществления настоящего изобретения.
Осуществление изобретения
Варианты осуществления настоящего изобретения направлены на способ администрирования таблицей потока, устройства и системы для уменьшения объема данных записей таблицы потока, передаваемых контроллером SDN в коммутатор OpenFlow, уменьшая, таким образом, объемы служебных сигналов в канале управления для уменьшения риска перегрузок в канале управления, и уменьшая занимаемые ресурсы сетевой обработки контроллера SDN, и коммутатора OpenFlow, для доставки записи в таблицы потока.
Для того, чтобы сделать технические решения в настоящем изобретении более понятными для специалиста в данной области техники, далее ясно описаны технические решения в вариантах осуществления настоящего изобретения со ссылкой на приложенные чертежи в вариантах осуществления настоящего изобретения. Очевидно, что описанные варианты осуществления представляют собой только часть, а не все варианты осуществления настоящего изобретения. Все другие варианты осуществления, без творческих усилий полученные специалистом обычного уровня в данной области техники на основе вариантов осуществления настоящего изобретения, должны попадать в пределы объема защиты настоящего изобретения.
Подробные описания изобретения по-отдельности представлены ниже.
В описании, в формуле изобретения и на приложенных чертежах настоящего изобретения, термины "первый", "второй", "третий", "четвертый" и так далее предназначены для различия между разными объектами, но не для обозначения конкретного порядка. Кроме того, термины "включающий в себя", "включающее в себя" или любой другой их вариант предназначены для охвата неисключительного включения. Например, обработка, способ, система, продукт или устройство, которое включает в себя последовательность этапов или модулей, не ограничены перечисленными этапами или модулями и, вместо этого, могут включать в себя этапы или модули, которые не перечислены здесь.
В варианте осуществления способа администрирования таблицей потока, в соответствии с настоящим изобретением, способ администрирования таблицей потока включает в себя: генерируют, с помощью контроллера SDN, первую запись таблицы потока, где набор первого поля в первой записи таблицы потока переносит индекс фактического значения в наборе первого поля, набор первого поля включает в себя N полей, и N представляет собой положительное целое число; и передают сообщение протокола OpenFlow в коммутатор OpenFlow, где сообщение протокола OpenFlow переносит первую запись таблицы потока.
Вначале, со ссылкой на фиг. 1-а, на фиг. 1-а представлена схема блок-схема последовательности операций способа администрирования таблицей потока, в соответствии с вариантом осуществления настоящего изобретения. Как показано на фиг. 1-а, способ администрирования таблицей потока, в соответствии с данным вариантом осуществления настоящего изобретения может включать в себя следующее содержание.
101: контроллер SDN генерирует первую запись таблицы потока.
Контроллер SDN может генерировать запись таблицы потока (которая может называться первой записью таблицы потока для простоты последующей ссылки), на основе заданной политики, или контроллер SDN может генерировать первую запись таблицы потока при инициировании со стороны инструкции пользователя или коммутатора OpenFlow. Конечно, контроллер SDN может генерировать одну или больше записей таблицы потока при инициировании другим условием.
В архитектуре SDN контроллер SDN определяет канал передачи пакета данных в сети. Коммутатор OpenFlow локально сохраняет несколько таблиц потока (таблицы потока), и каждая таблица потока может включать в себя несколько записей таблицы потока. Если таблица потока, локально сохраняемая в коммутаторе OpenFlow, имеет запись таблицы потока, которая соответствует пакету данных (например, пакету), который должен быть перенаправлен коммутатором OpenFlow, коммутатор OpenFlow выполняет, на основе записи таблицы потока, которая находится в таблице потока и которая соответствует пакету данных, обработку перенаправления для пакета данных. Кроме того, если ни одна запись таблицы потока в локально сохраненной таблице потока не соответствует пакету данных, коммутатор OpenFlow может передавать пакет данных или заголовок пакета данных в контроллер SDN для определения соответствия подхода к обработке перенаправления. Контроллер SDN передает обратно в коммутатор OpenFlow новую запись таблицы потока, которая соответствует пакету данных. Коммутатор OpenFlow затем выполняет обработку перенаправления для пакета данных, в соответствии с новой записью таблицы потока, которую доставляет контроллер SDN, и которая соответствует пакету данных. Это означает, что устройства в сети OpenFlow могут быть развернуты, используя распределенный подход,, и ими можно управлять, используя централизованный подход. В этом случае, сеть OpenFlow находится в программно-определенной форме, и, поэтому, сеть OpenFlow также относится к SDN. SDN может предоставлять программируемый интерфейс для обеспечения для пользователя сети возможности определения, как направлять пакет данных, как воплотить баланс нагрузки, как выполнить управление доступом и т.п.Таким образом, обычно, только сотни строк кода должны быть записаны в контроллер SDN для развертывания нового протокола маршрутизации или алгоритма защиты в SDN. Поэтому, открытость SDN помогает быстро ускорить разработку и развертывание новых сетевых приложений.
Следует отметить, что коммутатор OpenFlow, упомянутый в вариантах осуществления настоящего изобретения, представляет собой устройство коммутатора, которое поддерживает протокол OpenFlow. Устройство коммутатора, которое поддерживает протокол OpenFlow, может, например, представлять собой устройство перенаправления пакета данных (например, пакет), такое, как маршрутизатор, или коммутатор, который поддерживает протокол OpenFlow.
102: контроллер SDN передает сообщение протокола OpenFlow в коммутатор OpenFlow.
Сообщение протокола OpenFlow переносит первую запись таблицы потока, набор первого поля в первой записи таблицы потока переносит индекс фактического значения в наборе первого поля, набор первого поля включает в себя N полей, и N представляет собой положительное целое число. Сообщение протокола OpenFlow, которое переносит первую запись таблицы потока, может представлять собой, например, сообщение модификации потока (flow_mod) или другое сообщение протокола OpenFlow.
Следует понимать, что первая запись таблицы потока может иметь структуру данных, которая является такой же, как и стандартная запись таблицы потока. Например, тип поля протокола, включенного в первую запись таблицы потока и взаимосвязь местоположения между всеми типами полей протокола в первой записи таблицы потока может быть такой же, как и у стандартной записи таблицы потока. Однако, тип информации, переносимой в некоторых или всех полях протокола в первой записи таблицы потока, отличается от стандартной записи таблицы потока. В частности, поле в первом наборе полей в первой записи таблицы потока переносит индекс фактического значения поля, в то время как каждое поле в стандартной записи таблицы потока переносит фактическое значение поля.
N в вариантах осуществления настоящего изобретения может быть равным, например, 1, 2, 5, 8, 10, или другому значению.
N полей, включенных в набор первого поля, могут представлять собой любые N полей в первой записи таблицы потока. N полей, включенных в набор первого поля, могут быть расположенными рядом друг с другом N полями, частично расположенными рядом друг с другом N полями или не расположенными рядом друг с другом N полями в первой записи таблицы потока, то есть, местами положения, где поля в наборе первого поля могут быть произвольно распределены в первой записи таблицы потока, что помогает более гибко удовлетворять гибким техническим требованиям различных фактических сценариев приложения. N полей могут, например, включать в себя, по меньшей мере, одно из следующих полей: поле номера порта, поле IP-адреса источника, поле IP-адреса назначения, поле адреса управления доступом к среде (MAC, управление доступом к среде) места назначения, поле виртуального сетевого идентификатора локальной вычислительной сети, поле адреса МАС-источника и т.п. Фактическое значение поля в наборе первого поля представляет стандартное значение, которое должно переносить поле. Например, фактическое значение поля номера порта представляет собой номер порта, фактическое значение в поле IP-адреса источника представляет собой IP-адрес источника, фактическое значение поля IP-адреса места назначения представляет собой IP-адрес места назначения, фактическое значение поля МАС-адреса места назначения представляет собой МАС-адрес места назначения, фактическое значение поля идентификатора виртуальной локальной вычислительной сети представляет собой идентификатор виртуальной локальной вычислительной сети, фактическое значение поля МАС-адреса источника представляет собой МАС-адрес источника, и фактическое значение другого поля определяют, соответственно. В данном варианте осуществления настоящего изобретения поле в наборе первого поля представляет собой первую запись таблицы потока, предоставляемую контроллером SDN, который не переносит фактическое значение поля, но вместо этого, переносит индекс фактического значения поля, где индекс представляет собой информацию, используя которую может быть индексировано фактическое значение поля. Предположим, что набор первого поля включает в себя поле номера порта, поле номера порта не переносит номер порта, но вместо этого, переносит индекс, с помощью которого может быть проиндексирован номер порта. В качестве другого примера, набор первого поля включает в себя поле IP-адреса источника, и поле IP-адреса источника не переносит IP-адрес источника, но, вместо этого, переносит индекс, используя который может быть индексирован IP-адрес источника. В качестве другого примера, набор первого поля включает в себя поле IP-адреса назначения, и поле IP-адреса назначения не переносит IP-адрес назначения, но, вместо этого, переносит индекс, используя которой может быть проиндексирован IP-адрес места назначения. В качестве другого примера, набор первого поля включает в себя поле идентификатора виртуальной локальной вычислительной сети, и поле идентификатора виртуальной локальной вычислительной сети не переносит идентификатор виртуальной локальной вычислительной сети, но, вместо этого, переносит индекс, используя который может быть проиндексирован идентификатор виртуальной локальной вычислительной сети. В качестве другого примера, набор первого поля включает в себя поле МАС-адреса места назначения, и поле МАС-адреса места назначения не переносит МАС-адрес места назначения, но, вместо этого, переносит индекс, используя который может быть проиндексирован МАС-адрес места назначения. В качестве другого примера, набор первого поля включает в себя поле МАС-адреса источника, и поле МАС-адреса источника не переносит МАС-адрес источника, но, вместо этого, переносит индекс, используя которого может быть проиндексирован МАС-адрес источника. Если первый набор поля дополнительно включает в себя поле другого протокола, соответствующим образом выводится соответственный случай.
Можно понять, что индекс фактического значения может быть разных типов, и требование может удовлетворяться до тех пор, пока коммутатор OpenFlow не получит фактическое значение, в соответствии с индексом фактического значения. В некоторых подходах к воплощению настоящего изобретения индекс фактического значения может представлять собой, например, идентификатор записи таблицы потока для записи таблицы потока, сохраненной в коммутаторе OpenFlow, то есть, индекс, переносимый в любом поле, в наборе первого поля первой записи таблицы потока, переносимой в сообщении протокола OpenFlow, может представлять собой идентификатор записи таблицы потока для записи таблицы потока, сохраненной в коммутаторе OpenFlow. Следует понимать, что, если N больше, чем 1, индексы, переносимые в полях в наборе первого поля, могут быть полностью одинаковыми, частично одинаковыми или абсолютно разными (например, индексы, переносимые в полях, в наборе первого поля, могут представлять собой, в частности, одинаковые идентификаторы записи таблицы потока). Следует понимать, что если индекс фактического значения поля представляет собой идентификатор записи таблицы потока для записи таблицы потока, уже сохраненной в коммутаторе OpenFlow, не только подход к индексации фактического значения поля коммутатором OpenFlow может быть существенно упрощен, но также и эффективность индексации для фактического значения поля коммутатором OpenFlow может быть улучшена. Кроме того, идентификатор записи таблицы потока обычно имеет относительно малый объем данных, что помогает контроллеру SDN относительно желательным образом управлять объемом данных для предоставляемой записи первой таблицы потока.
В некоторых подходах к воплощению настоящего изобретения каждое поле в наборе второго поля в первой записи таблицы потока, может дополнительно переносить множество фактических значений поля. Набор второго поля включает в себя М полей, и М представляет собой положительное целое число. Примеры фактических значений полей описаны выше. Следует понимать, что, поскольку каждое поле в наборе второго поля может дополнительно переносить множество фактических значений поля, это эквивалентно обозначает, что первая запись таблицы потока может быть разделена на множество записей таблицы потока, что также помогает контроллеру SDN относительно по желанию управлять объемом данных для предоставляемой первой записи таблицы потока. Например, набор второго поля в первой записи таблицы потока включает в себя место назначения поля МАС-адреса, и место назначения поля МАС-адреса переносит три МАС-адреса места назначения (например, информация, переносимая в поле МАС-адреса места назначения, представляет собой следующую: 192.168.0.2, 192.168.0.3 и 192.168.0.4, или информация, переносимая в поле МАС-адреса места назначения, представляет собой следующее: от 192.168.0.2 до 192.168.0.4, и два подхода в представленных выше примерах оба могут представлять, что поле МАС-адреса места назначения переносит три МАС-адреса места назначения; конечно, оно может быть представлено, используя другой подход, чем в случае, когда поле МАС-адреса места назначения переносит три МАС-адреса). В этом сценарии коммутатор OpenFlow может разделять первую запись таблицы потока на четыре записи таблицы потока. Поля МАС-адреса места назначения трех записей таблицы потока, соответственно, переносят разные один из представленных выше трех МАС-адресов места назначения, и другие поля трех записей таблицы потока являются такими же. Конечно, если другое поле из трех записей таблицы потока также переносит множество фактических значений, эти три записи таблицы потока, соответственно, могут быть разделены, в соответствии с аналогичным подходом. Например, поле идентификатора виртуальной локальной вычислительной сети трех записей таблицы потока, которые получают в результате разделения, переносят два идентификатора виртуальной локальной вычислительной сети, каждая запись таблицы потока из трех записей таблицы потока может быть дополнительно разделена на две записи таблицы потока. Конкретный подход к разделению может быть показан на фиг. 1-i и на фиг. 1-j. Разделение может останавливаться только, когда каждое поле полученной записи таблицы потока переносит только одно фактическое значение или индекс одного фактического значения поля.
М в вариантах осуществления настоящего изобретения может быть равно, например, 1, 2, 5, 8, 10, или может иметь другое значение.
М полей, включенных в набор второго поля, в первой записи таблицы потока, могут представлять собой любые М полей, которые находятся в первой записи таблицы потока и которые отличаются от любого поля в наборе первого поля. М полей, включенных во второй набор поля, могут быть М полями, расположенными рядом друг с другом, М полями, расположенными частично рядом друг с другом, или М полями, которые расположены не рядом друг с другом в первой записи таблицы потока. М полей могут включать в себя, например, по меньшей мере, одно из следующих полей: поле номера порта, поле IP-адреса источника, поле IP-адреса места назначения, поле МАС-адреса места назначения, поле идентификатора виртуальной локальной вычислительной сети, поле МАС-адреса источника, поле протокола и т.п.
Пересечение набора второго поля и первого набора поля представляет собой пустой набор.
Примеры нескольких возможных структур первой записи таблицы потока представлены ниже, используя приложенные чертежи.
На фиг. 1-b - фиг. 1-е, фиг. 1-b представлен пример, в котором набор первого поля в первой записи таблицы потока включает в себя одно поле, и поле переносит индекс фактического значения поля. На фиг. 1-с представлен пример, в котором набор первого поля в первой записи таблицы потока включает в себя два соседних поля, и каждое из двух соседних полей переносит индекс фактического значения поля. На фиг. 1-d показан пример, в котором набор первого поля первой записи таблицы потока включает в себя t1 расположенных рядом друг с другом полей (где t1 представляет собой положительное целое число, большее 2), где каждое из t1 расположенных рядом друг с другом полей переносит индекс фактического значения поля. На фиг. 1-е показан пример, в котором набор первого поля в первой записи таблицы потока включает в себя два не расположенных рядом друг с другом поля, и каждое из двух не расположенных рядом друг с другом полей переносят индекс фактического значения поля. Следует понимать, что сценарий, в котором набор первого поля включает в себя больше полей, может быть выведен соответствующим образом.
В качестве другого примера, как представлено на фиг. 1-f - фиг. 1-h, на фиг. 1-f показан пример, в котором первая запись таблицы потока включает в себя набор первого поля и набор второго поля, набор первого поля включает в себя одно поле, и поле переносит индекс фактического значения поля; и набор второго поля также включает в себя одно поле, и это поле переносит множество фактических значений, используемых для описания поля. На фиг. 1-g показан пример, в котором набор первого поля в первой записи таблицы потока включает в себя множество соседних полей, и каждое из множества соседних полей переносит индекс с фактическим значением поля, тогда как набор второго поля включает в себя одно поле, и поле переносит множество фактических значений поля. На фиг. 1-h показан пример, в котором набор первого поля в наборе первой записи таблицы потока включает в себя множество соседних полей, где каждое из множества соседних полей переносит индекс фактического значения поля; тогда как второй набор поля также включает в себя множество полей, и каждое из множества полей, включенных в набор второго поля, переносит множество фактических значений поля. Следует понимать, что, сценарий, в котором первый набор поля и второй набор поля включает в себя больше полей, может быть выведен, соответственно.
В некоторых подходах к воплощению настоящего изобретения, перед генерированием первой записи таблицы потока, контроллер SDN может дополнительно принимать первый пакет из коммутатора OpenFlow, и может определять набор инструкций маршрутизации первого пакета, в соответствии с заданной политикой обработки. Поле инструкции (инструкции) первой записи таблицы потока переносит набор инструкции маршрутизации или индекс набора инструкций маршрутизации, где индекс может представлять собой, например, идентификатор записи таблицы потока для записи таблицы потока, сохраненной в коммутаторе OpenFlow. Кроме того, после получения первой записи таблицы потока, коммутатор OpenFlow может обрабатывать первый пакет на основе набора инструкций маршрутизации (или наборов инструкций маршрутизации, полученных на основе индекса набора инструкций маршрутизации), переносимых полем инструкций для первой записи таблицы потока.
Например, прием, с помощью контроллера SDN, первого пакета из коммутатора OpenFlow или пакета из первого пакета, из коммутатора OpenFlow, может включать в себя: принимают, с помощью контроллера SDN, сообщения протокола OpenFlow (где сообщение протокола OpenFlow может представлять собой, например, сообщение packet_in (packet_in) или другое сообщение протокола OpenFlow), которое поступает из коммутатора OpenFlow и которое переносит первый пакет или заголовок пакета первого пакета. Конечно, сообщение протокола OpenFlow может дополнительно переносить один или больше других пакетов или заголовков пакета. Конечно, сообщение протокола OpenFlow может дополнительно переносить другую информацию.
В некоторых подходах к воплощению настоящего изобретения, для одной и той же записи таблицы потока, идентификаторы записи таблицы потока, которые представляют собой коммутатор OpenFlow и контроллер SDN, и которые используются для идентификации той же записи таблицы потока, могут одинаковыми или могут иметь согласованную взаимосвязь отображения. Если идентификаторы записи таблицы потока, имеющие установленную взаимосвязь отображения, используются в коммутаторе OpenFlow и контроллере SDN, для идентификации одинаковой записи таблицы потока, как коммутатор OpenFlow, так и контроллер SDN, могут выводить, используя установленную взаимосвязь отображения, идентификатор записи таблицы потока в той же записи таблицы потока, в устройстве на конце пиринговой передачи.
Один контроллер SDN может администрировать множество коммутаторов OpenFlow (то есть, тот же контроллер SDN может доставлять записи таблицы потока во множество коммутаторов OpenFlow). Одним коммутатором OpenFlow может администрировать один или больше контроллеров SDN (то есть, множество контроллеров SDN могут предоставлять записи таблицы потока в один и тот же коммутатор OpenFlow).
В некоторых подходах к воплощению настоящего изобретения информация, обмен которой выполняется между контроллером SDN и коммутатором OpenFlow, может быть перенаправлена устройством виртуального уровня (если существует устройство виртуального уровня) для того, чтобы достичь конца линии пиринговой передачи. Устройство виртуального уровня может прозрачно передать информацию, обмен которой выполняется между контроллером SDN и коммутатором OpenFlow, или может выполнять определенную обработку релейной передачи (обработку релейной передачи, такую как деление записи таблицы потока и комбинация записей таблицы потока) для информации, обмен которой выполняется между контроллером SDN и коммутатором OpenFlow, и затем передавать информацию в конец линии пиринговой передачи. Например, сообщение протокола OpenFlow, переданное контроллером SDN в коммутатор OpenFlow, может быть перенаправлено с помощью устройства виртуального уровня (если существует устройство виртуального уровня), чтобы достичь коммутатора OpenFlow. Аналогично, так же сообщение протокола OpenFlow, переданное коммутатором OpenFlow в контроллер SDN, может быть направлено устройством виртуального уровня в контроллер SDN, и, конечно, может существовать любое другое устройство релейной передачи.
Устройство виртуального уровня в данном варианте осуществления настоящего изобретения может представлять собой устройство, которое может выполнять виртуализацию в физическом коммутаторе OpenFlow. Устройство виртуального уровня может, например, виртуализировать один физический коммутатор OpenFlow, как множество виртуальных коммутаторов OpenFlow. В техническом решении данного варианта осуществления настоящего изобретения основной фокус направлен на проблему, что устройство виртуального уровня выполняет релейное перенаправление информации, обмен которой выполняется между контроллером SDN и коммутатором OpenFlow.
Можно видеть, что, в решении в данном варианте осуществления, для записи таблицы первого потока, переносимой в сообщении протокола OpenFlow, переданном контроллером SDN в коммутатор OpenFlow, набор первого поля, установленный в первой записи таблицы потока, переносит индекс фактического значения в наборе первого поля, вместо переноса фактического значения в наборе первого поля. В техническом воплощении объем данных индекса фактического значения поля обычно меньше чем или даже гораздо меньше, чем фактическое значение поля. Поэтому, механизм доставки записи таблицы потока в данном варианте осуществления помогает уменьшить количество передаваемых служебных сигналов канала управления между контроллером SDN и коммутатором OpenFlow, в результате чего, уменьшается риск перегрузки канала управления, что также помогает уменьшить потребление сетевых ресурсов устройства переключения и помогает удовлетворить требованиям сложного сетевого взаимодействия.
В другом варианте осуществления способа администрирования таблицей потока, в соответствии с настоящим изобретением, способ администрирования таблицей потока может дополнительно включать в себя: принимают, с помощью коммутатора OpenFlow, сообщение протокола OpenFlow, переносимое в первой записи таблицы потока, где первый набор поля в первой записи таблицы потока может переносить индекс фактического значения в первом наборе поля, первый набор поля включает в себя N полей, и N представляет собой положительное целое число; получают фактическое значение в первом наборе поля на основе индекса фактического значения первого набора поля; и заменяют индекс на фактическое значение в первом наборе поля, то есть, индекс фактического значения в первом наборе поля, и который переносится в первом наборе поля, в первой записи таблицы потока.
Вначале, со ссылкой на фиг. 2-а, фиг. 2-а, будет схематично представлена блок-схема последовательности операций другого способа администрирования таблицы потока, в соответствии с другим вариантом осуществления настоящего изобретения. Как показано на фиг. 2-а, другой способ администрирования таблицы потока, в соответствии с другим вариантом осуществления настоящего изобретения может включать в себя следующее содержание.
201: коммутатор OpenFlow принимает сообщение протокола OpenFlow, переносящее первую запись таблицы потока.
Набор первого поля в первом наборе записи таблицы потока может переносить индекс фактического значения в наборе первого поля, набор первого поля включает в себя N полей, и N представляет собой положительное целое число. N может быть, например, равным 1, 2, 5, 8, 10, или может иметь другое значение.
Сообщение протокола OpenFlow, которое переносит первую запись таблицы потока, может представлять, например, сообщение flow_mod или другое сообщение протокола OpenFlow.
Контроллер SDN может активно доставлять запись таблицы потока в коммутатор OpenFlow. Контроллер SDN может перенаправлять, в соответствии с инструкциями от пользователя или в случае инициирования со стороны коммутатора OpenFlow, запись таблицы потока в коммутатор OpenFlow. Конечно, контроллер SDN может предоставлять, в случае инициирования другим условием, запись таблицы потока в коммутатор OpenFlow. Первая запись таблицы потока, переносимая в сообщении протокола OpenFlow, может быть сгенерирована контроллером SDN, или первая запись таблицы потока может быть получена с помощью устройства виртуального уровня (или другого устройства релейной передачи), путем комбинирования множества записей таблицы потока, передаваемых контроллером SDN или множеством контроллеров SDN.
N полей, включенных в набор первого поля, могут представлять собой любые N полей в первой записи таблицы потока. N полей, включенных в набор первого поля, могут представлять собой расположенные рядом друг с другом N полей, частично разделенные N полей или не соседние N полей в первой записи таблицы потока. Эти N полей могут, например, включать в себя, по меньшей мере, одно из следующих полей: поле номера порта, поле IP-адреса источника, поле IP-адреса места назначения, флаг МАС-адреса места назначения, поле идентификатора сети виртуальной локальной области, поле МАС-адреса источника, поле протокола и т.п.
202: коммутатор OpenFlow получает фактическое значение в наборе первого поля на основе индекса фактического значения в наборе первого поля.
Следует понимать, что, индекс фактического значения может быть различных типов, и требование может удовлетворяться до тех пор, пока коммутатор OpenFlow может получать фактическое значение, в соответствии с индексом фактического значения. В некоторых подходах к воплощению настоящего изобретения индекс фактического значения может представлять собой, например, идентификатор записи таблицы потока для записи таблицы потока, сохраненной в коммутаторе OpenFlow, то есть, для индекса, переносимого в любом поле в наборе первого поля в первую запись таблицы потока, переносимую в сообщении протокола OpenFlow, может находиться идентификатор записи таблицы потока для записи таблицы потока, содержащейся в коммутаторе OpenFlow. Следует понимать, что, если N больше 1, индексы, переносимые в полях в первом наборе поля, могут быть полностью такими же, частично такими же или абсолютно разными. Например, индексы, переносимые в полях, в наборе первого поля, могут, в частности, представлять собой такой же идентификатор записи таблицы потока. Можно понимать, что, если индекс фактического значения поля представляет собой идентификатор записи таблицы потока для записи таблицы потока, уже сохраненной в коммутаторе OpenFlow, не только подход к индексации фактического значения поля с использованием коммутатора OpenFlow может быть существенно упрощен, но также и эффективность индексации до фактического значения поля коммутатором OpenFlow, может быть улучшена. Кроме того, идентификатор записи таблицы потока обычно имеет относительно малый объем данных, что помогает контроллеру SDN относительно по желанию управлять объемом данных доставляемой первой записи таблицы потока.
Фактическое значение поля в наборе первого поля представляет стандартное значение, которое должно переносить поле. Например, фактическое значение поля номера порта представляет собой номер порта, фактическое значение поля IP-адреса источника представляет собой IP-адрес источника, фактическое значение поля IP-адреса места назначения представляет собой IP-адрес места назначения, фактическое значение поля МАС-адреса места назначения представляет собой МАС-адрес места назначения, фактическое значение поля идентификатора виртуальной локальной вычислительной сети представляет собой идентификатор виртуальной локальной вычислительной сети, фактическое значение поля МАС-адреса источника представляет собой МАС-адрес источника, и фактическое значение другого поля выводят соответствующим образом. В данном варианте осуществления настоящего изобретения поле в первом наборе поля первой записи таблицы потока, доставляемой контроллером SDN, не переносит фактическое значение поля, но, вместо этого, переносит индекс фактического значения поля, где индекс представляет собой информацию, используя которую может быть индексировано фактическое значение поля. Предположим, что набор первого поля включает в себя поле номера порта, поле номера порта не переносит номер порта, но, вместо этого, переносит индекс, используя номер порта, который может быть индексирован. В качестве другого примера, набор первого поля включает в себя поле IP-адреса источника, и поле IP-адреса источника не переносит IP-адрес источника, но, вместо этого, переносит индекс, используя который может быть индексирован IP-адрес источника. В качестве другого примера, набор первого поля включает в себя поле IP-. адреса места назначения, и поле IP-адреса места назначения не переносит IP-адрес места назначения, но, вместо этого, переносит индекс, используя который можно проиндексировать IP-адрес места назначения. В качестве другого примера, набор первого поля включает в себя поле идентификатора виртуальной локальной вычислительной сети, и поле идентификатора виртуальной локальной вычислительной сети не переносит идентификатор виртуальной локальной вычислительной сети, но, вместо этого, переносит индекс, используя который может быть проиндексирован идентификатор виртуальной локальной вычислительной сети. В качестве другого примера, набор первого поля включает в себя поле МАС-адреса места назначения, и поле МАС-адреса места назначения не переносит МАС-адрес места назначения, но, вместо этого, переносит индекс, используя который может быть индексирован МАС-адрес места назначения. В качестве другого примера, набор первого поля включает в себя поле МАС-адреса источника, и поле МАС-адреса источника не переносит МАС-адрес источника, но, вместо этого, переносит индекс, используя который может быть индексирован МАС-адрес источника. Если набор первого поля включает в себя другое поле протокола, соответствующий случай выводят, соответственно.
В некоторых вариантах осуществления настоящего изобретения, если индекс представляет собой идентификатор записи таблицы потока для записи таблицы потока, уже сохраненной в коммутаторе OpenFlow, получение фактического значения в наборе первого поля, на основе индекса фактического значения, в наборе первого поля, может включать в себя: получают, на основе идентификатора записи таблицы потока, фактическое значение, поданное в набор третьего поля, который находится в записи таблицы потока, представленной идентификатором записи таблицы потока, и который имеет такой же тип протокола, как и первый набор поля, где поля, которые находятся в наборе третьего поля и в наборе первого поля, и которые имеют одинаковый тип протокола, имеют одинаковое фактическое значение. Следует понимать, что набор третьего поля и набор первого поля имеют равные количества полей, и типы протокола полей, включенные в набор третьего поля и в набор первого поля, находятся во взаимнооднозначных соответствиях.
203: коммутатор OpenFlow заменяет фактическим значением в наборе первого поля индекс, который имеет фактическое значение в наборе первого поля и который переносится в наборе первого поля в записи таблицы первого потока.
Кроме того, коммутатор OpenFlow может сохранять первую запись таблицы потока, полученную после индекса, который имеет фактическое значение набора первого поля, и который переносится в наборе первого поля, заменяется фактическим значением набора первого поля, то есть, сохраняется первая запись таблицы потока, полученная после заполнения фактического значения в первом наборе поля.
В некоторых вариантах осуществления настоящего изобретения коммутатор OpenFlow может дополнительно передавать сохраненную запись первой таблицы потока или идентификатор записи первой таблицы потока в контроллер SDN, таким образом, что сохраненная запись таблицы потока синхронизируется между коммутатором OpenFlow и контроллером SDN. Конечно, если контроллер SDN также получает и сохраняет ту же запись первой таблицы потока, в соответствии со способом, аналогичным способу коммутатора OpenFlow, может быть воплощена синхронизация сохраненной записи таблицы потока между коммутатором OpenFlow и контроллером SDN. В этом случае, коммутатору OpenFlow может не потребоваться передавать первую запись таблицы потока, сохраненную в контроллере SDN, или идентификатор первой записи таблицы потока в контроллер SDN.
В некоторых вариантах осуществления настоящего изобретения, перед тем, как коммутатор OpenFlow примет первую запись таблицы потока, способ может дополнительно включать в себя: передают первый пакет или заголовок пакета первого пакета в контроллер SDN. Поле инструкции первой записи таблицы потока переносит набор инструкций маршрутизации для обработки первого пакета или индекс набора инструкций маршрутизации. Способ может дополнительно включать в себя: обрабатывают, с помощью коммутатора OpenFlow, первый пакет на основе набора инструкций маршрутизации.
Например, передача первого пакета в контроллер SDN может включать в себя: передают сообщение протокола OpenFlow (сообщение протокола OpenFlow может представлять собой, например, сообщение packet_in или другое сообщение протокола OpenFlow), которое переносит первый пакет в контроллер SDN.
В некоторых подходах к воплощению настоящего изобретения, для той же записи таблицы потока, идентификаторы записи таблицы потока, которые находятся в коммутаторе OpenFlow и контроллере SDN, и которые используются для идентификации записи таблицы потока, могут быть одинаковыми или могут иметь согласованную взаимосвязь отображения, и как коммутатор OpenFlow, так и контроллер SDN могут выводить, используя установленную взаимосвязь отображения, идентификатор записи таблицы потока в той же записи таблицы потока, в устройство на конце пиринговой передачи данных.
Например, как показано на фиг. 2-b, коммутатор OpenFlow содержит таблицу 1 потока, таблицу 2 потока и таблицу 3 потока, и т.п. Каждая таблица потока включает в себя множество записей таблицы потока. Предполагая, что первая запись таблицы потока показана на фиг. 2-c, набор первого поля в первой записи таблицы потока включает в себя поле порта коммутатора, поле MAC sre и поле IP src. Все эти поля переносят индексы соответствующих фактических значений, и индекс представляет собой идентификатор записи таблицы потока для коммутатора OpenFlow. Поэтому, коммутатор OpenFlow может находить, на основе идентификатора записи таблицы потока, переносимой в поле порта коммутатора, уже сохраненную запись 1.3 таблицы потока, и фактическое значение поля порта коммутатора уже сохраненной записи 1.3 таблицы потока используется для замены индекса фактического значения, переносимого в поле порта коммутатора первой записи таблицы потока. Аналогично, коммутатор OpenFlow может находить, на основе идентификатора записи таблицы потока, переносимого в поле MAC src, уже сохраненную запись 2.1 таблицы потока, и фактическое значение поля MAC src, уже сохраненной записи 2.1 таблицы потока может использоваться для замены индекса фактического значения, переносимого в поле MAC src первой записи таблицы потока. Аналогично, коммутатор OpenFlow может находить, на основе идентификатора записи таблицы потока, переносимого полем src IP, уже сохраненную запись 3.5 таблицы потока, и фактическое значение поля src IP уже сохраненной записи 3.5 таблицы потока используется для замены индекса фактического значения, переносимого в поле src IP первой записи таблицы потока, и так далее.
Можно видеть, что, в данном варианте осуществления, для первой записи таблицы потока, переносимой в сообщении протокола OpenFlow, переданном контроллером SDN в коммутатор OpenFlow, поскольку набор первого поля в первой записи таблицы потока переносит индекс фактического значения в наборе первого поля, вместо переноса фактического значения в наборе первого поля. При техническом воплощении объем данных для индекса фактического значения поля обычно меньше чем или даже намного меньше, чем у фактического значения поля. Поэтому, механизм подачи записи таблицы потока в данном варианте осуществления помогает уменьшить количество служебных сигналов канала управления между контроллером SDN и коммутатором OpenFlow, в результате чего, уменьшается риск перегрузки в канале управления, и это также помогает уменьшить потребление сетевых ресурсов устройства коммутации и помогает удовлетворять требованиям сложного сетевого взаимодействия.
В варианте осуществления способа релейной передачи таблицы потока, в соответствии с настоящим изобретением, способ релейной передачи таблицы потока включает в себя: принимают, с помощью устройства виртуального уровня, первое сообщение протокола OpenFlow из первого контроллера SDN, где первое сообщение протокола OpenFlow переносит первую запись таблицы потока, и первое поле в первой записи таблицы потока переносит индекс фактического значения в первом поле; принимают второе сообщение OpenFlow для протокола OpenFlow из второго контроллера SDN, куда второе сообщение протокола OpenFlow переносит вторую запись таблицы потока, и четвертое поле во второй записи таблицы потока переносит индекс с фактическим значением в четвертом поле; комбинируют первую запись таблицы потока и вторую запись таблицы потока в третью запись таблицы потока; и передают третье сообщение протокола OpenFlow, переносящее третью запись таблицы потока в коммутатор OpenFlow.
На фиг. 3-а, фиг. 3-а представляет схематичную блок-схему последовательности операций другого способа релейной передачи таблицы потока, в соответствии с другим вариантом осуществления настоящего изобретения. Как показано на фиг. 3-а, другой способ релейной передачи таблицы потока, в соответствии с другим вариантом осуществления настоящего изобретения, может включать в себя следующее содержание.
301: устройство виртуального уровня принимает первое сообщение протокола OpenFlow из первого контроллера SDN.
Первое сообщение протокола OpenFlow переносит первую запись таблицы потока, и набор первого поля в первой записи таблицы потока переносит индекс фактического значения в наборе первого поля.
Первое сообщение протокола OpenFlow, переносящее первую запись таблицы потока, может, например, представлять собой первое сообщение flow_mod или другое сообщение протокола OpenFlow.
302: устройство виртуального уровня принимает второе сообщение протокола OpenFlow из второго контроллера SDN.
Второе сообщение протокола OpenFlow переносит вторую запись таблицы потока, и набор четвертого поля во второй записи таблицы потока переносит индекс фактического значения набора четвертого поля.
Второе сообщение протокола OpenFlow, переносящее вторую запись таблицы потока, может, например, представлять собой третьей сообщение flow_mod или другое сообщение протокола OpenFlow.
303: устройство виртуального уровня комбинирует вторую запись таблицы потока и первую запись таблицы потока в третью запись таблицы потока.
304: устройство виртуального уровня передает третье сообщение протокола OpenFlow, переносящее третью запись таблицы потока, в коммутатор OpenFlow.
Следует понимать, что каждая запись таблицы потока имеет поля в соответствии с разными типами протокола, и каждая запись таблицы потока имеет одинаковое количество полей, где данные, поданные в полях одного типа протокола, в разных записях таблицы потока могут быть одинаковыми или разными.
Устройство виртуального уровня может комбинировать вторую запись таблицы потока и первую запись таблицы потока в третью запись таблицы потока, используя различные подходы.
Так называемое, комбинирование множества записей таблицы потока, в основном, относится к комбинированию данных, заполненных в полях одного и того же типа протокола во множестве записей таблицы потока. Например, предположим, что вторая запись таблицы потока и вторая запись таблицы потока обе включают в себя: поле номера порта, поле IP-адреса источника, поле IP-адреса назначения, поле МАС-адреса назначения, поле идентификатора виртуальной локальной вычислительной сети, поле МАС-адреса источника, и поле протокола другого типа, устройство виртуального уровня может комбинировать поля данных, заполненные в полях номера порта второй записи таблицы потока и первой записи таблицы потока, комбинирует данные, заполненные в полях IP-адреса источника второй записи таблицы потока и первой записи таблицы потока, комбинирует данные, заполненные в полях МАС-адреса назначения второй записи таблицы потока и первой записи таблицы потока, комбинирует данные, заполненные в полях IP-адреса назначения первой записи таблицы потока и второй записи таблицы потока, комбинирует данные, заполненные в полях идентификатора виртуальной локальной вычислительной сети второй записи таблицы потока и первой записи таблицы потока, и/или комбинирует данные, заполненные в полях МАС-адреса источника первой записи таблицы потока и второй записи таблицы потока, и подход к комбинированию данных, заполненных в полях типа другого протокола, может быть выведен, соответственно.
В некоторых подходах к воплощению настоящего изобретения устройство виртуального уровня может детектировать каждое поле протокола того же типа во второй записи таблицы потока и первой записи таблицы потока, где, если данные, заполненные в полях протокола того же типа, во второй записи таблицы потока и в первой записи таблицы потока являются одинаковыми, одинаковыми заполненными данными заполнены поле протокола того же типа, в первой записи таблицы потока; или если данные поля, заполненные в полях протокола того же типа, во второй записи таблицы потока и в первой записи таблицы потока являются разными, разными заполненными данными заполняют поле протокола того же типа в третьей записи таблицы потока. Таким образом, в третьей записи таблицы потока, для данных заполненных в полях, которые являются данными протокола того же типа, во второй записи таблицы потока и в первой записи таблицы потока, и которые имеют одинаковые заполненные данные, только одна часть данных заполняет поле, соответствующее протоколу того же типа, в третьей записи таблицы потока. Что касается заполненных данных в полях, которые являются данными протокола того же типа, во второй записи таблицы потока и первой записи таблицы потока, и которые имеют разные заполненные данные, разными заполненными данными заполняют поле, соответствующее протоколу того же типа в третьей записи таблицы потока. Таким образом, можно воплотить, в определенной степени, что объем данных в третьей записи таблицы потока будет меньше, чем сумма объема данных второй записи таблицы потока и объема данных первой записи таблицы потока.
Например, как показано на фиг. 3-b и на фиг. 3-с, устройство виртуального уровня может детектировать каждое поле протокола того же типа во вторую запись таблицы потока и первую запись таблицы потока. Для одинаковых данных, заполняющих поля протокола того же типа во второй записи таблицы потока и первой записи таблицы потока, одинаковые данные заполняют поля (поля, значения которых составляют от А1 до An) протокола того же типа в первой записи таблицы потока. Для разных данных, заполняющих поля (поле, значение которого представляет В1, и поле, значение которого представляет собой В2, на фиг. 3-b и фиг. 3-с) одного типа протокола во второй записи таблицы потока и в первой записи таблицы потока, разными заполненными данными заполняют поле протокола того же типа, в третьей записи таблицы потока (как показано на фиг. 3-b). На фиг. 3-b и фиг. 3-с показаны примеры сценариев, в которых комбинируют три записи таблицы потока, и сценарий комбинирования большего количества записей в таблице потока может быть разделен на решения, где в каждом решении комбинируют две записи таблицы потока. Подход к комбинированию может быть выведен, в соответствии с представленным выше подходом.
Можно видеть, что в данном варианте осуществления, для первой записи таблицы потока, переносимой в сообщении протокола OpenFlow, передаваемом контроллером SDN в коммутатор OpenFlow, набор первого поля в первой записи таблицы потока переносит индекс фактического значения в наборе первого поля, вместо переноса фактического значения в наборе первого поля. При техническом воплощении объем данных индекса фактического значения области обычно меньше чем или даже гораздо меньше, чем фактическое значение поля. Поэтому, механизм вывода записи таблицы потока в данном варианте осуществления помогает уменьшить объем служебных данных в канале управления между контроллером SDN и коммутатором OpenFlow, уменьшая, таким образом, риск перегрузки в канале управления, также помогает уменьшить потребление сетевых ресурсов устройства коммутации, и помогает удовлетворять требованиям сложного взаимодействий сетей. Кроме того, устройство виртуального уровня между контроллером SDN и коммутатором OpenFlow может дополнительно комбинировать несколько записей таблицы потока. Таким образом, объем данных передаваемых записей таблицы потока дополнительно уменьшается.
Вариант осуществления настоящего изобретения дополнительно направлен на другой способ релейной передачи таблицы потока, который может включать в себя: принимают, с помощью устройства виртуального уровня, N2 сообщений протокола OpenFlow из N1 контроллеров SDN, где N2 сообщения протокола OpenFlow переносят N3 записи таблицы потока, N2 представляет собой положительное целое число, большее чем или равное N1, N1 представляет собой положительное целое число, и N3 представляет собой положительное целое число, большее, чем или равное N2, и большее, чем 1; комбинируют N3 записей таблицы потока в первую запись таблицы потока; и передают сообщение протокола OpenFlow, переносящее первую запись таблицы потока, в коммутатор OpenFlow.
Устройство виртуального уровня может комбинировать N3 записей таблицы потока в первую запись таблицы потока, используя различные выполнимые на практике подходы. Так называемое комбинирование множества записей таблицы потока, в основном, относится к комбинированию данных, которыми заполняют поля протокола того же типа во множестве записей таблицы потока. Например, предполагается, что N3 записей таблицы потока все включают в себя: поле номера порта, поле IP-адреса источника, поле IP-адреса назначения, поле МАС-адреса назначения, поле идентификатора виртуальной локальной вычислительной сети, поле МАС-адреса источника и поле протокола другого типа. Устройство виртуального уровня может комбинировать данные, заполняющие поля номера порта N3 записей таблицы потока, комбинировать данные, заполняющие поля IP-адреса источника N3 записей таблицы потока, комбинировать данные, заполняющие поля МАС-адреса назначения N3 записей таблицы потока, комбинировать данные, заполняющие поля IP-адреса назначения N3 записей таблицы потока, комбинировать данные, заполняющие поля идентификатора виртуальной локальной вычислительной сети N3 записей таблицы потока, и/или комбинировать данные, заполняющие поля МАС-адреса источника N3 записей таблицы потока, и подход к комбинированию данных, заполняющих поля протокола другого типа, может быть выведен, соответственно.
В некоторых подходах к воплощению настоящего изобретения устройство виртуального уровня может детектировать данные, заполняющие поля того же типа протокола, в N3 записях таблицы потока. Если данные, заполняющие поля протокола первого типа, в N3 записях таблицы потока, являются одинаковыми, данные, заполняющие поля протокола первого типа в любой записи таблицы потока из записей N3 таблицы потока заполняют поля протокола первого типа в первой записи таблицы потока. Если данные, заполняющие поля первого типа протокола, в N3 записях таблицы потока, не совсем одинаковы, данные, заполняющие поля первого типа протокола, в N3 записях таблицы потока, могут заполнять поле протокола первого типа в первой записи таблицы потока, где первый тип протокола представляет собой любой тип протокола в записи таблицы потока. На основе механизма комбинирования записей таблицы потока в таком примере, в первой записи таблицы потока, для данных, заполняющих поля, которые представляют собой одинаковый тип протокола, в N3 записях таблицы потока, и которые имеют одинаковые заполненные данные, только одна часть данных заполняет поля соответствующего того же типа протокола первой записи таблицы потока. Для данных (N3 частей заполненных данных в сумме), которые заполняют поля, которые представляют один и тот же тип протокола в N3 записях таблицы потока, и которые имеют заполняющие данные, которые не полностью являются одинаковыми, все данные заполняют поле соответствующего того же типа протокола в первой записи таблицы потока. Поэтому, в сумме N3 частей заполняющих данных заполняют поле протокола того же типа в первой записи таблицы потока (поскольку обратная дупликация не выполняется для N3 частей заполненных данных). Конечно, места размещения N3 частей заполняющих данных в поле протокола того же типа в первой записи таблицы потока могут быть согласованы по умолчанию или могут быть представлены и обозначены для удобства для коммутатора OpenFlow разделять первую запись таблицы потока.
В других подходах к воплощению настоящего изобретения устройство виртуального уровня может детектировать данные, заполняющие поля протокола того же типа, в N3 записях таблицы потока. Если данные, заполняющие поля любого протокола того же типа в N3 записях таблицы потока, являются одинаковыми, данные, заполняющие поля протокола любого типа в первой записи таблицы потока, равны данным, заполняющим поле протокола любого типа, в любой записи таблицы потока, для N3 записей таблицы потока. Если данные, заполняющие поля протокола того же типа, другого, чем поле протокола первого типа, являются одинаковыми, данные заполняющие поле любого того же типа протокола, кроме поля протокола первого типа, в первой записи таблицы потока, равны данным, заполняющим поле протокола любого другого типа, чем протокол первого типа, в любой записи таблицы потока для N3 записей таблицы потока. Данные, заполняющие поле типа первого протокола, в первой записи таблицы потока, представляют собой, по меньшей мере, две части заполняющих данных, полученных после обработки обратного дублирования, выполняемого для данных, заполняющих поля типа первого протокола, в N3 записях таблицы потока. Поле типа первого протокола представляет собой поле типа любого протокола, в записи таблицы потока. В частности, если данные, заполняющие поля типа первого протокола, в N3 записях таблицы потока, не являются полностью такими же, и данные, заполняющие поля типа второго протокола, в N3 записях таблицы потока, также не являются полностью такими же, устройство виртуального уровня также может не исполнять представленную выше операцию комбинирования N3 записей таблицы потока в первую запись таблицы потока, где поле типа первого протокола и поле типа второго протокола могут представлять собой поля любых двух типов протоколов в N3 записях таблицы потока.
Можно видеть, что, в данном варианте осуществления, для записи таблицы потока, переносимой в сообщении протокола OpenFlow, передаваемом контроллером SDN в коммутатор OpenFlow, набор поля в записи таблицы потока переносит индекс фактического значения набора поля, вместо переноса фактического значения набора поля. При техническом воплощении объем данных индекса фактического значения поля обычно меньше, чем или даже значительно меньше, чем фактическое значение поля. Поэтому, такой механизм помогает уменьшить количество служебных сигналов, передаваемых в канале управления между контроллером SDN и коммутатором OpenFlow, уменьшая, таким образом, риск перегрузки канала управления, также помогает уменьшить потребление сетевых ресурсов устройства коммутации, и помогает удовлетворить требование сложного сетевого взаимодействия. Кроме того, устройство виртуального уровня дополнительно комбинирует записи таблицы потока, передаваемые контроллером SDN, для получения новой записи таблицы потока, и передает, в коммутатор OpenFlow, сообщение протокола OpenFlow, переносящее новую запись таблицы потока, полученную в результате комбинирования, таким образом, что общий объем данных передаваемых записей таблицы потока дополнительно уменьшается, дополнительно уменьшая, таким образом, риск перегрузки в канале управления, дополнительно уменьшая потребление сетевых ресурсов устройства коммутации, и лучше удовлетворяя требованиям сложного сетевого взаимодействия.
Для лучшего понимания и воплощения представленных выше решений в вариантах осуществления настоящего изобретения, ниже представлено описание, используя некоторые конкретные примеры.
На фиг. 4 схематично представлена блок-схема последовательности операций способа синхронизации таблицы потока, в соответствии с другим вариантом осуществления настоящего изобретения. Как показано на фиг. 4, способ синхронизации таблицы потока, в соответствии с другим вариантом осуществления настоящего изобретения, может включать в себя следующее содержание.
401: контроллер SDN передает сообщение с запросом синхронизации таблицы потока (запрос свойства таблицы), в коммутатор OpenFlow для запроса выполнить синхронизацию таблицы потока.
Контроллер SDN может передавать, активно или будучи инициированным определенными инициирующими условиями (инициирующие условия могут представлять собой, например, инструкцию пользователя или перезапуск системы), сообщение запроса свойства таблицы в коммутатор OpenFlow для запроса выполнить синхронизацию таблицы потока.
402: коммутатор OpenFlow передает сообщение с ответом на синхронизацию таблицы потока (ответ свойства таблицы) в контроллер SDN.
Сообщение с ответом свойства таблицы может переносить все записи таблицы потока, содержащиеся в настоящее время в коммутаторе OpenFlow. В качестве альтернативы, сообщение ответа свойства таблицы может переносить запись таблицы потока, которая сохранена в коммутаторе OpenFlow, и которая была изменена, где запись таблицы потока, которая изменилась, относится к записи таблицы потока, которая изменилась по сравнению с записью таблицы потока, синхронизированной с контроллером SDN в предыдущий раз.
403: контроллер SDN принимает ответное сообщение свойства таблицы и обновляет, в соответствии с записью таблицы потока, переносимой в ответном сообщении свойства таблицы, базу данных таблицы потока, поддерживаемую контроллером SDN.
В некоторых вариантах осуществления настоящего изобретения, если запись таблицы потока, содержащаяся в коммутаторе OpenFlow, изменилась по определенным причинам, коммутатор OpenFlow может активно передавать в контроллер SDN, используя ответное сообщение свойства таблицы, запись таблицы потока, которая содержится в коммутаторе OpenFlow, и которая изменилась таким образом, что контроллер SDN обновляет, в соответствии с записью таблицы потока, принятой из коммутатора OpenFlow, базу данных таблицы потока, поддерживаемую контроллером SDN.
В некоторых подходах к воплощению настоящего изобретения, для той же записи таблицы потока, идентификаторы записи таблицы потока, которые находятся в коммутаторе OpenFlow и в контроллере SDN, и которые используются для идентификации записи таблицы потока, могут быть одинаковыми или могут иметь согласованную взаимосвязь отображения, и оба из коммутатора OpenFlow и контроллера SDN могут выводить, используя упомянутую взаимосвязь отображения, идентификатор записи таблицы потока одной и той же записи таблицы потока в устройстве однорангового конца.
В некоторых вариантах осуществления настоящего изобретения, если каждый раз, когда контроллер SDN локально делает резервную копию записи таблицы потока, передаваемую в коммутатор OpenFlow, операция синхронизации записи таблицы потока между контроллером SDN и коммутатором OpenFlow, описанная на этапе 401 - этапе 403, также не обязательна к выполнению.
Можно видеть, что на основе подхода к синхронизации таблицы потока между контроллером SDN и коммутатором OpenFlow, предложенными в данном варианте осуществления, воплощаются синхронизации таблицы потока между коммутатором OpenFlow и контроллером SDN,.
На фиг. 5 схематично представлена блок-схема последовательности операций другого способа администрирования таблицы потока, в соответствии с другим вариантом осуществления настоящего изобретения. Как показано на фиг. 5, другой способ администрирования таблицы потока, в соответствии с другим вариантом осуществления настоящего изобретения, может включать в себя следующее содержание.
501: коммутатор OpenFlow принимает пакет S1.
Пакет S1 может представлять собой UDP пакет или TCP пакет, или IP пакет, который инкапсулирован, используя другой протокол. Пакет S1 может иметь внешний IP, внутренний IP и идентификатор TEID, используемый для описания конечной точки туннеля. Конечно, пакет S1 может иметь другую структуру уровня.
502: коммутатор OpenFlow выполняет поиск таблицы потока для определения, существует ли запись таблицы потока, соответствующая пакету S1.
Если да, выполняется этап 503.
В противном случае, выполняется этап 504.
503: коммутатор OpenFlow обрабатывает пакет S1 на основе набора инструкций маршрутизации, передаваемого в поле Инструкций, в найденной записи таблицы потока, соответствующей пакету S1.
504: коммутатор OpenFlow передает сообщение packet_in, переносящее пакет S1 в контроллер SDN, для запроса контроллера SDN предоставить соответствующую запись таблицы потока.
Сообщение packet_in представляет собой сообщение протокола OpenFlow.
505: контроллер SDN принимает сообщение packet_in, переданное коммутатором OpenFlow, и может определить, в соответствии с заданной политикой обработки, набор инструкций маршрутизации, соответствующий пакету S1.
Набор инструкций маршрутизации пакета S1, который определен контроллером SDN, в соответствии с заданной политикой обработки, может включать в себя множество инструкций для обработки пакета S1. Например, набор инструкций маршрутизации включает в себя инструкцию, инструктирующую коммутатор OpenFlow перенаправлять пакет S1, на основе MAC, инструкцию, инструктирующую коммутатор OpenFlow устанавливать маршрут пакета S1, на основе IP, инструкцию, инструктирующую коммутатор OpenFlow выполнить инкапсуляцию туннеля GTP для пакета S1, инструкцию, инструктирующую коммутатор OpenFlow выполнить декапсуляцию туннеля GTP для пакета S1, и т.п.
506: контроллер SDN генерирует первую запись таблицы потока и передает, в коммутатор OpenFlow, сообщение flow_mod, которое используется для ответа на сообщение packet_in, и которое переносит первую запись таблицы потока.
Сообщение flow_mod представляет собой сообщение протокола OpenFlow.
Набор первого поля в первой записи таблицы потока переносит индекс фактического значения в наборе первого поля, набор первого поля включает в себя N полей, и N представляет собой положительное целое число. Поле инструкций для первой записи таблицы потока может представлять собой одно поле в наборе первого поля, и, конечно, поле инструкций также может не принадлежать набору первого поля. Например, поле инструкций для инструкций первой записи таблицы потока переносит набор инструкций маршрутизации или индекс набора инструкций маршрутизации (где индекс может, например, представлять собой идентификатор записи таблицы потока для записи таблицы потока, содержащейся в коммутаторе OpenFlow).
N в вариантах осуществления настоящего изобретения может, например, быть равным 1, 2, 5, 8, 10 или другому значению.
Поля N, включенные в набор первого поля, могут представлять собой любые N полей в первой записи таблицы потока. Например, N полей могут включать в себя одно или больше из следующих полей: поле протокола, поле IP-адреса источника, поле IP-адреса назначения, поле МАС-адреса назначения, поле МАС-адреса источника, поле номера порта, поле идентификатора виртуальной локальной вычислительной сети и т.п.
В некоторых подходах к воплощению настоящего изобретения индекс может представлять собой идентификатор записи таблицы потока для записи таблицы потока, уже сохраненной в коммутаторе OpenFlow. Таким образом, индекс, переносимый в любом поле в наборе первого поля, в первую запись таблицы потока, переносимую в сообщении flow_mod, может представлять собой идентификатор записи таблицы потока для записи таблицы потока, содержащейся в коммутаторе OpenFlow. Можно понимать, что, если N больше 1, индексы, переносимые в полях, в наборе первого поля, могут быть полностью одинаковыми, частично одинаковыми или абсолютно разными.
507: После приема сообщения flow_mod коммутатор OpenFlow получает фактическое значение набора первого поля на основе индекса набора первого поля, и заполняет полученное фактическое значение набора первого поля в наборе первого поля в первой записи таблицы потока; и коммутатор OpenFlow содержит первую запись таблицы потока, в которой фактическое значение заполнено в наборе первого поля.
Коммутатор OpenFlow заполняет фактические значения для полей, которые находятся в первой записи таблицы потока, переносимой в сообщении flow_mod, и которые не заполнены фактическими значениями, и коммутатор OpenFlow сохраняет первую таблицу потока, в которой фактические значения были заполнены во всех полях, которые не заполнены фактическими значениями.
Предположим, что индекс, переносимый в наборе первого поля, представляет собой идентификатор записи таблицы потока, коммутатор OpenFlow может получать, на основе идентификатора записи таблицы потока, фактическое значение, заполняющее набор третьего поля, которое находится в записи таблицы потока, представленной идентификатором записи таблицы потока, и которое имеет тот же тип протокола, что и в наборе первого поля, где поля, которые находятся в наборе третьего поля и в наборе первого поля, и которые имеют тот же тип протокола, имеют одинаковое фактическое значение.
508: коммутатор OpenFlow обрабатывает первый пакет S1 на основе набора инструкций маршрутизации, который переносится в поле инструкций первой записи таблицы потока, и который используется для обработки пакета S1.
Можно видеть, что в данном варианте осуществления, для первой записи таблицы потока, переносимой в сообщении flow_mod, переданном контроллером SDN в коммутатор OpenFlow, набор первого поля в первой записи таблицы потока переносит индекс фактического значения в наборе первого поля, вместо переноса фактического значения в наборе первого поля. При техническом воплощении объем данных индекса фактического значения поля обычно меньше чем или даже гораздо меньше, чем фактическое значение поля. Поэтому, механизм, предусмотренный в данном варианте осуществления, помогает уменьшить объем служебных сигналов в канале управления между контроллером SDN и коммутатором OpenFlow, уменьшая, таким образом риск перегрузки в канале управления, и помогает уменьшить потребление вычислительных ресурсов коммутатора OpenFlow.
Как показано на фиг. 6, на фиг. 6 схематично представлена блок-схема последовательности операций другого способа администрирования таблицей потока, в соответствии с другим вариантом осуществления настоящего изобретения. Как показано на фиг. 6, другой способ администрирования таблицей потока, в соответствии с другим вариантом осуществления настоящего изобретения, может включать в себя следующее содержание.
601: коммутатор OpenFlow принимает K1 пакетов.
K1 представляет собой положительное целое число, большее 1. Пакеты K1 могут представлять собой пакеты UDP или пакеты TCP, или пакеты IP, инкапсулированные, используя другой протокол, и некоторые или все из K1 пакетов могут иметь внешние IP, внутренние IP и идентификатор TEID, используемый для описания конечной точки в туннеле. Конечно, некоторые или все из K1 пакетов могут иметь другую структуру уровня.
K1 пакетов могут быть приняты коммутатором OpenFlow в пределах требуемого времени, и требуемое время может представлять собой одну секунду, две секунды, пять секунд или другое время.
602: коммутатор OpenFlow выполняет поиск в таблице потока для определения, существует ли запись таблицы потока, соответствующая каждому из K1 пакетов.
В данном варианте осуществления предполагается, что коммутатор OpenFlow находит, что запись таблицы потока, соответствующая каждому из K2 пакетов среди K1 пакетов, существует в таблице потока, но коммутатор OpenFlow не находит запись таблицы потока, соответствующую каждому из K3 пакетов среди K1 пакетов в таблице потока.
K1=K2+K3, где предполагается, что K2 представляет собой положительное целое число, и K3 представляет собой положительное целое число большее 1.
603: коммутатор OpenFlow обрабатывает каждый пакет на основе набора инструкций маршрутизации, переносимого в поле инструкций в найденной записи таблицы потока, соответствующей каждому из K2 пакетов.
604: коммутатор OpenFlow передает сообщение packet_jn, переносящее K3 пакетов в контроллер SDN для запроса контроллера SDN предоставить соответствующую запись таблицы потока.
Сообщение packet_in представляет собой сообщение протокола OpenFlow.
605: контроллер SDN принимает сообщение packet_in, переданное коммутатором OpenFlow, и может определять, в соответствии с заданной политикой обработки, набор инструкций маршрутизации, соответствующий каждому из K3 пакетов.
Набор инструкций маршрутизации каждого из K3 пакетов, который определен контроллером SDN, в соответствии с заданной политикой обработки, может включать в себя множество инструкций для обработки пакетов. Наборы инструкций маршрутизации, которые определены контроллером SDN и которые соответствуют некоторым или всем пакетам K3, могут быть одинаковыми. Конечно, наборы инструкций маршрутизации, которые определены коньроллером SDN и которые соответствуют всем пакетам K3, могут быть разными.
606: контроллер SDN генерирует K4 записи таблицы потока, и передает в коммутатор OpenFlow сообщение flow_mod, которое используется для ответа на сообщение packet_jn и которое переносит K4 записей таблицы потока.
Сообщение flow_mod представляет собой сообщение протокола OpenFlow.
Набор первого поля для первой записи таблицы потока в K4 записях таблицы потока переносит индекс фактического значения в наборе первого поля, набор первого поля может включать в себя N полей, и N представляет собой положительное целое число. Поле инструкций первой записи таблицы потока может представлять собой одно поле в наборе первого поля, и, конечно, поле инструкций также, может не принадлежать набору первого поля. Например, поле инструкций первой записи таблицы потока переносит набор инструкций маршрутизации, или индекс набора инструкций маршрутизации (индекс может представлять собой, например, идентификатор записи таблицы потока для записи таблицы потока, уже сохраненной в коммутаторе OpenFlow).
N в данном варианте осуществления настоящего изобретения может, например, быть равным 1, 2, 5, 8, 10 или другому значению.
Первая запись таблицы потока может представлять собой любую запись таблицы потока среди K4 записей таблицы потока. N полей, включенных в набор первого поля, могут представлять собой любые N полей в первой записи таблицы потока. Например, N полей могут включать в себя одно или больше из следующих полей: поле протокола, поле IP-адреса источника, поле IP-адреса назначения, поле МАС-адреса назначения, поле МАС-адреса источника, поле номера порта, поле идентификатора виртуальной локальной вычислительной сети и т.п.
В некоторых подходах к воплощению настоящего изобретения индекс может представлять собой идентификатор записи таблицы потока для записи таблицы потока, уже сохраненной в коммутаторе OpenFlow. Таким образом, индекс, переносимый в любом поле в наборе первого поля, в первой записи таблицы потока, переносимой в сообщении flow_mod, может представлять собой идентификатор записи таблицы потока для записи таблицы потока, содержащейся в коммутаторе OpenFlow. Следует понимать, что, если N больше, чем 1, индексы, переносимые в полях в наборе первого поля, могут быть полностью одинаковыми, частично одинаковыми или абсолютно разными.
Следует понимать, что набор первого поля, по меньшей мере, одной записи таблицы потока, включающий в себя первую запись таблицы потока для K4 записей таблицы потока, может переносить индекс фактического значения в наборе первого поля для уменьшения объема данных в K4 записях таблицы потока, переносимых в сообщении flow_mod.
607: После приема коммутатором OpenFlow сообщения flow_mod, коммутатор OpenFlow может заполнять фактические значения в полях, которые находятся в K4 записях таблицы потока, переносимых в сообщении flow_mod и которые не заполнены фактическими значениями, и коммутатор OpenFlow сохраняет K4 записей таблицы потока, в которых фактические значения заполнены во всех полях.
Предположим, что индекс, переносимый в наборе первого поля, представляет собой идентификатор записи таблицы потока, коммутатор OpenFlow может получать, на основе идентификатора записи таблицы потока, фактическое значение, заполняющее набор третьего поля, который находится в записи таблицы потока, представленной идентификатором записи таблицы потока, и который имеет тот же тип протокола, что и набор первого поля, где поля, которые находятся в наборе третьего поля и в наборе первого поля, и которые имеют одинаковый тип протокола, имеют одинаковое фактическое значение.
608: коммутатор OpenFlow обрабатывает каждый пакет на основе набора инструкций маршрутизации, который соответствует каждому из K3 пакетов, и который переносится в поле инструкций, в записи таблицы потока.
Можно видеть, что в данном варианте осуществления, для K4 записей таблицы потока, переносимых в сообщении flow_mod, передаваемом контроллером SDN в коммутатор OpenFlow, набор первого поля в, по меньшей мере, одной записи таблицы потока среди K4 записей таблицы потока переносит индекс фактического значения в наборе первого поля, вместо переноса фактического значения в наборе первого поля. В техническом воплощении объем данных индекса фактического значения поля обычно меньше чем или даже гораздо меньше, чем у фактического значения поля. Поэтому, механизм, предусмотренный в данном варианте осуществления, помогает уменьшить объем передаваемых служебных в канале управления между контроллером SDN и коммутатором OpenFlow, уменьшая, таким образом, риск перегрузки канала управления, и также помогает уменьшить потребление вычислительных ресурсов коммутатора OpenFlow.
На фиг. 7 схематично показана блок-схема последовательности операций другого способа администрирования таблицей потока, в соответствии с другим вариантом осуществления настоящего изобретения. Как показано на фиг. 7, другой способ администрирования таблицей потока, в соответствии с другим вариантом осуществления настоящего изобретения, может включать в себя следующее содержание.
701: коммутатор OpenFlow принимает пакет S1 и пакет S2.
Пакет S1 и пакет S2 могут представлять собой пакеты UDP или пакеты TCP, или пакеты IP, инкапсулированные, используя другой протокол. Пакет S1 и пакет S2 могут иметь внешние IP, внутренние IP и идентификатор TEID, используемый для описания конечной точки туннеля. Конечно, пакет S1 и пакет S2 могут иметь разную структуру уровня.
Пакеты K1 могут быть приняты коммутатором OpenFlow в пределах требуемого времени, и требуемое время может представлять собой одну секунду, две секунды, пять секунд или другое время.
702: коммутатор OpenFlow может выполнять поиск в таблице потока для определения, существуют ли соответствие записей в таблице потока пакету S1 и пакету S2.
В данном варианте осуществления предполагается, что коммутатор OpenFlow не находит запись в таблице потока, соответствующую пакету S1 в таблице потока, и коммутатор OpenFlow также не находит запись в таблице потока, соответствующую пакету S2 в таблице потока.
703: коммутатор OpenFlow передает сообщение m1 packet_in, переносящее пакет S1 в первый контроллер SDN, для запроса контроллера SDN предоставить соответствующую запись таблицы потока, и коммутатор OpenFlow передает сообщение m2 packet_in, переносящее пакет S2 во второй контроллер SDN, для запроса контроллера SDN предоставить соответствующую запись таблицы потока.
Сообщение m1 packet_in и сообщение m2 packet_in представляют собой сообщения протокола OpenFlow.
704: устройство виртуального уровня принимает сообщение m1 packet_in и сообщение m2 packet_in, и перенаправляет сообщение m1packet_in в первый контроллер SDN; и устройство виртуального уровня перенаправляет сообщение m2 packet_in во второй контроллер SDN.
705: первый контроллер SDN принимает сообщение m1packet_in, и определяет, в соответствии с заданной политикой обработки, набор инструкций маршрутизации, соответствующий пакету S1.
Набор инструкций маршрутизации пакета S1, который определяется первым контроллером SDN, в соответствии с заданной политикой обработки, может включать в себя множество инструкций для обработки пакета S1. Например, набор инструкций маршрутизации включает в себя инструкцию, инструктирующую коммутатор OpenFlow перенаправить пакет S1 на основе MAC, инструкцию, инструктирующую коммутатор OpenFlow перенаправить пакет S1, на основе IP, инструкцию, инструктирующую коммутатор OpenFlow выполнить инкапсуляцию туннеля GTP для пакета S1, инструкцию, инструктирующую коммутатор OpenFlow выполнить декапсуляцию туннеля GTP для пакета S1, и т.п.
706: первый контроллер SDN генерирует запись x1 таблицы потока, и передает, в коммутатор OpenFlow сообщение mf1 flow_mod, которое используется для ответа на сообщение m1 packet_in и переносит запись x1 таблицы потока.
Сообщение mf1 flow_mod представляет собой сообщение протокола OpenFlow.
Набор c1 поля записи x1 потока таблицы переносит индекс фактического значения набора c1 поля, где набор c1 поля включает в себя Nn1 поля, и Nn1 представляет собой положительное целое число. Поле инструкций записи x1 таблицы потока может представлять собой одно поле в наборе c1 поля. Конечно, поле инструкций также может не принадлежать набору c1 поля. Например, поле инструкций для записи x1 таблицы потока переносит набор инструкций маршрутизации или индекс набора инструкций маршрутизации (где индекс может, например, представлять собой идентификатор записи таблицы потока для записи таблицы потока, содержащейся в коммутаторе OpenFlow).
Nn1 в данном варианте осуществления настоящего изобретения может быть равным, например, 1, 2, 5, 8, 10, или другому значению.
Nn1 полей, включенных в набор c1 поля, могут представлять собой любые Nn1 полей в записи x1 таблицы потока. Например, Nn1 полей могут включать в себя одно или больше из следующих полей: поле протокола, поле IP-адреса источника, поле IP-адреса назначения, поле МАС-адреса назначения, поле МАС-адреса источника, поле номера порта, поле идентификатора виртуальной локальной вычислительной сети и т.п.
В некоторых подходах к вариантам осуществления настоящего изобретения индекс может представлять собой идентификатор записи таблицы потока для записи таблицы потока, сохраненной в коммутаторе OpenFlow. Таким образом, индекс, переносимый в любом поле, в наборе c1 поля, в записи x1 таблицы потока, переносимый в сообщении flow_mod, может представлять собой идентификатор записи таблицы потока для записи, таблицы потока, сохраненной в коммутаторе OpenFlow. Должно быть понятно, что, например, если Nn1 больше, чем 1, индекс, переносимый в полях, в наборе c1 поля, может быть полностью таким же, частично таким же или абсолютно другим.
707: второй контроллер SDN принимает сообщение m2 packet_in и определяет набор инструкций маршрутизации пакета S2, в соответствии с заданной политикой обработки.
Набор инструкций маршрутизации пакета S2, который определяется вторым контроллером SDN, в соответствии с заданной политикой обработки, может включать в себя множество инструкций для обработки пакета S2. Например, набор инструкций маршрутизации включает в себя инструкцию, инструктирующую коммутатор OpenFlow передать пакет S2, на основе на MAC, инструкцию, инструктирующую коммутатор OpenFlow направить пакет S2, на основе IP, инструкцию, инструктирующую коммутатор OpenFlow выполнить инкапсуляцию туннеля GTP для пакета S2, инструкцию, инструктирующую коммутатор OpenFlow выполнить декапсуляцию туннеля GTP для пакета S2, и т.п.
708: второй контроллер SDN генерирует запись х2 таблицы потока, и передает в коммутатор OpenFlow сообщение mf2 flow_mod, которое используется для ответа на сообщение m2 packet_in и которое переносит запись х2 таблицы потока.
Сообщение mf2 flow_mod представляет собой сообщение протокола OpenFlow.
Набор с2 поля в записи х2 таблицы потока переносит индекс с фактическим значением набора с2 поля, где набор с2 поля включает в себя Nn2 поля, и Nn2 представляет собой положительное целое число. Поле инструкций записи х2 таблицы потока может представлять собой одно поле в наборе с2 поля. Конечно, поле инструкций может не принадлежать набору с2 поля. Например, поле инструкций в записи х2 таблицы потока переносит набор инструкций маршрутизации или индекс набора инструкций маршрутизации (индекс может представлять собой, например, идентификатор записи таблицы потока для записи таблицы потока, содержащейся в коммутаторе OpenFlow).
Nn2 в данном варианте осуществления настоящего изобретения может быть равным, например, 1, 2, 5, 8, 10 или другому значению.
Nn2 полей, включенных в набор с2 поля, могут представлять собой любые Nn2 полей в записи х2 таблицы потока. Например, Nn2 полей могут включать в себя одно или больше следующих полей: поле протокола, поле IP-адреса источника, поле IP-адреса назначения, поле МАС-адреса назначения, поле МАС-адреса источника, поле номера порта, поле идентификатора виртуальной локальной вычислительно й сети и т.п.
В некоторых подходах к воплощению настоящего изобретения индекс может представлять собой идентификатор записи таблицы потока для записи таблицы потока, содержащейся в коммутаторе OpenFlow. Таким образом, индекс, переносимый в любом поле в наборе с2 полей, в записи х2 таблицы потока, переносимой в сообщении flow_mod, может представлять собой идентификатор записи таблицы потока для записи таблицы потока, содержащейся в коммутаторе OpenFlow. Следует понимать, что, например, если Nn2 больше, чем 1, индексы, переносимые в полях, в наборе с2 поля, могут быть полностью такими же, частично такими же или абсолютно другими.
709: устройство виртуального уровня принимает сообщение mf1 flow_mod и сообщение mf2 flow_mod, и комбинирует запись x1 таблицы потока, переносимую в сообщении mf1 flow_mod, и запись х2 таблицы потока, переносимую в сообщении mf2 flow_mod, для получения записи х3 таблицы потока.
В некоторых подходах к воплощению настоящего изобретения может выполняться комбинирование различных типов подходов к записи x1 таблицы потока и записи х2 таблицы потока в записи х3 таблицы потока. Например, устройство виртуального уровня может детектировать данные, заполненные в полях каждого того же типа протокола, в записи x1 таблицы потока и записи х2 таблицы потока. Если данные, заполняющие поля того же типа протокола в записи x1 таблицы потока и в записи х2 таблицы потока являются одинаковыми, одной частью тех же данных заполнения заполняют поле того же типа протокола в записи х3 таблицы потока. Если данные, заполняющие поля того же типа протокола, в записи x1 таблицы потока и записи х2 таблицы потока различные, этими различными данными заполнения заполняют поле, соответствующее тому же типу протокола в записи х3 таблицы потока (например, как показано в примере на фиг. 7-с).
Например, со ссылкой на фиг. 3-b и фиг. 3-c, на фиг. 3-b показан пример сценария, в котором две записи таблицы потока комбинируют в одну запись таблицы потока. На фиг. 3-c показан пример сценария, в котором три записи таблицы потока комбинируют в одну запись таблицы потока. Сценарий, в котором комбинируют большее количество записей таблицы потока, может быть выведен, соответственно.
710: устройство виртуального уровня передает сообщение mf3 flow_mod, переносящее запись х3 таблицы потока в коммутатор OpenFlow.
711: После приема представленного выше сообщения mf3 flow_mod коммутатор OpenFlow разделяет запись х2 таблицы потока на множество записей таблицы потока (каждое поле каждой записи таблицы потока, полученной в результате разделения, имеет только фактическое значение или индекс фактического значения), коммутатор OpenFlow заполняет фактические значения (фактические значения могут быть получены, в соответствии с соответствующими индексами) в полях, которые не заполнены фактическими значениями во множестве записей таблицы потока, полученных в результате разделения, и коммутатор OpenFlow сохраняет множество записей таблицы потока, полученных после заполнения фактическими значениями всех полей.
712: коммутатор OpenFlow обрабатывает пакет S1 на основе набора инструкций маршрутизации, переносимый в поле инструкций в записи таблицы потока, соответствующей пакету S1, и, аналогично, коммутатор OpenFlow обрабатывает пакет S2 на основе набора инструкций маршрутизации, переносимого в поле инструкций в записи таблицы потока, соответствующей пакету S2.
Можно видеть, что, в данном варианте осуществления, для K4 записей таблицы потока, переносимых в сообщении flow_mod, передаваемом контроллером SDN в коммутатор OpenFlow, первый набор поля, по меньшей мере, в одной записи таблицы потока среди K4 записей таблицы потока переносит индекс фактического значения в наборе первого поля, вместо переноса фактического значения в наборе первого поля. При техническом воплощении объем данных индекса фактического значения поля обычно меньше чем или даже гораздо меньше, чем объем данных фактического значения поля. Поэтому, механизм, предусмотренный в данном варианте осуществления, помогает уменьшить передачу служебных сигналов канала управления между контроллером SDN и коммутатором OpenFlow, уменьшая, таким образом, риск перегрузки канала управления, и также помогает уменьшить потребление вычислительных ресурсов коммутатора OpenFlow.
Со ссылкой на фиг. 8-а, вариант осуществления настоящего изобретения дополнительно направлен на контроллер 800 программно-определенной сети, который может включать в себя модуль 810 генерирования и модуль 820 передачи.
Модуль 810 генерирования выполнен с возможностью генерировать первую запись таблицы потока, где набор первого поля в первой записи таблицы потока включает в себя индекс фактического значения в наборе первого поля, набор первого поля включает в себя N полей, и N представляет собой положительное целое число.
Модуль 810 генерирования может генерировать запись первой таблицы потока на основе заданной политики, и модуль 810 генерирования может генерировать первую запись таблицы потока при получении инструкции пользователя или при получении инициатора от коммутатора OpenFlow. Конечно, модуль 810 генерирования может генерировать одну или больше записей таблицы потока при получении инициатора, в соответствии с другим условием.
Модуль 820 передачи выполнен с возможностью передачи сообщения протокола OpenFlow в коммутатор OpenFlow, где сообщение протокола OpenFlow переносит первую запись таблицы потока.
Сообщение протокола OpenFlow, которое переносит первую запись таблицы потока, может представлять собой, например, сообщение flow_mod или другое сообщение протокола OpenFlow.
В некоторых вариантах осуществления настоящего изобретения индекс представляет собой идентификатор записи таблицы потока для записи таблицы потока, сохраненной в коммутаторе.
Следует понимать, что первая запись таблицы потока может иметь структуру данных, которая является такой же, как и стандартная запись таблицы потока. Например, тип поля протокола, включенного в первую запись таблицы потока, и взаимосвязи местоположения между любым типом полей протокола в первой записи таблицы потока, могут быть такими же, как и в стандартной записи таблицы потока. Однако, тип информации, переносимой в некоторых или всех полях протокола, в первой записи таблицы потока, отличается от стандартной записи таблицы потока. В частности, поле в наборе первого поля в первой записи таблицы потока переносит индекс фактического значения поля, в то время как каждое поле в стандартной записи таблицы потока переносит фактическое значение поля.
N в вариантах осуществления настоящего изобретения может быть, например, равным 1, 2, 5, 8, 10, или другому значению.
N полей, включенных в набор первого поля, могут представлять собой любые N полей в первой записи таблицы потока. N полей, включенные в набор первого поля, могут представлять собой соседние N полей, частично соседние N полей или не соседние N полей в первой записи таблицы потока, то есть места расположения, где могут быть размещены поля в наборе первого поля в первой записи таблицы потока, что помогает более гибко удовлетворять гибким требованиях различных фактических сценариев применения. N полей, например, могут включать в себя, по меньшей мере, одно из следующих полей: поле номера порта, поле IP-адреса источника, поле IP-адреса назначения, поле МАС-адреса назначения, поле идентификатора виртуальной локальной вычислительной сети, поле МАС-адреса источника и т.п. Фактическое значение поля в наборе первого поля представляет стандартное значение, которое должно переносить поле. Например, фактическое значение поля номера порта представляет собой номер порта, фактическое значение поля IP-адреса источника представляет собой IP-адрес источника, фактическое значение поля IP-адреса назначения представляет собой IP-адрес назначения, фактическое значение поля МАС-адреса назначения представляет собой МАС-адрес назначения, фактическое значение поля идентификатора виртуальной локальной вычислительной сети представляет собой идентификатор виртуальной локальной вычислительной сети, фактическое значение поля МАС-адреса источника представляет собой МАС-адрес источника, и фактическое значение другого поля выводят, соответственно. В данном варианте осуществления настоящего изобретения поле в наборе первого поля первой записи таблицы потока, предоставляемой контроллером SDN 800, не переносит фактическое значение поля, но, вместо этого, переносит индекс фактического значения поля, где индекс представляет собой информацию, используя которую можно индексировать фактическое значение поля. Предположим, что набор первого поля включает в себя поле номера порта, поле номера порта не переносит номер порта, но, вместо этого, переносит индекс, используя который можно индексировать номер порта. В качестве другого примера, набор первого поля включает в себя поле IP-адреса источника, и поле IP-адреса источника не переносит IP-адрес источника, но, вместо этого, переносит индекс, используя который может быть индексирован IP-адрес источника. В качестве другого примера, набор первого поля включает в себя поле IP-адреса назначения, и поле IP-адреса назначения не переносит IP-адрес назначения, но, вместо этого, переносит индекс, используя который можно индексировать IP-адрес назначения. В качестве другого примера первый набор поля включает в себя поле идентификатора виртуальной локальной вычислительной сети, и поле идентификатора виртуальной локальной вычислительной сети не переносит идентификатор виртуальной локальной вычислительной сети, но, вместо этого, переносит индекс, используя который можно индексировать идентификатор виртуальной локальной вычислительной сети. В качестве другого примера, набор первого поля включает в себя поле МАС-адреса назначения, и поле МАС-адреса назначения не переносит МАС-адрес назначения, но, вместо этого, переносит индекс, используя который можно индексировать МАС-адрес назначения. В качестве другого примера, набор первого поля включает в себя поле МАС-адреса источника, и поле МАС-адреса источника не переносит МАС-адрес источника, но, вместо этого, переносит индекс, используя который может быть индексирован МАС-адрес источника. Если набор первого поля дополнительно включает в себя поле другого протокола, соответствующий случай выводят, соответствующим образом.
Можно понимать, что индекс фактического значения может иметь различные типы, и требование может удовлетворяться до тех пор, пока коммутатор OpenFlow может получать фактическое значение, в соответствии с индексом фактического значения. В некоторых подходах к воплощению настоящего изобретения индекс фактического значения может представлять собой, например, идентификатор записи таблицы потока для записи таблицы потока, уже сохраненной в коммутаторе OpenFlow, то есть, индекс, переносимый в любом поле, в наборе первого поля, в первой записи таблицы потока, переносимой в сообщении протокола OpenFlow, может представлять собой идентификатор записи таблицы потока для записи таблицы потока, содержащейся в коммутаторе OpenFlow. Следует понимать, что, если N больше 1, индексы, переносимые в полях, в наборе первого поля, могут быть полностью такими же, частично такими же или абсолютно различными (например, индексы, переносимые в полях в наборе первого поля, могут, в частности, представлять собой тот же идентификатор записи таблицы потока). Можно подразумевать, что, если индекс фактического значения поля представляет собой идентификатор записи таблицы потока для записи таблицы потока, уже сохраненной в коммутаторе OpenFlow, не только подход к индексации фактического значения поля коммутатором OpenFlow может быть существенно упрощен, но также и эффективность индексации до фактического значения поля коммутатором OpenFlow может быть улучшена. Кроме того, идентификатор записи таблицы потока обычно имеет относительно малый объем данных, что помогает контроллеру 800 SDN относительно по желанию управлять объемом данных предоставляемой первой записи таблицы потока.
В некоторых подходах к воплощению настоящего изобретения каждое поле во втором наборе поля первой записи таблицы потока может дополнительно переносить множество фактических значений поля. Второй набор поля включает в себя М полей, и М представляет собой положительное целое число. Примеры фактических значений полей описаны выше. Можно подразумевать, что, поскольку каждое поле в наборе второго поля может дополнительно переносить множество фактических значений поля, это эквивалентно обозначает, что первая запись таблицы потока может быть разделена на множество записей таблицы потока, что также помогает контроллеру 800 SDN относительно по желанию управлять объемом данных, предоставляемым первой записью таблицы потока. Например, набор второго поля в первой записи таблицы потока включает в себя поле МАС-адреса назначения, и поле МАС-адреса назначения переносит три МАС-адреса назначения (например, информация, переносимая в поле МАС-адреса назначения, представляет собой следующую: 192.168.0.2, 192.168.0.3 и 192.168.0.4, или информация, переносимая в поле МАС-адреса назначения, представляет собой следующую: 192.168.0.2 - 192.168.0.4, и два подхода в представленных выше примерах оба могут представлять, что поле МАС-адреса назначения переносит три МАС-адреса назначения; определенно, можно представить в другом подходе, что поле МАС-адреса назначения переносит три МАС-адреса). В этом сценарии коммутатор OpenFlow может разделять первую запись таблицы потока на четыре записи таблицы потока. Поля МАС-адреса назначения трех записей таблицы потока, соответственно, переносят разный один из представленных выше трех МАС-адресов назначения, и другие поля из трех записей таблицы потока являются одинаковыми. Конечно, если другое поле из трех записей таблицы потока также переносит множество фактических значений, эти три записи таблицы потока могут, соответственно, быть разделены, в соответствии с аналогичным подходом. Например, поле идентификатора виртуальной локальной вычислительной сети из трех записей таблицы потока, которые получают в результате деления, переносит два идентификатора виртуальной локальной вычислительной сети, каждая запись таблицы потока из трех записей таблицы потока может быть дополнительно разделена на две записи таблицы потока. Конкретный подход к разделению может быть представлен на фиг. 1-i и на фиг. 1-j. Разделение может останавливаться только, когда каждое поле, полученной записи таблицы потока переносит только одно фактическое значение или индекс одного фактического значения поля.
М в вариантах осуществления настоящего изобретения может быть, например, равным 1, 2, 5, 8, 10, или другому значению.
М полей, включенных в набор второго поля, в первой записи таблицы потока, могут представлять собой любые М полей, которые находятся в первой записи таблицы потока и которые отличаются от любого другого поля в наборе первого поля. М полей, включенных в набор второго поля, могут представлять собой соседние М полей, частично соседние М полей или не соседние М полей в первой записи таблицы потока. Эти М полей могут включать в себя, например, по меньшей мере, одно из следующих полей: поле номера порта, поле IP-адреса источника, поле IP-адреса назначения, поле МАС-адреса назначения, поле идентификатора виртуальной локальной вычислительной сети, поле МАС-адреса источника, поле протокола и т.п.
Пересечение набора второго поля и первого набора поля представляет собой пустой набор.
Как показано на фиг. 8-b, в некоторых вариантах осуществления настоящего изобретения контроллер SDN дополнительно включает в себя модуль 830 приема, выполненный с возможностью: перед тем, как модуль 810 генерирования сгенерирует первую запись таблицы потока, принимать первый пакет или заголовок пакета первого пакета из коммутатора, и определять, в соответствии с заданной политикой обработки, набор инструкций маршрутизации, используемый для обработки первого пакета, где поле инструкций первой записи таблицы потока переносит набор инструкций маршрутизации или индекс набора инструкций маршрутизации.
Например, прием первого пакета или пакета первого пакета из коммутатора OpenFlow может, например, включать в себя: принимают сообщение протокола OpenFlow (сообщение протокола OpenFlow представляет собой, например, сообщение packet_in (packet_in) или другое сообщение протокола OpenFlow), переносящее первый пакет или заголовок пакета первого пакета из коммутатора OpenFlow. Конечно, сообщение протокола OpenFlow может дополнительно переносить один или больше других пакетов или заголовков пакетов. Конечно, сообщение протокола OpenFlow может дополнительно переносить другую информацию.
В некоторых подходах к воплощению настоящего изобретения, для той же записи таблицы потока, идентификаторы записи таблицы потока, которые находятся в коммутаторе OpenFlow и в контроллере 800 SDN, и которые используются для идентификации той же записи таблицы потока, могут быть такими же или могут иметь согласованную взаимосвязь отображения. Если идентификаторы записи таблицы потока, которые имеют установленную взаимосвязь отображения, используются в коммутаторе OpenFlow и в контроллере 800 SDN для идентификации той же записи таблицы потока, коммутатор OpenFlow и контроллер SDN 800 оба могут выводить, используя установленную взаимосвязь отображения, идентификатор записи таблицы потока той же записи таблицы потока в устройстве одноуровневого конца.
Следует понимать, что функции функциональных модулей контроллера 800 SDN в данном варианте осуществления могут быть, в частности, воплощены в соответствии со способом в представленном выше варианте осуществления способа. Конкретную обработку воплощения функций можно найти по ссылке на соответствующее описание представленного выше варианта осуществления способа, и его детали не будут здесь больше описаны.
Можно видеть, что, в решении данного варианта осуществления, для первой записи таблицы потока, переносимой в сообщении протокола OpenFlow, передаваемом контроллером 800 SDN в коммутатор OpenFlow, набор первого поля в первой записи таблицы потока переносит индекс фактического значения в наборе первого поля, вместо переноса фактического значения в наборе первого поля. При техническом воплощении объем данных индекса фактического значения поля обычно меньше, чем или даже гораздо меньше, чем фактическое значение поля. Поэтому, механизм доставки записи таблицы потока в данном варианте осуществления помогает уменьшить объем служебных сигналов в канале управления между контроллером 800 SDN и коммутатором OpenFlow, уменьшая, таким образом, риск перегрузки канала управления, и также помогает уменьшить потребление сетевых ресурсов устройством коммутации, и помогает удовлетворять требованиям сложного сетевого взаимодействия.
На фиг. 9-а представлен вариант осуществления настоящего изобретения, который дополнительно предусматривает коммутатор 900 OpenFlow, который может включать в себя: модуль 910 приема, модуль 920 получения и модуль 930 замены.
Модуль 910 приема выполнен с возможностью приема сообщения протокола OpenFlow, где сообщение протокола OpenFlow переносит первую запись таблицы потока, набор первого поля в первой записи таблицы потока переносит индекс фактического значения в наборе первого поля, набор первого поля включает в себя N полей, и N представляет собой положительное целое число.
Сообщение протокола OpenFlow, которое переносит первую запись таблицы потока, может представлять собой, например, сообщение flow_mod или другое сообщение протокола OpenFlow.
N полей, включенные в набор первого поля, могут представлять собой любые N полей в первой записи таблицы потока. N полей, включенные в набор первого поля, могут представлять собой соседние N полей, частично соседние N полей или не соседние N полей в первой записи таблицы потока. N полей могут, например, включать в себя, по меньшей мере, одно из следующих полей: поле номера порта, поле IP-адреса источника, поле IP-адреса назначения, поле МАС-адреса назначения, поле идентификатора виртуальной локальной вычислительной сети, поле МАС-адреса источника, поле протокола и т.п.
Модуль 920 получения выполнен с возможностью получения фактического значения в наборе первого поля на основе индекса фактического значения в наборе первого поля.
Модуль 930 замены выполнен с возможностью замены, фактическим значением набора первого поля, которое получают с помощью модуля 920 получения, индекса, который представляет собой фактическое значение в наборе первого поля и который переносится в наборе первого поля, в первой записи таблицы потока.
Следует понимать, что, индекс фактического значения может иметь различные типы, и требование может удовлетворяться до тех пор, пока коммутатор OpenFlow может получать фактическое значение, в соответствии с индексом фактического значения. В некоторых подходах к воплощению настоящего изобретения индекс фактического значения может представлять собой, например, идентификатор записи таблицы потока для записи таблицы потока, уже сохраненной в коммутаторе 900 OpenFlow, то есть, индекс, переносимый в любом поле в наборе первого поля, в первой записи таблицы потока, переносимой в сообщении протокола OpenFlow, может представлять собой идентификатор записи таблицы потока для записи таблицы потока, сохраненной в коммутаторе OpenFlow. Следует понимать, что, если N больше 1, индексы, переносимые в полях в наборе первого поля, могут быть полностью одинаковыми, частично одинаковыми или абсолютно разными. Например, индексы, переносимые в полях в наборе первого поля, могут, в частности, представлять собой тот же идентификатор записи таблицы потока. Следует понимать, что, если индекс фактического значения полей представляет собой идентификатор записи таблицы потока для записи таблицы потока, уже сохраненной в коммутаторе OpenFlow, не только подход к индексации до фактического значения поля, выполняемой коммутатором OpenFlow, может быть существенно упрощен, но также и эффективность индексации до фактического значения этого поля коммутатором OpenFlow может быть улучшена. Кроме того, идентификатор записи таблицы потока обычно имеет относительно малый объем данных, что позволяет контроллеру SDN относительно по желанию управлять объемом данных, предоставляемым первой записью таблицы потока.
Фактическое значение поля в наборе первого поля представляет стандартное значение, которое должно переносить поле. Например, фактическое значение поля номера порта представляет собой номер порта, фактическое значение поля IP-адреса источника представляет собой IP-адрес источника, фактическое значение поля IP-адреса назначения представляет собой IP-адрес назначения, фактическое значение поля МАС-адреса назначения представляет собой МАС-адрес назначения, фактическое значение поля идентификатора виртуальной локальной вычислительной сети представляет собой идентификатор виртуальной локальной вычислительной сети, фактическое значение поля МАС-адреса источника представляет собой МАС-адрес источника, и фактическое значение другого поля выводят, соответственно. В данном варианте осуществления настоящего изобретения поле в наборе первого поля, в первой записи таблицы потока, предоставляемое контроллером SDN, не переносит фактическое значение поля, но, вместо этого, переносит индекс фактического значения поля, где индекс представляет собой информацию, путем использования которой можно индексировать фактическое значение поля. Предположим, что набор первого поля включает в себя поле номера порта, поле номера порта не переносит номер порта, но, вместо этого, переносит индекс, используя который может быть индексирован номер порта. В качестве другого примера, набор первого поля включает в себя поле IP-адреса источника, и поле IP-адреса источника не переносит IP-адрес источника, но, вместо этого, переносит индекс, используя который может быть индексирован IP-адрес источника. В качестве другого примера, набор первого поля включает в себя поле IP-адреса назначения, и поле IP-адреса назначения не переносит IP-адрес назначения, но, вместо этого, переносит индекс, используя который может быть индексирован IP-адрес назначения. В качестве другого примера, набор первого поля включает в себя поле идентификатора виртуальной локальной вычислительной сети, и поле идентификатора виртуальной локальной вычислительной сети не переносит идентификатор виртуальной локальной вычислительной сети, но, вместо этого, переносит индекс, используя который может быть индексирован идентификатор виртуальной локальной вычислительной сети. В качестве другого примера, набор первого поля включает в себя поле МАС-адреса назначения, и поле МАС-адреса назначения не переносит МАС-адрес назначения, но, вместо этого, переносит индекс, используя который может быть индексирован МАС-адрес назначения. В качестве другого примера, набор первого поля включает в себя поле МАС-адреса источника, и поле МАС-адреса источника не переносит МАС-адрес источника, но, вместо этого, переносит индекс, используя который может быть индексирован МАС-адрес источника. Если набор первого поля дополнительно включает в себя поле другого поля протокола, соответствующий случай может быть выведен, соответственно.
В некоторых вариантах осуществления настоящего изобретения, если индекс представляет собой идентификатор записи таблицы потока для записи таблицы потока, сохраненной в коммутаторе, модуль 920 получения, в частности, выполнен с возможностью получения, на основе идентификатора записи таблицы потока, фактического значения, заполненного в наборе третьего поля, который находится в записи таблицы потока, представленной идентификатором записи таблицы потока, и который имеет тот же тип протокола, что и набор первого поля, где поля, которые находятся в наборе третьего поля и в наборе первого поля, и которые имеют одинаковый тип протокола, имеют одинаковое фактическое значение.
Как показано на фиг. 9-b, в некоторых вариантах осуществления настоящего изобретения, коммутатор 900 OpenFlow дополнительно включает в себя: первый модуль 940 передачи, выполненный с возможностью передачи сохраненной первой записи таблицы потока или идентификатора первой записи таблицы потока в программно-определенный сетевой контроллер.
Как показано на фиг. 9-с, в некоторых вариантах осуществления настоящего изобретения, коммутатор 900 OpenFlow может дополнительно включать в себя: второй передающий модуль 950, выполненный с возможностью: перед приемом первой записи таблицы потока, передавать первый пакет или заголовок пакета первого пакета в программно-определенный сетевой контроллер, где поле инструкции первой записи таблицы потока переносит набор инструкций маршрутизации, используемый для обработки первого пакета или индекса набора инструкций маршрутизации; и
модуль 960 обработки пакета, выполненный с возможностью обработки первого пакета на основе набора инструкций маршрутизации.
В некоторых подходах к воплощению настоящего изобретения, для одной и той же записи таблицы потока, идентификаторы записи таблицы потока, используемые для идентификации записи таблицы потока в коммутаторе 900 OpenFlow, и контроллер SDN могут быть одинаковыми или могут иметь согласованную взаимосвязь отображения. Как коммутатор 900 OpenFlow, так и контроллер SDN могут выводить, используя установленную взаимосвязь отображения, идентификатор записи таблицы потока той же самой записи таблицы потока в устройстве однорангового конца.
Можно понять, что функции функциональных модулей коммутатора 900 OpenFlow в данном варианте осуществления могут, в частности, быть воплощены, в соответствии со способом в представленном выше варианте осуществления способа. Конкретную обработку для воплощения функций можно найти по ссылке на соответствующее описание представленного выше варианта осуществления, направленного на способ, и ее детали больше не будут описаны здесь снова.
Можно видеть, что, в данном варианте осуществления, для первой записи таблицы потока, переносимой в сообщении протокола OpenFlow, передаваемом контроллером SDN в коммутатор 900 OpenFlow, поскольку набор первого поля в первой записи таблицы потока переносит индекс фактического значения в наборе первого поля, вместо переноса фактического значения в наборе первого поля. В техническом воплощении объем данных индекса фактического значения поля обычно меньше чем или даже гораздо меньше, чем у фактического значения этого поля. Поэтому, механизм доставки записи таблицы потока в данном варианте осуществления помогает уменьшить количество служебных сигналов в канале управления, передаваемых между контроллером SDN и коммутатором 900 OpenFlow, таким образом, уменьшая риск перегрузки канала управления, также помогает уменьшить потребление сетевых ресурсов коммутатором 900 OpenFlow и помогает удовлетворять требованиям сложного сетевого взаимодействия.
Как показано на фиг. 10, вариант осуществления настоящего изобретения дополнительно представляет устройство 1000 виртуального уровня, которое может включать в себя: модуль 1010 приема, модуль 1020 комбинирования и модуль 1030 передачи.
Модуль 1010 приема выполнен с возможностью приема первого сообщения протокола OpenFlow из первого программно-определенного сетевого контроллера, где первое сообщение протокола OpenFlow переносит первую запись таблицы потока, и первое поле в первой записи таблицы потока переносит индекс фактического значения в первом поле; и принимать второе сообщение OpenFlow протокола OpenFlow от второго программно-определенного сетевого контроллера, где второе сообщение протокола OpenFlow переносит вторую запись таблицы потока, и четвертое поле во второй записи таблицы потока переносит индекс фактического значения в четвертом поле.
Модуль 1020 комбинирования выполнен с возможностью комбинирования первой записи таблицы потока и второй записи таблицы потока в третью запись таблицы потока.
Модуль 1030 передачи выполнен с возможностью передачи третьего сообщения протокола OpenFlow, переносящего третью запись таблицы потока в коммутатор OpenFlow.
Можно понять, что каждая запись таблицы потока имеет поля различных типов протокола, и каждая запись таблицы потока имеет одинаковое количество полей, где данные, заполняющие поля того же протокола в разных типах записи таблицы потока, могут быть одинаковыми или разными.
Устройство виртуального уровня может комбинировать вторую запись таблицы потока и первую запись таблицы потока в третью запись таблицы потока, используя различные подходы.
Так называемое, комбинирование множества записей таблицы потока, в основном, относится к комбинированию данных, заполняющих поля протокола одного типа в множестве записей таблицы потока. Например, предполагая, что вторая запись таблицы потока и вторая запись таблицы потока обе включают в себя: поле номера порта, поле IP-адреса источника, поле IP-адреса назначения, поле МАС-адреса назначения, поле идентификатора виртуальной локальной вычислительной сети, поле МАС-адреса источника и поле протокола другого типа, модуль 1020 комбинирования может комбинировать данные, заполняющие поля номера порта второй записи таблицы потока и первой записи таблицы потока, комбинировать данные, заполняющие поля IP-адреса источника второй записи таблицы потока и первой записи таблицы потока, комбинировать данные, заполняющие поли МАС-адреса назначения второй записи таблицы потока и первой записи таблицы потока, комбинировать данные, заполняющие поля IP-адреса назначения первой записи таблицы потока и второй записи таблицы потока, комбинировать данные, заполняющие поля идентификатора виртуальной локальной вычислительной сети второй записи таблицы потока и первой записи таблицы потока, и/или комбинировать данные, заполняющие поля МАС-адреса источника первой записи таблицы потока и второй записи таблицы потока, и подход к комбинированию данных, заполняющих поля протокола другого типа, может быть выведен соответствующим образом.
В некоторых подходах к воплощению настоящего изобретения модуль 1020 комбинирования может детектировать каждое поле такого же типа протокола во второй записи таблицы потока и в первой записи таблицы потока, где, если данные, заполняющие поля одного типа протокола во второй записи таблицы потока и первой записи таблицы потока, являются одинаковыми, одинаковые данные заполнения заполняют поля того же типа протокола в первой записи таблицы потока; или если данные, заполняющие поля протокола того же типа во второй записи таблицы потока и в первой записи таблицы потока отличаются, разные заполняющие данные заполняют поле одного типа протокола в третьей записи таблицы потока. Таким образом, в третьей записи таблицы потока, среди заполняющих данных полей, которые имеют одинаковый тип протокола во второй записи таблицы потока и в первой записи таблицы потока, и которые имеют одинаковые заполняющие данные, только одну из двух частей заполняющих данных заполняют в поле, соответствующее тому же типу протокола в третьей записи таблицы потока. Что касается данных заполнения полей, которые имеют такой же протокол, во второй записи таблицы потока и в первой записи таблицы потока, и которые имеют разные данные заполнения, разными данными заполнения заполняют поле, соответствующее тому же типу протокола в третьей записи таблицы потока. Таким образом, можно воплотить в определенной степени, что объем данных третьей записи таблицы потока будет меньше, чем сумма объема данных второй записи таблицы потока и объема данных первой записи таблицы потока.
Следует понимать, что функции функциональных модулей устройства 1000 виртуального уровня в данном варианте осуществления могут быть, в частности, воплощены, в соответствии со способом в представленном выше варианте осуществления, направленном на способ. Что касается конкретной обработки воплощения функций, ссылка может быть сделана на соответствующее описание представленного выше варианта осуществления, направленного на способ, и его детали больше не будут описаны здесь снова.
Можно видеть, что, в данном варианте осуществления, для первой записи таблицы потока, переносимой в сообщении протокола OpenFlow, переданном контроллером SDN в коммутатор OpenFlow, набор первого поля в первой записи таблицы потока переносит индекс фактического значения в наборе первого поля, вместо переноса фактического значения в наборе первого поля. В техническом варианте осуществления объем данных индекса фактического значения поля обычно меньше чем или даже гораздо меньше, чем фактическое значение поля. Поэтому, механизм доставки записи таблицы потока в данном варианте осуществления помогает уменьшить объем служебных сигналов канала управления между контроллером SDN и коммутатором OpenFlow, уменьшая, таким образом риск перегрузки канала управления, что также помогает уменьшить потребление сетевых ресурсов устройства коммутации, и помогает удовлетворять требованиям сложного сетевого взаимодействия. Кроме того, устройство 1000 виртуального уровня между контроллером SDN и коммутатором OpenFlow может дополнительно комбинировать несколько записей таблицы потока. Таким образом, объем данных передаваемых записей таблицы потока дополнительно уменьшается.
Как показано на фиг. 11, на фиг. 11 представлена схема программно-определенного контроллера 1100 сети, в соответствии с вариантом осуществления настоящего изобретения. Программно-определенный контроллер 1100 сети может включать в себя, по меньшей мере, одну шину 1101, по меньшей мере, один процессор 1102, соединенный с шиной 1101, и, по меньшей мере, одно запоминающее устройство 1103, соединенное с шиной 1101.
Процессор 1102 вызывает, используя шину 1101, код, сохраненный в запоминающем устройстве 1103, для генерирования первой записи таблицы потока, где набор первого поля в первой записи таблицы потока переносит индекс фактического значения в наборе первого поля, набор первого поля включает в себя N полей, и N представляет собой положительное целое число; и передает сообщение протокола OpenFlow в коммутатор OpenFlow, где сообщение протокола OpenFlow переносит первую запись таблицы потока.
Сообщение протокола OpenFlow, которое переносит первую запись таблицы потока, может, например, представлять собой сообщение модификации потока (flow_mod) или другое сообщение протокола OpenFlow.
Можно понимать, что первая запись таблицы потока может иметь структуру данных, которая является такой же, как и у стандартной записи таблицы потока. Например, тип поля протокола, включенного в первую запись таблицы потока и взаимосвязь между местами положения полей протокола любого типа в первой записи таблицы потока, могут быть такими же, как и в стандартной записи таблицы потока. Однако, тип информации, переносимой в некоторых или всех полях протокола в первой записи таблицы потока, отличается от того, что представлено в стандартной записи таблицы потока. В частности, поле в наборе первого поля в первой записи таблицы потока переносит индекс фактического значения поля, в то время как каждое поле в стандартной записи таблицы потока переносит фактическое значение поля.
N в вариантах осуществления настоящего изобретения может, например, быть равным 1, 2, 5, 8, 10, или другому значению.
N полей, включенных в набор первого поля, могут составлять любые N полей в первой записи таблицы потока. N полей, включенных в набор первого поля, могут представлять собой соседние N полей, частично соседние N полей или не соседние N полей в первой записи таблицы потока, то есть, места расположения полей в наборе первого поля могут быть произвольно распределены в первой записи таблицы потока, что помогает более гибко удовлетворять гибким требованиям различных фактических сценариев приложения. N полей могут, например, включать в себя, по меньшей мере, одни из следующих полей: поле номера порта, поле IP-адреса источника, поле IP-адреса назначения, поле МАС-адреса назначения, поле идентификатора виртуальной локальной вычислительной сети, поле МАС-адреса источника и т.п.Фактическое значение поля в наборе первого поля представляет стандартное значение, которое должно переносить это поле. Например, фактическое значение поля номера порта представляет собой номер порта, фактическое значение поля IP-адреса источника представляет собой IP-адрес источника, фактическое значение поля IP-адреса назначения представляет собой IP-адрес назначения, фактическое значение поля МАС-адреса назначения представляет собой МАС-адрес назначения, фактическое значение поля идентификатора виртуальной локальной вычислительной сети представляет собой идентификатор виртуальной локальной вычислительной сети, фактическое значение поля МАС-адреса источника представляет собой МАС-адрес источника, и фактическое значение другого поля выводят, соответственно. В данном варианте осуществления настоящего изобретения поле в наборе первого поля в первой записи таблицы потока, предоставляемой контроллером 1100 программно-определенной сети не переносит фактическое значение поля, но, вместо этого, переносит индекс фактического значения поля, где индекс представляет собой информацию, используя которую можно индексировать фактическое значение поля. Предположим, что набор первого поля включает в себя поле номера порта, поле номера порта не переносит номер порта, но, вместо этого, переносит индекс, используя которой можно индексировать номер порта. В качестве другого примера набор первого поля включает в себя поле IP-адреса источника, и поле IP-адреса источника не переносит IP-адрес источника, но, вместо этого, переносит индекс, используя который может быть индексирован IP-адрес источника. В качестве другого примера, набор первого поля включает в себя поле IP-адреса назначения, и поле IP-адреса назначения не переносит IP-адрес назначения, но, вместо этого, переносит индекс, используя который IP-адрес назначения может быть индексирован. В качестве другого примера, набор первого поля включает в себя поле идентификатора виртуальной локальной сети, и поле идентификатора виртуальной локальной сети не переносит идентификатор виртуальной локальной сети, но, вместо этого, переносит индекс, используя который может быть индексирован идентификатор виртуальной локальной сети. В качестве другого примера, набор первого поля включает в себя поле МАС-адреса назначения, и поле МАС-адреса назначения не переносит МАС-адрес назначения, но, вместо этого, переносит индекс, используя который может быть индексирован МАС-адрес назначения. В качестве другого примера, набор первого поля включает в себя поле МАС-адреса источника, и поле МАС-адреса источника не переносит МАС-адрес источника, но, вместо этого, переносит индекс, используя который может быть индексирован МАС-адрес источника. Если набор первого поля дополнительно включает в себя другое поле протокола, соответствующий случай выводят, соответственно.
Можно понимать, что индекс фактического значения может быть различного типа, и требование может удовлетворяться, если только коммутатор OpenFlow может получать фактическое значение, в соответствии с индексом фактического значения. В некоторых подходах, направленных на воплощение настоящего изобретения, индекс фактического значения может, например, составлять идентификатор записи таблицы потока для записи таблицы потока, сохраненной в коммутаторе OpenFlow, то есть, индекс, переносимый в любом поле, в наборе первого поля, в первой записи таблицы потока, переносимой в сообщении протокола OpenFlow, может представлять собой идентификатор записи таблицы потока для записи таблицы потока, содержащейся в коммутаторе OpenFlow. Можно понимать, что, если N больше чем 1, индексы, переносимые в полях в наборе первого поля, могут быть полностью одинаковыми, частично одинаковыми или абсолютно разными (например, индексы, переносимые в полях, в наборе первого поля, могут, в частности, представлять собой одинаковый идентификатор записи таблицы потока). Можно понять, что, если индекс фактического значения поля представляет собой идентификатор записи таблицы потока для записи таблицы потока, уже сохраненной в коммутаторе OpenFlow, не только подход индексации действительного значения поля коммутатором OpenFlow может быть значительно упрощен, но также может быть улучшена эффективность индексации действительного значения поля коммутатором OpenFlow. Кроме того, идентификатор записи таблицы потока обычно имеет относительно малый объем данных, что помогает контроллеру 1100 программно-определенной сети относительно по желанию управлять объемом данных предоставляемой первой записи таблицы потока.
В некоторых подходах к воплощению настоящего изобретения каждое поле во второй записи таблицы, установленной в первой записи таблицы потока, может дополнительно переносить множество фактических значений поля. Набор второго поля включает в себя М полей, и М представляет собой положительное целое число. Примеры фактических значений полей описаны выше. Можно подразумевать, что, поскольку каждое поле в наборе второго поля может дополнительно переносить множество фактических значений поля, это эквивалентно обозначает, что первая запись таблицы потока может быть разделена на множество записей таблицы потока, что также помогает контроллеру 1100 программно-определенной сети относительно по желанию управлять объемом данных предоставляемой первой записи таблицы потока.
Значение М в вариантах осуществления настоящего изобретения может быть равным, например, 1, 2, 5, 8, 10, или другому значению.
М полей, включенных в набор второго поля, в первой записи таблицы потока, могут представлять собой любые М полей, которые находятся в первой записи таблицы потока и которые отличаются от любого поля в наборе первого поля. М полей, включенных в набор второго поля, могут быть соседними М полями, частично соседними М полями или не соседними М полями в первой записи таблицы потока. Эти М полей могут включать в себя, например, по меньшей мере, одно из следующих полей: поле номера порта, поле IP-адреса источника, поле IP-адреса назначения, поле МАС-адреса назначения, поле идентификатора виртуальной локальной вычислительной сети, поле МАС-адреса источника, поле протокола и т.п.
Пересечение набора второго поля и набора первого поля представляет собой пустой набор.
Можно подразумевать, что функции функциональных модулей программно-определенного сетевого контроллера 1100 в данном варианте осуществления могут быть, в частности, воплощены в соответствии со способом в представленном выше варианте осуществления, направленным на способ. Что касается конкретной обработки по воплощению функций, ссылка может быть сделана на соответствующее описание представленного выше варианта осуществления, направленного на способ, и его детали не буду описаны здесь снова.
Можно видеть, что в решении в данном варианте осуществления, для первой записи таблицы потока, переносимой в сообщении протокола OpenFlow, передаваемом контроллером SDN в коммутатор OpenFlow, набор первого поля в первой записи таблицы потока переносит индекс фактического значения в наборе первого поля, вместо переноса фактического значения в наборе первого поля. В техническом воплощении объем данных индекса фактического значения поля обычно меньше, чем или даже гораздо меньше, чем фактическое значение поля. Поэтому, механизм доставки записи таблицы потока в данном варианте осуществления помогает уменьшить количество служебных сигналов в канале управления между контроллером SDN и коммутатором OpenFlow, уменьшая, таким образом, риск перегрузки в канале управления, это также помогает уменьшить потребление сетевых ресурсов устройства коммутации, и помогает удовлетворять требованиям сложного сетевого взаимодействия.
На фиг. 12 представлена структурная блок-схема программно-определенного сетевого контроллера 1200, в соответствии с другим вариантом осуществления настоящего изобретения.
Программно-определенный сетевой контроллер 1200 может включать в себя: по меньшей мере, один процессор 1201, по меньшей мере, один сетевой интерфейс 1204 или другой интерфейс 1203 пользователя, запоминающее устройство 1205, и, по меньшей мере, одну шину 1202 передачи данных. Шина 1202 передачи данных выполнена с возможностью воплощения соединения и передачи данных между этими компонентами. Программно-определенный сетевой контроллер 1200, в случае необходимости, включает в себя интерфейс 1203 пользователя, который включает в себя дисплей (например, сенсорный экран, LCD, CRT, голографический (Holographic) дисплей или проектор (Projector)), устройство для отметки (например, мышь, шаровой манипулятор (trackball), сенсорную панель или сенсорный экран) и камеру, и/или устройство захвата звука.
Запоминающее устройство 1202 может включать в себя, например, постоянное запоминающее устройство и оперативное запоминающее устройство, и предоставляет инструкцию и данные в процессор 1201.
Часть запоминающего устройства 1202 дополнительно включает в себя энергонезависимое запоминающее устройство (NVRAM).
В некоторых подходах к воплощению, запоминающее устройство 1205 содержит следующие элементы, исполнительный модуль или структуру данных, или его поднабор, или его расширенный набор:
операционную систему 12051, включающую в себя различные программы системы, выполненные с возможностью воплощения различных фундаментальных услуг и задач обработки на основе аппаратных средств; и
модуль 12052 программы приложения, включающий в себя различные программы приложения и используемый для воплощения различных услуг приложения.
В данном варианте осуществления настоящего изобретения, путем вызова программ или инструкций, содержащихся в запоминающем устройстве 1205, процессор 1201 генерирует первую запись таблицы потока, где первый набор поля в первой записи таблицы потока переносит индекс фактического значения в наборе первого поля, набор первого поля включает в себя N полей, и N представляет собой положительное целое число; и передает сообщение протокола OpenFlow в коммутатор OpenFlow, где сообщение протокола OpenFlow переносит первую запись таблицы потока.
Сообщение протокола OpenFlow, которое переносит первую запись таблицы потока, может, например, представлять собой сообщение flow_mod или другое сообщение протокола OpenFlow.
Может быть понятно, что первая запись таблицы потока может иметь структуру данных, которая является такой же, как и стандартная запись таблицы потока. Например, тип поля протокола, включенного в первую запись таблицы потока, и взаимосвязи местоположений между любыми типами полей протокола в первой записи таблицы потока, могут быть такими же, как и в стандартной записи таблицы потока. Однако, тип информации, переносимой в некоторых или во всех полях протокола, в первой записи таблицы потока, отличается от стандартной записи таблицы потока. В частности, поле в наборе первого поля в первой записи таблицы потока переносит индекс фактического значения поля, в то время как каждое поле в стандартной записи таблицы потока переносит фактическое значение поля.
N в вариантах осуществления настоящего изобретения может быть равным, например, 1, 2, 5, 8, 10, или другому значению.
N полей, включенных в набор первого поля, могут представлять собой любые N полей в первой записи таблицы потока. N полей, включенных в набор первого поля, могут представлять собой соседние N полей, частично соседние N полей или не соседние N полей в первой записи таблицы потока, которые представляют собой места положения, где поля в наборе первого поля могут быть произвольно распределены в первой записи таблицы потока, что помогает более гибко удовлетворять гибким требованиям различных фактических сценариев приложения. N полей могут, например, включать в себя, по меньшей мере, одно из следующих полей: поле номера порта, поле IP-адреса источника, поле IP-адреса назначения, поле МАС-адреса назначения, поле идентификатора виртуальной локальной вычислительной сети, поле МАС-адреса источника и т.п. Фактическое значение поли в наборе первого поля представляет стандартное значение, которое должно переносить поле. Например, фактическое значение поля номера порта представляет собой номер порта, фактическое значение поля IP-адреса источника представляет собой IP-адрес источника, фактическое значение поля IP-адреса назначения представляет собой IP-адрес назначения, фактическое значение поля МАС-адреса назначения представляет собой МАС-адрес назначения, фактическое значение поля идентификатора виртуальной локальной вычислительной сети представляет собой идентификатор виртуальной локальной вычислительной сети, фактическое значение поля МАС-адреса источника представляет собой МАС-адрес источника, и фактическое значение другого поля выводят соответствующим образом. В данном варианте осуществления настоящего изобретения поле в наборе первого поля в первой записи таблицы потока, передаваемое программно-определенным сетевым контроллером 1200, не переносит фактическое значение поля, но, вместо этого, переносит индекс фактического значения поля, где индекс представляет собой информацию, используя которую может быть индексировано фактическое значение поля. Предположим, что набор первого поля включает в себя поле номера порта, поле номера порта не переносит номер порта, но, вместо этого, переносит индекс, используя который может быть индексирован номер порта. В качестве другого примера, набор первого поля включает в себя поле IP-адреса источника, и поле IP-адреса источника не переносит IP-адрес источника, но, вместо этого, переносит индекс, используя который может быть индексирован IP-адрес источника. В качестве другого примера, набор первого поля включает в себя поле IP-адреса назначения, и поле IP-адреса назначения не переносит IP-адрес назначения, но, вместо этого, переносит индекс, используя который может быть индексирован IP-адрес назначения. В качестве другого примера, набор первого поля включает в себя поле идентификатора виртуальной локальной вычислительной сети, и поле идентификатора виртуальной локальной вычислительной сети не переносит идентификатор виртуальной локальной вычислительной сети, но, вместо этого, переносит индекс, используя который может быть индексирован идентификатор виртуальной локальной вычислительной сети. В качестве другого примера, набор первого поля включает в себя поле МАС-адреса назначения, и поле МАС-адреса назначения не переносит МАС-адрес назначения, но, вместо этого, переносит индекс, используя который может быть индексирован МАС-адрес назначения. В качестве другого примера, набор первого поля включает в себя поле МАС-адреса источника, и поле МАС-адреса источника не переносит МАС-адрес источника, но, вместо этого, переносит индекс, используя который может быть индексирован МАС-адрес источника. Если набор первого поля дополнительно включает в себя другое поле протокола, соответствующий случай выводится соответствующим образом.
Можно понимать, что индекс фактического значения может быть различных типов, и требования могут удовлетворяться, если только коммутатор OpenFlow может получать фактическое значение, в соответствии с индексом фактического значения. В некоторых подходах к воплощению настоящего изобретения индекс фактического значения может представлять собой, например, идентификатор записи таблицы потока для записи таблицы потока, сохраненной в коммутаторе OpenFlow, то есть, индекс, переносимый в любом поле, в наборе первого поля, в первой записи таблицы потока, переносимой в сообщении протокола OpenFlow, может представлять собой идентификатор записи таблицы потока для записи таблицы потока, сохраненной в коммутаторе OpenFlow. Можно понимать, что, если N больше 1, индексы, переносимые в полях, в наборе первого поля, могут быть полностью такими же, частично такими же или абсолютно разными (например, индексы, переносимые в полях в наборе первого поля, могут представлять собой, в частности, одинаковый идентификатор записи таблицы потока). Следует понимать, что, если индекс фактического значения поля представляет собой идентификатор записи таблицы потока для записи таблицы потока, уже сохраненной в коммутаторе OpenFlow, не только подход к индексации фактического значения поля коммутатором OpenFlow может быть существенно упрощен, но также и эффективность индексации для фактического значения поля, выполняемой коммутатором OpenFlow, может быть улучшена. Кроме того, идентификатор записи таблицы потока обычно имеет относительно малый объем данных, что помогает программно-определенному сетевому контроллеру 1100 относительно по желанию управлять объемом данных предоставляемой первой записи таблицы потока.
В некоторых подходах к воплощению настоящего изобретения каждое поле в наборе второго поля в первой записи таблицы потока может дополнительно переносить множество фактических значений поля. Набор второго поля включает в себя М полей, и М представляет собой положительное целое число. Примеры фактических значений полей описаны выше. Можно понимать, что, поскольку каждое поле в наборе второго поля может дополнительно переносить множество фактических значений поля, это эквивалентно обозначает, что первая запись таблицы потока может быть разделена на множество записей таблицы потока, что также помогает программно-определенному сетевому контроллеру 1200 относительно по желанию управлять объемом данных предоставляемой первой записи таблицы потока.
Значение М в вариантах осуществления настоящего изобретения может быть равным, например, 1, 2, 5, 8, 10, или другому значению.
М полей, включенных в набор второго поля в первой записи таблицы потока, могут представлять собой любые М полей, которые находятся в первой записи таблицы потока и которые отличаются от любого поля в наборе первого поля. М полей, включенных в набор второго поля, могут представлять собой соседние М полей, частично соседние М полей или не соседние М полей в первой записи таблицы потока. М полей могут включать в себя, например, по меньшей мере, одно из следующих полей: поле номера порта, поле IP-адреса источника, поле IP-адреса назначения, поле МАС-адреса назначения, поле идентификатора виртуальной локальной вычислительной сети, поле МАС-адреса источника, поле протокола и т.п.
Пересечение набора второго поля и набора первого поля представляет собой пустое пересечение.
Можно понимать, что функции функциональных модулей программно-определенного сетевого контроллера 1200 в данном варианте осуществления могут быть, в частности, воплощены в соответствии со способом в предшествующем варианте осуществления, направленным на способ. Конкретную обработку воплощения функций можно найти по ссылке на соответствующее описание представленного выше варианта осуществления способа, и его детали не будут описаны здесь снова.
Как показано на фиг. 13, на фиг. 13 схематично представлен коммутатора 1300 OpenFlow, в соответствии с вариантом осуществления настоящего изобретения. Коммутатор 1300 OpenFlow может включать в себя, по меньшей мере, одну шину 1301, по меньшей мере, один процессор 1302, соединенный с шиной 1301, и, по меньшей мере, одно запоминающее устройство 1303, соединенное с шиной 1301.
Процессор 1302 вызывает, используя шину 1301, код, сохраненный в запоминающем устройстве 1303, для приема сообщения протокола OpenFlow, переносящего первую запись таблицы потока, где набор первого поля в первой записи таблицы потока может переносить индекс фактического значения в наборе первого поля, набор первого поля включает в себя N полей, и N представляет собой положительное целое число; получают фактическое значение в наборе первого поля на основе индекса фактического значения в наборе первого поля; и заменяют на фактическое значение в наборе первого поля индекс фактического значения в наборе первого поля, и который переносится в наборе первого поля в первой записи таблицы потока.
Сообщение протокола OpenFlow, которое переносит первую запись таблицы потока, может представлять собой, например, сообщение flow_mod или другое сообщение протокола OpenFlow.
N полей, включенных в набор первого поля, могут представлять собой любые N полей в первой записи таблицы потока. N полей, включенные в набор первого поля, могут представлять собой соседние N полей, частично соседние N полей или не соседние N полей в первой записи таблицы потока. N полей могут, например, включать в себя, по меньшей мере, одно из следующих полей: поле номера порта, поле IP-адреса источника, поле IP-адреса назначения, поле МАС-адреса назначения, поле идентификатора виртуальной локальной вычислительной сети, поле МАС-адреса источника, поле протокола и т.п.
Если индекс представляет собой идентификатор записи таблицы потока для записи таблицы потока, уже сохраненной в коммутаторе OpenFlow, получение фактического значения в наборе первого поля, на основе индекса фактического значения в наборе первого поля, может включать в себя: получают, на основе идентификатора записи таблицы потока, фактическое значение, заполняющее набор третьего поля, которое представлено в записи таблицы потока идентификатором записи таблицы потока, и которое имеет тот же самый тип протокола, что и набор первого поля, где поля, которые находятся в наборе третьего поля и в наборе первого поля и которые имеют одинаковый тип протокола, имеют одинаковое фактическое значение. Следует понимать, что набор третьего поля и набор первого поля имеют равные количества полей, и типы протокола полей, включенных в набор третьего поля и набор первого поля, находятся во взаимнооднозначных соответствиях.
Кроме того, запоминающее устройство 1303 может дополнительно сохранять первую запись таблицы потока, полученную после того, как индекс, который имеет фактическое значение набора первого поля и который переносится в наборе первого поля, будет заменен фактическим значением набора первого поля, то есть, будет содержать первую запись таблицы потока, полученную после того, как полученное фактическое значение заполнит набор первого поля.
В некоторых вариантах осуществления настоящего изобретения процессор 1302 может дополнительно передавать сохраненную первую запись таблицы потока или идентификатор первой записи таблицы потока в контроллер SDN, для того, чтобы способствовать синхронизации сохраненной записи таблицы потока между коммутатором OpenFlow и контроллером SDN.
В некоторых вариантах осуществления настоящего изобретения процессор 1302 может дополнительно быть выполнен с возможностью: перед тем, как будет принята первая запись таблицы потока, передавать первый пакет или заголовок пакета первого пакета в контроллер SDN. Поле инструкций первой записи таблицы потока переносит набор инструкций маршрутизации, используемый для обработки первого пакета или индекса набора инструкций маршрутизации. Процессор 1302 может быть дополнительно выполнен с возможностью обработки первого пакета на основе набора инструкций маршрутизации.
Можно понимать, что, функции функциональных модулей коммутатора 1300 OpenFlow в данном варианте осуществления могут быть, в частности, воплощены в соответствии со способом в представленном выше варианте осуществления, направленном на способ. Ссылка на конкретную обработку по воплощению функций может быть сделана по ссылке на соответствующее описание предшествующего варианта осуществления способа, и ее детали здесь больше не описаны.
В данном варианте осуществления можно видеть, что, для первой записи таблицы потока, переносимой в сообщении протокола OpenFlow, передаваемом контроллером SDN в коммутатор 1300 OpenFlow, набор первого поля в первой записи таблицы потока переносит индекс фактического значения в наборе первого поля, вместо переноса фактического значения в наборе первого поля. В техническом воплощении объем данных индекса фактического значения поля обычно меньше чем или даже гораздо меньше, чем у фактического значения этого поля. Поэтому, механизм предоставления записи таблицы потока в данном варианте осуществления помогает уменьшить объем служебных сигналов в канале управления между контроллером SDN и коммутатором OpenFlow, уменьшая, таким образом риск перегрузки в канале управления, также помогает уменьшить потребление сетевых ресурсов устройства коммутации, и помогает удовлетворять требованиям сложного сетевого взаимодействия.
На фиг. 14 представлена структурная блок-схема коммутатора 1400 OpenFlow, в соответствии с другим вариантом осуществления настоящего изобретения.
Коммутатор 1400 OpenFlow может включать в себя: по меньшей мере, один процессор 1401, по меньшей мере, один сетевой интерфейс 1404 или другой интерфейс 1403 пользователя, запоминающее устройство 1405 и, по меньшей мере, одну шину 1402 передачи данных. Шина 1402 передачи данных выполнена с возможностью воплощения соединения и передачи данных между этими компонентами. Коммутатор 1400 OpenFlow, в случае необходимости, включает в себя интерфейс 1403 пользователя, который включает в себя дисплей (например, сенсорный экран, LCD, CRT, устройство голографического изображения или проектор), устройство для отметки (например, мышь, шаровой манипулятор, сенсорную панель или сенсорный экран) и камеру, и/или устройство захвата звука и т.п.
Запоминающее устройство 1402 может включать в себя, например, постоянное запоминающее устройство и оперативное запоминающее устройство, и предоставляет инструкции и данные в процессор 1401.
Часть запоминающего устройства 1402 дополнительно включает в себя энергонезависимое запоминающее устройство (NVRAM).
В некоторых подходах к воплощению, запоминающее устройство 1405 содержит следующие элементы, исполнительный модуль или структуру данных, или их поднабор, или их расширенный набор:
операционную систему 14051, включающую в себя различные системные программы, выполненные с возможностью воплощения различных фундаментальных услуг, и обрабатывающую задачи на основе аппаратных средств; и
модуль 14052 применения программы, включающий в себя различные программы применения и используемый для воплощения различных услуг применения.
В данном варианте осуществления настоящего изобретения, путем вызова программ или инструкций, содержащейся в запоминающем устройстве 1405, процессор 1401 принимает сообщение протокола OpenFlow, переносящее первую запись таблицы потока, где первая запись таблицы потока в первой записи таблицы потока может переносить индекс фактического значения в наборе первого поля, набор первого поля включает в себя N полей, и N представляет собой положительное целое число; получать фактическое значение в наборе первого поля на основе индекса фактического значения в наборе первого поля; и заменять фактическим значением в наборе первого поля индекс, который представляет собой фактическое значение в наборе первого поля и которое переносится в наборе первого поля в первой записи таблицы потока.
Сообщение протокола OpenFlow, которое переносит первую запись таблицы потока, может представлять собой, например, сообщение flow_mod или другое сообщение протокола OpenFlow.
N полей, включенных в набор первого поля, могут представлять собой любые N полей в первой записи таблицы потока. N полей, включенные в набор первого поля, могут представлять собой расположенные рядом друг с другом N полей, расположенные частично рядом друг с другом N полей или не соседние N полей в первой записи таблицы потока. N полей могут, например, включать в себя, по меньшей мере, одно из следующих полей: поле номера порта, поле IP-адреса источника, поле IP-адреса места назначения, поле МАС-адреса места назначения, поле идентификатора виртуальной локальной вычислительной сети, поле МАС-адреса источника, поле протокола и т.п.
Если индекс представляет собой идентификатор записи таблицы потока для записи таблицы потока, уже сохраненной в коммутаторе OpenFlow, получение фактического значения в наборе первого поля на основе индекса фактического значения в наборе первого поля может включать в себя: получают, на основе идентификатора записи таблицы потока, фактическое значение, заполняющее набор третьего поля, то есть, находящееся в записи таблицы потока, представленной идентификатором записи таблицы потока, и который имеет тот же тип протокола, что и набор первого поля, где поля, которые находятся в наборе третьего поля и в наборе первого поля, и которые имеют одинаковый тип протокола, имеют одинаковое фактическое значение. Можно понимать, что, набор третьего поля и набор первого поля имеют одинаковые количества полей, и типы протокола для полей, включенных в набор третьего поля и в набор первого поля, находятся во взаимно-однозначных соответствиях.
Кроме того, запоминающее устройство 1402 может дополнительно сохранять первую запись таблицы потока, полученную по индексу, то есть фактическое значение набора первого поля и которое переносится в наборе первого поля, заменяется фактическим значением набора первого поля, то есть, сохранение первой записи таблицы потока, полученной после полученного фактического значения, заполняют в наборе первого поля.
В некоторых вариантах осуществления настоящего изобретения процессор 1401 может дополнительно передавать сохраненную первую запись таблицы потока или идентификатор первой записи таблицы потока в контроллер SDN, для того, чтобы способствовать синхронизации сохраненной записи таблицы потока между коммутатором OpenFlow и контроллером SDN.
В некоторых вариантах осуществления настоящего изобретения процессор 1401 может дополнительно быть выполнен с возможностью: перед приемом первой записи таблицы потока, передавать первый пакет или заголовок пакета первого пакета в контроллер SDN. Поле инструкций первой записи таблицы потока переносит набор инструкций маршрутизации, используемый для обработки первого пакета или индекса набора инструкций маршрутизации. Процессор 1401 может дополнительно быть выполнен с возможностью обработки первого пакета на основе набора инструкций маршрутизации.
Следует понимать, что функции функциональных модулей коммутатора 1400 OpenFlow в данном варианте осуществления, могут быть, в частности, воплощены в соответствии со способом в представленном выше варианте осуществления, направленном на способ. Ссылка на конкретную обработку по воплощению функций может быть сделана на соответствующее описание представленного выше варианта осуществления способа, и его детали не будут представлены здесь снова.
Как показано на фиг. 15, на фиг. 15 представлена схема устройства 1500 виртуального уровня, в соответствии с вариантом осуществления настоящего изобретения. Устройство 1500 виртуального уровня может включать в себя, по меньшей мере, одну шину 1501, по меньшей мере, один процессор 1502, соединенный с шиной 1501, и, по меньшей мере, одно запоминающее устройство 1503, соединенное с шиной 1501.
Процессор 1502 вызывает, используя шину 1501, код, содержащийся в запоминающем устройстве 1503, для приема первого сообщения протокола OpenFlow из первого контроллера SDN, где первое сообщение протокола OpenFlow переносит первую запись таблицы потока, и первое поле в первой записи таблицы потока переносит индекс фактического значения в первое поле; принимает второе сообщение OpenFlow протокола OpenFlow из второго контроллера SDN, где второе сообщение протокола OpenFlow переносит вторую запись таблицы потока, и четвертое поле во второй записи таблицы потока переносит индекс фактического значения в четвертом поле; комбинирует первую запись таблицы потока и вторую запись таблицы потока в третью запись таблицы потока; и передает третье сообщение протокола OpenFlow, переносящее третью запись таблицы потока, в коммутатор OpenFlow.
Так называемое, комбинирование множества записей таблицы потока, в основном, относится к объединению данных, заполненных в полях того же типа протокола, в множестве записей таблицы потока. Например, предположим, что вторая запись таблицы потока и вторая запись таблицы потока обе включают в себя: поле номера порта, поле IP-адреса источника, поле IP-адреса назначения, поле МАС-адреса назначения, поле идентификатора виртуальной локальной вычислительной сети, поле МАС-адреса источника и поле другого типа протокола, устройство виртуального уровня может комбинировать данные, заполняющие поля номера порта второй записи таблицы потока и первой записи таблицы потока, комбинировать данные, заполняющие поля IP-адреса источника второй записи таблицы потока и первой записи таблицы потока, комбинировать данные, заполняющие поля МАС-адреса назначения второй записи таблицы потока и первой записи таблицы потока, комбинировать данные, заполняющие поля IP-адреса назначения первой записи таблицы потока и второй записи таблицы потока, комбинировать данные, заполняющие поля идентификатора виртуальной локальной вычислительной сети второй записи таблицы потока и первой записи таблицы потока, и/или комбинировать данные, заполняющие поля МАС-адреса источника первой записи таблицы потока и второй записи таблицы потока, и подход к комбинированию данных, заполняющих поля другого типа протокола, может быть выведен, соответственно.
Можно понять, что функции функциональных модулей устройства 1500 виртуального уровня в данном варианте осуществления могут быть, в частности, воплощены в соответствии со способом в представленном выше варианте осуществления, направленном на способ. Конкретную обработку воплощения функций можно найти по ссылке на соответствующее описание представленного выше варианта осуществления способа, и его детали не будут больше описаны здесь снова.
Можно видеть, что, в данном варианте осуществления, для первой записи таблицы потока, переносимой в сообщении протокола OpenFlow, переданном контроллером SDN в коммутатор OpenFlow, набор первого поля в первой записи таблицы потока переносит индекс фактического значения в наборе первого поля, вместо переноса фактического значения в наборе первого поля. При техническом воплощении объем данных индекса фактического значения поля обычно меньше чем или даже гораздо меньше, чем у фактического значения поля. Поэтому, механизм предоставления записи таблицы потока в данном варианте осуществления помогает уменьшить служебные данные канала управления между контроллером SDN и коммутатором OpenFlow, уменьшая, таким образом, риск перегрузки канала управления, также помогает уменьшить потребление сетевых ресурсов устройства коммутации, и помогает удовлетворить требованиям сложного сетевого взаимодействия. Кроме того, устройство 1500 виртуального уровня между контроллером SDN и коммутатором OpenFlow может дополнительно комбинировать несколько записей таблицы потока. Таким образом, объем данных, передаваемых записей таблицы потока дополнительно уменьшается.
Далее, на фиг. 16 представлена структурная блок-схема устройства 1600 виртуального уровня, в соответствии с другим вариантом осуществления настоящего изобретения.
Устройство 1600 виртуального уровня может включать в себя: по меньшей мере, один процессор 1601, по меньшей мере, один сетевой интерфейс 1604 или другой интерфейс 1603 пользователя, запоминающее устройство 1605 и, по меньшей мере, одну шину 1602 передачи данных. Шина 1602 передачи данных выполнена с возможностью воплощения соединения и передачи данных между этими компонентами. Устройство 1600 виртуального уровня, в случае необходимости, включает в себя интерфейс 1603 пользователя, который включает в себя дисплей (дисплей представляет собой, например, сенсорный экран, LCD, CRT, голографическое устройство или проектор), устройство для отметки (например, мышь, шаровой манипулятор, сенсорную панель или сенсорный экран) и камеру, и/или устройство захвата звука, и т.п.
Запоминающее устройство 1602 может включать в себя, например, постоянное запоминающее устройство и оперативное запоминающее устройство, и предоставлять инструкцию и данные в процессор 1601.
Часть запоминающего устройства 1602 дополнительно включает в себя энергонезависимое запоминающее устройство (NVRAM).
В некоторых подходах к воплощению, накопитель 1605 содержит следующие элементы, исполнительный модуль или структуру данных, или их поднабор, или их расширенный набор:
операционную систему 16051, включающую в себя различные системные программы, выполненные с возможностью воплощения различных фундаментальных услуг и обработки задач на основе аппаратных средств; и
модуль 16052 программного приложения, включающий в себя различные программы приложения и используемый для воплощения различных услуг приложения.
В данном варианте осуществления настоящего изобретения, путем вызова программ или инструкций, сохраненных в запоминающем устройстве 1605, процессор 1601 принимает сообщение первого протокола OpenFlow из первого контроллера SDN, где первое сообщение протокола OpenFlow переносит первую запись таблицы потока, и. первое поле в первой записи таблицы потока переносит индекс фактического значения первого поля; принимает второе сообщение OpenFlow протокола OpenFlow из второго контроллера SDN, где второе сообщение протокола OpenFlow переносит вторую запись таблицы потока, и четвертое поле во второй записи таблицы потока переносит индекс фактического значения в четвертом поле; комбинирует запись первой таблицы потока и запись второй таблицы потока в третью запись таблицы потока; и передает третье сообщение протокола OpenFlow, переносимое третьей записью таблицы потока в коммутатор OpenFlow.
Так называемое, комбинирование множества записей таблицы потока, в основном, относится к комбинированию данных, заполняющих поля одинакового типа протокола множества записей таблицы потока. Например, предположим, что вторая запись таблицы потока и вторая запись таблицы потока обе включают в себя: поле номера порта, поле IP-адреса источника, поле IP-адреса назначения, поле МАС-адреса назначения, поле идентификатора виртуальной локальной вычислительной сети, поле МАС-адреса источника и поле протокола другого типа, устройство виртуального уровня может комбинировать данные, заполняющие поля номера порта второй записи таблицы потока и первой записи таблицы потока, комбинировать данные, поля IP-адреса источника второй записи таблицы потока и первой записи таблицы потока, комбинировать данные, заполняющие поля МАС-адреса назначения второй записи таблицы потока и первой записи таблицы потока, комбинировать данные, заполняющие поля IP-адреса назначения первой записи таблицы потока и второй записи таблицы потока, комбинировать данные, заполняющие поля идентификатора виртуальной локальной сети второй записи таблицы потока и первой записи таблицы потока, и/или комбинировать данные, заполняющие поля МАС-адреса источника первой записи таблицы потока и второй записи таблицы потока, и подход к комбинированию данных, заполняющих поля другого типа протокола, может быть выведен, соответственно.
Можно понимать, что функции функциональных модулей устройства 1600 виртуального уровня в данном варианте осуществления могут быть, в частности, воплощены в соответствии со способом в представленном выше варианте осуществления, направленном на способ. Конкретную обработку воплощения функций можно найти по ссылке на соответствующее описание представленного выше варианта осуществления, направленного на способ, и его детали больше не будут описаны здесь снова.
Со ссылкой на фиг. 17, вариант осуществления настоящего изобретения дополнительно направлен на систему передачи данных, которая может включать в себя: программно-определенный сетевой контроллер 1710 и коммутатор 1720 OpenFlow.
Программно-определенный сетевой контроллер 1710 выполнен с возможностью генерировать первую запись таблицы потока, где набор первого поля в первой записи таблицы потока переносит индекс фактического значения в наборе первого поля, набор первого поля включает в себя N полей, и N представляет собой положительное целое число; и передает сообщение протокола OpenFlow в коммутатор OpenFlow, где сообщение протокола OpenFlow переносит первую запись таблицы потока.
Коммутатор 1720 OpenFlow выполнен с возможностью приема сообщения протокола OpenFlow; получать фактическое значение в наборе первого поля на основе индекса фактического значения в наборе первого поля; и заменять на фактическое значение в наборе первого поля индекс, который относится к фактическому значению в наборе первого поля и который переносится в наборе первого поля в первую запись таблицы потока.
Следует понимать, что, программно-определенный сетевой контроллер 1710 в данном варианте осуществления может иметь некоторые или все из программно-определенных сетевых контроллеров, описанных в представленном выше варианте осуществления. Коммутатор 1720 OpenFlow может иметь некоторые или все коммутаторы OpenFlow, описанные в представленном выше варианте осуществления. Функции программно-определенного сетевого контроллера 1710 и коммутатора 1720 OpenFlow могут быть, в частности, воплощены в соответствии со способом, в представленном выше способе варианта осуществления. Конкретная обработка воплощения функций может быть найдена по ссылке на соответствующее описание представленного выше варианта осуществления способа, и его детали больше не описаны здесь снова.
Кроме того, система передачи данных может дополнительно включать в себя другой коммутатор 1730 OpenFlow.
Можно видеть, что в данном варианте осуществления для первой записи таблицы потока, переносимой в сообщении протокола OpenFlow, переданной программно-определенным сетевым контроллером 1710 в коммутатор 1720 OpenFlow, поскольку набор первого поля в первой записи таблицы потока переносит индекс фактического значения в наборе первого поля, вместо переноса фактического значения в наборе первого поля. При техническом воплощении объем данных индекса фактического значения поля обычно меньше чем или даже гораздо меньше, чем фактическое значение поля. Поэтому, механизм предоставления записи таблицы потока в данном варианте осуществления помогает уменьшить объем передаваемых служебных данных в канале управления между программно-определенным сетевым контроллером 1710 и коммутатором OpenFlow, уменьшая, таким образом, риск перегрузки канала управления, также помогает уменьшить потребление сетевых ресурсов коммутатора OpenFlow и помогает удовлетворять требованиям сложного сетевого взаимодействия.
Как показано на фиг. 18, вариант осуществления настоящего изобретения дополнительно направлен на другую систему передачи данных, которая может включать в себя: первый программно-определенный сетевой контроллер 1810, второй программно-определенный сетевой контроллер 1820, устройство 1830 виртуального уровня и коммутатор 1840 OpenFlow.
Первый программно-определенный сетевой контроллер 1810 выполнен с возможностью передачи первого сообщения протокола OpenFlow, где первое сообщение OpenFlow протокола OpenFlow переносит первую запись таблицы потока, и первое поле в первой записи таблицы потока переносит индекс фактического значения в первом поле.
Второй программно-определенный сетевой контроллер 1820 выполнен с возможностью передачи второго сообщения протокола OpenFlow, где второе сообщение протокола OpenFlow переносит вторую запись таблицы потока, и четвертое поле во второй записи таблицы потока переносит индекс фактического значения в четвертом поле.
Устройство 1830 виртуального уровня выполнено с возможностью приема первого сообщения протокола OpenFlow из первого программно-определенного сетевого контроллера 1810; приема второго сообщения протокола OpenFlow из второго программно-определенного сетевого контроллера 1820; комбинирование первой записи таблицы потока и второй записи таблицы потока в третью запись таблицы потока; и передачи третьего сообщения протокола OpenFlow, переносящего третью запись таблицы потока в коммутатор OpenFlow.
Коммутатор 1840 OpenFlow выполнен с возможностью приема третьего сообщения протокола OpenFlow; разделения третьей записи таблицы потока, переносимой в третье сообщение протокола OpenFlow в первой записи таблицы потока и второй записи таблицы потока; получения фактического значения первого поля на основе индекса фактического значения первого поля; получения фактического значения четвертого поля на основе индекса фактического значения четвертого поля; замены индекса фактического значения в первом поле, переносимого в первом поле, в первой записи таблицы потока, на фактическое значение первого поля; и замены индекса фактического значения четвертого поля, переносимого в четвертом поле, во второй записи таблицы потока, на фактическое значение четвертого поля.
Следует понимать, что программно-определенный сетевой контроллер в данном варианте осуществления может иметь некоторые или все из программно-определенных сетевых контроллеров, описанных в представленном выше варианте осуществления. Коммутатор 1840 OpenFlow может иметь некоторые или все коммутаторы OpenFlow, описанные в представленном выше варианте осуществления. Устройство 1830 виртуального уровня может иметь некоторые или все из устройств виртуального уровня, описанных в представленном выше варианте осуществления. Функции программно-определенного сетевого контроллера, коммутатор 1840 OpenFlow и устройство 1830 виртуального уровня могут быть, в частности, воплощены в соответствии со способом в представленном выше варианте осуществления способа. Обработку конкретного воплощения функций можно найти по ссылке на соответствующее описание представленного выше способа варианта осуществления, и его детали не будут описаны здесь снова.
Кроме того, система передачи данных может дополнительно включать в себя другой коммутатор 1850 OpenFlow.
Можно видеть, что, в данном варианте осуществления, для первой записи таблицы потока, переносимой в сообщении протокола OpenFlow, передаваемом контроллером SDN в коммутатор OpenFlow, набор первого поля в первой записи таблицы потока переносит индекс фактического значения в наборе первого поля, вместо переноса фактического значения в наборе первого поля. При техническом воплощении объем данных индекса фактического значения поля обычно меньше чем или даже гораздо меньше, чем фактическое значение этого поля. Поэтому, механизм предоставления записи таблицы потока в данном варианте осуществления помогает уменьшить количество служебных сигналов в канале управления между контроллером SDN и коммутатором OpenFlow, уменьшая, таким образом, риск перегрузки канала управления, также помогает уменьшить потребление сетевых ресурсов устройства коммутации, и помогает удовлетворять требованиям сложного сетевого взаимодействия. Кроме того, устройство виртуального уровня между контроллером SDN и коммутатором OpenFlow может дополнительно комбинировать несколько записей таблицы потока. Таким образом, объем данных передаваемых записей таблицы потока дополнительно уменьшается.
Следует отметить, что, чтобы сделать описание кратким, представленные выше варианты осуществления, направленные на способ, выражены как последовательность действий. Однако, для специалиста в данной области техники должно быть понятно, что настоящее изобретение не ограничено описанной последовательностью действий, поскольку, в соответствии с настоящим изобретением, некоторые этапы могут быть выполнены в других последовательностях или могут быть выполнены одновременно. Кроме того, для специалиста в данной области техники должно быть также понятно, что все варианты осуществления, описанные в описании, представляют собой просто примеры вариантов осуществления, и соответствующие действия и модули не во всех случаях являются обязательными в настоящем изобретении.
В представленных выше вариантах осуществления описание каждого варианта осуществления выполнено, ориентируясь на определенные фокусы. Для части, которая не описана подробно в варианте осуществления, ссылка может быть сделана на соответствующие описания в других вариантах осуществления.
В некоторых вариантах осуществления, представленных в настоящей заявке, следует понимать, что раскрытое устройство может быть воплощено, используя другие подходы. Например, описанный вариант осуществления, направленный на устройство, является просто примером. Например, разделение на модули представляет собой простое разделение логической функции и может представлять собой другое разделение при фактическом воплощении. Например, множество модулей или компонентов могут быть скомбинированы или интегрированы в другую систему, или некоторые свойства могут игнорироваться или не выполняться. Кроме того, отображаемые или описанные взаимные соединения или прямые соединения или соединения для передачи данных могут быть воплощены через некоторые интерфейсы. Опосредованные соединения или соединения для передачи данных между устройствами, или модулями могут быть воплощены в электронной или в других формах.
Модули, описанные, как отдельные части, могут быть или могут нет быть физически отдельными, и части, отображенные, как модули, могут представлять собой или могут не представлять собой физические модули, могут быть расположены в одном местоположении, или могут быть распределены во множестве сетевых модулей. Некоторые или все из этих модулей могут быть выбраны в соответствии с фактическими потребностями для достижения целей решений вариантов осуществления.
Кроме того, функциональные модули в вариантах осуществления настоящего изобретения могут быть интегрированы в один модуль обработки, или каждый из модулей может существовать отдельно физически, или два, или больше модуля могут быть интегрированы в один модуль. Интегрированный модуль может быть воплощен в форме аппаратных средств, или может быть воплощен в форме программного функционального модуля.
Когда интегрированный модуль воплощен в форме программного функционального модуля и продается или используется, как независимый продукт, интегрированный модуль может быть сохранен на считываемом в компьютере носителе информации. На основе такого понимания, технические решения настоящего изобретения, по существу, или частично, вносящие вклад в предшествующий уровень техники, или все, или часть технических решений могут быть воплощены в форме программного продукта. Программный продукт сохранен на носителе информации и включает в себя несколько инструкций для инструктирования компьютерного устройства (которое может представлять собой персональный компьютер, сервер или сетевое устройство) для выполнения всех или части этапов способов, описанных в вариантах осуществления настоящего изобретения. Представленный выше носитель информации включает в себя: любой носитель, который может сохранять программный код, такой как флэш-привод USB, постоянное запоминающее устройство (ROM, Read-Only Memory), оперативное запоминающее устройство (RAM, Random Access Memory), съемный жесткий диск, магнитный диск или оптический диск.
Представленные выше варианты осуществления предназначены просто для описания технических решений настоящего изобретения, но не предназначены для ограничения настоящего изобретения. Хотя настоящее изобретение подробно описано со ссылкой на представленные выше варианты осуществления, для специалиста в данной области техники должно быть понятно, что все еще могут быть выполнены модификации для технических решений, описанных в представленных выше вариантах осуществления, или они могут выполнить эквивалентные замены их некоторых технических свойств, без выхода за пределы сущности и объема технических решений вариантов осуществления настоящего изобретения.