next up previous
Next: The Proxycizer Tool Suite Up: A Taste of Crispy Previous: Replicated Partial Directory

   
Implementation of Crispy Squid

We have modified both version 1.1.20 and version 1.2.beta20 of the Squid cache to replace its hierarchical multicast ICP probes with CRISP directories in a variety of configurations. The extensions are localized in a new remote map module added to the Squid implementation. Figure 2 illustrates the structure of the resulting system, Crispy Squid.


 
Table 1: Methods of the Crispy Squid map module.
 

Method Description
init() Initialization
touch_c() Called on a local cache hit, to identify when an object was accessed.
query_c() Called on a local cache miss, used typically to query the local map
or a remote mapping server.
advertise_c() Called when a cacheable object has completed its transfer into the
local cache.
unadvertise_c() Called when a cacheable object is discarded from the local cache.
query_s() Called on receipt of a query/advertise/unadvertise message for an
advertise_s() object from a remote caching server.
unadvertise_s()  



  
Figure 2: Crispy Squid. Non-shaded modules are extensions to Squid.
\begin{figure*}
\centering
\epsfig{file=crispysquid.eps, width=4in}\end{figure*}

Any Crispy Squid server can be configured to act as a mapping server, a caching proxy server, or both. Each mapping server can be configured to maintain some or all of the global map, according to the policies described in Section 2.2. The configuration is specified with new fields in the Squid configuration file, and captured at startup time within the remote map module, which handles all incoming and outgoing queries on the cache directory. Figure 2 shows the relationship of the remote map module to other modules in the system.

In some configurations, the remote map module may maintain a local replica of some or all of the global directory. This replica is referred to as the local map. The local map is distinct from the local cache directory maintained by the store manager; the former is a local map of remotely cached objects, while the latter is a local map of locally cached objects. Table 2.2.2 lists the methods used to query the map and notify it of changes to the local cache contents; the configuration determines the behavior of these methods, e.g., whether a particular query is directed at the local map or a remote mapping server.

This structure is general enough to implement several directory configurations (including Squid's default policy), while placing most policy-specific code in one location and disrupting as little of the original Squid machinery as possible.


next up previous
Next: The Proxycizer Tool Suite Up: A Taste of Crispy Previous: Replicated Partial Directory
Syam Gadde
1998-05-19