Hi people,
I'm about to commit a patch that implements tunneling of the DHT traffic over TCP. The motivation is to make twister compatible with TOR (they do not support UDP, required by DHT).
So how this thing works?
The premise is that most of people will still be running twister outside TOR, thus with full internet connectivity including UDP. These nodes will behave as "DHT proxies" to nodes without UDP, relaying the traffic back and forward.
The TCP connection used is the same as the registration network, that is, the Bitcoin P2P protocol, now extended with DHT requests and replies commands.
Of course, some limits will be enforced, like maximum number of simultaneous DHT requests and total requests/second. If node misbehave it will be banned (Bitcoin closes connection).
Nodes requiring DHT proxy do not rely on any particular nodes for that service: they will randomly choose four connections to use for each DHT request they made. This should help to balance the load and also adds redundancy.
So far I have only tested it locally, so you might guess this is pretty much experimental.
Besides, I don't think we are tor-ready yet: the DHT traffic used for profiles, avatars etc has been tunneled but not the internal DHT requests from libtorrent (ie. tracker requests).
But we are getting there...
regards,
Miguel