TripleO PTP (Precision Time Protocol) Support¶
This spec introduces support for a time synchronization method called PTP  which provides better time accuracy than NTP in general. With hardware timestamping support on the host, PTP can achieve clock accuracy in the sub-microsecond range, making it suitable for measurement and control systems.
Currently tripleo deploys NTP services by default which provide millisecond level time accuracy, but this is not enough for some cases:
Fault/Error events will include timestamps placed on the associated event messages, retrieved by detectors with the purpose of accurately identifying the time that the event occurred. Given that the target Fault Management cycle timelines are in tens of milliseconds on most critical faults, events ordering may reverse against actual time if precison and accuracy of clock synchronization are in the same level of accuracy.
NFV C-RAN (Cloud Radio Access Network) is looking for better time sychronization and distribution in micro-second level accuracy as alternative for NTP, PTP has been evaluated as one of the technologies.
This spec is not intended to cover all the possible ways of PTP usage, rather to provide a basic deployment path for PTP in tripleo with default configuration set to support PTP Ordinary Clock (slave mode); the master mode ptp clock configuration is not in the scope of this spec, but shall be deployed by user to provide the time source for the PTP Ordinary Clock. The full support of PTP capability can be enhanced further based on this spec.
User shall be aware of the fact that NTP and PTP can not be configured together on the same node without a coordinator program like timemaster which is also provided by linuxptp package. How to configure and use timemaster is not in the scope of this spec.
Provide the capability to configure PTP as time synchronization method:
Add PTP configuration file path in overcloud resource registry.
Add puppet-tripleo profile for PTP services.
Add tripleo-heat-templates composable service for PTP.
Retain the current default behavior to deploy NTP as time synchronization source:
The NTP services remain unchanged as the default time synchronization method.
The NTP services must be disabled on nodes where PTP are deployed.
The alternative is to continue to use NTP.
Security issues originated from PTP will need to be considered.
Other End User Impact¶
Users will get more accurate time from PTP.
No impact with default deployment mode which uses NTP as time source.
Other Deployer Impact¶
The operator who wants to use PTP should identify and provide the PTP capable network interface name and make sure NTP is not deployed on the nodes where PTP will be deployed. The default PTP network interface name is set to ‘nic1’ where user should change it according to real interface name. By default, PTP will not be deployed unless explicitly configured.
- Primary assignee:
Puppet-tripleo profile for PTP services
Tripleo-heat-templates composable service for PTP deployment
Puppet module for PTP services: ptp 
The linuxptp RPM must be installed, and PTP capable NIC must be identified.
Refer to linuxptp project page  for the list of drivers that support the PHC (Physical Hardware Clock) subsystem.
The deployment of PTP should be testable in CI.
The deployment documation will need to be updated to cover the configuration of PTP.