Re: [squid-users] forwarding looping: acceptable for my config ?

From: Henrik Nordstrom <hno@dont-contact.us>
Date: Tue, 8 Jan 2002 10:45:56 +0100

On Tuesday 08 January 2002 09.20, Stuart Smith wrote:

> Ah, well, thats what I'd have thought, but without it, as squid is a
> child, with one parent it expects all requests to be services from its
> parent (my process). So requests for content outwith the domain my
> process is serving (cnn.com in this example), will not be serviced by
> me. Squid won't go direct as it's a child, so user requests fail.

What error are you returning when you receive requests not acceptable to
you?

> Well, I'd certainly like to get rid of it too. I seems a bit of a bodge,
> but hopefully your first suggestion (ICP_MISS_NOFETCH) might work.

What works is if your "psuedo parent" are returning a correct HTTP error
when you receive HTTP requests you won't forward.

Returning ICP_MISS_NOFETCH helps, as this tells the requesting Squid that
while you are indeed a parent, you cannot accept that request at this time.

The fact that "the looping" works around the problem with you not
returning correct errors is in fact a minor "bug/misfeature" in the peer
selection algorithms and is not guaranteed to remain so. Squid currently
only selects one peer as a viable path for forwarding the request, where
it most often should select a few of your configured peers in priority
order. This bug/misfeature is quite notable when behind a firewall
(never_direct allow), but to lessen the negative impact in such
configurations Squid then adds all your configured parents as possible
"ANY" paths.

DIRECT is always added as a last resort, used if Squid fails to forward
the request using any of the selected peers.

The gory details of how peer selection builds the list of viable paths:

0. Peer selected by cache digests (HIT only)
1. Peer selected by ICP
if always_direct allow, or other "always direct" cases:
   2. Direct
if never_direct allow
   2. Some parent
   3. All parents, in the order listed in squid.conf
if prefer_direct on
   2. Direct
   3. Some parent
if prefer_direct off
   2. Some parent
   3. Direct

Definition of "Some parent":
   One of the following, in priority order
   a) "default"
   b) "round-robin"
   c) "First up" (in order of squid.conf)
   d) "Any" (basically first usable in squid.conf)

-- 
MARA Systems AB, Giving you basic free Squid support
Customized solutions, packaged solutions and priority support
available on request
Received on Tue Jan 08 2002 - 02:56:42 MST

This archive was generated by hypermail pre-2.1.9 : Tue Dec 09 2003 - 17:05:40 MST