Neutron IPAM
Currently most (if not all) Neutron plugins leverage an IPAM implementation that is embedded in the db_plugin base implementation. While this works well in a self contained system, it makes it difficult to integrate with an external IPAM backend.
The proposal is to hash out an IPAM interface derived from the existing IPAM-related interfaces defined in the db_plugin and refactor the current implementation into a configurable IPAM driver. One can then envision implementing and configuring additional independent drivers to external IPAM backends as well.
The resulting pluggable IPAM subsystem in Neutron will allow flexible control over the lifecycle of network resources such as
● fixed IP addresses assigned to Neutron ports
● floating IP addresses
● tenant networks
● network address ranges i.e. sub-networks
This will provide a sophisticated network resource management framework while simplifying the integration with 3rd party and end user developed IPAM solutions.
The blueprint’s technical specification will cover the following:
● IPAM subsystem interface specification (internal API used by other parts of Neutron)
● Identification of integration points between Neutron sub services (e.g. L3, load balancing, etc): API calls, events, data models.
● Interaction scenarios between DHCP agent and IPAM
● List of directives used for general configuration of IPAM subsystem
● Description of Neutron API extensions if necessary, client library extension is implied
● Out-of-box IPv6 compatibility
● Modularized implementation
Blueprint information
- Status:
- Complete
- Approver:
- Kyle Mestery
- Priority:
- Essential
- Drafter:
- Sumit Naiksatam
- Direction:
- Approved
- Assignee:
- John Belamaric
- Definition:
- Approved
- Series goal:
- Accepted for liberty
- Implementation:
- Implemented
- Milestone target:
- 7.0.0
- Started by
- Sumit Naiksatam
- Completed by
- Kyle Mestery
Related branches
Related bugs
Sprints
Whiteboard
March-24 (mestery): Moving to Liberty.
March-18 (mestery): FFE for Kilo, moving to essential and RC1.
December-15 (mestery): Kilo-3.
(mestery): Please do not set milestones until the BP is approved in neutron-specs.
Please propose a specification in the Neutron specs repository following the guidelines here: https:/
There is specification proposed here: https:/
Gerrit topic: https:/
Addressed by: https:/
Implements: blueprint neutron-ipam
Addressed by: https:/
WIP Straw man for IPAM interface
Addressed by: https:/
Implement IPAM Driver loader
Gerrit topic: https:/
Gerrit topic: https:/
Addressed by: https:/
Refactor db_base_
Addressed by: https:/
wip ipam reference driver
Gerrit topic: https:/
Gerrit topic: https:/
Addressed by: https:/
Add IPAM blueprints to Liberty
Addressed by: https:/
WIP Alternate Refactoring for Pluggable IPAM
Addressed by: https:/
Enable pluggable IPAM implementation by default
Addressed by: https:/
Add Pluggable IPAM Backend
Addressed by: https:/
Refactor and decompose db_base_
Addressed by: https:/
Refactor and decompose db_base_
Addressed by: https:/
Decompose db_base_
Addressed by: https:/
Decompose db_base_
Addressed by: https:/
Decompose db_base_
Addressed by: https:/
Refactor _update_
Addressed by: https:/
Refactor update_port in db_base_plugin_v2
Addressed by: https:/
Use sets to calculate added/original/
Addressed by: https:/
Refactor _update_
Addressed by: https:/
Convert rebuilding ranges to instance method
Addressed by: https:/
Add request factory for pluggable IPAM
Addressed by: https:/
Remove _check_
Addressed by: https:/
Move _add_auto_
Addressed by: https:/
Decompose create_port and save_subnet
Addressed by: https:/
Move _delete_port
Addressed by: https:/
Decompose _create_
Addressed by: https:/
Bulk move methods to ipam_backend_
Addressed by: https:/
Decompose _save_subnet
Addressed by: https:/
Use SubnetRequestFa
Addressed by: https:/
Fixing indentation and typo in comments
Addressed by: https:/
Extend SubnetRequestFa
Gerrit topic: https:/
Addressed by: https:/
Merge remote-tracking branch 'origin/master' into merge-qos
Gerrit topic: https:/
Addressed by: https:/
Merge remote-tracking branch 'origin/master' into merge-branch
Addressed by: https:/
Merge remote-tracking branch 'origin/master' into merge-branch
Addressed by: https:/
Collapse create_subnet into single method
Gerrit topic: https:/
Addressed by: https:/
Merge remote-tracking branch 'origin/master' into merge-branch
Addressed by: https:/
Track allocation_pools in SubnetRequest
Addressed by: https:/
Add Pluggable IPAM Backend Part 1
Gerrit topic: https:/
Addressed by: https:/
Merge remote-tracking branch 'origin/master' into merge-branch
Gerrit topic: https:/
Addressed by: https:/
Merge remote-tracking branch 'origin/master' into merge-branch
Addressed by: https:/
Cleanup IPAM tests
Gerrit topic: https:/
Addressed by: https:/
Merge remote-tracking branch 'origin/master' into merge-branch
Addressed by: https:/
Add script for migrating to reference ipam driver
Work Items
Dependency tree
* Blueprints in grey have been implemented.