[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ANTS-2.0 DANTE Dies



	I think I have a handle on this.  "DANTE Dies" is
inappropriate; "DANTE becomes Dreadfully Confused" is more precise.

	Assume that each time that I send a DANTE JOIN to a core node,
my edge node uses a different port number.  The first time that the
core node's DANTE server passes an acceptance reply for a given
virtual IP address to Node.java, sendToNeighbor() calls
addOutChannel(), which create a Nodeos output channel with the
then-current physical IP address and port and such of the edge node.
The mapping from virtual IP address to OutChannel is saved in a
Hashtable named outChannels.

	The next time that the DANTE code allocates the same virtual
IP address, the Node.java code merrily discovers that it already has
an OutChannel for the virtual IP address, and sends the packet down
it.  Unfortunately, at this point that's the *wrong* output channel,
because, as I said, my edge node uses a different port number each
time it sends a DANTE JOIN request, and the hashed OutChannel uses an
*old* port number.

	I don't see any way in Node.java to clear obsolete
associations from outChannels!

	The PrimordialNode routing table might be involved in this,
too, according to the comments in Node.java.  I haven't looked closely
enough to be sure.

	I see two avenues of attack on the problem.  The first would
be for Node.java to export something to Dante that can be used to
close the OutChannel for a virtual IP address and delete it from
outChannels.  The second avenue is that sendToNeighbor() (and
routeForNode()?) could be a little more paranoid, and check that the
physical parameters of the cached OutChannel match the actual
parameters of the capsule.

					Craig Milo Rogers




[ Janos ] [ OSKit ] [ Network Testbed ] [ Flick ] [ Fluke ]
Flux Research Group / Department of Computer Science / University of Utah