Fuzz, Numbers

Hal Murray hmurray at megapathdsl.net
Sun Dec 29 03:52:59 UTC 2019

I found the missing line of code that was breaking no-FUZZ.  I found several 
other quirks while browsing the code.

I'm starting to work on performance numbers.

With no-FUZZ:

A Pi 3 can support 18-19K packets/sec.  22-23K with monitoring turned off.

An Intel(R) Core(TM) i5-3570 CPU @ 3.40GHz is good for 160K packets/second.  
225K with monitoring turned off.

The with-monitoring (default) numbers are slightly optimistic since there is 
only one client.  Lots of clients would increase the working set.

Things were slightly faster a few days ago.  I don't know why.  I've seen 
similar quirks before.

On my to-do list is numbers with NTS.


A major contribution to sloth was ntp_random().  Once upon a time, ntp had its 
own pseudo random number generator.  Back in 2015, that was changed to use the 
one in libsodium.  In Jan 2017, it was changed to use OpenSSL and the 31 bit 
limit was lost.

Anybody object if I get rid of libntp/ntp_random.c?  POSIX has random()  We 
can use it where we don't need crypto quality randomness.

Similarly, is there any reason not to use CLOCK_GETTIME() for timing?  
get_systime() has fuzzing which includes a call to randomness.


The fuzzing code doesn't cleanly handle SO_TIMESTAMP (no NS).  Suppose you 
want to fuzz by 1/2 microsecond.  Your raw data has already been truncated to 
a whole microsecond.  Fuzzing might be appropriate if it were limited to the 
current time so we don't get packets leaving before they arrive.

FreeBSD has their own quirky ways to get more accurate time stamps.  I don't 
know why they didn't implement SO_TIMESTAMPNS.  ???  We should investigate.

These are my opinions.  I hate spam.

More information about the devel mailing list