Precision Time
NTP and PTP time services delivered over Fabric connections.
Service model#
Equinix Precision Time delivers NTP or PTP from Equinix time sources to a customer over a Fabric virtual connection. A time service has a type (NTP or PTP), a package, the connections it is delivered on, and the IPv4 addressing of the time endpoint.
Packages#
import com.eqixiac.equinix.fabric.enums.PrecisionTimePackageCode;
import com.eqixiac.equinix.fabric.model.TimeServicePackage;
for (TimeServicePackage p : fabric.precisionTimes().packages()) {
System.out.println(p.getCode() + " " + p.getType());
}
TimeServicePackage ptp = fabric.precisionTimes().packageByCode(PrecisionTimePackageCode.PTP_STANDARD);The package codes are NTP_STANDARD, NTP_ENTERPRISE, PTP_STANDARD and PTP_ENTERPRISE. The package sets the limits of the service, such as the number of clients and the PTP message rates, and the package object returns them.
List and search#
import com.eqixiac.equinix.fabric.model.PrecisionTime;
import com.eqixiac.equinix.fabric.model.implementation.filter.FilterPropertyList;
import com.eqixiac.equinix.fabric.model.implementation.filter.FilterType;
for (PrecisionTime service : fabric.precisionTimes().list()) {
System.out.println(service.getUuid() + " " + service.getName() + " " + service.getType() + " " + service.getState());
}
fabric.precisionTimes().search(
new FilterPropertyList(FilterType.AND).equals("/project/projectId", projectId), null);In 4.0 list() calls POST /fabric/v4/timeServices/search. The specification defines no GET /timeServices, and the live service answered 502 to it on 2026-11-11, while an unfiltered search answered 200.
Create#
A time service is created on an existing connection from the customer port or device to the Precision Time service profile.
import com.eqixiac.equinix.fabric.enums.PrecisionTimeType;
PrecisionTime ntp = fabric.precisionTimes().define()
.withType(PrecisionTimeType.NTP)
.withName("ntp-dc-trading")
.withPackageCode(PrecisionTimePackageCode.NTP_STANDARD)
.withConnections(List.of(connectionUuid))
.create();withIpv4(...) sets the primary and secondary time server addresses, the network mask and the default gateway. withNtpAdvancedConfiguration(...) adds MD5 authentication keys for NTP. withPtpAdvancedConfiguration(...) sets the PTP domain, priorities, transport mode and message intervals. getConnections(uuid) lists the connections of a service.
Fit#
| Requirement | Choice |
|---|---|
| Server clocks within milliseconds, for logs and certificates | NTP |
| Timestamping for trading or media, sub-microsecond targets | PTP, with PTP-aware switches and network cards between the hand-off and the hosts |
| Regulatory traceability to UTC | Either; confirm the traceability statement of the package with Equinix |
PTP accuracy at the host depends on the customer's own network between the Fabric hand-off and the host. The SDK configures the time service and has no function that measures the clock offset.