]> git.proxmox.com Git - mirror_ovs.git/blame - INSTALL
tests: Add support for automatically running Ryu tests against OVS.
[mirror_ovs.git] / INSTALL
CommitLineData
76d5beb9
YT
1 How to Install Open vSwitch on Linux, FreeBSD and NetBSD
2 ========================================================
4b11d5e8
BP
3
4This document describes how to build and install Open vSwitch on a
76d5beb9
YT
5generic Linux, FreeBSD, or NetBSD host. For specifics around installation
6on a specific platform, please see one of these files:
4b11d5e8 7
6494ea4c
BP
8 - INSTALL.Debian
9 - INSTALL.Fedora
10 - INSTALL.RHEL
11 - INSTALL.XenServer
0f3df203 12 - INSTALL.NetBSD
4b11d5e8
BP
13
14Build Requirements
15------------------
16
17To compile the userspace programs in the Open vSwitch distribution,
18you will need the following software:
19
380b39f7 20 - GNU make.
4b11d5e8 21
8a6de510
BP
22 - A C compiler, such as:
23
24 * GCC 4.x.
25
26 * Clang. Clang 3.4 and later provide useful static semantic
27 analysis and thread-safety checks. For Ubuntu, there are
28 nightly built packages available on clang's website.
4b11d5e8
BP
29
30 - libssl, from OpenSSL, is optional but recommended if you plan to
31 connect the Open vSwitch to an OpenFlow controller. libssl is
32 required to establish confidentiality and authenticity in the
f272ec73
BP
33 connections from an Open vSwitch to an OpenFlow controller. If
34 libssl is installed, then Open vSwitch will automatically build
35 with support for it.
4b11d5e8 36
deb64473
BP
37 - Python 2.x, for x >= 4.
38
f6eb6b20
GL
39To compile the kernel module on Linux, you must also install the
40following. If you cannot build or install the kernel module, you may
41use the userspace-only implementation, at a cost in performance. The
d377243b
BP
42userspace implementation may also lack some features. Refer to
43INSTALL.userspace for more information.
4b11d5e8
BP
44
45 - A supported Linux kernel version. Please refer to README for a
46 list of supported versions.
47
48 The Open vSwitch datapath requires bridging support
49 (CONFIG_BRIDGE) to be built as a kernel module. (This is common
50 in kernels provided by Linux distributions.) The bridge module
51 must not be loaded or in use. If the bridge module is running
52 (check with "lsmod | grep bridge"), you must remove it ("rmmod
53 bridge") before starting the datapath.
54
55 For optional support of ingress policing, you must enable kernel
f8500004
JP
56 configuration options NET_CLS_BASIC, NET_SCH_INGRESS, and
57 NET_ACT_POLICE, either built-in or as modules. (NET_CLS_POLICE is
58 obsolete and not needed.)
4b11d5e8 59
2be0b371
JG
60 To use GRE tunneling on Linux 2.6.37 or newer, kernel support
61 for GRE must be compiled in or available as a module
62 (CONFIG_NET_IPGRE_DEMUX).
6f470982 63
c9d3af4e
BP
64 To configure HTB or HFSC quality of service with Open vSwitch,
65 you must enable the respective configuration options.
66
26bb189d
BP
67 To use Open vSwitch support for TAP devices, you must enable
68 CONFIG_TUN.
69
4b11d5e8
BP
70 - To build a kernel module, you need the same version of GCC that
71 was used to build that kernel.
72
73 - A kernel build directory corresponding to the Linux kernel image
74 the module is to run on. Under Debian and Ubuntu, for example,
75 each linux-image package containing a kernel binary has a
76 corresponding linux-headers package with the required build
77 infrastructure.
78
79If you are working from a Git tree or snapshot (instead of from a
c9d3af4e
BP
80distribution tarball), or if you modify the Open vSwitch build system
81or the database schema, you will also need the following software:
4b11d5e8 82
55aa00e0 83 - Autoconf version 2.64 or later.
4b11d5e8
BP
84
85 - Automake version 1.10 or later.
86
deb64473 87 - libtool version 2.4 or later. (Older versions might work too.)
195b5c35 88
c9d3af4e
BP
89To run the unit tests, you also need:
90
91 - Perl. Version 5.10.1 is known to work. Earlier versions should
92 also work.
93
a5ae88ff
AA
94The ovs-vswitchd.conf.db(5) manpage will include an E-R diagram, in
95formats other than plain text, only if you have the following:
f8d739a9
BP
96
97 - "dot" from graphviz (http://www.graphviz.org/).
98
c9d3af4e
BP
99 - Perl. Version 5.10.1 is known to work. Earlier versions should
100 also work.
101
102 - Python 2.x, for x >= 4.
103
f8f26e98
BP
104If you are going to extensively modify Open vSwitch, please consider
105installing the following to obtain better warnings:
106
107 - "sparse" version 0.4.4 or later
108 (http://www.kernel.org/pub/software/devel/sparse/dist/).
109
110 - GNU make.
111
97be1538
EJ
112 - clang, version 3.4 or later
113
fef5244f
EJ
114Also, you may find the ovs-dev script found in utilities/ovs-dev.py useful.
115
4b11d5e8
BP
116Installation Requirements
117-------------------------
118
119The machine on which Open vSwitch is to be installed must have the
120following software:
121
122 - libc compatible with the libc used for build.
123
124 - libssl compatible with the libssl used for build, if OpenSSL was
125 used for the build.
126
f6eb6b20 127 - On Linux, the same kernel version configured as part of the build.
4b11d5e8 128
f6eb6b20
GL
129 - For optional support of ingress policing on Linux, the "tc" program
130 from iproute2 (part of all major distributions and available at
4b11d5e8
BP
131 http://www.linux-foundation.org/en/Net:Iproute2).
132
f6eb6b20
GL
133On Linux you should ensure that /dev/urandom exists. To support TAP
134devices, you must also ensure that /dev/net/tun exists.
6e8e271c 135
76d5beb9
YT
136Building and Installing Open vSwitch for Linux, FreeBSD or NetBSD
137=================================================================
4b11d5e8
BP
138
139Once you have installed all the prerequisites listed above in the Base
140Prerequisites section, follow the procedure below to build.
141
f6eb6b20 1421. If you pulled the sources directly from an Open vSwitch Git tree,
30746a1b
JP
143 run boot.sh in the top source directory:
144
145 % ./boot.sh
146
1472. In the top source directory, configure the package by running the
4b11d5e8
BP
148 configure script. You can usually invoke configure without any
149 arguments:
150
151 % ./configure
152
153 By default all files are installed under /usr/local. If you want
154 to install into, e.g., /usr and /var instead of /usr/local and
155 /usr/local/var, add options as shown here:
156
157 % ./configure --prefix=/usr --localstatedir=/var
158
159 To use a specific C compiler for compiling Open vSwitch user
160 programs, also specify it on the configure command line, like so:
161
162 % ./configure CC=gcc-4.2
163
97be1538
EJ
164 To use 'clang' compiler:
165
166 % ./configure CC=clang
167
4b11d5e8
BP
168 To build the Linux kernel module, so that you can run the
169 kernel-based switch, pass the location of the kernel build
338fb44a 170 directory on --with-linux. For example, to build for a running
8a2d6596 171 instance of Linux:
4b11d5e8 172
8a2d6596 173 % ./configure --with-linux=/lib/modules/`uname -r`/build
4b11d5e8
BP
174
175 If you wish to build the kernel module for an architecture other
176 than the architecture of the machine used for the build, you may
177 specify the kernel architecture string using the KARCH variable
178 when invoking the configure script. For example, to build for MIPS
8a2d6596 179 with Linux:
4b11d5e8 180
22bcc0e7 181 % ./configure --with-linux=/path/to/linux KARCH=mips
4b11d5e8 182
ad367b28
BP
183 If you plan to do much Open vSwitch development, you might want to
184 add --enable-Werror, which adds the -Werror option to the compiler
185 command line, turning warnings into errors. That makes it
186 impossible to miss warnings generated by the build.
187
e3c7ed29
BP
188 To build with gcov code coverage support, add --enable-coverage,
189 e.g.:
190
191 % ./configure --enable-coverage
192
4b11d5e8
BP
193 The configure script accepts a number of other options and honors
194 additional environment variables. For a full list, invoke
195 configure with the --help option.
196
380b39f7 1973. Run GNU make in the top source directory, e.g.:
4b11d5e8
BP
198
199 % make
200
380b39f7
BP
201 or if GNU make is installed as "gmake":
202
203 % gmake
f6eb6b20 204
f8f26e98 205 For improved warnings if you installed "sparse" (see
380b39f7 206 "Prerequisites"), add C=1 to the command line.
f8f26e98 207
875ef81b
KM
2084. Consider running the testsuite. Refer to "Running the Testsuite"
209 below, for instructions.
4b11d5e8 210
875ef81b
KM
2115. Become root by running "su" or another program.
212
2136. Run "make install" to install the executables and manpages into the
4b11d5e8
BP
214 running system, by default under /usr/local.
215
ffd6065a 2167. If you built kernel modules, you may install and load them, e.g.:
4b11d5e8 217
ffd6065a
JG
218 % make modules_install
219 % /sbin/modprobe openvswitch
4b11d5e8 220
4b11d5e8 221 To verify that the modules have been loaded, run "/sbin/lsmod" and
9b80f761 222 check that openvswitch is listed.
4b11d5e8 223
ffd6065a 224 If the "modprobe" operation fails, look at the last few kernel log
dd2d79ce
BP
225 messages (e.g. with "dmesg | tail"):
226
9b80f761 227 - The message "openvswitch: exports duplicate symbol
dd2d79ce
BP
228 br_should_route_hook (owned by bridge)" means that the bridge
229 module is loaded. Run "/sbin/rmmod bridge" to remove it.
230
231 If "/sbin/rmmod bridge" fails with "ERROR: Module bridge does
232 not exist in /proc/modules", then the bridge is compiled into
233 the kernel, rather than as a module. Open vSwitch does not
234 support this configuration (see "Build Requirements", above).
235
9b80f761 236 - The message "openvswitch: exports duplicate symbol
dd2d79ce
BP
237 dp_ioctl_hook (owned by ofdatapath)" means that the ofdatapath
238 module from the OpenFlow reference implementation is loaded.
239 Run "/sbin/rmmod ofdatapath" to remove it. (You might have to
240 delete any existing datapaths beforehand, using the "dpctl"
241 program included with the OpenFlow reference implementation.
242 "ovs-dpctl" will not work.)
243
244 - Otherwise, the most likely problem is that Open vSwitch was
245 built for a kernel different from the one into which you are
9b80f761 246 trying to load it. Run "modinfo" on openvswitch.ko and on
dd2d79ce
BP
247 a module built for the running kernel, e.g.:
248
9b80f761 249 % /sbin/modinfo openvswitch.ko
dd2d79ce
BP
250 % /sbin/modinfo /lib/modules/`uname -r`/kernel/net/bridge/bridge.ko
251
252 Compare the "vermagic" lines output by the two commands. If
253 they differ, then Open vSwitch was built for the wrong kernel.
254
255 - If you decide to report a bug or ask a question related to
256 module loading, please include the output from the "dmesg" and
257 "modinfo" commands mentioned above.
258
9b80f761 259 There is an optional module parameter to openvswitch.ko called
3f6256af
JG
260 vlan_tso that enables TCP segmentation offload over VLANs on NICs
261 that support it. Many drivers do not expose support for TSO on VLANs
262 in a way that Open vSwitch can use but there is no way to detect
263 whether this is the case. If you know that your particular driver can
264 handle it (for example by testing sending large TCP packets over VLANs)
265 then passing in a value of 1 may improve performance. Modules built for
431488e6
BP
266 Linux kernels 2.6.37 and later, as well as specially patched versions
267 of earlier kernels, do not need this and do not have this parameter. If
268 you do not understand what this means or do not know if your driver
269 will work, do not set this.
3f6256af 270
875ef81b 2718. Initialize the configuration database using ovsdb-tool, e.g.:
4b11d5e8 272
028415b6
BP
273 % mkdir -p /usr/local/etc/openvswitch
274 % ovsdb-tool create /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema
4b11d5e8 275
3b12adda
BP
276Startup
277=======
4b11d5e8 278
3b12adda 279Before starting ovs-vswitchd itself, you need to start its
cb8141b2
BP
280configuration database, ovsdb-server. Each machine on which Open
281vSwitch is installed should run its own copy of ovsdb-server.
282Configure it to use the database you created during step 7 of
8084a280
BP
283installation, above, to listen on a Unix domain socket, to connect to
284any managers specified in the database itself, and to use the SSL
285configuration in the database:
286
29701194 287 % ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \
6faab099
JP
288 --remote=db:Open_vSwitch,Open_vSwitch,manager_options \
289 --private-key=db:Open_vSwitch,SSL,private_key \
290 --certificate=db:Open_vSwitch,SSL,certificate \
291 --bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert \
29701194 292 --pidfile --detach
3b12adda 293
d3e3fb58
BP
294(If you built Open vSwitch without SSL support, then omit
295--private-key, --certificate, and --bootstrap-ca-cert.)
296
de4f3c10 297Then initialize the database using ovs-vsctl. This is only
332b4e09
BP
298necessary the first time after you create the database with
299ovsdb-tool (but running it at any time is harmless):
300
de4f3c10 301 % ovs-vsctl --no-wait init
332b4e09 302
3b12adda
BP
303Then start the main Open vSwitch daemon, telling it to connect to the
304same Unix domain socket:
305
80df177a 306 % ovs-vswitchd --pidfile --detach
3b12adda
BP
307
308Now you may use ovs-vsctl to set up bridges and other Open vSwitch
309features. For example, to create a bridge named br0 and add ports
310eth0 and vif1.0 to it:
311
312 % ovs-vsctl add-br br0
313 % ovs-vsctl add-port br0 eth0
314 % ovs-vsctl add-port br0 vif1.0
315
316Please refer to ovs-vsctl(8) for more details.
4b11d5e8 317
8b055d92
BP
318Upgrading
319=========
320
321When you upgrade Open vSwitch from one version to another, you should
322also upgrade the database schema:
323
3241. Stop the Open vSwitch daemons, e.g.:
325
012f5c4b 326 % kill `cd /usr/local/var/run/openvswitch && cat ovsdb-server.pid ovs-vswitchd.pid`
8b055d92
BP
327
3282. Install the new Open vSwitch release.
329
3303. Upgrade the database, in one of the following two ways:
331
332 - If there is no important data in your database, then you may
333 delete the database file and recreate it with ovsdb-tool,
334 following the instructions under "Building and Installing Open
76d5beb9 335 vSwitch for Linux, FreeBSD or NetBSD".
8b055d92
BP
336
337 - If you want to preserve the contents of your database, back it
338 up first, then use "ovsdb-tool convert" to upgrade it, e.g.:
339
028415b6 340 % ovsdb-tool convert /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema
8b055d92
BP
341
3424. Start the Open vSwitch daemons as described under "Building and
76d5beb9 343 Installing Open vSwitch for Linux, FreeBSD or NetBSD" above.
8b055d92 344
4e375050
GS
345Hot Upgrading
346=============
347Upgrading Open vSwitch from one version to the next version with minimum
348disruption of traffic going through the system that is using that Open vSwitch
349needs some considerations:
350
3511. If the upgrade only involves upgrading the userspace utilities and daemons
352of Open vSwitch, make sure that the new userspace version is compatible with
353the previously loaded kernel module.
354
3552. An upgrade of userspace daemons means that they have to be restarted.
356Restarting the daemons means that the Openflow flows in the ovs-vswitchd daemon
357will be lost. One way to restore the flows is to let the controller
358re-populate it. Another way is to save the previous flows using a utility
359like ovs-ofctl and then re-add them after the restart. Restoring the old flows
360is accurate only if the new Open vSwitch interfaces retain the old 'ofport'
361values.
362
3633. When the new userspace daemons get restarted, they automatically flush
364the old flows setup in the kernel. This can be expensive if there are hundreds
365of new flows that are entering the kernel but userspace daemons are busy
366setting up new userspace flows from either the controller or an utility like
367ovs-ofctl. Open vSwitch database provides an option to solve this problem
368through the other_config:flow-restore-wait column of the Open_vSwitch table.
369Refer to the ovs-vswitchd.conf.db(5) manpage for details.
370
3714. If the upgrade also involves upgrading the kernel module, the old kernel
372module needs to be unloaded and the new kernel module should be loaded. This
373means that the kernel network devices belonging to Open vSwitch is recreated
374and the kernel flows are lost. The downtime of the traffic can be reduced
375if the userspace daemons are restarted immediately and the userspace flows
376are restored as soon as possible.
377
378The ovs-ctl utility's "restart" function only restarts the userspace daemons,
379makes sure that the 'ofport' values remain consistent across restarts, restores
380userspace flows using the ovs-ofctl utility and also uses the
381other_config:flow-restore-wait column to keep the traffic downtime to the
382minimum. The ovs-ctl utility's "force-reload-kmod" function does all of the
383above, but also replaces the old kernel module with the new one. Open vSwitch
384startup scripts for Debian, XenServer and RHEL use ovs-ctl's functions and it
385is recommended that these functions be used for other software platforms too.
386
e3c7ed29
BP
387Testsuites
388==========
389
390This section describe Open vSwitch's built-in support for various test
391suites. You must configure and build Open vSwitch (steps 1 through 3
392in "Building and Installing Open vSwitch for Linux, FreeBSD or NetBSD"
393above) before you run the tests described here. You do not need to
394install Open vSwitch or to build or load the kernel module to run
395these test suites. You do not need supervisor privilege to run these
396test suites.
875ef81b 397
e3c7ed29
BP
398Self-Tests
399----------
400
401Open vSwitch includes a suite of self-tests. Before you submit patches
875ef81b
KM
402upstream, we advise that you run the tests and ensure that they pass.
403If you add new features to Open vSwitch, then adding tests for those
404features will ensure your features don't break as developers modify
405other areas of Open vSwitch.
406
e3c7ed29 407Refer to "Testsuites" above for prerequisites.
875ef81b
KM
408
409To run all the unit tests in Open vSwitch, one at a time:
410 make check
411This takes under 5 minutes on a modern desktop system.
412
413To run all the unit tests in Open vSwitch, up to 8 in parallel:
414 make check TESTSUITEFLAGS=-j8
415This takes under a minute on a modern 4-core desktop system.
416
417To see a list of all the available tests, run:
418 make check TESTSUITEFLAGS=--list
419
420To run only a subset of tests, e.g. test 123 and tests 477 through 484:
421 make check TESTSUITEFLAGS='123 477-484'
422(Tests do not have inter-dependencies, so you may run any subset.)
423
424To run tests matching a keyword, e.g. "ovsdb":
425 make check TESTSUITEFLAGS='-k ovsdb'
426
427To see a complete list of test options:
428 make check TESTSUITEFLAGS=--help
429
430The results of a testing run are reported in tests/testsuite.log.
431Please report test failures as bugs and include the testsuite.log in
432your report.
433
434If you have "valgrind" installed, then you can also run the testsuite
435under valgrind by using "make check-valgrind" in place of "make
436check". All the same options are available via TESTSUITEFLAGS. When
437you do this, the "valgrind" results for test <N> are reported in files
438named tests/testsuite.dir/<N>/valgrind.*. You may find that the
439valgrind results are easier to interpret if you put "-q" in
447fe5cf 440~/.valgrindrc, since that reduces the amount of output.
875ef81b
KM
441
442Sometimes a few tests may fail on some runs but not others. This is
443usually a bug in the testsuite, not a bug in Open vSwitch itself. If
444you find that a test fails intermittently, please report it, since the
445developers may not have noticed.
446
e3c7ed29
BP
447OFTest
448------
449
450OFTest is an OpenFlow protocol testing suite. Open vSwitch includes a
451Makefile target to run OFTest with Open vSwitch in "dummy mode". In
452this mode of testing, no packets travel across physical or virtual
453networks. Instead, Unix domain sockets stand in as simulated
454networks. This simulation is imperfect, but it is much easier to set
455up, does not require extra physical or virtual hardware, and does not
456require supervisor privileges.
457
458To run OFTest with Open vSwitch, first read and follow the
459instructions under "Testsuites" above. Second, obtain a copy of
460OFTest and install its prerequisites. You need a copy of OFTest that
461includes commit 406614846c5 (make ovs-dummy platform work again).
462This commit was merged into the OFTest repository on Feb 1, 2013, so
463any copy of OFTest more recent than that should work. Testing OVS in
464dummy mode does not require root privilege, so you may ignore that
465requirement.
466
467Optionally, add the top-level OFTest directory (containing the "oft"
468program) to your $PATH. This slightly simplifies running OFTest later.
469
470To run OFTest in dummy mode, run the following command from your Open
471vSwitch build directory:
472 make check-oftest OFT=<oft-binary>
473where <oft-binary> is the absolute path to the "oft" program in
474OFTest.
475
476If you added "oft" to your $PATH, you may omit the OFT variable
477assignment:
478 make check-oftest
479By default, "check-oftest" passes "oft" just enough options to enable
480dummy mode. You can use OFTFLAGS to pass additional options. For
481example, to run just the basic.Echo test instead of all tests (the
482default) and enable verbose logging:
483 make check-oftest OFT=<oft-binary> OFTFLAGS='--verbose -T basic.Echo'
484
485If you use OFTest that does not include commit 4d1f3eb2c792 (oft:
486change default port to 6653), merged into the OFTest repository in
487October 2013, then you need to add an option to use the IETF-assigned
488controller port:
489 make check-oftest OFT=<oft-binary> OFTFLAGS='--port=6653'
490
491Please interpret OFTest results cautiously. Open vSwitch can fail a
492given test in OFTest for many reasons, including bugs in Open vSwitch,
493bugs in OFTest, bugs in the "dummy mode" integration, and differing
494interpretations of the OpenFlow standard and other standards.
495
496Open vSwitch has not been validated against OFTest. Please do report
497test failures that you believe to represent bugs in Open vSwitch.
498Include the precise versions of Open vSwitch and OFTest in your bug
499report, plus any other information needed to reproduce the problem.
500
501Ryu
502---
503
504Ryu is an OpenFlow controller written in Python that includes an
505extensive OpenFlow testsuite. Open vSwitch includes a Makefile target
506to run Ryu in "dummy mode". See "OFTest" above for an explanation of
507dummy mode.
508
509To run Ryu tests with Open vSwitch, first read and follow the
510instructions under "Testsuites" above. Second, obtain a copy of Ryu,
511install its prerequisites, and build it. You do not need to install
512Ryu (some of the tests do not get installed, so it does not help).
513
514To run Ryu tests, run the following command from your Open vSwitch
515build directory:
516 make check-ryu RYUDIR=<ryu-source-dir>
517where <ryu-source-dir> is the absolute path to the root of the Ryu
518source distribution. The default <ryu-source-dir> is $srcdir/../ryu
519where $srcdir is your Open vSwitch source directory, so if this
520default is correct then you make simply run "make check-ryu".
521
522Open vSwitch has not been validated against Ryu. Please do report
523test failures that you believe to represent bugs in Open vSwitch.
524Include the precise versions of Open vSwitch and Ryu in your bug
525report, plus any other information needed to reproduce the problem.
526
4b11d5e8 527Bug Reporting
e3c7ed29 528=============
4b11d5e8 529
37ea6436 530Please report problems to bugs@openvswitch.org.