내 서버와 다른 컴퓨터에서 시계가 항상 표류하므로 정확한 상태를 유지하기 위해 동기화되어야합니다.
NTP 서버 시계는 어떻게 표류하지 않고 항상 올바르게 유지됩니까?
내 서버와 다른 컴퓨터에서 시계가 항상 표류하므로 정확한 상태를 유지하기 위해 동기화되어야합니다.
NTP 서버 시계는 어떻게 표류하지 않고 항상 올바르게 유지됩니까?
답변:
NTP 서버는 정확한 시간을 유지하기 위해 매우 정확한 시계를 사용합니다. 중앙 NTP 서버의 일반적인 시간 소스는 원자 시계 또는 GPS 수신기입니다 (GPS 위성에는 원자 시계가 내장되어 있음을 기억하십시오). 이 시계는 정확한 시간 기준을 제공하기 때문에 정확한 것으로 정의됩니다. GPS 또는 원자 시계에 대해서는 마법이 없으므로 시간을 정확히 알려줍니다. 원자 시계의 작동 방식으로 인해 시계는 시간에 대해 한 번 들었고 정확한 시간을 계속 알려줍니다 ( 두 번째는 원자 효과 측면에서 정의 되기 때문에 ). 실제로 GPS 시간은 우리가 더 많이 사용 하는 UTC와 구별 된다는 점에 주목할 가치가 있습니다. 이 원자 시계는 차례로 동기화됩니다.국제 원자력 시간 또는 TAI 만 정확하게 시간의 흐름뿐만 아니라 말하지하기 위해 시간을.
인터넷과 같은 네트워크에 연결된 한 시스템에서 정확한 시간을 확보 한 후에는 신뢰할 수없는 네트워크를 통해 호스트간에 정확한 시간을 전송할 수있는 프로토콜 엔지니어링이 중요합니다. 이와 관련하여 계층 2 (또는 실제 시간 원본과 거리가 먼) NTP 서버는 NTP 서버 세트에 대해 동기화하는 데스크탑 시스템과 다르지 않습니다.
NTP 서버 또는 다른 곳에서 얻은 정확한 시간이 몇 번이고 로컬 시계의 전진 속도 (알기 쉬운)를 알면 "믿는 정확한 시간"에 대한 로컬 시계의 드리프트 속도 "시간의 흐름. 잠긴 후에는이 값을 사용하여 로컬 실시간 클럭 자체가 매우 부정확 한 경우에도 로컬 클럭을 지속적으로 조정하여 정확한 시간 경과에 매우 근접한 값을보고 할 수 있습니다. 로컬 시계가 매우 불규칙 하지 않으면 업스트림 타임 소스를 어떤 이유로 든 사용할 수없는 경우에도 정확한 시간을 유지할 수 있습니다. 일부 NTP 클라이언트 구현 (아마도 대부분의 ntpd
데몬 또는 시스템 서비스 구현)이이를 수행하고 다른 NTP 클라이언트 구현 (예 : ntpd의 동반자)ntpdate
시계를 한 번만 설정하면 안됩니다. 이것은 일반적으로 클럭 드리프트 측정 값을 저장하기 때문에 드리프트 파일 이라고합니다. 그러나 엄격하게 말해서 디스크에 특정 파일로 저장할 필요는 없습니다.
NTP에서 계층 0은 정의상 정확한 시간 소스입니다. 계층 1은 계층 0 시간 소스를 시간 소스로 사용하는 시스템입니다 (따라서 계층 0 시간 소스보다 약간 덜 정확합니다). 계층 2는 계층 1 소스와 시간이 동기화되어 있기 때문에 계층 1보다 정확도가 약간 떨어집니다. 등등. 실제로,이 정확도 손실은 너무 작아서 가장 극단적 인 경우를 제외하고는 거의 무시할 수 있습니다.
네트워크 타임 키핑에서 서버가 시간 소스를 얻는 방법을 알려주는 사양을 Stratum Level이라고합니다. 레벨이 낮을수록 해당 서버의 시간 유지가 더 좋습니다.
Stratum level 0 장치가 네트워크에 직접 연결되어 있지 않습니다. 그것들은 실제 시간 기록 장치 자체이며 실제 시간을 얻으려면 컴퓨터에 연결되어 있어야합니다. 이 컴퓨터는 Stratum level 1 NTP 서버가됩니다.
Stratum 레벨 1에 연결하는 컴퓨터는 시간 서버가 될 수도 있지만 그 다음에는 Stratum 레벨 2가됩니다. 컴퓨터가 타임 서버에 연결 될수록 계층 레벨이 낮을수록 시간을 더 정확하게 유지할 수 있습니다.
Stratum 레벨 0 장치에는 TAI (국제 원자 시간)에 참여하는 원자 시계가 포함됩니다.또는 그것에 동기화되고, 그러한 클럭에 의해 전송 된 시간 신호의 수신기. 가장 일반적으로 GPS PPS 신호를 포함하는 적절한 인터페이스를 갖춘 GPS 타임 키핑 수신기입니다. GPS가 여러 위성에서 양호한 잠금을 가질 때 PPS 신호는 초당 하나의 펄스를 보내고 해당 펄스의 리딩 에지는 해당 초의 실제 시작의 나노초 내에 있습니다. GPS 수신기의 사양에 따라 PPS 신호가 다소 정확할 수 있습니다. 각 GPS 위성에는 원자 시계가 있기 때문입니다. GPS 수신기가 듣고있는 GPS 위성의 위치와 위치를 찾으면 RF 전파를 수정하고 GPS 수신기에서 원자 시계를 갖는 것만큼이나 정확한 시간을 줄 수 있습니다.
따라서 Stratum 레벨 1 서버는 원자 시계 또는 GPS 수신기에 연결되고 NTP 서버는 이에 연결됩니다. 빈번한 조정으로 계층 레벨 2 또는 3 서버에 연결하더라도 나노초 단위로 측정 된 타이밍 정확도를 컴퓨터에 제공합니다. 그러나 더 나은 타이밍이 필요하면 계층 1 서버에 연결하거나 적절한 시간 기록 GPS 수신기를 구입하여 자신이 직접 계층 1이됩니다.
모든 클럭은 어느 정도 표류합니다. 타이밍 신호의 소스와 얼마나 잘 추적되는지에 따라 다릅니다. PC에서는 요즘 HPET이지만 PC에 과부하가 걸리면 얼마나 많은 진드기가 사라 졌는지 추적 할 수 없습니다.
컴퓨터와 통신하는 NTP 서버도 시간을 잃을 가능성이 있지만 시간이 더 좋은 소스로 돌아갑니다.
궁극적으로 더 좋은 소스는 원자 시계와 같은 매우 정확한 시계입니다. NTP를 머신 네트워크로 생각할 수 있습니다. 각 머신에는 시간에 의존하는 여러 소스가 있으며보다 정확한 것으로 자신의 시간을 왜곡시킵니다.
이것은 지층을 선언하는 출처에 의해 관리됩니다. 원자 또는 GPS 시계는 지층 0이며 시간에 대한 권한입니다. 그로부터 나오는 각 계층은 다음 계층-계층 1이며, 시간 소스를 온전하게 검사하기 위해 동일한 레벨의 피어와 함께 여러 계층 0 소스를 검사합니다.
지층 2 또는 3 시간 소스와 대화하고있는 것 같습니다.
다른 사람들이 작성한 것은 사실입니다 : Stratum 1 서버는 Stratum 0 장치에서 시간을 얻습니다. 어떤 시간 간격이 발생하는지는 알 수 없지만 시간 간격이 매우 정확하다고 생각합니다.
n> 1 인 Stratum n 서버는 NTP를 통해 Stratum n-1 서버에서 시간을 가져옵니다. 즉, 일정한 간격으로 동기화됩니다. NTP 서비스를 시작하면 동기화가 아주 짧은 간격으로 이루어지고 시간이지나면서 간격이 증가하기 시작합니다. 결국 간격은 약 17 분인 1024 초입니다.
해결되지 않은 것은 그 시간 사이에 무슨 일이 일어나는가? drift file 이라는 기능이 있습니다 . NTP가 로컬 클록과 기준 클록 사이의 드리프트를 모니터링하는 데 도움이됩니다. 로컬 클럭의 주파수는 감지 된 드리프트에 따라 조정되므로 서버 폴 사이의 시간도 정확합니다.
다른 NTP 구현은 다른 기능을 사용할 수도 있지만 일반적으로 클럭 주파수를 조정해야 할 필요성과 능력이 있습니다.