blob: 9b98a4db51e269ca5e20f0cbd0723b5fdf6363e3 [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
281 metadata:
282 host: 127.0.0.1
283 password: pass
284 backend:
285 engine: ml2
286 tenant_network_types: "flat,vxlan"
287 mechanism:
288 ovs:
289 driver: openvswitch
290
291Compute Node
292-------------
293
294.. code-block:: yaml
295
296 neutron:
297 compute:
298 enabled: True
299 version: mitaka
300 message_queue:
301 engine: rabbitmq
302 host: 127.0.0.1
303 port: 5672
304 user: openstack
305 password: pwd
306 virtual_host: '/openstack'
307 local_ip: 192.168.20.20 # br-mesh ip address
308 external_access: False
309 dvr: False
310 backend:
311 engine: ml2
312 tenant_network_types: "flat,vxlan"
313 mechanism:
314 ovs:
315 driver: openvswitch
316
317Neutron VXLAN tenant networks with Network Nodes (with DVR for
318East-West and North-South, DVR everywhere, Network node for SNAT)
319==============================================================
320========================================================
321
322This section describes a network solution that utilises VxLAN
323overlay networks with DVR with North-South and East-West. Network
324Node is used only for SNAT.
325
326Neutron Server only
327-------------------
328
329.. code-block:: yaml
330
331 neutron:
332 server:
333 version: mitaka
334 plugin: ml2
335 bind:
336 address: 172.20.0.1
337 port: 9696
338 database:
339 engine: mysql
340 host: 127.0.0.1
341 port: 3306
342 name: neutron
343 user: neutron
344 password: pwd
345 identity:
346 engine: keystone
347 host: 127.0.0.1
348 port: 35357
349 user: neutron
350 password: pwd
351 tenant: service
Dennis Dmitriev37114722017-03-06 16:52:26 +0200352 endpoint_type: internal
Jiri Broulik74f61112016-11-21 20:23:47 +0100353 message_queue:
354 engine: rabbitmq
355 host: 127.0.0.1
356 port: 5672
357 user: openstack
358 password: pwd
359 virtual_host: '/openstack'
360 global_physnet_mtu: 9000
361 l3_ha: False
362 dvr: True
363 backend:
364 engine: ml2
365 tenant_network_types= "flat,vxlan"
366 external_mtu: 9000
367 mechanism:
368 ovs:
369 driver: openvswitch
370
371Network Node only
372-----------------
373
374.. code-block:: yaml
375
376 neutron:
377 gateway:
378 enabled: True
379 version: mitaka
380 message_queue:
381 engine: rabbitmq
382 host: 127.0.0.1
383 port: 5672
384 user: openstack
385 password: pwd
386 virtual_host: '/openstack'
387 local_ip: 192.168.20.20 # br-mesh ip address
388 dvr: True
389 agent_mode: dvr_snat
390 metadata:
391 host: 127.0.0.1
392 password: pass
393 backend:
394 engine: ml2
395 tenant_network_types: "flat,vxlan"
396 mechanism:
397 ovs:
398 driver: openvswitch
399
400Compute Node
401-------------
402
403.. code-block:: yaml
404
405 neutron:
406 compute:
407 enabled: True
408 version: mitaka
409 message_queue:
410 engine: rabbitmq
411 host: 127.0.0.1
412 port: 5672
413 user: openstack
414 password: pwd
415 virtual_host: '/openstack'
416 local_ip: 192.168.20.20 # br-mesh ip address
417 dvr: True
418 external_access: True
419 agent_mode: dvr
420 metadata:
421 host: 127.0.0.1
422 password: pass
423 backend:
424 engine: ml2
425 tenant_network_types: "flat,vxlan"
426 mechanism:
427 ovs:
428 driver: openvswitch
429
430Sample Linux network configuration for DVR
431--------------------------------------------
432
433.. code-block:: yaml
434
435 linux:
436 network:
437 bridge: openvswitch
438 interface:
439 eth1:
440 enabled: true
441 type: eth
442 mtu: 9000
443 proto: manual
444 eth2:
445 enabled: true
446 type: eth
447 mtu: 9000
448 proto: manual
449 eth3:
450 enabled: true
451 type: eth
452 mtu: 9000
453 proto: manual
454 br-int:
455 enabled: true
456 mtu: 9000
457 type: ovs_bridge
458 br-floating:
459 enabled: true
460 mtu: 9000
461 type: ovs_bridge
462 float-to-ex:
463 enabled: true
464 type: ovs_port
465 mtu: 65000
466 bridge: br-floating
467 br-mgmt:
468 enabled: true
469 type: bridge
470 mtu: 9000
471 address: ${_param:single_address}
472 netmask: 255.255.255.0
473 use_interfaces:
474 - eth1
475 br-mesh:
476 enabled: true
477 type: bridge
478 mtu: 9000
479 address: ${_param:tenant_address}
480 netmask: 255.255.255.0
481 use_interfaces:
482 - eth2
483 br-ex:
484 enabled: true
485 type: bridge
486 mtu: 9000
487 address: ${_param:external_address}
488 netmask: 255.255.255.0
489 use_interfaces:
490 - eth3
491 use_ovs_ports:
492 - float-to-ex
493
494Neutron VLAN tenant networks with Network Nodes
495===============================================
496
497VLAN tenant provider
498
499Neutron Server only
500-------------------
501
502.. code-block:: yaml
503
504 neutron:
505 server:
506 version: mitaka
507 plugin: ml2
508 ...
509 global_physnet_mtu: 9000
510 l3_ha: False
511 dvr: True
512 backend:
513 engine: ml2
514 tenant_network_types: "flat,vlan" # Can be mixed flat,vlan,vxlan
515 tenant_vlan_range: "1000:2000"
516 external_vlan_range: "100:200" # Does not have to be defined.
517 external_mtu: 9000
518 mechanism:
519 ovs:
520 driver: openvswitch
521
522Compute node
523-------------------
524
525.. code-block:: yaml
526
527 neutron:
528 compute:
529 version: mitaka
530 plugin: ml2
531 ...
532 dvr: True
533 agent_mode: dvr
534 external_access: False
535 backend:
536 engine: ml2
537 tenant_network_types: "flat,vlan" # Can be mixed flat,vlan,vxlan
538 mechanism:
539 ovs:
540 driver: openvswitch
541
Jakub Pavlik8f83ccc2017-02-27 11:15:39 +0100542Neutron OVS DPDK
543==================
544
545Enable datapath netdev for neutron openvswitch agent
546
547.. code-block:: yaml
548
549 neutron:
550 server:
551 version: mitaka
552 ...
553 dpdk: True
554 ...
555
556 neutron:
557 compute:
558 version: mitaka
559 plugin: ml2
560 dpdk: True
561 backend:
562 engine: ml2
563 ...
564 mechanism:
565 ovs:
566 driver: openvswitch
567
Jakub Pavlik70555cb2017-02-26 18:48:02 +0100568Neutron OVS SR-IOV
569==================
570
571.. code-block:: yaml
572
573 neutron:
574 server:
575 version: mitaka
576 plugin: ml2
577 backend:
578 engine: ml2
579 ...
580 mechanism:
581 ovs:
582 driver: openvswitch
583 sriov:
584 driver: sriovnicswitch
585
586 neutron:
587 compute:
588 version: mitaka
589 plugin: ml2
590 ...
591 backend:
592 engine: ml2
593 tenant_network_types: "flat,vlan" # Can be mixed flat,vlan,vxlan
594 sriov:
595 nic_one:
596 devname: eth1
597 physical_network: physnet3
598 mechanism:
599 ovs:
600 driver: openvswitch
601
Jiri Broulik74f61112016-11-21 20:23:47 +0100602Neutron Server with OpenContrail
603==================================
604
605.. code-block:: yaml
606
607 neutron:
608 server:
609 plugin: contrail
marcoa4428a32016-06-10 11:50:16 +0200610 backend:
611 engine: contrail
612 host: contrail_discovery_host
613 port: 8082
614 user: admin
615 password: password
616 tenant: admin
617 token: token
618
619Neutron Server with Midonet
Jiri Broulik74f61112016-11-21 20:23:47 +0100620===========================
marcoa4428a32016-06-10 11:50:16 +0200621
622.. code-block:: yaml
623
624 neutron:
625 server:
626 backend:
627 engine: midonet
628 host: midonet_api_host
629 port: 8181
630 user: admin
631 password: password
632
Jiri Broulik74f61112016-11-21 20:23:47 +0100633Other
634=====
Filip Pytlouncd028e42015-10-06 16:28:32 +0200635
Jakub Pavlik6dd5c0a2016-03-09 14:18:15 +0100636Neutron Keystone region
637
638.. code-block:: yaml
639
640 neutron:
641 server:
642 enabled: true
643 version: kilo
644 ...
645 identity:
646 region: RegionTwo
647 ...
648 compute:
649 region: RegionTwo
650 ...
651
Jiri Konecny93b19992016-04-12 11:15:39 +0200652
653Client-side RabbitMQ HA setup
654
655.. code-block:: yaml
656
657 neutron:
658 server:
659 ....
660 message_queue:
661 engine: rabbitmq
662 members:
663 - host: 10.0.16.1
664 - host: 10.0.16.2
665 - host: 10.0.16.3
666 user: openstack
667 password: pwd
668 virtual_host: '/openstack'
669 ....
670
Petr Michalec61f7ab22016-11-29 16:29:09 +0100671Enable auditing filter, ie: CADF
672
673.. code-block:: yaml
674
675 neutron:
676 server:
677 audit:
678 enabled: true
679 ....
680 filter_factory: 'keystonemiddleware.audit:filter_factory'
681 map_file: '/etc/pycadf/neutron_api_audit_map.conf'
682 ....
683 compute:
684 audit:
685 enabled: true
686 ....
687 filter_factory: 'keystonemiddleware.audit:filter_factory'
688 map_file: '/etc/pycadf/neutron_api_audit_map.conf'
689 ....
Jiri Konecny93b19992016-04-12 11:15:39 +0200690
691
Jiri Broulik5368cc52017-02-08 18:53:59 +0100692Client role
693-----------
694
695Neutron networks
696
697.. code-block:: yaml
698
699 neutron:
700 client:
701 enabled: true
702 server:
703 identity:
Richard Felklaac256a2017-03-23 15:43:49 +0100704 endpoint_type: internalURL
Jiri Broulik5368cc52017-02-08 18:53:59 +0100705 network:
706 inet1:
707 tenant: demo
708 shared: False
709 admin_state_up: True
710 router_external: True
711 provider_physical_network: inet
712 provider_network_type: flat
713 provider_segmentation_id: 2
714 subnet:
715 inet1-subnet1:
716 cidr: 192.168.90.0/24
717 enable_dhcp: False
718 inet2:
719 tenant: admin
720 shared: False
721 router_external: True
722 provider_network_type: "vlan"
723 subnet:
724 inet2-subnet1:
725 cidr: 192.168.92.0/24
726 enable_dhcp: False
727 inet2-subnet2:
728 cidr: 192.168.94.0/24
729 enable_dhcp: True
730 identity1:
731 network:
732 ...
733
734
735Neutron routers
736
737.. code-block:: yaml
738
739 neutron:
740 client:
741 enabled: true
742 server:
743 identity:
Richard Felklaac256a2017-03-23 15:43:49 +0100744 endpoint_type: internalURL
Jiri Broulik5368cc52017-02-08 18:53:59 +0100745 router:
746 inet1-router:
747 tenant: demo
748 admin_state_up: True
749 gateway_network: inet
750 interfaces:
751 - inet1-subnet1
752 - inet1-subnet2
753 identity1:
754 router:
755 ...
756
757 TODO: implement adding new interfaces to a router while updating it
758
759
760Neutron security groups
761
762.. code-block:: yaml
763
764 neutron:
765 client:
766 enabled: true
767 server:
768 identity:
Richard Felklaac256a2017-03-23 15:43:49 +0100769 endpoint_type: internalURL
Jiri Broulik5368cc52017-02-08 18:53:59 +0100770 security_group:
771 security_group1:
772 tenant: demo
773 description: security group 1
774 rules:
775 - direction: ingress
776 ethertype: IPv4
777 protocol: TCP
778 port_range_min: 1
779 port_range_max: 65535
780 remote_ip_prefix: 0.0.0.0/0
781 - direction: ingress
782 ethertype: IPv4
783 protocol: UDP
784 port_range_min: 1
785 port_range_max: 65535
786 remote_ip_prefix: 0.0.0.0/0
787 - direction: ingress
788 protocol: ICMP
789 remote_ip_prefix: 0.0.0.0/0
790 identity1:
791 security_group:
792 ...
793
794 TODO: implement updating existing security rules (now it adds new rule if trying to update existing one)
795
Jiri Broulikde2e2902017-02-13 15:03:47 +0100796
797Floating IP addresses
798
799.. code-block:: yaml
800
801 neutron:
802 client:
803 enabled: true
804 server:
805 identity:
Richard Felklaac256a2017-03-23 15:43:49 +0100806 endpoint_type: internalURL
Jiri Broulikde2e2902017-02-13 15:03:47 +0100807 floating_ip:
808 prx01-instance:
809 server: prx01.mk22-lab-basic.local
810 subnet: private-subnet1
811 network: public-net1
812 tenant: demo
813 gtw01-instance:
814 ...
815
816.. note:: The network must have flag router:external set to True.
817 Instance port in the stated subnet will be associated with the dynamically generated floating IP.
818
819
Filip Pytlouncd028e42015-10-06 16:28:32 +0200820Usage
821=====
822
823Fix RDO Neutron installation
824
825.. code-block:: yaml
826
827 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
828
Jakub Pavlik9ecf0262016-05-20 11:20:58 +0200829Documentation and Bugs
830============================
Filip Pytlouncd028e42015-10-06 16:28:32 +0200831
Jakub Pavlik9ecf0262016-05-20 11:20:58 +0200832To learn how to deploy OpenStack Salt, consult the documentation available
833online at:
834
835 https://wiki.openstack.org/wiki/OpenStackSalt
836
837In the unfortunate event that bugs are discovered, they should be reported to
838the appropriate bug tracker. If you obtained the software from a 3rd party
839operating system vendor, it is often wise to use their own bug tracker for
840reporting problems. In all other cases use the master OpenStack bug tracker,
841available at:
842
843 http://bugs.launchpad.net/openstack-salt
844
845Developers wishing to work on the OpenStack Salt project should always base
846their work on the latest formulas code, available from the master GIT
847repository at:
848
849 https://git.openstack.org/cgit/openstack/salt-formula-neutron
850
851Developers should also join the discussion on the IRC list, at:
852
853 https://wiki.openstack.org/wiki/Meetings/openstack-salt
Filip Pytloun20c0a442017-02-02 13:05:13 +0100854
855Documentation and Bugs
856======================
857
858To learn how to install and update salt-formulas, consult the documentation
859available online at:
860
861 http://salt-formulas.readthedocs.io/
862
863In the unfortunate event that bugs are discovered, they should be reported to
864the appropriate issue tracker. Use Github issue tracker for specific salt
865formula:
866
867 https://github.com/salt-formulas/salt-formula-neutron/issues
868
869For feature requests, bug reports or blueprints affecting entire ecosystem,
870use Launchpad salt-formulas project:
871
872 https://launchpad.net/salt-formulas
873
874You can also join salt-formulas-users team and subscribe to mailing list:
875
876 https://launchpad.net/~salt-formulas-users
877
878Developers wishing to work on the salt-formulas projects should always base
879their work on master branch and submit pull request against specific formula.
880
881 https://github.com/salt-formulas/salt-formula-neutron
882
883Any questions or feedback is always welcome so feel free to join our IRC
884channel:
885
886 #salt-formulas @ irc.freenode.net