12.5. HW 타임스탬프링을 사용하는 Chrony
일부 NIC(네트워크 인터페이스 컨트롤러)의 하드웨어 타임스탬프는 들어오고 나가는 패킷의 정확한 타임스탬프를 제공합니다. NTP
타임스탬프는 일반적으로 시스템 클록을 사용하여 커널 및 chronyd 에 의해 생성됩니다. 그러나 HW 타임스탬프가 활성화되면 NIC는 자체 클록을 사용하여 패킷이 링크 계층 또는 물리적 계층을 입력하거나 종료할 때 타임스탬프를 생성합니다. NTP
와 함께 사용할 경우 하드웨어 타임스탬프를 사용하면 동기화의 정확성을 크게 향상시킬 수 있습니다. 최적의 정확성을 위해 NTP
서버와 NTP
클라이언트 모두 하드웨어 타임스탬프를 사용해야 합니다. 이상적인 상황에서 마이크로초 미만의 정확성이 가능할 수 있습니다.
하드웨어 타임스탬프를 사용하는 시간 동기화를 위한 또 다른 프로토콜은 PTP
입니다.
NTP
와 달리PTP
는 네트워크 스위치 및 라우터의 지원을 사용합니다. 동기화의 최상의 정확성을 달성하려면 PTP
가 지원되는 스위치 및 라우터가 있는 네트워크에서 PTP
를 사용하고 이러한 스위치 및 라우터가 없는 네트워크에서 NTP
를 선호합니다.
12.5.1. 하드웨어 타임스탬프 지원 확인 링크 복사링크가 클립보드에 복사되었습니다!
인터페이스에서 NTP
를 사용한 하드웨어 타임스탬프를 지원하는지 확인하려면 ethtool -T
명령을 사용합니다. ethtool
이 SOF_TIMESTAMPING_TX_ HARDWARE 및
필터 모드를 나열하는 경우 인터페이스를 SOF_TIMESTAMPING_TX_QUAWARE
기능과 HWTSTAMPMP_FILTER_
ALLNTP
로 하드웨어 타임스탬프에 사용할 수 있습니다.
절차
- 장치의 타임스탬프 기능 및 관련 PTP 하드웨어 클록을 표시합니다.
ethtool -T enp1s0
# ethtool -T enp1s0
12.5.2. 하드웨어 타임스탬프 활성화 링크 복사링크가 클립보드에 복사되었습니다!
/etc/chrony.conf
파일의 hwtimestamp
지시문을 사용하여 하나 이상의 인터페이스에서 하드웨어 타임스탬프를 활성화할 수 있습니다. 지시문은 단일 인터페이스를 지정하거나 와일드카드 문자를 사용하여 이를 지원하는 모든 인터페이스에서 하드웨어 타임스탬프를 활성화할 수 있습니다.
절차
/etc/chrony.conf
파일을 편집하고 다음과 같이 변경합니다.하드웨어 타임스탬프를 지원하는 인터페이스에 대한
hwtimestamp
설정을 추가합니다. 예를 들면 다음과 같습니다.hwtimestamp enp1s0 hwtimestamp eno*
hwtimestamp enp1s0 hwtimestamp eno*
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ptp4l
과 같은 다른 애플리케이션이 없는 경우 * 와일드카드를 사용할 수 있습니다.서버 설정에
minpoll
및maxpoll
옵션을 추가하여 짧은 클라이언트 폴링 간격을 구성합니다. 예를 들면 다음과 같습니다.server ntp.example.comlocal minpoll 0 maxpoll 0
server ntp.example.comlocal minpoll 0 maxpoll 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 하드웨어 타임스탬프의 경우 시스템 클럭의 오프셋을 최소화하려면 기본 범위(641024초)보다 짧은 폴링 간격을 구성해야 합니다.
xleave
옵션을 서버 설정에 추가하여 NTP 인터리브 모드를 활성화합니다.server ntp.example.comlocal minpoll 0 maxpoll 0 xleave
server ntp.example.comlocal minpoll 0 maxpoll 0 xleave
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 설정을 사용하면 chrony가 패킷을 보낸 후에만 하드웨어 전송 타임스탬프를 가져옵니다. 이 동작은 서버가 응답하는 패킷에 타임스탬프를 저장하지 못하도록 합니다.
xleave
옵션을 사용하면 chrony가 전송 후 생성된 전송 타임스탬프를 수신할 수 있습니다.선택 사항: 서버에 대한 클라이언트 액세스 로깅에 할당된 최대 메모리 크기를 늘립니다. 예를 들면 다음과 같습니다.
clientloglimit 100000000
clientloglimit 100000000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 기본 서버 구성을 사용하면 몇 수천 개의 클라이언트가 인터리브 모드를 동시에 사용할 수 있습니다.
clientloglimit
설정의 값을 늘리면 많은 클라이언트에 대해 서버를 구성할 수 있습니다.
chronyd 서비스를 다시 시작합니다.
systemctrl restart chronyd
# systemctrl restart chronyd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
선택 사항:
/var/log/messages
로그 파일에서 하드웨어 시간 샘플링이 활성화되었는지 확인합니다.chronyd[4081]: Enabled HW timestamping on enp1s0 chronyd[4081]: Enabled HW timestamping on eno1
chronyd[4081]: Enabled HW timestamping on enp1s0 chronyd[4081]: Enabled HW timestamping on eno1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chronyd가 NTP 클라이언트 또는 피어로 구성된 경우 전송 및 수신 타임스탬프 모드 및 임시 모드를 표시합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NTP 측정의 안정성을 보고합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
이 안정성은 Std Dev
열에 보고됩니다. 하드웨어 타임스탬프가 활성화된 경우 NTP 측정의 안정성은 일반 부하에서 수십 또는 수백 나노초이어야 합니다.
12.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
bindaddress 203.0.113.74 hwtimestamp enp1s0 local stratum 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chronyd 서비스를 다시 시작합니다.
systemctrl restart chronyd
# systemctrl restart chronyd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow