Ubuntu One: Synchronize files with local peers

Registered by Lucio Torre

When syncdaemon finds other syncdaemons in the local network it should be able to syncronize content and metadata using the local link, without needing to talk to the server. Content is easier (but requires internet), metadata is harder.

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
None
Direction:
Needs approval
Assignee:
Lucio Torre
Definition:
New
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

I think a viable implementation would be ;

* The client connects to the server.

In parallel

* The client asks the server for the local IP / hostname of other clients currently connected (or even just registered)
* If other clients are on the same subnet, the client attempts to connect to them

and

* The client asks for the blob list.
* The client receives the blob list. (I'm presuming that it identifies them by checksum)
** And determines which blobs it needs to download

* It directs requests for blobs to the other clients before it directs them to the server

The behaviour of Dropbox is consistent with this ; files are only available to other clients via P2P *after* their upload to the server is complete and other clients are notified of the new file by the server.

Syncing with no server contact at all is harder, because you then have to introduce new algorithms for conflict resolution, and also have a means of client discovery.

(?)

Work Items