New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Consider using reliable UDP for block transfers #804

Closed
AudriusButkevicius opened this Issue Oct 8, 2014 · 18 comments

Comments

Projects
None yet
10 participants
@AudriusButkevicius
Member

AudriusButkevicius commented Oct 8, 2014

This is a long-shot, over-engineering and is not required, but a interesting topic nonetheless which could be a unique selling point to Syncthing.

Some interesting ideas can be found here

I seems that the easiest one to adopt would be UDT with bindings already available for most languages.

@calmh

This comment has been minimized.

Member

calmh commented Oct 8, 2014

👍 Yep. I've made several false starts, even one or two at starting a reimplementation of UDT in Go.

@calmh calmh added the enhancement label Oct 8, 2014

@AudriusButkevicius

This comment has been minimized.

Member

AudriusButkevicius commented Oct 8, 2014

Reimplementing UDT in Go would be awesome, how far did you get?
What's your views on using the C library and just making some bindings?

@calmh

This comment has been minimized.

Member

calmh commented Oct 8, 2014

Reimplementing UDT in Go would be awesome, how far did you get?

Just serializing some structures... But the paper is fairly readable, it should be doable.

What's your views on using the C library and just making some bindings?

Painful to build. (Same as with sqlite) :(

@cebe

This comment has been minimized.

cebe commented Nov 14, 2014

This sounds very interesting. Would be good to compose a list of requirements to describe what syncthing needs from the protocol. e.g. what are the requirements in terms of reliability, package ordering, speed, etc...

@calmh

This comment has been minimized.

Member

calmh commented Nov 14, 2014

Yeah I'm currently hacking on https://github.com/calmh/dst; it's working, but needs a few more changes and fixes to the flow/congestion control, and some more testing. It's very much inspired by UDT, but somewhat simplified and tweaked to fit our purposes better.

@dembach

This comment has been minimized.

@dembach

This comment has been minimized.

dembach commented Feb 5, 2015

i am really in need of a firewall hole punching solution , due to a bad companies firewall solution.

please consider this for a shorter term solution , please

@jpjp

This comment has been minimized.

Contributor

jpjp commented Feb 5, 2015

That file has a different license. Is it compatible? If not posting could be a bad idea.

@calmh

This comment has been minimized.

Member

calmh commented Feb 9, 2015

RUDP isn't usable as is, unfortunately. However I've recently fixed https://github.com/calmh/dst to the point where it seems usable, so will be making some experiments with that soon.

@dembach

This comment has been minimized.

dembach commented Feb 9, 2015

Maybe I can try that also at my company to see if the hole punching works for me , too

Hope you are going to run the builds for Windows and Linux ...got no go on Linux yet

Cheers

Markus

@calmh

This comment has been minimized.

Member

calmh commented Feb 10, 2015

@dembach What do you mean?

@dembach

This comment has been minimized.

dembach commented Feb 11, 2015

I would love to get a syncthing with the new protocol and test it

@Korkman

This comment has been minimized.

Korkman commented Feb 17, 2015

@calmh +1 for the effort moving the protocol to UDP and hole punching. You're on the right track there, it will make connectivity far better, automagic for most people.

@patrickwolf

This comment has been minimized.

patrickwolf commented Jun 20, 2015

+50 this would be awesome to get working!

@brenthuisman

This comment has been minimized.

brenthuisman commented Aug 3, 2015

+1

1 similar comment
@Janhouse

This comment has been minimized.

Janhouse commented Aug 12, 2015

+1

@michalliu

This comment has been minimized.

michalliu commented Aug 27, 2015

+1 👍

@syncthing syncthing locked and limited conversation to collaborators Aug 27, 2015

@calmh calmh removed this from the v1.0-maybe milestone Nov 17, 2015

@calmh calmh removed their assignment Nov 22, 2015

@calmh calmh modified the milestone: Unplanned Jan 1, 2016

@calmh calmh modified the milestones: v0.14 "Dysprosium Dragonfly", Unplanned (Contributions Welcome) May 4, 2016

@calmh calmh modified the milestones: v0.14 "Dysprosium Dragonfly", v0.15 "Erbium Earwig" Jun 8, 2016

@calmh calmh removed this from the v0.15 "Erbium Earwig" milestone Aug 16, 2016

@calmh calmh added this to the Planned milestone Sep 3, 2016

lkwg82 pushed a commit to lkwg82/syncthing that referenced this issue Jan 1, 2018

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.