15.3. HW 타임스탬프링을 사용하는 Chrony
하드웨어 타임스탬프링은 수신 및 발신 패킷의 정확한 타임스탬프를 제공하는 일부 NIC(Network Interface Controller)에서 지원되는 기능입니다. NTP
타임스탬프는 일반적으로 시스템 클록을 사용하여 커널 및 chronyd 에 의해 생성됩니다. 그러나 HW 타임스탬프가 활성화되면 NIC는 자체 클록을 사용하여 패킷이 링크 계층 또는 물리적 계층을 입력하거나 종료할 때 타임스탬프를 생성합니다. NTP
와 함께 사용할 경우 하드웨어 타임스탬프를 사용하면 동기화의 정확성을 크게 향상시킬 수 있습니다. 최적의 정확성을 위해 NTP
서버와 NTP
클라이언트 모두 하드웨어 타임스탬프를 사용해야 합니다. 이상적인 상황에서 마이크로초 미만의 정확성이 가능할 수 있습니다.
하드웨어 타임스탬프를 사용하는 시간 동기화를 위한 또 다른 프로토콜은 PTP
입니다.
NTP
와 달리PTP
는 네트워크 스위치 및 라우터의 지원을 사용합니다. 동기화의 정확성을 극대화하려면 PTP
를 지원하는 스위치 및 라우터가 있는 네트워크에서 PTP
를 사용하고 이러한 스위치와 라우터가 없는 네트워크에서 NTP
를 선호합니다.
다음 섹션에서는 다음을 수행하는 방법을 설명합니다.
- 하드웨어 타임스탬프 지원 확인
- 하드웨어 타임스탬프 활성화
- 클라이언트 폴링 간격 구성
- 인터리브드 모드 활성화
- 많은 수의 클라이언트를 위해 서버 구성
- 하드웨어 타임스탬프 확인
- PTP-NTP 브리지 구성
15.3.1. 하드웨어 타임스탬프 지원 확인
인터페이스에서 NTP
를 사용한 하드웨어 타임스탬프를 지원하는지 확인하려면 ethtool -T
명령을 사용합니다. ethtool
이 SOF_TIMESTAMPING_TX_ HARDWARE 및
필터 모드를 나열하는 경우 인터페이스를 SOF_TIMESTAMPING_TX_QUAWARE
기능과 HWTSTAMPMP_FILTER_
ALLNTP
로 하드웨어 타임스탬프에 사용할 수 있습니다.
예 15.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)
15.3.2. 하드웨어 타임스탬프 활성화
하드웨어 타임스탬프를 활성화하려면 /etc/chrony.conf
파일에서 hwtimestamp
지시문을 사용합니다. 지시문은 단일 인터페이스를 지정하거나 와일드카드 문자를 사용하여 이를 지원하는 모든 인터페이스에서 하드웨어 타임스탬프를 활성화할 수 있습니다. linuxptp
패키지의 ptp4l 과 같은 다른 애플리케이션이 인터페이스에서 하드웨어 타임스탬프를 사용하는 경우 와일드카드 사양을 사용합니다. chrony 구성 파일에는 여러 hwtimestamp
지시문이 허용됩니다.
예 15.3. hwtimestamp 지시문을 사용하여 하드웨어 타임스탬프 활성화
hwtimestamp eth0 hwtimestamp eth1 hwtimestamp *
15.3.3. 클라이언트 폴링 간격 구성
인터넷의 서버에는 폴링 간격의 기본 범위(64-1024초)가 권장됩니다. 로컬 서버 및 하드웨어 타임스탬프의 경우 시스템 클럭의 오프셋을 최소화하기 위해 더 짧은 폴링 간격을 구성해야 합니다.
/etc/chrony.conf
의 다음 지시문은 1초 폴링 간격을 사용하여 로컬 NTP
서버를 지정합니다.
server ntp.local minpoll 0 maxpoll 0
15.3.4. 인터리브드 모드 활성화
하드웨어 NTP
어플라이언스가 아니라 소프트웨어 NTP
구현을 실행하는 범용 컴퓨터(예: chrony )는 패킷을 보낸 후에만 하드웨어 전송 타임스탬프를 가져옵니다. 이렇게 하면 서버가 해당 패킷의 타임스탬프를 저장하는 것을 방지할 수 있습니다. 전송 후 생성된 전송 타임스탬프를 수신하는
NTP
클라이언트를 활성화하려면 /etc/chrony.conf의 server 지시문에
xleave
옵션을 추가하여 클라이언트가 NTP
인터리브 모드를 사용하도록 구성합니다.
server ntp.local minpoll 0 maxpoll 0 xleave
15.3.5. 다수의 클라이언트에 대해 서버 구성
기본 서버 구성을 사용하면 대부분의 수천 개의 클라이언트가 인터리브드 모드를 동시에 사용할 수 있습니다. 다수의 클라이언트에 대해 서버를 구성하려면 /etc/chrony.conf
에서 clientloglimit
지시문을 늘립니다. 이 지시문은 서버에서 클라이언트 액세스 권한을 로깅하기 위해 할당된 최대 메모리 크기를 지정합니다.
clientloglimit 100000000
15.3.6. 하드웨어 타임스탬프 확인
인터페이스가 하드웨어 타임스탬프를 성공적으로 활성화했는지 확인하려면 시스템 로그를 확인합니다. 로그에는 하드웨어 타임스탬프가 성공적으로 활성화된 각 인터페이스에 대해 chronyd
의 메시지가 포함되어야 합니다.
예 15.4. 하드웨어 타임스탬프가 활성화된 인터페이스에 대한 로그 메시지
chronyd[4081]: Enabled HW timestamping on eth0 chronyd[4081]: Enabled HW timestamping on eth1
chronyd
가 NTP
클라이언트 또는 피어로 구성되면 chronyc ntpdata
명령으로 각 NTP
소스에 대해 보고된 전송 및 수신 타임스탬프 모드와 인터리브드 모드가 있을 수 있습니다.
예 15.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
예 15.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
15.3.7. PTP-NTP 브리지 구성
PTP
(Precision Time Protocol) 기본 timeserver를 PTP를 지원하는 스위치 또는 라우터가 없는 네트워크에서 사용할 수 있는 경우 컴퓨터는
클라이언트 및 stratum-1 PTP
NTP
서버로만 작동할 수 있습니다. 이러한 컴퓨터에는 두 개 이상의 네트워크 인터페이스가 있어야 하며 기본 시간 서버에 가 있거나 직접 연결할 수 있어야 합니다. 이렇게 하면 네트워크에서 매우 정확한 동기화가 가능합니다.
하나의 인터페이스를 사용하여 PTP
를 사용하여 시스템 시계를 동기화하도록 linuxptp
패키지에서 ptp4l 및 phc2sys 프로그램을 구성합니다.
다른 인터페이스를 사용하여 시스템 시간을 제공하도록 chronyd
를 구성합니다.
예 15.7. 다른 인터페이스를 사용하여 시스템 시간을 제공하도록 chronyd 구성
bindaddress 203.0.113.74 hwtimestamp eth1 local stratum 1