MOJOHON: a channel-driven communication architecture for applications deployed on the internet

We present a layered architecture, named MOJOHON, designed to allow the communication among two or more instances of a distributed application while maintaining a high level of abstraction with respect to the communication facilities available. MOJOHON, which encompasses distributed modules for transmission, reception, reflection, adaptation, monitoring and configuration, has been defined so as to be used by applications to exchange control and data messages even when instances of the applications are unable to directly address each other -- for instance, when one or more instances are running behind NAT. We also present a proof-of-concept multimedia application, developed using MOJOHON, which uses an asynchronous communication middleware for control message exchange and RTP/UDP datagrams for data exchange.