You are on page 1of 17

Cloud Computing Platform Survey

Phil Pratt-Szeliga 3/1/2011

Cloud Computing
Several new services exist that provide elastic:
Computation Storage Web Hosting

Elastic:
Pay for what you need by the hour (Pay only for what you use)

Fixed:
Buy the machines and maintain them (Pay for the maximum load you expect)

Cloud Computing
Three major vendors in Cloud Computing exist today
Microsoft Windows Azure Amazon Elastic Compute Cloud (EC2) Rackspace Cloud

Rackspace Cloud financially backs the open source project: OpenStack


OpenStack is cloud computing software that runs on the cloud nodes I will primarily be focused on interacting with the OpenStack ReST API via Rackspace

Rackspace Pricing
http://www.rackspace.com/cloud/cloud_hosting_products/servers/pricing/ http://www.rackspace.com/cloud/cloud_hosting_products/files/pricing/
Compute Server Size 256 MB RAM Linux $0.015 / hour Windows N/A

512 MB RAM
1 2 4 8 GB RAM GB RAM GB RAM GB RAM

$0.03 / hour
$0.06 / hour $0.12 / hour $0.24 / hour $0.48 / hour $0.96 / hour

N/A
$0.08 / hour $0.16 / hour $0.32 / hour $0.58 / hour $1.08 / hour

16 GB RAM

Each size has 4 CPU cores (to the best of my knowledge) Storage Space $0.15 / GB / month Bandwidth Out $0.18 / GB Bandwidth In $0.08 / GB

High Performance Computing with Rackspace (8 GB hardware size)


Cost of 18 high performance servers per day
20000 15000 10000 5000 0 0 20 40 60 80 Days of Compute Time 100

Cost in dollars

RackSpace Cost

Traditional Cost

Some of our computations take 6 days with 3 local computers. Rackspace Cost Per Day (18 Computers): $207.36 With 18 Rackspace nodes we can complete this in 1 day

OpenStack
OpenStack Compute [1]
Operating System for the cloud Manages all resources, networking and authorization

OpenStack Storage [2]


Enables redundant, scalable file storage

Platform:
Linux / Java

[1] http://www.openstack.org/projects/compute/ [2] http://www.openstack.org/projects/storage/

OpenStack Compute REST API


http://docs.rackspacecloud.com/servers/api/v1.0/cs-devguide-20110112.pdf

Authentication Servers
List Servers (including IP address) Create Server Delete Server Reboot Server

Images
List Images Create Image Get Image Details Delete Image

Backup Schedules
List Backup Schedules Create/Update Disable

Flavors (hardware config)


List Flavors Get Flavor Details

OpenStack Storage REST API


http://docs.rackspacecloud.com/files/api/v1/cf-devguide-20110112.pdf

Authentication Containers
List Containers List Objects Create Container Delete Container Retrieve Metadata

Object Storage (really Files)


Retrieve Object Create/Update Object Copy Object Delete Object Retrieve Metadata Update Metadata

CDN (Content Distribution Network with Akamai)


List CDN containers Enable CDN on container

Existing OpenStack API Bindings


http://www.rackspace.com/cloud/cloud_hosting_products/servers/api/ http://www.rackspace.com/cloud/cloud_hosting_products/files/api/

OpenStack Compute
None

OpenStack Storage
PHP Python Ruby Java .NET

I plan to create Java bindings for OpenStack Compute. Then I will leverage that to create a Rackspace HPC command and control tool

Final Project Outline


Create the OpenStack Compute API bindings to:
Start a Server Get its IP address Stop a Server

Create a OpenStack Command and Control App:


Automatically start N servers Package multiple java .jar files into one .jar Send the single .jar file to the servers and run with command line args Automatically writs results file to OpenStack Storage Automatically shut the servers down when done

Create an example program to do computation


Peer-to-Peer matrix multiplication

Software Needed to Create Bindings


Http REST Client Library
Java: Apache HttpComponents
http://hc.apache.org/

Either XML or JSON parsers


Java: Google JSON parser GSON
http://code.google.com/p/google-gson/

Base64 Encoding
Java: Apache Commons Codec
http://commons.apache.org/codec/

Software Needed to Create Command & Control and Example


SCP and SSH clients in Java
sshj is highly regarded on stackoverflow (Google SOC project) https://github.com/shikhar/sshj

p2pstm (part of my research)


A peer to peer software transactional memory
Peers can dynamically change memory in a safe way Peers can dynamically enter and leave the system

Rackspace Compute Capabilities


Passwords stored in a MySQL or MSSQL database are often encoded with an MD5 hash
MD5(password) = 5f4dcc3b5aa765d61d8327deb882cf99 If we know 5f4dcc3b5aa765d61d8327deb882cf99 can we do a brute force computation using Rackspace to find the password? I assume the password is not in any dictionaries and no advanced knowledge of MD5 generation is used

Rackspace Compute Capabilities


Cost and Time Estimates for brute force reverse MD5 hash of different password lengths

This calculation takes very little ram, so we can use the 256MB flavor ($0.015 / hour) Rackspace allows a max of 50 server instances (each has 4 cores) = 200 total cores One core can do 1024*1024 attempts in 6 seconds
password length (72 possible chars) 1 2 3 4 total blocks of 1E6 attempts 6.86646E-05 0.004943848 0.355957031 25.62890625 CPU cores 200 200 200 200 Minutes 3.43323E-08 2.47192E-06 0.000177979 0.012814453 Hours 5.72205E-10 4.11987E-08 2.96631E-06 0.000213574 Days 2.38419E-11 1.71661E-09 1.23596E-07 8.89893E-06 Years 6.53202E-14 4.70305E-12 3.3862E-10 2.43806E-08 Cost ($) 4.29153E-10 3.0899E-08 2.22473E-06 0.000160181

5
6 7 8 9

1845.28125
132860.25 9565938 688747536 49589822592

200
200 200 200 200

0.922640625
66.430125 4782.969 344373.768 24794911.3

0.015377344
1.10716875 79.71615 5739.5628 413248.5216

0.000640723
0.046132031 3.32150625 239.14845 17218.6884

1.7554E-06
0.000126389 0.009100017 0.655201233 47.17448877

0.011533008
0.830376563 59.7871125 4304.6721 309936.3912

10

3.57047E+12

200

1785233613

29753893.56

1239745.565

3396.563191

22315420.17

Desktop Compute Capabilities


Cost and Time Estimates for brute force reverse MD5 hash of different password lengths

Assuming computer with 4 cores that basically costs nothing (didnt include electricity)
password length (72 possible chars) 1 2 3 4 total blocks of 1E6 attempts 6.86646E-05 0.004943848 0.355957031 25.62890625 CPU cores 200 200 200 200 Minutes 1.71661E-06 0.000123596 0.008898926 0.640722656 Hours 2.86102E-08 2.05994E-06 0.000148315 0.010678711 Days 1.19209E-09 8.58307E-08 6.17981E-06 0.000444946 Years 3.26601E-12 2.35153E-10 1.6931E-08 1.21903E-06 Cost ($) ~0 ~0 ~0 ~0

5
6 7 8 9

1845.28125
132860.25 9565938 688747536 49589822592

200
200 200 200 200

46.13203125
3321.50625 239148.45 17218688.4 1239745565

0.768867188
55.3584375 3985.8075 286978.14 20662426.08

0.032036133
2.306601563 166.0753125 11957.4225 860934.42

8.77702E-05
0.006319456 0.455000856 32.76006164 2358.724438

~0
~0 ~0 ~0 ~0

10

3.57047E+12

200

89261680666

1487694678

61987278.24

169828.1596

~0

Rackspace Compute Capabilities Conclusions


The cost shown to crack a password of a certain length is actually the cost to crack an entire list of passwords that length

If someone had the MD5 hashes of all the passwords in a system they would probably be able to get most of the passwords in 7 months for $4300
If the minimum password length was increased to 9 or 10 characters this is not as feasible. With a cluster of GPUs (Amazon E2C) the minimum password length may have to be increased even more

Next Presentation
Slides on how to
Make you own cloud Use the Rackspace Cloud

Demonstrate using Java Bindings for


OpenStack Compute OpenStack Storage

Demonstrate how to use Apache Rest API Demonstrate how to use GSON (Google JSON) Demonstrate how to use the p2pstm framework