NTP 폴링 속도를 어떻게 사용자 정의합니까?


17

바이트 당 지불하는 셀룰러 연결을 통해 실행되는 임베디드 시스템에서 Ubuntu를 설정하고 있습니다. 이 시스템에는 RTC 배터리도 없으므로 부팅 할 때마다 무작위로 시작됩니다.

로그 메시지 등을 실시간으로 사용할 수 있도록 셀룰러 연결을 사용할 수있게되면 시간이 동기화되도록하고 싶지만 NTP 트래픽에 대해 팔과 다리를 지불하고 싶지 않습니다.

NTP가 시간을 업데이트하는 속도를 사용자 정의 할 수 있습니까? 현재 openntpd를 사용하고 있지만 결혼하지 않았습니다.

인터넷이 부팅 할 때 반드시 작동 할 필요는 없으므로 시작시 ntupdate 및 관련 기능이 작동하지 않습니다. 그리고 cron을 통한 예약은 예약 된 작업이 시작되기를 기다리는 반면 시간 데몬이 최대한 빨리 동기화되도록하고 싶습니다.

답변:


5

이러한 답변 중 일부는 난독 화 된 ntp 구성 콘테스트에서 이길 수 있습니다.

부팅시 ntp 참조 구현을 사용하고 iburst를 사용하여 시간을 빠르게 설정하십시오. 그런 다음 minpoll 지시문을 사용하여 ntpd가 원격 시간 서버를 쿼리하는 빈도를 제한 할 수 있습니다. 이를 통해 ntpd의 클럭 규율을 활용하고 대역폭을 낮출 수 있습니다.

minpoll minpoll
maxpoll maxpoll
    These options specify the minimum and maximum poll intervals for NTP 
    messages, in seconds as a power of two. The maximum poll interval 
    defaults to 10 (1024 s), but can be increased by the maxpoll option to 
    an upper limit of 17 (36 h). The minimum poll interval defaults to 6 (64 s), 
    but can be decreased by the minpoll option to a lower limit of 3 (8 s).

Chrony 는 ntp 참조 구현에 대한 좋은 대안입니다. Openntpd는 아닙니다.


8

내 경험은 openntpd가 아닌 ntp에 관한 것입니다.

NTP 프로토콜은 일반적으로 1 분 (64 초)마다 패킷 전송으로 시작하지만 /etc/ntp.conf 파일에있는 각 서버에 대해 17 분마다 하나의 패킷을 전송 및 수신함으로써 설정됩니다. 그러나 네트워크 중단 또는 장치의 불안정한 클럭이이를 증가시킬 수 있습니다. 각 패킷에는 약 68 바이트의 페이로드가 있으므로 폴당 각 방법마다 100 바이트를 약간 초과 할 수 있습니다.

네트워크 가동시 rdate 및 ntpdate는 시간을 설정하기위한 좋은 아이디어입니다. 그리고 그것이 전부라면 당신은 당신을 위해 잘 작동해야합니다.

그러나 오랜 시간 동안 동기화 된 시간을 유지해야하는 경우 ntp 프로토콜이 그렇게하도록 설계되었습니다. 시계에 크리스탈로 제어되는 시계가 있더라도 장치의 시계는 따뜻하거나 차가운 정도에 따라 약간 빠르거나 느리게 작동하며 지속적인 시간 관리는 그에 맞게 조정됩니다.

지속적인 시간 관리가 필요하고 사용되는 대역폭을 줄이려는 경우 몇 가지 제안 사항이 있습니다. ntp.conf의 항목을 나타냅니다.

iburst를 사용하지 마십시오. 그러나 처음에는 시간을 설정하는 데 시간이 더 걸립니다.

minpoll을 6에서 위쪽으로 늘리십시오 (2 ^ 6 초는 64 초). 이렇게하면 네트워크가 시작된 후 프로토콜이 시작될 때 트래픽이 줄어 듭니다.

maxpoll을 10에서 위쪽으로 늘리십시오 (2 ^ 10 초는 1024 초 또는 약 17 분마다). 17 시간까지 36 시간마다 폴링 할 수 있습니다.

임베디드 장치에서 안정적으로 연결할 수있는 서버가 있다면 최소 수의 서버 만 사용하십시오. 서버가 많을수록 시간을 더 안정적으로 유지할 수 있지만 트래픽이 확장되므로 균형이 맞지 않습니다.



3

Ubuntu의 기본 설치에서는 NTP 데몬이 실행되지 않습니다. 대신 네트워크 인터페이스가 /etc/network/if-up.d/ntpdate후크에 의해 시작될 때마다 시간이 설정됩니다 .

지속적인 동기화가 아닌 일회성 시간 동기화를 수행하면 충분할 수 있습니다.

표준 /etc/ntp.conf파일을 통해 또는의 NTPSERVERS변수를 통해 시간을 설정하기 위해 쿼리 할 서버를 제어 할 수 있습니다 /etc/default/ntpdate.


2

ntp가 제공하는 정확하고 정확한 동기화가 필요합니까? 그렇지 않은 경우 rdate또는 ntpdate부팅시 또는 cron을 통해 주기적으로 벗어날 수 있습니다 .


2

이미 openntpd 매뉴얼 페이지를 읽었을 것입니다.

http://www.openbsd.org/cgi-bin/man.cgi?query=ntpd.conf

시간에 대한 폴링 옵션이 없다는 것을 이미 알고있을 것입니다.

제안 할 수있는 해킹이 있습니다.

  1. ntpd를 사용하지 말고 cron을 통해 ntpdate를 호출하십시오.
  2. cron 및 / 또는 셀룰러 연결 스크립트를 사용하여 iptables 규칙을 토글하여 포트 123 트래픽을 허용하거나 거부 할 수 있습니다. 이것은 간단 할 수 있습니다

    0 12 * * * iptables -D OUTPUT -j DROP -p udp --dport 123 # at noon start allowing ntp

    0 13 * * * iptables -A OUTPUT -j DROP -p udp --dport 123 # at 1pm stop allowing ntp

  3. 임베디드 시스템에 라디오 시계 수신기를 포함시킵니다. 나는 이것에 대해 거의 아무것도 모르지만 다음과 같은 제품 :

라디오 신호를 수신 할 수 있다면 어렵지 않다고 생각합니다.


1
하드웨어를 추가하려는 경우 왜 라디오 시계를 권장하고 PPS로 GPS를 추가하지 않습니까?
dfc

@dfc 좋은 지적. OP, 시간을 얻기 위해 GPS 하드웨어를 고려하십시오.
Jay _silly_evarlast_ Wren

1
$ 50 (물론 GPS는 대단합니다) 및 일부 납땜을 위해 여분의 침실에 지층 1 시간 서버가 있습니다. 거대한 단풍 나무와 다른 집으로 막힌 창에 Sure GPS 안테나가 있고 잘 작동합니다.
dfc

@dfc 당신은 하드웨어와 하드웨어와 함께 어떤 소프트웨어를 사용할 수 있습니까?
Jay _silly_evarlast_ 렌

1
@Jay_silly_everlast_Wren 소프트웨어 : ntp 참조 구현 www.ntp.org 보드 : sureelectronics.net/goods.php?id=99 몇 가지 토론 : satsignal.eu/ntp/Sure-GPS.htmlists.ntp.org/pipermail/questions /2011-March/028854.html 훨씬 더 있습니다. 납땜으로 인해 두려워하지 마십시오. 납땜이 처음이었고 쉬웠습니다. ntp 질문 메일 링리스트는 확실한 게시판을 사용하고 매우 만족 한 사람들로 가득합니다.
dfc

1

올바르게 기억하면 ntp 폴링 간격을 최대 1024 초로 설정할 수 있습니다. 아마도 가장 간단한 해결책은 부팅 할 때마다 ntpdate를 실행하고 나중에는 crontab에서 실행하는 것입니다.

부팅 할 때마다 시계가 임의의 시간으로 시작되면 어쨌든 ntpd를 실행할 수 없으므로 ntpdate를 먼저 사용해야합니다. 시계와 서버 시계의 차이가 너무 큰 경우 Ntpd는 시간 동기화를 거부합니다.


드리프트가 너무 큰 경우 동기화를 거부하는 ntp에 대한 정보는 +1
David Pfeffer

ntpdate를가 할 수있는 옵션 찬성되지 않습니다 ntpd보다 더이 사용 사례를 처리하는 croneecis.udel.edu/~mills/ntp/html/ntpdate.html
MSW

1

TCP와 마찬가지로 NTP에는 프로토콜에 심층 이론과 실무 경험이 내장되어 있습니다. 기본 매개 변수를 변경하면 설계된 동기화 속성이 중지됩니다.

기기가 산발적으로 연결되어 있으면 오래된 RDATE 가 가장 적합 할 것입니다. 클럭 돌리기 나 피어 평균화를 처리하지 않으며 중간에있는 사람이 그의 가치가 있다면 재생할 수있는 다양한 미묘한 해킹으로부터 보호 할 수 없습니다. 원격 서버에서 참조 날짜를 가져 와서 로컬 시계를 망치로칩니다. 그러나 원하는 때에 수행되며 그 동작은 결정적입니다.

RDATE 정확도는 NTP가 제공하는 것보다 훨씬 나쁩니다. ± 1 초 이상 신뢰하지는 않지만 산발적으로 만 연결되는 경우보다 정확한 타이밍은 관련이 없습니다. 사실, 상대성 에 따르면 의미가 없을 수도 있습니다.


0

만들기 위해 minpool/이 maxpool고려되어야한다, 당신은 추가 할 필요가 서버 당 사용자에 ntp.conf.

NTP 데몬 (빈도를 최적화하기 위해 내장 된 mathod가 있음)을 엉망으로 만드는 것은 좋지 않지만 다음과 같이 이러한 옵션을 추가해야합니다.

server time.google.com iburst minpoll 12 maxppol 17
server ntp.ubuntu.com iburst minpoll 12 maxppol 17
server europe.pool.ntp.org iburst minpoll 12 maxppol 17

여기에서 최소 주파수를 2 ^ 12 초로 설정하고 최대 값을 2 ^ 17 초로 설정하십시오.

기본적으로 NTP가 약 1 분마다 요청한다는 것을 알았습니다. 너무 큽니다. 여기서 나는 빈도를 한 시간에 한 번에서 하루에 한 번으로 줄였습니다 (거의).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.