Prepare Open vSwitch 1.1.2 release.
[sliver-openvswitch.git] / INSTALL.Linux
index bd7038c..8ec82a2 100644 (file)
@@ -3,12 +3,11 @@
 
 This document describes how to build and install Open vSwitch on a
 generic Linux host.  If you want to install Open vSwitch on a Citrix
-XenServer version 5.5.0, see INSTALL.XenServer instead.
+XenServer, see INSTALL.XenServer instead.
 
-This version of Open vSwitch should be built manually with "configure"
-and "make".  Debian packaging for Open vSwitch is also included, but
-they have not been recently tested, and so Debian packages are not a
-recommended way to use this version of Open vSwitch.
+This version of Open vSwitch may be built manually with "configure"
+and "make", as described below.  You may also build Debian packages by
+running "dpkg-buildpackage".
 
 Build Requirements
 ------------------
@@ -21,11 +20,14 @@ you will need the following software:
     - The GNU C compiler.  We generally test with version 4.1, 4.2, or
       4.3.
 
+    - pkg-config.  We test with version 0.22.
+
     - 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
-      connections from an Open vSwitch to an OpenFlow controller.  To
-      enable, configure with --enable-ssl=yes.
+      connections from an Open vSwitch to an OpenFlow controller.  If
+      libssl is installed, then Open vSwitch will automatically build
+      with support for it.
 
 To compile the kernel module, you must also install the following.  If
 you cannot build or install the kernel module, you may use the
@@ -52,6 +54,9 @@ INSTALL.userspace for more information.
       be compiled with IPv6 support (CONFIG_IPV6).  This allows for
       special handling (such as path MTU discovery) of IPv6 packets.
 
+      To configure HTB or HFSC quality of service with Open vSwitch,
+      you must enable the respective configuration options.
+
       To use Open vSwitch support for TAP devices, you must enable
       CONFIG_TUN.
 
@@ -65,15 +70,13 @@ INSTALL.userspace for more information.
       infrastructure.
 
 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,
-you will also need the following software:
+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.
 
     - Automake version 1.10 or later.
 
-    - pkg-config.  We test with version 0.22.
-
     - Python 2.x, for x >= 4.
 
 If you modify the ovsdbmonitor tool, then you will also need the
@@ -81,6 +84,22 @@ following:
 
     - pyuic4 from PyQt4 (http://www.riverbankcomputing.co.uk).
 
+To run the unit tests, you also need:
+
+    - Perl.  Version 5.10.1 is known to work.  Earlier versions should
+      also work.
+
+If you modify the vswitchd database schema, then the E-R diagram in
+the ovs-vswitchd.conf.db(5) manpage will be updated properly only if
+you have the following:
+
+    - "dot" from graphviz (http://www.graphviz.org/).
+
+    - Perl.  Version 5.10.1 is known to work.  Earlier versions should
+      also work.
+
+    - Python 2.x, for x >= 4.
+
 Installation Requirements
 -------------------------
 
@@ -221,30 +240,56 @@ Prerequisites section, follow the procedure below to build.
         module loading, please include the output from the "dmesg" and
         "modinfo" commands mentioned above.
 
+   There is an optional module parameter to openvswitch_mod.ko called
+   vlan_tso that enables TCP segmentation offload over VLANs on NICs
+   that support it. Many drivers do not expose support for TSO on VLANs
+   in a way that Open vSwitch can use but there is no way to detect
+   whether this is the case. If you know that your particular driver can
+   handle it (for example by testing sending large TCP packets over VLANs)
+   then passing in a value of 1 may improve performance. Modules built for
+   Linux kernels 2.6.37 and later, as well as specially patched versions
+   of earlier kernels, do not need this and do not have this parameter. If
+   you do not understand what this means or do not know if your driver
+   will work, do not set this.
+
 7. Initialize the configuration database using ovsdb-tool, e.g.:
 
-      % ovsdb-tool create /usr/local/etc/ovs-vswitchd.conf.db vswitchd/vswitch.ovsschema
+      % mkdir -p /usr/local/etc/openvswitch
+      % ovsdb-tool create /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema
 
 Startup
 =======
 
 Before starting ovs-vswitchd itself, you need to start its
-configuration database, ovsdb-server.  Configure it to use the
-database you created during step 7 of installation, above, and to
-listen on a Unix domain socket, e.g.:
-
-      % ovsdb-server /usr/local/etc/ovs-vswitchd.conf.db --remote=punix:/usr/local/var/run/openvswitch/db.sock
-
-Then initialize the database with "ovs-vsctl init".  This is only
+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
+configuration in the database:
+
+      % ovsdb-server /usr/local/etc/openvswitch/conf.db \
+                      --remote=punix:/usr/local/var/run/openvswitch/db.sock \
+                      --remote=db:Open_vSwitch,manager_options \
+                      --private-key=db:SSL,private_key \
+                      --certificate=db:SSL,certificate \
+                      --bootstrap-ca-cert=db:SSL,ca_cert \
+                      --pidfile --detach
+
+(If you built Open vSwitch without SSL support, then omit
+--private-key, --certificate, and --bootstrap-ca-cert.)
+
+Then initialize the database using ovs-vsctl.  This is only
 necessary the first time after you create the database with
 ovsdb-tool (but running it at any time is harmless):
 
-      % ovs-vsctl init
+      % ovs-vsctl --no-wait init
 
 Then start the main Open vSwitch daemon, telling it to connect to the
 same Unix domain socket:
 
-      % ovs-vswitchd unix:/usr/local/var/run/openvswitch/db.sock
+      % ovs-vswitchd unix:/usr/local/var/run/openvswitch/db.sock \
+            --pidfile --detach 
 
 Now you may use ovs-vsctl to set up bridges and other Open vSwitch
 features.  For example, to create a bridge named br0 and add ports
@@ -256,6 +301,33 @@ eth0 and vif1.0 to it:
 
 Please refer to ovs-vsctl(8) for more details.
 
+Upgrading
+=========
+
+When you upgrade Open vSwitch from one version to another, you should
+also upgrade the database schema:
+
+1. Stop the Open vSwitch daemons, e.g.:
+
+      % kill `cd /usr/local/var/run && cat ovsdb-server.pid ovs-vswitchd.pid`
+
+2. Install the new Open vSwitch release.
+
+3. Upgrade the database, in one of the following two ways:
+
+      - If there is no important data in your database, then you may
+        delete the database file and recreate it with ovsdb-tool,
+        following the instructions under "Building and Installing Open
+        vSwitch for Linux".
+
+      - If you want to preserve the contents of your database, back it
+        up first, then use "ovsdb-tool convert" to upgrade it, e.g.:
+
+        % ovsdb-tool convert /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema
+
+4. Start the Open vSwitch daemons as described under "Building and
+   Installing Open vSwitch for Linux" above.
+
 Bug Reporting
 -------------