]> git.proxmox.com Git - ovs.git/blame - Documentation/faq/configuration.rst
faq: Add Q&A for applying patches from email.
[ovs.git] / Documentation / faq / configuration.rst
CommitLineData
11e02906
SF
1..
2 Licensed under the Apache License, Version 2.0 (the "License"); you may
3 not use this file except in compliance with the License. You may obtain
4 a copy of the License at
5
6 http://www.apache.org/licenses/LICENSE-2.0
7
8 Unless required by applicable law or agreed to in writing, software
9 distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
10 WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
11 License for the specific language governing permissions and limitations
12 under the License.
13
14 Convention for heading levels in Open vSwitch documentation:
15
16 ======= Heading 0 (reserved for the title in a document)
17 ------- Heading 1
18 ~~~~~~~ Heading 2
19 +++++++ Heading 3
20 ''''''' Heading 4
21
22 Avoid deeper levels because they do not render well.
23
24===================
25Basic Configuration
26===================
27
28Q: How do I configure a port as an access port?
29
30 A. Add ``tag=VLAN`` to your ``ovs-vsctl add-port`` command. For example,
31 the following commands configure br0 with eth0 as a trunk port (the
32 default) and tap0 as an access port for VLAN 9:
33
34 ::
35
36 $ ovs-vsctl add-br br0
37 $ ovs-vsctl add-port br0 eth0
38 $ ovs-vsctl add-port br0 tap0 tag=9
39
40 If you want to configure an already added port as an access port, use
41 ``ovs-vsctl set``, e.g.:
42
43 ::
44
45 $ ovs-vsctl set port tap0 tag=9
46
47Q: How do I configure a port as a SPAN port, that is, enable mirroring of all
48traffic to that port?
49
50 A. The following commands configure br0 with eth0 and tap0 as trunk ports.
51 All traffic coming in or going out on eth0 or tap0 is also mirrored to
52 tap1; any traffic arriving on tap1 is dropped:
53
54 ::
55
56 $ ovs-vsctl add-br br0
57 $ ovs-vsctl add-port br0 eth0
58 $ ovs-vsctl add-port br0 tap0
59 $ ovs-vsctl add-port br0 tap1 \
60 -- --id=@p get port tap1 \
61 -- --id=@m create mirror name=m0 select-all=true output-port=@p \
62 -- set bridge br0 mirrors=@m
63
64 To later disable mirroring, run:
65
66 ::
67
68 $ ovs-vsctl clear bridge br0 mirrors
69
70Q: Does Open vSwitch support configuring a port in promiscuous mode?
71
72 A: Yes. How you configure it depends on what you mean by "promiscuous
73 mode":
74
75 - Conventionally, "promiscuous mode" is a feature of a network interface
76 card. Ordinarily, a NIC passes to the CPU only the packets actually
77 destined to its host machine. It discards the rest to avoid wasting
78 memory and CPU cycles. When promiscuous mode is enabled, however, it
79 passes every packet to the CPU. On an old-style shared-media or
80 hub-based network, this allows the host to spy on all packets on the
81 network. But in the switched networks that are almost everywhere these
82 days, promiscuous mode doesn't have much effect, because few packets not
83 destined to a host are delivered to the host's NIC.
84
85 This form of promiscuous mode is configured in the guest OS of the VMs on
0b2c7e69 86 your bridge, e.g. with "ip link set <device> promisc".
11e02906
SF
87
88 - The VMware vSwitch uses a different definition of "promiscuous mode".
89 When you configure promiscuous mode on a VMware vNIC, the vSwitch sends a
90 copy of every packet received by the vSwitch to that vNIC. That has a
91 much bigger effect than just enabling promiscuous mode in a guest OS.
92 Rather than getting a few stray packets for which the switch does not yet
93 know the correct destination, the vNIC gets every packet. The effect is
94 similar to replacing the vSwitch by a virtual hub.
95
96 This "promiscuous mode" is what switches normally call "port mirroring"
97 or "SPAN". For information on how to configure SPAN, see "How do I
98 configure a port as a SPAN port, that is, enable mirroring of all traffic
99 to that port?"
100
101Q: How do I configure a DPDK port as an access port?
102
103 A: Firstly, you must have a DPDK-enabled version of Open vSwitch.
104
3e52fa56
AC
105 If your version is DPDK-enabled it may support the dpdk_version and
106 dpdk_initialized keys in the configuration database. Earlier versions
107 of Open vSwitch only supported the other-config:dpdk-init key in the
108 configuration in the database. All versions will display lines with
109 "EAL:..." during startup when other_config:dpdk-init is set to 'true'.
11e02906
SF
110
111 Secondly, when adding a DPDK port, unlike a system port, the type for the
9cdef506 112 interface and valid dpdk-devargs must be specified. For example::
11e02906
SF
113
114 $ ovs-vsctl add-br br0
9cdef506
BX
115 $ ovs-vsctl add-port br0 myportname -- set Interface myportname \
116 type=dpdk options:dpdk-devargs=0000:06:00.0
11e02906
SF
117
118 Refer to :doc:`/intro/install/dpdk` for more information on enabling and
119 using DPDK with Open vSwitch.
120
121Q: How do I configure a VLAN as an RSPAN VLAN, that is, enable mirroring of all
122traffic to that VLAN?
123
124 A: The following commands configure br0 with eth0 as a trunk port and tap0
125 as an access port for VLAN 10. All traffic coming in or going out on tap0,
126 as well as traffic coming in or going out on eth0 in VLAN 10, is also
127 mirrored to VLAN 15 on eth0. The original tag for VLAN 10, in cases where
128 one is present, is dropped as part of mirroring:
129
130 ::
131
132 $ ovs-vsctl add-br br0
133 $ ovs-vsctl add-port br0 eth0
134 $ ovs-vsctl add-port br0 tap0 tag=10
135 $ ovs-vsctl \
136 -- --id=@m create mirror name=m0 select-all=true select-vlan=10 \
137 output-vlan=15 \
138 -- set bridge br0 mirrors=@m
139
140 To later disable mirroring, run:
141
142 ::
143
144 $ ovs-vsctl clear bridge br0 mirrors
145
146 Mirroring to a VLAN can disrupt a network that contains unmanaged switches.
147 See ovs-vswitchd.conf.db(5) for details. Mirroring to a GRE tunnel has
148 fewer caveats than mirroring to a VLAN and should generally be preferred.
149
150Q: Can I mirror more than one input VLAN to an RSPAN VLAN?
151
152 A: Yes, but mirroring to a VLAN strips the original VLAN tag in favor of
153 the specified output-vlan. This loss of information may make the mirrored
154 traffic too hard to interpret.
155
156 To mirror multiple VLANs, use the commands above, but specify a
157 comma-separated list of VLANs as the value for select-vlan. To mirror
158 every VLAN, use the commands above, but omit select-vlan and its value
159 entirely.
160
161 When a packet arrives on a VLAN that is used as a mirror output VLAN, the
162 mirror is disregarded. Instead, in standalone mode, OVS floods the packet
163 across all the ports for which the mirror output VLAN is configured. (If
164 an OpenFlow controller is in use, then it can override this behavior
165 through the flow table.) If OVS is used as an intermediate switch, rather
166 than an edge switch, this ensures that the RSPAN traffic is distributed
167 through the network.
168
169 Mirroring to a VLAN can disrupt a network that contains unmanaged switches.
170 See ovs-vswitchd.conf.db(5) for details. Mirroring to a GRE tunnel has
171 fewer caveats than mirroring to a VLAN and should generally be preferred.
172
173Q: How do I configure mirroring of all traffic to a GRE tunnel?
174
175 A: The following commands configure br0 with eth0 and tap0 as trunk ports.
176 All traffic coming in or going out on eth0 or tap0 is also mirrored to
177 gre0, a GRE tunnel to the remote host 192.168.1.10; any traffic arriving on
178 gre0 is dropped::
179
180 $ ovs-vsctl add-br br0
181 $ ovs-vsctl add-port br0 eth0
182 $ ovs-vsctl add-port br0 tap0
183 $ ovs-vsctl add-port br0 gre0 \
184 -- set interface gre0 type=gre options:remote_ip=192.168.1.10 \
185 -- --id=@p get port gre0 \
186 -- --id=@m create mirror name=m0 select-all=true output-port=@p \
187 -- set bridge br0 mirrors=@m
188
189 To later disable mirroring and destroy the GRE tunnel::
190
191 $ ovs-vsctl clear bridge br0 mirrors
192 $ ovs-vsctl del-port br0 gre0
193
194Q: Does Open vSwitch support ERSPAN?
195
4ee9f056
WT
196 A: Yes. ERSPAN version I and version II over IPv4 GRE and
197 IPv6 GRE tunnel are supported. See ovs-fields(7) for matching
198 and setting ERSPAN fields.
199
200 ::
201
202 $ ovs-vsctl add-br br0
203 $ #For ERSPAN type 2 (version I)
204 $ ovs-vsctl add-port br0 at_erspan0 -- \
205 set int at_erspan0 type=erspan options:key=1 \
206 options:remote_ip=172.31.1.1 \
207 options:erspan_ver=1 options:erspan_idx=1
208 $ #For ERSPAN type 3 (version II)
209 $ ovs-vsctl add-port br0 at_erspan0 -- \
210 set int at_erspan0 type=erspan options:key=1 \
211 options:remote_ip=172.31.1.1 \
212 options:erspan_ver=2 options:erspan_dir=1 \
213 options:erspan_hwid=4
11e02906
SF
214
215Q: How do I connect two bridges?
216
217 A: First, why do you want to do this? Two connected bridges are not much
218 different from a single bridge, so you might as well just have a single
219 bridge with all your ports on it.
220
221 If you still want to connect two bridges, you can use a pair of patch
222 ports. The following example creates bridges br0 and br1, adds eth0 and
223 tap0 to br0, adds tap1 to br1, and then connects br0 and br1 with a pair of
224 patch ports.
225
226 ::
227
228 $ ovs-vsctl add-br br0
229 $ ovs-vsctl add-port br0 eth0
230 $ ovs-vsctl add-port br0 tap0
231 $ ovs-vsctl add-br br1
232 $ ovs-vsctl add-port br1 tap1
233 $ ovs-vsctl \
234 -- add-port br0 patch0 \
235 -- set interface patch0 type=patch options:peer=patch1 \
236 -- add-port br1 patch1 \
237 -- set interface patch1 type=patch options:peer=patch0
238
239 Bridges connected with patch ports are much like a single bridge. For
240 instance, if the example above also added eth1 to br1, and both eth0 and
241 eth1 happened to be connected to the same next-hop switch, then you could
242 loop your network just as you would if you added eth0 and eth1 to the same
243 bridge (see the "Configuration Problems" section below for more
244 information).
245
246 If you are using Open vSwitch 1.9 or an earlier version, then you need to
247 be using the kernel module bundled with Open vSwitch rather than the one
248 that is integrated into Linux 3.3 and later, because Open vSwitch 1.9 and
249 earlier versions need kernel support for patch ports. This also means that
250 in Open vSwitch 1.9 and earlier, patch ports will not work with the
251 userspace datapath, only with the kernel module.
252
253Q: How do I configure a bridge without an OpenFlow local port? (Local port in
254the sense of OFPP_LOCAL)
255
256 A: Open vSwitch does not support such a configuration. Bridges always have
257 their local ports.