blob: 9d4f54a05ef315bc94ae16705838c560efc9cad2 [file] [log] [blame]
Sean M. Collins34296012014-10-27 11:57:20 -04001======================================
Shilla Saebi2ed09d82015-04-21 15:02:13 -04002Using DevStack with neutron Networking
Sean M. Collins34296012014-10-27 11:57:20 -04003======================================
4
Shilla Saebi2ed09d82015-04-21 15:02:13 -04005This guide will walk you through using OpenStack neutron with the ML2
Sean M. Collins34296012014-10-27 11:57:20 -04006plugin and the Open vSwitch mechanism driver.
7
Sean M. Collins34296012014-10-27 11:57:20 -04008
Sean M. Collins02ae50d2015-03-20 09:58:55 -07009Using Neutron with a Single Interface
10=====================================
11
12In some instances, like on a developer laptop, there is only one
13network interface that is available. In this scenario, the physical
14interface is added to the Open vSwitch bridge, and the IP address of
15the laptop is migrated onto the bridge interface. That way, the
16physical interface can be used to transmit tenant network traffic,
17the OpenStack API traffic, and management traffic.
18
19
20Physical Network Setup
21----------------------
22
23In most cases where DevStack is being deployed with a single
24interface, there is a hardware router that is being used for external
25connectivity and DHCP. The developer machine is connected to this
26network and is on a shared subnet with other machines.
27
28.. nwdiag::
29
30 nwdiag {
31 inet [ shape = cloud ];
32 router;
33 inet -- router;
34
35 network hardware_network {
36 address = "172.18.161.0/24"
37 router [ address = "172.18.161.1" ];
38 devstack_laptop [ address = "172.18.161.6" ];
39 }
40 }
41
42
43DevStack Configuration
44----------------------
45
46
47::
48
49 HOST_IP=172.18.161.6
50 SERVICE_HOST=172.18.161.6
51 MYSQL_HOST=172.18.161.6
52 RABBIT_HOST=172.18.161.6
53 GLANCE_HOSTPORT=172.18.161.6:9292
54 ADMIN_PASSWORD=secrete
Swapnil (coolsvap) Kulkarnic988bf62015-10-08 13:10:43 +053055 DATABASE_PASSWORD=secrete
Sean M. Collins02ae50d2015-03-20 09:58:55 -070056 RABBIT_PASSWORD=secrete
57 SERVICE_PASSWORD=secrete
58 SERVICE_TOKEN=secrete
59
60 ## Neutron options
61 Q_USE_SECGROUP=True
Christian Berendt1c394822015-09-10 12:15:16 +020062 FLOATING_RANGE="172.18.161.0/24"
Sean M. Collins02ae50d2015-03-20 09:58:55 -070063 FIXED_RANGE="10.0.0.0/24"
64 Q_FLOATING_ALLOCATION_POOL=start=172.18.161.250,end=172.18.161.254
65 PUBLIC_NETWORK_GATEWAY="172.18.161.1"
66 Q_L3_ENABLED=True
67 PUBLIC_INTERFACE=eth0
68 Q_USE_PROVIDERNET_FOR_PUBLIC=True
69 OVS_PHYSICAL_BRIDGE=br-ex
70 PUBLIC_BRIDGE=br-ex
71 OVS_BRIDGE_MAPPINGS=public:br-ex
72
73
74
75
76
77Using Neutron with Multiple Interfaces
78======================================
Sean M. Collins34296012014-10-27 11:57:20 -040079
80The first interface, eth0 is used for the OpenStack management (API,
81message bus, etc) as well as for ssh for an administrator to access
82the machine.
83
84::
85
86 stack@compute:~$ ifconfig eth0
87 eth0 Link encap:Ethernet HWaddr bc:16:65:20:af:fc
88 inet addr:192.168.1.18
89
90eth1 is manually configured at boot to not have an IP address.
91Consult your operating system documentation for the appropriate
Juan Antonio Osorio Roblesb7c1ce42014-11-28 14:19:19 +020092technique. For Ubuntu, the contents of `/etc/network/interfaces`
Sean M. Collins34296012014-10-27 11:57:20 -040093contains:
94
95::
96
97 auto eth1
98 iface eth1 inet manual
99 up ifconfig $IFACE 0.0.0.0 up
100 down ifconfig $IFACE 0.0.0.0 down
101
102The second physical interface, eth1 is added to a bridge (in this case
103named br-ex), which is used to forward network traffic from guest VMs.
104Network traffic from eth1 on the compute nodes is then NAT'd by the
105controller node that runs Neutron's `neutron-l3-agent` and provides L3
106connectivity.
107
108::
109
110 stack@compute:~$ sudo ovs-vsctl add-br br-ex
111 stack@compute:~$ sudo ovs-vsctl add-port br-ex eth1
112 stack@compute:~$ sudo ovs-vsctl show
113 9a25c837-32ab-45f6-b9f2-1dd888abcf0f
114 Bridge br-ex
115 Port br-ex
116 Interface br-ex
117 type: internal
118 Port phy-br-ex
119 Interface phy-br-ex
120 type: patch
121 options: {peer=int-br-ex}
122 Port "eth1"
123 Interface "eth1"
124
125
126
127
Steven Dake3a6b1282014-12-31 14:27:22 -0700128
Sean M. Collins34296012014-10-27 11:57:20 -0400129Neutron Networking with Open vSwitch
130====================================
131
Shilla Saebi2ed09d82015-04-21 15:02:13 -0400132Configuring neutron, OpenStack Networking in DevStack is very similar to
Sean M. Collins34296012014-10-27 11:57:20 -0400133configuring `nova-network` - many of the same configuration variables
134(like `FIXED_RANGE` and `FLOATING_RANGE`) used by `nova-network` are
Shilla Saebi2ed09d82015-04-21 15:02:13 -0400135used by neutron, which is intentional.
Sean M. Collins34296012014-10-27 11:57:20 -0400136
137The only difference is the disabling of `nova-network` in your
Shilla Saebi2ed09d82015-04-21 15:02:13 -0400138local.conf, and the enabling of the neutron components.
Sean M. Collins34296012014-10-27 11:57:20 -0400139
140
141Configuration
142-------------
143
144::
145
146 FIXED_RANGE=10.0.0.0/24
147 FLOATING_RANGE=192.168.27.0/24
148 PUBLIC_NETWORK_GATEWAY=192.168.27.2
149
150 disable_service n-net
151 enable_service q-svc
152 enable_service q-agt
153 enable_service q-dhcp
154 enable_service q-meta
155 enable_service q-l3
156
157 Q_USE_SECGROUP=True
158 ENABLE_TENANT_VLANS=True
159 TENANT_VLAN_RANGE=1000:1999
160 PHYSICAL_NETWORK=default
161 OVS_PHYSICAL_BRIDGE=br-ex
162
163In this configuration we are defining FLOATING_RANGE to be a
164subnet that exists in the private RFC1918 address space - however in
165in a real setup FLOATING_RANGE would be a public IP address range.
166
Yalei Wanga48e5dc2015-03-06 17:05:11 +0800167Note that extension drivers for the ML2 plugin is set by
168`Q_ML2_PLUGIN_EXT_DRIVERS`, and it includes 'port_security' by default. If you
169want to remove all the extension drivers (even 'port_security'), set
170`Q_ML2_PLUGIN_EXT_DRIVERS` to blank.
171
Sean M. Collins34296012014-10-27 11:57:20 -0400172Neutron Networking with Open vSwitch and Provider Networks
173==========================================================
174
Shilla Saebi2ed09d82015-04-21 15:02:13 -0400175In some instances, it is desirable to use neutron's provider
Sean M. Collins34296012014-10-27 11:57:20 -0400176networking extension, so that networks that are configured on an
Shilla Saebi2ed09d82015-04-21 15:02:13 -0400177external router can be utilized by neutron, and instances created via
Sean M. Collins34296012014-10-27 11:57:20 -0400178Nova can attach to the network managed by the external router.
179
180For example, in some lab environments, a hardware router has been
181pre-configured by another party, and an OpenStack developer has been
182given a VLAN tag and IP address range, so that instances created via
183DevStack will use the external router for L3 connectivity, as opposed
Shilla Saebi2ed09d82015-04-21 15:02:13 -0400184to the neutron L3 service.
Sean M. Collins34296012014-10-27 11:57:20 -0400185
186
187Service Configuration
188---------------------
189
190**Control Node**
191
192In this example, the control node will run the majority of the
Shilla Saebi2ed09d82015-04-21 15:02:13 -0400193OpenStack API and management services (keystone, glance,
194nova, neutron)
Sean M. Collins34296012014-10-27 11:57:20 -0400195
196
197**Compute Nodes**
198
199In this example, the nodes that will host guest instances will run
200the `neutron-openvswitch-agent` for network connectivity, as well as
201the compute service `nova-compute`.
202
203DevStack Configuration
204----------------------
205
206The following is a snippet of the DevStack configuration on the
207controller node.
208
209::
210
211 PUBLIC_INTERFACE=eth1
212
213 ## Neutron options
214 Q_USE_SECGROUP=True
215 ENABLE_TENANT_VLANS=True
216 TENANT_VLAN_RANGE=3001:4000
217 PHYSICAL_NETWORK=default
218 OVS_PHYSICAL_BRIDGE=br-ex
219
220 Q_USE_PROVIDER_NETWORKING=True
221 Q_L3_ENABLED=False
222
223 # Do not use Nova-Network
224 disable_service n-net
225
226 # Neutron
227 ENABLED_SERVICES+=,q-svc,q-dhcp,q-meta,q-agt
228
229 ## Neutron Networking options used to create Neutron Subnets
230
Sean M. Collinsd72b8392015-06-18 12:40:09 -0400231 FIXED_RANGE="203.0.113.0/24"
Sean M. Collins34296012014-10-27 11:57:20 -0400232 PROVIDER_SUBNET_NAME="provider_net"
233 PROVIDER_NETWORK_TYPE="vlan"
234 SEGMENTATION_ID=2010
235
236In this configuration we are defining FIXED_RANGE to be a
Sean M. Collinsd72b8392015-06-18 12:40:09 -0400237publicly routed IPv4 subnet. In this specific instance we are using
238the special TEST-NET-3 subnet defined in `RFC 5737 <http://tools.ietf.org/html/rfc5737>`_,
239which is used for documentation. In your DevStack setup, FIXED_RANGE
240would be a public IP address range that you or your organization has
241allocated to you, so that you could access your instances from the
242public internet.
Sean M. Collins34296012014-10-27 11:57:20 -0400243
244The following is a snippet of the DevStack configuration on the
245compute node.
246
247::
248
249 # Services that a compute node runs
250 ENABLED_SERVICES=n-cpu,rabbit,q-agt
251
252 ## Neutron options
253 Q_USE_SECGROUP=True
254 ENABLE_TENANT_VLANS=True
255 TENANT_VLAN_RANGE=3001:4000
256 PHYSICAL_NETWORK=default
257 OVS_PHYSICAL_BRIDGE=br-ex
258 PUBLIC_INTERFACE=eth1
259 Q_USE_PROVIDER_NETWORKING=True
260 Q_L3_ENABLED=False
261
262When DevStack is configured to use provider networking (via
263`Q_USE_PROVIDER_NETWORKING` is True and `Q_L3_ENABLED` is False) -
264DevStack will automatically add the network interface defined in
265`PUBLIC_INTERFACE` to the `OVS_PHYSICAL_BRIDGE`
266
267For example, with the above configuration, a bridge is
268created, named `br-ex` which is managed by Open vSwitch, and the
269second interface on the compute node, `eth1` is attached to the
Shilla Saebi2ed09d82015-04-21 15:02:13 -0400270bridge, to forward traffic sent by guest VMs.
Sean M. Collins872a2622015-10-06 12:45:06 -0400271
272Miscellaneous Tips
273==================
274
275
276Disabling Next Generation Firewall Tools
277----------------------------------------
278
279DevStack does not properly operate with modern firewall tools. Specifically
280it will appear as if the guest VM can access the external network via ICMP,
281but UDP and TCP packets will not be delivered to the guest VM. The root cause
282of the issue is that both ufw (Uncomplicated Firewall) and firewalld (Fedora's
283firewall manager) apply firewall rules to all interfaces in the system, rather
284then per-device. One solution to this problem is to revert to iptables
285functionality.
286
287To get a functional firewall configuration for Fedora do the following:
288
289::
290
291 sudo service iptables save
292 sudo systemctl disable firewalld
293 sudo systemctl enable iptables
294 sudo systemctl stop firewalld
295 sudo systemctl start iptables
296
297
298To get a functional firewall configuration for distributions containing ufw,
299disable ufw. Note ufw is generally not enabled by default in Ubuntu. To
300disable ufw if it was enabled, do the following:
301
302::
303
304 sudo service iptables save
305 sudo ufw disable
306
307
308