개요

gPTP를 설명하기 전에 PTP에 대해서 간략히 설명한다.

 

PTP는 IEEE 1588이라는 표준으로 정의되어 있으며, 여러 물리적인 디바이스 간의 시간을 동기화 시키기 위해 연구된 프로토콜이다.

정확히는 시간보다는 디바이스 간의 내부 클럭을 동기화 시키는 것에 더 초점을 둔다.

 

PTP는 중소규모 정도의 네트워크에서 시간 동기화를 지원하며, 최대 밀리초(ms)까지의 동기화를 이루어낸다.

반면에, gPTP(=802.1AS)는 보다 큰 규모의 네트워크를 지원하며, 구성에 따라 최대 나노초(ns)까지의 동기화를 이루어낸다.

두 프로토콜 모두 이더넷 기반이다.

 

또한, PTP는 이더넷 프레임 혹은 UDP 패킷을 기반으로 동작하며 gPTP는 이더넷 프레임을 통해서만 지원된다.

즉, PTP는 Layer 2 or 4 기반, gPTP는 Layer 2 기반

 

이러한 gPTP는 802.1AS라는 표준으로 정의되어 있으며, TSN 표준 스펙에 가장 기반이 되는 프로토콜로 동작한다.

TSN은 네트워크 상에 존재하는 모든 디바이스의 시간동기화를 반드시 보장해주어야 함으로

 

gPTP Time Syncronization

gPTP에서 시간 동기화는 가장 퀄리티가 높은 시간 클럭을 가진 Master의 시간으로 전체 네트워크 노드들이 동기화된다.

여기서 가장 퀄리티가 높은 클럭을 가진 Master를 Grand Master라고 칭한다.

이론적인 용어로 Grand Master가 가진 이러한 퀄리티가 높은 시간 클럭을 Crystal이라고 칭한다.

 

그리고 시간 동기화는 크게 두가지 절차를 통해 이루어진다.

  1. Grand Master를 찾기 위한 절차
  2. Grand Master의 Crystal을 통해 모든 노드들의 클럭을 동기화하는 절차

 

이러한 두 절차를 지원하기 위해 gPTP는 여러 Message Type을 제공한다.

메시지 타입에 대한 설명은 다음 gPTP Message Types 섹션에서 설명한다.

 

gPTP Message Types

gPTP는 앞서 소개한 두 가지 절차는 위해 위 8가지 메시지 타입들을 통해서 이루어진다.

Signaling, Managements라는 두 타입이 더 존재하지만 본 페이지와는 크게 연관이 없어 추가하지 않았다.

 

첫번째 절차를 지원하기 위해 사용하는 메시지 타입은 다음과 같다.

  • Announce (0x0B)

 

두번째 절차를 지원하기 위해 사용하는 메시지 타입들은 다음과 같다. 

  • Sync (0x01)
  • Delay Request (0x02)
  • Path Delay Request (0x03)
  • Path Delay Response (0x04)
  • FollowUp (0x08)
  • Delay Response (0x09)
  • Path Delay FollowUp (0x0A)

 

본 페이지에서 gPTP의 시간 동기화를 위한 메커니즘을 모두 설명하지는 않으며, 간단하게만 설명한다.

 

  • 첫번째 절차
    • Announce 메시지를 주기적으로 브로드캐스트
    • Announce 메시지에 있는 Prioirty 1, Priority 2, ClockQuality 필드를 활용해 Grand Master 선정
    • 이러한 과정은 BMCA(Best Master Clock Algorithm)라는 알고리즘을 통해 이루어진다.

 

  • 두번째 절차
    • Sync, FollowUp, Delay Request, Delay Response 메시지를 통해 Grand Master의 시간으로 모든 노드가 동기화
    • Path Delay Request, Path Delay Response, Path Response FollowUp 메시지를 통해 인접 노드와 연결된 물리적인 Path(=Link)의 퀄리티를 주기적으로 업데이트(Mean Link Delay, Neighbor Rate Ratio를 계산하여서)
    • 이러한 메시지를 주기적으로 주고받으며 자신의 현재 시간을 조정

 

Linux에서 gPTP 사용 방법

마지막으로 Linux 시스템에서는 linuxptp라는 유틸리티를 통해 gPTP를 사용할 수 있다.

제대로 gPTP를 사용하려면 이를 지원하는 하드웨어(TSN NIC 등)를 사용해야 한다.

 

또한, linuxptp를 사용하더라도 Default 설정을 사용하면 안되며 linuxptp Git 레포지토리에서 제공하는 gPTP.cfg라는 설정을 사용해야 한다.

 

이에 대한 자세한 내용은 아래 링크를 참조하면 된다.

https://tsn.readthedocs.io/timesync.html

 

References

https://www.youtube.com/watch?v=F93YszqG8AA

https://www.timebeat.app/post/precision-time-protocol-ptp-a-deep-dive-into-gptp-and-its-applications

https://namu.wiki/w/PTP

https://www.ieee802.org/1/files/public/docs2007/as-garner-protocol-state-machines-frame-formats-0307.pdf

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기