Volem posar en el nostre node KVM el switch virtual Openvswitch. No cal que sigui exclusiu. Pot conviure amb xarxa definides tipus linux-brigde les que crea libvirt per defecte.
Instal·larem el paquet necessari
zypper install openvswitch
systemctl enable openvswitch.service
systemctl start openvswitch.service
Procedirem a la configuració amb wicked per integrar el switch virtual al port real del servidor.
Substituirem el fitxer actual:
cat /etc/sysconfig/network/ifcfg-enp3s0
IPADDR='192.168.100.10/24'
BOOTPROTO='static'
STARTMODE='auto'
Canviarem d’ubicació el fitxer original per no entrar en conflicte
mv /etc/sysconfig/network/ifcfg-enp3s0 /root
Pel següent que integrarem el port real que teniem configurat dins bridge virtual del openvswitch
cat >/etc/sysconfig/network/ifcfg-br0 <<EOF
IPADDR='192.168.100.10/24'
BOOTPROTO='static'
STARTMODE='auto'
OVS_BRIDGE="yes"
OVS_BRIDGE_PORT_DEVICE_1='enp3s0'
EOF
Per iniciar la configuració caldrà la comanda següent:
wicked ifup br0
Per integrar-lo amb KVM farem servir una interficies tap0
cat >>/etc/sysconfig/network/ifcfg-br0 <<EOF
OVS_BRIDGE_PORT_DEVICE_2='tap0'
EOF
Crearem també un fitxer de configuració pel dispositiu tap0
cat >/etc/sysconfig/network/ifcfg-tap0 <<EOF
STARTMODE='auto'
BOOTPROTO='none'
TUNNEL='tap'
TUNNEL_SET_OWNER=sergi
#TUNNEL_SET_GROUP=GROUP_NAME
EOF
Reiniciarem la configuració
wicked ifreload br0
Exemple d’execució amb QEMU
qemu-kvm -drive file=/PATH/TO/DISK-IMAGE 1 -m 512 -net nic,vlan=0,macaddr=00:11:22:EE:EE:EE -net tap,ifname=tap0,script=no,downscript=no
Exemple amb LIBVIRT
virsh edit VM_NAME
.
.
.
<interface type='network'>
<mac address='52:54:00:c3:e8:21'/>
<source network='ovs-vlan-100'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
</interface>
.
.
.
Definit una vlan com a xarxa de libvirt
cat >ovs-network.xml <<EOF
<network>
<name>ovs-network</name>
<forward mode='bridge'/>
<bridge name='br0'/>
<virtualport type='openvswitch'/>
<portgroup name='vlan-01' default='yes'>
</portgroup>
<portgroup name='vlan-02'>
<vlan>
<tag id='2'/>
</vlan>
</portgroup>
<portgroup name='vlan-03'>
<vlan>
<tag id='3'/>
</vlan>
</portgroup>
<portgroup name='vlan-all'>
<vlan trunk='yes'>
<tag id='2'/>
<tag id='3'/>
</vlan>
</portgroup>
</network>
EOF
virsh net-define ovs-network.xml
virsh net-start ovs-network
Desde el Cockpit hauria de veure’s així

Configurar la màquina virtual perquè utilitzi aquesta xarxa
<interface type="network">
<mac address="52:54:00:c3:e8:21"/>
<source network="ovs-network" portgroup="vlan-02"/>
<model type="virtio"/>
<address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
</interface>
Per utilitzar per defecte seria
<interface type="network">
<mac address="52:54:00:c3:e8:21"/>
<source network="ovs-vlan-default" />
<model type="virtio"/>
<address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
</interface>

Exemples diversos
cat >ovs-vlan-default.xml <<EOF
<network>
<name>ovs-vlan-default</name>
<forward mode='bridge'/>
<bridge name='br0'/>
<virtualport type='openvswitch'/>
<portgroup name='default' default='yes'>
</portgroup>
</network>
EOF
virsh net-define ovs-vlan-default.xml
virsh net-start ovs-vlan-default
virsh net-autostart ovs-vlan-default
VLAN 100
cat >ovs-vlan-100.xml <<EOF
<network>
<name>ovs-vlan-100</name>
<forward mode='bridge'/>
<bridge name='br0'/>
<virtualport type='openvswitch'/>
<portgroup name='vlan100' default='yes'>
<vlan>
<tag id='100'/>
</vlan>
</portgroup>
</network>
EOF
virsh net-define ovs-vlan-100.xml
virsh net-start ovs-vlan-100
virsh net-autostart ovs-vlan-100
Comandes interessants:
ovs-vsctl : Utilitat per consultar i configurar ovs-vswitchd
ovs-vsctl show
ovs-dpctl: administra els camins de dades Open vSwitch
ovs-dpctl show
ovs-ofctl: administra OpenFlow
ovs-ofctl show br0
ovs-appctl: Utilitat per configurar l’execució de dimonis Open vSwitch
ovs-appctl coverage/show