УСТРОЙСТВО ДЛЯ ПРИЕМА И ПЕРЕДАЧИ ДАННЫХ С ВОЗМОЖНОСТЬЮ ОСУЩЕСТВЛЕНИЯ ВЗАИМОДЕЙСТВИЯ С OpenFlow КОНТРОЛЛЕРОМ
DEVICE FOR RECEIVING AND TRANSMITTING DATA WITH THE POSSIBILITY OF INTERACTION WITH OpenFlow CONTROLLER

ОБЛАСТЬ ТЕХНИКИ
Изобретение относится к области телекоммуникации, связи и передачи данных.
УРОВЕНЬ ТЕХНИКИ
Программно-конфигурируемая сеть (SDN от англ. Software-defined Networking, также программно-определяемая сеть) - сеть передачи данных, в которой уровень управления сетью отделен от устройств передачи данных и реализуется на программном уровне, одна из форм виртуализации вычислительных ресурсов.
Ключевые принципы программно-конфигурируемых сетей - разделение процессов передачи и управления данными, централизация управления сетью при помощи унифицированных программных средств, виртуализация физических сетевых ресурсов. Протокол OpenFlow, реализующий независимый от производителя интерфейс между логическим контроллером сети и сетевым транспортом, является одной из реализаций концепции программно-конфигурируемой сети и считается движущей силой ее распространения и популяризации.
Коммутатор - один из центральных элементов компьютерной сети. Коммутаторы являются структурными элементами всех бизнес-коммуникаций, от передачи данных до голосовой связи и от видеосвязи до беспроводного доступа. Они способны увеличить чистую прибыль компании благодаря повышению производительности, сократить эксплуатационные расходы и повысить уровень безопасности и обслуживания клиентов. Программируемый коммутатор обеспечивает более высокую гибкость, поскольку коммутатор можно контролировать и настраивать локально или удаленно для управления передачей трафика по сети и доступом ко всей сети.
В архитектуре программно-конфигурируемой сети выделяется три уровня:
- инфраструктурный уровень, на котором функционируют сетевые коммутаторы и каналы передачи данных;
- уровень управления - набор программных средств, физически отделенных от инфраструктурного уровня, обеспечивающий реализацию механизмов управления устройствами инфраструктурного уровня;
- уровень сетевых приложений.
Ядром уровня управления программно-конфигурируемой сетью является сетевая операционная система - программное средство, обеспечивающее, с одной стороны, интерфейс со средствами инфраструктурного уровня (например, динамическое изменение таблиц маршрутизации), и с другой стороны - прикладной программный интерфейс для уровня сетевых приложений, сформулированный в терминах более высокого уровня абстракции (например, «имя узла», «имя пользователя»), нежели используется в параметрах конфигурации сетевых устройств (IP-адрес, маска подсети, МАС-адрес).
Стандарт OpenFlow является основной движущей силой концепции программно-конфигурируемых сетей и наиболее широко применимым на сегодняшнее время стандартом для их построения.
Одно из направлений современных исследований: разработка прототипа OpenFlow коммутатора с улучшенными возможностями.
Из уровня техники известно изобретение «Communication method, software defined network SDN switch and communication system» («CN 103428771 А», опубликовано 04.12.2013).
Данный метод описывает возможность связи OpenFlow коммутатора с OpenFlow контроллером с использованием беспроводной среды. Недостатком данного метода является то, что он не решает проблему ограничения реализации протокола OpenFlow в современных коммутаторах с поддержкой данного стандарта, а именно структурные ограничения при аппаратном поиске и нехватка гибкости в работе с произвольными полями сетевых заголовков.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Данное изобретение направлено на устранение недостатков, присущих существующим решениям.
В качестве реализации изобретения может быть предложено устройство для приема и передачи данных с возможностью осуществления взаимодействия с OpenFlow контроллером, содержащее один или более сетевых интерфейсов, средство обмена информацией между блоками, блок приема информации, блок первоначальной идентификации потока, блок обработки инструкций, блок реализации действий, блок обработки групповых действий, блок межмодульного взаимодействия, блок взаимодействия с контроллером; причем один или более сетевых интерфейсов соединены с блоком приема информации, выход блока приема информации подключен к входу блока первоначальной идентификации потока, а вход блока приема информации подключен к выходу блока междумодульного взаимодействия, вход которого подключен к выходу блока обработки инструкций, при этом блок обработки инструкций соединен с блоком первоначальной идентификацией потока, а блок идентификации потока, в свою очередь, соединен с блоком междумодульного взаимодействия, также блок обработки инструкций соединен с блоком реализации действий, который соединен с блоком обработки групповых действий и с блоком взаимодействия с контроллером, который соединен с блоком обработки инструкций, причем средство обмена информацией между блоками соединено со всеми вышеперечисленными блоками и с одним или более вышеуказанных сетевых интерфейсов. Все перечисленные элементы находятся в едином конструктивном исполнении. Технический результат от использования изобретения заключается в увеличении скорости в обработке сетевых заголовков, что повышает скорость и обеспечивает возможность точно идентифицировать потоки информации в сети и гибко определять политику их обработки.
Указанный технический результат достигается тем, что архитектура коммутатора оптимизируется следующим образом:
- используется масштабируемая ТСАМ память для классификации каждого проходящего через коммутатор фрагмента сетевых обменов;
- используются модули памяти для хранения произвольных смесей буферов пакетов, элементов потоковых таблиц, разной ширины и глубины, выявляющих как точное соответствие шаблонам, так и шаблонам с метасимволами.
При этом устройство может поддерживать стандарты связи 802.3ab; 802.3ае; 802.3аn.
Сетевые интерфейсы устройства могут быть выполнены по технологиям Gigabit Ethernet; 10 Gigabit Ethernet.
Управление устройством может осуществляться при помощи удаленного доступа через сеть Интернет или локальную вычислительную сетью или напрямую через выделенный для этого отдельный порт.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
В данном устройстве под системой подразумевается компьютерная система, ЭВМ (электронно-вычислительная машина), ЧПУ (числовое программное управление), ПЛК (программируемый логический контроллер), компьютеризированные системы управления и любые другие устройства, способные выполнять заданную, четко определенную последовательность операций (действий, инструкций).
Под устройством обработки команд подразумевается электронный блок либо интегральная схема (микропроцессор), исполняющая машинные инструкции (программы или микрокоды).
Устройство обработки команд считывает и выполняет машинные инструкции (программы) с одного или более устройства хранения данных. В роли устройства хранения данных могут выступать, но не ограничиваясь, жесткие диски (HDD), флеш-память, постоянное запоминающее устройство (ПЗУ), твердотельные накопители (SSD), оптические приводы.
Программа - набор инструкций, предназначенных для исполнения устройством управления вычислительной машины или устройством обработки команд.
Ниже будут рассмотрены некоторые термины, которые в дальнейшем будут использоваться при описании изобретения.
Сетевой коммутатор (жарг. свитч от англ. switch - переключатель) - устройство, предназначенное для соединения нескольких узлов компьютерной сети в пределах одного или нескольких сегментов сети. Коммутатор работает на канальном (втором) уровне модели OSI. Коммутаторы были разработаны с использованием мостовых технологий и часто рассматриваются как многопортовые мосты. Для соединения нескольких сетей на основе сетевого уровня служат маршрутизаторы (3 уровень OSI). OpenFlow коммутатор способен выполнять коммутацию пакетов на 2-4 уровне модели OSI в зависимости от заданного набора правил.
Ассоциативная память (АП) или Ассоциативное запоминающее устройство (АЗУ) является особым видом машинной памяти, используемой в приложениях очень быстрого поиска. Известна также как память, адресуемая по содержимому, ассоциативное запоминающее устройство, контентно-адресуемая память или ассоциативный массив, хотя последний термин чаще используется в программировании для обозначения структуры данных. Двоичная АП - простейший тип ассоциативной памяти, который использует слова поиска данных, состоявшие полностью из единиц и нулей. В троичной АП (ТСАМ) добавляется третье значение для сравнения «X» или «не важно», для одного или более битов в сохраненном слове данных, добавляя таким образом большей гибкости поиску. Например, в троичной АП могло бы быть сохранено слово «10ХХ0», которое выдаст совпадение на любое из четырех слов поиска «10000», «10010», «10100» или «10110». Добавление гибкости к поиску приходит за счет увеличения цены двоичной АП, поскольку внутренняя ячейка памяти должна теперь закодировать три возможных состояния вместо двух. Это дополнительное состояние обычно осуществляется добавлением бита маски «важности»(«важно»/«не важно») к каждой ячейке памяти.
OpenFlow - протокол управления процессом обработки данных, передающихся по сети передачи данных маршрутизаторами и коммутаторами, реализующий технологию программно-конфигурируемой сети.
Протокол используется для управления сетевыми коммутаторами и маршрутизаторами с центрального устройства-контроллера сети (например, с сервера или даже персонального компьютера). Это управление заменяет или дополняет работающую на коммутаторе (маршрутизаторе) встроенную программу, осуществляющую построение маршрута, создание карты коммутации и т.д. Контроллер используется для управления таблицами потоков коммутаторов, на основании которых принимается решение о передаче принятого пакета на конкретный порт коммутатора. Таким образом, в сети формируются прямые сетевые соединения с минимальными задержками передачи данных и необходимыми параметрами.
В программно-конфигурируемой сети уровни управления сетью и передачи данных разделяются за счет переноса функций управления (маршрутизаторами, коммутаторами и т.п.) в приложения, работающие на отдельном сервере (контроллере). Заинтересованность ИТ-компаний в ПКС вызвана тем, что такие технологии позволяют повысить эффективность сетевого оборудования на 25-30%, снизить на 30% затраты на эксплуатацию сетей, превратить управление сетями из искусства в инженерию, повысить безопасность и предоставить пользователям возможность программно создавать новые сервисы и оперативно загружать их в сетевое оборудование.
В архитектуре программно-конфигурируемой сети можно выделить три уровня:
инфраструктурный уровень, предоставляющий набор сетевых устройств (коммутаторов и каналов передачи данных);
уровень управления, включающий в себя сетевую операционную систему, которая обеспечивает приложениям сетевые сервисы и программный интерфейс для управления сетевыми устройствами и сетью;
уровень сетевых приложений для гибкого и эффективного управления сетью.
Виртуализация управления сетью позволяет снизить расходы на построение и сопровождение программно конфигурируемых сетей.
Программные средства программно-конфигурируемой сети позволяют администраторам добавлять новую функциональность к уже имеющейся сетевой архитектуре. При этом новые функции будут работать на многих платформах - их не придется реализовывать заново во встроенном программном обеспечении коммутаторов каждого поставщика.
На централизованном контроллере программно-конфигурируемой сети системный администратор может наблюдать всю сеть в едином представлении, за счет чего повышаются удобство управления, безопасность и упрощается выполнение ряда других задач. Действительно, поскольку администратор видит все потоки трафика, то ему легче замечать вторжения, назначать приоритеты различным типам трафика и разрабатывать правила реагирования сети при заторах и проблемах с оборудованием.
Теоретически неограниченные возможности сетей программно-конфигурируемой сети к расширению позволяют строить «облачные» решения, масштабируемые в зависимости от решаемых задач. При этом сеть обладает требуемой «интеллектуальностью», необходимой, в частности, для оркестровки работы обширных групп коммутаторов.
Наиболее перспективным и активно развивающимся стандартом для программно-конфигурируемой сети является OpenFlow (открытый стандарт, в котором описываются требования, предъявляемые к коммутатору, поддерживающему протокол OpenFlow для удаленного управления).
Механизм работы коммутатора, поддерживающего стандарт OpenFlow, достаточно прост. У каждого пришедшего пакета «вырезается» заголовок (битовая строка определенной длины). Для этой битовой строки в таблицах потоков, начиная с первой, ищется правило, у которого поле признаков ближе всего соответствует (совпадает) заголовку пакета. При наличии совпадения над пакетом и его заголовком выполняются преобразования, определяемые набором инструкций, указанных в найденном правиле. Инструкции, ассоциированные с каждой записью таблицы, описывают действия, связанные с пересылкой пакета, модификацией его заголовка, обработкой в таблице групп, обработкой в конвейере и пересылкой пакета на определенный порт коммутатора. Инструкции конвейера обработки позволяют пересылать пакеты в последующие таблицы для дальнейшей обработки и в виде метаданных передавать информацию между таблицами. Инструкции также определяют правила модификации счетчиков, которые могут быть использованы для сбора разнообразной статистики.
Если нужного правила в первой таблице не обнаружено, то пакет инкапсулируется и отправляется контроллеру, который формирует соответствующее правило для пакетов данного типа и устанавливает его на коммутаторе (или на наборе управляемых им коммутаторов), либо пакет может быть сброшен (в зависимости от конфигурации коммутатора).
Запись о потоке может предписывать переслать пакет в определенный порт (обычный физический порт либо виртуальный, назначенный коммутатором, или зарезервированный виртуальный порт, установленный спецификацией протокола). Зарезервированные виртуальные порты могут определять общие действия пересылки: отправка контроллеру, широковещательная (лавинная) рассылка, пересылка без OpenFlow. Виртуальные порты, определенные коммутатором, могут точно определять группы агрегирования каналов, туннели или интерфейсы с обратной связью.
Записи о потоках могут также указывать на группы, в которых определяется дополнительная обработка. Группы представляют собой наборы действий для широковещательной рассылки, а также наборы действий пересылки с более сложной семантикой, например быстрое изменение маршрута или агрегирование каналов. Механизм групп позволяет эффективно изменять общие выходные действия для потоков. Таблица групп содержит записи о группах, содержащие список контейнеров действий со специальной семантикой, зависящей от типа группы. Действия в одном или нескольких контейнерах действий применяются к пакетам, отправляемым в группу.
Разработчики коммутаторов могут быть свободны в реализации их внутренней структуры, однако процедура просмотра пакетов и семантика инструкций должны быть для всех одинаковы. Например, в то время как поток может использовать все группы для пересылки в некоторое множество портов, разработчик коммутатора может выбрать для реализации этого единую битовую маску внутри аппаратной таблицы маршрутизации. Другой пример - это процедура просмотра таблиц: конвейер физически может быть реализован с помощью различного количества аппаратных таблиц. Установка, обновление и удаление правил в таблицах потоков коммутатора осуществляются контроллером. Правила могут устанавливаться реактивно (в ответ на пришедшие пакеты) или проактивно (заранее, до прихода пакетов).
Управление данными в OpenFlow осуществляется не на уровне отдельных пакетов, а на уровне их потоков. Правило в коммутаторе OpenFlow устанавливается с участием контроллера только для первого пакета, а затем все остальные пакеты потока его используют.
Для оптимизации вышеперечисленных процессов предлагается устройство для приема и передачи данных с возможностью осуществления взаимодействия с OpenFlow контроллером, содержащее один или более сетевых интерфейсов, средство обмена информацией между блоками, блок приема информации, блок первоначальной идентификации потока, блок обработки инструкций, блок реализации действий, блок обработки групповых действий, блок межмодульного взаимодействия, блок взаимодействия с контроллером; причем один или более сетевых интерфейсов соединены с блоком приема информации, выход блока приема информации подключен к входу блока первоначальной идентификации потока, а вход блока приема информации подключен к выходу блока междумодульного взаимодействия, вход которого подключен к выходу блока обработки инструкций, при этом блок обработки инструкций соединен с блоком первоначальной идентификацией потока, а блок идентификации потока в свою очередь соединен с блоком междумодульного взаимодействия, также блок обработки инструкций соединен с блоком реализации действий, который соединен с блоком обработки групповых действий и с блоком взаимодействия с контроллером, который соединен с блоком обработки инструкций, причем средство обмена информацией между блоками соединено со всеми вышеперечисленными блоками и с одним или более вышеуказанных сетевых интерфейсов. Все перечисленные элементы находятся в едином конструктивном исполнении.
Работа модулей рассматриваемого устройства происходит следующим образом: прием пакета, выделение свободного буфера и сохранение тела пакета в нем, формирование дескриптора пакета по заголовочным данным пакета, сопоставление дескриптора пакета набору правил классификации потоков, содержащихся в таблицах потоков, с целью его классификации, выбор идентификатора классификатора потоков, выборка микропрограммы по ранее вычисленному идентификатору потока, применение микропрограммы, модификация заголовочных данных пакета и дескриптора согласно заданной микропрограмме обработки, обработка пакета согласно сопоставленному микропрограммой модификатору группы потоков, дублирование пакета, если это определено микропрограммой обработки, отправка пакета(-ов), освобождение ранее захваченного буфера.
Коммутатор является системой, управляемой потоком событий, реализующей обработку битовых векторов ограниченной длины - фрагментов сетевого обмена. Передача битового вектора в коммутатор является событием, в терминах имитационного моделирования, а коммутатор реализует формирование реакции на событие. При этом по источнику возникновения потоков событий и по их свойствам потоки могут быть разделены на два основных класса:
- поток данных пользователей - data plane;
- поток данных управления - control plane.
Сам же коммутатор представляет собой совокупность детерминированных конечных автоматов (ДКА) с состоянием.
Обработка потоков данных пользователей в рамках коммутатора сводится к последовательной обработке каждого отдельного фрагмента данных - кадра Ethernet согласно заложенной в коммутатор логике. Под заложенной в коммутатор логикой в случае OpenFlow коммутатора понимается не фиксированная производителем изделия логика, а совокупное состояние всех ДКА обработки данных data plane, изменяемое воздействиями как data plane, так и control plane.
Основная логика коммутатора реализует обработку пакетов, проходящих через него. Обработка кадров в коммутаторе описывается как суперпозиция отображений, каждое из которых отвечает отдельному требованию спецификации OpenFlow.
Со структурной точки зрения коммутатор является совокупностью блоков, каждый из которых реализует:
- вычисление заданной функции, реализуемой посредством ДКА;
- чтение наборов входных значений;
- формирование наборов результирующих значений.
Блоки коммутатора образуют ДКА, реализуемый через конвейер. При этом контекст обработки каждого фрагмента данных представляет собой совокупность:
- фрагмента обрабатываемых данных (пакета), или же пары:
- числа, принадлежащего заданному подмножеству Z (идентификатор буфера, содержащего пакет);
- вектора фиксированной длины, каждый из элементов которого принадлежит некоторому заданному подмножеству Z - дескриптора фрагмента обрабатываемых данных (дескриптора пакета);
- числа, принадлежащего заданному подмножеству Z - идентификатор классификатора, суть таблицы потоков OpenFlow (глобального состояния экземпляра ДКА коммутатора).
Обработка каждого пакета реализуется по следующему алгоритму (см. фиг. 1):
1. Прием пакета.
2. Выделение свободного буфера и сохранение тела пакета в нем.
3. Формирование дескриптора пакета по заголовочным данным пакета, согласно спецификации.
4. Выбор идентификатора первичного классификатора потоков.
5. Заполнение вспомогательных служебных полей контекста обработки.
6. Задание ограничения на длины цепочки обработки пакета.
7. Выполнение в цикле шагов 8, 9, 10, пока не удовлетворен критерий завершения обработки пакета.
8. Классификация пакета по таблицам потоков.
9. Обработка фрагмента сообщения согласно идентификатору группы потоков, определенному классификатором.
10. Декремент счетчика длины цепочки обработки пакета.
11. Конец тела цикла.
12. Освобождение ранее захваченного буфера.
При этом, как видно из приведенной схемы, идентификатор группы потоков выступает в роли идентификатора микропрограммы, по которой должно быть осуществлено преобразование над полями контекста обработки пакета. В результате обработки пакета изменению могут быть подвержены все неслужебные поля контекста обработки пакета:
- desc - дескриптор пакета;
- table - селектор классификатора;
- complete - завершение обработки текущего пакета.
Как видно из схемы, штатное завершение обработки пакета может произойти из-за превышения допустимой длины цепи обработки пакета, что, в свою очередь, может быть следствием:
- наличия цикла в цепи обработки пакета, обусловленного некорректным набором правил преобразований дескриптора в функции process;
- несогласованностью ограничения на максимальную длину цепочки обработки пакетов и де-факто необходимым и продиктованным набором преобразований над некоторой группой потоков.
В соответствии с требованиями спецификации «Ошибка! Источник ссылки не найден.» классификация потоков должна осуществляться для каждого отдельно взятого пакета. Классификация осуществляется на базе значений фиксированного набора полей заголовочных данных пакетов и заданных табличных значений классификаторов, путем выбора из таблицы потоков номера потока, имеющего максимальный вес (параметр потока) и совпадающего по заданной маске с заданным шаблоном (см. фиг. 2).
В рамках модели коммутатора рассматривается элемент памяти ТСАМ как средство реализации классификатора.
На данный момент элемент ТСАМ является единственным эффективным методом поиска по шаблонам с масками и весами. Это осуществляется за счет реализации в элементах ТСАМ массового параллелизма - вариант схемы 2 с параллельным вычислением тела внешнего цикла (строки 6-18) и последующим выбором наилучшего результата на каскаде компараторов и мультиплексоров.
В данном разделе приведено описание основного конвейера, реализующего обработку фрагментов сетевых потоков и являющегося центральным компонентом модулей обработки данных типов 1G, 10G.
Разработанная модель коммутатора включает в свой состав следующие функциональные блоки (см. фиг. 3):
- Блок приема информации - обеспечивает чтение потока входящих сообщений, буферизацию каждого из них в одной из очередей входящих сообщений в зависимости от значений флаговых полей заголовочных данных, формирование дескриптора сообщения и контекста обработки сообщения, передачу контекста на последующую обработку.
- Блок идентификации потока - обеспечивает обработку дескриптора сообщения, сопоставление дескриптора набору шаблонов, определение идентификатора шаблона с максимальным весом.
- Блок обработки инструкций - обеспечивает выборку дескриптора набора инструкций по идентификатору, применение инструкций путем модификации списка дескрипторов действий, накапливаемых в контексте обработки сообщения.
- Блок реализации действий - обеспечивает отработку списка действий, содержащихся в контексте обработки пакета путем последовательного прогона контекста обработки через набор функциональных элементов, реализующих отработку отдельных воздействий на поля дескриптора сообщения.
- Блок обработки групповых сообщений - обеспечивает отработку наперед заданных правил по выбору исходящего порта из заданной группы, дублированию сообщений для последующей раздачи на группу портов, реализации широковещательной передачи.
- Блок межмодульного взаимодействия - обеспечивает передачу сообщений между модулями, входящими в состав коммутатора, для последующей выдачи в порт назначения коммутатора в зависимости от заданного в контексте обработки сообщения, логического номера исходящего порта. Данный блок также обеспечивает прием межмодульных транзакций от других модулей и направление сообщения в локальные порты.
- Блок взаимодействия с контроллером представляет собой распределенную систему, включающую в свой состав:
- Блок управляющего контроллера - обеспечивает отображение ресурсов модулей коммутатора в адресное пространство управляющего приложения, обеспечивает преобразование операций ввода-вывода в наборы транзакций шины AXI4 (выступает в качестве средства обмена информацией между блоками), связующей модули.
- Блоки управления модулями коммутатора - реализуют прозрачный мост между внешней шиной AXI4 (выступает в качестве средства обмена информацией между блоками) и блоками параметрической и служебной информации функциональных блоков модуля коммутатора.
ПРИМЕР РЕАЛИЗАЦИИ
В качестве одного из вариантов реализации вышеописанного устройства для приема и передачи данных с возможностью осуществления взаимодействия с OpenFlow контроллером предлагается программно-аппаратный комплекс, который включает в свой состав:
- вычислитель на базе процессора общего назначения (например, ARM)
- ПО коммутатора
- ПО агента коммутатора
В качестве вычислителя на базе процессора ARM может выступать вычислительное устройство SmartFusion SOM (http://www.emcraft.com/products/133), производства EmCraft (http://www.emcraft.com), располагаемое на плате SOM-BSB development baseboard (http://www.emcraft.com/products/133#starter-kit). SmartFusion SOM представляет собой ПП размера 30 на 57 мм и включает в свой состав:
- СБИС СнК Microsemi SmartFusion sSOC на базе 100 MHz 32-bit ARM Cortex-M3, набор периферии, в том числе 100Mb/sec Fast Ethernet MAC
- 16 MB оперативной памяти
- 16 MB NOR flash
- Fast Ethernet PHY
На СнК выполняется ПО агента под управлением ОС Linux в варианте uclibc. Устройство хранения и/или чтения данных используется для хранения загрузочного образа системы и содержит файловую систему JFFS2 для хранения пользовательских данных, в которой располагается программное обеспечение агента, а также конфигурационный файл агента, содержащий описание подключенных модулей коммутатора, их настройки, а также, наборы начальных значений параметрических данных модулей коммутаторов (начальное заполнение правил таблицы OpenFlow, наборов инструкций и действий), применяемых при запуске ПО агента. Базовый набор конфигурационных данных хранится в файле в формате Ini.
Плата SOM-BSB используется для установки мезонина с СнК, подключения к источнику питания (5В, постоянного тока) через USB разъем, подключения системы по FastEthernet через гнездо RJ45.
За основу BSP взят пакет Linux BSP, поставляемый в составе изделия SmartFusion StarterKit (http://www.emcraft.com/products/133#starter-kit). Для обеспечения необходимого для выполнения ПО агента набора сервисов ОС Linux изменены настройки времени компиляции ядра ОС Linux и правила сборки загрузочного образа. Выполнена сборка СПО из исходных текстов. Полученный образ загрузки системы записан в NOR flash, входящий в состав модуля SmartFusion SOM.
Вычислитель обеспечивает выполнение ПО агента под управлением ОС вычислителя:
- содержит сетевой интерфейс, предоставляет агенту возможность взаимодействия с узлом контроллера OpenFlow по сети Ethernet, по протоколу прикладного уровня OpenFlow, сообщения которого инкапсулируются в поток TCP/IP;
- содержит набор СПО, предоставляющий набор стандартных интерфейсов POSIX по управлению ресурсами вычислителя: управление памятью, процессорным временем, наборами потоков команд, средств межпотокового взаимодействия;
- содержит вспомогательный интерфейс взаимодействия с модулями коммутатора, предоставляет агенту возможность обмена транзакциями с модулями коммутатора, инкапсулирующим наборы команд и сопроводительных данных, достаточными для реализации операций чтения и записи не менее чем 32-битных чисел по 32-битным адресам, обеспечивает атомарность производимых транзакций.
ПО агента коммутатора утилизирует ресурсы вычислителя для:
- взаимодействия с контроллером OpenFlow:
- реализации протокола OpenFlow 1.3.2;
- обработки запросов и формирования ответов/уведомлений;
- взаимодействия с модулями коммутатора:
- формирования серии транзакций записи для изменения настроек отдельных блоков модулей коммутатора;
- формирования серии транзакций записи для инъекции полезной нагрузки PACKET OUT сообщений протокола OpenFlow в основной тракт обработки данных модулей коммутатора;
- формирования серии транзакций чтения для отслеживания состояния и изменения состояния отдельных блоков модулей коммутатора;
- формирования серии транзакций чтения для получения буферизованных тел принятых пакетов, предназначенных для последующей передачи на контроллер в сообщениях PACKET IN;
- трансляцию воздействий, реализуемых контроллером по протоколу OpenFlow, в воздействия на различные блоки модули коммутатора;
- трансляцию изменений состояния различных блоков модулей коммутатора в наборы сообщений протокола OpenFlow;
- фоновый мониторинг состояния блоков модулей коммутатора;
- чтение и запись конфигурации агента, набора настроек по умолчанию из (в) конфигурационный файл;
- ведение журнала активности ПО, системных значимых событий, ошибок.
Специалисту в данной области очевидно, что конкретные варианты реализации устройства для приема и передачи данных были описаны здесь в целях иллюстрации, допустимы различные модификации, не выходящие за рамки и сущности объема изобретения.