Distributed applications are becoming increasingly complex, offering rich and powerful services to their users. In order to offer satisfactory performance, these applications are also becoming increasingly demanding in terms of communication support. It is easy to find applications that require the simultaneous use of several communication channels, such as virtual environments, distributed simulation and computer supported collaborative work (CSCW).

One particularity of these applications is the need to exchange and disseminate several kinds of data, each with different quality-of-service requirements. Text messages or blocks in a file transfer, for example, are expected to be reliably delivered in FIFO order while in video streams some packets can be lost. As a result, these applications tend to rely on the use of multiple communication channels. It is easy to find communication substrates that support the use of several independent channels. However, in multi-channel applications there are often inter-channel constraints that need to be preserved to simplify the application logic. For instance, one may need to enforce FIFO, causal or total order constraints across channels, to cipher data in different channels using the same session key, or to ensure that consistent failure detection information is provided to all channels. If the protocol kernel does not provide any support for coordination among channels, this burden is left to the application designer.

A promising approach to tackle the complexity of these systems is to rely on configurable communication architectures that are able to support component re-utilization and composition. Recent protocol kernels, such as Ensemble and Coyote offer an environment where "off-the-shelf" micro-protocols can be combined to obtain different QoSs. However, few systems provide support for the coordination of multiple channels. Maestro and CCTL support coordination only at a limited set of properties such as membership or ordering. Inter-channels constraints that were not anticipated by these kernels still have to be implemented at the application level. Appia is a protocol kernel that offers a clean and elegant way for the application to express inter-channel constraints. This feature is obtained as an extension to the functionality provided by current systems. Thus, Appia retains the flexible and modular design that has previously proven to be advantageous, allowing communication stacks to be composed and reconfigured in run-time.

This page was last modified 17:19, 17 April 2006. This page has been accessed 8,994 times.


Copyright © 2006-2007 DIALNP - FCUL