Projects/IncubatorApplication/Melange

Project codename: Melange

Summary (one sentence abstract of the project): Melange is a network information service that provides a centralized mechanism for CRUDing network information such as IPs, MAC addresses, etc.

Detailed Description:

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) functionality. We are also incorporating MAC address and VIF id management. The primary focus is to complement Quantum-based network installations.

Melange was originally conceived as part of the Netstack work done at the OpenStack Diablo summit. There was initial interest in incubating the project within Nova as opposed to a standalone project. However, that experiment proved problematic on a number of fronts including packing, core developer resources and visibility across other OpenStack projects. We have now decided that incubating Melange as a separate project is more in line with the future direction. On the positive side, we have six months of work done within the OpenStack environment and have already gotten significant review input from Nova core developers.

What is the purpose of the project and vision for it?

With the creation of Quantum networking services, networks will increasingly be able to span multiple OpenStack services and even multiple locations/geographies. This will drive an increasing desire to be able to allocate and track IPs, MAC addresses and other bits of network information that need to be unique across services. Melange is intended to fulfill this need.

Describe the relevance of the project to other OpenStack projects and the OpenStack mission to provide a ubiquitous cloud computing platform:

As OpenStack expands to include servers, load balancers, firewalls, DBaaS and other infrastructure, this need will increase. Melange is intended to provide a scalable service for managing this information for all OpenStack services.

Basic roadmap for the project: The first phase is intended to supply the minimum functionality required to deliver IPAM equivalent services that Nova provides today
 * 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)
 * 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
 * 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/NATing
 * IPAM service is repository, not an "actor" (stores info and answers queries, doesn't push it out actively)

These features are already in the current Melange code.

Future items:
 * MAC address allocation and tracking
 * VIF UUID allocation and tracking
 * VM address discovery/auto-assignment - (Should provide at least dnsmasq equivalent and plug-in support)

Location of project source code:

https://github.com/jkoelker/melange

Programming language, required technology dependencies:

Python. Since this was being developed within the Nova project, we have stayed aligned with their technology stack.

'''Is project currently open sourced? What license?''':

Yes. Apache License, Version 2.0

Level of maturity of software and team:

The majority of the code has been developed by 3 engineers from Thoughtworks who are working closely with the Rackspace Nova team. The lead developer has more than 10 years of programming experience and other key contributors have spent 2 or more years involved in large scale IPAM service effort that has been ongoing for the past 4 years at Rackspace.

The software has already gotten several reviews from Nova core team members over the course of development. Nicira has also done the work to integrate Melange into the Quantum Network Manager. Rackspace has a fully functional integration of Melange, Quantum and Nova in our test environments.

A current draft of the Melange API can be found at: Melange API

We have been participating in the weekly Netstack meetings on the openstack-meetings channel in IRC.

Proposed project technical lead and qualifications:

Troy Toman, Director of Compute Engineering at Rackspace

Troy has been leading the Melange project since it's inception at the Diablo summit. Troy also leads all engineering efforts at Rackspace related to Compute and Networking. Prior to this role, Troy was the engineering lead for data center automation at Rackspace which encompassed IPAM, backbone network automation and data center automation systems.

Prior to Rackspace, Troy has held product management, engineering and operations roles at IBM, Sun Microsystems, Inktomi, VERITAS and Kazeon. He has a B.S. in Computer Science from Texas A&M University.

Other project developers and qualifications:

Rajaram Mallya: 8 years of experience in Ruby and .net. 4 years in Thoughtworks. Last projects worked on include www.thehiveprojects.com and www.trainline.com

Gavri Fernandez: 9 years of experience in Ruby, Java and C++. 1 year of development on Rackspace's Cloud Servers team

Trey Morris: Member of the Rackspace Nova development team and a member of Nova core.

Jason Koelker: Member of the Rackspace Nova development team. Several years of Python experience

Aaron Lee: Member of the Rackspace Nova development team. Previously part of Rackspace's IPAM and DC automation team.

Vinkesh Banka: 2 years of experience on Rackspace IPAM and DC automation

Santosh Kumar M: 2 years of experience on Rackspace IPAM and DC automation

Deepak N. : 6 months on Rackspace IPAM plus several years on .net projects Written some utility packages in ruby and python at https://github.com/endeepak

Infrastructure requirements (testing, etc):

Melange is a standalone service and can be tested with normal Python dependencies.

Have all current contributors agreed to the OpenStack CLA?

Yes.

Status: To be completed by PPB