GOPI: A Generic Object Platform Infrastructure

GOPI is a distributed object-based middleware platform, or object request broker, that is intended to support soft real-time/ multimedia applications in a distributed environment. A key principle of the GOPI approach is that media-streams should be treated as first-class entities in the object-based distributed environment. For example, they should be visible in IDL definitions and handled in the same resource management environment as standard object invocations.

Our belief in the GOPI project is that resource management support for distributed multimedia applications must be provided at the system level-at least within the middleware platform and perhaps also in the operating system. The GOPI work to date has focused on the former (we have previously addressed the issue of operating system support for soft real-time/ multimedia applications in the SUMO project). In particular, we have developed a low-level middleware 'micro-platform', GOPI core, that can be used to underpin a distributed object API or personality such as (a multimedia extended) CORBA or RM-ODP.

The GOPI platform is structured as two parts, GOPI core and GOPI ORB, in a microkernel-inspired manner as described next (n.b. this two-layer architecture also has its roots in the above-mentioned SUMO project)

GOPI Core

GOPI core is a low-level middleware 'micro-platform' (cf. microkernel), the design of which is influenced on the one hand by the specific needs of real-time/ multimedia applications and on the other hand by recent research results in the efficient engineering of communications systems and operating systems.

The platform provides support for quality of service (QoS) and application specific protocols as required by multimedia capable distributed object systems. A novel scheme for flexible QoS specification and management (e.g. QoS renegotiation) is also included. In addition, GOPI core includes a sophisticated concurrency package that (simultaneously) supports threads with various semantics (e.g. pre-emptive, non-pre-eemptive, timesliced) that are in turn supported by a range of scheduling policies.

We've also written a paper on operating system support [Moonian,02] that can (optionally) be applied to enhance the predictability of GOPI's scheduling support.

You can get papers relating to GOPI core (i.e. [Coulson,97], [Coulson,98], [Coulson,99a], [Coulson,01], [Coulson,02a], and [Coulson,02b]) via the annotated publications list below. [Coulson,02b] is a good place to start.

A PowerPoint presentation on GOPI core is available here.

GOPI ORB

GOPI ORB is a distributed object 'personality', or API, that builds on the low-level GOPI core. Note that GOPI ORB is only an exemplar of an API that can run on top of GOPI core; in principle, GOPI core can support multiple such APIs-even simultaneously.

GOPI ORB provides a CORBA-compatible programming model that is extended with stream bindings and QoS specification/ management. Again, papers relating to GOPI ORB (i.e. [Coulson,99b], [Coulson,00], [Coulson,01], [Coulson,02a], and [Coulson,02b]) can be downloaded via the annotated publications list below. Once more, [Coulson,02b] is a good place to start.

More Recent Work: Beyond GOPI

In our more recent work, we have built on the basic micro-platform/ personality architecture explored in SUMO and GOPI, and have investigated the use of reflection and componentisation in the structuring of middleware platforms. Our work in this area (e.g. in the OpenORB middleware) is described here.

GOPI Publications List

[Coulson,97] Coulson, G. and Clarke, M.W., "A Distributed Object Platform Infrastructure for Multimedia Applications", Proc. 3rd Workshop on High Performance Protocol Architectures (HIPPARCH'97), Uppsala, Sweden, June 1997.

This early workshop paper sets out the GOPI agenda and describes our early implementation work.

[Coulson,98] Coulson, G. and Clarke, M.W., "A Distributed Object Platform Infrastructure for Multimedia Applications", Computer Communications, Vol 21, No 9, pp 802-818, July 1998.

This is the full length journal version of the above.

[Coulson,99a] Coulson, G., "A Configurable Multimedia Middleware Platform", IEEE Multimedia Magazine, Vol 6, No 1, pp 62-76, IEEE Press, January-March 1999.

This paper focuses in detail on GOPI core and its assumed operating system environment.

[Coulson,99b] Coulson, G., Baichoo, S., "A Distributed Object Platform for Multimedia Applications", Proc. IEEE Multimedia Systems, Florence, Italy, ISBN 0-7695-0253-9, pp 122-126, June 1999.

This conference paper describes the first version of GOPI ORB.

[Coulson,00] Coulson, G., Baichoo, S., "Experiences in Implementing a Distributed Object Platform for Multimedia Applications", Software Practice and Experience, Vol 30, pp 663-683, 2000.

This is the full length journal version of the above. It argues in detail for GOPI's approach of supporting media-streams as first class objects. It also provides performance figures that demonstrate that GOPI ORB performs well enough to simultaneously support both CORBA invocations and media-streams simultaneously.

[Coulson,01] Coulson, G., Baichoo, S., "Implementing the CORBA GIOP in an High-Performance Object Request Broker Environment", ACM Distributed Computing Journal, Vol 14, No 2, pp 113-126, Springer Verlag, April 2001.

This paper focuses in detail on GOPI core's implementation of CORBA GIOP. This implementation incorporates almost all currently known optimisations and adds several new ones. It is demonstrated that GOPI ORB, running over GOPI core's GIOP, out-performs a number of current commercial and research ORBs that claim speed as a prime attribute.

[Coulson,02a] Coulson, G., Moonian, O., "A Quality of Service Configurable Concurrency Framework for Object-Based Middleware", Concurrency and Computation: Practice and Experience, to appear, 2002.

This paper focuses on GOPI core's sophisticated concurrency package that (simultaneously) supports threads with various semantics (e.g. pre-emptive, non-pre-eemptive, timesliced) that are in turn supported by a range of scheduling policies.

[Coulson,02b] Coulson, G., Baichoo, S., Moonian, O., "A Retrospective on the Design of the GOPI Middleware Platform", ACM Multimedia Journal, to appear, 2002.

This paper is a retrospective of the GOPI project (as of late 2001) and provides an overview of the work and a discussion of the GOPI approach to supporting multimedia in a middleware environment.

[Moonian,02] Moonian, O., Coulson, G., "Round Robin with Sharetokens: a CPU Scheduler for Heterogeneous Application Mixes", Internal Report, submitted for publication, 2002.

This paper describes an operating system scheduler that provides the abstraction of virtual processors that can deliver predictable CPU bandwidth. The scheme has been used to underpin GOPI's user-level scheduler framework to yield predictable processing QoS.

 
 
 
 
 
 
 
 
 
 
 
 
GOPI