[PATCH] Dynamic adaptation plans that cross vectoring points

From: Alex Rousskov <rousskov_at_measurement-factory.com>
Date: Tue, 15 Mar 2011 16:23:56 -0600

Support dynamic adaptation plans that cover multiple vectoring points.

The dynamic adaptation plan is specified using X-Next-Services ICAP
header or eCAP meta-info, as usual. A REQMOD adaptation service may
construct an adaptation plan that starts with REQMOD and ends with
RESPMOD. Multiple adaptations may be planned at each point.

The natural transaction handling order must be preserved: the plan
cannot go from RESPMOD back to REQMOD.

Adaptation::History object is used to keep future plan steps when
crossing vectoring points.

This change enables REQMOD services to schedule request-specific
response adaptation. For example, when the request is from a child,
appropriate content filtering needs to be applied to the response.

In some cases, such decisions can be done in squid.conf, but the
request state required to make the schedule may be too complex or even
not known to Squid core. In most cases, such decisions can be done in
the RESPMOD service (which always has access to request headers), but
that requires sending _all_ responses to that service unconditionally,
which often creates significant performance penalties. In both
scenarios, an adaptation schedule build by a REQMOD service may solve
the problem nicely.

AFAIK, the 3.1 code this patch is based on has been deployed for many
months without known problems.

Thank you,

Alex.

Received on Tue Mar 15 2011 - 22:24:05 MDT

This archive was generated by hypermail 2.2.0 : Wed Mar 30 2011 - 12:00:08 MDT