NTP 동기화는 도달할 수 없는 상태로 유지됩니다.

NTP 동기화는 도달할 수 없는 상태로 유지됩니다.

일반적으로 시스템의 연결이 완전히 끊어지면 ntpd는 몇 번의 폴링을 놓치고 모든 소스를 잘못된 온전성으로 표시합니다. 꽤 논리적인 것 같습니다. 그러나 도달 범위가 0이 된 동안 서버가 현재 시간 소스로 계속 표시되는 상황을 만났습니다.

서버는 매우 낮은 지연, 오프셋 및 지터를 제공하는 대상 시스템과 동일한 서브넷에 배포됩니다. 상황은 연결을 물리적으로 종료하여 모델링되었습니다. 클라이언트 시스템에서 코드를 뽑기만 하면 됩니다. 나는 이것을 재현하려고 시도했지만 그 이후로 5-6번의 실패한 폴링 후에는 동일한 시스템이 항상 동기화 상태를 잃습니다.

실제 질문은 연결이 끊어졌을 때 동기화 상태를 정확히 결정하는 것이 무엇입니까?입니다.

답변1

RFC-1305에는 도달 레지스터에 대한 명확한 설명이 있습니다.

연결 가능성 레지스터는 왼쪽으로 한 위치 이동되며, 비어 있는 비트는 0으로 대체됩니다. 이 레지스터의 모든 비트가 0이면 클록 필터를 제거하고 필요한 경우 동기화 소스를 다시 선택하기 위해 지우기 절차가 호출됩니다. 초기화 절차에서 연결이 구성되지 않은 경우 연결이 해제됩니다.

Howewer RFC-1305는 RFC-5905에 의해 더 이상 사용되지 않습니다. 이는 그다지 결정적이지 않습니다.

다음으로, 섹션 13에 설명된 폴링 프로세스의 8비트 p.reach 시프트 레지스터를 사용하여 서버에 도달할 수 있는지와 데이터가 최신인지 여부를 결정합니다. 패킷이 전송되면 레지스터는 왼쪽으로 1비트 이동하고 가장 오른쪽 비트는 0으로 설정됩니다. 유효한 패킷이 도착하면 가장 오른쪽 비트가 1로 설정됩니다. 레지스터에 0이 아닌 비트가 포함되어 있으면 서버에 연결할 수 있는 것으로 간주됩니다. 그렇지 않으면 도달할 수 없습니다.

섹션 13에는 명확한 절차가 언급되어 있지 않습니다. 그러나 여전히 연결할 수 없는 피어는 어느 시점에서 동기화 상태를 잃어야 하는 것처럼 보입니다.

나는 그것이 드물고 전혀 영구적이지 않은지 확인하기 위해 0에 도달한 상황과 동기화된 상태를 다시 만들었습니다. 서버 구성에서 "버스트"를 비활성화하고 동기화 직후 연결을 끊는 데 시간이 걸렸습니다.

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 91.198.10.4     194.190.168.1    2 u   20   64  177   51.137   -2.192  11.049
 192.168.1.1     193.67.79.202    2 u   65   64   77    0.459   -1.818   0.922
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*91.198.10.4     194.190.168.1    2 u   21   64  177   51.137   -2.192  11.049
+192.168.1.1     193.67.79.202    2 u    -   64  177    0.449   -3.192   1.828

도달 범위는 177이며 이는 이진수로 01111111입니다. 따라서 동기화를 설정하려면 7번의 폴링이 필요했습니다.

이 위치에서 동기화가 손실되었습니다.

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+91.198.10.4     194.190.168.1    2 u  574   64    0   63.846   -9.652   0.756
*192.168.1.1     193.67.79.202    2 u  553   64    0    0.449   -3.192   0.505
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 91.198.10.4     194.190.168.1    2 u  575   64    0   69.871  -10.409   0.002
 192.168.1.1     193.67.79.202    2 u  554   64    0    0.449   -3.192   0.505

숫자가 575가 아닌 64*9 = 576으로 조금 이상할 때 표현이 1초 정도 부정확할 수 있습니다. 이를 고려하면 동기화 상태를 깨기 위해서는 9번의 실패한 폴링이 필요했습니다.

따라서 이론과 실제를 모두 고려하면 도달범위가 0인 소스가 현재 시간 소스로 간주될 수 있는 상태도 가능하지만 드물고 일시적인 상태로 보입니다.

관련 정보