Usually, when a machine looses connection completely, ntpd misses a couple polls and marks all sources as failed sanity. Which seems quite logical. But I've met a situation when a server stays marked as current time source while its reach turned 0.
Sever is deployed in a same subnet as a target machine providing very low delay, offset and jitter. The situation was modelled by shutting down the connection physically: just unplugging a cord from a client machine. I tried to recreate this, but since then the same machine always loses synchronization status nicely after 5-6 unsuccessful polls.
The real question is: what exactly determines the synchronization status when the connection is lost?
Best Answer
There is a deffinite explanation about reach register in RFC-1305:
Howewer RFC-1305 is obsoleted by RFC-5905, which is not that destinctive:
No clear procedure is mentioned in Section 13. But still it looks like an unreacable peer should loose its synchronation status at some point.
I've managed to recreate synchronized status with reach 0 situation to ensure that it is rare and not at all permanent. It took disabling "burst" in servers configuration and breaking the connection right after the synchronization.
The reach was 177 which is 01111111 in binary. So it took 7 polls to establish the synchronization.
The synchronization then were lost at this posotion:
When numbers are little strange as 64*9 = 576 not 575, but i guess, the representation might be 1 second inaccurate. Considering this, it took 9 unsuccessful polls to break the synchronization status.
So, considering both theory and practice, it looks like the state in which source with 0 reach might be considered current time source is possible, but also rare and temporary.