<strong><br></strong><ul><li><p><span style="font-size:small"><strong>Name</strong> : Syed Armani</span></p>
</li></ul>
<ul><li>
<p><span style="font-size:small"><strong>Contact/Email</strong>: <a href="mailto:dce3062@gmail.com">dce3062@gmail.com</a>, irc: <a href="http://irc.oftc.net#syed">irc.oftc.net#syed</a></span></p>
</li></ul>
<ul><li>
<p><span style="font-size:small"><strong>Background</strong>: I am a 
Computer Science student from INDIA, I have good exposure of working 
with different languages like C/C++, Python, Shell Scripting, etc. I am 
also comfortable with Linux System Administration and Networking. I have
 sound understanding of different components of OpenStack and their 
architecture. I am following OpenStack since its inception. As well as I
 am very well connected to the OpenStack community.</span></p>
</li></ul>
<ul><li>
<p><span style="font-size:small"><strong>Project title: </strong> Package an OpenStack Use Case.</span></p>
</li></ul>
<ul><li>
<p><span style="font-size:small"><strong>Project details</strong>: Nova+Quantum multi-tier network provisioning with OpenvSwitch .</span></p>
</li></ul>
<p><span style="font-size:small">This use case discuss the ability of 
Quantum to let a cloud tenant create rich multi-tier network topologies 
connecting Nova VMs. The components involved are:</span></p>
<ul><li><span style="font-size:small">Quantum running OpenvSwitch plugin.</span></li><li><span style="font-size:small">Nova running Quantum Manager as its Network Manager.</span></li><li><span style="font-size:small">Simple Quantum Orchestrator that speaks to Quantum/Nova API's.</span></li>
<li><span style="font-size:small">Single Node Setup.</span></li><li><span style="font-size:small">Nova using KVM for Compute.</span></li></ul>
<p><span style="font-size:small"><strong>Scenario</strong></span></p>
<ul><li><span style="font-size:small">Tenants can dynamically create 
network via API and spawn VM, User Creates a Layer-2 network i.e. 
create-network dmz-net, web-net, db-net</span></li><li><span style="font-size:small"><em><span><span style="font-style:normal">Quantum returns network identifier, ‘xyz’.</span></span></em> </span></li><li>
<p style="margin-bottom:0cm"><span style="font-size:small">User 
Creates a VM using Cloud Controller API (e.g.: POST /Servers) and 
specifies a network for the VM’s virtual NICs in the create server 
request. </span></p>
</li><li>
<p style="margin-bottom:0cm"><span style="font-size:small"><em><span><span style="font-style:normal">The Cloud Controller dispatches the call to the Compute Service which creates the VM.</span></span></em> </span></p>
</li><li>
<p style="margin-bottom:0cm"><span style="font-size:small">Compute Service tells Quantum to create a logical port on the ‘xyz’ network. </span></p>
</li><li>
<p style="margin-bottom:0cm"><span style="font-size:small"><em><span><span style="font-style:normal">Quantum creates the logical port and returns the port number.</span></span></em> </span></p>
</li><li>
<p style="margin-bottom:0cm"><span style="font-size:small">Compute 
Service instructs Quantum to plug the VM’s Virtual NIC into the 
previously created port; The Virtual NIC's unique identifier is provided
 in the request body. </span></p>
</li><li>
<p style="margin-bottom:0cm"><span style="font-size:small"><em><span><span style="font-style:normal">Quantum
 invokes the OpenvSwitch plugin to attach the Virtual NIC to the logical
 network. This operation might require the OpenvSwitch plugin to contact
 the hypervisor on which the VM has been created in order to setup 
networking according to the technology adopted by the OpenvSwitch 
plugin.</span></span></em> </span></p>
</li><li>
<p style="margin-bottom:0cm"><span style="font-size:small">User can 
verify that the attachment has been plugged into the network by querying
 Quantum for attachments for the ‘xyz’ network. </span></p>
</li><li>
<p style="margin-bottom:0cm"><span style="font-size:small"><em><span><span style="font-style:normal">Quantum
 returns a list of currently configured attachments, together with their
 state (e.g.: in Progress, Attached/DOWN, Attached/UP, Failed).</span></span></em></span></p>
</li><li>
<p style="margin-bottom:0cm"><span style="font-size:small">When creating VMs, Tenants can specify the vNICs and the network they connect to.</span><br><span style="font-size:small">create-server image = fw-img nics = dmz-net</span><br>
<span style="font-size:small">create-server image = web-img nics = web-net, db-net</span><br><span style="font-size:small">create-server image = db-img nics=db-net</span></p>
</li></ul>
<p><span style="font-size:small">Once you wait for the VMs to boot, 
you can access them directly using SSH from the local machine, which 
acts as the gateway and DHCP server for VMs. </span></p>
<p><br><strong><span style="font-size:small"><span style="text-decoration:underline">Quantum + Nova API flow</span></span></strong></p>
<p style="margin-bottom:0cm" align="LEFT"><span style="font-family:Calibri,sans-serif;font-size:small"> <span>API Client                                                                Quantum Server                      Nova Server </span> </span></p>

<p style="margin-bottom:0cm" align="LEFT"><span style="font-family:Times New Roman,serif;font-size:small"> <span><br> Create Network (POST /tenant1/network) </span> </span></p>
<p style="margin-bottom:0cm" align="LEFT"><span style="font-family:Times New Roman,serif;font-size:small"> <span>---------------------------------------------------------------><br></span></span></p>
<p style="margin-bottom:0cm" align="LEFT"><span style="font-family:Times New Roman,serif;font-size:small"> <span>Network UUID: ‘abc’</span></span></p>
<p style="margin-bottom:0cm" align="LEFT"><span style="font-family:Times New Roman,serif;font-size:small"> <span><</span></span><span style="font-family:Times New Roman,serif;font-size:small"><span>---------------------------------------------------------------</span></span><br>
<br></p>
<p style="margin-bottom:0cm" align="LEFT"><span style="font-family:Times New Roman,serif;font-size:small"> <span>Create Server (POST /tenant1/server)</span></span></p>
<p style="margin-bottom:0cm" align="LEFT"><span style="font-family:Times New Roman,serif;font-size:small"> <span>---------------------------------------------------------------------------------------------------><br>
</span></span></p>
<p style="margin-bottom:0cm" align="LEFT"><span style="font-family:Times New Roman,serif;font-size:small"> <span>Server UUID: ‘def’</span></span></p>
<p style="margin-bottom:0cm" align="LEFT"><span style="font-family:Times New Roman,serif;font-size:small"> <span><</span></span><span style="font-family:Times New Roman,serif;font-size:small"><span>---------------------------------------------------------------------------------------------------<br>
<br></span></span></p>
<p style="margin-bottom:0cm" align="LEFT"><span style="font-family:Times New Roman,serif;font-size:small"> <span>Get Server Interface(s) (GET /tenant1/server/def/interface)<br> </span></span><span style="font-family:Times New Roman,serif;font-size:small"><span>---------------------------------------------------------------------------------------------------</span></span><span style="font-family:Times New Roman,serif;font-size:small"><span>></span></span></p>

<p style="margin-bottom:0cm" align="LEFT"> </p>
<p style="margin-bottom:0cm" align="LEFT"><span style="font-family:Times New Roman,serif;font-size:small"> <span>Server Interface UUID List: [ ‘ghi’ ]<br> <</span></span><span style="font-family:Times New Roman,serif;font-size:small"><span>---------------------------------------------------------------------------------------------------<br>
<br></span></span></p>
<p style="margin-bottom:0cm" align="LEFT"><span style="font-family:Times New Roman,serif;font-size:small"> <span>Create Port on Network (POST /tenant1/network/abc/port)<br> </span></span><span style="font-family:Times New Roman,serif;font-size:small"><span>---------------------------------------------------------------</span></span><span style="font-family:Times New Roman,serif;font-size:small"><span>><br>
<br></span></span></p>
<p style="margin-bottom:0cm" align="LEFT"><span style="font-family:Times New Roman,serif;font-size:small"> <span>Port UUID ‘jkl’<br> <</span></span><span style="font-family:Times New Roman,serif;font-size:small"><span>---------------------------------------------------------------<br>
<br></span></span></p>
<p style="margin-bottom:0cm" align="LEFT"><span style="font-family:Times New Roman,serif;font-size:small"> <span>Attach Interface to port (PUT /tenant1/network/abc/port/jkl) { ‘attachment’ : ‘ghi’ }<br> </span></span><span style="font-family:Times New Roman,serif;font-size:small"><span>---------------------------------------------------------------</span></span><span style="font-family:Times New Roman,serif;font-size:small"><span>></span></span></p>

<p style="margin-bottom:0cm"> <span style="font-family:Times New Roman,serif;font-size:small"><span>Success</span></span></p>
<p style="margin-bottom:0cm"><span style="font-family:Times New Roman,serif;font-size:small"> <span><</span></span><span style="font-family:Times New Roman,serif;font-size:small"><span>---------------------------------------------------------------<br>
<br></span></span><span style="font-size:small">To view allocated IP's run “show” at cmd, Vms can be reached directly using SSH or VNC. </span><span style="font-size:small">To
 clear all existing setup , run “Delete” at cmd. This setup will give 
Tenant control of Network topology, Advanced services like firewall can 
be inserted. Tenants can create multiple private networks using 
OpenvSwitch plugin, plugin take the networking decision. The plugin may 
use drivers to communicate the results of this decision to different 
devices, i.e. It may configure the VLAN on a vSwitch port and tell the 
upstream physical switch to trunk the VLAN.</span></p>
<p style="margin-bottom:0cm"> </p>
<p style="margin-bottom:0cm"> </p>
<ul><li>
<p><span style="font-size:small"><strong>Synopsis</strong>: OpenStack 
Nova currently have very limited support for complex networking 
scenarios. Quantum along with various plugins help the System 
Adminstrators to implement complex networking scenarios like multi-tier 
network creation with Quantum, Creating multiple private virtual 
networks, Attaching virtual ports to virtual interfaces in cloud. 
Nova+Quantum with OpenvSwitch packages can help the debian users to 
easily manage cloud tenants and give them control to create multi-tier 
L2 networks.</span></p>
</li></ul>
<ul><li>
<p><span style="font-size:small"><strong>Benefits to Debian</strong> :
 Cloud computing is not a trend anymore, it has become neccessity for 
today's Data centers. System Administrators and DevOps using debian to 
deploy their private/public cloud infrastructure will have more options 
in the form of debian packages. It will be easy for them to deploy 
complex multi-tier networking in their private or public cloud 
deployments. More options in the form of debian packages will help 
Debian GNU/Linux to become a leader in the cloud. </span></p>
</li></ul>
<ul><li>
<p><span style="font-size:small"><strong>Deliverables</strong>: OpenStack Packages implementing the Use Case described above with proper documentation of HOWTOs and manual steps. </span></p>
</li></ul>
<ul><li>
<p><span style="font-size:small"><strong>Project schedule</strong>: I can start working from first week of May 2012. The project will take approximately 3 months.</span></p>
</li></ul>
<ul><li>
<p><span style="font-size:small"><strong>Exams and other commitments</strong>: I will be having University Exams in June. </span></p>
</li></ul>
<ul><li>
<p><span style="font-size:small"><strong>Other summer plans</strong>: No other plans.</span></p>
</li></ul>
<ul><li>
<p><span style="font-size:small"><strong>Why Debian?</strong>: Debian 
is the Universal Operating System.I have been using Debian based distros
 since my first introduction with Linux based operating systems. I have 
learned a lot since then. It will be a pleasure to work with Debian 
community and contribute to the growth of Debian in Cloud arena. </span></p>
</li></ul>