FLEXIBLE AND EXTENSIBLE QOS-MANAGEMENT FOR ADAPTIVE MIDDLEWARE Thomas Plagemann1, Frank Eliassen2, Brita Hafskjold3, Tom Kristensen1, Robert H. Macdonald3, and Hans Ole Rafaelsen4 1 University of Oslo, UniK - Center for Technology at Kjeller, {plageman, tomkri}@unik.no 2 University of Oslo, Department of Informatics, frank@ifi.uio.no 3 Norwegian Defence Research Establishment, {bha, Robert-H.Macdonald}@ffi.no 4 University of Tromsø, Department of Computer Science, hansr@acm.org ABSTRACT The task of middleware is to mask out problems of heterogeneity and distribution for application developers. With the emergence of new application domains, like multimedia and real-time applications, flexible support of QoS and real-time requirements becomes a major challenge. Reconfigurable bindings and policy driven binding protocols are the major means in the MULTE framework to support these requirements. Our current prototype implementation is based on the CORBA 2.0 implementation COOL and supports reconfigurable open bindings. 1 INTRODUCTION Middleware has emerged as a central architectural component in supporting distributed applications and services. The role of middleware is to present a higher level programming paradigm for application writers (typically object-oriented or, more recently, component-based) and to mask out problems of heterogeneity and distribution. The importance of the topic is reflected in the increasing visibility of technologies as OMG's CORBA, Java RMI, Microsoft's DCOM and the ISO/ITU-T Reference Model for Open Distributed Processing. However, the marketplace for middleware technology is significantly changing. For example, there is increasing demand to apply middleware technologies in a wider variety of application domains including real-time systems, embedded systems, fault-tolerant systems, multimedia, and mobility. In this context, flexible and extensible Quality-of-Service (QoS) and real-time support is one of the major challenges. Flexibility and extensibility are important, because a single fixed middleware solution will not be able to support the following requirements that are imposed by the new application domains: • Dynamic QoS support: applications should be able to specify QoS requirements and to change them dynamically. The middleware should provide the requested QoS and adapt to changes in QoS requirements, resource availability, etc. • Evolution of QoS requirements: new media types and new applications might introduce new QoS characteristics. In order to support these new requirements, QoS management in the middleware must be extensible. • Transparency versus fine-grained control: developers of application components and users should be able to define QoS requirements in highlevel (application) terminology, e.g., good video quality, and in low-level system para-meters to directly influence middleware configu-ration, e.g., compression = MPEG, and resource allocation, e.g., throughput ≥ 1 Mb/s. • Policy control: the middleware should enable endusers, application developers, and system managers to specify policies for QoS mapping, negotiation, monitoring, adaptation, etc. For example a policy might be used to express that in case the quality of a video should be degraded, adaptation is done by reducing the frame rate instead of the resolution. • Automatic support for compatibility control: the middleware should detect incompatibilities in user requirements and equipment and resolve them – if possible – with media scaling and transcoding. • Support for seamless system evolution: the integration of new components in the middleware should not require re-compilation or changes of existing components and middleware entities. This must also be true for components that encapsulate resources, i.e., APIs to network services. Our experience with flexible protocol configuration has shown that the above requirements cannot be solved only by dynamic (re-)configuration of communication protocols. Additionally, flexibility in establishing and managing bindings is necessary. It is the goal of this paper to give a conceptual and architectural overview of how the MULTE framework supports flexible and extensible QoS management. The remainder of this paper is structured as follows: in Section 2, we describe the two application domains of the MULTE project and their requirements. Section 3 introduces the MULTE binding framework. How the different aspects of QoS management, i.e., QoS specification, mapping, resource reservation, monitoring and adaptation are integrated in the MULTE binding framework is described in Section 4. We summarize our prototype implementation in Section 5 and related work in Section 6. Section 7 concludes the paper. 2 TWO APPLICATION SCENARIOS In this section, we briefly outline two application scenarios we are currently working with, the first one represents a flexible multimedia application, and the second a typical hard real-time system. 2.1 Lecture-on-Demand System In the OMODIS project [25], we develop an adaptive distributed multimedia system for Lecture-on-Demand (LoD) to support asynchronous interactive distance learning. The core of this system is a multimedia database system (MMDBS) with QoS support. Recorded lectures and additional multimedia information that is relevant for the courses will be stored in the MMDBS. The main requirements of the LoD system related to QoS management are: • Individual online access: users can access the MMDBS via various types of networks, like Ethernet, ATM, N-ISDN, and GSM. • QoS support: user and application requirements must be considered in the MMDBS, operating systems, communication protocols, and network. • Independence of data elements/streams: all events and media streams must be independently stored to allow independent retrieval and scalable playback of elements. • Scalable playback of lectures: must be triggered via queries and via QoS requirements. Scaling of streams must be supported during playback. • Fully synchronized playback: information about the temporal relationships between data elements is stored in the MMDBS as metadata. A major feature of the LoD system is collaborative presentation of multimedia objects. Typically, one user (e.g., the teacher) selects via a QoS annotated query a certain multimedia object in the MMDBS and controls the play-out of the object from the MMDBS to multiple clients. The MMDBS retrieves the data and multicasts it over the network to multiple students, each receiving the data on her/his computer. A specific requirement of LoD is heterogeneity of student equipment and underlying networks. For example, if the supported performance, audio/video formats, and compression schemes vary among the receivers, the middleware platform must solve this problem through, e.g., transcoding and media stream scaling. Automatic support of this feature requires a computationally tractable foundation for reasoning about compatibility of the capabilities of systems and networks. Furthermore, the resolution of heterogeneity among the receivers must be performed at run-time since both the set of receivers and the type and amount of data to be transmitted is not statically known, but rather depends on the specifics of the teachers query. This requires run-time configuration of the multicast binding. Dynamically varying resource availability (e.g., network bandwidth for wireless receivers) may require further run-time adaptation of the binding, e.g., to reduce bandwidth requirements for some of the receivers. Receivers may even require the enforcement of individual policies for this adaptation. 2.2 Combat Management Systems Threats to naval ships, such as anti-ship missiles have increased significantly over the last two decades. Defensive capabilities to cope with such threats must be developed but add a whole new dimension of complexity to Combat Management Systems (CMS). Such systems must be able to react within less than 10 seconds from detection of the threat (the flight time from the radar horizon to the ship). A typical scenario can be broken down into the following phases: missile detected by radar (2 seconds), computers finished processing classification (2 seconds), allocation of defensive weapon system resources (shared resources such as fire control radars are often allocated to other less critical tasks) (2 seconds), target hand-over and firing of appropriate self-defence weapon (1 second). CMS systems may be visualised as a local-area network (LAN) to which sensors, tactical processors and workstations for command and control and all other resources (like weapon systems, off-ship communications, navigation systems with digital map databases and so on) are interconnected [13]. Network technologies such as TCP/IP and UDP over Ethernets and ATM; and processor systems, like Sun SPARC and ALPHA based workstations running various flavours of UNIX are in widespread use [21]. Sensor systems are connected to the backbone network through standard network interfaces. The system is often segregated into sub-systems for each warfare area (such as anti-submarine or anti-aircraft warfare) often using different hardware and software commercial off the shelf solutions. In other words, a ship's CMS is a complex heterogeneous system and CMS applications benefit from the abstraction middleware can offer [19]. Each CMS application is dedicated to particular warfare areas. One demanding task is carrying out data fusion from several sensors in order to provide a qualitative stable situation picture. This requires data to be pulled across the network into a tactical processor, a complex processing to be executed followed by a second information exchange across the network to the CMS decision handling system. In general, CMS applications are prioritized and are under human supervision. The system as a whole is designed to perform all in parallel. Missile selfdefence has the highest priority, above those of the other warfare areas. Therefore, resources in the CMS, like available network switches and bandwidth, CPU time of tactical computers, etc., may have to be reallocated to the missile self-defence task in the event of a hit taking out critical parts of the system. This is subject to the system-wide hard real-time requirement, and as an upper limit the complete detection of damage, reallocation of resources and all necessary reconfiguration must be performed within 5-10 seconds to be of any use. In other words, real-time support, redundancy and careful resource management, and dynamic system reconfiguration capability are of vital importance for CMS. 3 THE MULTE BINDING FRAMEWORK The binding framework defines all entities involved in the creation and manipulation of bindings, as well as the binding components and the way they are handled. Some principles are assumed for the binding framework, such as the support for multi-party and multimedia bindings, QoS negotiation/re-negotiation among the binding endpoints, and the use of policies. Policies are an important part of the framework since they provide a flexible way to control the behaviour of the entities involved in binding actions. Crucially, the binding framework is based upon the concept of open binding [10]. An open binding is a composite distributed object, used to connect multiple interfaces across a distributed environment. Therefore, open bindings provide all the necessary functionality to support remote interaction, including distribution transparencies and services. In addition, an open binding usually has multiple levels of composition, meaning that one binding can be composed of lower level bindings. This allows multiple levels of abstraction and reuse of binding specifications. 3.1 Basic Elements The binding framework defines the following entities: • Binding factory (BF): responsible for creation of bindings. The BF is a distributed entity, meaning the existence of replicated factories. Each of these replicas behaves according to well-defined roles when co-operating to create a binding. • Binding manager (BM): responsible for monitoring and co-ordinating binding adaptation such as adding, removing or replacing components in a binding, as well as changing the behavior of existing components, e.g., by changing resource reservations for the components. Furthermore, the BM can ask the application to adapt. • Binding destructor (BD): releases bindings and frees the allocated resources. • Binding template (BT): specifies the properties, constraints, and configuration guidelines for binding objects. Binding templates are used by BFs to define the structure of new bindings. • Configuration: the set of components that constitute the internals of binding objects. A configuration is the product of the evaluation of a BT, and is represented by an object graph depicting the identities and types of the binding components, and their interconnections. • Binding protocol (BP): protocols used by BFs to create new bindings, by BM to adapt existing bindings, and by BDs to remove bindings. BFs, BMs, and BDs are collectively referred to as life cycle components of bindings. In contrast, binding components are the basic building blocks of binding configurations, and are defined as objects that can have multiple distinct interfaces. Our components model prescribes how components are specified, how component specifications are stored for future use, and how components are created from such specifications. Importantly, the model allows components with arbitrary levels of granularity, which means that primitive and composite components can be defined. Figure 1 illustrates a simple (nested) stream binding between the LoD system and a students’ client consisting of a composite component, i.e., a primitive (closed) UDP binding, a flow-control component and a MJPEG decoder component. LoD System Figure 1. UDP binding Flow Control MJPEG student client Components of a simple stream binding 3.2 Binding Protocols Different types of binding protocols are used by BFs, BMs, and BDs during the life cycle of bindings. All binding protocols have some common features, due to the way open bindings are structured: • Binding protocols guide the communication and co-ordination among the BF, BM, and BD replicas involved in a binding. • Open bindings may have multiple levels, each of them corresponding to individual bindings. This implies that all binding protocols have a recursive definition, or alternatively, that a binding protocol must rely on the execution of other lower level binding protocols. Consequently, for each level of binding, a different context of BFs, BMs, and BDs respectively, will be involved. • Binding protocols combine a set of simple protocols for tasks like QoS management, connection management, resource management, and other signalling tasks. For all these tasks mostly multiple alternatives with different properties exist. For example, QoS negotiation can be performed as unilateral, bilateral, or triangular negotiation; and the binding can be established in a three-way handshake, two-way handshake, or implicit. These alternatives are combined in different scripts according to various policies. Thus, the behavior of a binding protocol is determined by policies and specified in scripts. By defining distinct binding protocols, we define different ways in which bindings may be created, and adapted. This allows the creation of bindings with different characteristics (e.g., multi-party, with QoS guarantees). In addition, different binding protocols may be optimized for different binding templates. Therefore, prior to requesting the creation (and subsequent modification) of a binding, the user may set up policies that configure the life cycle components of the binding such that they behave according to the desired binding protocol. Another commonality among different binding protocols refers to the way peer life cycle replicas communicate with each other. When a replica wants to pass information to a peer on the other side of the binding (e.g., interface references and transport addresses), it packs that information and passes it to the next upper level life cycle replica on its side. At the most external level of binding, the life cycle replicas actually transfer the binding information over the network. On the other sides of the binding, at each level, the respective information is then unpacked and delivered to the intended life cycle replicas. Using this approach, we effectively reduce the communication overhead involved in multi-level binding establishment and adaptation. A third similarity among binding protocols is the way QoS negotiation is conducted. In general, the above principle is followed, where the overall QoS for the binding is negotiated among the life cycle replicas for the uppermost level of binding. Subsequently, the negotiated QoS parameters are propagated to the lower levels of binding. 4 QOS MANAGEMENT IN MULTE QoS management in MULTE is based on the highlevel stream binding language B and the low-level QoS mediator language M. Furthermore, MULTE provides prefabricated high-level specifications, called Application Specific Adapters (ASAs), for standardized services, like H.323 video conferences. 4.1 QoS Mediator Language M The language M provides an abstraction over network resources and operating system resources, like CPU time and memory, by defining an extensible set of low-level QoS parameters and values that are independent of particular resources, but can be mapped easily to them. Components that encapsulate particular resources have to provide a mapping between M and the native “QoS terminology” of the resource, e.g., the QoS parameters defined by a particular network service like RSVP or ATM UNI 4.0. Table 1 summarizes the “core” parameters of M. Table 1. Parameters and value ranges of M Parameter Value Range Obligation Establishment delay Establishment failure probab. Release delay Release failure probability Minimum data rate Average data rate Peak data rate Max burst size Minimum data unit size Average data unit size Maximum data unit size Transit delay Transit delay jitter Loss ratio Memory Period Deadline Priority guaranteed, statistical guaranteed, proportional share, best effort > 0 ms 0 .. 1 > 0 ms 0 .. 1 > 0 bytes/s > 0 bytes/s > 0 bytes/s > 0 bytes > 0 bytes > 0 bytes > 0 bytes > 0 ms > 0 ms 0 .. 1 > 0 bytes > 0 ms > 0 ms 0 .. 255 4.2 Stream Binding Language B The main programming concepts for multimedia applications provided by the MULTE framework are explicit stream bindings, stream interfaces, flows, and associated type checking rules [9]. A binding type identifies the type of stream interfaces that can participate in the binding, the roles they play, and the way behavior at the various stream interfaces are linked. A stream interface consists of a collection of source and/or sink media flows. The language B is used to specify properties of stream bindings, including QoS requirements and binding structure such as one-to-one, one-to-many, and manyto-many associations of stream interfaces. The MULTE framework includes a binding trader in which B specifications are used to express binding requirements and binding offers. The trader resolves a trader inquiry to one or more binding factories that offer bindings conforming to the user’s requirements. The language B also includes the notion of policy specification. In those cases where binding objects specify alternative stream behavior (e.g., for encodings, resolutions, or frame rates) at its supported interfaces, policy specification support automatic negotiation and renegotiation (i.e., adaptation) of the actual stream interface behaviour. Furthermore, policies might specify different strategies how to negotiate QoS, how to perform connection management and how to allocate resources. In this case, these policies are implemented by a particular configuration of the binding protocol. A binding is specified by a 5-tuple (T, P, M, ∆, E). The tuple’s elements are briefly explained in Table 2. Table 2. Elements of binding specifications Role types (T) Roles (P) Matching requirement (M) Role causalities (∆) Role cardinality (E) Set of stream interface types Given role names of a given role type Required compatibility relation-ship between corresponding interfaces offered by the binding and application respectively Specifies the binding structure as associations between instances of roles Maximum number of instances of a particular role in the binding object Typical QoS parameters for flows, shown with some possible value ranges are listed in Table 3. Table 3. Parameters of flow specifications Parameter Value Range Encoding Sample rate Sample size Audio channels Width H.261, MPEG, MJPEG, GSM, etc. 1 .. 44kHz 8, 16, 32 1, 2 160, 320, 640, 1024 Height Pixel depth 120, 280, 480, 768 1, 2, 4, 8, 16, 24, 32 A policy specification is given by a set of selection statements. For each selection statement a set of attribute ranges are specified (see Table 4). Statements are evaluated from top to bottom. For each statement, attribute ranges are evaluated from right to left. That is, configurations with different values for the right most attributes, are preferred before different values of the left most attributes. For further details about policy specifications, the reader is referred to [26]. Table 4. 1 2 3 Structure of policies specifications res(high,med) res(med.low) depth(16,8) depth(24,16) rate(20,15) rate(20,15) rate(30,20) depth(24,16) res(low,low) Example: Consider a LoD scenario (c.f. section 2.1) where some students want to playback an earlier recorded lecture. Once the recorded lecture has been selected, a binding between the video server storing the lecture and the students’ application is needed. Based on the capabilities of the students applications, and the format of the stored lecture, an initiator, i.e., one of the students, requests the creation of a binding with the following binding type: -- interface types type AudioConsumer = stream [ a : sink flow [ a1 : Audio [encoding:{GSM}, rate: 8000]] configuration a ] type AudioProducer = stream [ a : source flow [ a1 : Audio [encoding:{GSM}, rate: 8000]] configuration a ] type VideoConsumer = stream [ v : sink flow [ v1 : Video [encoding:{H.261, MJPEG}, rate: {10..25}]] configuration v] type VideoProducer = stream [ v : source flow [ v1 : Video [encoding:{H.261, MJPEG}, rate: {10..25}]] configuration v] --role types LectureProducer={VideoProducer,AudioProducer} LectureConsumer={VideoConsumer,AudioConsumer} -- roles LoDsystem : LectureProducer student : LectureConsumer -- matching requirements <LoDsystem : partially_relaxed, narrow> <student : partially_relaxed, narrow> -- role causalities <ONE-MANY, LoDsystem, student, no_conv> -- role cardinalities <LoDsystem, 1> <student, 1..30> 4.3 Application Specific Adapters Application Specific Adapters (ASAs) contain predefined B and QoS specifications for standardized services, like H.323, in which the application can only change values of the given QoS parameters. The B specification in ASAs is a subset of what B is able to express, because a given standard or application restricts the parameter types and their value ranges. Parameter in the B specification of an ASA have default values if the application does not specify particular requirements. The rest of this section describes a simplified ASA for H.323 [14]. Figure 2 shows the scope of H.323. A set of audio and video codecs are used for the media flows. The media flows use RTP [29] as transport protocol. To connect equipment as white boards or perform file transfer and database queries the T.120 family of protocols are used. H.323 defines how to signal control information. Signaling is performed by the protocols in the System Control component. RAS (Registration, Admission and Status) provides services to find the gatekeeper, to register to the net, etc. H.245 is used as a control channel during the session lifetime. It’s tasks include to exchange capabilities to send/receive different message types, coding formats, and change bandwidth requirements. Q.931 is used for call setup, that is to establish a session by signalling the peer application. Microphone/ speaker Audio codec G.7xx Camera/ display Data equipment Video codec H.26x Data interface T.120 System Control User Interface System Control H.245 Q.931 RAS Figure 2. RTP LAN H.323 Architecture H.323 has a limited set of QoS parameters, but the applications may specify the tolerated jitter, skew between different media flows and bandwidth requirements. Also the supported set of codecs restricts the format parameter space for the B specification. For video the possible choices are H.261 with QCIF and CIF resolution, and H.263 with SQCIF, QCIF up to 16CIF. The only mandatory applications H.323 must support are H.261 and QCIF. These mandatory components are together with the other possible combinations specified in the ASA. To extend our H.323 ASA, it is optionally possible to use RSVP for QoS signalling. H.323 also allows the definition of non-standard extensions, this enables applications to use the other features of MULTE-ORB not supported by the H.323 framework. The ASA for H.323 contains a BT for this simplified H.323 ASA, where the different signalling sequences are described in BF, BM and BD scripts. During format and QoS parameter negotiation the actual component configuration and the instances of BF, BM and BD are found. In summary, MULTE provides three levels of QoS specification. Applications can choose between the following three approaches (see Figure 2): use an ASA, use B, or use M. Thus, application developers determine whether they want to benefit from the transparencies and high abstraction an ASA provides or whether they want to use the possibility of finegrained control by specifying QoS parameters and resource requirements in M. Degree of abstraction Application ASA B Middleware M Ability for fine-grained control Figure 3. Levels of QoS Specification 4.4 Policies and QoS Mapping The basic approach of mapping a QoS specification in B to a particular binding configuration is as follows: B and the binding trader are used to select an appropriate BF and to perform application level QoS negotiation. After successful negotiation the QoS specification in B is mapped to a specification in M. M in turn is mapped from the resource encapsulating components to resource reservations. In case a monitoring component detects violations of guaranteed QoS, or required resources are no longer in the appropriate amount available, M is mapped to B and a BM is used to reconfigure the binding. It is important to note, that the type of QoS negotiation, mapping, and resource adaptation is defined by policies and included in corresponding scripts for the binding life-cycle components, i.e., BF and BM. 4.5 Resource Reservation Whether resources can be reserved for a binding respectively for the set of threads that implement the binding on, depends on the services that are provided from the operating systems on these systems and the available network services. For example, ATM and Internet Integrated Services support reservation of network resources, while the classical Internet does not. Thus, the primary question is whether such services are available or not. If not, only bindings with best effort QoS semantics can be supported. If resource reservation services are available, the task of resource reservation might either be performed locally, e.g., for reservation of memory and CPU time, or requires a reservation protocol, like RSVP or ST-II. Obviously, resource reservation protocols are part of binding protocols. Therefore, resource reservation protocols can be selected by policies and included in scripts of the binding life-cycle components. For both types of resource reservation, a mapping from M to the native parameter has to be provided by a wrapper that encapsulates the native services and provides a MULTE conform interface. QoS from the preferred values, we get as input to the system the preferred change of QoS values. However, it might take a long time that the monitored values rise or fall to the preferred value. In order to reach a system state in which the monitored QoS values match the requested QoS values as fast as possible, we use a regulator to adjust the preferred changes (see Figure 4). By using an appropriate regulator, we can also avoid transient effect, with the monitored values bouncing up and down before settling at the preferred values. preferred change monitored of QoS values values system and regulator monitors preferred QoS values 4.6 Monitoring and Adaptation The BM is responsible to maintain the QoS for a binding according to the application requirements, i.e., QoS specification and policies. Generally, QoS maintenance includes two tasks: • Monitoring is performed by configuring monitoring components into the binding. Monitoring results are communicated to the BM with an event service to which the BM has registered and the monitor reports, or that the BM polls the monitor(s) at regular intervals, or a combination of both. Furthermore, components that perform internal monitoring, like ARQ components that collect information on number of retransmissions, can communicate monitoring results to the BM in the same way. • Adaptation can basically be performed in the following four ways: (1) changing local resource reservations, e.g., increase the amount of allocated memory for a receive buffer, (2) changing global resource reservations with a resource reservation protocol, (3) changing behavior of single components by setting new QoS parameters, like the Q-factor of an MJPEG component, and (4) changing the binding configuration, e.g., exchanging a component for lossless compression with a component for lossy compression. Depending on the application requirements, available resources and monitoring results a single, or a combination of multiple these approaches has to be performed. However, the basic decision when and how to adapt is based on classical feedback control loop from control theory [34]. The basic elements of a feedback loop are: • System under control, which can be a single component, multiple components, or a binding at an arbitrary level. • Input to the system, i.e., the preferred QoS values respectively the preferred change of QoS values. • Output of the system/monitor, i.e., the measured QoS values. By subtracting the monitored values of the achieved Feedback loop with regulator Regulators are part of the script in the BM and are selected according to the type of system, i.e., binding configuration or component, that is monitored. In Figure 5, such a feedback control loop is illustrated for the simple stream binding introduced in Section 3.1, Figure 1. A monitoring component measures the throughput of the flow control component and generates a monitoring event if the measured throughput is below a given threshold value. The regulator in the BM calculates the necessary change in memory reservation for the flow control components and a corresponding allocation is performed. It should be noted that feedback loops can be recursively encapsulated. The input to an outer feedback loop will typically be of a closer-to-thehuman-operator kind, which in computer systems means that it is more abstract. The input to the inner feedback loop could be bandwidth in Mbps, while the input to the outer loop could be the preferred frame rate of a multimedia application. Binding Manag. ..... regulator() res_reserv() .... Reserve_memory(X); LoD System Figure 4. UDP Monitoring _event() Monitor Flow Control MJPEG Feedback control loop in stream binding 5 PROTOTYPE Our prototype implementation, called MULTE-ORB, is based on the flexible protocol framework Da CaPo (Dynamic Configuration of Protocols) [24] and [18]. Da CaPo enables us to configure implementations of protocol functions of arbitrary granularity to complex protocols. Naturally, the implementation of a protocol function corresponds to a component in the binding framework. In order to enable flexible and configurable binding protocols for BF, BM, and BD, we are currently substituting the original connection manager in Da CaPo with a more general signalling manager. The main task of the signalling manager is to start and terminate signalling modules and to multiplex and demultiplex signalling packets to be send to, respectively received from, the peer signalling manager(s). The signalling itself is performed by the signalling modules. We use the term signalling in a broad sense and signalling modules can be classified into modules for QoS negotiation, QoS mapping, resource reservation, protocol negotiation, connection management etc. For each of these classes there are obviously several possible modules, like unilateral, bilateral and triangular QoS negotiation. Simple scripts are used to specify which signalling modules should be used in the binding protocol (based on standardized names for the modules) and in which order they should be executed. The signalling manager interprets the scripts and instantiates by this the binding protocols. Currently, we develop a new multithreaded version of Da CaPo on top of the real-time micro-kernel operating system Chorus and RT-Linux to take full advantage of their real-time support. Furthermore, we have integrated Da CaPo into the CORBA implementation COOL such that the MULTE-ORB is able to negotiate QoS via an extended version of IIOP called QoS-IIOP, or QIOP, and utilizes optimized protocol configurations instead of TCP/IP. Figure 7 illustrates the architecture of the MULTE-ORB on top of Chorus. This prototype is able to implement binding objects that support QoS and real-time requirements. prototype a binding has an associated metarepresentation through which adaptation of the binding can be preformed. 6 RELATED WORK There exists considerable amount of research on endto-end QoS support. A survey of the “classical” QoS architectures can be found in [1]. There are several areas of related work that are important for our project and are discussed in the following subsections: QoS specification, policies, and QoS support in middleware systems. 6.1 QoS Specification QML is a recent proposal for a QoS specification language [11]. The semantics of QML is similar to our stream and flow type model, and from our judgement should be capable of specifying quality properties of stream interfaces. Its applicability has been demonstrated for operational interfaces only. The QML work does not consider automatic support of QoS negotiation from QML specifications. Quartz is a QoS architecture from Trinity College [30] with a similar approach to ours regarding the QoS mapping functionality. Other work that considers QoS specifications and/or negotiations includes [20], [3], [7], [35] and [38]. However, the focus of our work is different. These works do not provide anything corresponding to a type model of streams and bindings, including type relationships such as subtype, compatibility and conformance, and the derivation of automatic systems support such as QoS negotiation from high-level interface specifications. 6.2 Policies Generic Message Protocol IIOP QIOP Generic Transport Protocol TCP/IP Chorus IPC Da CaPo (2) COOL t i COOL Protocol Da CaPo (1) Chorus OS Figure 5. Integration of Da CaPo into COOL The next step in our work is to implement the second alternative, where Da CaPo additionally configures a message protocol. The message protocols are then Da CaPo modules formatting requests for (de-) marshalling in stubs and skeletons. This alternative is the basis for a new stream adapter in MULTE. A first version of open stream bindings based on Da CaPo has also been implemented [33]. In this The idea of using policy governed QoS provision and configurability in middleware is not new. For example, the Open OODB project [37] applies policies in extensible database middleware. Policies have been adopted in a wide spectrum of applications ranging from QoS management within networks to security and enterprise modeling (e.g. [31]). Utility functions have been proposed used as policies for selection of QoS in multimedia systems [36]. However, it has not been shown how these functions can be used for policies involving multiple QoS parameters. In [16], so-called worth based functions are proposed as policies for QoS negotiation. The expressiveness for negotiation with multiple QoS parameters seems to be quite similar to our approach. However, they consider only negotiation between client and server, i.e. bilateral negotiation, while our approach aims at the flexible selection of an appropriate negotiation schema. 6.3 QoS Support in Middleware Solutions QoS support in object-oriented middleware is tackled by several projects with different approaches. The AMIDST project [2] builds an Object Request Broker (ORB) which is able to adapt using a feedback control loop. The ORB is configurable and uses composition filters to handle different aspects. Also at the University of California Santa Barbara [15] a realtime ORB is developed that uses feedback control for resource scheduling. The ERDOS ORB [32] focuses on QoS-driven resource allocation and end-to-end QoS using different models capturing different perspectives, in order to perform distributed resource management. The Real-Time CORBA specification (RT-CORBA) [23] addresses how the ORB ensures end-to-end predictability with respect to priority propagation, threading schemes, explicit binding, and protocol policies and configurations. Explicit bindings are used according to the CORBA Messaging specification [22]. In RT-CORBA, policies guide the selection of protocols, and the configuration of the protocol is depending on the flexibility and nature of the protocol. The configurable properties for TCP in RTCORBA include send and receive buffer sizes, keep alive, and do not route. RT-CORBA does not support to reconfigure protocols after binding time. The ReTINA project has summarized requirements for a multimedia ORB in [5]. The DIMMA project at ANSA [6] has implemented a real-time, multimedia ORB. The end system architecture TAO [28] provides static real-time support for CORBA. The Adapt project [10] using Ensemble [12] has extended COOL with configurable protocol stacks for adaptive multimedia applications. Adapt exploits the open binding abstraction, but only for stream communication. GOPI [4] is a generic middleware platform, which can be extended with new protocols and new QoS mapping schemes provided by the programmer. Another flexible ORB is Jonathan [8], where arbitrary binding mechanisms may be chosen for the binding between interacting objects. In order to make the ORB itself configurable component technology is used in LegORB [27] and dynamicTAO [17], which are examples of ORBs combining components with reflection, but both lack the ability to adapt and re-configure at runtime. 7 CONCLUSIONS In this paper, we have identified the need for flexible and extensible QoS support in future middleware solutions. In the MULTE binding framework, we support dynamically (re-)configurable open bindings, as well as flexible scripts for BFs, BMs, and BDs to create, manage and destroy bindings according to the application requirements. In our prototype implementation, we have integrated the flexible protocol configuration framework Da CaPo into the CORBA 2.0 implementation COOL. This prototype allows dynamic (re-)configuration of bindings. Currently, we are integrating and experimenting with flexible scripts for BFs, BMs, and BDs to enable flexible and extensible binding management. REFERENCES [1] C. Aurrecoechea, A. Campbell, L. Hauw, ”A Review of Quality of Service Architectures”, ACM Multimedia Systems Journal, Nov. 1995. [2] L. Bergmans, A. van Halteren, L. Ferreira Pires, M. Aksit, ”A QoS-control Architecture for Object Middleware”, accepted at 7th International Conference on Interactive Distributed Multimedia Systems and Telecommunication Services (IDMS 2000), Enschede, Netherlands, Oct. 2000. [3] T. Campbell, “A Quality of Service Architecture.”, PhD Thesis, Lancaster University, 1996. [4] G. Coulson, "A Configurable Multimedia Middleware Platform", IEEE Multimedia, Vol. 6, No. 1, Jan.-Mar. 1999. [5] Chorus Systems, "Requirements for a Real-Time ORB", ReTINA, Tech. report RT/TR-96-8, May 1996. [6] DIMMA Team, "DIMMA Design and Implementation", ANSA Phase III, Technical Report APM.2063.01, Sept. 1997. [7] P. Dini, A. Hafid, “Towards Automatic Trading of QoS Parameters in Multimedia Distributed Applications”, IEEE ICODP/ICDP Conference, Toronto, Canada, pp. 166–179, 1997. [8] B. Dumant, F. Dang Tran, F. Horn, J.B. Stefani, "Jonathan: an Open Distributed Procesing Environment in Java", Middleware'98, The Lake District, UK, Sept. 1998. [9] F. Eliassen, S. Mehus, “Type Checking Stream Flow Endpoints”, Middleware’98, The Lake District, UK, –Sept. 1998. [10] T. Fitzpatrick, G.S. Blair, G. Coulson, N. Davies, P. Robin, "Supporting Adaptive Multimedia Applications through Open Bindings", 4th International Conference on Configurable Distributed Systems (ICCDS'98), Annapolis, Maryland, USA, May 1998. [11] S. Frølund,J. Koistinen, “Quality-of-Service Specification in Distributed Object Systems”, Distributed Systems Engineering Journal, Vol.5, No.4, 1998. [12] M. Hayden, "The Ensemble System", Cornell University Tech. Report, TR98-1662, Jan. 1998. [13] J.S. Hill, "Data Exchange, System Architectures and Structures", Defence Research and Evaluation Agency (DERA), Naval Engineering, Volume 33(2), 1991. [14] ITU-T, “Draft ITU-T Recommendation H.323”, SG 15 Plenary 28 May, 1996. [15] V. Kalogeraki, P.M. Melliar-Smith, L.E. Moser, ”Using Multiple Feedback Loops for Object Oriented Profiling, Scheduling and Migration in Soft Real-Time Distributed Object Systems”, 1st IEEE International Symposium on Objectoriented Real-time distributed Computing (ISORC’98), Kyoto, Japan, April 1998. [16] J. Koistinen, A. Seetharaman, “Worth-Based Multi-Category Quality-of-Service Negotiation in Distributed Object Infrastructures”, The Second International Enterprise Distributed Object Computing Workshop, Nov. 1998. [17] F. Kon, M. Roman, P. Liu, J. Mao, T. Yamane, L.C. Magalhães, R.H. Campbell, “Monitoring, Security, and Dynamic Configuration with the dynamicTAO Reflective ORB”, Middleware'2000, New York, USA, April 2000. [18] T. Kristensen, T. Plagemann, “Enabling Flexible QoS Support in the Object Request Broker COOL”, International Workshop on Distributed Real-Time Systems, Taipei, Taiwan, April 2000. [19] R.H. Macdonald, "An integrated architecture for the CMS for the new Norwegian escort vessels", FFI 96/04033, Norwegian Defence Research Establishment (FFI), Aug. 1996. [20] K. Nahrstedt, J.M. Smith, “The QoS Broker”, IEEE Multimedia, 2(1), pp. 53-67, 1995. [21] NATO ANEP-53, "Extension to Shipborne Open System Environment (SOSE)", Study report to NATO NIAG SG-52, April 1998. [22] Object Management Group, "CORBA Messaging - Joint Revised Submission", OMG Document orbos/98-05-05, May 1998. [23] Object Management Group, "Real-Time CORBA - Joint Revised Submission", OMG Document orbos/98-12-10, Dec. 1998. [24] T. Plagemann, ”A Framework for Dynamic Protocol Configuration”, Dissertation at Swiss Federal Institute of Technology, Computer Engineering and Networks Laboratory, Zurich, Switzerland, Sept. 1994 [25] T. Plagemann, F. Eliassen, V. Goebel, T. Kristensen, H.O. Rafaelsen, , “Adaptive QoS Aware Binding of Persistent Objects”, International Symposium on Distributed Objects and Applications (DOA’99), Edinburgh, Scotland, 1999. [26] H.O. Rafaelsen, F. Eliassen, ”Trading and Negotiating Stream Bindings”, Middleware’2000, New York, USA, April 2000. [27] M. Roman, D. Mickunas, F. Kon, R.H. Campbell, “LegORB and Ubiquitous CORBA, Workshop on Reflective Middleware at Middleware’2000, New York, USA, April 2000. [28] D.C. Schmidt, A.S. Gokhale, T.H. Harrison, G. Parulkar, "A High-Performance End System Architecture for Real-Time CORBA", IEEE Communications Magazine, Vol. 35, No. 2, Feb. 1997. [29] H. Schulzerinne, R. Casner, R. Frederick, V. Jacobsen, “RTP: A transport protocol for realtime applications,” IETF, RFC 1889, 1996. [30] F. Siqueira, V. Cahill, ”Quartz: A QoS Architecture for Open Systems”, 20th International Conference on Distributed Computing Systems (ICDCS’00), Taipei, Taiwan, April 2000. [31] M. Sloman, E. Lupu, “Policy Specification for Programmable Networks”, First International Working Conference on Active Networks (IWAN’99), Berlin, June 1999. [32] J.J. Sydir, S. Chatterjee, B. Sabata, ”Providing End-to-End QoS Assurances in a CORBABased System”, 1st IEEE International Symposium on Object-oriented Real-time Distributed Computing, Kyoto, Japan, April 1998. [33] K.O. Traa, ”Implementation of open bindings based on Da CaPo”, Master Thesis, University of Oslo, 2000 [34] E. Umez-Eronini, “System Dynamics and Control”, Morgan State University, PWS Publishing, 1998. [35] C. Vogt, L.C. Wolf, R.G. Herrtwitch, H. Wittig, “HeiRAT - Quality of Service management for distributed multimedia systems”, Multimedia systems, 6(3), ACM/Springer, pp. 152-166, 1998. [36] J. Walpole, C. Krasic, L. Liu, D. Maier, C. Pu, D. McNamee, D. Steere, ”Quality of Service Semantics for Multimedia Database Systems,” Database Semantics: Semantic Issues in Multimedia Systems, ed. R. Meersman, Z., S. Stevens, Kluwer Academic Publishers, Jan. 1999 [37] D.L. Wells, J.A. Blakely, C.W. Thompson, “Architecture of an Open Object-Oriented Database Management System”, IEEE Computer, Oct. 1992 [38] A. Zinky, D.E. Bakken, R.D. Schantz, “Architectural Support for Quality-of-Service for CORBA Objects”, Theory and Practice of Object Systems, Vol.3, No.1, 1997.