Openvswitch Cheat Sheet

Add libvirt network to be used with open vswitch

Create an xml file like below (it is going to be listed in networks)

The parameters are:

  • The name of the network
  • The forward mode is set to bridge
  • The bridge name is the bridge name
  • The virtualport is set to openvswitch

Then introduce this network to libvirt using commands below:


Add Mirror:

ovs-vsctl –id=@pout get port mir0 — –id=@sport get port eno4 — –id=@m create mirror name=obr0_mirror0 select-src-port=@sport output-port=@pout — set bridge obr0 mirrors=@m

where obr0 is the openvswitch bridge name.

mir0 is the mirror port attached to obr0

eno4 is the port to be mirrored

obr0_mirror0 is the name of the mirror

Add More than One Mirror:

ovs-vsctl –id=@pout get port mir0 — –id=@sport get port eno4 — –id=@m create mirror name=obr0_mirror0 — add bridge obr0 mirrors @m — set mirror obr0_mirror0 select-src-port=@sport select-dst-port=@sport output-port=@pout

repeat as many as mirror as you need!

Clear All Mirrors:

ovs-vsctl clear bridge ovsbr0 mirrors

List All Mirrors:

ovs-vsctl list mirror mymirror


Openvswitch RPM build on Centos 7

If you ever needed to build openvswitch for Centos 7 (including kernel module) this post may help you.

Commands to build a RPM:

Download openvswitch source. I’ve tested with 2.7.x and 2.9.x series. So I recommend you to do the same. It can be found at (if link becomes absolute look for a newer one, if newer one fails, look for this one)

wget can be used to download it:


we’ll be using some build tools, so install them to the system with the following command.

yum install gcc make python-devel openssl-devel kernel-devel graphviz ernel-debug-devel autoconf automake rpm-build redhat-rpm-config libtool python-six checkpolicy selinux-policy-devel

Then prepare the directories for rpmbuild.

mkdir -p rpmbuild/SOURCES/
mkdir -p rpmbuild/SPECS/

copy source to rpmbuild/SOURCES

cp openvswitch-2.7.0.tar.gz rpmbuild/SOURCES/

Now we have two copies of openvswitch source, one in SOURCES directory the other in the directory where we executed wget. Now navigate to the latter, and extract it.

tar xzf openvswitch-2.7.0.tar.gz

We’ll copy all spec files related to rhel to rpmbuild/SPECS/ from the directory that we extracted.

cp openvswitch-2.7.0/rhel/*.spec rpmbuild/SPECS/

We also need some files to be in SOURCES, so copy them as well,

cp openvswitch-2.7.0/rhel/* rpmbuild/SOURCES/

Now, it’s time to check our kernel version:

uname -a

yours may be different, so note your kernel version.

And finally time to build our kernel module for openvswitch:

rpmbuild -bb --without check -D "kversion 3.10.0-514.el7.x86_64" rpmbuild/SPECS/openvswitch-kmod-fedora.spec

If you updated your operating system, or had a kernel update, some of your links may be broken. To be more precise, link to build directory may be broken. You can check it with:

ls -la /lib/modules/3.10.0-514.el7.x86_64/build

This path should point to a directory, and if it is broken then we have to fix it.

Fixing broken build link (note that if you have this link with contents, do not run commands to fix this issue (4 command listed just below)):

rm /lib/modules/3.10.0-514.el7.x86_64/build
cd /lib/modules/3.10.0-514.el7.x86_64/
ln -s /usr/src/kernels/3.10.0-514.el7.x86_64/ build
ls build/

if contents of build are listed, we’re good to go.

After you fix previously mentioned broken link, go ahead and run same rpmbuild command again to build kernel module:

rpmbuild -bb --without check -D "kversion 3.10.0-514.el7.x86_64" rpmbuild/SPECS/openvswitch-kmod-fedora.spec

if it’s completed succesfully then run rpmbuild again to build user space programs (ovs-*)

rpmbuild -bb --without check -D "kversion 3.10.0-514.el7.x86_64" rpmbuild/SPECS/openvswitch.spec

If both of these commands successfully completed, you can install your openvswitch using generated rpms. Rpms can installed with:

rpm -ivh rpmbuild/RPMS/x86_64/openvswitch-kmod-2.7.0-1.el7.centos.x86_64.rpm 
rpm -ivh rpmbuild/RPMS/x86_64/openvswitch-2.7.0-1.x86_64.rpm

Either reboot, or modprobe to load kernel module and make some tests to check openvswitch.

Get OVS Version
#ovs-vsctl -V
List bridge configuration
#ovs-vsctl show
Create a new bridge
#ovs-vsctl add-br ovs-br0
Add port to the bridge
#ovs-vsctl add-port ovs-br0 eth1
#ovs-vsctl show