Summary

Draft proposal for Dynamic Cloud Network Service (DCNS). This work follows the "network as a service" or NaaS model by providing seamless layer-2 intra- and inter-cloud networking over an arbitrary topology of software and hardware switches.

Rationale

NaaS "provides flexibility in creating networks + associating devices to support interesting network topologies between VMs from the same Tenant." However, The current design and reference implementation only address host-level virtual networking and assume static physical networking over hardware switches. No plug-in provides network service that dynamically sets up and tears down arbitrary layer-2 network with necessary QoS features. None addresses networking in wide area, mutli-domain environment either.

The proposal of DCNS complements the existing Network-Service with such extensions that address all the above issues and provide the following:

By leveraging "off-the-shelf" open source dynamic networking technologies, the DCNS will be a natural extension to NaaS bring control-plane based seamless virtual + physical intra- and inter-cloud networking into OpenStack.

Note that we refer to "Network-Service" as a general term for pre-existing Nova network related workflow as well as Quantum L2 services.

User Stories

1. Dynamic physical VLAN per project

2. Dynamic cloud network over multi-domain WAN

3. Seamless virtual+physical cloud networking (future)

4. Inter-cloud dynamic network (future)

Design

Concept

This BluePrint only addresses an Option 2 design as we described here.

In this design, DCNS is implemented as an Agent Service that can be either embedded into a network-service proposal plugin or invoked as an external service by a network-service proposal plugin. This design

--TODO: Add drawing here --

DCNS API

DCNS API provides the following service calls:

    def setup_physical_network (self, project, host_ports, bw, vlan)

    def modify_physical_network (self, project, add_host_ports, rem_host_ports, bw, vlan)

    def teardown_physical_network (self, project)

    def get_network_info (self, project)

DCNS Agent

Network-Service Plugin+ DCNS Workflow

Implementation

The following code will be added:

Addition of DCNS agent. Code structure:

dcns/
    _init_.py
    api.py               # DCNS API
    manager.py           # DCNS agent service
    topology.py          # physical topology receiving and maintenance with host/nic to topology touch point mappings
    pce.py               # P2P and MP2MP path computation
    driver_base.py       # base class for driver pluggable
    drivers/
            openflow/
            idc_oscars/

The code is uploaded to !LaunchPad

The LaunchPad URN: https://code.launchpad.net/~usc-isi/nova/dynamic-cloud-network-service

The code is branched out from Network Refactoring: https://code.launchpad.net/~midokura/nova/network-refactoring-l2

For release 2011.2-0ubuntu0ppa1~lucid1, there is also a manual patching package located inside the dynamic-cloud-network-service branch: http://bazaar.launchpad.net/~usc-isi/nova/dynamic-cloud-network-service/files/head:/nova/network/dcns/other/nova-lucid-patch/

Test/Demo Plan

TBD

Unresolved Issues

1. What will we do for User Stories 3 and 4, which are towards longer term goals for DCNS? Do we need spin them off in separate blueprints?

2. At this point there, Quantum L2 service has not been integrated into Nova network service workflows. We will keep watching on that work in process and make necessary change for Quantum L2 service integration.

3. We start with DCNS driver that supports OpenFlow driver in initial implementation. Will leave IDC/OSCARS+DRAGON to future implementation, particularly when WAN and multi-domain connectivity is required.

Wiki: DynamicCloudNetworkService (last edited 2011-09-15 18:17:38 by LorinHochstein)