]> git.proxmox.com Git - ovs.git/blame - INSTALL.md
openflow: Implement OF1.4+ OFPMP_QUEUE_DESC multipart message.
[ovs.git] / INSTALL.md
CommitLineData
542cc9bb
TG
1How 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
9feb1017
TG
8 - [INSTALL.Debian.md]
9 - [INSTALL.Fedora.md]
10 - [INSTALL.RHEL.md]
11 - [INSTALL.XenServer.md]
12 - [INSTALL.NetBSD.md]
620b1762 13 - [INSTALL.Windows.md]
9feb1017 14 - [INSTALL.DPDK.md]
4b11d5e8
BP
15
16Build Requirements
17------------------
18
19To compile the userspace programs in the Open vSwitch distribution,
20you will need the following software:
21
542cc9bb 22 - GNU make.
4b11d5e8 23
542cc9bb 24 - A C compiler, such as:
8a6de510 25
542cc9bb 26 * GCC 4.x.
8a6de510 27
542cc9bb
TG
28 * Clang. Clang 3.4 and later provide useful static semantic
29 analysis and thread-safety checks. For Ubuntu, there are
30 nightly built packages available on clang's website.
4b11d5e8 31
620b1762
BP
32 * MSVC 2013. See [INSTALL.Windows] for additional Windows build
33 instructions.
34
542cc9bb
TG
35 While OVS may be compatible with other compilers, optimal
36 support for atomic operations may be missing, making OVS very
37 slow (see lib/ovs-atomic.h).
29d204ef 38
542cc9bb
TG
39 - libssl, from OpenSSL, is optional but recommended if you plan to
40 connect the Open vSwitch to an OpenFlow controller. libssl is
41 required to establish confidentiality and authenticity in the
42 connections from an Open vSwitch to an OpenFlow controller. If
43 libssl is installed, then Open vSwitch will automatically build
44 with support for it.
4b11d5e8 45
1bbebfb7
AZ
46 - libcap-ng, written by Steve Grubb, is optional but recommended. It
47 is required to run OVS daemons as a non-root user with dropped root
48 privileges. If libcap-ng is installed, then Open vSwitch will
49 automatically build with support for it.
50
e23812fc 51 - Python 2.7.
deb64473 52
c6435221
BP
53On Linux, you may choose to compile the kernel module that comes with
54the Open vSwitch distribution or to use the kernel module built into
9feb1017
TG
55the Linux kernel (version 3.3 or later). See the [FAQ.md] question
56"What features are not available in the Open vSwitch kernel datapath that
c6435221
BP
57ships as part of the upstream Linux kernel?" for more information on
58this trade-off. You may also use the userspace-only implementation,
9feb1017
TG
59at some cost in features and performance (see [INSTALL.userspace.md]
60for details). To compile the kernel module on Linux, you must also
c6435221 61install the following:
4b11d5e8 62
9feb1017 63 - A supported Linux kernel version. Please refer to [README.md] for a
542cc9bb 64 list of supported versions.
4b11d5e8 65
542cc9bb
TG
66 The Open vSwitch datapath requires bridging support
67 (CONFIG_BRIDGE) to be built as a kernel module. (This is common
68 in kernels provided by Linux distributions.) The bridge module
69 must not be loaded or in use. If the bridge module is running
70 (check with "lsmod | grep bridge"), you must remove it ("rmmod
71 bridge") before starting the datapath.
4b11d5e8 72
542cc9bb
TG
73 For optional support of ingress policing, you must enable kernel
74 configuration options NET_CLS_BASIC, NET_SCH_INGRESS, and
75 NET_ACT_POLICE, either built-in or as modules. (NET_CLS_POLICE is
76 obsolete and not needed.)
4b11d5e8 77
542cc9bb
TG
78 To use GRE tunneling on Linux 2.6.37 or newer, kernel support
79 for GRE demultiplexing (CONFIG_NET_IPGRE_DEMUX) must be compiled
80 in or available as a module. Also, on kernels before 3.11, the
81 ip_gre module, for GRE tunnels over IP (NET_IPGRE), must not be
82 loaded or compiled in.
6f470982 83
542cc9bb
TG
84 To configure HTB or HFSC quality of service with Open vSwitch,
85 you must enable the respective configuration options.
c9d3af4e 86
542cc9bb
TG
87 To use Open vSwitch support for TAP devices, you must enable
88 CONFIG_TUN.
26bb189d 89
542cc9bb
TG
90 - To build a kernel module, you need the same version of GCC that
91 was used to build that kernel.
4b11d5e8 92
542cc9bb
TG
93 - A kernel build directory corresponding to the Linux kernel image
94 the module is to run on. Under Debian and Ubuntu, for example,
95 each linux-image package containing a kernel binary has a
96 corresponding linux-headers package with the required build
97 infrastructure.
4b11d5e8
BP
98
99If you are working from a Git tree or snapshot (instead of from a
c9d3af4e
BP
100distribution tarball), or if you modify the Open vSwitch build system
101or the database schema, you will also need the following software:
4b11d5e8 102
542cc9bb 103 - Autoconf version 2.63 or later.
4b11d5e8 104
542cc9bb 105 - Automake version 1.10 or later.
4b11d5e8 106
542cc9bb 107 - libtool version 2.4 or later. (Older versions might work too.)
195b5c35 108
c9d3af4e
BP
109To run the unit tests, you also need:
110
542cc9bb
TG
111 - Perl. Version 5.10.1 is known to work. Earlier versions should
112 also work.
c9d3af4e 113
a5ae88ff
AA
114The ovs-vswitchd.conf.db(5) manpage will include an E-R diagram, in
115formats other than plain text, only if you have the following:
f8d739a9 116
542cc9bb 117 - "dot" from graphviz (http://www.graphviz.org/).
f8d739a9 118
542cc9bb
TG
119 - Perl. Version 5.10.1 is known to work. Earlier versions should
120 also work.
c9d3af4e 121
f8f26e98
BP
122If you are going to extensively modify Open vSwitch, please consider
123installing the following to obtain better warnings:
124
542cc9bb
TG
125 - "sparse" version 0.4.4 or later
126 (http://www.kernel.org/pub/software/devel/sparse/dist/).
f8f26e98 127
542cc9bb 128 - GNU make.
f8f26e98 129
542cc9bb 130 - clang, version 3.4 or later
97be1538 131
115d8719
RB
132 - flake8 (for Python code)
133
fef5244f
EJ
134Also, you may find the ovs-dev script found in utilities/ovs-dev.py useful.
135
4b11d5e8
BP
136Installation Requirements
137-------------------------
138
139The machine on which Open vSwitch is to be installed must have the
140following software:
141
542cc9bb 142 - libc compatible with the libc used for build.
4b11d5e8 143
542cc9bb
TG
144 - libssl compatible with the libssl used for build, if OpenSSL was
145 used for the build.
4b11d5e8 146
542cc9bb 147 - On Linux, the same kernel version configured as part of the build.
4b11d5e8 148
542cc9bb
TG
149 - For optional support of ingress policing on Linux, the "tc" program
150 from iproute2 (part of all major distributions and available at
151 http://www.linux-foundation.org/en/Net:Iproute2).
4b11d5e8 152
f6eb6b20
GL
153On Linux you should ensure that /dev/urandom exists. To support TAP
154devices, you must also ensure that /dev/net/tun exists.
6e8e271c 155
76d5beb9
YT
156Building and Installing Open vSwitch for Linux, FreeBSD or NetBSD
157=================================================================
4b11d5e8 158
e9e85443
FL
159Once you have installed all the prerequisites listed above in the
160Base Prerequisites section, follow the procedures below to bootstrap,
161to configure and to build the code.
4b11d5e8 162
e9e85443
FL
163Bootstrapping the Sources
164-------------------------
165
166This step is not needed if you have downloaded a released tarball.
167If you pulled the sources directly from an Open vSwitch Git tree or
168got a Git tree snapshot, then run boot.sh in the top source directory
169to build the "configure" script.
30746a1b 170
542cc9bb 171 `% ./boot.sh`
30746a1b 172
e9e85443
FL
173
174Configuring the Sources
175-----------------------
176
177Configure the package by running the configure script. You can
178usually invoke configure without any arguments. For example:
4b11d5e8 179
542cc9bb 180 `% ./configure`
4b11d5e8 181
e9e85443
FL
182By default all files are installed under /usr/local. If you want
183to install into, e.g., /usr and /var instead of /usr/local and
184/usr/local/var, add options as shown here:
4b11d5e8 185
542cc9bb 186 `% ./configure --prefix=/usr --localstatedir=/var`
4b11d5e8 187
e9e85443
FL
188By default, static libraries are built and linked against. If you
189want to use shared libraries instead:
7748423a
TG
190
191 % ./configure --enable-shared
192
e9e85443
FL
193To use a specific C compiler for compiling Open vSwitch user
194programs, also specify it on the configure command line, like so:
4b11d5e8 195
542cc9bb 196 `% ./configure CC=gcc-4.2`
4b11d5e8 197
e9e85443 198To use 'clang' compiler:
97be1538 199
542cc9bb 200 `% ./configure CC=clang`
97be1538 201
73c33892
BP
202To supply special flags to the C compiler, specify them as CFLAGS on
203the configure command line. If you want the default CFLAGS, which
204include "-g" to build debug symbols and "-O2" to enable optimizations,
205you must include them yourself. For example, to build with the
206default CFLAGS plus "-mssse3", you might run configure as follows:
207
208 `% ./configure CFLAGS="-g -O2 -mssse3"`
209
4f7e5c27
RB
210Note that these CFLAGS are not applied when building the Linux
211kernel module. Custom CFLAGS for the kernel module are supplied
212using the EXTRA_CFLAGS variable when running make. So, for example:
213
214 `% make EXTRA_CFLAGS="-Wno-error=date-time"
215
e9e85443
FL
216To build the Linux kernel module, so that you can run the
217kernel-based switch, pass the location of the kernel build
218directory on --with-linux. For example, to build for a running
219instance of Linux:
4b11d5e8 220
542cc9bb 221 `% ./configure --with-linux=/lib/modules/`uname -r`/build`
4b11d5e8 222
e9e85443
FL
223If --with-linux requests building for an unsupported version of
224Linux, then "configure" will fail with an error message. Please
225refer to the [FAQ.md] for advice in that case.
a7ae9380 226
e9e85443
FL
227If you wish to build the kernel module for an architecture other
228than the architecture of the machine used for the build, you may
229specify the kernel architecture string using the KARCH variable
230when invoking the configure script. For example, to build for MIPS
231with Linux:
4b11d5e8 232
542cc9bb 233 `% ./configure --with-linux=/path/to/linux KARCH=mips`
4b11d5e8 234
e9e85443
FL
235If you plan to do much Open vSwitch development, you might want to
236add --enable-Werror, which adds the -Werror option to the compiler
237command line, turning warnings into errors. That makes it
238impossible to miss warnings generated by the build.
ad367b28 239
e9e85443
FL
240To build with gcov code coverage support, add --enable-coverage,
241e.g.:
e3c7ed29 242
542cc9bb 243 `% ./configure --enable-coverage`
e3c7ed29 244
e9e85443
FL
245The configure script accepts a number of other options and honors
246additional environment variables. For a full list, invoke
247configure with the --help option.
4b11d5e8 248
e9e85443
FL
249You can also run configure from a separate build directory. This
250is helpful if you want to build Open vSwitch in more than one way
251from a single source directory, e.g. to try out both GCC and Clang
252builds, or to build kernel modules for more than one Linux version.
253Here is an example:
ef7889b4 254
542cc9bb
TG
255 `% mkdir _gcc && (cd _gcc && ../configure CC=gcc)`
256 `% mkdir _clang && (cd _clang && ../configure CC=clang)`
ef7889b4 257
e9e85443
FL
258
259Building the Sources
260--------------------
261
2621. Run GNU make in the build directory, e.g.:
4b11d5e8 263
542cc9bb 264 `% make`
4b11d5e8 265
380b39f7
BP
266 or if GNU make is installed as "gmake":
267
542cc9bb 268 `% gmake`
f6eb6b20 269
ef7889b4
BP
270 If you used a separate build directory, run make or gmake from that
271 directory, e.g.:
272
542cc9bb
TG
273 `% make -C _gcc`
274 `% make -C _clang`
ef7889b4 275
e9e85443
FL
276 For improved warnings if you installed "sparse" (see "Prerequisites"),
277 add C=1 to the command line.
f8f26e98 278
86b3f7e1
BP
279 Some versions of Clang and ccache are not completely compatible.
280 If you see unusual warnings when you use both together, consider
281 disabling ccache for use with Clang.
282
e9e85443 2832. Consider running the testsuite. Refer to "Running the Testsuite"
875ef81b 284 below, for instructions.
4b11d5e8 285
e9e85443 2863. Become root by running "su" or another program.
875ef81b 287
e9e85443 2884. Run "make install" to install the executables and manpages into the
4b11d5e8
BP
289 running system, by default under /usr/local.
290
e9e85443 2915. If you built kernel modules, you may install and load them, e.g.:
4b11d5e8 292
542cc9bb
TG
293 `% make modules_install`
294 `% /sbin/modprobe openvswitch`
4b11d5e8 295
4b11d5e8 296 To verify that the modules have been loaded, run "/sbin/lsmod" and
9b80f761 297 check that openvswitch is listed.
4b11d5e8 298
542cc9bb
TG
299 If the `modprobe` operation fails, look at the last few kernel log
300 messages (e.g. with `dmesg | tail`):
dd2d79ce 301
9b80f761 302 - The message "openvswitch: exports duplicate symbol
dd2d79ce 303 br_should_route_hook (owned by bridge)" means that the bridge
542cc9bb 304 module is loaded. Run `/sbin/rmmod bridge` to remove it.
dd2d79ce 305
542cc9bb 306 If `/sbin/rmmod bridge` fails with "ERROR: Module bridge does
dd2d79ce
BP
307 not exist in /proc/modules", then the bridge is compiled into
308 the kernel, rather than as a module. Open vSwitch does not
309 support this configuration (see "Build Requirements", above).
310
9b80f761 311 - The message "openvswitch: exports duplicate symbol
dd2d79ce
BP
312 dp_ioctl_hook (owned by ofdatapath)" means that the ofdatapath
313 module from the OpenFlow reference implementation is loaded.
542cc9bb 314 Run `/sbin/rmmod ofdatapath` to remove it. (You might have to
dd2d79ce
BP
315 delete any existing datapaths beforehand, using the "dpctl"
316 program included with the OpenFlow reference implementation.
317 "ovs-dpctl" will not work.)
318
319 - Otherwise, the most likely problem is that Open vSwitch was
320 built for a kernel different from the one into which you are
542cc9bb 321 trying to load it. Run `modinfo` on openvswitch.ko and on
dd2d79ce
BP
322 a module built for the running kernel, e.g.:
323
542cc9bb 324 ```
9b80f761 325 % /sbin/modinfo openvswitch.ko
dd2d79ce 326 % /sbin/modinfo /lib/modules/`uname -r`/kernel/net/bridge/bridge.ko
542cc9bb 327 ```
dd2d79ce
BP
328
329 Compare the "vermagic" lines output by the two commands. If
330 they differ, then Open vSwitch was built for the wrong kernel.
331
332 - If you decide to report a bug or ask a question related to
542cc9bb
TG
333 module loading, please include the output from the `dmesg` and
334 `modinfo` commands mentioned above.
dd2d79ce 335
e9e85443
FL
336There is an optional module parameter to openvswitch.ko called
337vlan_tso that enables TCP segmentation offload over VLANs on NICs
338that support it. Many drivers do not expose support for TSO on VLANs
339in a way that Open vSwitch can use but there is no way to detect
340whether this is the case. If you know that your particular driver can
341handle it (for example by testing sending large TCP packets over VLANs)
342then passing in a value of 1 may improve performance. Modules built for
343Linux kernels 2.6.37 and later, as well as specially patched versions
344of earlier kernels, do not need this and do not have this parameter. If
345you do not understand what this means or do not know if your driver
346will work, do not set this.
3f6256af 347
e9e85443 3486. Initialize the configuration database using ovsdb-tool, e.g.:
4b11d5e8 349
542cc9bb
TG
350 `% mkdir -p /usr/local/etc/openvswitch`
351 `% ovsdb-tool create /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema`
4b11d5e8 352
3b12adda
BP
353Startup
354=======
4b11d5e8 355
3b12adda 356Before starting ovs-vswitchd itself, you need to start its
cb8141b2
BP
357configuration database, ovsdb-server. Each machine on which Open
358vSwitch is installed should run its own copy of ovsdb-server.
566b8c8d
BP
359Configure it to use the database you created during installation (as
360explained above), to listen on a Unix domain socket, to connect to any
361managers specified in the database itself, and to use the SSL
8084a280
BP
362configuration in the database:
363
29701194 364 % ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \
6faab099
JP
365 --remote=db:Open_vSwitch,Open_vSwitch,manager_options \
366 --private-key=db:Open_vSwitch,SSL,private_key \
367 --certificate=db:Open_vSwitch,SSL,certificate \
368 --bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert \
29701194 369 --pidfile --detach
3b12adda 370
d3e3fb58
BP
371(If you built Open vSwitch without SSL support, then omit
372--private-key, --certificate, and --bootstrap-ca-cert.)
373
de4f3c10 374Then initialize the database using ovs-vsctl. This is only
332b4e09
BP
375necessary the first time after you create the database with
376ovsdb-tool (but running it at any time is harmless):
377
de4f3c10 378 % ovs-vsctl --no-wait init
332b4e09 379
3b12adda
BP
380Then start the main Open vSwitch daemon, telling it to connect to the
381same Unix domain socket:
382
80df177a 383 % ovs-vswitchd --pidfile --detach
3b12adda
BP
384
385Now you may use ovs-vsctl to set up bridges and other Open vSwitch
386features. For example, to create a bridge named br0 and add ports
387eth0 and vif1.0 to it:
388
389 % ovs-vsctl add-br br0
390 % ovs-vsctl add-port br0 eth0
391 % ovs-vsctl add-port br0 vif1.0
392
393Please refer to ovs-vsctl(8) for more details.
4b11d5e8 394
8b055d92
BP
395Upgrading
396=========
397
398When you upgrade Open vSwitch from one version to another, you should
399also upgrade the database schema:
400
4011. Stop the Open vSwitch daemons, e.g.:
402
542cc9bb 403 ```
012f5c4b 404 % kill `cd /usr/local/var/run/openvswitch && cat ovsdb-server.pid ovs-vswitchd.pid`
542cc9bb 405 ```
8b055d92
BP
406
4072. Install the new Open vSwitch release.
408
4093. Upgrade the database, in one of the following two ways:
410
411 - If there is no important data in your database, then you may
412 delete the database file and recreate it with ovsdb-tool,
413 following the instructions under "Building and Installing Open
76d5beb9 414 vSwitch for Linux, FreeBSD or NetBSD".
8b055d92
BP
415
416 - If you want to preserve the contents of your database, back it
417 up first, then use "ovsdb-tool convert" to upgrade it, e.g.:
418
542cc9bb 419 `% ovsdb-tool convert /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema`
8b055d92
BP
420
4214. Start the Open vSwitch daemons as described under "Building and
76d5beb9 422 Installing Open vSwitch for Linux, FreeBSD or NetBSD" above.
8b055d92 423
4e375050
GS
424Hot Upgrading
425=============
426Upgrading Open vSwitch from one version to the next version with minimum
427disruption of traffic going through the system that is using that Open vSwitch
428needs some considerations:
429
4301. If the upgrade only involves upgrading the userspace utilities and daemons
431of Open vSwitch, make sure that the new userspace version is compatible with
432the previously loaded kernel module.
433
4342. An upgrade of userspace daemons means that they have to be restarted.
ea274df9 435Restarting the daemons means that the OpenFlow flows in the ovs-vswitchd daemon
4e375050
GS
436will be lost. One way to restore the flows is to let the controller
437re-populate it. Another way is to save the previous flows using a utility
438like ovs-ofctl and then re-add them after the restart. Restoring the old flows
439is accurate only if the new Open vSwitch interfaces retain the old 'ofport'
440values.
441
4423. When the new userspace daemons get restarted, they automatically flush
443the old flows setup in the kernel. This can be expensive if there are hundreds
444of new flows that are entering the kernel but userspace daemons are busy
445setting up new userspace flows from either the controller or an utility like
446ovs-ofctl. Open vSwitch database provides an option to solve this problem
447through the other_config:flow-restore-wait column of the Open_vSwitch table.
448Refer to the ovs-vswitchd.conf.db(5) manpage for details.
449
4504. If the upgrade also involves upgrading the kernel module, the old kernel
451module needs to be unloaded and the new kernel module should be loaded. This
452means that the kernel network devices belonging to Open vSwitch is recreated
453and the kernel flows are lost. The downtime of the traffic can be reduced
454if the userspace daemons are restarted immediately and the userspace flows
455are restored as soon as possible.
456
457The ovs-ctl utility's "restart" function only restarts the userspace daemons,
458makes sure that the 'ofport' values remain consistent across restarts, restores
459userspace flows using the ovs-ofctl utility and also uses the
460other_config:flow-restore-wait column to keep the traffic downtime to the
461minimum. The ovs-ctl utility's "force-reload-kmod" function does all of the
462above, but also replaces the old kernel module with the new one. Open vSwitch
463startup scripts for Debian, XenServer and RHEL use ovs-ctl's functions and it
464is recommended that these functions be used for other software platforms too.
465
e3c7ed29
BP
466Testsuites
467==========
468
469This section describe Open vSwitch's built-in support for various test
e9e85443 470suites. You must bootstrap, configure and build Open vSwitch (steps are
e3c7ed29
BP
471in "Building and Installing Open vSwitch for Linux, FreeBSD or NetBSD"
472above) before you run the tests described here. You do not need to
473install Open vSwitch or to build or load the kernel module to run
474these test suites. You do not need supervisor privilege to run these
475test suites.
875ef81b 476
e3c7ed29
BP
477Self-Tests
478----------
479
480Open vSwitch includes a suite of self-tests. Before you submit patches
875ef81b
KM
481upstream, we advise that you run the tests and ensure that they pass.
482If you add new features to Open vSwitch, then adding tests for those
483features will ensure your features don't break as developers modify
484other areas of Open vSwitch.
485
e3c7ed29 486Refer to "Testsuites" above for prerequisites.
875ef81b
KM
487
488To run all the unit tests in Open vSwitch, one at a time:
542cc9bb 489 `make check`
875ef81b
KM
490This takes under 5 minutes on a modern desktop system.
491
492To run all the unit tests in Open vSwitch, up to 8 in parallel:
542cc9bb 493 `make check TESTSUITEFLAGS=-j8`
875ef81b
KM
494This takes under a minute on a modern 4-core desktop system.
495
496To see a list of all the available tests, run:
542cc9bb 497 `make check TESTSUITEFLAGS=--list`
875ef81b
KM
498
499To run only a subset of tests, e.g. test 123 and tests 477 through 484:
542cc9bb 500 `make check TESTSUITEFLAGS='123 477-484'`
875ef81b
KM
501(Tests do not have inter-dependencies, so you may run any subset.)
502
503To run tests matching a keyword, e.g. "ovsdb":
542cc9bb 504 `make check TESTSUITEFLAGS='-k ovsdb'`
875ef81b
KM
505
506To see a complete list of test options:
542cc9bb 507 `make check TESTSUITEFLAGS=--help`
875ef81b
KM
508
509The results of a testing run are reported in tests/testsuite.log.
510Please report test failures as bugs and include the testsuite.log in
511your report.
512
513If you have "valgrind" installed, then you can also run the testsuite
514under valgrind by using "make check-valgrind" in place of "make
515check". All the same options are available via TESTSUITEFLAGS. When
542cc9bb
TG
516you do this, the "valgrind" results for test `<N>` are reported in files
517named `tests/testsuite.dir/<N>/valgrind.*`. You may find that the
875ef81b 518valgrind results are easier to interpret if you put "-q" in
447fe5cf 519~/.valgrindrc, since that reduces the amount of output.
875ef81b
KM
520
521Sometimes a few tests may fail on some runs but not others. This is
522usually a bug in the testsuite, not a bug in Open vSwitch itself. If
523you find that a test fails intermittently, please report it, since the
524developers may not have noticed.
525
e3c7ed29
BP
526OFTest
527------
528
529OFTest is an OpenFlow protocol testing suite. Open vSwitch includes a
530Makefile target to run OFTest with Open vSwitch in "dummy mode". In
531this mode of testing, no packets travel across physical or virtual
532networks. Instead, Unix domain sockets stand in as simulated
533networks. This simulation is imperfect, but it is much easier to set
534up, does not require extra physical or virtual hardware, and does not
535require supervisor privileges.
536
537To run OFTest with Open vSwitch, first read and follow the
538instructions under "Testsuites" above. Second, obtain a copy of
539OFTest and install its prerequisites. You need a copy of OFTest that
540includes commit 406614846c5 (make ovs-dummy platform work again).
541This commit was merged into the OFTest repository on Feb 1, 2013, so
542any copy of OFTest more recent than that should work. Testing OVS in
543dummy mode does not require root privilege, so you may ignore that
544requirement.
545
546Optionally, add the top-level OFTest directory (containing the "oft"
547program) to your $PATH. This slightly simplifies running OFTest later.
548
549To run OFTest in dummy mode, run the following command from your Open
550vSwitch build directory:
542cc9bb
TG
551 `make check-oftest OFT=<oft-binary>`
552where `<oft-binary>` is the absolute path to the "oft" program in
e3c7ed29
BP
553OFTest.
554
555If you added "oft" to your $PATH, you may omit the OFT variable
556assignment:
542cc9bb 557 `make check-oftest`
e3c7ed29
BP
558By default, "check-oftest" passes "oft" just enough options to enable
559dummy mode. You can use OFTFLAGS to pass additional options. For
560example, to run just the basic.Echo test instead of all tests (the
561default) and enable verbose logging:
542cc9bb 562 `make check-oftest OFT=<oft-binary> OFTFLAGS='--verbose -T basic.Echo'`
e3c7ed29
BP
563
564If you use OFTest that does not include commit 4d1f3eb2c792 (oft:
565change default port to 6653), merged into the OFTest repository in
566October 2013, then you need to add an option to use the IETF-assigned
567controller port:
542cc9bb 568 `make check-oftest OFT=<oft-binary> OFTFLAGS='--port=6653'`
e3c7ed29
BP
569
570Please interpret OFTest results cautiously. Open vSwitch can fail a
571given test in OFTest for many reasons, including bugs in Open vSwitch,
572bugs in OFTest, bugs in the "dummy mode" integration, and differing
573interpretations of the OpenFlow standard and other standards.
574
575Open vSwitch has not been validated against OFTest. Please do report
576test failures that you believe to represent bugs in Open vSwitch.
577Include the precise versions of Open vSwitch and OFTest in your bug
578report, plus any other information needed to reproduce the problem.
579
580Ryu
581---
582
583Ryu is an OpenFlow controller written in Python that includes an
584extensive OpenFlow testsuite. Open vSwitch includes a Makefile target
585to run Ryu in "dummy mode". See "OFTest" above for an explanation of
586dummy mode.
587
588To run Ryu tests with Open vSwitch, first read and follow the
589instructions under "Testsuites" above. Second, obtain a copy of Ryu,
590install its prerequisites, and build it. You do not need to install
591Ryu (some of the tests do not get installed, so it does not help).
592
593To run Ryu tests, run the following command from your Open vSwitch
594build directory:
542cc9bb
TG
595 `make check-ryu RYUDIR=<ryu-source-dir>`
596where `<ryu-source-dir>` is the absolute path to the root of the Ryu
597source distribution. The default `<ryu-source-dir>` is `$srcdir/../ryu`
e3c7ed29 598where $srcdir is your Open vSwitch source directory, so if this
542cc9bb 599default is correct then you make simply run `make check-ryu`.
e3c7ed29
BP
600
601Open vSwitch has not been validated against Ryu. Please do report
602test failures that you believe to represent bugs in Open vSwitch.
603Include the precise versions of Open vSwitch and Ryu in your bug
604report, plus any other information needed to reproduce the problem.
605
1ce96d2a
TG
606Vagrant
607-------
608
b56b2566 609Requires: Vagrant (version 1.7.0 or later) and a compatible hypervisor
1ce96d2a 610
e9e85443
FL
611You must bootstrap and configure the sources (steps are in "Building
612and Installing Open vSwitch for Linux, FreeBSD or NetBSD" above) before
613you run the steps described here.
614
1ce96d2a
TG
615A Vagrantfile is provided allowing to compile and provision the source
616tree as found locally in a virtual machine using the following commands:
617
618 vagrant up
619 vagrant ssh
620
621This will bring up w Fedora 20 VM by default, alternatively the
b56b2566
AZ
622`Vagrantfile` can be modified to use a different distribution box as
623base. Also, the VM can be reprovisioned at any time:
1ce96d2a
TG
624
625 vagrant provision
626
b56b2566
AZ
627OVS out-of-tree compilation environment can be set up with:
628
629 ./boot.sh
630 vagrant provision --provision-with configure_ovs,build_ovs
631
632This will set up an out-of-tree build environment in /home/vagrant/build.
633The source code can be found in /vagrant. Out-of-tree build is preferred
634to work around limitations of the sync file systems.
635
636To recompile and reinstall OVS using RPM:
637
638 ./boot.sh
639 vagrant provision --provision-with configure_ovs,install_rpm
640
548f9fe7
DDP
641Two provisioners are included to run system tests with the OVS kernel
642module or with a userspace datapath. This tests are different from
643the self-tests mentioned above. To run them:
644
645 ./boot.sh
646 vagrant provision --provision-with configure_ovs,test_ovs_kmod,test_ovs_system_userspace
647
8187f55b
TG
648Continuous Integration with Travis-CI
649-------------------------------------
650
651A .travis.yml file is provided to automatically build Open vSwitch with
652various build configurations and run the testsuite using travis-ci.
653Builds will be performed with gcc, sparse and clang with the -Werror
654compiler flag included, therefore the build will fail if a new warning
655has been introduced.
656
657The CI build is triggered via git push (regardless of the specific
658branch) or pull request against any Open vSwitch GitHub repository that
659is linked to travis-ci.
660
661Instructions to setup travis-ci for your GitHub repository:
662
35ab726f 6631. Go to http://travis-ci.org/ and sign in using your GitHub ID.
8187f55b
TG
6642. Go to the "Repositories" tab and enable the ovs repository. You
665 may disable builds for pushes or pull requests.
6663. In order to avoid forks sending build failures to the upstream
667 mailing list, the notification email recipient is encrypted. If you
668 want to receive email notification for build failures, replace the
669 the encrypted string:
670 3.1) Install the travis-ci CLI (Requires ruby >=2.0):
671 gem install travis
672 3.2) In your Open vSwitch repository:
673 travis encrypt mylist@mydomain.org
674 3.3) Add/replace the notifications section in .travis.yml and fill
675 in the secure string as returned by travis encrypt:
676
677 notifications:
678 email:
679 recipients:
680 - secure: "....."
681
682 (You may remove/omit the notifications section to fall back to
683 default notification behaviour which is to send an email directly
684 to the author and committer of the failing commit. Note that the
685 email is only sent if the author/committer have commit rights for
686 the particular GitHub repository).
687
6884. Pushing a commit to the repository which breaks the build or the
689 testsuite will now trigger a email sent to mylist@mydomain.org
690
4b11d5e8 691Bug Reporting
e3c7ed29 692=============
4b11d5e8 693
37ea6436 694Please report problems to bugs@openvswitch.org.
9feb1017
TG
695
696[README.md]:README.md
697[INSTALL.Debian.md]:INSTALL.Debian.md
698[INSTALL.Fedora.md]:INSTALL.Fedora.md
699[INSTALL.RHEL.md]:INSTALL.RHEL.md
700[INSTALL.XenServer.md]:INSTALL.XenServer.md
701[INSTALL.NetBSD.md]:INSTALL.NetBSD.md
702[INSTALL.DPDK.md]:INSTALL.DPDK.md
703[INSTALL.userspace.md]:INSTALL.userspace.md
704[FAQ.md]:FAQ.md