ntpq mru hang

Hal Murray hmurray at megapathdsl.net
Sun Dec 18 22:59:51 UTC 2016

I've found an interesting problem.

A successful batch returns a new nonce.  ntpq asks for more using the old 
one.  Nothing comes back.

That seems broken-by-design.  If the response is lost, the server will have 
switched to the new nonce but the client only knows the old one.  It might 
work if the server remembers the old nonce until it gets a packet with the 
new one.

I haven't looked at the server code, but I don't see any mention of that in 
the mode6 doc.

mode6 doc says:
  === CTL_OP_REQ_NONCE ===
  This request is used to initialize an MRU-list conversation.
Does ntpd do anything other than return the nonce?


I have some hacks in ntpq that setup a debugging file when debug is set 
non-zero.  I think they can be cleaned up a bit and committed.


Thinking about the big picture of monitoring a server...

We need a way to get some info when the MRU list is getting updated faster 
than ntpq can retrieve it.  It never converges.

One possibility is to add an option to log a slot when it gets recycled.  
That would expose a DoS attack.

I think we need something like ntpmon that uses all the screen space for the 
MRU output.

I think we need an option to ntpq/mru to tell it how many slots to ask for, 
and/or to have an option that says give me all that fits in a batch, but 
start from the newest rather than oldest.  With something like that, we could 
script some useful collection.  It wouldn't get everything, but I think it 
would get a helpful sample.

These are my opinions.  I hate spam.

More information about the devel mailing list