13.3. HW 타임스탬프링이 있는 Chrony
하드웨어 타임스탬프는 일부 NIC(Network Interface Controller)에서 지원되는 기능으로, 수신 및 발신 패킷의 정확한 타임스탬프를 제공합니다. NTP
타임스탬프는 일반적으로 시스템 클럭을 사용하여 커널 및 chronyd 에 의해 생성됩니다. 그러나 HW 타임스탬프ing이 활성화되면 NIC는 자체 클럭을 사용하여 패킷이 링크 계층 또는 물리적 계층을 입력하거나 나가는 경우 타임스탬프를 생성합니다. NTP
와 함께 사용하면 하드웨어 타임스탬프가 동기화의 정확도를 크게 향상시킬 수 있습니다. 최상의 정확도를 위해 NTP
서버와 NTP
클라이언트는 하드웨어 타임스탬프를 사용해야 합니다. 이상적인 조건에서는 마이크로 초의 정확도가 가능할 수 있습니다.
하드웨어 타임스탬프를 사용하는 시간 동기화를 위한 또 다른 프로토콜은 PTP
입니다.
NTP
와 달리PTP
는 네트워크 스위치 및 라우터의 지원에 의존합니다. 동기화의 최상의 정확도에 도달하려면 PTP
지원 기능이 포함된 스위치 및 라우터가 있는 네트워크에서 PTP
를 사용하고 이러한 스위치 및 라우터가 없는 네트워크에서 NTP
를 선호합니다.
다음 섹션에서는 다음 방법을 설명합니다.
- 하드웨어 타임 스탬프에 대한 지원 확인
- 하드웨어 타임스탬프 활성화
- 클라이언트 폴링 간격 구성
- interleaved 모드 활성화
- 다수의 클라이언트에 대해 서버 구성
- 하드웨어 타임스탬프 확인
- PTP-NTP 브리지 구성
13.3.1. 하드웨어 타임스탬프에 대한 지원 확인
NTP
를 사용한 하드웨어 타임스탬프를 인터페이스에서 확인하려면 ethtool -T
명령을 사용합니다. ethtool
이 SOF_TIMESTAMPING_TX_HARDWARE
및 SOF_TIMESTAMPING_TX_SOFTWARE
기능 및 HWTSTAMP_FILTER_ALL
필터 모드를 나열하는 경우 NTP
를 사용한 하드웨어 타임 스탬프링에 사용할 수 있습니다.
예 13.2. 특정 인터페이스에서 하드웨어 타임스탬프 지원 확인
# ethtool -T eth0
출력:
Timestamping parameters for eth0: Capabilities: hardware-transmit (SOF_TIMESTAMPING_TX_HARDWARE) software-transmit (SOF_TIMESTAMPING_TX_SOFTWARE) hardware-receive (SOF_TIMESTAMPING_RX_HARDWARE) software-receive (SOF_TIMESTAMPING_RX_SOFTWARE) software-system-clock (SOF_TIMESTAMPING_SOFTWARE) hardware-raw-clock (SOF_TIMESTAMPING_RAW_HARDWARE) PTP Hardware Clock: 0 Hardware Transmit Timestamp Modes: off (HWTSTAMP_TX_OFF) on (HWTSTAMP_TX_ON) Hardware Receive Filter Modes: none (HWTSTAMP_FILTER_NONE) all (HWTSTAMP_FILTER_ALL) ptpv1-l4-sync (HWTSTAMP_FILTER_PTP_V1_L4_SYNC) ptpv1-l4-delay-req (HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ) ptpv2-l4-sync (HWTSTAMP_FILTER_PTP_V2_L4_SYNC) ptpv2-l4-delay-req (HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ) ptpv2-l2-sync (HWTSTAMP_FILTER_PTP_V2_L2_SYNC) ptpv2-l2-delay-req (HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ) ptpv2-event (HWTSTAMP_FILTER_PTP_V2_EVENT) ptpv2-sync (HWTSTAMP_FILTER_PTP_V2_SYNC) ptpv2-delay-req (HWTSTAMP_FILTER_PTP_V2_DELAY_REQ)
13.3.2. 하드웨어 타임스탬프 활성화
하드웨어 타임스탬프를 활성화하려면 /etc/chrony.conf
파일에 hwtimestamp
지시문을 사용합니다. 지시문은 단일 인터페이스를 지정하거나 와일드카드 문자를 사용하여 이를 지원하는 모든 인터페이스에서 하드웨어 타임스탬프를 활성화할 수 있습니다. linuxptp
패키지의 ptp4l 과 같은 다른 애플리케이션이 없는 경우 인터페이스에서 하드웨어 타임스탬프를 사용하는 경우 와일드카드 사양을 사용합니다. chrony 구성 파일에서 여러 hwtimestamp
지시문이 허용됩니다.
예 13.3. hwtimestamp 지시문을 사용하여 하드웨어 타임스탬프 활성화
hwtimestamp eth0 hwtimestamp eth1 hwtimestamp *
13.3.3. 클라이언트 폴링 간격 구성
폴링 간격(64-1024초)의 기본 범위는 인터넷 서버에 권장됩니다. 로컬 서버 및 하드웨어 타임스탬프의 경우 시스템 클럭의 오프셋을 최소화하기 위해 더 짧은 폴링 간격을 구성해야 합니다.
/etc/chrony.conf
의 다음 지시문은 1초 폴링 간격을 사용하여 로컬 NTP
서버를 지정합니다.
server ntp.local minpoll 0 maxpoll 0
13.3.4. interleaved 모드 활성화
하드웨어
어플라이언스가 아니라 일반적인 용도의 컴퓨터에서 chrony 와 같은 소프트웨어 NTP
NTP
구현을 실행하는 NTP 서버는 패킷을 보낸 후에만 하드웨어 전송 타임스탬프를 가져옵니다. 이 동작은 서버가 해당하는 패킷에 타임스탬프를 저장하지 않도록 합니다. 전송 후 생성된 전송 타임스탬프를 수신하는 NTP
클라이언트가 /etc/chrony.conf
의 server 지시문에 xleave
옵션을 추가하여 NTP
인터리빙 모드를 사용하도록 클라이언트를 구성합니다.
server ntp.local minpoll 0 maxpoll 0 xleave
13.3.5. 다수의 클라이언트에 대한 서버 구성
기본 서버 구성을 사용하면 대부분 수천 개의 클라이언트가 동시에 interleaved 모드를 사용할 수 있습니다. 더 많은 수의 클라이언트에 대해 서버를 구성하려면 /etc/chrony.conf
에서 clientloglimit
지시문을 늘립니다. 이 지시문은 서버에 클라이언트 액세스 로깅을 위해 할당된 최대 메모리 크기를 지정합니다.
clientloglimit 100000000
13.3.6. 하드웨어 타임스탬프 확인
인터페이스에서 하드웨어 타임스탬프가 성공적으로 활성화되었는지 확인하려면 시스템 로그를 확인합니다. 로그에 성공적으로 활성화된 하드웨어 타임스탬프가 있는 각 인터페이스에 대해 chronyd
의 메시지가 포함되어야 합니다.
예 13.4. 하드웨어 타임스탬프가 활성화된 인터페이스에 대한 로그 메시지
chronyd[4081]: Enabled HW timestamping on eth0 chronyd[4081]: Enabled HW timestamping on eth1
chronyd
가 NTP
클라이언트 또는 피어로 구성된 경우 chronyc ntpdata
명령을 통해 각 NTP
소스에 대해 보고된 전송 및 타임스탬프 지정 모드와 시간 초과 모드를 사용할 수 있습니다.
예 13.5. 각 NTP 소스에 대한 전송, 타임스탬프 지정 및 인터리빙 모드를 보고합니다.
# chronyc ntpdata
출력:
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
예 13.6. NTP 측정의 안정성 보고
# chronyc sourcestats
하드웨어 타임스탬프를 활성화하면 NTP
측정의 안정성이 정상적인 부하에 따라 수십 또는 수백 나노초 내에 있어야 합니다. 이 안정성은 chronyc sourcestats
명령 출력의 Std Dev
열에 보고됩니다.
출력:
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
13.3.7. PTP-NTP 브리지 구성
PTP
(Precision Time Protocol) 기본 timeserver를 PTP를 지원하는 스위치 또는 라우터가 없는 네트워크에서 사용할 수 있는 경우 컴퓨터는
클라이언트 및 stratum-1 PTP
NTP
서버로만 작동할 수 있습니다. 이러한 컴퓨터에는 두 개 이상의 네트워크 인터페이스가 있어야 하며 기본 시간 서버에 가 있거나 직접 연결할 수 있어야 합니다. 이렇게 하면 네트워크에서 매우 정확한 동기화가 수행됩니다.
linuxptp
패키지에서 ptp4l 및 phc2sys 프로그램을 구성하여 PTP
를 사용하여 시스템 클럭을 동기화하도록 하나의 인터페이스를 사용합니다.
다른 인터페이스를 사용하여 시스템 시간을 제공하도록 chronyd
를 구성합니다.
예 13.7. 다른 인터페이스를 사용하여 시스템 시간을 제공하도록 chronyd 구성
bindaddress 203.0.113.74 hwtimestamp eth1 local stratum 1