Microsoft Internet Security and Acceleration Server 2004 SDK

Cache Array Routing Protocol

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:

How CARP Works

The CARP process provides efficient routing for requests.

  1. 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.
  2. Periodically, the Web proxy client or a downstream server polls and, if necessary, updates the array membership list.
  3. 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.
  4. 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.
  5. 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.
  6. 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 requests.