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