NTP 분산이란 무엇이며 어떻게 제어합니까?


20

고객이 제공 한대로 여러 개의 NTP 서버를 사용하도록 구성된 ntpd 4.2.6p5를 실행하는 격리 된 네트워크에서 Ubuntu 14.04 서버를 배포합니다 (pool.ntp.org에 액세스 할 수 없음). 우리의 벙어리 터미널 클라이언트 장치 는 Larry Doolittle 의 이전 버전의 BusyBox (1.00-rc2) 및 ntpclient 2010 을 실행합니다.

이 설정은 수년간 훌륭하게 작동했지만 최근에는 새로운 고객과의 장애물이되었습니다. 그들은 ntpdate-debianLinux 서버에 관한 한 자체적으로 잘 작동하는 5 개의 사내 NTP 서버 주소를 제공했습니다 . 그러나 BusyBox 쪽에서 ntpclient는 "분산이 너무 높음"으로 표시됩니다. 디버그 출력 ntpclient에서 NTP 서버에서 "1217163.1"을 가져 오지만 지원하는 최대 값은 절대 값입니다 (65536).

$ /usr/sbin/ntpclient -s -i 15 -h 10.17.162.250 -d
Configuration:
  -c probe_count 1
  -d (debug)     1
  -g goodness    0
  -h hostname    10.17.162.250
  -i interval    15
  -l live        0
  -p local_port  0
  -q min_delay   800.000000
  -s set_clock   1
  -x cross_check 1
Listening...
Sending ...
recvfrom
packet of length 48 received
Source: INET Port 123 host 10.17.162.250
LI=0  VN=3  Mode=4  Stratum=4  Poll=4  Precision=-20
Delay=60745.2  Dispersion=1346801.8  Refid=10.31.10.21
Reference 3668859928.942079
(sent)    3668859928.708371
Originate 3668859928.708371
Receive   3668859928.963271
Transmit  3668859928.963369
Our recv  3668859928.708371
Total elapsed:      0.00
Server stall:      93.09
Slop:             -93.09
Skew:          255443.94
Frequency:             0
 day   second     elapsed    stall     skew  dispersion  freq
42463 56728.708  rejected packet: abs(DISP)>65536

이것들은 모두 같은 LAN에있는 모든 장치이므로 솔직히 말하면 흐릿합니다. 놀랍습니다.

ntpq -pnUbuntu 14.04 서버 의 출력 결과는 다음과 같습니다 .

user@host:~$ ntpq -pn
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 127.127.1.0     .LOCL.          10 l 1025   64    0    0.000    0.000   0.000
 10.17.162.249   10.17.6.10       5 u   23 1024   37    0.865  1381.07 697.260
 10.31.10.22     .LOCL.           1 u 1044 1024   17   29.586  -838.06 397.342
 10.17.6.10      10.31.10.21      4 u 1065 1024   17    0.366  105.245 402.999
*10.31.10.21     132.246.11.238   3 u    5 1024   37   29.418  794.292 616.796
 10.17.6.11      10.31.10.21      4 u 1038 1024   17    0.408  120.030 381.058

내 질문은 :

  1. 분산이란 무엇이며 그 가치를 바꿀 수있는 것은 무엇입니까?
  2. NTP 서버에서 더 자세한 정보를 얻기 위해 어떤 명령을 실행할 수 있습니까?
  3. 결함이 Ubuntu 서버 측에 잘못 존재할 수 ntp.conf있습니까? 실제로 특별한 것은 없습니다.
  4. 이 경우에 chrony로 전환하면 아무것도 변경됩니까?

5 개의 NTP 서버의 시계가 양호합니까? 최악의 구성을 구성에서 제거 할 수 있습니까?
Criggie

1
오프셋과 지터가 너무 높습니다. 적절한 소스를 하나 이상 얻으십시오 .
Reinstate Monica-M. Schröder

답변:


21

나는 여기에 대한 답변에서 혼란이 진행되는 것을 봅니다. ntpclient적어도 -s모드에서는 스타터 가 완전한 NTP 클라이언트로 작동하지 않고 하나의 패킷 만 보내고 받기 때문에 "마지막 8 개의 패킷 수신"이 없습니다. 실제로 자체 분산을 추정하지는 않습니다.

대신, 인쇄되는 값은 서버가 반환 한 패킷에서 "루트 분산"(rootdisp)이라는 값으로, 해당 서버 간의 총 오류 / 변동량과 정확한 시간의 추정치입니다. 이 계산 방법은 매우 간단합니다. 모든 NTP 서버는 외부 시계 (예 : 라디오 또는 GPS 수신기) 또는 다른 NTP 서버에서 시간을 가져옵니다. 서버가 외부 클럭에서 시간을 얻는 경우 루트 분산은 해당 클럭의 예상 최대 오류입니다. 다른 NTP 서버에서 시간을 가져 오는 경우 해당 루트 분산은 서버의 루트 분산 네트워크 링크가 추가 한 분산입니다.

혼동의 한 가지 점은 ntpq와 chrony는 사람들이 찾고있는 분산 및 루트 분산을 초 단위로 표시하지만 ntpclient는 마이크로 초 단위로 표시한다는 것입니다 . 어쨌든 1217163의 값은 여전히 ​​높습니다. 좋은 NTP 서버는 몇 밀리 초 내에 시간을 알고 있습니다. 수십 또는 수백 밀리 초 안에 나쁜 것. 귀하의 시간은 +/- 1.2 초 이내에만 신뢰할 수 있다고 말합니다.

NTP 온 전성 검사를 비활성화 하는 -x 0또는 -t옵션 (ntpclient의 버전에 따라)을 전달하여 실제로 ntpclient가이 서버와 동기화되도록 할 수 있습니다 . 대략 정확한 시간 (몇 초 내에) 만 필요한 경우에는 충분할 수 있습니다. 그러나 ntpclient는 그러한 나쁜 서버와의 동기화를 거부하는 데 상당히 합리적입니다. ntpq지연 시간이 낮더라도 우분투 시스템 의 출력에 모든 서버에 수백 밀리 초의 지터가 표시되어 매우 신뢰할 수없는 네트워크, 불규칙한 시간을 제공하기 위해 모든 서버 의 음모 또는 기본 을 나타냅니다 서버 자체의 시간 관리 문제.

또한 서버 10.31.10.22는 LOCL(특별하지 않은 로컬 시계) 의 신용을 광고 하지만 지층은 1 이라는 사실에 관심이 있습니다 . 일반적으로 로컬 시계는 지층 10으로 퍼지되어 마지막 리 소트 동기화 소스로만 사용됩니다 무리가 표류하는 것을 막기 위해 10.31.10.22가 잘못 구성되어 나머지 네트워크에 나쁜 시간을 제공하거나 NTP가 통제 할 수없는 일부 프로그램에 의해 좋은 시간으로 훈련되고 있습니다.이 경우 잘못된 구성은 단순히 LOCLrefid를 알리는 것입니다 . 예를 들어 GPS또는 시간을 제공하는 모든 것으로 재정의해야합니다 .


환상적인 답변. 시도 -x 0하거나 -t다시 신고합니다. 에 관해서 10.31.10.22는 서버 목록에서 가져올 수 있습니다. 대단한 캐치. 나는 실제로이 서버들에 관한 정보를 가지고 있지 않다. NTP 서버로부터 정보를 얻기위한 다른 디버그 명령이 ntpq -p있는가?
Jeff

앞에서 언급했듯이 -t스위치는 높은 분산에도 불구하고 사내 NTP 서버를 신뢰합니다. 우리는 왜 그것이 왜 무작위로 그와 같은 최고점인지 설명 할 수는 없지만 다른 게시물 일 것입니다. 고맙습니다.
Jeff

@Jeff 기꺼이 도와
주세요

12

"분산이란 무엇입니까?"에 대한 부분 답변입니다.

전형적인 NTP 왕복 여행 :

client |        | server
    t1 |------->| t2
    t3 |<-------| t4

그러면 다음 공식을 사용하여 오프셋 (클라이언트와 서버 간의 시간 차이)과 지연 (네트워크 이동 시간의 필수)이라는 두 가지 값이 생성됩니다.

offset= ((t4 - t3) + (t1 - t2)) / 2
delay = (t4 - t1) - (t3 - t2)

클라이언트는 마지막 8 개의 패킷 중에서 현재 오프셋을 선택하여 지연이 가장 적은 패킷을 선택합니다.

동일한 8 개의 패킷을 사용 하여 마지막 단계에서 선택한 오프셋에 대해 이러한 8 오프셋 차이의 가중 평균을 수행 하여 분산 을 계산합니다 . 여기서 지연은 가중 계수로 사용되어 작은 지연에 더 큰 가중치를 부여합니다. 이 값의 "확산"을 측정 한 것으로, 특히 여러 항목을 선택할 수있는 경우 시간 서버의 품질을 계산하는 데 사용됩니다.


공식에 대해 확실합니까? 결국 t4-t2와 t3-t1만이 관련 당사자들에게 알 수 있습니다
Hagen von Eitzen

@HagenvonEitzen 시간은 패킷에 포함될 수 있습니다
Thomas

@Sven 나는 또한 공식에 문제가 있다고 생각합니다. Mills의 28 페이지이 백서를 참조 하십시오 . 당신이 당신의 t를 배치하는 방법으로, 그것은 offset = 1/2 * [(T2-T1) + (T4-T3)]지연 되어야 하고`delay = (T3-T1)-(T4-T2) '
Ian Riley

스벤, 당신은 t3/t4당신의 전형적인 왕복 여행에 올바른 장소에 있습니까? 트래픽 흐름과 지연 계산은 다른 방법이어야 함을 나타냅니다 t4 -t1. 총 RTT t3-t2여야하고 서버 내부에서 보낸 시간이어야합니다.

7

분산 및 왜곡은 엄청 나며, 로컬 클록에서 해당 피어로의 오프셋이 매우 큽니다. 오프셋을 로컬 date과 비교 하고 시계를 수동으로 설정해야합니다.

ntpq -p모든 피어를 사용하여 호스트에서 ntpd를 실행하고 표시 하십시오. 더 좋은 것을 선택합니다.


ntpq -pn내 질문에 출력을 추가했습니다 . 이것을 조사해 주셔서 감사합니다.
Jeff

4
수백 개의 오프셋과 지터? 그다지 좋지 않습니다. pool.ntp.org와 같은 인터넷 소스에 액세스 할 수 없다고 언급했지만 성능이 훨씬 우수합니다. GPS, 라디오 소스, PPS 입력 등과 같은 기준 클록을 추가하는 것을 고려하십시오. 또는 현지 시계가없는 호스트를 선택하십시오.
John Mahowald

5

이 시스코 문서 에 따르면 , " 초 단위로보고되는 분산 은 로컬 클록과 서버 클록 사이에서 관찰 된 최대 클록 시간 차이"입니다. 완전히 손상되지 않은 ntp 서버를 사용하면 높은 분산이 발생하지 않아야합니다. 유일하게 가능한 시나리오는 클라이언트가 ntp를 초기화하고 현재까지 로컬 시계 만 사용할 수있는 경우입니다. 그럼에도 불구하고,보고 한만큼 높은 분산은 2 주 이상 꺼져있는 시계에 해당합니다 .

BIOS에서 시계 (및 날짜조차도)를 조정하거나 ntpdate시작하기 전에 한 번 발행하여 로컬 시계가 처음에 너무 멀지 않은지 (두 시간 정도는 여전히 허용 될 수 있음) 충분해야합니다. ntpd클라이언트에서.


1
ntpclient는 마이크로 초 단위로 값을보고하므로 나열된 분산은 실제로 주가 아닌 ~ 1.2 초입니다.) 또한 Cisco doc의 해석은이 값에 적용되지 않습니다.
hobbs
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.