Thursday, June 11, 2009

Dalesa - Cache (Dcache) a Distributed Web Cache Based on Libdalesa

At LSF we have developed a P2P web cache which has the potential to replace any centralized web cache like Squid. This is the project which I have lead, designed and coded so far with two other guys named Nuwan and Nishshanka. At the moment code which is still being developed is available here. You can get it's full functionality at the moment though it is not ready for a release yet due to some missing pieces like admin web UI component and win32 port. The software comes in two components. The core of the system is libdalesa, it is the core library we have developed as a group communication framework. The other component is dcache which is the web cache that uses libdalesa for remote cache object lookups. libdalesa is a generic framework for group communication which currently supports IP multicasting. However in the future we will make it an abstract layer which will encapsulate numerous group communication protocols like Pastry/Scribe. Once it is completed there will be more innovations based on libdalesa group communication framework apart from dcache. The architectural diagram is illustrated in Figure 1.

The dcache has to be installed in all nodes that are willing to take the advantage of the content mesh. Once installed, the browser or any user agent should start using it's local dcache as a proxy. dcache can then find nodes with cached URLs with appropriate freshness and promote them from peer proxy status to parent proxy state on the fly and on a per request basis. The Figure 2 illustrates how dcache operates in a networked environment. dcache supports following HTTP features as well.

  1. Persistent connections

  2. HTTP pipe-lining

  3. HTTP tunneling

  4. Caching based on Expire, ETag, Last-Modified-Date, Cache-Control headers

We have tested this system on IEEE 802.11a/b/g networks in both infrastructure and ad-hoc mode and also in IEEE 802.11s mesh networks. Performance in those networks were fine and up to the expectations. Right now we are busy porting the system to Windows platform, in next couple of weeks we will hopefully complete the Windows port and the Admin UI driving the project towards it's first release.