03.05.2014 Views

Download

Download

Download

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

ORCA-BEN: a distributed control<br />

framework for GENI
<br />

- A Inter-Cloud IaaS Provisioning System for Scientific Workflows 
<br />

Yufeng Xin yxin@renci.org!


The Project Team!<br />

Co-­‐PI: Jeffrey Chase <br />

Duke University <br />

Students: <br />

Prateek Jaipuria <br />

Muzhi Zhao <br />

PI: Ilia Baldine <br />

RENCI, UNC-­‐Chapel <br />

Hill <br />

Anirban Mandal <br />

GENI Controller, <br />

applica>on <br />

interface, actor <br />

registry <br />

Aydan Yumerefendi <br />

Core code <br />

enhancements <br />

Chris Heermann <br />

BEN Testbed <br />

opera>ons, <br />

interconnec>ons with <br />

na>onal/interna>onal <br />

networks <br />

Staff: <br />

Victor Orlikowski <br />

Sincere thanks to our sponsors: <br />

GPO/GENI, ASCR/DOE, SDCI/NSF <br />

2!


Background!<br />

• ORCA-BEN: one of several GENI Control Framework Candidates"<br />

– Lead of ʻCluster Dʼ of GENI projects"<br />

• Project goal: extend ORCA (Open Resource Control Architecture) to"<br />

– Cross cloud provisioning: connections, clusters, and topologies "<br />

– Provision multi-layered network domains (BEN, NLR Sherpa, I2 ION)"<br />

– Leveraging Semantic Web technologies"<br />

– Interoperate with other CF candidates (XMLRPC controller)"<br />

• Connectivity"<br />

• API and Resource description translations"<br />

• Big Idea: create a variety of application-specific topologies out of<br />

collection of independent cloud providers connected by one or more<br />

multi-layered network providers"<br />

– GENI is a kind of IaaS."<br />

– 40GB/100GB network will bring everything closer."<br />

– Other uses: large-scale scientific applications on clouds interconnected by<br />

dynamic high speed networks"<br />

3!


Outline!<br />

• ORCA Architecture and Implementation!<br />

– Distributed actors and lease-based operation"<br />

• Substrate Stitching"<br />

• Semantic resource representations"<br />

– Substrate components and interfaces"<br />

• BEN and beyond"<br />

• NEuca + ImageProxy"<br />

• Interoperability"<br />

– Connectivity"<br />

– Resource description translations"<br />

• Scientific Application Support"<br />

– Wide area Hadoop based applications"<br />

– Workflows"


ORCA-BEN Overview<br />

Goal: provision built-­‐to-­‐order slices of networked virtual infrastructure from <br />

mul>ple cloud or network providers, dynamically on the fly. <br />

AM <br />

AM <br />

SM <br />

Brokering Services <br />

Image/Appliance Services <br />

Slide courtesy of Jeff Chase


ORCA Design and Implementation!<br />

• Pervasive virtualiza>on <br />

• Brokering <br />

• Pluggable <br />

– Policy <br />

– Controller <br />

– Interface <br />

• Cloud technologies <br />

• Seman>c web resource representa>on <br />

• Federated ID management


NEUCA<br />

NEuca – networked extension to<br />

Eucalyptus!<br />

Provide publicly routable<br />

IP with port number(s)<br />

to reach VM<br />

Donwload/register<br />

user images at multiple<br />

sites<br />

DNAT PROXY<br />

IMAGE PROXY<br />

Instantiate VM<br />

topologies<br />

EUCALYPTUS<br />

ORCA<br />

HEAD NODE<br />

WORKER<br />

WORKER<br />

WORKER<br />

WORKER<br />

7!


Eucalyptus/XCat ImageProxy!<br />

Map URL to EMI<br />

IMAGE PROXY<br />

ORCA SITE<br />

AUTHORITY<br />

EUCALYPTUS<br />

Register<br />

<strong>Download</strong><br />

Remotely hosted<br />

image<br />

<strong>Download</strong><br />

OS Image<br />

Map URL to EMI<br />

IMAGE PROXY<br />

ORCA SITE<br />

AUTHORITY<br />

Register<br />

EUCALYPTUS<br />

8!


BEN Topology and Inter-Domain<br />

Connectivity!<br />

6509<br />

ATDNet, MAX,<br />

BOSSnet<br />

Infinera<br />

DTN<br />

I2 ION<br />

Dark fiber to<br />

McLean, VA<br />

Duke<br />

Polatis<br />

Cisco<br />

RTP<br />

Cisco Research<br />

Wave<br />

C-Wave<br />

L3 PoP,<br />

Raleigh<br />

RENCI<br />

NLR FrameNet<br />

Cisco<br />

Research<br />

Wave<br />

FrameNet<br />

I2<br />

NLR<br />

7606<br />

Polatis<br />

OXC<br />

To BEN<br />

10Gbps<br />

UNC-CH<br />

NCSU<br />

RENCI<br />

6509<br />

StarLight<br />

C-wave<br />

6506<br />

NCNI BEN Fiber<br />

UNC/RENCI BEN Fiber<br />

C-Wave<br />

Potential connection<br />

National/International<br />

research networks<br />

Existing connection<br />

Presentation title goes here" 9!


Distributed Stitching in ORCA!<br />

• Stitching is the process of connecting resources of different types of<br />

belonging to different providers to each other"<br />

• Stitching involves a process of agreeing on labels between two<br />

parties"<br />

– Labels may denote bandwidth (VLAN tag, MPLS label, DWDM wavelength)"<br />

• Can be done through multi-step negotiation"<br />

– Complex protocols may be required"<br />

• ORCA approach is based on analyzing dependencies of providers<br />

(label producer vs. label consumer; can you translate labels?)"<br />

– A DAG of dependencies is formed based on the requested topology"<br />

– Properties carrying labels are passed from the root(s) of the DAG along the<br />

branches "<br />

– Certain resources wait to be instantiated until the label information needed<br />

to stitch them is available"<br />

10!


Outline!<br />

• ORCA Architecture"<br />

– Distributed actors and lease-based operation"<br />

– Substrate components and interfaces"<br />

– Substrate Stitching"<br />

– Semantic resource representations!<br />

• Semantic graph !<br />

• Substrate: NDL-OWL, Cloud!<br />

• Domain: Abstraction!<br />

• Request: Cluster, connection, topology!<br />

• Interoperability"<br />

– Connectivity"<br />

– Resource description translations"<br />

• Scientific Application Support"<br />

– Wide area Hadoop based applications"<br />

– Workflows"<br />

11!


Outline!<br />

• ORCA Architecture and Implementation!<br />

– Distributed actors and lease-based operation"<br />

• Substrate Stitching"<br />

• Semantic resource representations"<br />

– Substrate components and interfaces"<br />

• BEN and beyond"<br />

• NEuca + ImageProxy"<br />

• Interoperability"<br />

– Connectivity"<br />

– Resource description translations"


Substrate Resource Description!<br />

• Multilayer Network description"<br />

– Semantic graph: dynamical model with new RDF<br />

resources and properties (xc, virtual interface,<br />

connection hierarchy, reservations)"<br />

– OWL vs. RDF"<br />

– DTN network description"<br />

– Collection (bag, set, list), labelSet, etc"<br />

• Cloud resource description"<br />

– Virtualization as an adaptation"<br />

– Substrate hosting capability"<br />

– Shortcut to classified type"<br />

Presentation title goes here" 13!


Compute.owl!<br />

<br />

MacOS<br />

Note: Features mostly represent known constants.<br />

<br />

Feature<br />

1<br />

<br />

Vendor<br />

foaf:xxx()<br />

<br />

Debian<br />

<br />

Microsoft<br />

<br />

LinuxFileSystem<br />

<br />

ISO9660<br />

<br />

<br />

0..1<br />

<br />

<br />

Linux<br />

OS<br />

VServer<br />

vendor<br />

VirtualBox<br />

osDistribution(xsd:String)<br />

<br />

<br />

<br />

<br />

osVersion(xsd:String)<br />

LinuxRamdisk<br />

RAMType<br />

Xen<br />

ImageType<br />

<br />

DebianLenny<br />

clockFrequency<br />

<br />

<br />

<br />

version(xsd:String)<br />

(xsd:Float)<br />

OpenVZ<br />

VMM<br />

KVM<br />

<br />

1<br />

osDistribution(Lenny)<br />

<br />

LinuxKernel<br />

osVersion(5.0.8)<br />

Windows<br />

1<br />

1<br />

<br />

vendor(url:Debian)<br />

None<br />

<br />

<br />

'None' virtualization means bare metal<br />

<br />

<br />

DDRRam<br />

VMWare<br />

ImageProxyXML<br />

OVF<br />

<br />

<br />

Windows7<br />

Note: this goes to storage ontology<br />

<br />

<br />

Laptop<br />

osDistribution<br />

DDR1066<br />

DDR266<br />

<br />

<br />

(Windows7)<br />

<br />

clockFrequency clockFrequency<br />

RawStorageVolume<br />

ComputeElementType<br />

osVersion(7)<br />

RackedServer<br />

(1.066)<br />

(0.266)<br />

<br />

vendor(url:Microsoft)<br />

storageCapacity<br />

RamDisk<br />

(xsd:Integer)<br />

<br />

<br />

Blade<br />

<br />

DDR2-1066<br />

<br />

MoteType<br />

<br />

clockFrequency<br />

<br />

<br />

<br />

<br />

SCSI146G<br />

TelosB<br />

(1.066)<br />

IDE40G<br />

ARM2<br />

ARM6<br />

AtmelAVR8<br />

IDEDisk<br />

SCSIDisk<br />

storageCapacity<br />

storageCapacity<br />

(146GB)<br />

<br />

<br />

(40GB)<br />

<br />

<br />

IMote<br />

XSM<br />

<br />

<br />

ComputeElementComponent represent<br />

SATADisk<br />

VirtualDisk<br />

x86<br />

CPUArchitecture 1<br />

quantifiable elements of a running compute system<br />

<br />

1<br />

SATA250G<br />

Semantic shortcut hierarchy for well-known server types.<br />

<br />

<br />

<br />

For convenience, NDL-OWL declares these as both<br />

<br />

ComputeElementComponent<br />

storageCapacity<br />

FlashDisk<br />

SSD<br />

classes and individuals. Individuals are used in substrate descriptions,<br />

x86-64 <br />

classes are used in requests and manifests.<br />

(250GB)<br />

IA-64<br />

We expect the RSpecs to support these by name.<br />

architecture<br />

<br />

<br />

<br />

<br />

architecture vendor<br />

os<br />

<br />

EC2CPUCore<br />

0..1 0..1<br />

0..1 ramType storageVolume<br />

StarGateCE<br />

LaptopKanseiCE<br />

EC2C1XLarge<br />

EC2M1XLarge<br />

0..1<br />

0..1 0..1 0..1<br />

vmm(url:None)<br />

vmm(url:None)<br />

vmm(url:Xen)<br />

vmm(url:Xen)<br />

clockFrequency(1.2)<br />

<br />

<br />

<br />

imageType<br />

cpu(url:PXA55)<br />

cpu(url:IntelCeleromM) cpu(url:EC2CPUCore) cpu(url:EC2CPUCore)<br />

vendor(url:AMD)<br />

CPU<br />

Memory<br />

Storage<br />

DiskImage<br />

memoryCapacity(64MB) numCPUCores(1) memoryCapacity(7000) memoryCapacity(15000)<br />

family("OPTERON")<br />

storageCapacity(32MB) memoryCapacity<br />

numCPUCores(8)<br />

numCPUCores(4)<br />

numCPUCores(xsd:Integer) memoryCapacity storageCapacity imageLocation(xsd:URL)<br />

architecture(url:x86-64)<br />

(200MB)<br />

architecture(url:x86-64) architecture(url:x86-64)<br />

cpuFamily(xsd:String)<br />

(xsd:Integer)<br />

(xsd:Integer)<br />

imageSize(xsd:Integer)<br />

storageCapacity(80GB) storageCapacity<br />

storageCapacity<br />

cpuModel(xsd:String) hasUnit(url:Unit)<br />

1<br />

hasUnit(url:Unit)<br />

1..*<br />

(1690GB)<br />

(1690GB)<br />

cpuStepping(xsd:string)<br />

ioSpeed(xsd:Integer)<br />

<br />

clockFrequency(xsd:Float)<br />

raidLevel(xsd:Integer)<br />

QuadNehalem24<br />

numVolumes 1..*<br />

1..*<br />

<br />

(xsd:Integer)<br />

XSMCE<br />

clockFrequency(2.4)<br />

<br />

vendor(url:Intel)<br />

vmm(url:None)<br />

EC2M1Large<br />

Note: this goes to storage ontology<br />

family("Xeon")<br />

cpu(url:ATmega128L)<br />

<br />

Note: for systems including heterogeneous cores<br />

vmm<br />

vmm(url:Xen)<br />

cpuModel("Nehalem")<br />

you can add several CPUInfo instances<br />

memoryCapacity(4kB)<br />

ClassifiedComputeElement<br />

storage<br />

diskImage<br />

cpu(url:EC2CPUCore)<br />

architecture(url:x86-64)<br />

describing different CPU pools<br />

cpu<br />

memory<br />

storageCapacity(512kB)<br />

memoryCapacity(7500)<br />

numCPUCores(4)<br />

numCPUCores(2)<br />

<br />

architecture(url:x86-64)<br />

<br />

<br />

virtualize<br />

storageCapacity(850GB)<br />

computeElementType<br />

TelosBCE<br />

Xeon3<br />

ATmega128L<br />

0..1 0..1 0..1<br />

vmm(url:None)<br />

<br />

<br />

clockFrequency(3.0) clockFrequency(0.016)<br />

1..*<br />

cpu(url:MSP430)<br />

NetworkElement<br />

ComputeElement<br />

<br />

<br />

vendor(url:Intel)<br />

vendor(url:Atmel)<br />

memoryCapacity(10kB)<br />

<br />

EC2M1Small<br />

0..1<br />

EC2C1Medium<br />

family("Xeon")<br />

architecture<br />

memoryCapacity(xsd:Integer)<br />

storageCapacity<br />

PlanetLabCE<br />

architecture(url:x86-64) (url:AtmelAVR8)<br />

numSockets(xsd:Integer)<br />

(1000kB)<br />

vmm(url:Xen)<br />

vmm(url:Xen)<br />

vmm(url:VServer)<br />

numCPUCores(1) numCPUCores(1)<br />

storageCapacity(xsd:Integer)<br />

cpu(url:EC2CPUCore) cpu(url:EC2CPUCore)<br />

imageLocation(xsd:URL)<br />

memoryCapacity(1700)<br />

<br />

memoryCapacity(1700)<br />

numCPUCores(1)<br />

IMoteCE<br />

numCPUCores(2)<br />

architecture(url:x86)<br />

architecture(x86)<br />

Note: Individuals of these classes can describe resources of an AM.<br />

vmm(url:None)<br />

storageCapacity(160GB) storageCapacity(350GB)<br />

'virtualize' property is a kind of adaptation.<br />

<br />

<br />

cpu(url:PXA271)<br />

ServerCloud<br />

Testbed<br />

memoryCapacity(256kB)<br />

storageCapacity(32MB)<br />

Note: need to make these types/individuals<br />

<br />

StarGate<br />

<br />

EucaM1Large<br />

vmm(url:Xen) or vmm<br />

(KVM)<br />

cpu(url:EC2CPUCore)<br />

memoryCapacity(512)<br />

numCPUCores(2)<br />

architecture(url:x86-64)<br />

storageCapacity(10GB)<br />

<br />

EucaC1Medium<br />

vmm(url:Xen) or vmm<br />

(KVM)<br />

cpu(url:EC2CPUCore)<br />

memoryCapacity(256)<br />

numCPUCores(1)<br />

architecture(url:x86-64)<br />

storageCapacity(5GB)<br />

<br />

EucaM1Small<br />

vmm(url:Xen) or vmm<br />

(KVM)<br />

cpu(url:EC2CPUCore)<br />

memoryCapacity(128)<br />

numCPUCores(1)<br />

architecture(url:x86-64)<br />

storageCapacity(2GB)<br />

<br />

EucaM1XLarge<br />

vmm(url:Xen) or vmm<br />

(KVM)<br />

cpu(url:EC2CPUCore)<br />

memoryCapacity(1024)<br />

numCPUCores(2)<br />

architecture(url:x86-64)<br />

storageCapacity(20GB)<br />

<br />

EucaC1XLarge<br />

vmm(url:Xen) or vmm<br />

(KVM)<br />

cpu(url:EC2CPUCore)<br />

memoryCapacity(2048)<br />

numCPUCores(4)<br />

architecture(url:x86-64)<br />

storageCapacity(20GB)<br />

<br />

CoreLabCluster<br />

virtualize<br />

(url:CoreLabNode)<br />

<br />

EucalyptusCluster<br />

virtualize<br />

(url:EucaM1Small) or<br />

virtualize<br />

(url:EucaC1Medium) or<br />

virtualize<br />

(url:EucaC1XLarge) or<br />

virtualize<br />

(url:EucaM1Large) or<br />

virtualize<br />

(url:EucaM1XLarge)<br />

<br />

PlanetlabCluster<br />

virtualize<br />

(url:PlanetLabNode)<br />

<br />

ProtogeniCluster<br />

virtualize<br />

(url:ProtoGeniNode)<br />

Note: More info needed<br />

<br />

ORBITTestbed<br />

virtualize(???)<br />

<br />

KanseiGenieTestbed<br />

virtualize(url:MicaNode)<br />

or virtualize<br />

(url:TelosBNode) or<br />

virtualize(url:IMoteNode)<br />

<br />

ProtoGeniCE-d710<br />

vmm(url:None) or vmm<br />

(url:OpenVZ) or vmm(url:KVM)<br />

cpu(url:QuadNehalem24)<br />

memory storage<br />

<br />

d710Storage<br />

type(url:Storage)<br />

storageVolume(url:SATA250G)<br />

numVolumes(2)<br />

<br />

ProtoGeniCE-pc3000<br />

vmm(url:None) or vmm<br />

(url:OpenVZ) or vmm(url:KVM)<br />

cpu(url:Xeon3)<br />

memory<br />

storage<br />

<br />

pc3000Storage<br />

type(url:Storage)<br />

storageVolume(url:SCSI146G)<br />

numVolumes(2)<br />

<br />

ProtoGeniCE-pc850<br />

vmm(url:None) or vmm<br />

(url:OpenVZ) or vmm(url:KVM)<br />

cpu(url:Pentium3)<br />

memory<br />

storage<br />

<br />

pc850Storage<br />

type(url:Storage)<br />

storageVolume(url:IDE40G)<br />

numVolumes(1)<br />

<br />

CoreLabCE<br />

vmm(url:KVM)<br />

<br />

d710Memory<br />

type(url:Memory)<br />

ramType(url:DDR2-1066)<br />

memoryCapacity(12GB)<br />

<br />

pc3000Memory<br />

type(url:Memory)<br />

ramType(url:DDR2-400)<br />

memoryCapacity(2GB)<br />

<br />

pc850Memory<br />

type(url:Memory)<br />

Presentation title goes here" 14!<br />

ramType(url:PC133-SDRAM)<br />

memoryCapacity(512MB)


Request and Embedding!<br />

– Request Type"<br />

• Bound vs. Unbound"<br />

• Single cloud site vs. multiple cloud sites"<br />

– Connection:"<br />

– Virtual Topology:"<br />

– Virtual cluster:Node group and dependency: Master/Slave groups, "<br />

– Properties:"<br />

• Reservation ID"<br />

• Reservation term: time.owl"<br />

• VM type: EC2Small"<br />

– Predefined (CPU, Memory, Disk)"<br />

• IP addresses"<br />

– Range per Node Group "<br />

• VM Image"<br />

– Image URL (XML metafile e.g. ImageProxy or OVF)"<br />

• Post-boot NEuca script"<br />

• Network QoS"<br />

– Bandwidth"<br />

– Embedding Policy!<br />

• Path computing!<br />

• Topology embedding!<br />

• Cluster and topology partitioning and embedding!<br />

" ""


ORCA Architecture and Information Life<br />

Cycle!<br />

"#$%&'(%)*!<br />

+,)*&,-!.,,-/!!!!!<br />

9%:5%/*!<br />

9;


Outline!<br />

• ORCA Architecture"<br />

– Distributed actors and lease-based operation"<br />

– Substrate components and interfaces"<br />

– Substrate Stitching"<br />

– Semantic resource representations"<br />

• Semantic graph !<br />

• Substrate: NDL-OWL, Cloud!<br />

• Domain: Abstraction!<br />

• Request: Cluster, connection, topology!<br />

• Interoperability"<br />

– Connectivity"<br />

– Resource description translations"<br />

– User Interface: Web, XMLRPC API"<br />

• Scientific Application Support"<br />

– Wide area Hadoop based applications"<br />

– Workflows"<br />

17!


ProtoGENI Interoperability!<br />

• Resource description conversion"<br />

– From NS2/RSpec v1/v2 to NDL-OWL requests"<br />

– http://geni-test.renci.org:11080/ndl-conversion/convert.jsp"<br />

• GENI AM API and ProtoGENI API support via<br />

ORCA XMLRPC controller in the SM"<br />

– Validated via GPOs ʻomniʼ"<br />

– ListResource(),createSliver(),sliverStatus(),deleteSliver()"<br />

• Next steps"<br />

– Advertizing ORCA clouds to ProtoGENI"<br />

– Creating ProtoGENI-friendly manifests"<br />

18!


Cluster-D connectivity!<br />

19!


Ongoing inter-cluster connectivity,<br />

interoperability, and application integration!<br />

• GENI AM API and ProtoGENI API support via<br />

ORCA XMLRPC controller in the SM. "<br />

• Developing I2 ION, and OSCAR interfaces"<br />

• Connectivity to ESNet"<br />

• Monitoring integration"<br />

• Hadoop based analytics"<br />

• Scientific workflow"<br />

20!


Use case 1: Wide area Hadoop based<br />

scientific applications over clouds!<br />

• Map-reduce is an example of a step within a<br />

complex scientific workflow."<br />

• Hadoop VM image, script to launch Hadoop<br />

cluster on Neuca/EC2 clouds."<br />

• ORCA controller to provision a Hadoop cluster<br />

on multiple Neuca/EC2 clouds interconnected<br />

by multi-domain high speed network."<br />

• Performance study with different distributions of<br />

Hadoop nodes."<br />

• Application: Hadoop-Blast."<br />

21!


Use case 2: Scientific Workflow!<br />

• Multi-scale chemistry simulation pipeline (UNC<br />

– EFRC, DOE)"<br />

• MotifNetwork (an NSF CDI-II project)"<br />

• Integrated Microbial Genomes or IMG(DOE<br />

environmental genomics) "<br />

• Nearby Supernova Factory or SNfactory (DOE<br />

cosmological physics),"<br />

• Workflow for Collaborative Adaptive Sensing of<br />

the Atmosphere or CASA (an NSF ERC)."<br />

Presentation title goes here" 22!


More Information!<br />

• http://geni-orca.renci.org"<br />

• http://www.networkedclouds.org"<br />

Presentation title goes here" 23!

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!