datapath-windows: Make VPORT ovs number values smaller than MAXUINT16
[cascardo/ovs.git] / INSTALL
diff --git a/INSTALL b/INSTALL
index 9f9491f..3cfdc04 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -10,6 +10,7 @@ on a specific platform, please see one of these files:
     - INSTALL.RHEL
     - INSTALL.XenServer
     - INSTALL.NetBSD
+    - INSTALL.DPDK
 
 Build Requirements
 ------------------
@@ -27,6 +28,10 @@ you will need the following software:
           analysis and thread-safety checks.  For Ubuntu, there are
           nightly built packages available on clang's website.
 
+      While OVS may be compatible with other compilers, optimal
+      support for atomic operations may be missing, making OVS very
+      slow (see lib/ovs-atomic.h).
+
     - libssl, from OpenSSL, is optional but recommended if you plan to
       connect the Open vSwitch to an OpenFlow controller.  libssl is
       required to establish confidentiality and authenticity in the
@@ -36,13 +41,17 @@ you will need the following software:
 
     - Python 2.x, for x >= 4.
 
-To compile the kernel module on Linux, you must also install the
-following.  If you cannot build or install the kernel module, you may
-use the userspace-only implementation, at a cost in performance.  The
-userspace implementation may also lack some features.  Refer to
-INSTALL.userspace for more information.
-
-    - A supported Linux kernel version.  Please refer to README for a
+On Linux, you may choose to compile the kernel module that comes with
+the Open vSwitch distribution or to use the kernel module built into
+the Linux kernel (version 3.3 or later).  See the FAQ question "What
+features are not available in the Open vSwitch kernel datapath that
+ships as part of the upstream Linux kernel?" for more information on
+this trade-off.  You may also use the userspace-only implementation,
+at some cost in features and performance (see INSTALL.userspace for
+details).  To compile the kernel module on Linux, you must also
+install the following:
+
+    - A supported Linux kernel version.  Please refer to README.md for a
       list of supported versions.
 
       The Open vSwitch datapath requires bridging support
@@ -58,8 +67,10 @@ INSTALL.userspace for more information.
       obsolete and not needed.)
 
       To use GRE tunneling on Linux 2.6.37 or newer, kernel support
-      for GRE must be compiled in or available as a module
-      (CONFIG_NET_IPGRE_DEMUX).
+      for GRE demultiplexing (CONFIG_NET_IPGRE_DEMUX) must be compiled
+      in or available as a module.  Also, on kernels before 3.11, the
+      ip_gre module, for GRE tunnels over IP (NET_IPGRE), must not be
+      loaded or compiled in.
 
       To configure HTB or HFSC quality of service with Open vSwitch,
       you must enable the respective configuration options.
@@ -80,7 +91,7 @@ If you are working from a Git tree or snapshot (instead of from a
 distribution tarball), or if you modify the Open vSwitch build system
 or the database schema, you will also need the following software:
 
-    - Autoconf version 2.64 or later.
+    - Autoconf version 2.63 or later.
 
     - Automake version 1.10 or later.
 
@@ -144,9 +155,8 @@ Prerequisites section, follow the procedure below to build.
 
       % ./boot.sh
 
-2. In the top source directory, configure the package by running the
-   configure script.  You can usually invoke configure without any
-   arguments:
+2. Configure the package by running the configure script.  You can
+   usually invoke configure without any arguments.  For example:
 
       % ./configure
 
@@ -172,6 +182,10 @@ Prerequisites section, follow the procedure below to build.
 
       % ./configure --with-linux=/lib/modules/`uname -r`/build
 
+   If --with-linux requests building for an unsupported version of
+   Linux, then "configure" will fail with an error message.  Please
+   refer to the FAQ for advice in that case.
+
    If you wish to build the kernel module for an architecture other
    than the architecture of the machine used for the build, you may
    specify the kernel architecture string using the KARCH variable
@@ -194,7 +208,16 @@ Prerequisites section, follow the procedure below to build.
    additional environment variables.  For a full list, invoke
    configure with the --help option.
 
-3. Run GNU make in the top source directory, e.g.:
+   You can also run configure from a separate build directory.  This
+   is helpful if you want to build Open vSwitch in more than one way
+   from a single source directory, e.g. to try out both GCC and Clang
+   builds, or to build kernel modules for more than one Linux version.
+   Here is an example:
+
+      % mkdir _gcc && (cd _gcc && ../configure CC=gcc)
+      % mkdir _clang && (cd _clang && ../configure CC=clang)
+
+3. Run GNU make in the build directory, e.g.:
 
       % make
 
@@ -202,6 +225,12 @@ Prerequisites section, follow the procedure below to build.
 
       % gmake
 
+   If you used a separate build directory, run make or gmake from that
+   directory, e.g.:
+
+      % make -C _gcc
+      % make -C _clang
+
    For improved warnings if you installed "sparse" (see
    "Prerequisites"), add C=1 to the command line.
 
@@ -279,9 +308,9 @@ Startup
 Before starting ovs-vswitchd itself, you need to start its
 configuration database, ovsdb-server.  Each machine on which Open
 vSwitch is installed should run its own copy of ovsdb-server.
-Configure it to use the database you created during step 7 of
-installation, above, to listen on a Unix domain socket, to connect to
-any managers specified in the database itself, and to use the SSL
+Configure it to use the database you created during installation (as
+explained above), to listen on a Unix domain socket, to connect to any
+managers specified in the database itself, and to use the SSL
 configuration in the database:
 
       % ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \
@@ -353,7 +382,7 @@ of Open vSwitch, make sure that the new userspace version is compatible with
 the previously loaded kernel module.
 
 2. An upgrade of userspace daemons means that they have to be restarted.
-Restarting the daemons means that the Openflow flows in the ovs-vswitchd daemon
+Restarting the daemons means that the OpenFlow flows in the ovs-vswitchd daemon
 will be lost.  One way to restore the flows is to let the controller
 re-populate it.  Another way is to save the previous flows using a utility
 like ovs-ofctl and then re-add them after the restart. Restoring the old flows
@@ -524,6 +553,49 @@ test failures that you believe to represent bugs in Open vSwitch.
 Include the precise versions of Open vSwitch and Ryu in your bug
 report, plus any other information needed to reproduce the problem.
 
+Continuous Integration with Travis-CI
+-------------------------------------
+
+A .travis.yml file is provided to automatically build Open vSwitch with
+various build configurations and run the testsuite using travis-ci.
+Builds will be performed with gcc, sparse and clang with the -Werror
+compiler flag included, therefore the build will fail if a new warning
+has been introduced.
+
+The CI build is triggered via git push (regardless of the specific
+branch) or pull request against any Open vSwitch GitHub repository that
+is linked to travis-ci.
+
+Instructions to setup travis-ci for your GitHub repository:
+
+1. Go to http://travis-ci.org/ and sign in using your GitHub ID.
+2. Go to the "Repositories" tab and enable the ovs repository. You
+   may disable builds for pushes or pull requests.
+3. In order to avoid forks sending build failures to the upstream
+   mailing list, the notification email recipient is encrypted. If you
+   want to receive email notification for build failures, replace the
+   the encrypted string:
+   3.1) Install the travis-ci CLI (Requires ruby >=2.0):
+           gem install travis
+   3.2) In your Open vSwitch repository:
+           travis encrypt mylist@mydomain.org
+   3.3) Add/replace the notifications section in .travis.yml and fill
+        in the secure string as returned by travis encrypt:
+
+         notifications:
+           email:
+             recipients:
+               - secure: "....."
+
+   (You may remove/omit the notifications section to fall back to
+    default notification behaviour which is to send an email directly
+    to the author and committer of the failing commit. Note that the
+    email is only sent if the author/committer have commit rights for
+    the particular GitHub repository).
+
+4. Pushing a commit to the repository which breaks the build or the
+   testsuite will now trigger a email sent to mylist@mydomain.org
+
 Bug Reporting
 =============