Microsoft Internet Security and
Acceleration Server 2004 SDK
ISA Server uses the Cache Array Routing Protocol (CARP) to
provide seamless scaling and efficiency when using multiple ISA
Server computers that are arrayed as a single logical cache. CARP uses hash-based routing to
determine the best path through an array to resolve a request.
The request resolution path is based upon a hash of array member
identities and Uniform
Resource Locators (URLs). For any given URL request, the
browser or downstream proxy server will know
exactly where in the array the information will be stored. The
request resolution path indicates if the information was already
cached from a previous request, or has to be obtained from the
Internet and then cached for future requests.
CARP provides powerful benefits:
Because CARP determines the best request resolution path, there
is no query messaging between proxy servers, as is found with
conventional Internet Cache Protocol (ICP) networks. By doing this,
CARP avoids the heavier query congestion that normally occurs with
a greater number of servers.
CARP eliminates the duplication of contents that otherwise
occurs on an array of proxy servers. With an ICP network, an array
of five proxy servers can rapidly evolve into duplicate caches of
the most frequently-requested URLs. The hash-based routing of CARP
keeps this from happening by allowing all five ISA Server computers
to exist as a single logical cache. The result is a faster response
to queries and a far more efficient use of server resources.
CARP has positive scalability. Due to its hash-based routing
and its resultant independence from peer-to-peer pinging, CARP
becomes faster and more efficient as more proxy servers are added.
ICP arrays must conduct queries to determine the location of cached
information, an inefficient process that generates extraneous
network traffic. ICP arrays have negative scalability: the
more servers added to the array, the more querying required between
servers to determine location.
CARP automatically adjusts to additions or deletions of servers
in the array. The hash-based routing means that, when a server is
either taken offline or added, only minimal reassignment of URL
caches is required.
CARP ensures that the cache objects are either distributed
evenly between all servers in the array or by the load factor that
you configure for each server.
How CARP Works
The CARP process provides efficient routing for requests.
All servers are tracked through an array membership list, which
is maintained in Active Directory. Array members are notified when
servers are added or removed from the array.
Periodically, the Web proxy client or a downstream server polls
and, if necessary, updates the array membership list.
Web proxy clients send an array.dll?Get.Routing.Script
request to the member
Downstream servers send an array.dll?Get.Info.v1 request
to the member server.
When requesting an object, the client or downstream server uses
the membership list, together with a hash function it computes for
the name of each requested URL, to determine which server should
service the request.
The hash value of the URL is combined with the hash value for
each ISA Server. The URL+ISA Server hash that comes up with the
highest value becomes "owner" of the information cache.
The server checks if it should handle the request. If not, then
it sends the request to another member server, specifying that
server's intra-array IP address. The sending member provides its
authentication information to the receiving member. In a publishing scenario, it
also provides the GUID
of the publishing rule.
Once a server has been selected to handle the request, it does
so, applying the ISA Server rule if necessary.
The result is a location for all cached information, meaning
that the Web browser or downstream server can know exactly where a
requested URL is either already stored locally or will be located
after caching. Because the hash functions used to assign values are
so numerous, the load is statistically distributed and balanced
across the array.
The request resolution path that CARP provides means that there
is no need to maintain massive location tables for cached
information. The browser simply runs the same math function across
an object to determine where it is.
Because ISA Server computers in an array may have different
hardware and some may be more powerful than others, you may want to
divide the cache load accordingly. For this reason, you can
configure the CARP functions, specifying the load factor for any
given server in the array.
Furthermore, you can configure CARP differently for incoming and
outgoing Web requests. For example, CARP can be enabled for all
outgoing Web requests, and disabled for all incoming Web