Merge "Ml2 mechanism driver for Huawei SDN controller."
This commit is contained in:
268
specs/juno/huawei-ml2-mechanism-driver.rst
Normal file
268
specs/juno/huawei-ml2-mechanism-driver.rst
Normal file
@@ -0,0 +1,268 @@
|
||||
..
|
||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||
License.
|
||||
|
||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||
|
||||
==========================================
|
||||
Huawei ML2 mechanism driver
|
||||
==========================================
|
||||
|
||||
https://blueprints.launchpad.net/neutron/+spec/huawei-ml2-mechanism-driver
|
||||
|
||||
* HW-SDN MD : Huawei SDN Mechanism Driver
|
||||
* HW-SDN CR : Huawei SDN Controller
|
||||
|
||||
The purpose of this blueprint is to build an ML2 Mechanism Driver for Huawei
|
||||
software define network (SDN) controller, which proxies RESTful calls
|
||||
(formatted for Huawei SDN controller) from ML2 plugin of Neutron to Huawei
|
||||
SDN controller.
|
||||
|
||||
Huawei SDN controller enables network automation and provision to simplify
|
||||
virtual machine deployments and move on a larger layer 2 network. When a
|
||||
cloud administrator provisions VMs, instances of network flow rules are
|
||||
automatically created and applied to the OpenvSwitch(OVS) which hosted on
|
||||
each compute node. As VMs move across the compute nodes, the network flow
|
||||
rules are automatically applied to each OVS.
|
||||
|
||||
Problem description
|
||||
===================
|
||||
|
||||
Huawei SDN controller requires information of OpenStack Neutron based networks
|
||||
and ports to manage virtual network appliances and OVS flow rules.
|
||||
|
||||
In order to recieve such information from neutron service, a new ML2 mechanism
|
||||
driver is needed to post the _postcommit data to Huawei SDN controller.
|
||||
|
||||
The following sections describe the proposed changes in Neutron, a new ML2
|
||||
mechanism driver, and make it possible to use OpenStack in Huawei SDN
|
||||
topology. The following diagram depicts the OpenStack deployment in Huawei
|
||||
SDN topology.
|
||||
|
||||
Huawei SDN Topology::
|
||||
|
||||
+-----------------------+ +----------------+
|
||||
| | | |
|
||||
| OpenStack | | |
|
||||
| Controller | | |
|
||||
| Node | | |
|
||||
| | | |
|
||||
| +---------------------+ | Huawei SDN |
|
||||
| |Huawei SDN mechanism | REST API | controller |
|
||||
| |driver |--------------| |
|
||||
| | | | |
|
||||
+-+--------+-----+------+ +--+----------+--+
|
||||
| | | |
|
||||
| | | |
|
||||
| +--------------+ | |
|
||||
| | | |
|
||||
+----------+---------+ +---+---------+------+ |
|
||||
| | | | |
|
||||
| OVS | | OVS | |
|
||||
+--------------------+ ---- +--------------------+ |
|
||||
| OpenStack compute | | OpenStack compute | |
|
||||
| node 1 | | node n | |
|
||||
+----------+---------+ +--------------------+ |
|
||||
| |
|
||||
| |
|
||||
+-----------------------------------------+
|
||||
|
||||
As shown in the diagram above, each OpenStack compute node is connected
|
||||
to Huawei SDN controller, which is responsible for provisioning, monitoring
|
||||
and troubleshooting of cloud network infrastructures. The Neutron API requests
|
||||
will be proxied to SDN controller, then network topology information can be
|
||||
built. When a VM instance starts to communicate with another, the first packet
|
||||
will be pushed to Huawei SDN controller by OVS, then the flow rules will be
|
||||
calculated and applied to related compute nodes by SDN controller. Finally,
|
||||
OVS follows the rules to forward packets to the destination instance.
|
||||
|
||||
Proposed change
|
||||
===============
|
||||
|
||||
The requirements for ML2 mechanism driver to support huawei SDN controller
|
||||
are as follow:
|
||||
|
||||
1. SDN controller exchanges information with OpenStack controller node by
|
||||
using REST API. To support this, we need a specific client.
|
||||
|
||||
2. OpenStack controller (Neutron configured with ML2 plugin) must be
|
||||
configured with SDN controller access credentials.
|
||||
|
||||
3. The network, subnet and port information should be sent to
|
||||
SDN controller when network or port is created, updated, or deleted.
|
||||
|
||||
4. SDN controller address should be set on OVS. SDN controller will detect
|
||||
port change and calculate flow tables based on network information sent from
|
||||
OpenStack controller. These flow tables will be applied on OVS on related
|
||||
compute nodes.
|
||||
|
||||
Huawei Mechanism driver handles the following postcommit operations.
|
||||
|
||||
Network create/update/delete
|
||||
Subnet create/update/delete
|
||||
Port create/delete
|
||||
|
||||
Supported network types include vlan and vxlan.
|
||||
|
||||
Huawei SDN mechanism driver handles VM port binding within the mechanism
|
||||
driver.
|
||||
|
||||
'bind_port' function verifies the supported network types (vlan, vxlan)
|
||||
and calls context.set_binding with binding details.
|
||||
|
||||
Huawei SDN Controller manages the flows required on OVS, so we don't have
|
||||
an extra agent.
|
||||
|
||||
Sequence flow of events for create_network is as follow:
|
||||
|
||||
::
|
||||
|
||||
create_network
|
||||
{
|
||||
neutron -> ML2_plugin
|
||||
ML2_plugin -> HW-SDN-MD
|
||||
HW-SDN-MD -> HW-SDN-CR
|
||||
HW-SDN-MD <-- HW-SDN-CR
|
||||
ML2_plugin <-- HW-SDN-MD
|
||||
neutron <-- ML2_plugin
|
||||
}
|
||||
|
||||
Port binding task is handled within the mechanism driver, So OVS mechanism
|
||||
driver is not required when this mechanism driver is enabled.
|
||||
|
||||
Alternatives
|
||||
------------
|
||||
|
||||
None
|
||||
|
||||
Data model impact
|
||||
-----------------
|
||||
|
||||
None
|
||||
|
||||
REST API impact
|
||||
---------------
|
||||
|
||||
None
|
||||
|
||||
Security impact
|
||||
---------------
|
||||
|
||||
Recently a feature of enabling OVS secure mode was added to the OVS agent.
|
||||
Huawei SDN controller doesn't rely on the OVS agent but secure mode will
|
||||
be enabled when deploying Huawei SDN controller and OVS.
|
||||
|
||||
Notifications impact
|
||||
--------------------
|
||||
|
||||
None
|
||||
|
||||
Other end user impact
|
||||
---------------------
|
||||
|
||||
This change doesn't take immediate effect.
|
||||
|
||||
1. Configuration parameters regarding SDN (such as ip address,...) should be
|
||||
added to the mechanism driver configuration file.
|
||||
|
||||
Update /etc/neutron/plugins/ml2/ml2_conf_huawei.ini, as follow:
|
||||
|
||||
::
|
||||
|
||||
[ml2_Huawei]
|
||||
nos_host = 128.100.1.7
|
||||
nos_port = 8080
|
||||
|
||||
2. An SDN controller account should be created for OpenStack to access, also
|
||||
this account should be added to the mechanism driver configuration file.
|
||||
|
||||
Update /etc/neutron/plugins/ml2/ml2_conf_huawei.ini, as follow:
|
||||
|
||||
::
|
||||
|
||||
[ml2_Huawei]
|
||||
nos_username = admin
|
||||
nos_password = my_password
|
||||
|
||||
Performance Impact
|
||||
------------------
|
||||
|
||||
There are create/update/delete_<resource>_postcommit functions to proxy
|
||||
those requests to SDN controller in the ML2 mechanism driver. All those
|
||||
processes require database access in SDN controller, which may impact the
|
||||
Neutron API performance a little.
|
||||
|
||||
Other deployer impact
|
||||
---------------------
|
||||
|
||||
This change doesn't take immediate effect.
|
||||
|
||||
1. Add new configuration options for SDN controller, which are ip address
|
||||
and credentials.
|
||||
|
||||
Update /etc/neutron/plugins/ml2/ml2_conf_huawei.ini, as follow:
|
||||
|
||||
::
|
||||
|
||||
[ml2_Huawei]
|
||||
nos_host = 128.100.1.7
|
||||
nos_port = 8080
|
||||
nos_username = admin
|
||||
nos_password = my_password
|
||||
|
||||
2. Configure parameters of section ml2_type_vxlan in ml2_conf.ini, setting
|
||||
vni_ranges for vxlan network segment ids and vxlan_group for multicast.
|
||||
|
||||
Update /etc/neutron/plugins/ml2/ml2_conf.ini, as follow:
|
||||
|
||||
::
|
||||
|
||||
[ml2_type_vxlan]
|
||||
vni_ranges = 1001:2000
|
||||
vxlan_group = 239.1.1.1
|
||||
|
||||
Developer impact
|
||||
----------------
|
||||
|
||||
None
|
||||
|
||||
Implementation
|
||||
==============
|
||||
|
||||
Assignee(s)
|
||||
-----------
|
||||
|
||||
Primary assignee:
|
||||
yangxurong
|
||||
|
||||
Work Items
|
||||
----------
|
||||
|
||||
1. Change the setup.cfg to introduce 'huawei' as the mechanism driver.
|
||||
2. An REST client for SDN controller should be developed first.
|
||||
3. Mechanism driver should implement create/update/delete_resource_postcommit.
|
||||
4. Test connection between two new instances under different subnets.
|
||||
|
||||
Dependencies
|
||||
============
|
||||
|
||||
None
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
1. The whole setup can be deployed using OVS and SDN controller can be deployed
|
||||
in VM.
|
||||
2. For each module added to the mechanism driver, unit test is provided.
|
||||
3. Functional testing with tempest will be provided. The third-party Huawei CI
|
||||
report will be provided to validate this ML2 mechanism driver.
|
||||
|
||||
Documentation Impact
|
||||
====================
|
||||
|
||||
Huawei SDN mechanism driver description and configuration details will be added.
|
||||
|
||||
References
|
||||
==========
|
||||
|
||||
https://review.openstack.org/#/c/68148/
|
Reference in New Issue
Block a user