Hubless client-to-client mode on local networks.

The simple sharing of files over a local network is something that has always frustated me and I think it’s one of the great unsolved problems of our time.

At present it seem the options for local filesharing are FTP, NFS, AFP, and SMB/CIFS, none of which are simple to set up or aggregate files on multiple computers. For that there is Andrew, Ceph, and a bunch of others, all the stuff of nightmares.

I propose that a subset of the ADC protocol be defined for use without a hub, over link-local or local-area networks, to be integrated into ADC clients as a sort of “local mode”.

It would not be intended and should not support hubless operation over anything other than local-area networks, and it should be implemented in a generally stateless manner. If a client wanted to broadcast it’s presence on a network but did not wish to support hubless transfers, it should have some means of referring other clients to its hub of choice.

I would assume that if a client did support local client discovery, it should prefer to initiate transfers to local clients rather than hub clients, since local bandwidth is presumably always the cheapest.


From what I know I think the best way to go about this would be to designate a multicast address to take the place of a hub and a define a new FOURCC context. Clients would bind themselves to this multicast address and send hub messages in UDP packets to this address. All clients bound to this address should receive all messages sent to this address if the local network allows multicast traffic (which at the least any two directly connected and zeroconf’ed machines should support).

This does raise the issue of spoofing but I think under normal circumstances all clients would be in close physical proximity (so you could just throw something at them).

I could be mistaken on how multicast works, but I thought I might see if people thought this was generally a stupid idea or not before I did too much research.

See https://en.wikipedia.org/wiki/Multicast_address

  1. “new FOURCC context” does not mean anything. You mean introducing a new message type? Or signalling a new feature (essentially a FOURCC)?

  2. Why is it bothersome to set up a simple hub? It seems far easier than having to deal with a new type of routing strategy or implementation. (Imagine the time spent on such a spec and its implementation.)

  3. While ADC indeed requires a hub to initiate connections etc, I feel like what you are talking about is effectively DHT, no? http://www.dcbase.org/wiki/StrongDC%2B%2B_DHT