chrony를 이용한 로컬 네트워크 기기들 시간 동기화

로컬 네트워트에 여러 PC들이 연결되어 있고, 이 PC들 간에 데이터를 주고 받을 때, Time Stamp가 동기화 될 필요가 있습니다. 특히 ROS2와 같은 경우, Topic 등의 데이터들이 수집되는 상황에서 각 메시지들의 시간 값이 틀리게 되면, 에러를 발생하는 주요 원인이 됩니다.

이를 위해서 시간 동기화를 하여야 되는데, 각 PC들이 인터넷 망에 연결된 상황이라면, 주기적으로 외부 NTP 서버를 통해 인터넷 시각을 기준으로 각 PC의 시간이 맞춰지게 됩니다. 하지만, 로컬 네트워크 (폐쇠망)의 경우 이렇게 외부 NTP 서버에 접속이 불가능하므로, 특정PC 하나를 기준으로 시간을 동기화할 수 있도록 하여, 연결된 PC의 시간을 동기화 시킬 수 있습니다.

chrony는 기존 사용되었던 ntp의 개선버전(?)입니다.


먼저 기준이 될 PC에서 작업을 시작합니다.

chrony를 설치합니다.

$ sudo apt install chrony

다음으로 chrony.conf 파일을 수정합니다.

$ sudo vi /etc/chrony/chrony.conf

설정 파일 내에 다음의 구문을 추가합니다.

pool ntp.ubuntu.com        iburst maxsources 4
pool <기준-PC-IP-주소>      iburst maxsources 1
pool 0.ubuntu.pool.ntp.org iburst maxsources 1
pool 1.ubuntu.pool.ntp.org iburst maxsources 1
pool 2.ubuntu.pool.ntp.org iburst maxsources 2

...

local stratum 10
allow 10.0.0.0/24   # 10.0.0.xx IP들에게만 동기화 기능 허용

저장하고 나와서, chronyd, chrony 서비스를 재시작 해줍니다.

$ sudo systemctl restart chronyd
$ sudo systemctl restart chrony

기준 PC에서 작업은 끝났습니다.


다음으로 동기화 대상 PC들에서 다음과 같이 작업을 수행합니다.

먼저 chrony 설치

$ sudo apt install chrony

설정파일 수정

$ sudo vi /etc/chrony/chrony.conf

다음과 같이 레퍼런스 주소에 기준 PC의 주소를 입력해 줍니다.

#pool ntp.ubuntu.com        iburst maxsources 4
#pool 0.ubuntu.pool.ntp.org iburst maxsources 1
#pool 1.ubuntu.pool.ntp.org iburst maxsources 1
#pool 2.ubuntu.pool.ntp.org iburst maxsources 2
pool  10.0.0.10             iburst maxsources 1

저장하고, chrony를 재시작해줍니다.

$ sudo systemctl restart chrony

강제로 동기화 명령 수행 – 보통은 기준 PC와 시간을 체크해서 특정 범위만큼 차이가 벌어지면 동기화 작업을 수행하게 됩니다만, 일단은 강제로 한번 동기화 작업을 진행해봅니다.

$ sudo chronyc -a makestep
200 OK

레퍼런스를 확인해봅니다.

$ chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* _gateway                      4   6    77    32    -27us[ -384us] +/-   11ms

저의 경우엔, 기준PC의 주소가 gateway로 사용되고 있어 저렇게 IP 주소대신 gateway라고 표시되고 있습니다.

동기화 상태로 확인 가능합니다.

$ watch -n 0.5 chronyc tracking

Reference ID    : 0A00000A (_gateway)
Stratum         : 5
Ref time (UTC)  : Fri Feb 14 00:26:30 2025
System time     : 0.000031521 seconds slow of NTP time
Last offset     : -0.000079722 seconds
RMS offset      : 0.000119501 seconds
Frequency       : 23.396 ppm slow
Residual freq   : -0.139 ppm
Skew            : 3.385 ppm
Root delay      : 0.013619509 seconds
Root dispersion : 0.004857286 seconds
Update interval : 64.5 seconds
Leap status     : Normal

System time을 확인해보면 약 0.000031521 느린것을 확인할 수 있습니다.

끝.


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *