A middleware approach to building content-centric applications

Recent years have seen a huge proliferation in the use of content in distributed applications. This observation has been exploited by researchers to construct a new paradigm called content-centric networking. Within this paradigm, applications interact with the network using a simple content request/reply abstraction. The network is then responsible for routing this request towards the 'nearest' provider that can offer the content. This process therefore exploits the observation that applications rarely have a vested interest in where their content is obtained from. However, it currently ignores the fact that many applications similarly have no interest in how their content is obtained, as long as it falls within certain requirement bounds (e.g. performance, security etc.). Consequently, existing content-centric interfaces offer no support for stipulating such abstract requirements. This thesis therefore proposes an extension of the content-centric abstraction to include the concept of delivery-centricity. A delivery-centric abstraction is one that allows applications to associate (high-level) delivery requirements with content requests. The purpose of this is to offer access to content in a specialised and adaptable way by exploiting an application’s ambivalence towards the underlying means by which it is acquired. Through this, applications can simply issue abstract requirements that are satisfied by the underlying system. These requirements can range from performance needs to more diverse aspects such as overheads, anonymity, monetary cost and the ethical policies of providers. Using the above principles, this thesis proposes the design of a new system that can offer a delivery-centric abstraction. This process is guided by key design goals, which dictate a solution should be interoperable with existing sources, highly deployable and extensible. Specifically, a middleware approach is taken, which results in the development of the Juno middleware. Juno operates by using configurable protocol plug-ins that can interact with various third party providers to discover and access content. Using these plug-ins, Juno can dynamically (re-)configure itself to deliver content from the sources that are most conducive with the application’s requirements. The thesis is evaluated using a number of techniques; first, a detailed study of real-world delivery protocols is performed to motivate and quantify the benefits of using delivery-centricity. Alongside this, Juno’s functional aspects (discovery and delivery) are also evaluated using both simulations and a prototype deployment to understand the performance, overheads and feasibility of using a delivery-centric abstraction. Throughout the thesis, performance is focussed on as the primary delivery requirement. It is shown that utilising a delivery-centric abstraction can dramatically increase the ability to satisfy this requirement, and that Juno’s approach fully supports such improvements. It is then concluded that placing delivery-centricity in the middleware-layer is a highly effective approach, and that it can be performed in a feasible manner to ensure that delivery requirements are met. The key contributions of this thesis are therefore, (i) the introduction of a new delivery-centric abstraction, (ii) the design and implementation of a middleware solution to realise this abstraction, and (iii) the development of novel technologies to enable content-centric interoperation with existing (and future) content providers.