Open vSwitch часть №5. Тонкости конфигурирования

Open vSwitch — все статьи

Конфигурация всех Open vSwitch коммутаторов, портов, настройки поддерживаемых протоколов хранятся в собственной базе данных OVS. Утилита ovs-vsctl предоставляет интерфейс для внесения изменений в эту БД. Для некоторых типичных задач существуют вполне понятные, говорящие сами за себя параметры, подобные представленным в предыдущем разделе. Но как только появится необходимость в каком либо продвинутом функционале, например, создании GRE-туннеля, необходимо будет на прямую править записи БД(в формате JSON) с помощью специального синтаксиса. В общем случае синтаксис для внесения изменений в БД выглядит так:

# ovs-vsctl <команда> <таблица> <запись> <ключ=значение>

Например разрешим порту eth0 пропускать во внешний мир трафик из определенных VLAN-ов:

# ovs-vsctl set port eth0 trunks=10,20,30,40,50

Вместо команды set, могут также использоваться:

list <таблица> <запись>
find <таблица> <условие>
get <таблица> <запись> <ключ=значение>
add <таблица> <запись> <ключ=значение>
remove <таблица> <запись> <ключ=значение>
clear <таблица> <запись> <ключ>
create <таблица> <запись> <ключ=значение>
destroy <таблица> <запись>
wait-until <таблица> <запись> <ключ=значение>

Думаю, что по началу команд, понятно их предназначение без пояснения. Единственный вопрос вызывает wait-until. Но к сожалению, я так и не понял как она работает.
В стандартной конфигурации в OVSDB существуют следующие таблицы:

Open_vSwitch — Cхема
Bridge
Port
Interface
Flow_Table  — конфигурация OpenFlow
QoS
Mirror
Controller — параметры подключения к контроллеру OpenFlow
Manager  — конфигурация OVSDB
NetFlow
SSL
sFlow
IPFIX
Flow_Sample_Collector_Set

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

# ovs-vsctl list port

а конфигурацию (запись) конкретно для eth0:

# ovs-vsctl list port eth0

так же можно пользоваться поиском оперируя различными параметрами
например, вывести все порты включенные в конкретный VLAN:

# ovs-vsctl find port tag=10