meta-flow: Correctly set destination MAC in mf_set_flow_value().
[sliver-openvswitch.git] / INSTALL.XenServer
1            How to Install Open vSwitch on Citrix XenServer
2            ===============================================
3
4 This document describes how to build and install Open vSwitch on a
5 Citrix XenServer host.  If you want to install Open vSwitch on a
6 generic Linux host, see INSTALL.Linux instead.
7
8 These instructions have been tested with XenServer 5.6 FP1.
9
10 Building Open vSwitch for XenServer
11 -----------------------------------
12
13 The recommended build environment to build RPMs for Citrix XenServer
14 is the DDK VM available from Citrix.  If you are building from an Open
15 vSwitch distribution tarball, this VM has all the tools that you will
16 need.  If you are building from an Open vSwitch Git tree, then you
17 will need to first create a distribution tarball elsewhere, by running
18 "./boot.sh; ./configure; make dist" in the Git tree, because the DDK
19 VM does not include Autoconf or Automake that are required to
20 bootstrap the Open vSwitch distribution.
21
22 Once you have a distribution tarball, copy it into
23 /usr/src/redhat/SOURCES inside the VM.  Then execute the following:
24
25    VERSION=<Open vSwitch version>
26    KERNEL_NAME=<Xen Kernel name>
27    KERNEL_VERSION=<Xen Kernel version>
28    KERNEL_FLAVOR=<Xen Kernel flavor(suffix) >
29    cd /tmp
30    tar xfz /usr/src/redhat/SOURCES/openvswitch-$VERSION.tar.gz
31    rpmbuild \
32         -D "openvswitch_version $VERSION" \
33         -D "kernel_name $KERNEL_NAME" \
34         -D "kernel_version $KERNEL_VERSION" \
35         -D "kernel_flavor $KERNEL_FLAVOR" \
36         -bb openvswitch-$VERSION/xenserver/openvswitch-xen.spec
37
38 where:
39
40     <openvswitch version> is the version number that appears in the
41     name of the Open vSwitch tarball, e.g. 0.90.0.
42
43     <Xen Kernel name> is the name of the XenServer kernel package,
44     e.g. kernel-xen or kernel-NAME-xen, without the "kernel-" prefix.
45
46     <Xen Kernel version> is the output of:
47     rpm -q --queryformat "%{Version}-%{Release}" <kernel-devel-package>,
48     e.g. 2.6.32.12-0.7.1.xs5.6.100.323.170596, where <kernel-devel-package> is
49     the name of the -devel package corresponding to <Xen Kernel name>.
50
51     <Xen Kernel flavor (suffix) > is either "xen" or "kdump".
52     The "xen" flavor is the main running kernel flavor and the "kdump" flavor is
53     the crashdump kernel flavor. Commonly, one would specify "xen" here.
54
55 Three RPMs will be output into /usr/src/redhat/RPMS/i386, whose names begin
56 with "openvswitch", "openvswitch-modules-xen" (if building for kernel_flavor=xen),
57 and "openvswitch-debuginfo".
58
59 Installing Open vSwitch for XenServer
60 -------------------------------------
61
62 To install Open vSwitch on a XenServer host, or to upgrade to a newer version,
63 copy the "openvswitch" and "openvswitch-modules-xen" RPMs to that host with
64 "scp", then install them with "rpm -U", e.g.:
65
66      scp openvswitch-$VERSION-1.i386.rpm \
67          openvswitch-modules-xen-$XEN_KERNEL_VERSION-$VERSION-1.i386.rpm \
68          root@<host>:
69 (At this point you will have to enter <host>'s root password.)
70      ssh root@<host>
71 (At this point you will have to enter <host>'s root password again.)
72      rpm -U openvswitch-$VERSION-1.i386.rpm \
73          openvswitch-modules-xen-$XEN_KERNEL_VERSION-$VERSION-1.i386.rpm
74
75 To uninstall Open vSwitch from a XenServer host, remove the packages:
76
77      ssh root@<host>
78 (At this point you will have to enter <host>'s root password again.)
79      rpm -e openvswitch openvswitch-modules-xen-$XEN_KERNEL_VERSION
80
81 After installing or uninstalling Open vSwitch, the XenServer should be
82 rebooted as soon as possible.
83
84 Open vSwitch Boot Sequence on XenServer
85 ---------------------------------------
86
87 When Open vSwitch is installed on XenServer, its startup script
88 /etc/init.d/openvswitch runs early in boot.  It does roughly the
89 following:
90
91         * Loads the OVS kernel module, openvswitch_mod.
92
93         * Starts ovsdb-server, the OVS configuration database.
94
95         * XenServer expects there to be no bridges configured at
96           startup, but the OVS configuration database likely still has
97           bridges configured from before reboot.  To match XenServer
98           expectations, the startup script deletes all configured
99           bridges from the database.
100
101         * Starts ovs-vswitchd, the OVS switching daemon.
102
103 At this point in the boot process, then, there are no Open vSwitch
104 bridges, even though all of the Open vSwitch daemons are running.
105 Later on in boot, /etc/init.d/management-interface (part of XenServer,
106 not Open vSwitch) creates the bridge for the XAPI management interface
107 by invoking /opt/xensource/libexec/interface-reconfigure.  Normally
108 this program consults XAPI's database to obtain information about how
109 to configure the bridge, but XAPI is not running yet[*] so it instead
110 consults /var/xapi/network.dbcache, which is a cached copy of the most
111 recent network configuration.
112
113 [*] Even if XAPI were running, if this XenServer node is a pool slave
114     then the query would have to consult the master, which requires
115     network access, which begs the question of how to configure the
116     management interface.
117
118 XAPI starts later on in the boot process.  XAPI can then create other
119 bridges on demand using /opt/xensource/libexec/interface-reconfigure.
120 Now that XAPI is running, that program consults XAPI directly instead
121 of reading the cache.
122
123 As part of its own startup, XAPI invokes the Open vSwitch XAPI plugin
124 script /etc/xapi.d/openvswitch-cfg-update passing the "update"
125 command.  The plugin script does roughly the following:
126
127         * Calls /opt/xensource/libexec/interface-reconfigure with the
128           "rewrite" command, to ensure that the network cache is
129           up-to-date.
130
131         * Queries the Open vSwitch manager setting (named
132           "vswitch_controller") from the XAPI database for the
133           XenServer pool.
134
135         * If XAPI and OVS are configured for different managers, or if
136           OVS is configured for a manager but XAPI is not, runs
137           "ovs-vsctl emer-reset" to bring the Open vSwitch
138           configuration to a known state.  One effect of emer-reset is
139           to deconfigure any manager from the OVS database.
140
141         * If XAPI is configured for a manger, configures the OVS
142           manager to match with "ovs-vsctl set-manager".
143
144 The Open vSwitch boot sequence only configures an OVS configuration
145 database manager.  There is no way to directly configure an OpenFlow
146 controller on XenServer and, as a consequence of the step above that
147 deletes all of the bridges at boot time, controller configuration only
148 persists until XenServer reboot.  The configuration database manager
149 can, however, configure controllers for bridges.  See the BUGS section
150 of ovs-controller(8) for more information on this topic.
151
152 Reporting Bugs
153 --------------
154
155 Please report problems to bugs@openvswitch.org.