sources: include maxclockerror in source selection
In the source selection algorithm, include extra dispersion due to maxclockerror in the root distance of sources that don't have new samples (the last sample is older than span of all samples) to not prefer unreachable sources with a short distance and small skew over reachable sources for too long, and also to decrease their chances of becoming falsetickers.
This commit is contained in:
parent
da862158bf
commit
5308e0a25f
1 changed files with 10 additions and 0 deletions
10
sources.c
10
sources.c
|
@ -665,6 +665,16 @@ SRC_SelectSource(SRC_Instance updated_inst)
|
|||
continue;
|
||||
}
|
||||
|
||||
/* Include extra dispersion in the root distance of sources that don't
|
||||
have new samples (the last sample is older than span of all samples) */
|
||||
if (first_sample_ago < 2.0 * si->last_sample_ago) {
|
||||
double extra_disp = LCL_GetMaxClockError() *
|
||||
(2.0 * si->last_sample_ago - first_sample_ago);
|
||||
si->root_distance += extra_disp;
|
||||
si->lo_limit -= extra_disp;
|
||||
si->hi_limit += extra_disp;
|
||||
}
|
||||
|
||||
/* Require the root distance to be below the allowed maximum */
|
||||
if (si->root_distance > max_distance) {
|
||||
sources[i]->status = SRC_BAD_DISTANCE;
|
||||
|
|
Loading…
Reference in a new issue