IT/컴퓨터

PTP 코드 및 메시지 송수신 방식을 분석글

HawordFREAKEK 2020. 12. 4. 21:17
반응형

과제 하다가 추후에 따로 공부하거나 새로 PTP에 대해 공부하고자 하는 분께 도움이 될 것 같아 올립니다.





PTP 코드 및 메시지 송수신 방식을 분석하여 결과를 도출하시오.

 

2010000113 ㅁㅁㅁ

 

PTP코드란

 

- PTP 코드란 Precision Time Protocol 로써 네트워크 간의 정확한 동기화를 가능하게 하는 IEEE 1588 표준 시간 전송 프로토콜 이다.

하드웨어에서 생성하는 타임스탬프를 사용하면 나노초 단위 까지의 정확도를 보여준다.

 

PTP코드의 목적은 slave 장치가 자신의 clockmaster 장치 clock간에 offset을 결정하고, slave 장치가 offsetㅇ르 재계산하여, master 장치의 시간대와 동일한 시간대를 구성하는데에 있다. 현재 임베디드의 MCU와 이더넷 PHY 들은 PTP를 하드웨어적으로 구현하여 탑재가 되어있다. PTP 하드웨어 타임 스탬핑 유닛은 PTP SW 솔루션 보다 더 정확한 성능을 보여준다.

 

 

2. PTP관련 용어 정리

 

관련 자료를 조사하는데 알게 된 용어로는

 

1) accuracy

클럭들이 동기화 되기전의 기준 클럭과 보정하려는 클럭 사이에 주파수 오류나 시간를 의미한다.

 

2) boundary clock

GrandMaster로부터 시간을 받아와 동기화를 수행 한 후 Slave와 시간을 동기화 수행하는 장치

3) clock

PTP에서 Node에게 분배 되어지는 것이다.

time의 흐름을 Clock 측정으로 할 수 있다.

4) domain

클럭이 동기화 되어있는 로컬들의 그룹이다.

5) end to end transparent clock

Master clockSlave clock 사이에 지연시간 측정에 사용되는 클럭이다.

6) event

신호 또는 조건을 생성하고 표시하는 추상적 개념이다.

7) grandmaster clock

PTP 프로토콜에서 시간 동기화에 기준이 되는 최상위 클럭.

- GrandMaster : GPS로부터 시간을 받아오는 하드웨어 장치이다.

8) master clock

단일 PTP 통신에서 다른 클럭들과 동기화 하기 위한 기준 클럭이다.

9) multicast communication

각각의 PTP 메시지는 임의의 PTP 포트로터 전송되고 전송된 메시지는 같은 PTP 통신 경로 내에 모든 PTP 포트에서 처리되어 지는 것 이다.

10) Precision Time Protocol communication

PTP 통신 경로를 통해서 PTP 메시지가 전송되는 프로토콜이 동작되는 행위이다.

11. Precision Time Protocol communication path

OrdinaryBoundary 클럭 간의 Dircet 통신이 가능한 네트워크 신호 전달 구간이다.

12) Precision Time Protocol message

IEEE 1588에 정의된 메시지 형식이다.

13) node

네트워크에서 PTP 패킷을 수신 할 수 있는 장치이다.

14) Precision Time Protocol port

네트워크에서 PTP 패킷이 논리적으로 접근할 수 있는 포인트이다.

 

 

위 용어들은 PTP 관련 코드를 짜거나 알고리즘을 짤 때 필요한 개념이기에 시간을 갖고 외워두는 것이 필요하다 생각한다.

 

 






(null) 




ptp4l.conf 내용 분석 및 사용 방법

 

ptp4l.conf

 

ptp4l [ AEP246HSLmqsv ] [ f config ] [ p phc-device ] [ l print-level ] [ i interface ] [ long-options ]

 

형식으로 사용되며,

 

A

 

지연 메커니즘을 자동으로 선택합니다. E2E로 시작하고 피어 지연 요청이 수신되면 P2P로 전환하십시오.

 

E

 

지연 요청-응답 (E2E) 메커니즘을 선택하십시오. 이것이 기본 메커니즘입니다. 단일 PTP 통신 경로의 모든 클록은 동일한 메커니즘을 사용해야합니다. E2E 메커니즘을 사용하는 포트에서 피어 지연 요청이 수신되면 경고가 인쇄됩니다.

 

P

 

피어 지연 (P2P) 메커니즘을 선택하십시오. P2P 메커니즘을 사용하여 포트에서 지연 요청이 수신되면 경고가 인쇄됩니다.

 

2

 

IEEE 802.3 네트워크 전송을 선택합니다.

 

4

 

UDP IPv4 네트워크 전송을 선택합니다. 이것이 기본 전송입니다.

 

6

 

UDP IPv6 네트워크 전송을 선택합니다.

 

H

 

하드웨어 타임 스탬프를 선택합니다. i 옵션과 구성 파일에 지정된 모든 포트 는 동일한 PTP 하드웨어 클럭 (PHC)에 연결되어야합니다. 이것이 기본 타임 스탬프입니다.

 

S

 

소프트웨어 타임 스탬프를 선택합니다.

 

L

 

레거시 하드웨어 타임 스탬프를 선택합니다.

 

f 구성

 

지정된 파일에서 구성을 읽습니다. 기본적으로 구성 파일을 읽지 않습니다.

 

i 인터페이스

 

PTP 포트를 지정하십시오. 여러 번 사용할 수 있습니다. 이 옵션 또는 구성 파일에 하나 이상의 포트를 지정해야합니다.

 

p phc- 장치

 

(이 옵션은 더 이상 사용되지 않습니다.) Linux 커널 v3.5 이전에는 네트워크 인터페이스와 관련된 PHC 장치를 검색 할 방법이 없었습니다. 이 옵션은 레거시 커널에서 실행할 때 사용할 PHC 장치 (: / dev / ptp0)를 지정합니다.

 

s

 

slaveOnly 모드를 활성화합니다.

 

l 인쇄 수준

 

인쇄하거나 시스템 로거로 보내야하는 메시지의 최대 syslog 수준을 설정합니다. 기본값은 6 (LOG_INFO)입니다.

 

m

 

표준 출력으로 메시지를 인쇄합니다.

 

q

 

시스템 로거에 메시지를 보내지 마십시오.

 

v

 

소프트웨어 버전을 인쇄하고 종료합니다.

 

h

 

도움말 메시지를 표시합니다.

 

등의 옵션이 있습니다.

 

그 외의 ptp4l.conf 코드의 세부 옵션은

 

 

delayAsymmetry

 

전송 및 수신 경로의 시간 차이 (나노초)입니다. 이 값은 마스터-슬레이브 전파 시간이 길면 양수이고 슬레이브-마스터 시간이 길면 음수 여야합니다. 기본값은 0 나노초입니다.

 

logAnnounceInterval

 

Announce 메시지 사이의 평균 시간 간격입니다. 간격이 짧을수록 ptp4l은 마스터-슬레이브 계층 구조의 변경 사항에 더 빠르게 반응합니다. 간격은 전체 도메인에서 동일해야합니다. 초 단위로 2의 거듭 제곱으로 지정됩니다. 기본값은 1 (2 )입니다.

 

logSyncInterval

 

동기화 메시지 간의 평균 시간 간격입니다. 간격이 짧으면 로컬 시계의 정확도가 향상 될 수 있습니다. 초 단위로 2의 거듭 제곱으로 지정됩니다. 기본값은 0 (1 )입니다.

 

logMinDelayReqInterval

 

Delay_Req 메시지 사이에 허용되는 최소 평균 시간 간격입니다. 간격이 짧을수록 ptp4l이 경로 지연의 변화에 ​​더 빠르게 반응합니다. 초 단위로 2의 거듭 제곱으로 지정됩니다. 기본값은 0 (1 )입니다.

 

logMinPdelayReqInterval

 

Pdelay_Req 메시지 사이에 허용되는 최소 평균 시간 간격입니다. 초 단위로 2의 거듭 제곱으로 지정됩니다. 기본값은 0 (1 )입니다.

 

AnnounceReceiptTimeout

 

마지막 Announce 메시지가 만료되기 전에 놓친 Announce 메시지 수입니다. 기본값은 3입니다.

 

syncReceiptTimeout

 

Best Master Clock 선택을 트리거하기 전에 누락 될 수있는 동기화 / 후속 메시지의 수입니다. 이 옵션은 802.1AS-2011 표준에 따라 gPTP 모드에서 실행하는 데 사용됩니다. 이 옵션을 0으로 설정하면 동기화 메시지 시간 초과가 비활성화됩니다. 기본값은 0 또는 비활성화입니다.

 

transportSpecific

 

전송 특정 필드입니다. 0-255 범위에 있어야합니다. 기본값은 0입니다.

 

ignore_transport_specific

 

기본적으로 수신 메시지는 transportSpecific 필드가 구성된 값과 일치하지 않는 경우 삭제됩니다. 그러나 1588 표준 명령에 지정된 많은 전송은이 필드를 무시합니다. 또한 일부 장비는 예약 된 비트를 설정하는 것으로 알려져 있습니다. 이 옵션을 1로 구성하면이 필드가 수신시 완전히 무시됩니다. 기본값은 0입니다.

 

path_trace_enabled

 

Announce 메시지의 경로를 추적하는 데 사용되는 메커니즘을 활성화합니다. 기본값은 0 (비활성화)입니다.

 

follow_up_info

 

활성화 된 경우 802.1AS 데이터를 Follow_Up 메시지에 포함합니다. 기본값은 0 (비활성화)입니다.

 

fault_reset_interval

 

포트 오류 감지와 재설정되는 오류 사이의 시간 ()입니다. 이 값은 2의 거듭 제곱으로 표현됩니다. 이 값을 -128 또는 특수 키워드 "ASAP"로 설정하면 오류가 즉시 재설정됩니다. 기본값은 4 (16 )입니다.

 

fault_badpeernet_interval

 

피어 네트워크 구성 오류 감지와 재설정되는 오류 사이의 시간 ()입니다. 해당 간격 동안 포트가 비활성화됩니다. 값은 초 단위이며 특수 키워드 ASAP를 사용하면 오류를 즉시 재설정 할 수 있습니다. 기본값은 16 초입니다.

 

delay_mechanism

 

지연 메커니즘을 선택하십시오. 가능한 값은 E2E, P2P Auto입니다. 기본값은 E2E입니다.

 

hybrid_e2e

 

초안 엔터프라이즈 프로필에서 "하이브리드"지연 메커니즘을 활성화합니다. 활성화되면 슬레이브 상태의 포트는 마스터의 알림 메시지에서 가져온 유니 캐스트 주소로 지연 요청 메시지를 보냅니다. 마스터 상태의 포트는 유니 캐스트 지연 응답을 사용하여 유니 캐스트 지연 요청에 응답합니다. delay_mechanismP2P로 설정된 경우이 옵션은 적용되지 않습니다. 기본값은 0 (비활성화)입니다.

 

net_sync_monitor

 

NSM (NetSync Monitor) 프로토콜을 활성화합니다. NSM 프로토콜을 통해 스테이션은 다른 노드가 얼마나 잘 동기화되었는지 측정 할 수 있습니다. 모니터는 유니 캐스트 지연 응답, 동기화 및 후속 메시지로 무조건 응답하는 유니 캐스트 지연 요청을 노드에 보냅니다. 모니터가 GM에 동기화 된 경우 메시지의 타임 스탬프를 사용하여 노드의 오프셋을 추정 할 수 있습니다. 이 옵션을 사용하려면 'hybrid_e2e'옵션도 활성화해야합니다. 기본값은 0 (비활성화)입니다.

 

ptp_dst_mac

 

PTP 메시지를 보내야하는 MAC 주소입니다. L2 전송에만 관련됩니다. 기본값은 01 : 1B : 19 : 00 : 00 : 00입니다.

 

p2p_dst_mac

 

피어 지연 메시지를 보내야하는 MAC 주소입니다. L2 전송에만 관련됩니다. 기본값은 01 : 80 : C2 : 00 : 00 : 0E입니다.

 

network_transport

 

네트워크 전송을 선택하십시오. 가능한 값은 UDPv4, UDPv6 L2입니다. 기본값은 UDPv4입니다.

 

neighbourPropDelayThresh

 

피어 지연의 상한 (나노초)입니다. 예상 피어 지연이이 값보다 크면 포트는 802.1AS를 사용할 수없는 것으로 표시됩니다.

 

min_neighbor_prop_delay

 

피어 지연의 하한 (나노초)입니다. 예상 피어 지연이이 값보다 작은 경우 포트는 802.1AS를 사용할 수없는 것으로 표시됩니다.

 

tsproc_mode

 

오프셋 및 지연을 계산하는 데 사용되는 타임 스탬프 처리 모드를 선택합니다. 가능한 값은 filter, raw, filter_weight, raw_weight입니다. 원시 모드는 동기화 메시지 비율 (logSyncInterval)이 지연 메시지 비율 (logMinDelayReqInterval 또는 logMinPdelayReqInterval)과 유사 할 때 잘 수행됩니다. 가중치는 더 큰 네트워크 지터 (: 소프트웨어 타임 스탬핑)에 유용합니다. 기본값은 필터입니다.

 

delay_filter

 

측정 된 지연 및 피어 지연을 필터링하는 데 사용되는 알고리즘을 선택합니다. 가능한 값은 moving_average moving_median입니다. 기본값은 moving_median입니다.

 

delay_filter_length

 

샘플의 지연 필터 길이입니다. 기본값은 10입니다.

 

egressLatency

 

참조 평면에서의 실제 전송 시간과보고 된 전송 타임 스탬프 간의 차이 (나노초)를 지정합니다. 이 값은 하드웨어에서 얻은 송신 타임 스탬프에 추가됩니다. 기본값은 0입니다.

 

ingressLatency

 

보고 된 수신 타임 스탬프와 참조 평면에서 실제 수신 시간 사이의 차이 (나노초)를 지정합니다. 이 값은 하드웨어에서 얻은 수신 타임 스탬프에서 뺍니다. 기본값은 0입니다.

 

boundary_clock_jbod

 

경계 클럭으로 실행될 때 (, 둘 이상의 네트워크 인터페이스가 구성된 경우) ptp4l은 모든 포트가 동일한 하드웨어 클럭 장치를 공유하는지 확인하기 위해 온 전성 검사를 수행합니다. 이 옵션을 사용하면 ptp4l이 서로 동기화되지 않은 "단지 한 무리의 장치"를 사용하여 경계 시계로 작동 할 수 있습니다. 이 모드의 경우 시계 모음은 "자동"모드의 phc2sys (8) 와 같은 외부 프로그램에 의해 동기화되어야 합니다. 기본값은 0 (비활성화)입니다.

 

udp_ttl

 

IPv4 멀티 캐스트 메시지에 대한 TTL (Time to live) 값과 IPv6 멀티 캐스트 메시지에 대한 홉 제한을 지정합니다. 이 옵션은 IPv4 IPv6 UDP 전송에만 관련됩니다. ptp4l 에서 보낸 메시지 를 동일한 서브넷 으로 제한하는 기본값은 1 입니다.

 

프로그램 및 시계 옵션

twoStepFlag

 

동기화 메시지에 2 단계 모드를 활성화합니다. 원스텝 모드는 하드웨어 타임 스탬프에만 사용할 수 있습니다. 기본값은 1 (사용)입니다.

 

slaveOnly

 

활성화 된 경우 로컬 시계는 슬레이브 전용 시계입니다. 이 옵션은 1588 클럭에만 사용되며 802.1AS 클럭에 대해 활성화하면 안됩니다. 기본값은 0 (비활성화)입니다.

 

gmCapable

 

이 옵션이 활성화되면 로컬 시계가 그랜드 마스터가 될 수 있습니다. 802.1AS 클럭에만 사용되며 1588 클럭에는 영향을주지 않습니다. 기본값은 1 (사용)입니다.

 

우선 순위 1

 

로컬 시계의 priority1 속성입니다. 최상의 마스터 선택 알고리즘에서 사용되며 낮은 값이 우선합니다. 0-255 범위에 있어야합니다. 기본값은 128입니다.

 

우선 순위 2

 

로컬 시계의 priority2 속성입니다. 최상의 마스터 선택 알고리즘에서 사용되며 낮은 값이 우선합니다. 0-255 범위에 있어야합니다. 기본값은 128입니다.

 

clockClass

 

로컬 시계의 clockClass 속성입니다. 그랜드 마스터 시계에 의해 배포 된 시간의 추적 성을 나타냅니다. 기본값은 248입니다.

 

clockAccuracy

 

로컬 시계의 clockAccuracy 속성입니다. 최고의 마스터 선택 알고리즘에서 사용됩니다. 기본값은 0xFE입니다.

 

offsetScaledLogVariance

 

로컬 시계의 offsetScaledLogVariance 속성입니다. 시계의 안정성을 특징으로합니다. 기본값은 0xFFFF입니다.

 

domainNumber

 

로컬 시계의 도메인 속성입니다. 기본값은 0입니다.

 

utc_offset

 

TAIUTC 사이의 현재 오프셋입니다. 기본값은 37입니다.

 

무료 실행

 

활성화 된 경우 로컬 시계를 조정하지 마십시오. 기본값은 0 (비활성화)입니다.

 

freq_est_interval

 

로컬 및 피어 클록 주파수의 비율을 추정하는 시간 간격입니다. 2의 거듭 제곱 ()으로 지정됩니다. 기본값은 1 (2 )입니다.

 

가정 _ 두 단계

 

활성화 된 경우 1 단계 응답을 2 단계로 처리합니다. 버그가있는 802.1AS 스위치를 해결하는 데 사용됩니다. 기본값은 0 (비활성화)입니다.

 

tx_timestamp_timeout

 

메시지가 최근에 전송되었을 때 커널에서 tx 타임 스탬프를 기다리는 폴링 시간 (밀리 초)입니다. 기본값은 1입니다.

 

check_fup_sync

 

네트워크, 하드웨어 또는 네트워킹 스택에서 발생할 수있는 패킷 재정렬로 인해 후속 메시지가 일치하는 동기화 메시지 전에 애플리케이션에 도착하는 것처럼 보일 수 있습니다. 이것은 정상적인 현상이고 sequenceID 메시지 필드가 적절한 일치를 보장하므로 ptp4l 프로그램은 순서가 잘못된 패킷을 허용합니다. 이 옵션은 네트워킹 스택의 소프트웨어 타임 스탬프를 사용하여 동기화 메시지가 먼저 도착했는지 확인하는 추가 검사를 추가합니다. 이 옵션은 마스터가 생성 한 시퀀스 ID를 신뢰하지 않는 경우에만 유용합니다. 기본값은 0 (비활성화)입니다.

 

clock_servo

 

로컬 시계를 동기화하는 데 사용되는 서보입니다. 유효한 값은 PI 컨트롤러의 경우 "pi", 선형 회귀를 사용하는 적응 형 컨트롤러의 경우 "linreg", 다른 프로세스가 로컬 클럭을 동기화 할 수 있도록 허용하는 NTP SHM 참조 클럭의 경우 "ntpshm"입니다 (SHM 세그먼트 번호는 도메인에 설정 됨). 번호) 및 항상 주파수 오프셋 0을 다이얼하는 서보의 경우 "nullf"(SyncE 노드에서 사용). 기본값은 "pi"입니다.

 

pi_proportional_const

 

PI 컨트롤러의 비례 상수입니다. 0.0으로 설정하면 현재 동기화 간격에서 다음 공식으로 비례 상수가 설정됩니다. 기본값은 0.0입니다.

 

kp = min (kp_scale * sync ^ kp_exponent, kp_norm_max / sync)

 

pi_integral_const

 

PI 컨트롤러의 적분 상수입니다. 0.0으로 설정하면 현재 동기화 간격에서 다음 공식에 의해 적분 상수가 설정됩니다. 기본값은 0.0입니다.

 

ki = min (ki_scale * sync ^ ki_exponent, ki_norm_max / sync)

 

pi_proportional_scale

 

동기화 간격에서 PI 컨트롤러의 비례 상수를 설정하는 데 사용되는 공식의 kp_scale 상수입니다. 0.0으로 설정하면 하드웨어 및 소프트웨어 타임 스탬프에 대해 각각 0.7 0.1에서 값이 선택됩니다. 기본값은 0.0입니다.

 

pi_proportional_exponent

 

동기화 간격에서 PI 컨트롤러의 비례 상수를 설정하는 데 사용되는 공식의 kp_exponent 상수입니다. 기본값은 -0.3입니다.

 

pi_proportional_norm_max

 

동기화 간격에서 PI 컨트롤러의 비례 상수를 설정하는 데 사용되는 공식의 kp_norm_max 상수입니다. 기본값은 0.7입니다.

 

pi_integral_scale

 

동기화 간격에서 PI 컨트롤러의 적분 상수를 설정하는 데 사용되는 공식의 ki_scale 상수입니다. 0.0으로 설정하면 하드웨어 및 소프트웨어 타임 스탬프에 대해 각각 0.30.001에서 값이 선택됩니다. 기본값은 0.0입니다.

 

pi_integral_exponent

 

동기화 간격에서 PI 컨트롤러의 적분 상수를 설정하는 데 사용되는 공식의 ki_exponent 상수입니다. 기본값은 0.4입니다.

 

pi_integral_norm_max

 

동기화 간격에서 PI 컨트롤러의 적분 상수를 설정하는 데 사용되는 공식의 ki_norm_max 상수입니다. 기본값은 0.3입니다.

 

step_threshold

 

서보가 클럭을 스테핑하는 대신 클럭 주파수를 변경하여 수정하는 최대 오프셋입니다. 0.0으로 설정하면 서보는 시작시를 제외하고는 시계를 절대로 스텝하지 않습니다. 초 단위로 지정됩니다. 기본값은 0.0입니다. 이 옵션은 pi_offset_const 라고 했습니다 .

 

first_step_threshold

 

서보가 클럭을 스테핑하는 대신 클럭 주파수를 변경하여 수정하는 최대 오프셋입니다. 이것은 첫 번째 업데이트에만 적용됩니다. 초 단위로 지정됩니다. 0.0으로 설정하면 서보가 시작시 시계를 밟지 않습니다. 기본값은 0.00002 (20 마이크로 초)입니다. 이 옵션은 pi_f_offset_const 라고 했습니다 .

 

max_frequency

 

클럭의 최대 허용 주파수 조정 (ppb)입니다. 이는 하드웨어에서 허용하는 최대 값에 대한 추가 제한입니다. 0으로 설정하면 하드웨어 제한이 사용됩니다. 기본값은 900000000 (90 %)입니다. 이 옵션은 pi_max_frequency 라고 했습니다 .

 

sanity_freq_limit

 

수정되지 않은 클록과 시스템 단조 클록 사이에 허용되는 최대 주파수 오프셋 (ppb). 이것은 동기화 된 시계의 온 전성 검사로 사용됩니다. 더 큰 오프셋이 측정되면 경고 메시지가 인쇄되고 서보가 재설정됩니다. 0으로 설정하면 온 전성 검사가 비활성화됩니다. 기본값은 200000000 (20 %)입니다.

 

초기 _ 지연

 

지연이 E2E 또는 P2P 지연 메커니즘을 사용하여 측정되기 전에 클록 동기화에 사용되는 클록의 초기 경로 지연 (나노초)입니다. 0으로 설정하면 지연이 측정 될 때까지 시계가 업데이트되지 않습니다. 기본값은 0입니다.

 

ntpshm_segment

 

ntpshm 서보에서 사용하는 SHM 세그먼트의 수입니다. 기본값은 0입니다.

 

udp6_scope

 

IPv6 멀티 캐스트 메시지의 원하는 범위를 지정합니다. 이것은 기본 주소의 두 번째 바이트로 사용됩니다. 이 옵션은 IPv6 전송에만 관련됩니다. RFC 4291을 참조하십시오. 기본값은 전역 범위의 경우 0x0E입니다.

 

uds_address

 

로컬 관리 메시지를 수신하기위한 UNIX 도메인 소켓의 주소를 지정합니다. 기본값은 / var / run / ptp4l입니다.

 

dscp_event

 

PTP 이벤트 메시지에 사용할 DSCP (Differentiated Services Codepoint)를 정의합니다. 0에서 63 사이의 값이어야합니다.이 옵션에 대한 특정 값을 요구하는 여러 미디어 스트리밍 표준이 있습니다. 예를 들어 AES67에서는 46 (EF PHB), RAVENNA에서는 48 (CS6 PHB)입니다. 기본값은 0입니다.

 

dscp_general

 

PTP 일반 메시지에 사용할 DSCP (Differentiated Services Codepoint)를 정의합니다. 0에서 63 사이의 값이어야합니다.이 옵션에 대한 특정 값을 권장하는 여러 미디어 스트리밍 표준이 있습니다. 예를 들어 AES6734 (AF41 PHB) 또는 RAVENNA46 (EF PHB). 기본값은 0입니다.

 

로깅 수준

 

인쇄해야하는 메시지의 최대 로깅 수준입니다. 기본값은 6 (LOG_INFO)입니다.

 

message_tag

 

표준 출력 또는 시스템 로그에 인쇄 된 모든 메시지에 추가되는 태그입니다. 기본값은 빈 문자열입니다 (옵션에 인수가 필요하므로 구성 파일에서 설정할 수 없음).

 

말 수가 많은

 

활성화 된 경우 메시지를 표준 출력으로 인쇄합니다. 기본값은 0 (비활성화)입니다.

 

use_syslog

 

활성화 된 경우 시스템 로그에 메시지를 인쇄합니다. 기본값은 1 (사용)입니다.

 

summary_interval

 

시계의 요약 통계가 인쇄되는 시간 간격입니다. 2의 거듭 제곱 ()으로 지정됩니다. 통계에는 오프셋 RMS (root mean square), 최대 절대 오프셋, 주파수 오프셋 평균 및 표준 편차, 경로 지연 평균 및 표준 편차가 포함됩니다. 단위는 나노초 및 십억 분율 (ppb)입니다. 간격에 클럭 업데이트가 하나만있는 경우 통계 대신 샘플이 인쇄됩니다. 메시지는 LOG_INFO 레벨에서 인쇄됩니다. 기본값은 0 (1 )입니다.

 

타임 스탬프

 

타임 스탬프 방법. 허용되는 값은 하드웨어, 소프트웨어 및 레거시입니다. 기본값은 하드웨어입니다.

 

productDescription

 

제품 설명 문자열입니다. 허용되는 값은 manufacturerName; modelNumber; instanceIdentifier 형식이어야하며 최대 64 개의 utf8 기호를 포함해야합니다. 기본값은 ";;"입니다.

 

개정 데이터

 

노드 하드웨어 (HW), 펌웨어 (FW) 및 소프트웨어 (SW)에 대한 개정이 포함 된 개정 설명 문자열입니다. 허용되는 값은 HW; FW; SW 형식이며 최대 32 개의 utf8 기호를 포함합니다. 기본값은 ";;"입니다.

 

userDescription

 

사용자 설명 문자열입니다. 허용되는 값은 name; location 형식이며 최대 128 개의 utf8 기호를 포함합니다. 기본값은 빈 문자열입니다.

 

제조업체 ID

 

제조업체가 소유 한 OUI 여야하는 제조업체 ID입니다. 기본값은 00:00:00입니다.

 

커널 도약

 

윤초가 발표되면 서보로 1 초 오프셋을 수정하는 대신 클럭을 스텝핑하여 커널이 적용하도록하세요. 그러면 클럭 주파수를 변경하여 1 초 오프셋을 천천히 수정합니다 ( step_threshold 옵션이 수정으로 설정 되지 않은 경우). 스테핑에 의한 오프셋). 소프트웨어 타임 스탬프와 만 관련이 있습니다. 기본값은 1 (사용)입니다.

 

timeSource

 

시간 소스는 사용중인 로컬 시계의 종류에 대한 아이디어를 제공하는 단일 바이트 코드입니다. 이 값은 순전히 정보 제공 용이며 Best Master Clock 알고리즘의 결과에 영향을주지 않으며 클록이 그랜드 마스터가 될 때 광고됩니다.

 


 


개체 연결선입니다. 개체 연결선입니다.

 

 

3. ethtool

 

ethtool 은 네트워크 디바이스 드라이버와 하드웨어 setting을 설정할 수 있는 명령어이다.

- ethtool 옵션 ethX 파라미터

형식으로 사용된다.

 

 

4. 메시지 송수신 방식


 

master clock이 동시화 메시지를 전송한다. 동기화 메시지가 마스터를 출발한 시간에는 t1이라는 타임스탬프가 붙는다. t1 은 동기화 메시지 자체에 포함 되거나, 아니면 follow_up 이라는 메시지로 전송된다.

동기화 메시지 자체에 포함되면 1단계 동작이고, follow up 이라는 메시지로 전송되면 두 단계 동작을 하게 된다.

slave가 동기화 메시지를 수신한다. 이 수신 시간이 t2이다.

slaveDelay_Req 메시지를 전송하고, 이 메시지가 Slave를 출발할 때의 시간이 t3 이고, master 이 이 메시지를 받을 때가 t4이다.

master는 타임스탬프 t4 가 포함된 Delay_Resp 메시지로 응답한다.

 


(수업 자료의 PTP clock에 있는 timestamp가 위의 타임스탬프를 뜻한다고 생각한다)

 

 

 

수업 PPT로 예를 들자면 (1)로 가기전에 master에서 타임스탬프가 붙은 상태로 slave 에 오게 된다. PPT 이미지 파일을 보자면, 신호를 두 번 받는 것이 아닌 한 번만 받아서 clock 정보를 넘기기 때문에, (2) 메시지 전송의 지연을 확인하기 위해 follow_upSync 메시지를 사용한 것 같다. follow_up 메시지는 Sync와 함께 메시지를 이용하여 오프셋을 수정하는 역할을 한다. 2번째 메시지를 통하여, 네트워크 지연 차를 정확히 하는 타임스탬프는 Delay_Req 메세지를 보낼 때 타임 스탬프를 추가하게 된다. master 클럭의 타임스탬프는 Delay_Req 메시지가 도착한 시간으로 한 뒤 Delay_Request 메시지가 도착한 시점에 Delay_Resp 메시지를 (3),(4)번에서 보낸다. slave 가 양 방향 지현을 평균화 해서 지연시간 만큼 클럭을 조정해서 마스터와 슬레이브가 모두 같은 클럭이 되도록한다. offset 계산, offset 적용이 그러한 뜻 같다.

 

 

 


 

ex) 초기의 master 시간이 100s, slave 의 시간이 80s 일 시, 시간이 slave에서 조정되는 원리

 

위 사진에서는 (2) 와 같은 메시지 전송의 지연을 확인하는 구간이 없다.

 

Follow up master clock100s 가 전송된다.

slave 가 그것을 받았을 당시의 수신 시간은 82s .

slaveDelay_Req를 보내는데 그 값이 보내진 시간이 86s 이고, master는 그것을 108s 에 받는다.

그 후에 masterDelay_Resp 108s, 즉 자신이 메시지를 받았을 때의 값을 포함하여 Slave에게 보낸다.


 

위 사진은 참고자료의 값과 PPT의 단계 사이 정도 되어 보여 위 사진으로 한 번 더 공부하였다.

 

 

1. Follow up master clock100s 가 전송된다.

2. slave 가 그것을 받았을 당시의 수신 시간은 82s .

3. 전 참고자료와 다르게, 위 참고자료는 재 전송과 재 계산이 있다. 여기서는 master에서 105s에서 보내고 slave에서 2s 있다 받게 되었다.

4. slaveDelay_Req를 보내는데 그 값이 보내지는 시간이 2s 이고, master는 그것을 112s 에 받는다.

5. 그 후에 masterDelay_Resp 112s, 즉 자신이 메시지를 받았을 때의 값을 포함하여 Slave에게 보낸다.

 


 

(추가 참고 자료)

 

 

5. 위 과제를 하며 느낀점

 

해당 과제를 하며. master slave가 값을 주고 받는 모양이 TCP프로토콜이 acknak을 통하여 값을 전달하는 모양과 비슷하여, 혹시 관련된 것은 없을까 놓친 부분이 있지는 않나하고 다시 보았습니다.

 

그리고 자료를 조사하던 도중 PTPPTPv2가 있어 가급적이면 수업에서 배운 PTP 위주로 조사를 하였고, 각각 ieee1588:2005, ieee1588:2008로 정의되어있어, 혹시 사용하게 되면 최신 버전인 PTPv2를 사용할 것 같아 관련 자료를 북마크 해두면서 모아두었다.

PTPPTPv2의 차이가 형식적으로는 없는 것 같아, 공부를 할 때 더 자세히 나와있는 사이트 기준으로 공부를 하였습니다.

 

PTP를 통한 메시지 전달 시, Delay_Resp slave에 전달되는 순간이 중요한 것 인지, 아니면 어떠한 계산식이 중요한 것 인지 몰라 일단은 전달 과정과 각 과정마다 갖고 있는 의미, 과정마다 생기게 되는 타임스탬프들의 flow를 이해하는 데에 목적을 두었습니다.

 

값비싼 타이밍 네트워크의 요구나 머신없이 클록을 동기화하는 방식이기에 추후에 임베디드 관련 개발을 하게되면 꼭 필요한 프로토콜 방식이라 생각하였습니다. PTP가 사용되는 활용범위를 찾아보고, 거기에 PTP가 사용되는 방식을 추가적으로 더 찾아보면 저에게 더 도움이 될 것이라 생각합니다.

 

ptp4l.conf 파일에 종류와 옵션이 너무 많아 천천히 다시 외워가며, 추후에 사용하게 되면 검색해보며 사용해야겠다 생각이 들었다.

 

 

PTP, 메시지 송수신 관련 자료 분석 참고 출처 :

수업 13, 14주차 PPT

https://m.blog.naver.com/PostList.nhn?blogId=golsm21

https://www.hbm.com/kr/5143/precision-time-protocol/

https://m.blog.naver.com/golsm21

http://www.elec4.co.kr/

https://man.cx/ptp4l

 

 

 

반응형