Создаем ovs-br0
ovs-vsctl add-br ovs-br0
Добавим в него нужную карту
ovs-vsctl add-port ovs-br0 enp4s0
Добавим нужные vlan
ovs-vsctl set port enp4s0 trunks=200,3020,3304
Получим примерно следующие
ovs-vsctl show
24c28020-602c-4736-be91-67aff6165651
Bridge "ovs-br0"
Port "enp4s0"
trunks: [200,3020,3304]
Interface "enp4s0"
Port "ovs-br0"
Interface "ovs-br0"
type: internal
ovs_version: "2.5.0"
Дальше нам нужно создать файл vlan.xml, вот примерное содержание
<network>
<name>ovs-network</name>
<forward mode='bridge'/>
<bridge name='ovs-br0'/>
<virtualport type='openvswitch'/>
<portgroup name='trunkPortGroup'>
<vlan trunk='yes'>
<tag id='200'/>
<tag id='1001'/>
<tag id='1030'/>
<tag id='3000'/>
<tag id='3003'/>
<tag id='3004'/>
<tag id='3100'/>
</vlan>
</portgroup>
</network>
Далее перейдем в virsh и выполним команды
net-define /root/vlan.xml
net-start ovs-network
net-autostart ovs-network
Нужно отредактировать файл виртуальной машины edit NAME
Добавить секцию
<interface type='network'>
<mac address='49:52:00:5e:b9:a2'/>
<source network='ovs-network' portgroup='trunkPortGroup'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</interface>
После запустить виртуальную машину, командой start NAME
В самой виртуальной машине нужно сконфигурировать vlan, и проверить хождение пакетов.
Если все настроено верно, то вывод ovs-vsctl show должен быть таким.
24c28020-602c-4736-be91-67aff6165651
Bridge «ovs-br0»
Port «enp4s0»
trunks: [200,3020,3304
]
Interface «enp4s0»
Port «ovs-br0»
Interface «ovs-br0»
type: internal
Port «vnet3»
trunks: [200,3020,3304
]
Interface «vnet3»
ovs_version: «2.5.0»
Проверить работо способность можно будет ping-ом в нужном vlan или псмотрев таблицу мак адресов на коммутаторе.