Opened at 2008-02-14T00:11:24Z
Last modified at 2020-01-17T23:57:25Z
#314 closed enhancement
DNS tricks to connect clients to their own (local) node — at Initial Version
Reported by: | warner | Owned by: | nobody |
---|---|---|---|
Priority: | major | Milestone: | undecided |
Component: | code-frontend-web | Version: | 0.7.0 |
Keywords: | introduction web | Cc: | zandr |
Launchpad Bug: |
Description
Zandr had a clever idea that we wanted to write down before we forgot about it. I'm not entirely sure what it is, but here's what I remember of it:
A user who accesses their tahoe vdrive through a web browser may or may not be running a local node. We and they would prefer to get service from their local node: it transfers load from a central webapi server to the user's own machine (thus distributing it better), and it avoids revealing file caps to the external server (thus improving privacy).
But how to tell if they're running a local node or not?
We rig up a DNS server that is connected to our Introducer. We have the client always hit the same DNS address, maybe 'anynode.allmydata.com:8123'. If our Introducer somehow concludes that they are running a node (and that it's running a webserver), it returns 127.0.0.1 for that name. If not, it returns the IP address of our central webapi server.
It's kind of like IPv6 anycast addresses. It's also kind of like dynamic-DNS services. Perhaps we give each node a distinct name, and have the client access nodeid1234.anynode.allmydata.com, and if the introducer knows that that nodeid is online, it sends the browser at 127.0.0.1 .
Anyways, neat trick, not quite sure how to use it yet.