11.4. HW 타임스탬프링이 있는 Chrony
일부 NIC(네트워크 인터페이스 컨트롤러)의 하드웨어 타임스탬프는 들어오고 나가는 패킷의 정확한 타임스탬프를 제공합니다. NTP 타임스탬프는 일반적으로 시스템 클럭을 사용하여 커널 및 chronyd 에 의해 생성됩니다. 그러나 HW 타임스탬프ing이 활성화되면 NIC는 자체 클럭을 사용하여 패킷이 링크 계층 또는 물리적 계층을 입력하거나 나가는 경우 타임스탬프를 생성합니다. NTP 와 함께 사용하면 하드웨어 타임스탬프가 동기화의 정확도를 크게 향상시킬 수 있습니다. 최상의 정확도를 위해 NTP 서버와 NTP 클라이언트는 하드웨어 타임스탬프를 사용해야 합니다. 이상적인 조건에서는 마이크로 초의 정확도가 가능할 수 있습니다.
하드웨어 타임스탬프를 사용하는 시간 동기화를 위한 또 다른 프로토콜은 PTP 입니다.
NTP 와 달리PTP 는 네트워크 스위치 및 라우터의 지원에 의존합니다. 동기화의 최상의 정확성을 달성하려면 PTP 가 지원되는 스위치 및 라우터가 있는 네트워크에서 PTP 를 사용하고 이러한 스위치 및 라우터가 없는 네트워크에서 NTP 를 선호합니다.
11.4.1. 하드웨어 타임스탬프에 대한 지원 확인 링크 복사링크가 클립보드에 복사되었습니다!
NTP 를 사용한 하드웨어 타임스탬프를 인터페이스에서 확인하려면 ethtool -T 명령을 사용합니다. ethtool 이 SOF_TIMESTAMPING_TX_HARDWARE 및 SOF_TIMESTAMPING_TX_SOFTWARE 기능 및 HWTSTAMP_FILTER_ALL 필터 모드를 나열하는 경우 NTP 를 사용한 하드웨어 타임 스탬프링에 사용할 수 있습니다.
절차
- 장치의 타임스탬프 기능 및 관련 PTP 하드웨어 클록을 표시합니다.
# ethtool -T enp1s0
11.4.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 eno1chronyd가 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 : 27NTP 측정의 안정성을 보고합니다.
# 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 측정의 안정성은 일반 부하에서 수십 또는 수백 나노초이어야 합니다.
11.4.3. PTP-NTP 브리지 구성 링크 복사링크가 클립보드에 복사되었습니다!
PTP(Precision Time Protocol) 기본 timeserver를 PTP를 지원하는 스위치 또는 라우터가 없는 네트워크에서 사용할 수 있는 경우 컴퓨터는 클라이언트 및 stratum-1 PTP NTP 서버로만 작동할 수 있습니다. 이러한 컴퓨터에는 두 개 이상의 네트워크 인터페이스가 있어야 하며 기본 시간 서버에 가 있거나 직접 연결할 수 있어야 합니다. 이렇게 하면 네트워크에서 매우 정확한 동기화가 수행됩니다.
절차
-
linuxptp패키지에서 ptp4l 및 phc2sys 프로그램을 구성하여PTP를 사용하여 시스템 클럭을 동기화하도록 하나의 인터페이스를 사용합니다.
다른 인터페이스를 사용하여 시스템 시간을 제공하도록
chronyd를 구성합니다.bindaddress 203.0.113.74 hwtimestamp enp1s0 local stratum 1chronyd 서비스를 다시 시작합니다.
# systemctrl restart chronyd