DevStack external plugin

networking-midonet has its devstack plugin. The following local.conf snippet would enable it:

enable_plugin networking-midonet https://opendev.org/openstack/networking-midonet

local.conf examples

ML2 Plugin with MidoNet drivers

You can find an example at devstack/ml2/local.conf.sample in the source tree.

[[local|localrc]]

# This configuration file is intended to be used for CI and local develeopment
# where you may only want networking related services to be running.

# Load the devstack plugin for ml2
Q_PLUGIN=ml2
Q_AGENT=none  # dummy value to avoid pulling functions from openvswitch_agent
Q_ML2_PLUGIN_MECHANISM_DRIVERS=midonet
Q_ML2_PLUGIN_TYPE_DRIVERS=midonet,uplink
Q_ML2_TENANT_NETWORK_TYPE=midonet
ML2_L3_PLUGIN=midonet_l3

enable_plugin networking-midonet https://opendev.org/openstack/networking-midonet

# Set all the passwords
DATABASE_PASSWORD=midonet
RABBIT_PASSWORD=midonet
SERVICE_TOKEN=midonet
SERVICE_PASSWORD=midonet
ADMIN_PASSWORD=midonet

# Enable keystone, nova, glance and neutron
# Also enable tempest since it's useful for CI and local dev
ENABLED_SERVICES=rabbit,mysql,key
ENABLED_SERVICES+=,n-api,n-crt,n-obj,n-cpu,n-cond,n-sch,placement-api
ENABLED_SERVICES+=,g-api,g-reg
ENABLED_SERVICES+=,q-svc,neutron
ENABLED_SERVICES+=,tempest
ENABLED_SERVICES+=,horizon
ENABLED_SERVICES+=,n-novnc,n-cauth

NOVA_VNC_ENABLED=True

# If you want to use Gateway Device Management Service,
# uncomment the following lines.
# Q_SERVICE_PLUGIN_CLASSES+=,midonet_gwdevice

# The following section contains environment variable settings that would
# further minimalize the environment.  For example, in some cases you may just
# want to run the Neutron API with no agents, or you may want to disable
# authentication.

# If you want to also disable auth for Neutron, uncomment this
#
# Q_AUTH_STRATEGY=noauth

# If you don't want the host to be configured with fake uplink uncomment this
#
# MIDONET_CREATE_FAKE_UPLINK=False

# If you don't want devstack to create default networks, uncomment this
#
# NEUTRON_CREATE_INITIAL_NETWORKS=False

# If you want to disable Neutron agents so that only the API runs, uncomment
# these
#
# disable_service q-dhcp
# disable_service q-meta

# If you want to use the embedded metadata proxy, uncomment these:
#
# MIDONET_USE_METADATA=True
# Q_METADATA_ENABLED=True
# disable_service q-dhcp
# disable_service q-meta

# If you want to use L2 Gateway Management Service,
# uncomment the following lines.
# enable_plugin networking-l2gw https://opendev.org/x/networking-l2gw
# enable_service l2gw-plugin
# L2GW_PLUGIN="midonet_l2gw"
# NETWORKING_L2GW_SERVICE_DRIVER="L2GW:Midonet:midonet.neutron.services.l2gateway.service_drivers.l2gw_midonet.MidonetL2gwDriver:default"

# If you want to use VPNaaS, uncomment the following lines and manually install
# ipsec package "libreswan".
#
# enable_plugin neutron-vpnaas https://opendev.org/openstack/neutron-vpnaas
# enable_service neutron-vpnaas
# NEUTRON_VPNAAS_SERVICE_PROVIDER="VPN:Midonet:midonet.neutron.services.vpn.service_drivers.midonet_ipsec.MidonetIPsecVPNDriver:default"

# If you want to use BGP dynamic routing service,
# uncomment the following lines.
# Q_SERVICE_PLUGIN_CLASSES+=,midonet_bgp

# If you want to use Logging Resource Service, uncomment the following lines.
# Q_SERVICE_PLUGIN_CLASSES+=,midonet_logging_resource

# If you want to use Tap as a Service, uncomment the following lines.
# enable_plugin tap-as-a-service https://opendev.org/x/tap-as-a-service
# enable_service taas
# TAAS_SERVICE_DRIVER="TAAS:Midonet:midonet.neutron.services.taas.service_drivers.taas_midonet.MidonetTaasDriver:default"

MidoNet backend communication

MidoNet exposes two ways to communicate to its service:

  1. REST (synchronous)

  2. Tasks DB (asynchronous - experimental)

By default, the plugin is configured to use the REST API service. The REST API client is specified as:

MIDONET_CLIENT=midonet.neutron.client.api.MidonetApiClient

If you want to use the experimental Tasks based API, set the following:

MIDONET_CLIENT=midonet.neutron.client.cluster.MidonetClusterClient

VPNaaS

Starting v5.1, MidoNet implements Neutron VPNaaS extension API. To configure MidoNet as the VPNaaS driver when running devstack, make sure the following is defined in local.conf:

enable_plugin neutron-vpnaas https://opendev.org/openstack/neutron-vpnaas
enable_service neutron-vpnaas
NEUTRON_VPNAAS_SERVICE_PROVIDER="VPN:Midonet:midonet.neutron.services.vpn.service_drivers.midonet_ipsec.MidonetIPsecVPNDriver:default"

NOTE: Currently, this devstack plugin doesn’t install ipsec package “libreswan”. Please install it manually.

Gateway Device Management Service

Starting v5.1, MidoNet implements Neutron Gateway Device Management Service extension API. To configure MidoNet including Gateway Device Management Service when running devstack, make sure the following is defined in local.conf:

Q_SERVICE_PLUGIN_CLASSES=midonet_gwdevice

L2 Gateway Management Service

Starting v5.1, MidoNet implements Neutron L2 Gateway Management Service extension API. To configure MidoNet including L2 Gateway Management Service when running devstack, make sure the following is defined in local.conf:

enable_plugin networking-l2gw https://opendev.org/x/networking-l2gw
enable_service l2gw-plugin
Q_PLUGIN_EXTRA_CONF_PATH=/etc/neutron
Q_PLUGIN_EXTRA_CONF_FILES=(l2gw_plugin.ini)
L2GW_PLUGIN="midonet_l2gw"
NETWORKING_L2GW_SERVICE_DRIVER="L2GW:Midonet:midonet.neutron.services.l2gateway.service_drivers.l2gw_midonet.MidonetL2gwDriver:default"

BGP dynamic routing service

Starting v5.2, MidoNet implements Neutron BGP dynamic routing service extension API. The implementation differs slightly from upstream. In MidoNet, router treated as bgp-speaker must be specified.

To configure MidoNet including BGP dynamic routing service when running devstack, make sure the following is defined in local.conf:

enable_plugin neutron-dynamic-routing https://opendev.org/openstack/neutron-dynamic-routing
DR_MODE=dr_plugin
BGP_PLUGIN=midonet_bgp
enable_service q-dr

QoS

The following local.conf snippet would enable QoS extension with MidoNet driver:

enable_plugin neutron https://opendev.org/openstack/neutron
enable_service q-qos

Tap as a service

The following local.conf snippet would enable Tap-as-a-service support:

enable_plugin tap-as-a-service https://opendev.org/openstack/tap-as-a-service
enable_service taas
TAAS_SERVICE_DRIVER="TAAS:Midonet:midonet.neutron.services.taas.service_drivers.taas_midonet.MidonetTaasDriver:default"