PTP와 시간을 동기화하려고 합니다. PTP를 사용하여 Trimble 장치를 구성했습니다. 그런데 다음과 같은 구성으로 LinuxPTP를 사용하면 항상 로컬 시계가 가장 좋은 마스터 시계로 선택됩니다.
ptp4l[892.103]: selected local clock 00032d.fffe.55bd3b as best master
왜 Trimble 장치를 마스터 시계로 선택하지 않는지 궁금합니다.
장치는 SFP/광섬유 케이블을 통해 연결됩니다.
- PTP 구성 파일 -
/etc/linuxptp/ptpv2.conf
[global] verbose 1 domainNumber 24 clockClass 6 priority1 128 priority2 128 [enp11s0]
- 다음과 같이 실행
sudo
하고 이 출력을 콘솔에 표시합니다.$ sudo ptp4l -f /etc/linuxptp/ptpv2.conf ptp4l[886.038]: selected /dev/ptp7 as PTP clock ptp4l[886.039]: port 1 (enp11s0): INITIALIZING to LISTENING on INIT_COMPLETE ptp4l[886.039]: port 0 (/var/run/ptp4l): INITIALIZING to LISTENING on INIT_COMPLETE ptp4l[886.039]: port 0 (/var/run/ptp4lro): INITIALIZING to LISTENING on INIT_COMPLETE ptp4l[892.103]: port 1 (enp11s0): LISTENING to MASTER on ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES ptp4l[892.103]: selected local clock 00032d.fffe.55bd3b as best master ptp4l[892.103]: port 1 (enp11s0): assuming the grand master role
- 또한 이를 디버깅하는 데 도움이 되는지 확인하기 위해 Wireshark 공지 메시지를 캡처했습니다.
Frame 9466: 78 bytes on wire (624 bits), 78 bytes captured (624 bits) on interface enp11s0, id 0 Ethernet II, Src: Trimble_70:07:6a (00:17:47:70:07:6a), Dst: IEEEI&MS_00:00:00 (01:1b:19:00:00:00) Precision Time Protocol (IEEE1588) 0000 .... = majorSdoId: Unknown (0x0) .... 1011 = messageType: Announce Message (0xb) 0000 .... = minorVersionPTP: 0 .... 0010 = versionPTP: 2 messageLength: 64 domainNumber: 24 minorSdoId: 0 flags: 0x003c 0... .... .... .... = PTP_SECURITY: False .0.. .... .... .... = PTP profile Specific 2: False ..0. .... .... .... = PTP profile Specific 1: False .... .0.. .... .... = PTP_UNICAST: False .... ..0. .... .... = PTP_TWO_STEP: False .... ...0 .... .... = PTP_ALTERNATE_MASTER: False .... .... .0.. .... = SYNCHRONIZATION_UNCERTAIN: False .... .... ..1. .... = FREQUENCY_TRACEABLE: True .... .... ...1 .... = TIME_TRACEABLE: True .... .... .... 1... = PTP_TIMESCALE: True .... .... .... .1.. = PTP_UTC_REASONABLE: True .... .... .... ..0. = PTP_LI_59: False .... .... .... ...0 = PTP_LI_61: False correctionField: 0.000000 nanoseconds correction: Ns: 0 nanoseconds correctionSubNs: 0 nanoseconds messageTypeSpecific: 0 ClockIdentity: 0x001747fffe70076a MAC Vendor: Trimble SourcePortID: 1 sequenceId: 28828 controlField: Other Message (5) logMessagePeriod: -3 originTimestamp (seconds): 0 originTimestamp (nanoseconds): 0 originCurrentUTCOffset: 37 priority1: 128 grandmasterClockClass: 6 grandmasterClockAccuracy: The time is accurate to within 100 ns (0x21) grandmasterClockVariance: 20061 priority2: 128 grandmasterClockIdentity: 0x001747fffe70076a localStepsRemoved: 0 TimeSource: GPS (0x20)
- 동기화 명령
phc2sys -w -m -s enp11s0 -c CLOCK_REALTIME
인터넷에서 다른 구성을 확인했을 때 해당 로그에는 올바른 시계 선택이 표시되지만 내 경우에는 항상 최고의 마스터 시계를 로컬 시계로 선택하고 마스터/경계 시계의 시간이 동기화되지 않습니다(지금은 저는 GPS 기능이 있는 Trimble 1570001820 장치를 사용하고 있습니다.
기타 참고사항:
- NTP가 비활성화되었습니다
- 하드웨어는 PTP를 처리할 수 있으며 최신 드라이버가 설치되어 있습니다.
답변1
최고의 마스터 클럭 알고리즘(BMCA)은 다음과 같습니다.
- 우선순위 1
- 시계 유형
- 시계 정확도
- 클럭 오프셋 차이
- 우선순위 2
- 시계 로고
- 삭제된 단계
귀하의 경우 두 클럭 모두 동일한 우선순위 1(128)과 동일한 클럭 클래스(6)를 갖습니다. 귀하가 제공한 데이터에서 로컬 시계의 정밀도와 변화를 볼 수 없지만, 역시 동일(또는 그 이상)해야 한다고 가정합니다(0x21 및 20061). 우선순위 2는 동일합니다(128).
지금까지 귀하의 질문에서 볼 수 있는 모든 값은 동일합니다. 즉, 두 시계 모두 "동일하게 우수한" 것으로 간주되며 둘 다 "최고의" 마스터 시계가 아니라는 의미입니다.
따라서 클록 ID(클럭 인터페이스 MAC 주소의 EUI-48로 구성된 EUI-64)가 순위 결정자로 사용됩니다. Trimble의 시계 ID는 001747.fffe.70076a이고, 로컬 시계의 시계 ID는 00032d.fffe.55bd3b로, 001747.fffe.70076a보다 작습니다.
따라서 귀하의 지역 시계가 BMCA를 "승리"합니다.
일반적인 권장 사항은 지정된 그랜드마스터에게 최소 우선순위 1(예: 0)을 부여하는 것입니다. 그랜드마스터 시계가 여러 개인 경우 모두 1이라는 동일한 우선순위를 가져야 합니다. 따라서 누가 그랜드마스터가 될지는 전적으로 시계의 품질에 따라 결정됩니다. 또한 일반적으로 서로 다른 우선순위 2를 부여하여 모든 클럭의 품질이 동일한 경우 MAC가 주소를 다소 "무작위로" 결정하도록 하는 대신 마스터 클럭이 되는 것을 제어할 수 있도록 하는 것이 좋습니다.
클럭 동기화 체인이 있는 경우 일반적으로 체인의 각 클럭에 약간 더 큰 우선순위인 1을 부여하는 것이 좋습니다.줄이다우선 순위) 이전 시계보다 높습니다.
저는 미디어 인프라 환경에서 일하고 있으며 동기화 체인은 일반적으로 다음과 같습니다.
- 2개의 중복 클록 생성기, 우선순위 1 = 0.
- 각 클록 생성기는 적어도 하나의 "PTP 피더" 스위치에 연결됩니다.
- 2개의 중복 "PTP 피더" 스위치, 우선순위 1 = 10.
- 2개의 PTP 피더는 교차 연결되며, 1개 이상의 중복 링크를 사용하는 것이 좋습니다.
- 스위치 공급업체마다 PTP를 가시 또는 잎에 주입해야 하는지에 대한 권장 사항이 다릅니다. 스위치 공급업체에 따라 각 PTP 피더는 모든 스파인 또는 모든 리프에 연결됩니다. Spines에 연결된 경우 우선 순위는 Spine의 경우 20, Leaves의 경우 30이고, Leaves에 연결된 경우 그 반대입니다.
- 리프에 집계 스위치가 있는 경우 이러한 스위치의 우선 순위는 1 = 40입니다.
- 등…
마지막으로 마스터 클럭 기능을 켜는 것이 좋은 습관입니다.떠나다처음부터 마스터하고 싶지 않은 모든 장치에서 완벽하게 작동합니다. 따라서 마스터 클럭에 종속되어야 하는 모든 장치는 "슬레이브 전용" 모드로 구성되어야 합니다.