Skip to content

Commit ece2758

Browse files
committed
Add discussion of challenges for an NTP standard
Signed-off-by: Konrad Gube <konrad.gube@cloudandheat.com>
1 parent a6cf7d9 commit ece2758

1 file changed

Lines changed: 21 additions & 17 deletions

File tree

Standards/scs-XXXX-v1-ntp-decisions.md

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,9 @@ There is currently no standardized field to supply NTP servers in either Opensta
6565

6666
Openstacks own metadata format also supports vendor data, which is an unstructured JSON document that can be used to pass CSP-specific information to servers.
6767
This document could be used to communicate local NTP servers, though there is currently no established format for this.
68-
Cloud-init does support embedding its own _cloud-config_ format into openstack vendor data, which does in fact have support for configuring NTP.
69-
However, this feature is rather intrusive, as cloud-init will try to install NTP client packages if it finds that none are present in the system.
68+
69+
Cloud-init does support embedding its own _cloud-config_ format into openstack vendor data, which does have support for configuring NTP.
70+
This feature is rather intrusive, however, as cloud-init will attempt to install NTP client packages if it finds that none are present in the system.
7071

7172
Some IaaS providers, such as AWS and GCP, will provide their own NTP servers to VMs under a fixed link-local IP address, which are often preconfigured in images targeting those platforms.
7273

@@ -84,7 +85,7 @@ It is unclear if PTP would have offer any better precision than NTP in tunneled
8485

8586
Unlike PTP as a protocol, it's driver interface in Linux seems to be a popular choice for time synchronization in the form of paravirtualization.
8687
The _ptp\_kvm_ kernel module will communicate directly with the KVM hypervisor to provide a PTP device file that follows the system time of the host.
87-
Hyper-V also offers time synchronization through a PTP device file managed by its _Linux Integration Services_.
88+
Hyper-V also offers time synchronization through a PTP device file, managed by its _Linux Integration Services_.
8889

8990
Paravirtualized time synchronization has the benefit of generally offering the highest precision.
9091
Like RTC clock emulation, it also works independently of the guest system's network connectivity.
@@ -100,23 +101,26 @@ This perspective clearly favours NTP as a standardized method of time synchroniz
100101

101102
However it is still useful for a CSP to offer less portable, but more precise methods of time synchronization, especially if they are integrated into the default cloud images offered by the CSP.
102103

103-
So, we should standardize a portable NTP setup, that users can develop images against which will work well in any SCS cloud.
104-
We should not try to prevent CSPs from supporting paravirtualized, or other methods of time synchronization which may offer significant benefits over NTP.
105-
106-
<!--
107-
* challenges for NTP:
108-
* local NTP server must be reachable by guests
109-
* advertising NTP servers to customers and instances
110-
* should we work on upstream support for providing NTP through the metadata IP
111-
* should we work on OVN DHCPv6 support for NTP?
112-
* should we standardize a vendor data key for NTP?
113-
* should local NTP server IPs be part of a CSP self description?
114-
-->
115-
<!-- https://docs.openstack.org/nova/latest/admin/configuration/hypervisors.html -->
104+
So, we should standardize a portable NTP setup that users can assume when developing images to work well in any SCS cloud.
105+
We should not try to prevent CSPs from supporting paravirtualized or other methods of time synchronization that may offer significant benefits over NTP.
116106

117107
## Consequences
118108

119-
What becomes easier or more difficult to do because of this change?
109+
A standardized NTP setup will allow SCS users and third party image providers to develop images that support local time synchronization accross SCS clouds.
110+
111+
As discussed in the NTP section above, there are a number of limitations in OpenStack and related projects that a standardized NTP setup has to work with:
112+
113+
* OpenStack currently has no support for providing NTP servers to VMs under a fixed link-local address, like AWS and GCP are doing.
114+
Such a feature could probably be implemented by re-using the metadata service IP (`169.254.169.254`) and the mechanisms to inject it into subnets.
115+
If this feature becomes available in the future, it will be an attractive target for standardization, but until then it seems more sensible to focus on servers available through provider networks.
116+
* Making NTP servers accessible via provider networks will limit availability to those VMs that are connected to the provider network, either directly or via a virtual router
117+
* Without mandating fixed IP addresses or domain names for local NTP servers, CSPs will need a method of informing VMs of available NTP servers.
118+
DHCP is the currently best supported mechanism for this, but is not guaranteed to be available to VMs, as users may disable it for their subnets.
119+
Also, OVN's DHCPv6 implementation currently does not support the required option, but that seems to be a relatively straightforward feature to add.
120+
* The alternative to DHCP is of course the metadata service, though there is currently no standard field for providing NTP servers.
121+
Cloud-init's proprietary format may not be good option because of the automatic package installation in guests, but any other option will require support to be added to whatever init tool is used.
122+
A new NTP server key in OpenStack's standard metadata will require upstream changes, but is more likely to get supported by cloud-init or other init tools (though most seem to focus exclusively on the EC2 format).
123+
A custom key in the vendor data could just be defined in the standard, but would be less likely to get support by any third party tools, and thus only be useful with custom scripts or init-tool plugins.
120124

121125
## Related Documents
122126

0 commit comments

Comments
 (0)