Thesis Proposal Hierarchically-Synthesized Network Servicespach/proposal.pdf · Thesis Proposal...

32
Thesis Proposal Hierarchically-Synthesized Network Services An-Cheng Huang Computer Science Department Carnegie Mellon University [email protected] Abstract Most existing network services are vertically-integrated by service providers and provided to users. Such an approach is inflexible because it is difficult to customize a service to satisfy each user’s unique requirements, and the resulting services are often limited in certain operational environments due to decisions made at the design/implementation stage. We propose a hierarchically-synthesized service model: a synthesizer dynamically composes a ser- vice instance at runtime according to each user’s specific requirements and the runtime network charac- teristics. A service provider only needs to implement the service-specific part of the synthesizer since the generic supporting infrastructure can be shared by all providers. In addition, services can be composed hierarchically using lower-level components. Therefore, service development and deployment cost can be greatly reduced, and the resulting services can be more efficient and deliver better user-perceived quality because the runtime conditions are taken into considerations. We have implemented two proto- type services and performed preliminary evaluation of the development cost, synthesizer performance, and quality of composed services through implementation experiences and experiments. The proposed work includes two parts, which are outlined in this proposal. First, we will design and implement a generic synthesizer architecture that allows service providers to specify their service- specific knowledge using a generic representation. Secondly, we will develop optimization techniques used by a synthesizer to produce better composed services, optimize component binding, and adapt composed service instances to runtime environment changes. 1 Introduction The use of network applications has evolved from academic/research activities to part of everyone’s every- day life. More and more people are using web browsers, FTP, video conferencing, instant messaging, file sharing, on-line gaming, and so on. From users’ perspective, they use these network applications to access services offered by service providers through the network. For example, when a user uses a web browser to access a web site, she is accessing a service provided by the entity that creates the contents and sets up the web server. A Napster [32] client can be used to access the service provided by Napster, who implements the applications and sets up the Napster servers. In a departmental network, the network administrator can 1

Transcript of Thesis Proposal Hierarchically-Synthesized Network Servicespach/proposal.pdf · Thesis Proposal...

Thesis Proposal

Hierarchically-Synthesized Network Services

An-Cheng Huang

Computer Science Department

Carnegie Mellon University

[email protected]

Abstract

Most existing network services are vertically-integrated by service providers and provided to users.

Such an approach is inflexible because it is difficult to customize a service to satisfy each user’s unique

requirements, and the resulting services are often limited in certain operational environments due to

decisions made at the design/implementation stage.

We propose a hierarchically-synthesized service model: a synthesizer dynamically composes a ser-

vice instance at runtime according to each user’s specific requirements and the runtime network charac-

teristics. A service provider only needs to implement the service-specific part of the synthesizer since the

generic supporting infrastructure can be shared by all providers. In addition, services can be composed

hierarchically using lower-level components. Therefore, service development and deployment cost can

be greatly reduced, and the resulting services can be more efficient and deliver better user-perceived

quality because the runtime conditions are taken into considerations. We have implemented two proto-

type services and performed preliminary evaluation of the development cost, synthesizer performance,

and quality of composed services through implementation experiences and experiments.

The proposed work includes two parts, which are outlined in this proposal. First, we will design

and implement a generic synthesizer architecture that allows service providers to specify their service-

specific knowledge using a generic representation. Secondly, we will develop optimization techniques

used by a synthesizer to produce better composed services, optimize component binding, and adapt

composed service instances to runtime environment changes.

1 Introduction

The use of network applications has evolved from academic/research activities to part of everyone’s every-

day life. More and more people are using web browsers, FTP, video conferencing, instant messaging, file

sharing, on-line gaming, and so on. From users’ perspective, they use these network applications to access

services offered by service providers through the network. For example, when a user uses a web browser to

access a web site, she is accessing a service provided by the entity that creates the contents and sets up the

web server. A Napster [32] client can be used to access the service provided by Napster, who implements

the applications and sets up the Napster servers. In a departmental network, the network administrator can

1

provide the video conferencing service by setting up an H.323 Multipoint Control Unit (MCU) [23] in the

network so that three or more users can hold a video conference using H.323-compliant video conferencing

applications such as Microsoft NetMeeting [33].

From the above examples, we can see that most existing services are vertically-integrated, i.e., a service

provider needs to determine what functionalities it wants to provide, implement and/or integrate all the nec-

essary software components, and install and/or setup all the necessary hardware components (computation

servers, network bandwidth, etc.). Most importantly, all this work is done before the service can start serving

the first user. For example, Napster decides it wants to provide a central server-based music sharing service,

so it implements the client and server applications, sets up the servers with sufficient network bandwidth,

and starts serving customers. In the video conferencing example above, the network administrator finds an

existing MCU software package, sets up a server that runs the MCU, makes sure that NetMeeting is in-

stalled on everyone’s machine, and then announces the availability of the service. This vertically-integrated

approach has a number of limitations:

• Lack of customizability: since the service provider designs and implements the service, the service

may not be exactly what the users want. However, it is not straightforward to customize a vertically-

integrated service to fit a user’s needs. There are three main reasons. First, it is common that a service

provider implements all functionalities of its service within a monolithic application. As a result,

customizing a service means modifying the application, which is not an easy task. Secondly, even if

(for example) a user’s special needs can be satisfied by adding a new component, such customization

would require the service provider to change the configuration of the service, which is not much

different from going through the whole process of designing, implementing, and deploying a new

service. Third, although a service provider may improve its service based on users’ feedback, finer-

grained customization (such as customizing a video conferencing service by adding a movie provider

requested by the participants in a particular session) is not practical in a vertically-integrated service.

• High development/deployment costs: providers of vertically-integrated services usually do not de-

sign and implement their services with reusability or interoperability in mind (in fact, services are

often provided using proprietary solutions, for example, a video conferencing solution that consists of

equipment/software from a single vendor). As a result, few services are reusable (i.e., few can be used

to compose a richer service). For example, although the widely-used FTP clients/servers already pro-

vide the file transfer functionality, some video conferencing applications still has built-in file transfer.

The development cost can be reduced if such functionalities can be added by simply using existing

services. Furthermore, the deployment cost is also high because a service provider needs to deploy all

the hardware/software components before serving users, and the configuration needs to be maintained

even when no users are using the service.

• Restrictive operational environment: in the vertically-integrated approach, since service providers

and/or developers do not know the runtime network characteristics, they need to make certain re-

strictive assumptions about the runtime environment. For example, a video conferencing application

developer does not know whether all users will be in multicast-capable networks, so she has to design

2

and implement a unicast-only video conferencing application. A game hosting service provider does

not know whether all users will have broadband access, so he has to optimize the service for users

with 56K modem access. Such an approach may work fine for simple services. However, as as ser-

vices become more and more sophisticated, their performance or feasibility will greatly depend on

many network characteristics. The worst-case assumptions usually made in the vertically-integrated

approach can severely limit the operational environment of a service.

In this thesis proposal, we propose a fundamentally different approach to developing and deploying

network services. A service provider translates its service-specific knowledge into a generic representa-

tion called service recipe, which describes how to compose a service instance given the requirements of a

particular user and the runtime network characteristics. Service composition is handled by a synthesizer,

and a generic infrastructure provides supporting functionalities such as component discovery and network

measurement. Service instances can be composed hierarchically: a component of a richer service can itself

be a service instance composed by another synthesizer. We will devise a general representation for service

recipes and design and implement a generic synthesizer to translate service recipes into actions to compose,

optimize, and adapt service instances. We will also develop techniques for the synthesizer to perform static,

dynamic, and runtime optimizations.

Our approach addresses the problems associated with the vertically-integrated service model. The de-

velopment and deployment costs are lowered because (1) service providers can share the same infrastructure

that deals with generic issues such as network measurement for location-based server selection, and (2) the

hierarchical model can hide the details of a component from its user (a higher-level service). The separation

of service recipe from synthesizer allows a service provider to provide an innovative service with nothing

but the service-specific knowledge. By delaying the generation of service configuration and the binding

of physical components/resources to the runtime, a synthesizer can compose a service instance that is cus-

tomized and optimized for a particular user according to the user’s requirements and the runtime network

characteristics.

The rest of this thesis proposal is organized as follows. In Section 2, we describe our motivating example,

the video conferencing service, and how service composition can be used to address the limitations of the

traditional vertically-integrated model. We present the architecture of the hierarchically-synthesized model

in Section 3, and the supporting runtime infrastructure is described in Section 4. Our current implementation

and preliminary evaluation results are presented in Sections 5 and 6. The proposed work is discussed in

Section 7, and the expected contributions are summarized in Section 8. Finally, the time table is shown in

Section 9, and the related work is discussed in Section 10.

2 Motivating Example: Video Conferencing Service

In this proposal, we will use the “video conferencing service” as our motivating example. First, let’s look at

how this service can be provided using a vertically-integrated approach.

3

2.1 Vertically-integrated approaches

Here are four examples of how the video conferencing service can be provided today:

• Conferencing facilities: a company that provides the video conferencing service can build video con-

ferencing facilities in a number of large cities and build a dedicated network among these facilities. A

user of this service can schedule a time for the conference, and each participant of the conference can

go to a nearby facility at the scheduled time.

• Conferencing rooms: if a corporation needs the video conferencing service among its offices in differ-

ent cities, a video conferencing service provider can provide a complete video conferencing solution

by building conferencing rooms in the different offices and connecting them together. Such a solu-

tion is often proprietary (i.e., uses software and equipment from the single vendor), and even if it

claims to be standards-based, there are often features that discourage interoperation with other soft-

ware/equipment (e.g., “high quality audio is only available if all participants use our products”).

• NetMeeting: Microsoft NetMeeting [33] is an application for video conferencing based on the H.323

standard [23]. It requires a central server to coordinate conferences with three or more participants,

and it can only handle one video stream at any time and cannot handle multicast. To provide the video

conferencing service based on NetMeeting, the network administrator needs to set up a machine to

run the H.323 MCU or gatekeeper and make sure the NetMeeting applications know where to find the

MCU/gatekeeper.

• vic/SDR: vic [47] is a video conferencing application that uses IP multicast for communication among

participants. SDR [43] is an application for establishing conference sessions using the Session Initi-

ation Protocol (SIP) [20], and after the session is established, SDR invokes vic for the actual video

conference. To hold a video conference using vic/SDR, the network administrator (or one of the par-

ticipants) needs to make sure all participants’ computers are within the same “IP multicast zone”, i.e.,

they can reach each other using IP multicast (e.g., they are all on MBone).

In these approaches, the services are vertically-integrated by the service providers and/or the application

developers, i.e., at the design and implementation phase, the application developers determine what features

are needed and implement them, and the service providers acquire and set up the necessary software and

hardware components in the network. At the runtime, a user accesses the service provided by a service

provider (or the functionalities provided by an application without a service provider, for example, the

vic/SDR case above). As mentioned earlier, such vertically-integrated services are not flexible and have

many limitations. The main reason for the limitations is that most decisions must be made at the design

and implementation phase, i.e., before the runtime when users request for services. In other words, when

designing and implementing the service, the service providers and application developers do not know, for

example, the specific requirements of each user, the network location of all the participants in a session, and

the availability of IP multicast support. Therefore, the resulting services may be inefficient or infeasible for

certain users under certain network conditions.

4

InternetInternet

vic/SD R

IP M

vic/SD R

vic/SD R

vic/SD R

NetMeeting

NetMeeting

handheld(receive-on ly)

Video Gatew ay

HandheldProxy

End SystemMulticast

(ESM)

IP M

X

Y

Z

W

Figure 1: A video conferencing scenario

2.2 Service composition

We propose a hierarchically-synthesized service model: service composition is used at runtime to provide

services that are more flexible and sophisticated than vertically-integrated ones. Let us use the following

video conferencing scenario as an example to illustrate how a service can be composed at runtime (Figure 1):

Suppose Alice, who is at W University, wants to hold a video conference that includes two participants at W

University, two participants at X Corporation, two participants at Y Corporation, and one participant at Z

Airport. The participants at W and X all use the vic/SDR applications, but W and X are not in the same IP

multicast zone (i.e., participants at W cannot reach participants at X using IP multicast). The participants

at Y are using the NetMeeting application, and the participant at Z is using a receive-only handheld device

(which does not do protocol negotiation).

Supporting this scenario is difficult because of the heterogeneity of the systems involved. For example,

different participants are using different video conferencing tools (NetMeeting [33] versus the MBone tools

vic [47] and SDR [43]) that use different protocols (H.323 [23] versus SIP [20]). Similarly at the network

layer, IP multicast is not universally supported, and while application-level multicast alternatives exist, they

are more difficult to set up. For this reason, video conferencing services today typically require users to use

specific software. For example, the service may set up an H.323 server and will require all participants to

use, for example, NetMeeting. Alternatively, it may require that all participants use the MBone tools and

are connected to MBone [30]. Obviously, this solution is not very convenient.

The challenge in supporting this scenario is not that the software does not exist. We will later describe a

prototype service that supports the scenario of Figure 1, and we make use of the following existing software

packages: (1) a SIP/H.323-translation gateway [21], which helps vic/SDR and NetMeeting applications es-

tablish a joint session by translating the protocol negotiations (and also handles the video demultiplexing for

NetMeeting users); (2) End System Multicast (ESM) [8] proxies, which implement multicast functionality

using an overlay over a unicast-only network; and (3) a handheld proxy that performs protocol negotia-

tion on behalf of the handheld device and forwards the video streams, optionally performing transcoding to

reduce bandwidth consumption. We also make use of vic/SDR and NetMeeting clients and IP multicast.

The challenges are instead in putting the existing software together: (1) how can we get these separately-

5

ServiceProvider

User

Computational &Communication resources

Use as component

Request for service

ServiceProvider

NetworkProvider

NetworkProvider

Request forresources

Figure 2: Entities in the service model

developed packages to work together to deliver a higher-level service, (2) how can we manage the deploy-

ment of the components in the infrastructure so that the video conferencing service can be efficient and of

high quality (to the user), and (3) how can we automate the service composition process so user request can

be handled efficiently without manual intervention.

Our hierarchically-synthesized services model directly addresses these challenges. Existing packages

are configured as services that can be invoked by higher level services. At runtime, an entity called synthe-

sizer automatically compose a customized service instance for each user’s request using these reusable and

interoperable service components. Specifically, the synthesizer would handle Alice’s request of Figure 1 in

the following way. A handheld proxy is installed for the participant at Z and a video translation gateway is

installed to bridge the different conferencing clients. An ESM session is established for the participants at

W and X and also for the video gateway and the handheld proxy. The ESM session uses a set of proxies,

including a proxy that handles interoperation with IP multicast at site X. The whole process is automatic

and transparent to the user.

3 Architecture

3.1 Network services model

We assume a network service model in which “providers” fall in two classes (Figure 2). Network providers

provide the resources necessary to deliver services, i.e., bandwidth on network links, computing cycles

and memory on network nodes, and possibly specialized devices. Service providers deliver more advanced

services such as distance learning or backup services to end-users. Such services are built by combining

a set of service components and by executing them on a set of resources that is leased from an network

provider. Service components can be implemented internally by the service provider or can be provided by

other service providers.

This model assumes that network services will be developed and delivered in a competitive market.

Service providers get paid by its customers (end-users and higher-level service providers) for the services

they deliver; network providers get revenue from the users of their infrastructure (service providers and

6

possibly end-users). As in any competitive market, all the providers will want to be able to differentiate

their product (resources/services) from that of their competitors’, and they will want to bring services to the

market faster. Note that in practice the distinction between network providers and service providers may not

be that clear. Service providers may own some communication and computational resources, and similarly,

network providers may deliver some higher-level services.

3.2 Service Composition

Hierarchically-synthesized services go through three stages in their lifetime. The first phase is the design

and implementation phase. During this phase, the service provider determines the specification of the ser-

vice, and what components and resources may be needed to meet the different users’ requirements. Some

components may have to be implemented by the service provider, and other components/resources will be

provided by other service providers and network providers. The outcome of this phase is a service recipe

describing, for a specific type of user requests, what components/resources are needed, and how they fit

together.

The second phase is the deployment phase. During this phase, the service provider needs to make sure

that the necessary components and resources will be available at runtime. The service provider may decide

specifically what suppliers will be used for the different components/resources (note that some may have

multiple suppliers), or the service provider can maintain a directory of available suppliers for components

and resources so that such information can be used at execution time for service composition. The service

provider can also arrange a provider that provides a “service discovery” service to provide such information

at execution time.

The third phase is the execution phase. During this phase, customers submit requests to the service

provider, and the synthesizer use the service recipe and information on components and resources avail-

ability to decide how to best satisfy the requests. One of the advantages of the hierarchically-synthesized

approach over the vertically-integrated approach is that more decisions are made at runtime, allowing the

service to be more adaptive and flexible, e.g., adapt to network load and address specific customer require-

ments.

3.3 Synthesizer architecture

The synthesizer performs the following tasks at the runtime. (1) The synthesizer receives the user’s service

request, which specifies the desired service. For example, for the video conferencing service, the user request

will specify the conference participants, the conferencing applications used by the participants, and so on.

(2) The synthesizer generates one or more abstract solutions for the user according to the service provider’s

service recipe. An abstract solution describes one possible combination of components and resources and

how they should be put together so that the user’s requirements can be satisfied. (3) The synthesizer then

needs to “realize” the abstract solutions by finding the actual components in the network, i.e., it “binds” the

each of the abstract components to an actual component in the network. For example, if the abstract solution

specifies “a video transcoder is needed”, then the synthesizer needs to locate a physical machine that is

running the transcoding software. An actual component can be an existing service owned by the service

7

Ingredient:

• Handheld proxy: if some participants use receive-only handheld devices, use a handheld proxy for each of them.

• SIP/H.323-translation gateway

• End system multicast (ESM) service: ask the ESM service to establish an ESM session among the vic/SDR endpoints,

the gateway, and the handheld proxies. (The ESM service returns the data path entry points for those in the ESM session.)

Instruction:

1. Give the gateway the list of NetMeeting endpoints and the list of vic/SDR endpoints and handheld proxies (along with

their data path entry points) so that the gateway can call the endpoints to establish the conference session.

Optimization:

1. Use the generic optimization support

Figure 3: A service recipe for the video conferencing service

provider, a service provided by another service provider, or a newly instantiated service on an available

computation node (possibly provided by a network provider). In addition, there will typically be many

possible realizations of the abstract solutions possible, corresponding to a set of feasible solutions. The

synthesizer has to use some optimization criteria to pick the “best” binding, considering both the service

quality for the user and the efficient use of the infrastructure (cost). (4) Finally, the synthesizer needs

to configure the components to actually start the service instance. How to configure the components is

specified in the service recipe. For example, in the video conferencing service, the synthesizer needs to

instruct the transcoding service to establish connections to appropriate video source and sink.

We can see that the functionalities needed to perform task (3) are fairly generic, for example, a compo-

nent discovery infrastructure can be shared by many synthesizers. Therefore, in our synthesizer architecture,

we implement these generic functionalities as libraries that can be used by different service providers to im-

plement their synthesizers. As a result, service providers can concentrate on developing their service recipes,

which specifies how to perform the service-specific tasks (2) and (4).

3.4 Service recipe

In our current prototype implementation, the service recipe is implemented as the service-specific code in

the synthesizer. A service recipe includes the ingredient part, which generates the abstract solutions (task

2), the instruction part, which configures the components (task 4), and the optional optimization part, in

which the service provider can implement some customized optimization policies if necessary. To illustrate

what a service recipe looks like, Figure 3 sketches (in English) a service recipe for the video conferencing

service (the actual service recipe is the video conferencing synthesizer code). This recipe also illustrates

that a component of a service can in fact be a service provided by another service provider. In this recipe,

the end system multicast (ESM) component is a service provided by an ESM service provider. Therefore,

the ESM service provider will implement an ESM synthesizer using the ESM service recipe in Figure 4, for

example.

Currently, we provide a set of generic optimization mechanisms (described later) in the library for syn-

8

Ingredient:

• ESM proxy: figure out whether the participants are in the same IP multicast zone, and use an ESM proxy for each

participant of the ESM session. (All participants in the same IP multicast zone can share the same proxy.)

Instruction:

1. For each ESM proxy, choose a multicast address and a port which will be used by the ESM proxy to communicate with

its associated participant (or participants in the associated zone). This is the data path entry point for the participant(s).

2. Set up the ESM session among the proxies.

3. Return the list of data path entry points to the entity that requests for this ESM session.

Optimization:

1. Use the generic optimization support

Figure 4: A service recipe for the end system multicast (ESM) service

thesizers so that the service providers do not have to implement service-specific optimizations if the generic

ones are sufficient (for example, the two example above both use the generic ones). We will talk about

optimizations later in Section 4.3.2.

4 Runtime Infrastructure

In this section we look in more detail at the runtime infrastructure needed for hierarchically-synthesized

services. Specifically we look at components, resources, and the synthesizer. We will use a prototype

implementation of the video conferencing service as the basis for our discussion. The low-level details of

the implementation will be described in Section 5.1.

4.1 Components

So far we have described service composition under the assumption that the components in our service

architecture are reusable and interoperable. That is, the synthesizer must be able to find the necessary

components and put them together to construct the service instance. To achieve this, we need to solve two

subproblems. First, we need a service discovery mechanism so that the synthesizer can find the components.

Secondly, in order to use a component, the synthesizer must know the interface of the component (i.e., how

to access its functionality).

There are many proposed solutions to the service discovery problem. For example, the Service Location

Protocol (SLP) [19] is a directory-based approach, and extensions are proposed to handle wide-area scenar-

ios. Other examples include the Java-based Jini [24], hierarchical-hashing based SDS [10], and so on. In

our current prototype implementation, we use a simple directory approach based on SLP. We use a central

directory to store the information (e.g., locations, properties, etc.) of all available services. When a syn-

thesizer needs a certain component, it sends a query to the directory, which returns information of available

services that match the query. The synthesizer can then use one of the available services as a component.

This solution assumes that the naming of services is standardized, and it also assumes that the query lan-

9

guage is rich enough for the synthesizer to express the properties of the needed component. Our experience

is that SLP’s query format is sufficient. Let us look at one example from the video conferencing service

implementation. The handheld proxy has a standardized service name “handheld-proxy”, and also has

a property “out-codec”, which indicates its output video codec. When the synthesizer needs to find a

handheld proxy for a handheld device that can only receive H.261 [22] video streams, it will issue a query

that looks like “servicetype=handheld-proxy AND out-codec=H.261” to the directory.

In addition to the attribute-based service discovery, we extend the SLP to take the network location into

consideration using the GNP [34] service. GNP is a mechanism that computes coordinates for network

nodes using their network locations. After the coordinates are computed, the network distance between two

nodes can be easily computed. We extend the SLP so that when the synthesizer tries to find a component, it

can specify the optimization criteria. For example, in the video conferencing service, there may be multiple

video gateways available, so the synthesizer will want to find one that is “close” to all the NetMeeting clients

(since they only use unicast). Suppose there are two NetMeeting clients A and B, then when asking the SLP

directory for a video gateway, the synthesizer can specify “clients=A,B” in addition to the service type

and other desired attributes of the video gateway. The SLP directory will first find the candidates (gateways

with the desired attributes) and then use the GNP optimization code to select the candidate that are optimal

for A and B (e.g., having the shortest average distance to A and B). Finally, the directory returns the selected

gateway to the synthesizer.

The second component question has to do with its interface. While many services are developed with a

human user in mind, service components must provide an interface that can be called by other services, or,

specifically, by a synthesizer. We distinguish between the control and data interface. The control interface is

used to, for example, query the capabilities of a component or configure it. In the video conferencing service,

the synthesizer uses an XML over HTTP communication interface to communicate with other components,

and legacy components can be easily modified to use the interface (or a simple wrapper can be used). The

data interface is used to transfer data between components at runtime. For example, the vic conferencing

application sends/receives RTP [42] video streams in certain formats at a specified address and port. The

synthesizer (and the recipe) needs to make sure the data interfaces of the components can fit together. If

not, additional components will be needed, for example, a handheld proxy is needed to transcode the video

format for the handheld device.

4.2 Resources

As mentioned earlier, a synthesizer may need to acquire computational and communication resources to

realize an abstract solution. Computational resources may be needed to start a primitive component that is

not available (i.e., cannot be found through service discovery, or too loaded), and communication resources

may be needed to provide QoS guarantees to satisfy the user’s requirements. The issues are again (1) how to

discover the resources and (2) how to acquire them. So far we have only integrated computational resources

into our service composition.

The allocation of computational resources is done through a proxy provider service, which is a provider

that owns a number of computation servers (proxies) in the network. The synthesizer can ask the proxy

10

vic/SD R

vic/SD R

vic/SD R

vic/SD R

NetMeeting

NetMeeting

handheld(receive-on ly)

VideoGateway

HandheldProxy

End SystemMulticast

(ESM)

X

Y

Z

W

Figure 5: An abstract solution for the video conferencing scenario in Figure 1

provider to provide an appropriate proxy, the proxy provider will select a proxy for the synthesizer (poten-

tially based on the “location” and load), and then the synthesizer can start a primitive component on the

proxy. In our prototype, the proxy provider maintains a directory similar to the one described above for

component discovery. To start a component on a proxy, the code for the component can be downloaded to

the proxy and started in an on-demand fashion. Again, the discovery service is integrated with the GNP

optimization code so that the synthesizer can specify optimization criteria based on network location (see

Section 4.1).

4.3 Synthesizer

To construct service instances for user requests, the synthesizer performs service composition, which in-

volves three tasks: generating abstract solution, component binding, and configuring the components and

resources.

4.3.1 Generating abstract solution

An abstract solution is the blueprint of a particular service instance. It describes the specific components

needed to create the service instance and how to connect them together. For example, Figure 5 shows an

abstract solution generated by a video conferencing synthesizer for the scenario in Section 1. Basically, a

handheld proxy is needed for the participant at Z, a gateway is also needed, and the ESM service is needed

to connect the participants at W, the participants at X, the handheld proxy, and the gateway. As described

above, the ESM service is provided by another service provider, so the video conferencing synthesizer will

send a request (which lists the participants of the requested ESM session) to the ESM synthesizer. As a

result, the ESM synthesizer will need to generate an abstract solution for the ESM session requested by the

video conferencing service. This abstract solution is shown in Figure 6, which says that one ESM proxy

is needed for the participants at W, one is needed for the participants at X, one is needed for the handheld

proxy, and another is needed for the gateway.

In fact, as we can see from the previous section, the ingredient part of the service recipe describes how

to generate the abstract solution for a particular user request. After the synthesizer generates an abstract

11

vic/SD R

vic/SD R

vic/SD R

vic/SD R VideoGateway

HandheldProxy

X

W

ESMProxy

ESMProxy

ESMProxy

ESMProxy

Figure 6: An abstract solution for the ESM session requested by the video conferencing service

solution, the synthesizer needs to perform component binding, i.e., finding the components needed to realize

the abstract solution.

4.3.2 Component binding

There are two types of component in an abstract solution: primitive and complex. A primitive component

provides its functionality in a self-contained fashion and does not require further service composition. In

other words, it is usually a piece of software running on a piece of hardware and provides an interface

so that others can access its functionality. In contrast, a complex component is itself an instance of a

service provided by another service provider (i.e., the component is a service instance composed by another

synthesizer). In the video conferencing service example, the gateway and the handheld proxy are primitive

components, while the ESM service is a complex component.

In order to realize the abstract solution (to construct the service instance), each component in the abstract

solution needs to be “mapped” to an “actual component” in the network. Figure 7 shows the component

binding in the video conferencing example. For each primitive component (in this case the gateway and

the handheld proxy), the synthesizer needs to find a piece of hardware running a piece of software that

provides the functionality of the component. The ESM service is a complex service composed by an ESM

synthesizer, so the ESM synthesizer needs to perform its own component binding (the ESM proxies) as

shown in the figure. As mentioned earlier, if a component cannot be found, a synthesizer can also locate an

appropriate computation server (proxy) through a proxy provider service and then start the component on

the proxy dynamically.

Optimization

As mentioned earlier, there may be more than one way to realize the abstract solution. Therefore, the

synthesizer needs some criteria to optimize the constructed service instance. As described in Sections 4.1

and 4.2, we currently provided a set of generic optimization mechanisms that allow the synthesizer to spec-

ify a set of clients and get a component (or computation server) that is “optimal” (in terms of network

12

VideoGateway

HandheldProxy

ESM

ESMProxy

ESMProxy

ESMProxy

ESMProxy

Bound tophysical node

Abstractsolution

Figure 7: Component binding in the video conferencing example

location) for those clients. For example, in the video conferencing service, the synthesizer can try to find a

video gateway that is close to the NetMeeting clients, a handheld proxy that is close to a handheld client,

and so on. There are a number of directions we are currently exploring in this area. We are investigating

more sophisticated optimization criteria, for example, an objective function involving both network location

and monetary cost of a component/resource. In addition, the synthesizer currently only performs “local

optimization” (optimizing each component separately), not global optimization. We want to explore the

trade-off between the optimality of the solution and the scalability of the optimization mechanism. Previ-

ously, the Xena [6] resource broker in the Darwin project [5] utilizes linear programming to optimize the

resource allocation. Similar approaches may be useful in the context of service composition. Finally, some

services may have their own very specific optimization policies, in which case a set of generic optimization

mechanisms will not be sufficient. We are looking at the possibilities of allowing service providers to cus-

tomize the optimization mechanisms used at runtime or even specify their own service-specific optimization

schemes.

Hierarchical service composition

The component binding process described above also brings out another key property of our service

framework: hierarchical service composition. That is, a synthesizer composes a service instance using the

components specified in the recipe. Each of these first-level (highest-level) components may be a complex

component and can be composed by a second-level synthesizer using second-level components, and so

on. We believe such a hierarchical structure is important because it allows a service provider to hide its

service-specific knowledge and thus allows a higher-level user (which may be another service provider) to

use the service without knowing the implementation details. For example, in the video conferencing service

example, the video conferencing synthesizer does not need to know how to establish an ESM session since it

13

can simply ask the lower-level ESM synthesizer for the service. Therefore, hierarchical service composition

allows greater flexibility and enables each service provider to “do one thing and do it well”.

4.3.3 Configure the components

After the component binding step, the components specified in the abstract solution have all been acquired.

Therefore, the final step in service composition is to configure these components to actually construct the

service instance for the user. As we can see from the service recipes in Figures 3 and 4, the “instruction”

part of a service recipe specifies how to configure the components. For example, the ESM synthesizer needs

to chooses a multicast address and a port for each of the four ESM proxies, sets up the ESM session among

the proxies (by giving them the addresses, ports, other members, etc.), and returns the list of data path

entry points to the video conferencing synthesizer. Then the video conferencing synthesizer executes its

instruction: constructing a request that includes a list of all participants and sends the request to the video

gateway. At this point, the service composition is completed, and the gateway invites the participants to start

the conferencing session.

5 Current Implementation

Now we describe two services we have implemented using the hierarchically-synthesized service model.

5.1 Video conferencing service

Most aspects of the video conferencing service implementation has been described in earlier sections. We

set up a web page as the front-end, and a user can request for a video conferencing session by filling the

form on the web page (entering the participants and the application/platform they use). The front-end then

forwards the list to the video conferencing synthesizer, which composes the customized service instance.

We use the XML library libxml2 [28] and a minimal implementation of the HTTP protocol to implement

an XML over HTTP libraries for communication between components. Our service discovery mechanism

is based on the SLP implementation from the OpenSLP project [37], and it is integrated with the GNP net-

work measurement service. For computational resources we utilize nodes on the Active Network Backbone

(ABone) [1], so primitive components can be started on-demand using an active network approach. The

major service components include the following: (1) the translation gateway [21] is implemented using li-

braries from the OpenH323 project [36], (2) the handheld device is an iPAQ device running the Familiar

Linux distribution [12], and the application for the device is a modified version of vic, (3) the handheld

proxy utilizes a modified version of SDR to perform protocol negotiation and borrows the video codecs

from vic for transcoding, and (4) for End System Multicast (ESM) we use Narada ESM proxies [8].

5.2 Simulated multiplayer gaming service

The second service we implemented is a “simulated” multiplayer gaming service. We focus on one specific

model of multiplayer game: multiple players (clients) join a gaming session hosted by a server, and each

14

Lines

VConf. synthesizer 482

ESM synthesizer 359

Supporting infrastructure 3659

(a) Code size comparison

Avg. (ms) Std. dev.

Client clock time 21959 439.65

VConf. synth. utime 730 126.96

VConf. synth. stime 260 54.95

ESM synth. utime 949 135.77

ESM synth. stime 324 56.87

(b) Performance of the synthesizers

Table 1: Evaluation results for the video conferencing service

client sends its actions (mouse click, position, keyboard, etc.) to the server, which processes the actions

and forwards the results to the appropriate clients. A multiplayer gaming service lets players meet online,

and when a group of players decide to start a gaming session, the gaming service provides a server to host

the session. Currently, such a service is provided using a centralized approach, (for example, Blizzard’s

Battle.net service [4]). That is, players go to a central server (or a cluster of servers) that hosts gaming

sessions. Such an approach has three major drawbacks: it is expensive to set up a dedicated cluster and a

dedicated link to the cluster, the location of the server hosting a gaming session may not be good in terms of

the network distances to the players in the session, and adding more servers to the cluster can only improve

the player-perceived performance to a certain point, since the link connecting the cluster will eventually

become the bottleneck.

In our service model, when a group of players decide to start a gaming session, a “multiplayer gaming

synthesizer” (similar to the synthesizers presented earlier) will compose a customized service instance for

the participating players. Although in the current implementation the synthesizer only needs to locate an

appropriate proxy to host the session, the service provider can easily add more functionalities (such as

multicast support based on user/network multicast capability for more efficient communications, etc.) to

the service recipe and provider a richer service, which is not easily done in a vertically-integrated approach

described above. Our current implementation of the multiplayer gaming service is “simulated”, i.e., we do

not actually use any real games. Instead, we use a simulated game client, which periodically (e.g., every

100 milliseconds) sends small UDP packets to the game server, and the game server forwards the packets to

the other participants. The client and server code can be loaded dynamically to ABone [1] nodes using an

active network approach.

6 Preliminary Evaluation

In this section, we use the video conference and game services to evaluate both the development effort and

performance of hierarchically-synthesized services.

15

6.1 Video conferencing service

Let us first look at the development effort for the video conferencing service. Most of the effort was in

developing the synthesizer since the actual video conferencing functionality was based on existing soft-

ware packages. Within the synthesizer, most of the code is service-specific (i.e., the service recipe) because

the generic functionalities are implemented as libraries. Table 1(a) shows the size of the synthesizer code

(mostly service recipe) and the supporting synthesizer infrastructure in terms of lines of (C++) code (includ-

ing headers). The supporting infrastructure includes an XML over HTTP communication library, an SLP

wrapper that provides a simplified interface, the GNP optimization code, and so on, which is shared by both

synthesizers. (Note that the 3659 lines do not include the XML library libxml2 and the SLP implemen-

tation from the OpenSLP project). We can see that the service-specific part in our implementation is in fact

fairly small, suggesting that the development cost for service providers is low because they can share the

same supporting infrastructure.

Let us next look at the performance of the synthesizer, i.e., how fast it can perform service composition.

We evaluate two aspects of the synthesizer performance: (1) the user-perceived setup latency, i.e., the time

to the start of the video conferencing session, and (2) the throughput of the synthesizer, i.e., how many

service compositions can the synthesizer perform per second. Our experiment consists of a client issuing a

stream of back-to-back requests to the synthesizer. Requests are finished when the video gateway hosting the

requested conferencing session sends the invitation messages to all the participants, because the participants

will see an invitation pop up on their screens. Each request specifies a conferencing session that involves

three vic/SDR participants, one NetMeeting participant, and one handheld participant. The synthesizers run

on a machine with a 400MHz Pentium II CPU and 128MBytes of RAM. All the service components and

supporting infrastructures (e.g., the SLP directory) are running on machines in the same LAN segment, so

the network latency is not significant. We measure the clock time of the client issuing 100 back-to-back

requests, as well as the user time and system time for the video conferencing synthesizer and the ESM

synthesizer processing these 100 requests.

The results (average of 20 runs) can be seen in Table 1(b). We can derive that the average user-perceived

latency for each session is 220 ms. In addition, the video conferencing synthesizer consumes 9.9 ms of CPU

time for processing each request, and the ESM synthesizer consumes 12.73 ms. Therefore, we can derive

that the upper bounds for the throughput of the video conferencing and ESM synthesizers are 101 and 78

sessions per second, respectively.

6.2 Multiplayer gaming service

We use the multiplayer gaming service to evaluate how well a synthesizer-based solution can optimize the

game performance perceived by the users. In the vertically-integrated approach, all gaming sessions are

hosted by the server cluster(s). In our approach, each gaming session is a service instance dynamically

composed and customized for the participants of the session. Therefore, the key issue in our approach is

how the multiplayer gaming synthesizer finds a server (or a proxy to start a new server) to host each gaming

session. In our evaluation, we compare four different server selection schemes: (1) central: all sessions are

hosted by the same server, (2) random: the synthesizer randomly selects one of the available servers, (3)

16

0

100

200

300

400

0 10 20 30 40 50 60 70Number of concurrent sessions

Ave

rag

e la

ten

cy (

ms)

centra l

random

latency

latency+load

Figure 8: Average latency

latency: the server selection is based on the output of the GNP service, i.e., the synthesizer gives the GNP

service a list of candidates and asks it to return the one that is “optimal” for the participants in a session,

and (4) latency+load: this is similar to the latency scheme, except that the synthesizer applies a constraint

on how many sessions a server can host, i.e., if the best server is already hosting many sessions, then the

second best server is examined, and so on.

Our experiments are conducted using 13 nodes on the ABone [1] and two local CMU nodes. We divide

the nodes into a server set (6 nodes) and a client set (9 nodes). Note that these nodes are connected by the

Internet, so our measurements are affected by the presence of random, uncontrolled cross traffic. Also, we

do not have any information on the configuration of the ABone nodes, i.e., CPU, memory, etc.. While we

did some benchmarking to establish a rough estimate of the speed of each ABone node, these results are

also subject to dynamic load conditions. The server set consists of the faster nodes.

For each experiment, we generate a list of sessions, each of which consists of four players randomly

selected from the client set. Then for each session, we use each of the four schemes above to select a server.

Each session participant sends a small UDP packet to the server every 100 ms and the server replicates this

packet to the other players. The server also sends an ack, which is used by the client to measure the latency

perceived by the the client. Our evaluation is based on three metrics that are important in a multiplayer

gaming context: (1) average latency of each session, which is important because it represents the overall

picture of player-perceived performance, (2) maximum latency of each session, which is important because

if one player in a session experiences particularly high latency, it will affect (or at least confuse) other

players, and (3) average packet loss rate in each session, which is important because if too many packets

are lost, the session becomes basically unplayable. We examine the performance of the four schemes under

different load conditions: from 10 concurrent sessions to 60 concurrent sessions. The results of average

latency, maximum latency, and packet loss rate are shown in Figure 8, Figure 9, and Figure 10, respectively.

Each data point represents the average of 60 sessions.

The results show that the central scheme performs very well when the load is not too high (10 to 20

17

0

100

200

300

400

0 10 20 30 40 50 60 70N umber o f concurrent sessions

Ma

xim

um

late

nc

y (m

s)

central

random

latency

la tency+load

Figure 9: Maximum latency

0

0.1

0.2

0.3

0.4

0.5

0 10 20 30 40 50 60 70N umber o f concurrent sessions

Pa

cke

t lo

ss r

ate

central

random

latency

latency+load

Figure 10: Packet loss rate

concurrent sessions), but when the number of concurrent sessions is increased to 30 or higher, the central

scheme performs poorly. Of course, this comparison is not fair because the other schemes can use six

servers, while the centralized scheme has only one server. However, to level the playing field a bit, we chose

as the centralized server a node that is at least a factor of two faster than the other server nodes, according to

our experimental data. The latency results show that the ability to dynamically select a server based on the

location of the players pays off (since the random scheme does not perform as well). The high loss rate for

the centralized approach is probably caused by the fact that the centralized server is more heavily loaded.

Given these results, we wonder why the latency+load scheme does not have any significant performance

advantage over the latency scheme. We speculate that the reason is that the load is not high enough to

affects the selected nodes. Therefore, we decrease the size of the server set to five and increased the load

to 80 concurrent sessions. The following table compares the performance of the latency and latency+load

18

Req. for service A

Servicerecipe A

Composedinstance of A

Composedinstance of B

Req. for service B

Servicerecipe B

GenericSynthesizer

ServiceProvider A

User1

ServiceProvider B

User2

Figure 11: A generic synthesizer performs service composition

schemes (the results are the average of 60 sessions).

latency latency+load

Avg. latency (ms) 158.54 70.62

Max. latency (ms) 214.05 127.68

Packet loss rate 0.0930 0.0085

The results indicate that under such load conditions, the synthesizer can compose better service instances

for the users if it takes the dynamic load into consideration.

The evaluation presented here is not meant to provide a conclusive study of load balancing and server

selection schemes. Instead, the purpose is to demonstrate that in our hierarchically-synthesized service

model, service providers can easily apply different server selection schemes to optimize user service quality

without having to “own” many machines and bandwidth in the network.

7 Proposed Research Directions

This section describes the two key areas of the proposed work. First, we will design and implement a generic

synthesizer architecture. Secondly, we will develop techniques used by a synthesizer for static, dynamic,

and runtime optimizations.

7.1 Toward a generic synthesizer architecture

As described above, in our current prototype each service provider needs to implement its own synthesizer

by combining service-specific code (service recipe) and function calls to our libraries that provide a set of

generic functionalities. The resulting synthesizer is a specialized synthesizer, i.e., it can only be used to

compose instances of the particular service. Our preliminary evaluation results demonstrate that implement-

ing such a specialized synthesizer is fairly straightforward, since most of the work is done by our generic

libraries. However, we can further simplify the service providers’ job by using a generic synthesizer archi-

tecture (Figure 11). When a generic synthesizer is used, all the service provider has to do is to transform

the service-specific knowledge into a service recipe that can be understood by the generic synthesizer (such

19

a service recipe is more abstract than the recipe in our current implementation, which is part of the actual

program code). For example, given a video conferencing service recipe designed by a video conferencing

service provider, a generic synthesizer will be able to compose video conferencing service instances accord-

ing to users’ requests. Similarly, given a multi-player gaming service recipe, the synthesizer can compose

multi-player gaming service instances. Therefore, a generic synthesizer can be implemented by (for exam-

ple) a network provider and can perform service compositions for many different service providers.

We believe the generic synthesizer model has a number of potential advantages:

• Simplify the job of the service provider: The main tasks of a synthesizer are generating the abstract

solution, components/resources binding, and configuring the components/resources. In our current

prototype, a service provider implements its specialized synthesizer by combining service-specific

code (generating abstract solutions and configuring components/resources) and function calls to the

generic libraries (for components/resources binding). In contrast, a generic synthesizer implements

the generic functionalities of the synthesizer and can be shared by many service providers. There-

fore, each service provider can concentrate on designing a good service recipe that describes how to

perform the service-specific tasks.

• Better composition: since the recipe and the synthesizer are separated, the implementor of the syn-

thesizer can focus on how service composition should be done (specifically, how to do compo-

nents/resources binding), which involves a number of issues such as optimization, hierarchical com-

position, etc. Therefore, the resulting synthesizer is likely to do a better job in service composition.

• Supporting infrastructure can be shared: to perform service composition, a synthesizer will need a sup-

porting infrastructure that consists of many elements, for example, service discovery, computational

resources, network measurement/monitoring, etc. Ideally, these elements will be openly-available

so that everyone can use them. However, some of them may be proprietary (for example, network

providers may not want to reveal or make available their network monitoring data or methodology),

and even if they are all available, it may not be straightforward to integrate them into an infrastructure

to support a synthesizer. In the generic synthesizer architecture, the integration is done by the entity

(for example, a network provider) who implements the generic synthesizer. Therefore, the service

providers can utilize the infrastructure simply by using the generic synthesizer.

• Network-specific knowledge: if a service provider has to implement a specialized synthesizer, the

synthesizer may not be able to utilize all available network information in service composition since

the service provider probably does not control, cannot afford, or does not know how to gain access

to network information. In the generic synthesizer architecture, the implementor of the synthesizer

can arrange access to an infrastructure that provides network information (especially if the network

provider implements the synthesizer) and implement the synthesizer so that such explicit network

information can be used by the synthesizer to compose service instances that are more efficient.

In order to utilize the generic synthesizer architecture, one key issue needs to be addressed: how to rep-

resent the service-specific knowledge (i.e., service recipe). This is the key because the recipe representation

20

determines what services can be described, what a service provider needs to do, how a generic synthesizer

can be customized for a service provider, and so on.

Service recipe

To use a generic synthesizer, a service provider needs to transform its service-specific knowledge (i.e.,

how to construct service instances that can satisfy different users’ requests) into a service recipe. Then the

generic synthesizer can use the recipe to construct service instances for users requesting service from the

service provider. There are two issues regarding the service recipe. First, we need to determine what a

service provider might need to specify in a service recipe (i.e., the semantics of service recipes). Since our

goal is to let service providers invent novel services as easily as possible, we do not want the service recipe

to limit the services that can be provided. In other words, the service recipe should be sufficiently general

so that most service providers will be able to describe their conceptual services. Secondly, we also need a

language that can be used to express everything that may appear in the service recipe (i.e., the syntax of

service recipes).

We believe that in a service recipe, a service provider will likely need to specify three types of entities:

• Components: in the ingredient part of the service recipe, the primitive and complex components

needed in the abstract solution are specified. For example, in the video conferencing service recipe

(Figure 3), it needs to specify the handheld proxy, the translation gateway, and the ESM service. This

is closely related to the component discovery mechanism. Currently we use the Service Location

Protocol for discovery; therefore, the components are specified using a standardized service type and

attribute-value pairs. This requires that if we want to use a component, we need to have certain

knowledge about it (e.g., the communication protocol used). Another possible approach is to use a

lower-level and strongly-typed specification that specifies the interface of a component. The potential

benefit is that since it requires less external knowledge about the components, we may be able to

perform certain parts of the service composition process without service-specific knowledge.

• Actions: the service recipe specifies the actions that need to be done to configure the components or

resources (i.e., the instruction part of the recipe). In addition, since the ingredient part describes how

to construct an abstract solution, actions are sometimes needed. For example, in the ESM service

recipe (Figure 4), the ingredient part says in order to construct an abstract solution, the synthesizer

needs to figure out whether the participants are in the same IP multicast zone. There are two possible

approaches for specifying actions. One is to define a set of high-level actions that can be used in a

service recipe, i.e., similar to defining an API. The second approach is to define a scripting language

that can be used by the service provider to write a service recipe. Therefore, the main issue here is

the trade-off between the flexibility a service provider has and the complexity of a generic synthesizer

(e.g., allowing a full-blown scripting language will probably have major security implications).

• Optimization policies: as mentioned earlier, service providers may need to specify how to select a

component if there are several eligible, for example. These policies may include QoS constraints

that must be satisfied, objective functions to be minimized/maximized, or even code that performs

service-specific optimizations. Again, there is a trade-off between flexibility and complexity. Since

optimization is itself a complicated issue, we discuss it in the next section.

21

To devise a representation for service recipes, we will first look at the recipes of the video conferenc-

ing service and the ESM service and explore how they can be separated from the current synthesizers. We

can leverage previous work on architectural description languages (for example, Acme [16]) to describe the

components and how they are inter-connected. Optimization policies may be specified as special architec-

tural constraints. As for actions, a simple scripting language with limited capabilities may be used. If we

want to allow more general optimization policies and actions, we may need to use a “sandbox” approach

with a more general language, for example, Java.

7.2 Optimizing service composition

When composing a service instance for a particular user request, there may be many possible instances that

can satisfy the request. Of course, we want to be able to choose the “best” one using certain optimization

criteria, for example, the cost for the user, the cost for the service provider, resource utilization, runtime

network characteristics, user-perceived service quality, and so on. We have identified three types of opti-

mizations: static (optimizations in the recipe), dynamic (optimizations of components/resources binding),

and runtime (optimizations after service instance is started).

7.2.1 Static optimization

Static optimization is done by the service provider when the service recipe is designed. The service provider

can put rules into the recipe to optimize the composed service instance for a particular user request. For

example, in the ESM service recipe (Figure 4), the service provider tells the synthesizer to figure out whether

the participants are in the same IP multicast zone and use one ESM proxy for each zone (instead of simply

using one proxy for each participant without checking the zones). Since participants in the same zone

can share one ESM proxy, this optimization can reduce the overall cost of the composed service instance

(comparing to an instance that uses one ESM proxy for every participant). Another example is that a video

conferencing service provider can specify (in the service recipe): “if a conference participant is behind a

56K modem, a video transcoder should be used to reduce the bandwidth of the video stream before it reaches

the modem link”.

Since static optimizations are specified in the service recipe, the expressiveness of service recipes de-

termines what types of static optimization are possible. For example, to specify the second optimization

described above, we need to specify conditional commands (“if”), QoS constraint (“below 100Kbps”), com-

ponent (“video transcoder”), location (“before the bottleneck link”), and so on. Therefore, this is closely

related to the service recipe representation problem.

7.2.2 Dynamic optimization

Dynamic optimizations refer to the optimizations that are done in the components/resources binding process,

i.e., when a synthesizer performs components or resources binding, it often needs to select one from a set of

eligible choices. For example, suppose a video conferencing synthesizer is trying to find a handheld proxy

for a handheld device, and it discovers two candidates that use different pricing schemes (e.g., one is seven

22

VideoGateway

ESMProxy

VConfSynthesizer

HandheldProxy

Use as component

(a) Flat

VideoGateway

HandheldProxy

ESMSynthesizer

ESMProxy

VConfSynthesizer

Use as component

(b) Hierarchical

Figure 12: Flat composition vs. hierarchical composition

cents per minute, and the other is twenty minutes for 99 cents). Then the synthesizer can choose one of

them to minimize the cost. Another example is that, suppose a synthesizer is trying to find a path with at

least a certain amount of bandwidth, and there are two eligible paths provided by different ISPs. Then the

synthesizer can choose one based on some optimization criteria (e.g., cost, reliability, etc.).

As described earlier, in our current prototype, the only dynamic optimization performed by the syn-

thesizer is to use the network distance information provided by the GNP network measurement service to

choose the component with the optimal network location (e.g., closest to all participants). Here are three

directions we plan to explore for dynamic optimizations:

• Flat vs. hierarchical composition: as described earlier, one key property of our service framework is

hierarchical service composition, i.e., each of the first-level components may be a complex component

and can be composed by a second-level synthesizer using second-level components, and so on. The

advantage of this is that a service provider can use another service as a component directly without

knowing the details. However, sometimes it may be useful to perform service composition in a “flat”

fashion. For example, in Figure 12, suppose the participants of a video conferencing session use

a number of different video codecs, so transcoders are needed to make everyone be able to see the

video streams of all others. In addition, the participants are not in the same IP multicast zone, so

an ESM session needs to be established among them. With hierarchical composition, the transcoder

placement is done by the first-level synthesizer, while the ESM session is established by a second-

level synthesizer. However, a better solution may be found with a flat composition, i.e., the transcoder

placement and ESM session are considered together, since the optimality of the transcoder placement

may be dependent on where the ESM proxies are placed and how the overlay tree are formed, and

vice versa.

• Iterative composition: with hierarchical service composition, each lower-level synthesizer performs

23

local optimization and then returns its composed service instance to a higher-level synthesizer. There-

fore, the final global solution is essentially a combination of all the locally optimal solutions. Of

course, a combination of locally optimal solutions is not necessarily a globally optimal solution (it

may not even be a feasible solution). Another problem is that optimizations may be expensive, and

the synthesizers may not have the time or resources to find the absolute optimal solution. One poten-

tial solution is to use an iterative approach. For example, suppose a synthesizer needs two complex

components to compose a service instance that has a constraint on end-to-end delay. When the two

second-level synthesizers return their composed service instances, the first-level synthesizer discovers

that the total end-to-end delay (the sum of the two plus the connection between them) exceeds the

constraint. Therefore, another iteration is needed, and this can be repeated until the two returned ser-

vice instances combined can satisfy the delay constraint of the global solution (instead of randomly

searching the solution space, the first-level synthesizer may want to provide guidance to the lower-

level ones so that they they will find solutions that are more likely to result in a better global solution).

Furthermore, if optimizations are expensive, the synthesizers can compute approximate solutions and

iteratively invest more resources for better solutions.

• Customizable optimization: in our current prototype, the components/resources binding is done using

the generic optimization policy provided by our libraries (i.e., use GNP to choose the optimal one).

Of course, some service providers (or even users) may have service-specific requirements and prefer

some special optimization policies. As mentioned earlier, such optimization policies can be specified

in the service recipe. For example, in the video conferencing example, the service provider may

determine that it is better to choose a video gateway that is not only close to the NetMeeting clients

(the default generic optimization) but also has sufficient bandwidth on the paths to those clients. In

this case, the service provider can specify such constraints in the service recipe so that the synthesizer

can perform the optimization accordingly.

There is a spectrum of different ways for specifying optimization policies in a service recipe. One

way is to define a set of QoS constraints that can be used in a recipe to instruct the synthesizer

that the composed service instance must satisfy certain constraints. We can also allow a service

provider to specify an objective function that the synthesizer should try to minimize/maximize. If the

service recipe representation is sufficiently expressive, we can even allow a service provider to write

a procedure that is invoked by the synthesizer to perform service-specific optimizations.

7.2.3 Runtime optimization

After the user starts using the composed service instance (i.e., the runtime), the environment may change.

For example, the network conditions may change (e.g., less available bandwidth), a participant may join,

leave, or become unreachable, and a user’s preferences may change (e.g., now prefer higher quality video).

When the environment changes, what was the optimal solution when the service started may no longer

be optimal, and the perceived performance of the service may degrade. Therefore, we may be able to

maintain better perceived performance if we perform runtime optimizations. One possible approach is to

re-do the dynamic optimization process described above. The problem with this approach is that it may be

24

too disruptive (the new solution may have different topology, different nodes, etc.), and restarting the service

may become necessary, which is not feasible or desirable for many services.

One solution to this problem is to limit runtime optimizations to a set of adaptations that can be per-

formed without restarting the service session. In other words, they should be transparent to the users of the

composed service instance. Such adaptations can be specified in the service recipe, for example, a video

conferencing service provider can specify that “if the available bandwidth for the handheld device becomes

too low, the handheld proxy should reduce the frame rate”. Again, in this case the possible adaptations will

be limited by the expressiveness of the service recipe. If the adaptation is not service-specific, it may be

implemented as part of a generic synthesizer. Furthermore, some components may already have built-in

adaptation mechanisms, so the synthesizer may need to come up with a global adaptation strategy based on

the local adaptations and service-specific adaptations. Note that all these adaptations are “static strategies”,

i.e., a service provider and/or a synthesizer specify the adaptation strategies to the components before run-

time, and the components adapt accordingly at runtime. This leads to another interesting issue: should the

synthesizer be involved in runtime optimizations? There is a trade-off: if the synthesizer is not involved, it

can forget about a service instance after the user starts using the instance; if the synthesizer is involved (e.g.,

synthesizer can change the adaptation strategies at runtime), it may be able to generate a better adaptation

strategy and even recover a service instance if some core components failed.

We will start with application-specific adaptations and look at how a service provider can customize the

adaptation strategies of the components. Then we will define a set of adaptations that are sufficiently generic

so that they can be moved into the synthesizer, i.e., a synthesizer can generate these generic adaptation

strategies without hints from service providers. Finally, we will experiment with the approach in which a

synthesizer keeps track of a composed service instance at runtime, and we will look at what state of a service

instance should be kept by a synthesizer to enable certain adaptation strategies, and when a synthesizer

should execute a certain adaptation strategy.

8 Expected Contributions

We expect two main contributions in this thesis. First, we will develop the synthesizer architecture and

its supporting infrastructure to support the hierarchically-synthesized service model. We expect to show

that this approach can address the limitations of the traditional vertically-integrated service model. By us-

ing reusable components and sharing the generic infrastructure, the service development and deployment

cost can be significantly lowered. Therefore, service providers can deliver more flexible and sophisticated

services to the users more easily. In addition, the users can receive more efficient and higher-quality ser-

vices because the synthesizer takes individual users’ requirements and runtime network characteristics into

considerations when composing services. We will show the advantages of our approach by evaluating a

number of different services and comparing our approach with the traditional approach in terms of costs

(e.g., programming efforts), performance (e.g., user-perceived quality), and so on.

The second contribution is the techniques and algorithms we will devise and evaluate for the service

composition problem. We expect to derive a representation that is sufficiently general for defining service

recipes. We will also develop techniques for generating optimal abstract solutions, evaluate the effects of

25

different service composition approaches on component and resource binding, devise generic and service-

specific optimization algorithms, and investigate adaptation strategies for runtime optimizations. Again,

we will use a number of different services as examples to evaluate the effectiveness of the techniques and

algorithms we developed. We believe the results will be applicable to the general problems involved in

service composition.

9 Work Items and Time Table

So far we have designed and implemented a prototype synthesizer architecture and libraries for the generic

infrastructure. As described earlier, we have also implemented a video conferencing service and a simulated

gaming service and performed some preliminary evaluations. The major parts of my proposed work are

presented below:

• Optimizing service composition: We will implement and evaluate some static optimization strate-

gies. We believe the implementation experience and evaluation result will be useful for designing an

initial recipe representation, as described below. For dynamic optimizations, we will first experiment

with different composition strategies proposed in Section 7.2.2. Then we will investigate different ap-

proaches for service-specific optimizations. Finally, we will explore runtime optimizations, starting

with simple adaptation strategies as described in Section 7.2.3.

• Syntax and semantics of service recipes: Since the expressiveness of service recipes will determine,

for example, what services can be defined and what optimization policies can be specified, we will

tackle the service recipe representation problem after we have some initial results from the work

on optimization. After we design and implement a prototype representation, we will work on the

optimization problems and revise the recipe representation accordingly, and vice versa.

The time table for the work items described above is shown in Figure 13.

10 Related Work

In this section, we summarize related work in three areas: service composition, resource management, and

software engineering approaches for component-based systems.

10.1 Service composition

The Xena service broker [6] in the Darwin project [5] takes an input graph (roughly equivalent to our

abstract solution) submitted by the application and selects each component in the graph. It can also auto-

matically insert certain semantics-preserving transformations (e.g., video transcoding to reduce bandwidth

consumption). Comparing with our work, the main difference is that Xena only performs the second part

of the service composition (it takes the abstract solution specified by the application), and it does not utilize

service-specific knowledge for optimizations (except semantics-preserving transformations).

26

Su01 Fa01 Sp02 Su02 Fa02 Sp03 Su03 Fa03 Sp04

Pre-proposal

Optimizing service composition

Prototype design & implementationVideo conferencing serviceSimulated gaming servicePreliminary evaluation

Static optimizationsDynamic optimizations

Different composition strategiesService-specific optimizations

Runtime optimizations

Service recipe syntax & semanticsComponents & actionsOptimization policies

Writing

Proposal

Su04

Figure 13: Time table

The AS1 active service framework [2] allows clients to instantiate services on clusters within the net-

work. Ninja [18] is a similar cluster computing environment that supports runtime adaptation and service

composition [29]. Iceberg [48] utilizes the Ninja platform to construct an architecture for sophisticated

communication services. The Sahara project [39] is developing an architecture to support composition and

management of services across independent providers. It provides runtime failure detection and session re-

covery by constructing an overlay network among clusters [40]. From the service composition perspective,

these frameworks utilize the same “service path” model. That is, service composition means finding a path

and appropriate components along the path so that the service provided by the provider at one end of the

path can be accessed by the client at the other end. Using this model greatly reduces the complexity of

the component selection and optimization aspects of service composition. In contrast, we look at the com-

position and optimization of more general services and utilize both generic techniques and service-specific

knowledge.

The Panda project [41] explores the automatic application of adaptations for network applications. It

also utilizes a path model similar to the one described above, but its focus is on how to remedy a set of

problems that occur in a data path between a sender and a receiver. They do not address the more general

service composition problem.

The SWORD toolkit [38] allows service developers to quickly create and deploy composite web ser-

vices. Base services (the components) are defined in terms of inputs and outputs, and a developer can

specify the inputs and outputs of the desired composed service. A rule-based plan generator is then used

to find a feasible “plan”, which can be used by the service developer to deploy the composed service. In

contrast to our work, the focus of this work is on composing services for the “providers” (as oppose to

27

composing services for the “users”). Therefore, a provider still needs to set up the components specified

in the plan and provide an integrated service instance to users. The Paths architecture [25] developed by

the same group provides a mediation infrastructure to support ad-hoc, any-to-any communication between

two heterogeneous endpoints in a ubiquitous computing environment. Their composition model is similar

to the path model described above. They also look at how a composition can be manipulated to enhance the

performance and reliability of the service [26].

There have also been some specialized architectures that utilize the concept of service composition.

The Da CaPo++ architecture [46] uses a set of protocol modules to generate a customized communication

protocol that meets the requirements of a particular communication session. Tina [11] is an architecture for

composing telecommunication services using components with CORBA [35] IDL interfaces. xbind [27] is

a CORBA-based architecture that uses low-level components (e.g., kernel services, display, camera, etc.)

to compose services. CitiTime [3] is an architecture that dynamically creates communication sessions by

downloading/activating an appropriate service module according to the caller’s and callee’s requirements.

Gbaguidi et al. [17] propose a Java-based architecture that allows creation of hybrid telecommunication

services using a set of JavaBeans components. Comparing with our work, these architectures are designed

for specific service types and platforms, and their main focus is on how to support service composition, not

how to perform the composition.

In contrast to these efforts, our work will focus on how a service provider can describe a sophisticated

service using a generic representation to reduce the costs of development and deployment, and, given this

description, how a synthesizer can compose a service instance to satisfy the users’ requirements and adapt

to runtime changes. Of course, we can reuse many techniques and mechanisms developed in these previous

work to support service composition, for example, service discovery, execution environment for component,

fault-tolerant platforms, etc.

10.2 Resource allocation and management

The resource management architecture [9] in the Globus project [13] addresses the problem of resource

allocation for applications in a distributed metacomputing environment. Applications specify their resource

requirements using a Resource Specification Language (RSL), and application-specific resource brokers

translate the high-level abstract requirements into concrete specifications (e.g., 10 nodes with 1GB mem-

ory). Such specifications are further “specialized” until the locations of the required resources are com-

pletely specified (e.g., 10 nodes at site X). Then the QoS resource manager [15] at each site handles the

resource reservation and runtime adaptation. In contrast to our work, the main “components” for their tar-

geted applications are CPU cycles, memory, storage, bandwidth, etc., and the issues of resource selection

and optimization are left to the developers of the resource brokers. The Open Grid Services Architecture

(OGSA) [14] built on top of the Globus toolkit defines interfaces to allow applications work together and

access resources across multiple platforms. The task of service composition is left to the users.

Similar to the Globus resource management architecture, the QoS broker architecture described in [31]

allows applications to specify their QoS parameters and translates such parameters into network QoS re-

quirements. However, it did not address specific resource selection and optimization issues.

28

Since we envision service composition to include low-level resources such as computation servers and

network bandwidth, we can utilize many aspects of these frameworks, for example, resource reservation,

admission control, translating high-level application requirements into low-level resource specifications,

etc.

10.3 Software engineering approaches to component-based systems

Task-driven computing [49] provides a framework that allows a user to interact with computers by spec-

ifying in an application/environment-independent way the task she wants to accomplish. The framework

can then analyze the task and choose appropriate software components to support it. Their work does not

specifically address the service composition problem. Instead, they focus on task and service management.

The Prism task manager in the Aura project [44] extends the task-driven computing concept by support-

ing task migration, runtime adaptation, and context awareness. Again, this work does not focus on service

composition.

Spitznagel and Garlan proposes a compositional approach for constructing connectors between software

components [45]. The model is similar to path-based service composition: they compose the desired con-

nector by applying a series of transformations on the original connector. However, their approach is more

general than path-based service composition since the set of supported transformations include aggregation

of multiple connectors and adding a new party to be involved in the communication.

Acme [16] is an architecture description language (ADL) for component-based systems. It allows one

to specify the structure, properties, constraints, and types and styles of architecture. Using this formal

architectural description, the Rainbow project [7] constructs a framework for software architecture-based

adaptation. It allows applications to specify repair strategies that can be used to adapt the applications by

changing the architectural configuration at runtime if certain architectural constraints are violated.

As described earlier, formal descriptions and specifications are needed in several important parts of our

proposed work so that a synthesizer can automatically parse them and translate them into actions to compose,

optimize, and adapt services. Therefore, the software engineering work described above can help us in these

areas: how to describe service components in a systematic way to allow automated service discovery, how

to translate service-specific knowledge into generic service recipes, how to let users easily and precisely

specify their desired services, and how to transform these specifications into composition, optimization, and

adaptation strategies.

References

[1] Active Network Backbone (ABone). http://www.isi.edu/abone/.

[2] E. Amir, S. McCanne, and R. H. Katz. An Active Service Framework and Its Application to Real-Time

Multimedia Transcoding. SIGCOMM ’98, 1998.

[3] F. Anjum, F. Caruso, R. Jain, P. Missier, and A. Zordan. CitiTime: a system for rapid creation of

portable next-generation telephony services. Computer Networks, 35(5), Apr. 2001.

29

[4] Battle.net. http://www.battle.net/.

[5] P. Chandra, Y.-H. Chu, A. Fisher, J. Gao, C. Kosak, T. E. Ng, P. Steenkiste, E. Takahashi, and H. Zhang.

Darwin: Customizable Resource Management for Value-Added Network Services. IEEE Network,

15(1), Jan. 2001.

[6] P. Chandra, A. Fisher, C. Kosak, and P. Steenkiste. Network Support for Application-Oriented Quality

of Service. Sixth IEEE/IFIP International Workshop on Quality of Service, May 1998.

[7] S.-W. Cheng, D. Garlan, B. Schmerl, J. P. Sousa, B. Spitznagel, and P. Steenkiste. Using Architectural

Style as a Basis for System Self-repair. The Working IEEE/IFIP Conference on Software Architecture

2002, Aug. 2002.

[8] Y. Chu, S. Rao, and H. Zhang. A Case for End System Multicast. In Proceedings of ACM Sigmetrics,

June 2000.

[9] K. Czajkowski, I. Foster, N. Karonis, C. Kesselman, S. Martin, W. Smith, and S. Tuecke. A Resource

Management Architecture for Metacomputing Systems. IPPS/SPDP ’98 Workshop on Job Scheduling

Strategies for Parallel Processing, 1998.

[10] S. E. Czerwinski, B. Y. Zhao, T. Hodes, A. D. Joseph, and R. Katz. An Architecture for a Secure

Service Discovery Service. MobiCOM ’99, Aug. 1999.

[11] F. Dupuy, G. Nilsson, and Y. Inoue. The TINA Consortium: Toward Networking Telecommunications

Information Services. IEEE Communications Magazine, 33(11), Nov. 1995.

[12] The Familiar Project. http://familiar.handhelds.org/.

[13] I. Foster and C. Kesselman. Globus: A Metacomputing Infrastructure Toolkit. Intl J. Supercomputer

Applications, 11(2):115–128, 1997.

[14] I. Foster, C. Kesselman, J. M. Nick, and S. Tuecke. Grid Services for Distributed System Integration.

IEEE Computer, 35(6), June 2002.

[15] I. Foster, A. Roy, and V. Sander. A Quality of Service Architecture that Combines Resource Reserva-

tion and Application Adaptation. 8th International Workshop on Quality of Service, 2000.

[16] D. Garlan, R. T. Monroe, and D. Wile. Acme: Architectural Description of Component-Based Systems.

In G. T. Leavens and M. Sitaraman, editors, Foundations of Component-Based Systems, pages 47–68.

Cambridge University Press, 2000.

[17] C. Gbaguidi, J.-P. Hubaux, G. Pacifici, and A. N. Tantawi. Integration of Internet and Telecommuni-

cations: An Architecture for Hybrid Services. IEEE Journal on Selected Areas in Communications,

17(9), Sept. 1999.

30

[18] S. D. Gribble, M. Welsh, R. von Behren, E. A. Brewer, D. Culler, N. Borisov, S. Czerwinski, R. Gum-

madi, J. Hill, A. Joseph, R. Katz, Z. Mao, S. Ross, and B. Zhao. The Ninja Architecture for Robust

Internet-Scale Systems and Services. IEEE Computer Networks, Special Issue on Pervasive Comput-

ing, 35(4), Mar. 2001.

[19] E. Guttman, C. Perkins, J. Veizades, and M. Day. Service Location Protocol, Version 2. RFC 2608,

IETF, June 1999.

[20] M. Handley, H. Schulzrinne, E. Schooler, and J. Rosenberg. SIP: Session Initiation Protocol. RFC

2543, IETF, Mar. 1999.

[21] J.-C. Hu and J.-M. Ho. A Conference Gateway Supporting Interoperability Between SIP and H.323

Clients. Master’s thesis, Carnegie Mellon University, Mar. 2000.

[22] ITU-T Recommendation H.261. Video Codec for Audiovisual Services at p x 64 kbit/s, Mar. 1993.

[23] ITU-T Recommendation H.323. Packet-based Multimedia Communications Systems, Nov. 2000.

[24] Jini[tm] Network Technology. http://wwws.sun.com/software/jini/.

[25] E. Kiciman and A. Fox. Using Dynamic Mediation to Integrate COTS Entities in a Ubiquitous Comput-

ing Environment. In Proceedings of the Second International Symposium on Handheld and Ubiquitous

Computing 2000 (HUC2k), Sept. 2000.

[26] E. Kiciman and A. Fox. Separation of Concerns in Networked Service Composition. Position Paper,

Workshop on Advanced Separation of Concerns in Software Engineering at ICSE 2001, May 2001.

[27] A. Lazar, S. Bhonsle, and K. Lim. A Binding Architecture for Multimedia Networks. Journal of

Parallel and Distributed Systems, 30(2), Nov. 1995.

[28] The XML C library for Gnome. http://www.xmlsoft.org/.

[29] Z. M. Mao and R. H. Katz. Achieving Service Portability in ICEBERG. IEEE GlobeCom 2000,

Workshop on Service Portability (SerP-2000), 2000.

[30] Introduction to the MBone. http://www-itg.lbl.gov/mbone/.

[31] K. Nahrstedt and J. M. Smith. The QOS Broker. IEEE Multimedia, 2(1):53–67, 1995.

[32] Napster. http://www.napster.com/ (website operational as of September 6, 2002).

[33] Microsoft Windows NetMeeting. http://www.microsoft.com/windows/netmeeting/.

[34] T. S. E. Ng and H. Zhang. Predicting Internet Network Distance with Coordinates-Based Approaches.

INFOCOM ’02, June 2002.

[35] Object Management Group. CORBA: The Common Object Request Broker Architecture, Revision

2.0, July 1995.

31

[36] OpenH323 Project. http://www.openh323.org/.

[37] OpenSLP Home Page. http://www.openslp.org/.

[38] S. R. Ponnekanti and A. Fox. SWORD: A Developer Toolkit for Web Service Composition. The

Eleventh World Wide Web Conference (Web Engineering Track), May 2002.

[39] B. Raman, S. Agarwal, Y. Chen, M. Caesar, W. Cui, P. Johansson, K. Lai, T. Lavian, S. Machi-

raju, Z. M. Mao, G. Porter, T. Roscoe, M. Seshadri, J. Shih, K. Sklower, L. Subramanian, T. Suzuki,

S. Zhuang, A. D. Joseph, R. H. Katz, and I. Stoica. The SAHARA Model for Service Composition

Across Multiple Providers. International Conference on Pervasive Computing (Pervasive 2002), Aug.

2002.

[40] B. Raman and R. H. Katz. Emulation-based Evaluation of an Architecture for Wide-Area Service Com-

position. International Symposium on Performance Evaluation of Computer and Telecommunication

Systems (SPECTS 2002), July 2002.

[41] P. Reiher, R. Guy, M. Yarvis, and A. Rudenko. Automated Planning for Open Architectures. In

Proceedings for OPENARCH 2000 – Short Paper Session, pages 17–20, Mar. 2000.

[42] H. Schulzrinne, S. Casner, R. Frederick, and V. Jacobson. RTP: A Transport Protocol for Real-Time

Applications. RFC 1889, IETF, Jan. 1996.

[43] Session Directory. http://www-mice.cs.ucl.ac.uk/multimedia/software/sdr/.

[44] J. P. Sousa and D. Garlan. Aura: an Architectural Framework for User Mobility in Ubiquitous Com-

puting Environments. The Working IEEE/IFIP Conference on Software Architecture 2002, Aug. 2002.

[45] B. Spitznagel and D. Garlan. A Compositional Approach for Constructing Connectors. The Working

IEEE/IFIP Conference on Software Architecture (WICSA’01), Aug. 2001.

[46] B. Stiller, C. Class, M. Waldvogel, G. Caronni, and D. Bauer. A Flexible Middleware for Multime-

dia Communication: Design, Implementation, and Experience. IEEE Journal on Selected Areas in

Communication, Special Issue on Middleware, 17(9), Sept. 1999.

[47] vic - Video Conferencing Tool. http://www-nrg.ee.lbl.gov/vic/.

[48] H. J. Wang, B. Raman, C.-N. Chuah, R. Biswas, R. Gummadi, B. Hohlt, X. Hong, E. Kiciman, Z. Mao,

J. S. Shih, L. Subramanian, B. Y. Zhao, A. D. Joseph, and R. H. Katz. ICEBERG: An Internet-core

Network Architecture for Integrated Communications. IEEE Personal Communications Special Issue

on IP-based Mobile Telecommunications Networks, Aug. 2000.

[49] Z. Wang and D. Garlan. Task-Driven Computing. Technical Report CMU-CS-00-154, Carnegie Mel-

lon University School of Computer Science, May 2000.

32