NTPD(8)

명칭
ntpd - Network Time Protocol (NTP) demon

서식
ntpd [-aAbdgLmnPqx] [-c conffile] [-D level] [-f driftfile] [-k keyfile] [-l logfile] [-N high] [-p pidfile] [-r broadcastdelay] [-s statsdir] [-t key] [-v variable] [-V variable]

해설
ntpd 유틸리티는, 인터넷의 표준시간 서버와 동기를 잡아, 시스템 시각 (time of day)(을)를 설정해 유지하는 operating system demon입니다. ntpd (은)는, Network Time Protocol (NTP) 버젼 4 의 완전한 실장이 되고 있습니다만, RFC-1305 로 정의되고 있는 버젼 3 에 대한 호환성도 유지하고 있습니다. 더해, 각각 RFC-1059 와 RFC-1119 로 정의 되고 있는 버젼 1 으로 버젼 2 에 대한 호환성도 유지하고 있습니다.

ntpd 유틸리티는 많은 계산을 64-bit 부동 소수점 연산으로 행해, 궁극의 정밀도인 약 232 피코초를 유지할 필요가 있을 때만, 비교적 취급하기 어렵다 64-bit 고정 소수점 조작을 행합니다. 현재의 보통 워크스테이션이나 네트워크에서는 이 궁극의 정밀도는 달성할 수 없습니다만, 이 정밀도는 장래의 기가 헤르쯔급의 CPU 클락이나 기가비트 LAN 에 대해 필요하겠지요.

통상, ntpd (은)는, 기동시로 설정 파일 ntp.conf(5) (으)로부터 읽어들여, 동기 소스나 동작 모드를 결정합니다. 또, 기능이 한정됩니다만, 명령행으로부터 모든 동작을 지정하는 것으로써, 설정 파일을 사용하지 않고 실행할 수도 있습니다. 이것은, 로컬 호스트를 브로드캐스트/멀티 캐스트 클라이언트로서 설정해, 모든 통신 상대를, 실행시에 브로드캐스트를 대접수 (listen)라고 결정할 때에는, 특히 유익합니다.

ntpd 에 NetInfo 서포트가 짜넣어지고 있는 경우, 디폴트의 ntp.conf(5) 파일이 읽어들이지 못하고, 또 -c 옵션에 의한 파일의 지정도되어 있지 않을 때에, ntpd (은)는 설정을 NetInfo 보다 읽어들이려고 합니다.

ntpd 의 실행중은, ntpq(8) 및 ntpdc(8) 유틸리티 프로그램을 사용하는 것으로, 다양한 ntpd 내부 변수를 표시하거나 설정 옵션을 변경할 수 있습니다.

ntpd (은)는 기동시에 umask(2) 의 값을 조사해 만약 그것이 0 이라면, umask(2) (을)를 022 로 설정합니다.

이하에 주는 인수가 사용 가능합니다:

-a  인증 모드를 유효하게 합니다 (디폴트).

-A  인증 모드 무효로 합니다.

-b  NTP 의 브로드캐스트 메세지를 사용해 동기 합니다.

-c conffile
    설정 파일의 이름과 패스를 지정합니다. (netinfo 를 무효로 해? )

-d  디버그 모드를 지정합니다. 이 플래그는 몇회 지정해도 괜찮습니다가, 회수가 많을 정도 표시가 보다 상세하게 됩니다.

-D level
    디버그 레벨을 직접 지정합니다.

-f driftfile
    드리프트 파일의 이름과 패스를 지정합니다.

-g  통상, ntpd (은)는 오프셋(offset)가 제정신 한계 (sanity limit)를 넘고 있는 경우는 종료합니다. 이 값의 디폴트는 1000 초입니다. 제정신 한계를 0 으로 설정했을 경우, 제정신 한계의 체크를 행하지 않고, 오프셋(offset)가 어떠한 값으로도 수리합니다. 이 옵션은 이 제한을 무시해, 어느 시각에도 제한없이 설정할 수 있도록(듯이) 합니다. 그러나 이것은 한 번 마셔 일어날 수 있습니다. 이 후는, 제한을 초과하면(자), demon는 종료합니다. 이 옵션은, -q 옵션과 함께 사용할 수가 있습니다.

-k keyfile
    NTP 의 인증열쇠를 포함한 파일의 이름과 패스를 지정합니다.

-l logfile
    로그 파일의 이름과 패스를 지정합니다. 디폴트는 시스템 로그 기능입니다.

-L  가상 IP 를 기다립니다.

-m  224.0. 1.1 의 IP 멀티 캐스트 그룹 주소상의 NTP 멀티 캐스트 메세지를 이용해 동기 합니다 (멀티 캐스트 커널이 필요하게 됩니다).

-n  포크 하지 않습니다.

-N priority
    operating system의 허용 범위에서, ntpd (을)를 고우선도로 실행시킵니다.

-p pidfile
    ntpd 의 프로세스 ID 를 기록하기 위한 파일명과 패스를 지정합니다.

-P  operating system에 의해 설정되는 우선도 제한을 무시합니다. 무기력에는 사용을 추천 하지 않습니다.

-q  최초로 시각을 설정한 직후에 ntpd 의 실행을 종료합니다. 이 거동은, 은퇴시켜야 할 프로그램 ntpdate(8) 의 거동을 흉내낸 것입니다. 이 옵션과 함께, -g 옵션과 -x 옵션을 지정할 수가 있습니다.

-r broadcastdelay
    브로드캐스트/멀티 캐스트 서버로부터 이 컴퓨터간의 디폴트 전파 지연을 지정합니다. 이 옵션은 프로토콜에 의해 자동적으로 지연을 계산할 수 없는 경우에게만 필요합니다.

-s statsdir
    통계 기능에 의해 작성되는 파일의 디렉토리 패스를 지정합니다.

-t key
    열쇠 번호를 신뢰할 수 있는 열쇠 (trusted key)의 리스트에 덧붙입니다.

-v variable

-V variable
    디폴트로 리스트 되는 시스템 변수를 추가합니다.

-x  통상은, 오프셋(offset)가 설정 반응을 일으키는 최소의 물리량 (디폴트는 128 ms)보다 작은 경우, 시각은 서서히 미조정 (slew)됩니다. 설정 반응을 일으키는 최소의 물리량보다 큰 경우에, 단지 시각 설정 (step)됩니다. 이 옵션은 모든 경우에 대해 미조정하도록(듯이) 강제합니다. 설정 반응을 일으키는 최소의 물리량을 0 으로 설정했을 경우, -x 옵션의 유무에 관련되지 않고, 또, 값에 관련되지 않고, 모든 오프셋(offset)로 시각 설정합니다. 큰 시각 오차나 주파수 오차를 취급하기 위해서(때문에) 설계된 시계 상태 기계를 통하지 않고 시각 맞추고 하기 위한(해), 일반적으로는, 이것은 능숙한 방식이 아닙니다. 주의: 미조정의 속도는 0.5 ms/s 까지 제한되고 있기 때문에, 1 초 조절하는데 2000 초의 상각 기간이 필요합니다. 이 때문에, 많은 초수를 조절하려면 , 상각에 수시간이나 몇일을 필요로 하는 일도 있습니다. 이 옵션은 -q 옵션과 함께 사용할 수가 있습니다.

  NTP 는 어떻게 동작할까
ntpd 유틸리티는, 설정한 1 개 이상의 서버와 지정한 폴링 간격으로 메시지 교환을 행합니다. 실행을 개시할 때에, 최초의 기동이나 몇번눈인가의 기동 등에 의해서, 이 프로그램은 이러한 서버의 다수 물어 구두인가의 메세지의 교환을 필요로 합니다. 그 결과, 신호 처리와 완화 알고리즘에 의해 데이터를 축적해, 데이터를 정돈해 시각 설정을 행합니다. burst로부터 네트워크를 지키기 위해, 각 서버에 대한다 초기 폴링 간격은 0 에서 16 초의 사이의 랜덤인 값으로 늦추어집니다. 디폴트의 초기 폴링 간격은 64 초입니다. 시계를 설정하기까지 몇분을 소비해 버리는 일이 있습니다. ntp.conf(5) 에 기술되고 있도록(듯이), 설정 명령 server 그리고 지정하는 키워드 iburst (을)를 사용해, 시계 설정할 때까지의 초기 지연을 감소시킬 수가 있습니다.

현대의 operating system와 하드웨어의 대부분은, time-of-year (TOY) 칩을 가지고 있어 전원단의 사이도 시각을 보관 유지하고 있습니다. 머신이 기동하면(자), 이 칩을 사용해 operating system의 시각을 초기화합니다. 머신이 NTP 서버에 대해서 시각 동기를 취했다 다음에, operating system는 그 칩의 시각을 필요하게 응하고 수정합니다. TOY 칩이 존재하지 않는지, 어떠한 이유로 TOY 칩의 시각과 서버의 시각의 차이가 1000 초보다 큰 경우, ntpd (은)는 무엇인가 결정적으로 안되는 일이 생겼다고 가정합니다. 이 경우에 의미의 어느 동작은, 오퍼레이터가 개재해 수동으로 시계를 설정하는 것입니다. 이 경우, ntpd (은)는 패닉 메세지를 시스템 로그에 출력해 실행 종료합니다. -g 플래그는 이 체크를 덧쓰기해, 칩의 시각에 관련되지 않고 서버의 시각이 시계로 설정됩니다. 그렇지만, CMOS 배터리의 고장이나 클락 카운터의 부진등의 하드웨어의 고장으로부터 몸을 지키기 위해서, 한 번 클락을 설정하고 나서 오차가 1000 초를 넘겼다 경우, 어쨌든 ntpd (은)는 실행 종료합니다.

통상 상태에서는, ntpd (은)는, 시각이 실질적으로 연속으로 추이해 불연속이 생기지 않도록, 시계를 얼마 안되는 잘게 썰기로 수정합니다. 네트워크의 congestion가 현저한 상태에서는, 왕복 지연 시간의 변동 (jitter)이 3 초를 넘겨 동기 거리 (이것은, 왕복 지연 시간의 반과 오차량의 항의 화)가 현저하게 커질 가능성이 있습니다. 128ms 이하의 샘플 오프셋(offset)가 존재하지 않는 시간 간격이 900 초를 넘기지 않는다 한, ntpd 의 알고리즘에서는, 128ms 를 넘는 샘플 오프셋(offset)를 버립니다. 오프셋(offset)가 어떠한 값이어도, 그 후 최초로 채취되는 샘플이 가리키는 값으로 시계를 설정합니다. 현실에는, 잘못해 시각을 설정해 잘못한 경고를 발생하는 비율은, 이 처리에 의해 거의 없어졌다고 해도 괜찮을만큼 감소됩니다.

이 동작의 결과로서, 한 번 시계가 설정되면(자), 네트워크 경로의 congestion와 지연 시간 변동이 지극히 큰 경우여도, 128ms 를 넘은 변동은 지극히 보기 드물게 밖에 생기지 않습니다. 가끔, 특히 ntpd 하지만 최초로 기동했을 때에는, 오차가 128ms 를 넘는 일이 있습니다. 로컬 시계의 시각이 서버와 비교해 128 초 이상 먼저 진행되고 있는 경우, 이것에 의해, 역방향의 시계 설정이 생기는 일이 있습니다. 어플리케이션에 따라서는, 이 동작에 견딜 수 없는 것도 있을지도 알려지지 않습니다. 명령행에 -x 옵션을 포함하고 있는 경우, 시계의 설정은 결코 행해지지 않습니다. 시각의 미조정만을 행합니다.

-x 옵션을 사용한다고 결정하기 전에, 거기에 따른 문제를 주의 깊게 조사한다 필요가 있습니다. 가능한 최대미조정 속도는 500 parts-per-million (PPM)에 제한되고 있습니다. 이것은, NTP 프로토콜 설계와 알고리즘 설계가 근거로 하는 올바름의 원리에 의한 결론입니다. 결과적으로, 로컬 시계가 허용 가능한 오프셋(offset)에 수습하기까지 긴 시간을 필요로 할 가능성이 있습니다. 시계가 허용 가능한 범위외에 있는 경우, 1초에 대해 약 2,000 초가 필요합니다. 그 사이는, 로컬 시계는 다른 네트워크 시계의 어떤 것과도 일관성은 없고, 이 시스템은, 올바르게 동기 한 네트워크 시간을 필요로 한다 분산 어플리케이션에 이용할 수가 없습니다.

상기의 예방책에도 불구하고, 큰 주파수 오차가 존재하는 경우에, 가끔, 결과적으로 시간 오프셋(offset)는 128ms 의 범위를 일탈해, 그 때에, 시각 설정 또는 시각의 미조정이 필요합니다. 그러한 시각 수정의 앞으로 , 최초의 샘플도 수리 가능한 범위외가 되는 만큼 주파수 오차가 크다 (이)라면, ntpd (은)는, ntp.drift 파일이 존재하지 않는 경우와 같은 상태에 들어갑니다. 이 동작의 의도는, 주파수를 재빠르게 보정해, 통상의 추적 모드에 동작을 되돌리는 것에 있습니다. 가장 극단적인 경우 (time.ien.it 를 생각해 내 가)로서 시각 설정/미조정에 의할 때 각보정과 그 후 주파수 보정이 생기는 일도 있습니다. 이 동작은, 이러한 경우에, 서버를 설정할 때에 키워드 burst (을)를 사용하는 도움이 됩니다.

  주파수의 수정
기동시의 ntpd 의 동작은, 주파수 파일 (보통은, ntp.drift )(이)가 존재하는지 어떤지에 의존합니다. 이 파일은, 시계의 주파수 오차의 최신의 예측치가 포함됩니다. ntpd 하지만 기동되어 이 파일이 존재하지 않을 때, ntpd (은)는 시스템 클록 발진기의 시각 오차와 주파수 오차에 급속히 적합하기 위해서 특히 설계된 특수 모드에 들어갑니다. 이 모드에는 약 15 분을 필요로 합니다. 그 후, 시각과 주파수는 공칭치로 설정되어 ntpd (은)는 통상의 모드에 들어갑니다. 이 모드에서는 시각과 주파수는 연속적으로 서버에 대해 추종 합니다. 1 시간 후, 주파수 파일이 생성되어 현재의 주파수 오프셋(offset)가 기입해집니다. ntpd 하지만 기동되어 이 파일이 존재할 때, ntpd 의 주파수는 이 파일의 값으로부터 초기화되어 즉시 통상의 모드에 들어갑니다. 그 후, 1시간 간격으로, 그 시점의 주파수 오프셋(offset)가 이 파일에 기입해집니다.

  동작 모드
ntpd 유틸리티는 몇개의 모드의 어느쪽이든으로 동작합니다. 그러한 모드로서는, "어소시에이션 관리" 의 페이지 ( /usr/share/doc/ntp 에 제공된 HTML 문서의 일부로서 이용 가능합니다) 그리고 가리킨 것처럼, 대칭적 액티브/패시브, 클라이언트/서버, 브로드캐스트/멀티 캐스트, 메니캐스트가 있습니다. 본프로그램은, 보통은 연속적으로 동작합니다. 그 사이, 작은 주파수 변화를 감시해, 시계를 궁극의 정밀도를 향해 조정합니다. 그렇지만, 단발 모드 (one-time mode)로 동작하는 일도 있습니다. 이 모드에서는, 시각이 외부 서버로부터 설정되어 주파수는 이전에 기록해 둔 주파수 파일로부터 설정됩니다. 브로드캐스트/멀티 캐스트, 혹은 메니캐스트크라이안트는, 리모트 서버를 발견해, 서버 클라이언트간의 전파 지연 보정 계수를 계산해, 자기 자신을 자동적으로 설정할 수가 있습니다. 이 모드에 의해, 그 환경 고유의 설정을 상세하게 양다리 인사 지정하는 것 없이 , 다수의 워크스테이션을 배치할 수가 있습니다.

디폴트에서는, ntpd (은)는, 연속 모드로 동작합니다. 이 모드에서는, 복잡한 상태 기계에 의해 결정되는 시간 간격으로, 몇개인가 있는 외부 서버의 각각 대해 폴링을 겁니다. 상태 기계는, 거기에 부수 해 왕복 지연 시간의 변동과 발진기 주파수의 일탈 (wander)을 측정해, 휴리스틱인 알고리즘을 이용해 최적인 폴링 간격을 결정합니다. 통상은, 대부분의 operating system 환경에서, 이 상태 기계는 64 초의 시간 간격으로 개시해, 상황에 따라 1024 초까지 단계적으로 증가시킵니다. 서버에의 액세스 집중을 피하기 (위해)때문에, 미소한 랜덤 편차도 넣어 있습니다. 더해, 당분간의 사이 서버를 도달할 수 없는 상태가 되는 경우에는, 네트워크의 오버헤드를 줄이기 위해서(때문에), 폴링 간격을 1024 초까지 단계적으로 증가시킵니다.

몇개의 경우에서는, ntpd 하지만 연속 모드로 동작하는 것이 현실적이지 않은 것이 있습니다. 이 경우, 지금까지는, 보통 대응방안법으로서 cron(8) 작업으로부터 ntpdate(8) 프로그램을 지정했을 때 각에 실행시키고 있었습니다만, 이 프로그램은, ntpd 하지만 가진다 신호 처리, 오차 체크, 완화 알고리즘에 관한 반죽 포함을 가지고 있지 않습니다. -q 옵션은 이 목적을 위해서(때문에) 있습니다. 이 옵션을 설정하는 것으로써 ntpd (은)는, 시계를 1 회 설정한 직후에 실행 종료합니다. 시계의 초기설정의 순서는, 연속 모드와 같은 것입니다. 대부분의 응용에서는, server 설정 명령로, iburst 키워드를 지정하려고 하게 된다고 생각합니다. 이 키워드에 의해, 메세지가 연속해 화살 계속됨조로 교환되어 데이터가 정돈되어 시계는 대략 1 분간으로 설정됩니다. 적당한 기간, 상에 복종한 후에, ntpdate(8) 프로그램은 은퇴라는 것이 된다고 생각합니다.

순정의 Solaris, Tru64, Linux, FreeBSD 의 경우가 그렇습니다만, 시계 주파수 수정에 대해 커널 서포트가 이용 가능한 경우에는, 시계 주파수의 수정이라고 하는 유익한 기능이 이용 가능합니다. 우선, ntpd (은)는, 선택된 서버에 대해 연속 모드로 동작해, 고유의 시계 주파수 오프셋(offset)를 측정해, 주파수 파일에 기록합니다. 주파수와 오프셋(offset)가 정상 상태가 되기까지 수시간 걸리는 일도 있습니다. 그 후, ntpd (은)는 정지해, 필요하게 응하고 단발 모드로 동작합니다. 프로그램 개시시에는, 주파수는 파일로부터 읽어들여 커널 내주 파수를 초기화합니다.

  폴링 간격 제어
이 버젼의 NTP 는, 측정된 시간 변동과 일탈과에 합치했다 레벨의 동기의 질을 유지하기 위해(때문에), 복잡한 상태 기계를 포함하고 있습니다. 정밀도를 증대시키는 처리에는, 시간 간격을 감소시키는 목적이나, 네트워크의 오버헤드를 줄이기 위해서(때문에) 시간 간격을 증대시키는 목적의 방법이 몇개인가 있습니다. 그러나, 디폴트 최소치의 64 초부터 디폴트 최대치의 1024 초의 사이의 폴링 조정 범위의 변경의 결과에 대해 주의 깊게 고려하는 것을, 유저에게는 추천 합니다. 디폴트 최소치는 tinker minpoll 명령을 이용해 16 초 이상의 범위에서 변경할 수가 있습니다. 설정 명령의 minpoll 옵션으로 덧쓰기 설정되지 않는 이상 설정된 어소시에이션의 모두로 이 값이 사용됩니다. 주의: 폴링 간격이 64 초보다 작은 경우, 대부분의 디바이스 드라이버는 올바르게 동작하지 않습니다. 또, 브로드캐스트 서버와 메니캐스트크라이안트의 어소시에이션도, 덧쓰기 설정하지 않는 한 기본값을 사용합니다.

다이얼 업 서비스나 종량성 과금 서비스등의 경우, 최소 간격을 수 10 분으로 해, 최대 간격을 1 일정도로 늘리면(자) 편리할지도 알려지지 않습니다. 통상의 동작 조건에서는, 시계 수정 루프가 한번 안정화 하면(자), 시간 간격은 최소치로부터 최대치까지 단계적으로 증가해 갑니다. 그러나, 이것은, 수정 루프가 오차를 수정할 수 있는 정도까지 고유 시계 주파수 오차가 작은 일이 전제입니다. 루프의 오차 보충 가능 범위는, 64 초의 간격에 대해 500 PPM 로, 간격을 2 배로 할 때 마다 2 의 인수로 감소합니다. 예를 들면, 최소치 1,024 초로는, 오차 보충 가능 범위는 31 PPM 밖에 지나지 않습니다. 고유 오차가 이 값보다 큰 경우, 드리프트 파일 (drift file) ntp.drift (은)는, 이 제한 이하의 잉여 오차를 감소시키기 (위해)때문에 특별 취급하지 않으면 되지 않습니다. 이 상태가 한 번 생기면(자), 드리프트 파일은 자동적으로 1 시간에 1 회 갱신되어 그것 이후의 demon의 재기동 시에 주파수를 초기화할 수 있도록(듯이) 됩니다.

  스하피르타(huff-n'-puff filter)
전화선 모뎀 경유로 상당양의 데이터를 다운로드/업 로드하는 것 같은 사용법에서는, 시각 유지의 품질이 현저하게 저하할 가능성이 있습니다. 이것은, 2 방향의 송신에 있어서의 지연의 차이가 지극히 커질 가능성이 있기 때문입니다. 많은 경우, 시각 오차가 분명하게 커져, 설정 수정의 반응을 일으키는 최소의 물리량을 넘어 데이터 전송의 뒤 혹은 도중으로 설정에 의한 보정이 생깁니다.

스하피르타는, 이러한 경우에 눈에 띄는 시간 오프셋(offset)를 보정하기 위해서 설계되었습니다. 이것은, 다른 트래픽이 존재하지 않을 때의 전파 지연의 지식에 의존합니다. 보통 상황으로 이것이 생기는 것은 업무 이외의 시간입니다. 이 필터는, 최근의 시간 간격으로 통상은 수시간 측정한 중에서 최소 지연을 기억하는 shift register를 보관 유지합니다. 지연이 어려운 상황에서는, 이 필터는, 문제의 지연과 최소 지연의 차이와 오프셋(offset)의 부호를 이용해 문제의 오프셋(offset)를 보정합니다. 이 필터의 이름은, 오프셋(offset)의 부호에 의존한, 부의 보정 (하-와 분다)과 정의 보정 (프와 분다)을 나타내고 있습니다.

이 필터는 tinker 명령와 huffpuff 키워드에 의해 유효하게 됩니다. 이것은, ntp.conf(5) 에 자세한 설명이 있습니다.

관련 파일
/etc/ntp.conf
    디폴트의 설정 파일명
/etc/ntp.drift
    디폴트의 드리프트 파일명
/etc/ntp.keys
    디폴트의 열쇠 파일명

관련 항목
ntp.conf(5), ntpdate(8), ntpdc(8), ntpq(8)

제공되고 있는 메뉴얼 페이지에 가세해, 포괄적인 문서가 world wide web 상의 http://www.ntp.org/ 에 있습니다. 이 문서의 snapshot가 HTML 형식에서 /usr/share/doc/ntp 에 있습니다. David L. Mills, Network Time Protocol (Version 1), RFC1059. David L. Mills, Network Time Protocol (Version 2), RFC1119. David L. Mills, Network Time Protocol (Version 3), RFC1305.

버그
ntpd 유틸리티는 꽤 커져 버렸습니다. 거대하다고는 말하지 않습니다만, 워크스테이션으로 고우선도로 실행한다 ntpd (으)로서 바람직한 크기를 넘어 버렸습니다. 특히, 계층수 (stratum)의 큰 워크스테이션보다는, 고부하의 프라이머리 서버에 맞추어, 부피가 커지는 열중한 특징의 대부분이 설계되고 있기 때문입니다.