Hi,

I think I understand...and this version now properly handles redirect 
assignments.  I'm excited for people to test this because it doesn't seem to 
crash anything, well then there's the router that seems to have some wccp bug 
in it, but I can't figure that out.

It still doesn't handle the standard wccp (standard service0) which puzzles 
me--the router says service mismatch and doesn't provide more useful 
information.  It knows it is 0:0 but something about my definition it doesn't 
like, very odd.

To test this you'll need to mod the cf.data.pre bits a little to include 
Config.Wccp2.router_id (yeah I know bad bad bad) we're really not a router id 
and so perhaps we should be a cache_id

and you'll want to make Config.Wccp2.routers (note the s) be a wordlist.

This doesn't do multicast yet, but I want to get unicast working first, then 
I'll think about multicast.

It doesn't check to make sure everybody is seeing him, this not really a 
problem in unicast mode but multicast mode will definitely cause problems no 
question about that.

For now it only handles one cache.  As I finally understand the hash bits a 
little, there are some comments about how one might decide to roll across 
caches--me not being a squid developer really I don't have much thought on how 
one might accomplish round-robining but maybe somebody could take some of the 
same ideas and put them into the code.

It does not understand "alternate assignment"

and looks like the wccp module for hte kernel might need to be modified--it 
assumes  standard/0 for service only (I think, if I understand the code)

well hopefully somebody can at least get it to compile.  It does seem to work 
in a multirouter setup though.

sorry about top-posting the mail software sucks :(

_J

>>> Henrik Nordstrom <[EMAIL PROTECTED]> 03/13/06 5:41 AM >>>
sön 2006-03-12 klockan 23:04 -0500 skrev Jeremy Hall:

> I'm not sure whether it is a good idea to wait until routers are
> included (until we're 2waying with them, somebody understanding te
> protocol better than I would have great comments I'm sure)

There is multiple negotiations going on.

a) router<->cache negotiation. This is the "HERE_I_AM -> I_SEE_YOU"
handshake. It is completed by the cache getting included the list of
cache servers in I_SEE_YOU messages from the router, which requires a
"HERE_I_AM -> I_SEE_YOU -> HERE_I_AM -> I_SEE_YOU" sequence (first three
to verify connectivity, the last to inform the designated cache you are
available..)

b) Election of the designated cache. Ther is an election algorithm
(outside the protocol) defining which cache is the designated cache. The
recommended algorithm is that the cache with the lowest IP gets elected.
The list of potential designated cache servers is found in the I_SEE_YOU
packets. If you are not there, or not the lowest IP there then you are
not the designated cache.. 


c) designated cache -> router assignment using REDIRECT_ASSIGNMENT
messages, based on the information it received in the I_SEE_YOU packet
from the router.


In service groups the designated cache election gets a little messy as
each router maintains it's own WCCP state and things can get out of sync
if not all equipment is configured proper or some device is restarted.
Consider for example a potential designated cache only announcing itself
to a subset of the routers in the service group.. but these fine details
can be left to deal with later.. The 1.5 HERE_I_AM_T delay helps a lot
in reducing this.


Regards
Henrik

Attachment: wccpv2.2.c
Description: Binary data

Reply via email to