14.5. HW 타임스탬프링을 사용하는 Chrony
일부 NIC(네트워크 인터페이스 컨트롤러)의 하드웨어 타임스탬프는 들어오고 나가는 패킷의 정확한 타임스탬프를 제공합니다. NTP
타임스탬프는 일반적으로 시스템 클록을 사용하여 커널 및 chronyd 에 의해 생성됩니다. 그러나 HW 타임스탬프가 활성화되면 NIC는 자체 클록을 사용하여 패킷이 링크 계층 또는 물리적 계층을 입력하거나 종료할 때 타임스탬프를 생성합니다. NTP
와 함께 사용할 경우 하드웨어 타임스탬프를 사용하면 동기화의 정확성을 크게 향상시킬 수 있습니다. 최적의 정확성을 위해 NTP
서버와 NTP
클라이언트 모두 하드웨어 타임스탬프를 사용해야 합니다. 이상적인 상황에서 마이크로초 미만의 정확성이 가능할 수 있습니다.
하드웨어 타임스탬프를 사용하는 시간 동기화를 위한 또 다른 프로토콜은 PTP
입니다.
NTP
와 달리PTP
는 네트워크 스위치 및 라우터의 지원을 사용합니다. 동기화의 최상의 정확성을 달성하려면 PTP
가 지원되는 스위치 및 라우터가 있는 네트워크에서 PTP
를 사용하고 이러한 스위치 및 라우터가 없는 네트워크에서 NTP
를 선호합니다.
14.5.1. 하드웨어 타임스탬프 지원 확인
인터페이스에서 NTP
를 사용한 하드웨어 타임스탬프를 지원하는지 확인하려면 ethtool -T
명령을 사용합니다. ethtool
이 SOF_TIMESTAMPING_TX_ HARDWARE 및
필터 모드를 나열하는 경우 인터페이스를 SOF_TIMESTAMPING_TX_QUAWARE
기능과 HWTSTAMPMP_FILTER_
ALLNTP
로 하드웨어 타임스탬프에 사용할 수 있습니다.
절차
- 장치의 타임스탬프 기능 및 관련 PTP 하드웨어 클록을 표시합니다.
# ethtool -T enp1s0
14.5.2. 하드웨어 타임스탬프 활성화
/etc/chrony.conf
파일의 hwtimestamp
지시문을 사용하여 하나 이상의 인터페이스에서 하드웨어 타임스탬프를 활성화할 수 있습니다. 지시문은 단일 인터페이스를 지정하거나 와일드카드 문자를 사용하여 이를 지원하는 모든 인터페이스에서 하드웨어 타임스탬프를 활성화할 수 있습니다.
절차
/etc/chrony.conf
파일을 편집하고 다음과 같이 변경합니다.하드웨어 타임스탬프를 지원하는 인터페이스에 대한
hwtimestamp
설정을 추가합니다. 예를 들면 다음과 같습니다.hwtimestamp enp1s0 hwtimestamp eno*
ptp4l
과 같은 다른 애플리케이션이 없는 경우 * 와일드카드를 사용할 수 있습니다.서버 설정에
minpoll
및maxpoll
옵션을 추가하여 짧은 클라이언트 폴링 간격을 구성합니다. 예를 들면 다음과 같습니다.server ntp.example.comlocal minpoll 0 maxpoll 0
하드웨어 타임스탬프의 경우 시스템 클럭의 오프셋을 최소화하려면 기본 범위(641024초)보다 짧은 폴링 간격을 구성해야 합니다.
xleave
옵션을 서버 설정에 추가하여 NTP 인터리브 모드를 활성화합니다.server ntp.example.comlocal minpoll 0 maxpoll 0 xleave
이 설정을 사용하면 chrony가 패킷을 보낸 후에만 하드웨어 전송 타임스탬프를 가져옵니다. 이 동작은 서버가 응답하는 패킷에 타임스탬프를 저장하지 못하도록 합니다.
xleave
옵션을 사용하면 chrony가 전송 후 생성된 전송 타임스탬프를 수신할 수 있습니다.선택 사항: 서버에 대한 클라이언트 액세스 로깅에 할당된 최대 메모리 크기를 늘립니다. 예를 들면 다음과 같습니다.
clientloglimit 100000000
기본 서버 구성을 사용하면 몇 수천 개의 클라이언트가 인터리브 모드를 동시에 사용할 수 있습니다.
clientloglimit
설정의 값을 늘리면 많은 클라이언트에 대해 서버를 구성할 수 있습니다.
chronyd 서비스를 다시 시작합니다.
# systemctrl restart chronyd
검증
선택 사항:
/var/log/messages
로그 파일에서 하드웨어 시간 샘플링이 활성화되었는지 확인합니다.chronyd[4081]: Enabled HW timestamping on enp1s0 chronyd[4081]: Enabled HW timestamping on eno1
chronyd가 NTP 클라이언트 또는 피어로 구성된 경우 전송 및 수신 타임스탬프 모드 및 임시 모드를 표시합니다.
# chronyc ntpdata Output: [literal,subs="+quotes,verbatim,normal"] Remote address : 203.0.113.15 (CB00710F) Remote port : 123 Local address : 203.0.113.74 (CB00714A) Leap status : Normal Version : 4 Mode : Server Stratum : 1 Poll interval : 0 (1 seconds) Precision : -24 (0.000000060 seconds) Root delay : 0.000015 seconds Root dispersion : 0.000015 seconds Reference ID : 47505300 (GPS) Reference time : Wed May 03 13:47:45 2017 Offset : -0.000000134 seconds Peer delay : 0.000005396 seconds Peer dispersion : 0.000002329 seconds Response time : 0.000152073 seconds Jitter asymmetry: +0.00 NTP tests : 111 111 1111 Interleaved : Yes Authenticated : No TX timestamping : Hardware RX timestamping : Hardware Total TX : 27 Total RX : 27 Total valid RX : 27
NTP 측정의 안정성을 보고합니다.
# chronyc sourcestats Output: [literal,subs="+quotes,verbatim,normal"] .... 210 Number of sources = 1 Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev ntp.local 12 7 11 +0.000 0.019 +0ns 49ns ....
이 안정성은 Std Dev
열에 보고됩니다. 하드웨어 타임스탬프가 활성화된 경우 NTP 측정의 안정성은 일반 부하에서 수십 또는 수백 나노초이어야 합니다.
14.5.3. PTP-NTP 브리지 구성
PTP
(Precision Time Protocol) 기본 timeserver를 PTP를 지원하는 스위치 또는 라우터가 없는 네트워크에서 사용할 수 있는 경우 컴퓨터는
클라이언트 및 stratum-1 PTP
NTP
서버로만 작동할 수 있습니다. 이러한 컴퓨터에는 두 개 이상의 네트워크 인터페이스가 있어야 하며 기본 시간 서버에 가 있거나 직접 연결할 수 있어야 합니다. 이렇게 하면 네트워크에서 매우 정확한 동기화가 가능합니다.
절차
-
하나의 인터페이스를 사용하여
PTP
를 사용하여 시스템 시계를 동기화하도록linuxptp
패키지에서 ptp4l 및 phc2sys 프로그램을 구성합니다.
다른 인터페이스를 사용하여 시스템 시간을 제공하도록
chronyd
를 구성합니다.bindaddress 203.0.113.74 hwtimestamp enp1s0 local stratum 1
chronyd 서비스를 다시 시작합니다.
# systemctrl restart chronyd