Neutron REST Proxy Plugin

Overview

This module provides a generic neutron plugin 'NeutronRestProxy' that translates neutron function calls to authenticated REST request to a set of redundant external network controllers.

This allows the network controller specific code to be decoupled from this plugin. This allows for:

  1. independent authentication and redundancy solutions for neutron and the network controller since they are now decoupled.
  2. independent upgrade/development cycles for neutron and network controller since it limits the proxy code upgrade requirement to neutron release cycle (and the network controller specific code upgrade requirement to network controller release cycle).

It also keeps a local persistent store of neutron state that has been setup using that API. This allows us to:

  1. independently update/recover the external network controller(s) as their state can now be updated to be in sync with the state previously programmed via the API.
  2. provide local response for query operations and fail-fast when it can be determined based on previously configured state.

Downstream REST API

Downstream REST API used by this proxy is almost same as the API as defined for neutron itself (more specifically, the JSON subset with some additional parameters, e.g. gateway on network-create request and macaddr on port-attach request). In addition, it also requires support for an additional PUT to do a bulk dump of all persistent data; this is used for state synchronization (if supported).

Usage of this plugin

System using this plugin
  • FloodLight Openflow Controller

Floodlight controller uses this plugin to provide openflow/VLAN based virtual networks. Four components will be needed:

  1. An openstack controller running the nova and neutron services
  2. A Floodlight Controller running the Virtual Network Filter
  3. This plugin, which translates nova/neutron api to REST requests to Virtual Network Filter
  4. And an OpenVswitch (OVS) running on each of the the nova-compute nodes

For details on how to configure FloodLight, please check:

https://docs.projectfloodlight.org/display/floodlightcontroller/OpenStack

Plugin configuration

Please use the following instructions:

READMEv2