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