Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Melange Overview       Troy Toman     Folsom Summit       April 2012
Melange•   mélange: noun, a mixture; medley.•   melange or mélange    •   1. a mixture; confusion    •   2. geology  a tot...
History•   Spun out of NetStack work at Diablo summit•   Initial proposal to integrate directly into Nova•   Shifted to in...
Original Melange Blueprint✓across OpenStack services. network information services for use Melange is intended to provide✓...
Melange Elements•   IP Blocks•   IP Addresses•   Static Routes•   Interfaces•   NAT’ing•   Policies•   MAC address ranges
IP Blocks    •   Public or private IP space tracking    •   {    "ip_block": {       "broadcast": "10.1.1.255",       "cid...
IP Addresses{    "ip_address": {       "address": "10.1.1.6",       "created_at": "2011-12-01T10:02:53",       "id": "94fa...
Static Routes•    GET /ipam/tenants/{tenant_id}/ip_blocks/{ip_block_id}/ip_routes{    "ip_routes": [       {          "cre...
Interface Creation•     Orchestrated creation of interface, MAC and IP assignment•     POST /ipam/interfaces/     •      C...
Interfaces       {    "interface": {        "created_at": "2011-12-01T13:18:37",        "device_id": "instance",        "i...
Instance Interfaces•      Batch interface for interface creation•      PUT /ipam/instances/{instance_id}/interfaces/      ...
NAT’ing•       Intended for tracking floating IPs or NAT relationships•       Globals - public IPs•       Locals - private ...
Policies•       Create policy (essentially a policy group)•       Create policy elements    •    Unusable ranges    •    U...
Policy Example•   `melange policy create -t {tenant} name={block_name} desc={policy_name}` •   `melange unusable_ip_octet ...
MAC Address Ranges•   Ability to control the range of MAC addresses    melange --host <melangeIP> --port 9898 mac_address_...
Known Issues/Limitations•   Woefully behind on user/admin documentation (Sorry!)•   Early integration has focused around Q...
Upcoming SlideShare
Loading in …5
×

OpenStack Folsom Summit: Melange overview

2,142 views

Published on

This is the slide deck from the Melange overview presentation given during the OpenStack Folsom Summit in San Francisco.

Published in: Technology, Business
  • Be the first to comment

OpenStack Folsom Summit: Melange overview

  1. 1. Melange Overview Troy Toman Folsom Summit April 2012
  2. 2. Melange• mélange: noun, a mixture; medley.• melange or mélange • 1. a mixture; confusion • 2. geology  a totally disordered mixture of rocks of different shapes, sizes, ages, and origins 
  3. 3. History• Spun out of NetStack work at Diablo summit• Initial proposal to integrate directly into Nova• Shifted to incubated project after Essex summit• Merging into Quantum going forward• API Doc: http://melange.readthedocs.org
  4. 4. Original Melange Blueprint✓across OpenStack services. network information services for use Melange is intended to provide✓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 its own API. NOTE: Melange is just a data store - it doesn’t DO anything!
  5. 5. Melange Elements• IP Blocks• IP Addresses• Static Routes• Interfaces• NAT’ing• Policies• MAC address ranges
  6. 6. IP Blocks • Public or private IP space tracking • { "ip_block": { "broadcast": "10.1.1.255", "cidr": "10.1.1.0/24", "created_at": "2011-12-01T09:46:22", "dns1": "8.8.8.8", "dns2": "8.8.4.4", "gateway": "10.1.1.1", "id": "af19f87a-d6a9-4ce5-b30f-4cc9878ec292", "netmask": "255.255.255.0", "network_id": "quantum_net_id4", "parent_id": null, "policy_id": "2f730874-2088-4f91-87fb-63792c753971", "tenant_id": "RAX", "type": "private", "updated_at": "2011-12-01T09:46:22" }}
  7. 7. IP Addresses{ "ip_address": { "address": "10.1.1.6", "created_at": "2011-12-01T10:02:53", "id": "94fa249b-0626-49fc-b420-cce13dabed4f", "interface_id": "interface_id", "ip_block_id": "af19f87a-d6a9-4ce5-b30f-4cc9878ec292", "updated_at": "2011-12-01T10:02:53", "used_by_device": "instance_id", "used_by_tenant": "lessee_tenant", "version": 4 }}Supports both IPv6 and IPv6 addresses
  8. 8. Static Routes• GET /ipam/tenants/{tenant_id}/ip_blocks/{ip_block_id}/ip_routes{ "ip_routes": [ { "created_at": "2011-12-01T10:19:12", "destination": "192.168.0.0", "gateway": "10.1.1.1", "id": "364c555d-4e35-43d4-9807-59535df082a5", "netmask": "255.255.255.0", "updated_at": "2011-12-01T10:19:12" }, { "created_at": "2011-12-01T10:20:47", "destination": "192.168.0.0", "gateway": "10.1.1.1", "id": "7ebffbd6-3640-4061-b8f1-7878463e651f", "netmask": "255.255.255.0", "updated_at": "2011-12-01T10:20:47" } ]}
  9. 9. Interface Creation• Orchestrated creation of interface, MAC and IP assignment• POST /ipam/interfaces/ • Creates a vif record, allocates a mac and optionally allocates ip address from a network{ "interface": { "id": "virt_iface", "device_id": "instance", "tenant_id": "tnt", "network": { "id": "net1", "addresses": ["10.0.0.2"], "tenant_id": "network_owner_tenant_id" } }}
  10. 10. Interfaces { "interface": { "created_at": "2011-12-01T13:18:37", "device_id": "instance", "id": "virt_iface", "ip_addresses": [ { "address": "10.0.0.2", "id": "7615ca4a-787d-46b0-8a8c-3a90e3e6cf2c", "interface_id": "virt_iface", "ip_block": { "broadcast": "10.0.0.255", "cidr": "10.0.0.0/24", "dns1": "8.8.8.8", "dns2": "8.8.4.4", "gateway": "10.0.0.1", "id": "9c4c3dfd-c707-45bd-8626-9c369b1b9460", "ip_routes": [], "netmask": "255.255.255.0" }, "version": 4 } ], "mac_address": null, "tenant_id": "tnt_id", "updated_at": "2011-12-01T13:18:37" }}
  11. 11. Instance Interfaces• Batch interface for interface creation• PUT /ipam/instances/{instance_id}/interfaces/ • Create interfaces, allocate macs and ips on all networks provided.{ "instance": { "tenant_id": "tnt", "interfaces": [ {"network": {"id": "public_net1", "tenant_id": "RAX"}, "mac_address": null}, {"network": {"id": "public_net2", "tenant_id": "RAX"}, "mac_address": null}, ] }}
  12. 12. NAT’ing• Intended for tracking floating IPs or NAT relationships• Globals - public IPs• Locals - private IPs• POST /ipam/ip_blocks/{ip_block_id}/ip_addresses/{address}/inside_globals • Finds local IpAddress from given ip_block_id and address and creates IpAddresses passed in params as its inside global. • {‘ip_addresses’:’[ { “ip_block_id” : “some_global_ip_block_id”, “ip_address” : “some_global_ip_address” }, ..., {....} }
  13. 13. Policies• Create policy (essentially a policy group)• Create policy elements • Unusable ranges • Unusable octets• Assign policy to block
  14. 14. Policy Example• `melange policy create -t {tenant} name={block_name} desc={policy_name}` • `melange unusable_ip_octet create -t {tenant} policy_id={policy_id} octet=0`• `melange unusable_ip_octet create -t {tenant} policy_id={policy_id} octet=1`• `melange ip_block update -t {tenant} id={block_id} policy_id={policy_id}`
  15. 15. MAC Address Ranges• Ability to control the range of MAC addresses melange --host <melangeIP> --port 9898 mac_address_range create cidr=404040000000/24 mac_address_range:     cidr: 404040000000/24     created_at: 2012-01-25T17:21:46     id: ad4e7f30-4e11-45b9-b204-c58d194fe5a9     updated_at: 2012-01-25T17:21:46
  16. 16. Known Issues/Limitations• Woefully behind on user/admin documentation (Sorry!)• Early integration has focused around Quantum• DHCP scenario has not been broadly tested (vs. injection)• Needs more participation/input from broader community

×