Juju Charm - Neutron Gateway
Go to file
James Page d8943bba30 Add support for application version
Juju 2.0 provides support for display of the version of
an application deployed by a charm in juju status.

Insert the os_application_version_set function into the
existing assess_status function - this gets called after
all hook executions, and periodically after that, so any
changes in package versions due to normal system updates
will also be reflected in the status output.

This review also includes a resync of charm-helpers to
pickup hookenv and contrib.openstack support for this
feature.

Change-Id: I3d763c10b9e597ea5d3deca04960b8e032b08521
2016-09-20 12:29:10 +01:00
actions Add pause/resume actions and sync charm-helpers 2016-04-10 06:54:31 +00:00
files Avoid restart races for nova-api-metadata 2016-07-12 13:02:39 +01:00
hooks Add support for application version 2016-09-20 12:29:10 +01:00
lib Update tox.ini files from release-tools gold copy 2016-09-09 19:43:18 +00:00
templates Use rpc_notifier driver for notifications 2016-09-12 14:37:56 +01:00
tests Add support for application version 2016-09-20 12:29:10 +01:00
unit_tests Add support for application version 2016-09-20 12:29:10 +01:00
.coveragerc Rename charm to neutron-gateway including code 2015-05-07 10:27:07 +01:00
.gitignore Restart nova-api-metadata on restart_nonce changes 2016-04-14 10:04:13 +01:00
.gitreview Add gitreview prior to migration to openstack 2016-02-24 21:53:33 +00:00
.project Rename project 2015-09-15 09:30:01 +01:00
.pydevproject Rename project 2015-09-15 09:30:01 +01:00
.testr.conf Add tox support 2016-02-23 17:55:02 +00:00
actions.yaml Add pause/resume actions and sync charm-helpers 2016-04-10 06:54:31 +00:00
charm-helpers-hooks.yaml Add support for application version 2016-09-20 12:29:10 +01:00
charm-helpers-tests.yaml [trivial] Point charm-helpers-*.yaml at dev branch 2015-05-03 00:35:06 +02:00
config.yaml Enable neutron gw charm to control # of workers 2016-08-12 10:56:42 -07:00
copyright Add missing copyright file 2012-12-07 08:39:53 +00:00
hardening.yaml Add hardening support 2016-03-31 15:01:54 +01:00
icon.svg Update icon.svg 2013-10-23 13:14:57 -07:00
Makefile Use bundletester for amulet test execution 2016-07-18 17:58:02 +01:00
metadata.yaml Add charm series data to metadata.yaml 2016-09-14 09:31:52 +01:00
README.md Add defaults for openstack-origin-git config option 2016-06-16 14:29:26 +00:00
requirements.txt Fix pbr requirement 2016-04-13 10:24:21 +00:00
revision added postgresql 2014-03-28 12:02:09 +01:00
setup.cfg turn down logging a bit 2013-10-19 20:54:13 +01:00
test-requirements.txt Use bundletester for amulet test execution 2016-07-18 17:58:02 +01:00
tox.ini Update tox.ini files from release-tools gold copy 2016-09-09 19:43:18 +00:00

Overview

Neutron provides flexible software defined networking (SDN) for OpenStack.

This charm is designed to be used in conjunction with the rest of the OpenStack related charms in the charm store to virtualize the network that Nova Compute instances plug into.

It's designed as a replacement for nova-network; however it does not yet support all of the features of nova-network (such as multihost) so may not be suitable for all.

Neutron supports a rich plugin/extension framework for propriety networking solutions and supports (in core) Nicira NVP, NEC, Cisco and others...

See the upstream Neutron documentation for more details.

Usage

In order to use Neutron with OpenStack, you will need to deploy the nova-compute and nova-cloud-controller charms with the network-manager configuration set to 'Neutron':

nova-cloud-controller:
    network-manager: Neutron

This decision must be made prior to deploying OpenStack with Juju as Neutron is deployed baked into these charms from install onwards:

juju deploy nova-compute
juju deploy --config config.yaml nova-cloud-controller
juju add-relation nova-compute nova-cloud-controller

The Neutron Gateway can then be added to the deploying:

juju deploy neutron-gateway
juju add-relation neutron-gateway mysql
juju add-relation neutron-gateway rabbitmq-server
juju add-relation neutron-gateway nova-cloud-controller

The gateway provides two key services; L3 network routing and DHCP services.

These are both required in a fully functional Neutron OpenStack deployment.

See upstream Neutron multi extnet

Configuration Options

Port Configuration

All network types (internal, external) are configured with bridge-mappings and data-port and the flat-network-providers configuration option of the neutron-api charm. Once deployed, you can configure the network specifics using neutron net-create.

If the device name is not consistent between hosts, you can specify the same bridge multiple times with MAC addresses instead of interface names. The charm will loop through the list and configure the first matching interface.

Basic configuration of a single external network, typically used as floating IP addresses combined with a GRE private network:

neutron-gateway:
    bridge-mappings:         physnet1:br-ex
    data-port:               br-ex:eth1
neutron-api:
    flat-network-providers:  physnet1

neutron net-create --provider:network_type flat \
    --provider:physical_network physnet1 --router:external=true \
    external
neutron router-gateway-set provider external

Alternative configuration with two networks, where the internal private network is directly connected to the gateway with public IP addresses but a floating IP address range is also offered.

neutron-gateway:
    bridge-mappings:         physnet1:br-data external:br-ex
    data-port:               br-data:eth1 br-ex:eth2
neutron-api:
    flat-network-providers:  physnet1 external

Alternative configuration with two external networks, one for public instance addresses and one for floating IP addresses. Both networks are on the same physical network connection (but they might be on different VLANs, that is configured later using neutron net-create).

neutron-gateway:
    bridge-mappings:         physnet1:br-data
    data-port:               br-data:eth1
neutron-api:
    flat-network-providers:  physnet1

neutron net-create --provider:network_type vlan \
    --provider:segmentation_id 400 \
    --provider:physical_network physnet1 --shared external
neutron net-create --provider:network_type vlan \
    --provider:segmentation_id 401 \
    --provider:physical_network physnet1 --shared --router:external=true \
    floating
neutron router-gateway-set provider floating

This replaces the previous system of using ext-port, which always created a bridge called br-ex for external networks which was used implicitly by external router interfaces.

Instance MTU

When using Open vSwitch plugin with GRE tunnels default MTU of 1500 can cause packet fragmentation due to GRE overhead. One solution is to increase the MTU on physical hosts and network equipment. When this is not possible or practical the charm's instance-mtu option can be used to reduce instance MTU via DHCP.

juju set neutron-gateway instance-mtu=1400

OpenStack upstream documentation recommends a MTU value of 1400: OpenStack documentation

Note that this option was added in Havana and will be ignored in older releases.