blob: 0e61e7618189433635640fb41e310ee34d27c8a0 [file] [log] [blame]
Filip Pytlouncd028e42015-10-06 16:28:32 +02001=======================
2Neutron Network Service
3=======================
4
Jakub Pavlik9ecf0262016-05-20 11:20:58 +02005Neutron is an OpenStack project to provide "networking as a service" between
6interface devices (e.g., vNICs) managed by other Openstack services (e.g.,
7nova).
Filip Pytlouncd028e42015-10-06 16:28:32 +02008
Jakub Pavlik9ecf0262016-05-20 11:20:58 +02009Starting in the Folsom release, Neutron is a core and supported part of the
10OpenStack platform (for Essex, we were an "incubated" project, which means use
11is suggested only for those who really know what they're doing with Neutron).
Filip Pytlouncd028e42015-10-06 16:28:32 +020012
Filip Pytlouncd028e42015-10-06 16:28:32 +020013Sample pillars
14==============
15
16Neutron Server on the controller node
17
18.. code-block:: yaml
19
20 neutron:
21 server:
22 enabled: true
Jiri Broulik74f61112016-11-21 20:23:47 +010023 version: mitaka
Swann Croiset9407daf2017-02-02 15:27:56 +010024 allow_pagination: true
25 pagination_max_limit: 100
Filip Pytlouncd028e42015-10-06 16:28:32 +020026 bind:
27 address: 172.20.0.1
28 port: 9696
Filip Pytlouncd028e42015-10-06 16:28:32 +020029 database:
30 engine: mysql
31 host: 127.0.0.1
32 port: 3306
33 name: neutron
34 user: neutron
35 password: pwd
36 identity:
37 engine: keystone
38 host: 127.0.0.1
39 port: 35357
40 user: neutron
41 password: pwd
42 tenant: service
Dennis Dmitriev37114722017-03-06 16:52:26 +020043 endpoint_type: internal
Filip Pytlouncd028e42015-10-06 16:28:32 +020044 message_queue:
45 engine: rabbitmq
46 host: 127.0.0.1
47 port: 5672
48 user: openstack
49 password: pwd
50 virtual_host: '/openstack'
51 metadata:
52 host: 127.0.0.1
53 port: 8775
54 password: pass
Petr Michalec61f7ab22016-11-29 16:29:09 +010055 audit:
56 enabled: false
Filip Pytlouncd028e42015-10-06 16:28:32 +020057
Swann Croiset9407daf2017-02-02 15:27:56 +010058Note: The pagination is useful to retrieve a large bunch of resources,
59because a single request may fail (timeout). This is enabled with both
60parameters *allow_pagination* and *pagination_max_limit* as shown above.
61
Ondrej Smola314eee22017-03-08 21:21:16 +010062Neutron lbaas provides on the controller node
63
64.. code-block:: yaml
65
66 neutron:
67 server:
68 lbaas:
69 enabled: true
70 providers:
71 avi_adc:
72 enabled: true
73 engine: avinetworks
74 controller_address: 10.182.129.239
75 controller_user: admin
76 controller_password: Cloudlab2016
77 controller_cloud_name: Default-Cloud
78 avi_adc2:
79 engine: avinetworks
80 ...
81
82Note: If you want contrail lbaas then backend is only required. Lbaas in pillar should be define only if it should be disabled.
83
84.. code-block:: yaml
85
86 neutron:
87 server:
88 lbaas:
89 enabled: disabled
90
Swann Croiset9407daf2017-02-02 15:27:56 +010091
Jiri Broulik74f61112016-11-21 20:23:47 +010092Neutron VXLAN tenant networks with Network Nodes (with DVR for East-West
93 and Network node for North-South)
94=========================================================================
95===================================
96
97This use case describes a model utilising VxLAN overlay with DVR. The DVR
98 routers will only be utilized for traffic that is router within the cloud
99 infrastructure and that remains encapsulated. External traffic will be
100 routed to via the network nodes.
101
102The intention is that each tenant will require at least two (2) vrouters
103one to be utilised
104
105Neutron Server only
106-------------------
marcoa4428a32016-06-10 11:50:16 +0200107
108.. code-block:: yaml
109
110 neutron:
111 server:
Jiri Broulik74f61112016-11-21 20:23:47 +0100112 version: mitaka
113 plugin: ml2
114 bind:
115 address: 172.20.0.1
116 port: 9696
117 database:
118 engine: mysql
119 host: 127.0.0.1
120 port: 3306
121 name: neutron
122 user: neutron
123 password: pwd
124 identity:
125 engine: keystone
126 host: 127.0.0.1
127 port: 35357
128 user: neutron
129 password: pwd
130 tenant: service
Dennis Dmitriev37114722017-03-06 16:52:26 +0200131 endpoint_type: internal
Jiri Broulik74f61112016-11-21 20:23:47 +0100132 message_queue:
133 engine: rabbitmq
134 host: 127.0.0.1
135 port: 5672
136 user: openstack
137 password: pwd
138 virtual_host: '/openstack'
139 global_physnet_mtu: 9000
140 l3_ha: False # Which type of router will be created by default
141 dvr: True # disabled for non DVR use case
142 backend:
143 engine: ml2
144 tenant_network_types: "flat,vxlan"
145 external_mtu: 9000
146 mechanism:
147 ovs:
148 driver: openvswitch
149
150Network Node only
151-----------------
152
153.. code-block:: yaml
154
155 neutron:
156 gateway:
157 enabled: True
158 version: mitaka
159 message_queue:
160 engine: rabbitmq
161 host: 127.0.0.1
162 port: 5672
163 user: openstack
164 password: pwd
165 virtual_host: '/openstack'
166 local_ip: 192.168.20.20 # br-mesh ip address
167 dvr: True # disabled for non DVR use case
168 agent_mode: dvr_snat
169 metadata:
170 host: 127.0.0.1
171 password: pass
172 backend:
173 engine: ml2
174 tenant_network_types: "flat,vxlan"
175 mechanism:
176 ovs:
177 driver: openvswitch
178
179Compute Node
180-------------
181
182.. code-block:: yaml
183
184 neutron:
185 compute:
186 enabled: True
187 version: mitaka
188 message_queue:
189 engine: rabbitmq
190 host: 127.0.0.1
191 port: 5672
192 user: openstack
193 password: pwd
194 virtual_host: '/openstack'
195 local_ip: 192.168.20.20 # br-mesh ip address
196 dvr: True # disabled for non DVR use case
197 agent_mode: dvr
198 external_access: false # Compute node with DVR for east-west only, Network Node has True as default
199 metadata:
200 host: 127.0.0.1
201 password: pass
202 backend:
203 engine: ml2
204 tenant_network_types: "flat,vxlan"
205 mechanism:
206 ovs:
207 driver: openvswitch
Petr Michalec61f7ab22016-11-29 16:29:09 +0100208 audit:
209 enabled: false
Jiri Broulik74f61112016-11-21 20:23:47 +0100210
211Neutron VXLAN tenant networks with Network Nodes (non DVR)
212==========================================================
213
214This section describes a network solution that utilises VxLAN overlay
215 networks without DVR with all routers being managed on the network nodes.
216
217Neutron Server only
218-------------------
219
220.. code-block:: yaml
221
222 neutron:
223 server:
224 version: mitaka
225 plugin: ml2
226 bind:
227 address: 172.20.0.1
228 port: 9696
229 database:
230 engine: mysql
231 host: 127.0.0.1
232 port: 3306
233 name: neutron
234 user: neutron
235 password: pwd
236 identity:
237 engine: keystone
238 host: 127.0.0.1
239 port: 35357
240 user: neutron
241 password: pwd
242 tenant: service
Dennis Dmitriev37114722017-03-06 16:52:26 +0200243 endpoint_type: internal
Jiri Broulik74f61112016-11-21 20:23:47 +0100244 message_queue:
245 engine: rabbitmq
246 host: 127.0.0.1
247 port: 5672
248 user: openstack
249 password: pwd
250 virtual_host: '/openstack'
251 global_physnet_mtu: 9000
252 l3_ha: True
253 dvr: False
254 backend:
255 engine: ml2
256 tenant_network_types= "flat,vxlan"
257 external_mtu: 9000
258 mechanism:
259 ovs:
260 driver: openvswitch
261
262Network Node only
263-----------------
264
265.. code-block:: yaml
266
267 neutron:
268 gateway:
269 enabled: True
270 version: mitaka
271 message_queue:
272 engine: rabbitmq
273 host: 127.0.0.1
274 port: 5672
275 user: openstack
276 password: pwd
277 virtual_host: '/openstack'
278 local_ip: 192.168.20.20 # br-mesh ip address
279 dvr: False
280 agent_mode: legacy
Simon Pasquierc03af112017-04-10 10:35:14 +0200281 availability_zone: az1
Jiri Broulik74f61112016-11-21 20:23:47 +0100282 metadata:
283 host: 127.0.0.1
284 password: pass
285 backend:
286 engine: ml2
287 tenant_network_types: "flat,vxlan"
288 mechanism:
289 ovs:
290 driver: openvswitch
291
292Compute Node
293-------------
294
295.. code-block:: yaml
296
297 neutron:
298 compute:
299 enabled: True
300 version: mitaka
301 message_queue:
302 engine: rabbitmq
303 host: 127.0.0.1
304 port: 5672
305 user: openstack
306 password: pwd
307 virtual_host: '/openstack'
308 local_ip: 192.168.20.20 # br-mesh ip address
309 external_access: False
310 dvr: False
311 backend:
312 engine: ml2
313 tenant_network_types: "flat,vxlan"
314 mechanism:
315 ovs:
316 driver: openvswitch
317
318Neutron VXLAN tenant networks with Network Nodes (with DVR for
319East-West and North-South, DVR everywhere, Network node for SNAT)
320==============================================================
321========================================================
322
323This section describes a network solution that utilises VxLAN
324overlay networks with DVR with North-South and East-West. Network
325Node is used only for SNAT.
326
327Neutron Server only
328-------------------
329
330.. code-block:: yaml
331
332 neutron:
333 server:
334 version: mitaka
335 plugin: ml2
336 bind:
337 address: 172.20.0.1
338 port: 9696
339 database:
340 engine: mysql
341 host: 127.0.0.1
342 port: 3306
343 name: neutron
344 user: neutron
345 password: pwd
346 identity:
347 engine: keystone
348 host: 127.0.0.1
349 port: 35357
350 user: neutron
351 password: pwd
352 tenant: service
Dennis Dmitriev37114722017-03-06 16:52:26 +0200353 endpoint_type: internal
Jiri Broulik74f61112016-11-21 20:23:47 +0100354 message_queue:
355 engine: rabbitmq
356 host: 127.0.0.1
357 port: 5672
358 user: openstack
359 password: pwd
360 virtual_host: '/openstack'
361 global_physnet_mtu: 9000
362 l3_ha: False
363 dvr: True
364 backend:
365 engine: ml2
366 tenant_network_types= "flat,vxlan"
367 external_mtu: 9000
368 mechanism:
369 ovs:
370 driver: openvswitch
371
372Network Node only
373-----------------
374
375.. code-block:: yaml
376
377 neutron:
378 gateway:
379 enabled: True
380 version: mitaka
381 message_queue:
382 engine: rabbitmq
383 host: 127.0.0.1
384 port: 5672
385 user: openstack
386 password: pwd
387 virtual_host: '/openstack'
388 local_ip: 192.168.20.20 # br-mesh ip address
389 dvr: True
390 agent_mode: dvr_snat
Simon Pasquierc03af112017-04-10 10:35:14 +0200391 availability_zone: az1
Jiri Broulik74f61112016-11-21 20:23:47 +0100392 metadata:
393 host: 127.0.0.1
394 password: pass
395 backend:
396 engine: ml2
397 tenant_network_types: "flat,vxlan"
398 mechanism:
399 ovs:
400 driver: openvswitch
401
402Compute Node
403-------------
404
405.. code-block:: yaml
406
407 neutron:
408 compute:
409 enabled: True
410 version: mitaka
411 message_queue:
412 engine: rabbitmq
413 host: 127.0.0.1
414 port: 5672
415 user: openstack
416 password: pwd
417 virtual_host: '/openstack'
418 local_ip: 192.168.20.20 # br-mesh ip address
419 dvr: True
420 external_access: True
421 agent_mode: dvr
Simon Pasquierc03af112017-04-10 10:35:14 +0200422 availability_zone: az1
Jiri Broulik74f61112016-11-21 20:23:47 +0100423 metadata:
424 host: 127.0.0.1
425 password: pass
426 backend:
427 engine: ml2
428 tenant_network_types: "flat,vxlan"
429 mechanism:
430 ovs:
431 driver: openvswitch
432
433Sample Linux network configuration for DVR
434--------------------------------------------
435
436.. code-block:: yaml
437
438 linux:
439 network:
440 bridge: openvswitch
441 interface:
442 eth1:
443 enabled: true
444 type: eth
445 mtu: 9000
446 proto: manual
447 eth2:
448 enabled: true
449 type: eth
450 mtu: 9000
451 proto: manual
452 eth3:
453 enabled: true
454 type: eth
455 mtu: 9000
456 proto: manual
457 br-int:
458 enabled: true
459 mtu: 9000
460 type: ovs_bridge
461 br-floating:
462 enabled: true
463 mtu: 9000
464 type: ovs_bridge
465 float-to-ex:
466 enabled: true
467 type: ovs_port
468 mtu: 65000
469 bridge: br-floating
470 br-mgmt:
471 enabled: true
472 type: bridge
473 mtu: 9000
474 address: ${_param:single_address}
475 netmask: 255.255.255.0
476 use_interfaces:
477 - eth1
478 br-mesh:
479 enabled: true
480 type: bridge
481 mtu: 9000
482 address: ${_param:tenant_address}
483 netmask: 255.255.255.0
484 use_interfaces:
485 - eth2
486 br-ex:
487 enabled: true
488 type: bridge
489 mtu: 9000
490 address: ${_param:external_address}
491 netmask: 255.255.255.0
492 use_interfaces:
493 - eth3
494 use_ovs_ports:
495 - float-to-ex
496
497Neutron VLAN tenant networks with Network Nodes
498===============================================
499
500VLAN tenant provider
501
502Neutron Server only
503-------------------
504
505.. code-block:: yaml
506
507 neutron:
508 server:
509 version: mitaka
510 plugin: ml2
511 ...
512 global_physnet_mtu: 9000
513 l3_ha: False
514 dvr: True
515 backend:
516 engine: ml2
517 tenant_network_types: "flat,vlan" # Can be mixed flat,vlan,vxlan
518 tenant_vlan_range: "1000:2000"
519 external_vlan_range: "100:200" # Does not have to be defined.
520 external_mtu: 9000
521 mechanism:
522 ovs:
523 driver: openvswitch
524
525Compute node
526-------------------
527
528.. code-block:: yaml
529
530 neutron:
531 compute:
532 version: mitaka
533 plugin: ml2
534 ...
535 dvr: True
536 agent_mode: dvr
537 external_access: False
538 backend:
539 engine: ml2
540 tenant_network_types: "flat,vlan" # Can be mixed flat,vlan,vxlan
541 mechanism:
542 ovs:
543 driver: openvswitch
544
Jakub Pavlik8f83ccc2017-02-27 11:15:39 +0100545Neutron OVS DPDK
546==================
547
548Enable datapath netdev for neutron openvswitch agent
549
550.. code-block:: yaml
551
552 neutron:
553 server:
554 version: mitaka
555 ...
556 dpdk: True
557 ...
558
559 neutron:
560 compute:
561 version: mitaka
562 plugin: ml2
563 dpdk: True
564 backend:
565 engine: ml2
566 ...
567 mechanism:
568 ovs:
569 driver: openvswitch
570
Jakub Pavlik70555cb2017-02-26 18:48:02 +0100571Neutron OVS SR-IOV
572==================
573
574.. code-block:: yaml
575
576 neutron:
577 server:
578 version: mitaka
579 plugin: ml2
580 backend:
581 engine: ml2
582 ...
583 mechanism:
584 ovs:
585 driver: openvswitch
586 sriov:
587 driver: sriovnicswitch
588
589 neutron:
590 compute:
591 version: mitaka
592 plugin: ml2
593 ...
594 backend:
595 engine: ml2
596 tenant_network_types: "flat,vlan" # Can be mixed flat,vlan,vxlan
597 sriov:
598 nic_one:
599 devname: eth1
600 physical_network: physnet3
601 mechanism:
602 ovs:
603 driver: openvswitch
604
Jiri Broulik74f61112016-11-21 20:23:47 +0100605Neutron Server with OpenContrail
606==================================
607
608.. code-block:: yaml
609
610 neutron:
611 server:
612 plugin: contrail
marcoa4428a32016-06-10 11:50:16 +0200613 backend:
614 engine: contrail
615 host: contrail_discovery_host
616 port: 8082
617 user: admin
618 password: password
619 tenant: admin
620 token: token
621
622Neutron Server with Midonet
Jiri Broulik74f61112016-11-21 20:23:47 +0100623===========================
marcoa4428a32016-06-10 11:50:16 +0200624
625.. code-block:: yaml
626
627 neutron:
628 server:
629 backend:
630 engine: midonet
631 host: midonet_api_host
632 port: 8181
633 user: admin
634 password: password
635
Jiri Broulik74f61112016-11-21 20:23:47 +0100636Other
637=====
Filip Pytlouncd028e42015-10-06 16:28:32 +0200638
Jakub Pavlik6dd5c0a2016-03-09 14:18:15 +0100639Neutron Keystone region
640
641.. code-block:: yaml
642
643 neutron:
644 server:
645 enabled: true
646 version: kilo
647 ...
648 identity:
649 region: RegionTwo
650 ...
651 compute:
652 region: RegionTwo
653 ...
654
Jiri Konecny93b19992016-04-12 11:15:39 +0200655
656Client-side RabbitMQ HA setup
657
658.. code-block:: yaml
659
660 neutron:
661 server:
662 ....
663 message_queue:
664 engine: rabbitmq
665 members:
666 - host: 10.0.16.1
667 - host: 10.0.16.2
668 - host: 10.0.16.3
669 user: openstack
670 password: pwd
671 virtual_host: '/openstack'
672 ....
673
Petr Michalec61f7ab22016-11-29 16:29:09 +0100674Enable auditing filter, ie: CADF
675
676.. code-block:: yaml
677
678 neutron:
679 server:
680 audit:
681 enabled: true
682 ....
683 filter_factory: 'keystonemiddleware.audit:filter_factory'
684 map_file: '/etc/pycadf/neutron_api_audit_map.conf'
685 ....
686 compute:
687 audit:
688 enabled: true
689 ....
690 filter_factory: 'keystonemiddleware.audit:filter_factory'
691 map_file: '/etc/pycadf/neutron_api_audit_map.conf'
692 ....
Jiri Konecny93b19992016-04-12 11:15:39 +0200693
694
Jiri Broulik5368cc52017-02-08 18:53:59 +0100695Client role
696-----------
697
698Neutron networks
699
700.. code-block:: yaml
701
702 neutron:
703 client:
704 enabled: true
705 server:
706 identity:
Richard Felklaac256a2017-03-23 15:43:49 +0100707 endpoint_type: internalURL
Jiri Broulik5368cc52017-02-08 18:53:59 +0100708 network:
709 inet1:
710 tenant: demo
711 shared: False
712 admin_state_up: True
713 router_external: True
714 provider_physical_network: inet
715 provider_network_type: flat
716 provider_segmentation_id: 2
717 subnet:
718 inet1-subnet1:
719 cidr: 192.168.90.0/24
720 enable_dhcp: False
721 inet2:
722 tenant: admin
723 shared: False
724 router_external: True
725 provider_network_type: "vlan"
726 subnet:
727 inet2-subnet1:
728 cidr: 192.168.92.0/24
729 enable_dhcp: False
730 inet2-subnet2:
731 cidr: 192.168.94.0/24
732 enable_dhcp: True
733 identity1:
734 network:
735 ...
736
737
738Neutron routers
739
740.. code-block:: yaml
741
742 neutron:
743 client:
744 enabled: true
745 server:
746 identity:
Richard Felklaac256a2017-03-23 15:43:49 +0100747 endpoint_type: internalURL
Jiri Broulik5368cc52017-02-08 18:53:59 +0100748 router:
749 inet1-router:
750 tenant: demo
751 admin_state_up: True
752 gateway_network: inet
753 interfaces:
754 - inet1-subnet1
755 - inet1-subnet2
756 identity1:
757 router:
758 ...
759
760 TODO: implement adding new interfaces to a router while updating it
761
762
763Neutron security groups
764
765.. code-block:: yaml
766
767 neutron:
768 client:
769 enabled: true
770 server:
771 identity:
Richard Felklaac256a2017-03-23 15:43:49 +0100772 endpoint_type: internalURL
Jiri Broulik5368cc52017-02-08 18:53:59 +0100773 security_group:
774 security_group1:
775 tenant: demo
776 description: security group 1
777 rules:
778 - direction: ingress
779 ethertype: IPv4
780 protocol: TCP
781 port_range_min: 1
782 port_range_max: 65535
783 remote_ip_prefix: 0.0.0.0/0
784 - direction: ingress
785 ethertype: IPv4
786 protocol: UDP
787 port_range_min: 1
788 port_range_max: 65535
789 remote_ip_prefix: 0.0.0.0/0
790 - direction: ingress
791 protocol: ICMP
792 remote_ip_prefix: 0.0.0.0/0
793 identity1:
794 security_group:
795 ...
796
797 TODO: implement updating existing security rules (now it adds new rule if trying to update existing one)
798
Jiri Broulikde2e2902017-02-13 15:03:47 +0100799
800Floating IP addresses
801
802.. code-block:: yaml
803
804 neutron:
805 client:
806 enabled: true
807 server:
808 identity:
Richard Felklaac256a2017-03-23 15:43:49 +0100809 endpoint_type: internalURL
Jiri Broulikde2e2902017-02-13 15:03:47 +0100810 floating_ip:
811 prx01-instance:
812 server: prx01.mk22-lab-basic.local
813 subnet: private-subnet1
814 network: public-net1
815 tenant: demo
816 gtw01-instance:
817 ...
818
819.. note:: The network must have flag router:external set to True.
820 Instance port in the stated subnet will be associated with the dynamically generated floating IP.
821
822
Filip Pytlouncd028e42015-10-06 16:28:32 +0200823Usage
824=====
825
826Fix RDO Neutron installation
827
828.. code-block:: yaml
829
830 neutron-db-manage --config-file /usr/share/neutron/neutron-dist.conf --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini stamp havana
831
Jakub Pavlik9ecf0262016-05-20 11:20:58 +0200832Documentation and Bugs
833============================
Filip Pytlouncd028e42015-10-06 16:28:32 +0200834
Jakub Pavlik9ecf0262016-05-20 11:20:58 +0200835To learn how to deploy OpenStack Salt, consult the documentation available
836online at:
837
838 https://wiki.openstack.org/wiki/OpenStackSalt
839
840In the unfortunate event that bugs are discovered, they should be reported to
841the appropriate bug tracker. If you obtained the software from a 3rd party
842operating system vendor, it is often wise to use their own bug tracker for
843reporting problems. In all other cases use the master OpenStack bug tracker,
844available at:
845
846 http://bugs.launchpad.net/openstack-salt
847
848Developers wishing to work on the OpenStack Salt project should always base
849their work on the latest formulas code, available from the master GIT
850repository at:
851
852 https://git.openstack.org/cgit/openstack/salt-formula-neutron
853
854Developers should also join the discussion on the IRC list, at:
855
856 https://wiki.openstack.org/wiki/Meetings/openstack-salt
Filip Pytloun20c0a442017-02-02 13:05:13 +0100857
858Documentation and Bugs
859======================
860
861To learn how to install and update salt-formulas, consult the documentation
862available online at:
863
864 http://salt-formulas.readthedocs.io/
865
866In the unfortunate event that bugs are discovered, they should be reported to
867the appropriate issue tracker. Use Github issue tracker for specific salt
868formula:
869
870 https://github.com/salt-formulas/salt-formula-neutron/issues
871
872For feature requests, bug reports or blueprints affecting entire ecosystem,
873use Launchpad salt-formulas project:
874
875 https://launchpad.net/salt-formulas
876
877You can also join salt-formulas-users team and subscribe to mailing list:
878
879 https://launchpad.net/~salt-formulas-users
880
881Developers wishing to work on the salt-formulas projects should always base
882their work on master branch and submit pull request against specific formula.
883
884 https://github.com/salt-formulas/salt-formula-neutron
885
886Any questions or feedback is always welcome so feel free to join our IRC
887channel:
888
889 #salt-formulas @ irc.freenode.net