This document describes how to build and install Open vSwitch on a Red
Hat Enterprise Linux (RHEL) host. If you want to install Open vSwitch
-on a generic Linux host, see INSTALL.Linux instead.
+on a generic Linux host, see INSTALL instead.
We have tested these instructions with RHEL 5.6 and RHEL 6.0.
You may build from an Open vSwitch distribution tarball or from an
Open vSwitch Git tree.
-Before you begin, note the RPM source directory on your version of
-RHEL. On RHEL 5, the default RPM source directory is
-/usr/src/redhat/SOURCES. On RHEL 6, it is $HOME/rpmbuild/SOURCES.
+The default RPM build directory (_topdir) has five directories in
+the top-level:
+1. BUILD/ Where the software is unpacked and built.
+2. RPMS/ Where the newly created binary package files are written.
+3. SOURCES/ Contains the original sources, patches, and icon files.
+4. SPECS/ Contains the spec files for each package to be built.
+5. SRPMS/ Where the newly created source package files are written.
-1. If you are building from an Open vSwitch Git tree, then you will
- need to first create a distribution tarball by running "./boot.sh;
- ./configure; make dist" in the Git tree.
+Before you begin, note the RPM sources directory on your version of
+RHEL. The command "rpmbuild --showrc" will show the configuration
+for each of those directories. Alternatively, the command "rpm --eval
+ '%{_topdir}'" shows the current configuration for the top level
+directory and the command "rpm --eval '%{_sourcedir}'" does the same
+for the sources directory. On RHEL 5, the default RPM _topdir is
+/usr/src/redhat and the default RPM sources directory is
+/usr/src/redhat/SOURCES. On RHEL 6, the default _topdir is
+$HOME/rpmbuild and the default RPM sources directory is
+$HOME/rpmbuild/SOURCES.
-2. Copy the distribution tarball into the RPM source directory.
+1. Install build prerequisites:
-3. Unpack the distribution tarball into a temporary directory and "cd"
- into the root of the distribution tarball.
+ yum install gcc make python-devel openssl-devel kernel-devel graphviz \
+ kernel-debug-devel autoconf automake rpm-build redhat-rpm-config \
+ libtool
-4. To build Open vSwitch userspace, run:
+2. If you are building from a distribution tarball, skip to step 3.
+ Otherwise, you must be building from an Open vSwitch Git tree.
+ Determine what version of Autoconf is installed (e.g. run "autoconf
+ --version"). If it is not at least version 2.63, then you have two
+ choices:
- rpmbuild -bb rhel/openvswitch.spec
+ a. Install Autoconf 2.63 or later, one way or another.
- This produces two RPMs: "openvswitch" and "openvswitch-debuginfo".
+ b. Create a distribution tarball on some other machine, by
+ running "./boot.sh; ./configure; make dist" in the Git tree.
+ You must run this on a machine that has the tools listed in
+ INSTALL as prerequisites for building from a Git tree.
+ Afterward, proceed with the rest of the instructions using the
+ distribution tarball.
+
+3. Some versions of the RHEL 6 kernel-devel package contain a broken
+ "build" symlink. If you are using such a version, you must fix
+ the problem before continuing.
+
+ To find out whether you are affected, run:
+
+ cd /lib/modules/<version>
+ ls -l build/
+
+ where <version> is the version number of the RHEL 6 kernel. (The
+ trailing slash in the final command is important. Be sure to include
+ it.) If the "ls" command produces a directory listing, your
+ kernel-devel package is OK. If it produces a "No such file or
+ directory" error, your kernel-devel package is buggy.
+
+ If your kernel-devel package is buggy, then you can fix it with:
+
+ cd /lib/modules/<version>
+ rm build
+ ln -s /usr/src/kernels/<target> build
+
+ where <target> is the name of an existing directory under
+ /usr/src/kernels, whose name should be similar to <version> but may
+ contain some extra parts. Once you have done this, verify the fix with
+ the same procedure you used above to check for the problem.
+
+4. If you are building from a distribution tarball, skip to step 5.
+ Otherwise, create a distribution tarball from the root of the Git
+ tree by running:
-5a. On RHEL 5, to build the Open vSwitch kernel module, copy
- rhel/kmodtool-openvswitch-el5.sh into the RPM source directory and
- run:
+ ./boot.sh
+ ./configure
+ make dist
- rpmbuild -bb --target=i686-unknown-linux \
- rhel/openvswitch-kmod-rhel5.spec
+5. Now you have a distribution tarball, named something like
+ openvswitch-x.y.z.tar.gz. Copy this file into the RPM sources
+ directory, e.g.:
- You might have to specify a kernel version, e.g.:
+ cp openvswitch-x.y.z.tar.gz $HOME/rpmbuild/SOURCES
- rpmbuild -bb -D "kversion 2.6.18-238.12.1.el5" \
- --target=i686-unknown-linux \
- rhel/openvswitch-kmod-rhel5.spec
+6. Make another copy of the distribution tarball in a temporary
+ directory. Then unpack the tarball and "cd" into its root, e.g.:
- This produces a "kmod-openvswitch" RPM for each kernel variant,
- which is usually: "kmod-openvswitch", "kmod-openvswitch-xen", and
- "kmod-openvswitch-PAE".
+ tar xzf openvswitch-x.y.z.tar.gz
+ cd openvswitch-x.y.z
-5b. On RHEL 6, to build the Open vSwitch kernel module, run:
+7. To build Open vSwitch userspace, run:
+
+ rpmbuild -bb rhel/openvswitch.spec
+
+ This produces two RPMs: "openvswitch" and "openvswitch-debuginfo".
+
+ The above command automatically runs the Open vSwitch unit tests.
+ To disable the unit tests, run:
+
+ rpmbuild -bb --without check rhel/openvswitch.spec
+
+ If the build fails with "configure: error: source dir
+ /lib/modules/2.6.32-279.el6.x86_64/build doesn't exist" or similar,
+ then the kernel-devel package is missing or buggy. Go back to step
+ 1 or 2 and fix the problem.
+
+8. On RHEL 6, to build the Open vSwitch kernel module, copy
+ rhel/openvswitch-kmod.files into the RPM sources directory and run:
rpmbuild -bb rhel/openvswitch-kmod-rhel6.spec
- You might have to specify a kernel version and/or variants, e.g.:
+ You might have to specify a kernel version and/or variants, e.g.:
rpmbuild -bb \
-D "kversion 2.6.32-131.6.1.el6.x86_64" \
-D "kflavors default debug kdump" \
rhel/openvswitch-kmod-rhel6.spec
- This produces an "kmod-openvswitch" RPM for each kernel variant,
- in this example: "kmod-openvswitch", "kmod-openvswitch-debug", and
- "kmod-openvswitch-kdump".
+ This produces an "kmod-openvswitch" RPM for each kernel variant, in
+ this example: "kmod-openvswitch", "kmod-openvswitch-debug", and
+ "kmod-openvswitch-kdump".
+
+A RHEL host has default firewall rules that prevent any Open vSwitch tunnel
+traffic from passing through. If a user configures Open vSwitch tunnels like
+Geneve, GRE, VXLAN, LISP etc., they will either have to manually add iptables
+firewall rules to allow the tunnel traffic or add it through a startup script
+(Please refer to the "enable-protocol" command in the ovs-ctl(8) manpage).
Red Hat Network Scripts Integration
-----------------------------------