Long range thoughts

Hal Murray hmurray at megapathdsl.net
Fri Feb 28 11:26:51 UTC 2020


Lots of handwaving here.

I'd like the server to run multi-threaded.

At a talk at Stanford yesterday, the speaker liked Rust.  He called it Safe C, 
good for embedded systems.  A simple NTP server (no client, no ntpq server) is 
simple enough for an embedded environment.  (When I run out of other things to 
do, I'll probably give it a try.)

There was discussion on the IETF NTP list of having the client use a separate 
port.  The idea is to make it harder to attack a client only system.  (There 
may be a draft RFC.)

Can we break the current ntpd blob into smaller chunks?  How about:
  NTP server
  NTP client
  NTS-KE server
  ntpq client

I don't have good proposals for how the ntpq client can get information from 
the other chunks.  The only info from the NTS-KE server is counters.  Shared 
memory would work fine.  Same for most of the NTP server.  The part of a NTP 
server that isn't counters is the MRU list.

One of the interesting advantages of the one-big-blob approach is that all the 
parts are using the same version of things in memory.  For shared memory, we 
would have to work out some sort of versioning.  The ntpq client would have to 
be able to read all old versions.

Ignoring version problems, are there parts of the ntpq protocol (other than 
mru) that won't work with shared memory?  I'm assuming an array for the peer 
stuff.

The configure options to a server are simple enough that a simple parser would 
be good enough.  Perhaps that's only because I'm willing to discard frills and 
options from the configuration.  For example, most of the log files are client 
side.  I'm willing to make the few the server needs be day only with default 
names and link from name-without-date to the current name-with-date.

I haven't thought much about ntpq.  I'm willing to make a new protocol.

Mumble.  Any of that make any sense?


-- 
These are my opinions.  I hate spam.





More information about the devel mailing list