Melange


 * Launchpad Entry: NovaSpec:Melange
 * Created: 2 May 2011
 * Drafter: Troy Toman
 * Contributors:

Summary
Melange is intended to provide network information services for use across OpenStack services. The initial focus will be on IP address management (IPAM) and address discovery (DHCP/dnsmasq) 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 VM address discovery from Nova and support the existing Nova networking capabilities.

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.

Release Note
Since Melange will initially focused on decoupling IPAM and VM address discovery 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:

network-refactoring

This blueprint is the umbrella for the overall Melange service. The specific implementation details are further identified in the following dependent blueprints:

Rationale
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). Therefore, the flexibility and capabilities of the IP address management system need significant improvement.

IPAM Service

 * 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
 * VM address discovery/auto-assignment - (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)

Assumptions
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.

Design
We have initially target 3 core parts of Melange. Each of these will be detailed out in a more specific blueprint:


 * 1) Melange API
 * 2) IP Address Management
 * 3) VM address discovery service (i.e. DHCP/dnsmasq)

Implementation
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. The base API is documented here.

We anticipate provide "plug in" capability for the basic IP admin services and for the VM address discovery server. It should be straightforward for an OpenStack deployment to use existing services when they are already deployed.

Unresolved issues

 * 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

Discussion
Much of the background behind the creation of Melange can be found on the Network Service Etherpad discussion.