[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [minion-cvs] Improve documentation
[cc'ing minion-dev]
On Mon, 2003-02-03 at 22:16, Lucky Green wrote:
> Nick,
> Before you write any more IPv4-specific code, allow me to please
> re-pitch you on supporting IPv6...
(BTW, none of the code I commited there was IPv4-specific)
The reason I haven't done IPv6 support is that it complicates path
selection a lot. If anybody can come with a (demonstrably!) good path
selection algorithm that works with a mixed IPv4/IPv6 network, I'd be a
lot keener to do IPv6.
For everybody's reference, here's the problem:
======================================================
Assumptions:
1) all nodes have outgoing IPv4 support, either directly or by the
0::FFFF:1.2.3.4 addresses.
2) only some nodes have outgoing IPv6 support
3) only some nodes have incoming IPv4 support.
4) only some nodes have incoming IPv6 support. If a node has incoming
IPv6 support, it has outgoing IPv6 support.
Possible assumption:
5) If a node has outgoing IPv6 support, it has incoming IPv6 support,
because IPv6 addresses are so plentiful. (????)
Consequences:
The network topology is no longer a clique. Every node can deliver to
nodes with IPv4 addresses, but only nodes with outgoing IPv6 support can
deliver _directly_ to nodes with IPv6 addresses but not IPv4 addresses.
Thus, our older path selection algorithm (choose nodes at random
without replacement) no longer works; a node with only an IPv6 address
_must_ be preceded by a node with outgoing IPv6 support. This can bias
the path selection algorithm.
Challenge:
There are 3 classes of nodes:
Class A (only IPv4 support)
Class B (IPv6 and IPv4 support, no incoming IPv4 address)
Class C (IPv6 and IPv4 support, with an incoming IPv4 address)
Class A can deliver messages to A and C.
Class B can deliver messages to B and C.
Class C can deliver messages to A, B, and C.
Create a path selection algorithm that chooses a random path from a
set of known servers from classes A, B, and C. Analyze it, and show
that it doesn't compromise anonymity.
======================================================
--
Nick Mathewson <nickm@alum.mit.edu>