Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

persistent forwarding loop

1,188 views
Skip to first unread message

Matija Grabnar

unread,
Jan 11, 2000, 3:00:00 AM1/11/00
to squid...@ircache.net
I have a child cache (Squid-2.3Stable1) and a parent cache (Squid-2.2Stable5).
The child cache has never_direct allow all, and the parent cache as a parent.

Both caches were compiled with --enable-digest, but the child cache is
unable to fetch the digests from the parent: every time I get

2000/01/11 10:25:46| WARNING: Forwarding loop detected for:
GET /squid-internal-dynamic/netdb HTTP/1.0
Host: 193.2.1.88:3128
Via: 1.0 rzenik:3128 (Squid/2.3.STABLE1), 1.0 proxy.arnes.si:3128
(Squid/2.2.STABLE5)
X-Forwarded-For: unknown, 193.2.1.232
Cache-Control: max-age=259200
Connection: keep-alive

I have checked and rechecked the configuration file for the parent and I don't
see any lines where it could be refering to itself. I tried looking for the
hostname as well as for the IP number, but couldn't find anything suspicious.

I tried setting the parent cache as sibling, but that just made it impossible
to fecth _anything_ (as the comment in the configuration file suggests).
I tried removing the never_direct in the child, but that didn't help either.

Could someone tell me what else I can check in the parent's or the child's
configuration file?


Henrik Nordstrom

unread,
Jan 12, 2000, 3:00:00 AM1/12/00
to Matija Grabnar
Matija Grabnar wrote:

> Both caches were compiled with --enable-digest, but the child cache is
> unable to fetch the digests from the parent: every time I get
>
> 2000/01/11 10:25:46| WARNING: Forwarding loop detected for:
> GET /squid-internal-dynamic/netdb HTTP/1.0


This isn't a digest exchange, it is a netdb exchange. Apparently the
parent is built without netdb/icmp support (the default)

If you add no-netdb-exchange to the cache_peer line in the child cache,
or rebuild it without icmp support then the error should cease.

--
Henrik Nordstrom
Squid hacker


Matija Grabnar

unread,
Jan 12, 2000, 3:00:00 AM1/12/00
to Henrik Nordstrom
> This isn't a digest exchange, it is a netdb exchange. Apparently the
> parent is built without netdb/icmp support (the default)
No, the parent is built WITH netdb/icmp support. I think I must be missing
something in the configuration file or something like that. I'm sure it will
turn out to be a stupid mistake on my part once I solve it...

Anyway, here is the same message for digest.... ( I didn't notice that I was
getting two different messages until you pointed it out.) And before you ask,
the parent IS compiled with --enable-digest

GET /squid-internal-periodic/store_digest HTTP/1.0
Accept: application/cache-digest
Accept: text/html
Host: 193.2.1.88:3128
Via: 0.0 rzenik.arnes.si:3128 (Squid/2.3.STABLE1), 1.0 proxy.arnes.si:3128

(Squi
d/2.2.STABLE5)
X-Forwarded-For: unknown, 193.2.1.232
Cache-Control: max-age=259200
Connection: keep-alive

--
"My name is Not Important. Not to friends.
But you can call me mr. Important" - Not J. Important
Matija....@arnes.si

Alex Rousskov

unread,
Jan 13, 2000, 3:00:00 AM1/13/00
to Matija Grabnar
On Wed, 12 Jan 2000, Matija Grabnar wrote:

> No, the parent is built WITH netdb/icmp support. I think I must be missing
> something in the configuration file or something like that. I'm sure it will
> turn out to be a stupid mistake on my part once I solve it...

Can you reproduce the problem by manually sending the same request? Try
manually sending that request to the parent and perhaps enable some
debugging on the parent.

$0.02,

Alex.


Henrik Nordstrom

unread,
Jan 13, 2000, 3:00:00 AM1/13/00
to Matija Grabnar
I see three alternatives:

a) The parent hasn't generated it's digest yet

b) There is a naming error, either in the cache_peer line on the
child/sibling, or the parents visible_hostname.

c) The parents primary http port isn't 3128. The primary http port is
the first http_port entry in squid.conf.

From looking at the request, (b) seems most likely. It looks like you
have configured the child/sibling cache using the IP address of the
parent in the cache_peer line.

Configuration options:

a) Configure the sibling/child cache using the parents visible_hostname
as the peer name in cache_peer.

b) Add the IP address as an known alias in the parents squid.conf
(hostname_aliases).

c) It may work if you add a always_direct entry forcing the
sibling/child cache to go direct to the parent as a web server when
fetching internal objects from it.

/Henrik

Duane Wessels

unread,
Jan 14, 2000, 3:00:00 AM1/14/00
to Matija Grabnar

On Tue, 11 Jan 2000, Matija Grabnar wrote:

> I have a child cache (Squid-2.3Stable1) and a parent cache (Squid-2.2Stable5).
> The child cache has never_direct allow all, and the parent cache as a parent.
>

> Both caches were compiled with --enable-digest, but the child cache is
> unable to fetch the digests from the parent: every time I get
>
> 2000/01/11 10:25:46| WARNING: Forwarding loop detected for:
> GET /squid-internal-dynamic/netdb HTTP/1.0

> Host: 193.2.1.88:3128
> Via: 1.0 rzenik:3128 (Squid/2.3.STABLE1), 1.0 proxy.arnes.si:3128

> (Squid/2.2.STABLE5)
> X-Forwarded-For: unknown, 193.2.1.232
> Cache-Control: max-age=259200
> Connection: keep-alive
>

> I have checked and rechecked the configuration file for the parent and I don't
> see any lines where it could be refering to itself. I tried looking for the
> hostname as well as for the IP number, but couldn't find anything suspicious.
>
> I tried setting the parent cache as sibling, but that just made it impossible
> to fecth _anything_ (as the comment in the configuration file suggests).
> I tried removing the never_direct in the child, but that didn't help either.
>
> Could someone tell me what else I can check in the parent's or the child's
> configuration file?

One thing that can cause a forwarding loop is when your cache has
multiple hostnames. If the child cache uses a different hostname
than the parent cache's "primary" name, then it might not be
recognized as an "internal" request.

The way to fix it with 2.3 is to add other known hostnames to
the hostname_aliases option in squid.conf.

Duane W.


Matija Grabnar

unread,
Jan 14, 2000, 3:00:00 AM1/14/00
to squid...@ircache.net
> The way to fix it with 2.3 is to add other known hostnames to
> the hostname_aliases option in squid.conf.
I don't dare put 2.3 on my parent cache (which a production cache) until
I've tested it througly. This came up as part of the testing.

More news about my digest problem: while restarting the cache, I suddenly
saw this go by in cache.log:
2000/01/14 10:42:38| Local cache digest is 'off'

Now, I could have sworn that I have cache compiled with --enable-digest.
But just in case, I recompiled and reinstalled, and it didn't help.
I didn't see any commands in 2.2.S5 squid.conf that would control local cache
digest. I tried copying commands presend in 2.3.S1 squid.conf
(digest_generation), but 2.2.S5 says they are not recognized.

So I guess the problem _realy_ is that my parent doesn't generate digests,
but I still can't figure out, WHY NOT?

Henrik Nordstrom

unread,
Jan 14, 2000, 3:00:00 AM1/14/00
to Matija Grabnar
Matija Grabnar wrote:

> More news about my digest problem: while restarting the cache, I suddenly
> saw this go by in cache.log:
> 2000/01/14 10:42:38| Local cache digest is 'off'

Then it isn't built with digest support.

Maybe you forgot a make clean, misspelled --enable-cache-digests option
or simply isn't running the binary you think you are.

Panagiotis Malakoudis

unread,
Jan 14, 2000, 3:00:00 AM1/14/00
to squid...@ircache.net
Hi,

i am looking for a way that when the squid server receives a request from
net say : 10.1.1.0/24, it will make a query on the apropriate server using
the address 10.0.1.2/24, but when it receives it from 10.0.2.0/24 it should
make the querry using the ip address 10.0.2.2/24.
The server will have the ip address of 10.0.1.2/16 (which will be the
address the clients will only now).
Is that possible?. Can it be accomplished in cooperation with another tool?

Panagiotis S. Malakoudis

Systems Administrator
SPACE HELLAS S.A.

Matija Grabnar

unread,
Jan 14, 2000, 3:00:00 AM1/14/00
to Henrik Nordstrom
> Then it isn't built with digest support.
>
> Maybe you forgot a make clean, misspelled --enable-cache-digests option
GRRRR. Yes, that was it: I had --enable-cache-digest instead of
--enable-cache-digests.
In my defense, I posted the full command line for configure and nobody spotted
the typo.

Is there any way to force configure to die if it comes across an option it
doesn't understand?

Henrik Nordstrom

unread,
Jan 15, 2000, 3:00:00 AM1/15/00
to Matija Grabnar
Matija Grabnar wrote:

> Is there any way to force configure to die if it comes across an option it
> doesn't understand?

Not that I know of. That feature is intentional of GNU autoconf, to
allow the same configure options to be passed to a hierarchy of various
packages with their own configure scripts. Chainging GNU autoconf to
have an option for strict argument checking is not something I'd like to
dive into.

A plausible option would be to make more of the selectively enabled
features build by default and instead controlled runtime from squid.conf
with only selected --disable-... configure options for completely
removing features some may not want to have at all.

0 new messages