blob: bdfd3a4afab5391438680200e3f751c69167bc6a [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
55 MYSQL_PASSWORD=secrete
56 RABBIT_PASSWORD=secrete
57 SERVICE_PASSWORD=secrete
58 SERVICE_TOKEN=secrete
59
60 ## Neutron options
61 Q_USE_SECGROUP=True
62 FLOATING_RANGE="172.18.161.1/24"
63 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 -0700128Disabling Next Generation Firewall Tools
129========================================
130
Shilla Saebi2ed09d82015-04-21 15:02:13 -0400131DevStack does not properly operate with modern firewall tools. Specifically
Steven Dake3a6b1282014-12-31 14:27:22 -0700132it will appear as if the guest VM can access the external network via ICMP,
133but UDP and TCP packets will not be delivered to the guest VM. The root cause
134of the issue is that both ufw (Uncomplicated Firewall) and firewalld (Fedora's
135firewall manager) apply firewall rules to all interfaces in the system, rather
136then per-device. One solution to this problem is to revert to iptables
137functionality.
138
139To get a functional firewall configuration for Fedora do the following:
140
141::
142
143 sudo service iptables save
144 sudo systemctl disable firewalld
145 sudo systemctl enable iptables
146 sudo systemctl stop firewalld
147 sudo systemctl start iptables
148
149
150To get a functional firewall configuration for distributions containing ufw,
151disable ufw. Note ufw is generally not enabled by default in Ubuntu. To
152disable ufw if it was enabled, do the following:
153
154::
155
156 sudo service iptables save
157 sudo ufw disable
158
159
160
161
Sean M. Collins34296012014-10-27 11:57:20 -0400162Neutron Networking with Open vSwitch
163====================================
164
Shilla Saebi2ed09d82015-04-21 15:02:13 -0400165Configuring neutron, OpenStack Networking in DevStack is very similar to
Sean M. Collins34296012014-10-27 11:57:20 -0400166configuring `nova-network` - many of the same configuration variables
167(like `FIXED_RANGE` and `FLOATING_RANGE`) used by `nova-network` are
Shilla Saebi2ed09d82015-04-21 15:02:13 -0400168used by neutron, which is intentional.
Sean M. Collins34296012014-10-27 11:57:20 -0400169
170The only difference is the disabling of `nova-network` in your
Shilla Saebi2ed09d82015-04-21 15:02:13 -0400171local.conf, and the enabling of the neutron components.
Sean M. Collins34296012014-10-27 11:57:20 -0400172
173
174Configuration
175-------------
176
177::
178
179 FIXED_RANGE=10.0.0.0/24
180 FLOATING_RANGE=192.168.27.0/24
181 PUBLIC_NETWORK_GATEWAY=192.168.27.2
182
183 disable_service n-net
184 enable_service q-svc
185 enable_service q-agt
186 enable_service q-dhcp
187 enable_service q-meta
188 enable_service q-l3
189
190 Q_USE_SECGROUP=True
191 ENABLE_TENANT_VLANS=True
192 TENANT_VLAN_RANGE=1000:1999
193 PHYSICAL_NETWORK=default
194 OVS_PHYSICAL_BRIDGE=br-ex
195
196In this configuration we are defining FLOATING_RANGE to be a
197subnet that exists in the private RFC1918 address space - however in
198in a real setup FLOATING_RANGE would be a public IP address range.
199
Yalei Wanga48e5dc2015-03-06 17:05:11 +0800200Note that extension drivers for the ML2 plugin is set by
201`Q_ML2_PLUGIN_EXT_DRIVERS`, and it includes 'port_security' by default. If you
202want to remove all the extension drivers (even 'port_security'), set
203`Q_ML2_PLUGIN_EXT_DRIVERS` to blank.
204
Sean M. Collins34296012014-10-27 11:57:20 -0400205Neutron Networking with Open vSwitch and Provider Networks
206==========================================================
207
Shilla Saebi2ed09d82015-04-21 15:02:13 -0400208In some instances, it is desirable to use neutron's provider
Sean M. Collins34296012014-10-27 11:57:20 -0400209networking extension, so that networks that are configured on an
Shilla Saebi2ed09d82015-04-21 15:02:13 -0400210external router can be utilized by neutron, and instances created via
Sean M. Collins34296012014-10-27 11:57:20 -0400211Nova can attach to the network managed by the external router.
212
213For example, in some lab environments, a hardware router has been
214pre-configured by another party, and an OpenStack developer has been
215given a VLAN tag and IP address range, so that instances created via
216DevStack will use the external router for L3 connectivity, as opposed
Shilla Saebi2ed09d82015-04-21 15:02:13 -0400217to the neutron L3 service.
Sean M. Collins34296012014-10-27 11:57:20 -0400218
219
220Service Configuration
221---------------------
222
223**Control Node**
224
225In this example, the control node will run the majority of the
Shilla Saebi2ed09d82015-04-21 15:02:13 -0400226OpenStack API and management services (keystone, glance,
227nova, neutron)
Sean M. Collins34296012014-10-27 11:57:20 -0400228
229
230**Compute Nodes**
231
232In this example, the nodes that will host guest instances will run
233the `neutron-openvswitch-agent` for network connectivity, as well as
234the compute service `nova-compute`.
235
236DevStack Configuration
237----------------------
238
239The following is a snippet of the DevStack configuration on the
240controller node.
241
242::
243
244 PUBLIC_INTERFACE=eth1
245
246 ## Neutron options
247 Q_USE_SECGROUP=True
248 ENABLE_TENANT_VLANS=True
249 TENANT_VLAN_RANGE=3001:4000
250 PHYSICAL_NETWORK=default
251 OVS_PHYSICAL_BRIDGE=br-ex
252
253 Q_USE_PROVIDER_NETWORKING=True
254 Q_L3_ENABLED=False
255
256 # Do not use Nova-Network
257 disable_service n-net
258
259 # Neutron
260 ENABLED_SERVICES+=,q-svc,q-dhcp,q-meta,q-agt
261
262 ## Neutron Networking options used to create Neutron Subnets
263
264 FIXED_RANGE="10.1.1.0/24"
265 PROVIDER_SUBNET_NAME="provider_net"
266 PROVIDER_NETWORK_TYPE="vlan"
267 SEGMENTATION_ID=2010
268
269In this configuration we are defining FIXED_RANGE to be a
Kennan35663102015-01-20 16:19:49 +0800270subnet that exists in the private RFC1918 address space - however
Sean M. Collins34296012014-10-27 11:57:20 -0400271in a real setup FIXED_RANGE would be a public IP address range, so
272that you could access your instances from the public internet.
273
274The following is a snippet of the DevStack configuration on the
275compute node.
276
277::
278
279 # Services that a compute node runs
280 ENABLED_SERVICES=n-cpu,rabbit,q-agt
281
282 ## Neutron options
283 Q_USE_SECGROUP=True
284 ENABLE_TENANT_VLANS=True
285 TENANT_VLAN_RANGE=3001:4000
286 PHYSICAL_NETWORK=default
287 OVS_PHYSICAL_BRIDGE=br-ex
288 PUBLIC_INTERFACE=eth1
289 Q_USE_PROVIDER_NETWORKING=True
290 Q_L3_ENABLED=False
291
292When DevStack is configured to use provider networking (via
293`Q_USE_PROVIDER_NETWORKING` is True and `Q_L3_ENABLED` is False) -
294DevStack will automatically add the network interface defined in
295`PUBLIC_INTERFACE` to the `OVS_PHYSICAL_BRIDGE`
296
297For example, with the above configuration, a bridge is
298created, named `br-ex` which is managed by Open vSwitch, and the
299second interface on the compute node, `eth1` is attached to the
Shilla Saebi2ed09d82015-04-21 15:02:13 -0400300bridge, to forward traffic sent by guest VMs.