Skip to content
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

Support running as daemon #5

Open
JeffBelgum opened this issue Mar 15, 2017 · 6 comments
Open

Support running as daemon #5

JeffBelgum opened this issue Mar 15, 2017 · 6 comments

Comments

@JeffBelgum
Copy link
Owner

A long term goal of this project is to be able to replace ntpd as the method of synchronization on a system.

@mitchmindtree
Copy link
Contributor

Great to see a crate with these plans and some initial work!

May I ask if you are currently using this in a downstream project that is driving your work on this crate forward?

I am currently interested in contributing as I believe it could be part of a nice solution to synchronising realtime streams in creative coding applications. #4 would probably help a lot with this along with some sort of anticipated roadmap, but I know it's hard to find time for these things!

@JeffBelgum
Copy link
Owner Author

JeffBelgum commented Jun 30, 2018

I don't currently have a downstream project driving the work, but having one would be great even if it is not a project I'm involved in directly.

I can start filling out the documentation and work on a roadmap. Look to see some of that being fleshed out in the near future and feel free to add any comments or open any new issues with questions or requests.

@JeffBelgum
Copy link
Owner Author

One resource that has shaped my thoughts on what a modern ntp design might look like is a talk from fosdem the Ntimed project and the code on github that goes along with it: https://archive.fosdem.org/2015/schedule/event/ntimed_ntpd_replacement/ I’m on mobile so I’ll just have to leave it at that for now, but it comes from an engineer that has put a lot of time and thought into the problem space and is familiar with the requirements and problems that can arise.

@mitchmindtree
Copy link
Contributor

Thanks for the link! I'll watch it today :)

@JeffBelgum
Copy link
Owner Author

Also regarding there requirements of your project specifically, have you thought about whether you need a full client and server implementation in rust or just a client?

@mitchmindtree
Copy link
Contributor

The specific use-case I have in mind is to synchronise the system clocks of many devices on a single LAN in a cross-platform manner so that we may synchronise the output of real-time data streams for creative installations/exhibitions (DACs for spatial audio, lasers, LED strips, etc). In many cases we may not have access to the WAN whatsoever, so I thought it might be necessary to run at least one master "secondary" server (if my understanding of the strata is correct) so that rest may be clients to it, or in some larger configurations run multiple servers in a sort of tree hierarchy to avoid swamping a single machine. I'd also like for all of this to:

  1. be as efficient as possible, as eventually I'd like to start running these creative I/O nodes on super low-powered, embedded devices and
  2. "just work" whether the machines are running linux, macos, windows, etc, which is something I find Rust to be incredible at :)

I also had a look at PTP as a solution for this, however my understanding is that the protocol requires some dedicated hardware integrated into the network switches/routers which I'd prefer to avoid as I'd love to be able to run all of this on regular consumer devices.

The project is something I'm quite passionate about, as the current commercial solutions are quite expensive and normally are focused on delivering one specific protocol (e.g. dante just does audio and requires paid licenses, artnet just does DMX and requires licenses for each individual node, etc). I'd love to democratise this space and work on a open-source, general solution for hosting all kinds of real-time streams (which is also why I'm interested in implementing RTP at the moment as well).

Does this sound like a reasonable use-case for an NTP server implementation? Or do you think there might be a better alternative out there for what I'm going for? I'm definitely still new to this whole networked time syncing thing!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants