summaryrefslogtreecommitdiff
path: root/debian/openvswitch-switch.README.Debian
blob: a0138f916d41be7fe9862978e1d87bda18678337 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
README.Debian for openvswitch-switch
---------------------------------

To use the Linux kernel-based switch implementation, you will need an
Open vSwitch kernel module.  There are multiple ways to obtain one.
In order of increasing manual effort, these are:

       * Use a Linux kernel 3.3 or later, which has an integrated Open
	 vSwitch kernel module.

	 The upstream Linux kernel module lacks a few features that
	 are in the third-party module.  For details, please see the
	 FAQ, "What features are not available in the Open vSwitch
	 kernel datapath that ships as part of the upstream Linux
	 kernel?".

       * Install the "openvswitch-datapath-dkms" Debian package that
	 you built earlier.  This should automatically build and
	 install the Open vSwitch kernel module for your running
	 kernel.

	 This option requires that you have a compiler and toolchain
	 installed on the machine where you run Open vSwitch, which
	 may be unacceptable in some production server environments.

       * Install the "openvswitch-datapath-source" Debian package, use
	 "module-assistant" to build a Debian package of the Open
	 vSwitch kernel module for your kernel, and then install that
	 Debian package.

	 You can install the kernel module Debian packages that you
	 build this way on the same machine where you built it or on
	 another machine or machines, which means that you don't
	 necessarily have to have any build infrastructure on the
	 machines where you use the kernel module.

	 /usr/share/doc/openvswitch-datapath-source/README.Debian has
	 details on the build process.

       * Build and install the kernel module by hand.


Debian network scripts integration
----------------------------------
This package lets a user to optionally configure Open vSwitch bridges
and ports from /etc/network/interfaces. Please refer to the interfaces(5)
manpage for more details regarding /etc/network/interfaces.

The stanzas that configure the OVS bridges should begin with "allow-ovs"
followed by name of the bridge. Here is an example.
allow-ovs br0

The stanzas that configure the OVS ports should begin with
"allow-${bridge-name}" followed by name of the port. Here is an example.
allow-br0 eth0

The following OVS specific "command" options are supported:

    - ovs_type: This can either be OVSBridge, OVSPort, OVSIntPort, OVSBond,
      OVSPatchPort or OVSTunnel depending on whether you configure a bridge,
      port, an internal port, a bond, a patch port or a tunnel. This is a
      required option.

    - ovs_ports: This option specifies all the ports that belong to a bridge.

    - ovs_bridge: This options specifies a bridge to which a port belongs.
      This is a required option for a port.

    - ovs_bonds: This option specifies the list of physical interfaces to be
      bonded together.

    - ovs_patch_peer: For "OVSPatchPort" interfaces, this field specifies
      the patch's peer on the other bridge.

    - ovs_tunnel_type: For "OVSTunnel" interfaces, the type of the tunnel.
      For example, "gre", "vxlan", etc.

    - ovs_tunnel_options: For "OVSTunnel" interfaces, this field should be
      used to specify the tunnel options like remote_ip, key, etc.

    - ovs_options: This option lets you add extra arguments to a ovs-vsctl
      command. See examples.

    - ovs_extra: This option lets you run additional ovs-vsctl commands,
      separated by "--" (double dash). Variables can be part of the "ovs_extra"
      option. You can provide all the standard environmental variables
      described in the interfaces(5) man page. You can also pass shell
      commands.

More implementation specific details can be seen in the examples.

Examples:
--------
ex 1: A standalone bridge.

allow-ovs br0
iface br0 inet static
    address 192.168.1.1
    netmask 255.255.255.0
    ovs_type OVSBridge

ex 2: A bridge with one port.

allow-ovs br0
iface br0 inet dhcp
    ovs_type OVSBridge
    ovs_ports eth0

allow-br0 eth0
iface eth0 inet manual
    ovs_bridge br0
    ovs_type OVSPort

ex 3: A bridge with multiple physical ports.

allow-ovs br0
iface br0 inet dhcp
    ovs_type OVSBridge
    ovs_ports eth0 eth1

allow-br0 eth0
iface eth0 inet manual
    ovs_bridge br0
    ovs_type OVSPort

allow-br0 eth1
iface eth1 inet manual
    ovs_bridge br0
    ovs_type OVSPort

ex 4: A bridge with an OVS internal port.

allow-ovs br1
iface br1 inet static
    address 192.168.1.1
    netmask 255.255.255.0
    ovs_type OVSBridge
    ovs_ports vlan100

allow-br1 vlan100
iface vlan100 inet manual
    ovs_bridge br1
    ovs_type OVSIntPort
    ovs_options tag=100
    ovs_extra set interface ${IFACE} external-ids:iface-id=$(hostname -s)

ex 5: Bonding.

allow-ovs br2
iface br2 inet static
    address 192.170.1.1
    netmask 255.255.255.0
    ovs_type OVSBridge
    ovs_ports bond0

allow-br2 bond0
iface bond0 inet manual
    ovs_bridge br2
    ovs_type OVSBond
    ovs_bonds eth2 eth3
    ovs_options bond_mode=balance-tcp lacp=active

ex 6: Patch ports.

allow-ovs br0
iface br0 inet manual
    ovs_type OVSBridge
    ovs_ports patch0

allow-br0 patch0
iface patch0 inet manual
    ovs_bridge br0
    ovs_type OVSPatchPort
    ovs_patch_peer patch1

allow-ovs br1
iface br1 inet manual
    ovs_type OVSBridge
    ovs_ports patch1

allow-br1 patch1
iface patch1 inet manual
    ovs_bridge br1
    ovs_type OVSPatchPort
    ovs_patch_peer patch0

ex 7: Tunnel.

allow-ovs br1
iface br1 inet static
    address 192.168.1.1
    netmask 255.255.255.0
    ovs_type OVSBridge
    ovs_ports gre1

allow-br1 gre1
iface gre1 inet manual
    ovs_bridge br1
    ovs_type OVSTunnel
    ovs_tunnel_type gre
    ovs_tunnel_options options:remote_ip=182.168.1.2 options:key=1

ex 8: Create and destroy bridges.

ifup --allow=ovs $list_of_bridges
ifdown --allow=ovs $list_of_bridges