29
Infopipes Infopipes and the and the Infopipe Stub Infopipe Stub Generator Generator Galen Swint, Calton Pu, Younggyun Galen Swint, Calton Pu, Younggyun Koh, Wenchang Yan Koh, Wenchang Yan

Infopipes and the Infopipe Stub Generator Galen Swint, Calton Pu, Younggyun Koh, Wenchang Yan

Embed Size (px)

DESCRIPTION

Infopipes and the Infopipe Stub Generator Galen Swint, Calton Pu, Younggyun Koh, Wenchang Yan. Overview. The Infosphere project Goals of the ISG Implementation Current results Infopipes and OEP Future Work. The Infosphere Project. Distributed computing with RPC is hard - PowerPoint PPT Presentation

Citation preview

Infopipes Infopipes and theand the

Infopipe Stub Infopipe Stub GeneratorGenerator

Galen Swint, Calton Pu, Galen Swint, Calton Pu, Younggyun Koh, Wenchang YanYounggyun Koh, Wenchang Yan

OverviewOverview

The Infosphere projectThe Infosphere projectGoals of the ISGGoals of the ISG ImplementationImplementationCurrent resultsCurrent results Infopipes and OEPInfopipes and OEPFuture WorkFuture Work

The Infosphere ProjectThe Infosphere Project

Distributed computing with RPC is hardDistributed computing with RPC is hard RPC semantics do not fit streaming RPC semantics do not fit streaming

applicationsapplications Need services to be more composableNeed services to be more composable QoS concernsQoS concerns

• ““expanded” QoSexpanded” QoS• eliminate redundant QoS codingeliminate redundant QoS coding

Enhance portabilityEnhance portability• Same specification can be made for several Same specification can be made for several

different comm. machinesdifferent comm. machines

MotivationMotivation RPCRPC

• Procedure call abstraction hides Procedure call abstraction hides networknetwork

ApplicationApplication must address QoS must address QoS Does not understand application packetsDoes not understand application packets Request/Response is an unnatural fit for Request/Response is an unnatural fit for

streaming media (movies/sound)streaming media (movies/sound)

• Composable?Composable?• Basis for CORBA, RMI, Sun RPC, SOAPBasis for CORBA, RMI, Sun RPC, SOAP

We need an We need an information-centric information-centric abstraction that is abstraction that is network awarenetwork aware to to complementcomplement RPC RPC

Goals for ISL/ISGGoals for ISL/ISG

Form the core of an Infopipe toolkitForm the core of an Infopipe toolkit ISLISL

• Simple description for flowsSimple description for flows• Support datatypesSupport datatypes• Support “basic” compositionSupport “basic” composition• QoS requirementsQoS requirements

ISGISG• Generate datatypes, communication stubsGenerate datatypes, communication stubs• Support multiple communication layersSupport multiple communication layers• Support multiple languagesSupport multiple languages

Implementation Implementation ISG becomes part of a ISG becomes part of a processprocess XSLT + C++XSLT + C++ Brand new XIP (Young)Brand new XIP (Young) New comm. added more quickly (but New comm. added more quickly (but

needs more typing!)needs more typing!) XSLT allows easy modularity in XSLT allows easy modularity in

templates (xsl:include)templates (xsl:include) Must re-implement the aspectsMust re-implement the aspects Buzzword compliantBuzzword compliant

Implementation v0.2Implementation v0.2

μ-benchmarksμ-benchmarks

Round trip time (ping-pong)Round trip time (ping-pong)• One number sent and received on separate One number sent and received on separate

simplex channelssimplex channels• 100 experiments of 1000 ping-pongs100 experiments of 1000 ping-pongs

0.1 sec 0.1 sec 1.5 sec 1.5 sec Java RMI Java RMI

0.001 sec 0.001 sec 0.152 sec 0.152 sec TCP socket TCP socket

0.04 sec 0.04 sec 0.35 sec 0.35 sec ECho/Infopipe ECho/Infopipe

Std. Dev. Std. Dev. Mean Time Mean Time

Experiment 1 - UAVExperiment 1 - UAV

UAV demoUAV demo• DoD projectDoD project• EChoECho• Remote camera sends data via wireless Remote camera sends data via wireless

linklink• Demonstrates code uploadingDemonstrates code uploading• ISG generates replacement comm. code ISG generates replacement comm. code

from SIP/XIPfrom SIP/XIP

Experiment 1 - UAV - ResultsExperiment 1 - UAV - Results

InitializationInitialization• 101 runs, discard 101 runs, discard

firstfirst• No statisical No statisical

differencedifference

0.7 ms0.7 ms19.6 ms19.6 msInfopipeInfopipe0.6 ms0.6 ms19.5 ms19.5 msOriginal Original

Std. Dev. Std. Dev. Mean Time Mean Time

Frame transferFrame transfer• 101 runs, discard 101 runs, discard

firstfirst• No statistical No statistical

differencedifference

45 ms45 ms606 ms606 msInfopipeInfopipe33 ms33 ms598 ms598 msOriginal Original

Std. Dev. Std. Dev. Mean Mean Time Time

Same performance with 36% fewer LOC!

ConclusionsConclusions

No performance hitNo performance hit Substantial LOC savingsSubstantial LOC savings Time savings for developmentTime savings for development Potential portabilityPotential portability LOC savings probably varies with AppLOC savings probably varies with App

OEP Integration RecapOEP Integration Recap

Participation in BBN OEPParticipation in BBN OEP• Source-based filters for adaptive constrained Source-based filters for adaptive constrained

resource management in the Multi-UAV demoresource management in the Multi-UAV demo• New filters as Infopipes (compression, New filters as Infopipes (compression,

encryption)encryption)• Better DRE application programs and better Better DRE application programs and better

QoS support (more platforms and dimensions)QoS support (more platforms and dimensions) Infopipe software toolsInfopipe software tools

• Infopipe Stub Generator, program viewer, Infopipe Stub Generator, program viewer, other toolsother tools

• Demo apps (BBN OEP, Boeing OEP, etc)Demo apps (BBN OEP, Boeing OEP, etc)

New Infopipe FunctionalityNew Infopipe Functionality

Three kinds of filters (and more)Three kinds of filters (and more)• Image filters (lower/higher resolution, B&W)Image filters (lower/higher resolution, B&W)• Compression (gzip, lzo, JPEG)Compression (gzip, lzo, JPEG)• Encryption (Rijndael)Encryption (Rijndael)

Two underlying platformsTwo underlying platforms• BSD sockets/TCP and TAO AVStreams/UDPBSD sockets/TCP and TAO AVStreams/UDP• And more: event channels, publish/subscribeAnd more: event channels, publish/subscribe

Automated QoS management Automated QoS management • Adaptation by choosing appropriate Adaptation by choosing appropriate

combination of filters (also controlled combination of filters (also controlled manually at runtime)manually at runtime)

WirelessLink-TCP

Abstract Infopipe ViewAbstract Infopipe View

WebCam

FilterControl

GUI

BBN VideoDistributor

Defragmenter

UDP

Assembler

ATR (PPM)

QuOContract

DVDviewMPEG/PPMPBIO/XML

parserMiddlemethod Stub PBIO/XML

generatorStub

PB

IO/X

ML

pars

er

Mid

dle

meth

od

Stu

bPB

IO/X

ML

genera

tor

Stu

b

SourceFilter

Application

Single Filter ExperimentsSingle Filter Experiments

GUI for Infopipe Specification

Infopipe Spec.Lang. (ISL)

ISL2XIP XIP

XMLparser

Middlemethod

StubXML

generatorStubXML XML

Infopipe StubGenerator

(evolving)

(fixed,extensible)

Multiple-Filter Experiment (1)Multiple-Filter Experiment (1)

Refining the information flow by Refining the information flow by combining Infopipes through connectorscombining Infopipes through connectors

Source

Image Filter Compress Encrypt

DVDviewMPEG/PPM

ATR

Decrypt Decompress

Multiple-Filter Experiment (2)Multiple-Filter Experiment (2)

Self-configured Infopipes (when data Self-configured Infopipes (when data stream is unencrypted, system bypasses stream is unencrypted, system bypasses the decryption stage)the decryption stage)

Source

Image Filter Compress

DVDviewMPEG/PPM

ATR

Decompress

Multiple-Filter Experiment (3)Multiple-Filter Experiment (3)

Adaptive and flexible distribution of Adaptive and flexible distribution of Infopipe stages at runtimeInfopipe stages at runtime

UAV

Image FilterCompress Encrypt

DVDviewMPEG/PPM

ATR

Decrypt Decompress

Intermediate Processing

Source

Distributor

IPC Connector

Connector SpecializationConnector Specialization

Socket ConnectorXML

parserMiddlemethod

StubXML

generatorStub

XMLparser

Middlemethod

StubXML

generatorStub

Function Call Conn. Middlemethod

StubXML

generatorStub

XMLparser

Middlemethod

StubStub

Function Call Conn.

Same machine

Same process/CPU

Different machines

Future WorkFuture Work

Stabilize comm. layersStabilize comm. layers Some basic type checkingSome basic type checking Use aspects for QoS (w/Lenin S.)Use aspects for QoS (w/Lenin S.) Wrap in specialization (w/Young K.)Wrap in specialization (w/Young K.) Use aspects for performance Use aspects for performance

adaptationadaptation

Planned ExperimentsPlanned Experiments Infopipe (filter) development and integrationInfopipe (filter) development and integration

• Development cost/time, variety of filter codeDevelopment cost/time, variety of filter code• Code quantity (ISL/XIP module size), quality Code quantity (ISL/XIP module size), quality

(runtime overhead), portability (variety of (runtime overhead), portability (variety of underlying platforms)underlying platforms)

• Integration into OEP, making QoS work with new Integration into OEP, making QoS work with new filters (measure QoS dimensions below)filters (measure QoS dimensions below)

QoS dimensions and trade-offsQoS dimensions and trade-offs• Performance (e.g., latency, bandwidth, image Performance (e.g., latency, bandwidth, image

resolution)resolution)• Security (e.g., encryption level)Security (e.g., encryption level)• Other platforms in OEP that support QoS Other platforms in OEP that support QoS

CreditsCredits Initial stub generator – MorimoriInitial stub generator – Morimori ECho – Greg Eisenhauer, Karsten SchwanECho – Greg Eisenhauer, Karsten Schwan Java socket template – Younggyun KohJava socket template – Younggyun Koh C socket template – Volkan AltuntasC socket template – Volkan Altuntas Initial QoS – Wei HanInitial QoS – Wei Han Demo harnesses, demo integration – Demo harnesses, demo integration –

Wenchang YanWenchang Yan Initial UAV demo – Fabian Bustamante, Initial UAV demo – Fabian Bustamante,

P@rick WidenerP@rick Widener

XIP ExampleXIP Example

Creating a data typeCreating a data type• From the UAV demo, this holds a frameFrom the UAV demo, this holds a frame

<datatype name="Raw_data">  <arg type="integer" name="tag" />   <arg type="char" name="ppm1" />   <arg type="char" name="ppm2" />   <arg type="integer" name="size" />   <arg type="integer" name="width" />   <arg type="integer" name="height" />   <arg type="integer" name="maxval" />   <arrayArg type="byte" name="buff" size="155000" /> </datatype>

XIP ExampleXIP Example

Creating a filterCreating a filter• From the UAV example, this crops an From the UAV example, this crops an

image to half sizeimage to half size

<filter name="cropImage1Cto2C" uri="cropImage.ecl" inType="Raw_data1C" outType="Raw_data2C" takesParams="1" paramType="Params_rectangle" />

XIP ExampleXIP Example

Declaring a simple, singular pipeDeclaring a simple, singular pipe• From UAV example, the sender and From UAV example, the sender and

receiversreceivers• Note each is only a half-pipeNote each is only a half-pipe

<pipe name="uavSender" absMachine="ECho2">  <outport name="send1" type="Raw_data" /> </pipe>

<pipe name="uavReceiverNormal" absMachine="ECho2">  <inport name="receive1" type="Raw_data" /> </pipe>

XIP ExampleXIP Example Connecting pipes togetherConnecting pipes together

<composedPipe name="multiUAV"> <declarations>  <pipe name="sender" class="uavSender" />   <pipe name="receiver" class="uavReceiverNormal" />   </declarations>  <ports /> <connections> <connection>   <from pipe="sender" port="send1" />   <to pipe="receiver" port="receive1" />   </connection>  </connections></composedPipe>

ISG TemplateISG Template Snippet for current version of ISGSnippet for current version of ISG

• Submit function for sending dataSubmit function for sending data• for-each for-each command generates for multiple outputscommand generates for multiple outputs• ““nodePipeOutConnectnodePipeOutConnect” captures some semantic ” captures some semantic

data about the templatedata about the template

<xsl:for-each select="/xip/pipes/pipe[@name=$thisPipeClass]/outport"><xsl:variable name="portName" select="@name"/><nodePipeOutConnect mark="true">int <xsl:value-of select="$thisPipeName"/>_<connType/>_<xsl:value-of select="$portName"/><connName/>Submit( );</nodePipeOutConnect></xsl:for-each>

Et voila!Et voila!

The code producedThe code produced

//int sender__send1Submit( CarrierStruct * );int sender__send1Submit( );

μ-benchmarksμ-benchmarks Single IntegerSingle Integer

• Loop 100,000 times sending 1 integer (4 bytes)Loop 100,000 times sending 1 integer (4 bytes)

0.003 sec 0.003 sec 0.122 sec 0.122 sec TCP socket TCP socket 0.015 sec 0.015 sec 2.6 sec 2.6 sec ECho/Infopipe ECho/Infopipe Std. Dev. Std. Dev. Mean Time Mean Time

0.003 sec 0.003 sec 3.393 sec 3.393 sec TCP socket TCP socket 0.004 sec 0.004 sec 3.463 sec 3.463 sec ECho/Infopipe ECho/Infopipe Std. Dev. Std. Dev. Mean Time Mean Time

1000 Integers1000 Integers• Loop 10,000 times sending 1,000 integers Loop 10,000 times sending 1,000 integers

(4000 bytes)(4000 bytes)