### ptp_nj ```{eval-rst} .. plantuml:: @startuml title NTP -> PTP Grandmaster -> Slaves (vertical) top to bottom direction actor "External NTP\nServers" as NTP node "Grandmaster (Ubuntu)\nConnectX-6 NIC" as GM node "L2 Switch / Fabric\n(PTP Transparent/Boundary optional)" as SW node "Slave #1 (Ubuntu)\nConnectX-6 NIC" as S1 node "Slave #N (Ubuntu)\nConnectX-6 NIC" as SN NTP -down-> GM : NTP (UDP/123)\nchrony disciplines CLOCK_REALTIME GM -down-> SW : PTP Announce/Sync\nptp4l (master, HW TS) SW -down-> S1 : PTP packets SW -down-> SN : PTP packets GM -[hidden]down-> S1 note right of GM GM services: - chrony (NTP -> system clock) - ptp4l: master (-S, HW TS) - phc2sys: CLOCK_REALTIME -> /dev/ptp0 end note note right of S1 Slave services: - ptp4l (slave, HW TS) - phc2sys: /dev/ptp0 -> CLOCK_REALTIME - chrony disabled or no servers end note note right of SW If switch supports PTP Transparent/Boundary Clock, stability improves. end note @enduml