Melange is intended to provide network information services for use across OpenStack services. The initial focus will be on IP address management (IPAM) and DHCP functionality. Melange is intended to be a standalone service with it's own API. However, the initial use case will be to decouple existing IP management and dns_masq functionality from Nova and support the existing Nova networking functionality.
Longer term, Melange will evolve to integrate with other OpenStack services, particularly the Quantum service (virtual network segments), network containers and Load Balancer as a Service (LBaaS). It is also anticipated that we may evolve beyond basic IP address management and DHCP to handle other network information such as gateway, routing and DNS information.
Since Melange will initially focused on decoupling IPAM and DHCP from Nova. We plan to implement this within the Nova project and repository. Since Melange will be a separate service and API. This effort will not have any direct impact on Nova. However, the eventual adoption of this service is dependent on the network refactoring work in the following blueprint:
This blueprint is the umbrella for the overall Melange service. The specific implementation details are further identified in the following dependent blueprints:
IP addresses are an important resource for a cloud provider to manage, and providers will need flexibility in how addresses are assigned to VMs and other networking-related services (e.g., load balancing devices). The existing IP association mechanism is tightly coupled to Nova's network provisioning mechanism, including a networking host that provides NAT and may not work well with a providers network design. Additionally, customers may want to assigned their own addresses, for example, isolated tenant networks that use RFC 1918 space or have a VPN to a network at a remote site).
User stories / Scope
- The initial base case is to supply the minimum functionality required to deliver equivalent services that Nova provides today
- Should enable network block subdivision - carving up large blocks into smaller subnets
- DHCP (Should provide at least dnsmasq equivalent and plug-in support)
- Consumers of IPAM service are expected to be other openstack services (nova, LBaaS, Layer 2, etc)
- A general purpose IP address management solution is outside the scope of Melange as it is now envisioned.
- Support for both IPv4 and IPv6 block and address management
- Melange must support multi-tenant environments
- public address space
- private (overlapping) address space
- must be able to associate IPs to tenant/project and to network segments
- must protect data based on authZ/authN systems in place
- should store ip address, def. gateway, subnet, (dhcp options: dns server, ntp, etc)
- Enable the definition of policies
- allocation rules for how a block is used (reserve certain addresses for certain purposes, etc)
- rules for automatic allocation of IPs from available blocks
- Need support Floating IPs
- IPAM service is repository, not an "actor" (stores info and answers queries, doesn't push it out actively)
This blueprint assumes that work will progress on the network-refactoring blueprint for Nova. We also assume that the Quantum virtual network service is also being developed in parallel to Melange.
We have initially target 3 core parts of Melange. Each of these will be detailed out in a more specific blueprint:
- Melange API
- IP Address Management
We intend to provide an API for Melange that will expose all key services. We will leverage the Echo project that is being done as part of Keystone to get the initial API spun up with proper daemonization and testing frameworks.
We anticipate provide "plug in" capability for the basic IP admin services and for the DHCP functionality. It should be straightforward for an OpenStack deployment to use existing services when they are already deployed.
- We will need to work closely with the nova-refactoring and Quantum development efforts to precisely define expected flows. We need to be certain that existing and future functionality is clearly and correctly partitioned among the new services.
- Issue: how do we handle multiple IP subnets on the same L2 segment?
- policies and priorities?
- Issue: static IPs?
- nova reserves, then holds?
- whether the consumer gets to specify the IP to acquire
Much of the background behind the creation of Melange can be found on the Network Service Etherpad discussion.