[ntp:questions] prefer keyword and server failover

Danny Mayer mayer at ntp.isc.org
Mon Apr 28 11:38:16 UTC 2008

David Woolley wrote:
> Danny Mayer wrote:
>> David Woolley wrote:
>>> Richard B. Gilbert wrote:
>>>> Sort of!  Two servers is generally a poor choice.  If they differ, as 
>>>> they inevitably will, which one should you believe?  'Prefer' will tell 
>>> If they differ enough for voting to apply, both will be rejected.  If 
>>> they are mutually true chimers and you don't use prefer, ntpd will use a 
>>> combination of the time from both of them.
>> No, it will choose one and use it until it decides that it is worse than 
>> another one or they are all declared bad. It never combines both. The 
>> real problem here is that it has no idea whether or not one is better 
>> than the other when you only have two of them.
> For RFC 1305, and I have no reason to believe this has changed, given m 
>   servers that pass the basic sanity check, it will start with another 
> parameter, f, at 0 and try to find m -f intersecting servers.  It will 
> try with successively greater values of f until it finds a mutually 
> intersecting set of servers. However, if f equals or exceeds m/2, it 
> will stop with all servers marked as falsetickers.  m/2 = 1 in this 
> case, so the termination condition will be met after one iteration, and 
> it will fail to find any truechimers (the low end of the range will be 
> set to the low end of the second server tolerance (search is done 
> forwards) and the high end of the range will be set to the high end of 
> the first (search is done backwards).

It has changed. RFC 1305 describes NTPv3. You need to see Section 11.2 
of the NTPv4 draft for the current selection algorithms. Particularly:

> If the selection
>    algorithm cannot produce a majority clique, or if it cannot produce
>    at least CMIN survivors, the system process exits without
>    disciplining the system clock.  If successful, the cluster algorithm
>    selects the statistically best candidate as the system peer and its
>    variables are inherited as the system variables.

CMIN is currently 1. Notice that it says nothing about using more than one.


More information about the questions mailing list