Merge "ML2 Mechanism Driver for Cisco DFA"
This commit is contained in:
commit
18f6621f44
247
specs/juno/cisco-dfa-mechanismdriver.rst
Normal file
247
specs/juno/cisco-dfa-mechanismdriver.rst
Normal file
@ -0,0 +1,247 @@
|
|||||||
|
..
|
||||||
|
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||||
|
License.
|
||||||
|
|
||||||
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||||
|
|
||||||
|
==========================================================
|
||||||
|
Cisco Dynamic Fabric Automation (DFA) ML2 Mechanism Driver
|
||||||
|
==========================================================
|
||||||
|
|
||||||
|
Launchpad blueprint:
|
||||||
|
|
||||||
|
https://blueprints.launchpad.net/neutron/+spec/ml2-mechnism-driver-for-cisco-dfa
|
||||||
|
|
||||||
|
The purpose of this blueprint it to build an ML2 Mechanism Driver for DFA.
|
||||||
|
|
||||||
|
Problem description
|
||||||
|
===================
|
||||||
|
|
||||||
|
Cisco Dynamic Fabric Automation (DFA) helps enable network automation and
|
||||||
|
provisioning, to simplify both physical servers and virtual machine
|
||||||
|
deployments and moves across the fabric. It uses network admin-defined
|
||||||
|
profile templates for physical and VM projects.
|
||||||
|
When a server admin provisions VMs and physical servers, instances of
|
||||||
|
network policies are automatically created and applied to the network leaf
|
||||||
|
switch. As VMs move across the fabric, the network policy is automatically
|
||||||
|
applied to the leaf switch. More details of cisco DFA can be found in [1].
|
||||||
|
|
||||||
|
The following sections describe the proposed changes in neutron, a new
|
||||||
|
ML2 mechanism driver, and make it possible to use openstack in such a
|
||||||
|
topology.
|
||||||
|
|
||||||
|
This diagram depicts openstack deployment in Cisco DFA topology.
|
||||||
|
|
||||||
|
asciiflows::
|
||||||
|
|
||||||
|
XXXXXXXXXXXXX
|
||||||
|
XXXXXXX XXXXXXXXX
|
||||||
|
X +–––––––+ +––––––––+ X
|
||||||
|
X |spine 1| ++ ++ |spine n | X
|
||||||
|
+–––––––––+ X +–––––––+ +––––––––+ X
|
||||||
|
|DCNM | X X
|
||||||
|
|(Data | X X
|
||||||
|
| Center | +––––––––+ X
|
||||||
|
| Network +––––+ Leaf i | SWITCH FABRIC X
|
||||||
|
| Manager)| +––––––––+ X
|
||||||
|
+–––––+–––+ X X
|
||||||
|
| X X
|
||||||
|
| X+–––––––+ +–––––––+X
|
||||||
|
+ | Leaf x|XXXX XX XXXX|Leaf z |
|
||||||
|
| | +----+ | +---+
|
||||||
|
REST API | | VDP| | |VDP|
|
||||||
|
+ +––+–––++ +––++---+
|
||||||
|
| +––––––––––––––+ | |
|
||||||
|
| | Openstack | | |
|
||||||
|
| | Controller | | |
|
||||||
|
| | Node | +––––––+––––––––+ +––+––––––––––––+
|
||||||
|
| | +–––––––––+ | | OVS | | OVS |
|
||||||
|
| | |Cisco DFA| | +–––+-–-––––––––+ +–––+–-–––––––––+
|
||||||
|
+–––––––+Mechanism| | | |LLDPad(VDP)| | |LLDPad(VDP)|
|
||||||
|
| |Driver | | | +---––––––––+ ++ | +--–––––––––+
|
||||||
|
| | | | | Openstack | | Openstack |
|
||||||
|
+––+––––+––––+–+ | Compute node 1| | Compote node n|
|
||||||
|
| +––––––––––+––––+ +––––––––––+––––+
|
||||||
|
| | |
|
||||||
|
+–––––––––––––––––––+––––––––––––––––––––+
|
||||||
|
|
||||||
|
As shown in the diagram above, each openstack compute node is connected
|
||||||
|
to a leaf node and controller node is connected to a DCNM (Data Center
|
||||||
|
Network Manager). The DCNM is responsible for provisioning, monitoring and
|
||||||
|
troubleshooting of data center network infrastructures [2].
|
||||||
|
|
||||||
|
Proposed change
|
||||||
|
===============
|
||||||
|
|
||||||
|
The requirements for ML2 Mechanism Driver to support cisco DFA are as follows:
|
||||||
|
|
||||||
|
1. DCNM exchanges information with openstack controller node using REST API.
|
||||||
|
To support this, a new client should be created to handle the exchange.
|
||||||
|
|
||||||
|
2. When a project is created/deleted the same needs to be created/deleted on
|
||||||
|
the DCNM.
|
||||||
|
|
||||||
|
3. New extension, dfa:cfg_profile_id, needs to be added to network resource.
|
||||||
|
Configuration profile can be thought as extended network attributes of the
|
||||||
|
switch fabric.
|
||||||
|
|
||||||
|
4. Periodic should be sent to DCNM to get all supported
|
||||||
|
configuration profile and save it into a database.
|
||||||
|
|
||||||
|
5. The network information, such as subnet, segmentation ID, and configuration
|
||||||
|
profile should be sent to DCNM, when network is created, deleted or updated.
|
||||||
|
|
||||||
|
6. Mechanism Driver needs to exchange information with OVS neutron agent when a
|
||||||
|
VM is launched. Currently only plugin can have RPC call to ovs neutron agent.
|
||||||
|
Mechanism driver need to setup RPC to exchange the information with ovs agent.
|
||||||
|
|
||||||
|
7. The DFA topology represent a network based overlay and it support more than
|
||||||
|
4k segment. So new type driver is needed to handle this type of network and
|
||||||
|
detailed is explained in [4].
|
||||||
|
|
||||||
|
8. Data path (OVS flow) should be programmed on compute nodes where instances
|
||||||
|
are launched. The VLAN for the flow is obtained from an external process, that
|
||||||
|
is LLDPad, running on computed node. More detail of process explained in [4].
|
||||||
|
|
||||||
|
Alternatives
|
||||||
|
------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Data model impact
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
* Configuration profiles - keeps supported config profile by DCNM.
|
||||||
|
* Configuration profile and network binding - keeps mapping between network
|
||||||
|
and config profile.
|
||||||
|
* Project - keeps mapping between project name and project ID.
|
||||||
|
|
||||||
|
REST API impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Security impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Notifications impact
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Other end user impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
1. As it is mentioned before, when a network is created, list of configuration
|
||||||
|
profile needs to be displayed. From horizon GUI or CLI, the information can
|
||||||
|
be requested using list_config_profiles API, which will be added to the
|
||||||
|
python-neutronclient.
|
||||||
|
|
||||||
|
2. Configuration parameters regarding DCNM (such as ip address,...) should be
|
||||||
|
added to mechanism driver config file.
|
||||||
|
|
||||||
|
Performance Impact
|
||||||
|
------------------
|
||||||
|
|
||||||
|
There are two options to query configuration profiles from DCNM, periodic and
|
||||||
|
on demand.
|
||||||
|
The on demand request may cause performance issue on create_network. As the
|
||||||
|
reply to a request, has to be processed and it also include database access.
|
||||||
|
On the other hand with periodic approach the information may not be available
|
||||||
|
for duration of pooling time. Concerning performance, a periodic task can
|
||||||
|
query and process the information.
|
||||||
|
|
||||||
|
There are create/update/delete_<resource>_post/precommit methods in the ML2
|
||||||
|
mechanism driver. All the access to database for DFA mechanism driver is done
|
||||||
|
in the precommit methods and postcommit methods are handling DCNM requests.
|
||||||
|
|
||||||
|
Other deployer impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
1. New configuration options for DCNM, that is ip address and credentials.
|
||||||
|
2. Enabling notification in keystone.conf.
|
||||||
|
3. Adding new config parameter to ml2_conf.init to define RPC parameters
|
||||||
|
(i.e. topic's name) for neutron ovs agent and mechanism driver.
|
||||||
|
|
||||||
|
Developer impact
|
||||||
|
----------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
==============
|
||||||
|
|
||||||
|
Assignee(s)
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Primary assignee:
|
||||||
|
Nader Lahouti (nlahouti)
|
||||||
|
|
||||||
|
Work Items
|
||||||
|
----------
|
||||||
|
|
||||||
|
1. Change the setup.cfg to introduce 'cisco_dfa' as mechanism driver.
|
||||||
|
|
||||||
|
2. Events notifications should be enabled in keystone.conf.
|
||||||
|
The mechanism driver relies on notification for project events (create/delete).
|
||||||
|
The ‘cisco_dfa’ mechanism driver listens to these events and after processing
|
||||||
|
them it sends request to the DCNM to create/delete project.
|
||||||
|
'cisco_dfa' keep the projects info in a local database, as they will be used
|
||||||
|
when sending delete request to DCNM.
|
||||||
|
|
||||||
|
3. Spawn a periodic task to send request to DCNM. The reply contains
|
||||||
|
configuration profiles. The information will be saved in a database.
|
||||||
|
If connection to DCNM fails invalidate the cached information.
|
||||||
|
|
||||||
|
4. Define new extension to network resource for configuration profile. The
|
||||||
|
extensions will be added to supported aliases in the cisco_dfa mechanism
|
||||||
|
driver class.
|
||||||
|
|
||||||
|
NOTE: ML2 plugin currently does not support extension in the mechanism driver.
|
||||||
|
A new blueprint is opened to address this issue [5].
|
||||||
|
|
||||||
|
5. When an instance is created cisco_dfa needs to send information (such as
|
||||||
|
instance’s name), to the external process (i.e. LLDPad) on the compute nodes.
|
||||||
|
For that purpose RPC is needed to call an API on ovs_neutron_agent side.
|
||||||
|
Then the API pass the information to LLDpad through a shared library
|
||||||
|
(provided by LLDPad)
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
============
|
||||||
|
|
||||||
|
1. Changes in ovs_neutron_agent to program the flow [4].
|
||||||
|
2. Need implementation of RPC for mechanism driver in ovs_neutron_agent.
|
||||||
|
3. Support for extensions in ML2 mechanism drivers [5]
|
||||||
|
|
||||||
|
Testing
|
||||||
|
=======
|
||||||
|
|
||||||
|
It is needed to have a setup as shown in the beginning of this page.
|
||||||
|
It is not mandatory to have physical switches for that topology.
|
||||||
|
The whole setup can be deployed using virtual switches (i.e. instead of
|
||||||
|
having physical switch fabric, it can be replaced by virtual switches).
|
||||||
|
For each module added to the mechanism driver, unit test is provided.
|
||||||
|
Functional testing with tempest will be provided. The third-party Cisco DFA CI
|
||||||
|
report will be provided to validate this ML2 mechanism driver.
|
||||||
|
|
||||||
|
Documentation Impact
|
||||||
|
====================
|
||||||
|
|
||||||
|
Describe cisco DFA mechanism driver and configuration details.
|
||||||
|
|
||||||
|
References
|
||||||
|
==========
|
||||||
|
[1] http://www.cisco.com/go/dfa
|
||||||
|
http://www.cisco.com/c/en/us/solutions/collateral/data-center-virtualization/unified-fabric/white_paper_c11-728337.html
|
||||||
|
http://www.cisco.com/c/en/us/solutions/data-center-virtualization/unified-fabric/dynamic_fabric_automation.html#~Overview
|
||||||
|
|
||||||
|
[2] http://www.cisco.com/c/en/us/products/cloud-systems-management/prime-data-center-network-manager/index.html
|
||||||
|
|
||||||
|
[3] https://blueprints.launchpad.net/horizon/+spec/horizon-cisco-dfa-support
|
||||||
|
|
||||||
|
[4] https://blueprints.launchpad.net/neutron/+spec/vdp-network-overlay
|
||||||
|
|
||||||
|
[5] https://blueprints.launchpad.net/neutron/+spec/neutron-ml2-mechanismdriver-extensions
|
||||||
|
http://summit.openstack.org/cfp/details/240
|
Loading…
Reference in New Issue
Block a user