From 0e7dd43ce18eb638b9b05e6ea092d87da2e8b94c Mon Sep 17 00:00:00 2001 From: Praneet Bachheti Date: Thu, 27 Mar 2014 12:45:39 -0700 Subject: [PATCH] Specification for the Opencontrail neutron plugin Change-Id: I5f6707d950d6b45e593fcfd3a05b2e48010423d2 --- specs/juno/opencontrail-plugin.rst | 217 +++++++++++++++++++++++++++++ 1 file changed, 217 insertions(+) create mode 100644 specs/juno/opencontrail-plugin.rst diff --git a/specs/juno/opencontrail-plugin.rst b/specs/juno/opencontrail-plugin.rst new file mode 100644 index 000000000..70d2dab3e --- /dev/null +++ b/specs/juno/opencontrail-plugin.rst @@ -0,0 +1,217 @@ +========================================== +Neutron Plugin for Opencontrail +========================================== + +https://blueprints.launchpad.net/neutron/+spec/juniper-plugin-with-extensions + +This blueprint is for the Opencontrail-neutron-plugin to add support in Neutron +for Opencontrail based network virtualization. The list of core resources and +extensions supported are: + +* Network +* Subnet +* Port +* Security Group +* L3 Extensions + +We will also support Extraroute extension + + +Problem description +=================== + +Opencontrail is open source network virtualization solution. It uses standards +based BGP L3VPN closed user groups to implement virtual networks. +The link http://opencontrail.org/opencontrail-architecture-documentation/ +explains the architecture of Opencontrail plugin + +The Neutron plugin code would interact with Opencontrail Rest-API to provide +the network virtualization functionality. + +Proposed change +=============== + +The Opencontrail Neutron plugin will implement the Neutron core and extension +APIs. It will receive the API request and pass it to the Opencontrail controller +for processing. +There are no changes to the Neutron common code. New files are addded to +implement the opencontrail-plugin. + +Alternatives +------------ +Current support is for traditional Neutron plugin interface. +We will consider using ML2 interface in future. + +Data model impact +----------------- + +None. + +REST API impact +--------------- + +None. +There are no new API added to neutron. For above listed API all features +will be supported by the plugin. + +Security impact +--------------- +The communication channel to the backend is not secure. +We will support secure channel in the future. + +Notifications impact +-------------------- +None. + +Other end user impact +--------------------- + +Users will now be able to configure Opencontrail as one of the available plugin +from upstream. + +Performance Impact +------------------ + +None. + +Other deployer impact +--------------------- + +Users will now be able to configure Opencontrail as one of the available plugin +from upstream. Following link explains setup of Opencontrail using devstack. +http://pedrormarques.wordpress.com/2013/11/14/using-devstack-plus-opencontrail/ + +Developer impact +---------------- + +None. +Other Developers wont be effected by this change. Tempest thirdparty environment +will be provided. + +Implementation +============== + +Opencontrail plugin does not use the Neutron persistence layer and so avoid +the problems when the database goes out of sync. Opencontrail plugin uses +additional objects and attributes for objects that are defined by Neutron +APIs, that data is stored in the Opencontrail controller which does the +persistency. By being stateless, the Neutron service doesn't have to deal +with its persistency layer getting out of sync with the implementation's +persistence layer. + +A New Plugin 'opencontrail' has been created. A new file +'contrail_plugin.py' has been added to implement the core extension +RESTApi. + +The configuration file contrailplugin.ini will be added to configure the +Opencontrail plugin. The file will contain the following parameters. + +1 api_server_ip + The Opencontrail controller IP address +2 api_server_port + The Opencontrail controller IP port +3 multi-tenancy + Multi-tenancy support +4 max_retries + The maximum number of tries to connect to the Opencontrail controller +5 retry_interval + Retry interval to connect to the Opencontrail controller + +Example: +[API_SERVER] +api_server_ip = 10.10.10.10 +api_server_port = 8082 +multi_tenancy = False + +The Class 'NeutronPluginContrailCoreV2' is added to implement the core RESTApi. +It will implement the following extensions and their RESTApis + +Network + - create_network + - update_network + - delete_network + - get_network + - get_networks + - get_networks_count + +Subnet + - create_subnet + - update_subnet + - delete_subnet + - get_subnet + - get_subnets + - get_subnets_count + +Port + - create_port + - update_port + - delete_port + - get_port + - get_ports + - get_ports_count + +Router + - create_router + - update_router + - delete_router + - get_router + - get_routers + - get_routers_count + +Floatingip + - create_floatingip + - update_floatingip + - delete_floatingip + - get_floatingip + - get_floatingips + - get_floatingips_count + +SecurityGroup + - create_security_group + - update_security_group + - delete_security_group + - get_security_group + - get_security_groups + - get_security_groups_count + +Assignee(s) +----------- + +Primary assignee: + praneetb + +Other contributors: + hajay + +Work Items +---------- + +1. Opencontrail plugin implementation +2. Opencontrail mocks for unit-tests + +Dependencies +============ + +None. + +Testing +======= + +Existing and new (added in Juno) Neutron unit tests will be used. +Existing and new tempest testing for neutron will be used. +Tempest CI environment will be provided. + +Documentation Impact +==================== + +Once the opencontrail neutron plugin is accepted, neutron documentation can +change to say opencontrail plugin as one of the supported plugin. + +The link below explains setup of Opencontrail using devstack. +http://pedrormarques.wordpress.com/2013/11/14/using-devstack-plus-opencontrail/ + +References +========== + +http://www.opencontrail.org +https://github.com/Juniper/contrail-controller