Re: cvs commit: squid/src cf.data.pre wccp2.c

From: Paul P Komkoff Jr <i@dont-contact.us>
Date: Thu, 25 May 2006 00:02:40 +0400

Replying to Henrik Nordstrom:

Be advised, that you can encounter unexpected difficulties with wccp
protocol starting from linux kernel 2.6.16. In this kernel code path
which assings IP ID to UDP packets was changed; IP ID on packets
leaving from unconnected datagram socket with DF set is always 0.

Cisco ios 12.4.7 and 12.4.8 (and I assume that all previous versions
too) threating these packets as duplicates, and ingnores all except
the first HIA.

Although I haven't tested the exact pattern implemented in wccp2.c
(I'm using my own python implementation), I think your results will be
the same as mine.

And it you do connect() on socket, the IP ID will be nonzero but you
will lose incoming packets from hosts other than connected.

I've implemented a workaround here. For the first time, I thought I
can use n+1 sockets - one for each router in the view for sending, and
another one bound to local port 2048 - for receiving. But after some
initial testing I've discovered Cisco IOS violating not only
ancient RFCs (RFC791) but it violates Cisco's own draft.

I_See_you (and removal_query) packets are going to sending side of
individual sockets - instead of port 2048 on my ost, as I expected.

So, my current implementation which works with 2.6.16 kernel creates
individual socket for each router in the view and using these for both
sending and receiving.

Hope this will avoid some debugging :)

-- 
Paul P 'Stingray' Komkoff Jr // http://stingr.net/key <- my pgp key
 This message represents the official view of the voices in my head
Received on Wed May 24 2006 - 15:00:31 MDT

This archive was generated by hypermail pre-2.1.9 : Thu Jun 01 2006 - 12:00:04 MDT