About LSAM Request Routing

-----

LSAM Auto-Configuring Daemon

The auto-configuring hierarchy system is currently implemented as a separate daemon that is started by Apache (eventually, we expect to integrate this functionality as a standard Apache module). This daemon ('tree') reads the httpd.conf file looking for its configuration directives, and REWRITES the httpd.conf file to add a line as follows:

ProxyRemote * http://address.of.parent.proxy

The daemon does not add the "ProxyRemote" directive if there is already a manually configured "ProxyRemote" directive in the file. Further, directives added by the auto-configuration daemon are marked as such, so later instances of the daemon may override them.

Configuration Directives

In order to make minimal changes to the Apache code (i.e. the configuration parser) and still have our configuration directives appear in the standard httpd.conf file, the directives for auto-configuration of the hierarchy appear as comments within the Apache httpd.conf file. The directives are as follows:

  • # LsamRoutingNodeType {ClientProxy, NoParentProxy, SelfConfiguringProxy}
    ClientProxy will accept no children, NoParentProxy will forward to origin servers rather than within the hierarchy, and all other proxies should be a SelfConfiguringProxy.

  • # LsamRoutingMulticastAddr -224.x.y.z-
  • # LsamRoutingMulticastPort -portnumber-
  • # LsamRoutingUnicastPort -portnumber-
    These are the addresses and ports used by the daemon to discover neighboring proxies, and to exchange hierarchy information. All proxies MUST use the same values; defaults will be compiled into later releases.

  • # LsamRoutingSearchMinHops -smallinteger- (e.g. 3)
  • # LsamRoutingSearchMaxHops -smallinteger- (e.g. 10)
  • # LsamRoutingSearchMinNeighbors -smallinteger- (e.g. 3)
    These values configure the search bounds for neighbor discovery. The minimum and maximum values for an increasing hopcount multicast search, and a target number of neighbors which is sufficient to end the search.

  • # LsamRoutingMaxDepth -smallinteger- (e.g. 5)
    Value to limit maximum depth of the request routing tree. Since each proxy forward adds delay, this allows a "fuzzy" upper bound to be imposed on this delay.

  • # LsamRoutingMaxChildren -integer- (e.g. 20)
    Value to limit the number of children forwarding through this proxy; too many children will cause the cache to cycle too quickly, and reduce hit rate and cache effectiveness.

    Building the Daemon (from README.lsam)

    #ifdef _LSAM_R (surya). Experimental. Fork off a separate request routing process that will dynamically configure apache to redirect http request to neighboring caches. In this stage, the process will build a hierarchy for requests aggregation. Further stages will include cut-through mechanism. Current modification to apache will assume that the routing process (named 'tree') is in "/usr/local/sbin", and it has not been integrated to apache Makefile. It can be build manually by typing 'make' at "modules/extra/lsam.routing".

    -----

    LSAM home ISI home Page maintainer: Steve Hotz Last modified: Mon Jan 6 10:48:20 1997 Copyright © 1996 by USC/ISI