<?xml version="1.0" encoding="utf-8"?>
<?xml-model href="rfc7991bis.rnc"?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!DOCTYPE rfc [
<!ENTITY nbsp "&#160;">
<!ENTITY zwsp "&#8203;">
<!ENTITY nbhy "&#8209;">
<!ENTITY wj "&#8288;">
]>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="info" docName="draft-many-tiptop-ntp-profile-00" ipr="trust200902" obsoletes="" updates="" submissionType="IETF" xml:lang="en" version="3">
  <front>
    <title>NTP Profile for Deep Space</title>
    <seriesInfo name="Internet-Draft" value="draft-many-tiptop-ntp-profile-00"/>
    <author fullname="Marc Blanchet" initials="MB">
      <organization>Viagenie</organization>
      <address>
        <postal>
          <country>Canada</country>
        </postal>
        <email>marc.blanchet@viagenie.ca</email>
      </address>
    </author>
    <area>Internet</area>
    <workgroup>Internet Engineering Task Force</workgroup>
    <keyword>ntp</keyword>
    <keyword>time synchronization</keyword>
    <keyword>space</keyword>
    <keyword>ip</keyword>
    <keyword>deep space</keyword>
    <keyword>delay</keyword>
    <abstract>
      <t>Deep space communications involve long delays (e.g., Earth to Mars one-way delay is 4-24 minutes) and intermittent communications, because of orbital dynamics. This document defines an NTP profile for deep space. NTP on-wire protocol is indifferent to path delays and transfers time in a single round trip at any distance, but diverges if delays in each direction is different. Some algorithmic constants and defaults such as distance threshold, dispersion bounds, poll intervals and burst modes, need to be tailored to the deep space scenario. The use of secured NTP is also discussed.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="intro">
      <name>Introduction</name>
      <t>Deep space networks based on IP, as described in <xref target="I-D.ietf-tiptop-ip-architecture"/>, contain nodes whose clocks must be synchronized or at least related to Earth time scales, for navigation, science data timestamping, security protocols, and network operations. NTP <xref target="RFC5905"/> is the most widely deployed IP time synchronization protocol, which makes it a natural candidate for deep space time distribution. However, parts of its specification's algorithms and defaults, and mechanisms commonly layered on it, assume terrestrial round-trip times.</t>
      <t>The key characteristics of deep space communications, the connectivity scenarios, and the derived requirements are described in <xref target="I-D.ietf-tiptop-usecase"/>.</t>
      <t>Space missions have been using precise Position, Navigation and Timing(PNT) for various purposes, using specific channels. The use of NTP is not meant to replace PNT, but to provide a time synchronisation service to any computer in spacecrafts, in their payload, as well as assets on celestial body surface, where PNT is not available.</t>
      <t>Missions may elect to compensate the relativistic time effects by some adjustments to the received time sync. However, such mechanism is outside the scope of this document</t>
    </section>
    <section anchor="deployment">
      <name>Deployment Model</name>
      <t>In one time synchronization deployment model in deep space, the reference clocks and stratum 1 servers live on Earth. The NTP clients are the remote deep space assets: spacecrafts, orbiters, relays, landers, rovers, etc.</t>
      <t>In addition, intermediate nodes such as orbiters, relays, gateways may additionally serve time onward to assets behind them, acting as clients toward Earth and servers toward their local network, at one stratum below their Earth source. Such relays advertise the root delay and root dispersion of their path to Earth, which has specific constraints described in <xref target="rootdelay"/>. Given these constraints and deep space long delays and intermittence, intermediate nodes may also declare themselves as root/stratum 1 with proper adjustment.</t>
      <t>Finally, it is expected that surface or orbital networks around celestial bodies may have reference clocks and stratum 1 servers to serve the celestial body surface network. In this case, it is expected that high connectivity and low latency similar to Earth Internet will be typical. No adaptations are identified as needed for this scenario, but this scenario is not discussed in this memo.</t>
      <t>This profile only affects the NTP client, which is one expected to be in deep space. No changes are needed for the server, since it is stateless request processing (Section 8 of <xref target="RFC5905"/>) with no delay-sensitive element.</t>
    </section>
    <section anchor="onwire">
      <name>NTP On-Wire Protocol And Distance</name>
      <t>The NTP client/server exchange (mode 3 request, mode 4 response, Section 8 of <xref target="RFC5905"/>) is a single stateless request/response carrying four timestamps: T1 (client transmit), T2 (server receive), T3 (server transmit), T4 (client receive). Nothing in the on-wire protocol bounds the interval between T1 and T4: the offset and delay equations of Section 8 of <xref target="RFC5905"/> are defined for any round-trip time. One time transfer therefore costs exactly one round trip at any distance. The measurements confirm this from an 8-minute up to a 20-hour RTT, with a single unmodified exchange each time (<xref target="measurements"/>).</t>
      <t>However, there are client-side impacts:</t>
      <ul>
        <li>The client's response timeout must exceed the number of round trips the operation needs times the maximum RTT of the mission (propagation plus any scheduled contact gap, as computed in <xref target="I-D.ietf-tiptop-usecase"/>), plus margin. While the specifications place no limit, common defaults in implementations are a few seconds (see <xref target="measurements"/>), unsuitable for most deep space scenarios.</li>
        <li>The client's poll interval must exceed the maximum RTT. Section 8 of <xref target="RFC5905"/> requires a client to validate a response against the origin timestamp of its most recent request (the "bogus packet" test, an anti-replay measure) and describes a single in-flight exchange per association. A client polling faster than the RTT replaces its expected origin before each response arrives, so every response fails the origin test and is discarded; the protocol then never synchronizes, even though every packet is delivered intact. The specification's poll range accommodates most deep space missions without change: MAXPOLL is 17 (2^17 s, about 36 hours, Section 7.2 of <xref target="RFC5905"/>).</li>
      </ul>
    </section>
    <section anchor="versions">
      <name>Protocol Versions</name>
      <t>The client/server exchange has been wire-compatible, and no version of the protocol changes its delay behavior (<xref target="RFC5905"/>, <xref target="I-D.ietf-ntp-ntpv5"/>).  Therefore, unless specified, this document applies to any NTP version.</t>
    </section>
    <section anchor="speclimits">
      <name>Delay Limits and Defaults</name>
      <t>While the on-wire protocol is delay-indifferent, the mitigation and discipline algorithms specified (Sections 10 through 13 of <xref target="RFC5905"/>) contain constants and defaults sized for terrestrial delays.</t>
      <section anchor="distlimit">
        <name>Distance Threshold and Dispersion Bounds</name>
        <t>The selection algorithm (Section 11.2.1 of <xref target="RFC5905"/>) rejects any source whose root synchronization distance exceeds the distance threshold MAXDIST, whose default is 1.5 seconds (Section 7.2 of <xref target="RFC5905"/>). The root distance includes half the round-trip delay, so with default constants every source beyond a 3-second RTT (roughly the Earth-Moon distance) is structurally unselectable: the algorithm as specified can never synchronize to a deep space source, regardless of packet delivery. The dispersion constant MAXDISP (16 seconds, Section 7.2 of <xref target="RFC5905"/>) also bounds the root distance that a server may advertise; this limit applies to servers synchronized over a deep space path and is described in <xref target="rootdelay"/>. Deep space clients must raise the distance threshold (and any implementation analog, such as per-source delay ceilings) to at least maxRTT/2 plus margin. The measurements (<xref target="measurements"/>) confirm both the failure with defaults and the success once raised.</t>
      </section>
      <section anchor="rootdelay">
        <name>Root Delay and Root Dispersion through Relays</name>
        <t>A server includes in its responses the root delay and root dispersion of its own synchronization path (Section 7.3 of <xref target="RFC5905"/>). A server synchronized to an upstream server sets its root delay to the upstream root delay plus its measured round-trip delay to that server (Section 11.2.3 of <xref target="RFC5905"/>). A relay synchronized to Earth over a deep space path therefore advertises a root delay at least equal to its Earth RTT: 480 seconds for a Mars relay at closest approach, 2640 seconds at conjunction.</t>
        <t>However, the specification has limitations:</t>
        <ul>
          <li>Header validation: a client discards any response for which root delay/2 + root dispersion is equal to or larger than MAXDISP, 16 seconds (the packet() routine, Appendix A.5.1.1 of <xref target="RFC5905"/>). This check is independent of the distance threshold of <xref target="distlimit"/>: raising MAXDIST does not change it. A client of a relay whose Earth RTT exceeds 32 seconds discards every response of that relay.</li>
          <li>NTPv4 field range: root delay and root dispersion use the NTP short format, 16 bits of unsigned seconds and 16 bits of fraction (Section 6 of <xref target="RFC5905"/>). The largest value is 65536 seconds (about 18.2 hours). A relay whose root delay exceeds this value cannot represent it.</li>
          <li>NTPv5 field range: root delay and root dispersion use the time32 type (Sections 5 and 6 of <xref target="I-D.ietf-ntp-ntpv5"/>), with 4 bits of integral seconds and a maximum value of 16 seconds. A relay whose Earth RTT exceeds 16 seconds cannot represent its root delay in NTPv5.</li>
        </ul>
        <t>SNTP clients (Section 14 of <xref target="RFC5905"/>) are not required to apply the header validation and may accept such responses, but the root distance they report is then either unbounded or omitted.</t>
        <t>The following approaches address these limits:</t>
        <ul>
          <li>The relay acts as a new root. The relay obtains time from Earth (by an SNTP exchange or a full client pipeline, per <xref target="onwire"/> and <xref target="speclimits"/>) and serves its local network as a primary server (stratum 1), with the Earth time acting as its reference clock. The root delay and root dispersion it advertises then describe the error of its own clock relative to Earth time, as estimated by the mission, instead of the Earth RTT. With symmetric or corrected path delays (<xref target="asymmetry"/>), this error is much smaller than the RTT. This approach works with unmodified clients, in NTPv4 and NTPv5. The advertised values are the mission's estimate: they need to include the residual asymmetry of the Earth-relay path (<xref target="asymmetry"/>) and the drift of the relay clock since the last Earth exchange. The NTPv5 definition of root delay as twice the maximum error due to delay asymmetry (Section 10 of <xref target="I-D.ietf-ntp-ntpv5"/>) is consistent with this approach.</li>
          <li>The clients behind the relay use a larger header validation bound. This requires the bound to be configurable (<xref target="implreq"/>), and is limited by the NTPv4 field range; it is not possible in NTPv5.</li>
          <li>An NTPv5 extension field could carry root delay and root dispersion with a larger range. No such extension field is currently defined.</li>
        </ul>
        <t>Therefore, relays beyond a 16 second one-way delay from Earth should act as a new root, with advertised root delay and root dispersion derived from the mission's estimate of the relay clock error. The measurements confirm the header validation limit, the effect of a real relay at Mars distance on its clients, and the operation of a relay acting as a new root with unmodified clients (<xref target="measurements"/>).</t>
      </section>
      <section anchor="pollburst">
        <name>Poll Defaults, Burst Modes, and Reachability</name>
        <t>Default poll intervals (commonly 2^6 = 64 seconds) sit below deep space RTTs and trigger the origin-test failure of <xref target="onwire"/>; the poll interval must be configured above the maximum RTT, which the specified poll range permits (Section 7.2 of <xref target="RFC5905"/>). Burst features that send several packets seconds apart at startup (the burst and iburst behaviors of the poll process, Section 13.1 of <xref target="RFC5905"/>) must not be used: all packets of the burst are in flight simultaneously on a long-delay path, at most the last can pass the origin test, and an implementation that concludes unreachability from the unanswered burst gives up long before any response can physically exist. The reachability register (Section 13.1 of <xref target="RFC5905"/>) is an 8-poll shift register and is compatible with deep space operation provided the poll interval exceeds the RTT, so that each poll's response can arrive before the next poll shifts the register.</t>
      </section>
      <section anchor="filterlimit">
        <name>Clock Filter Sample Requirements</name>
        <t>The clock filter algorithm (Section 10 of <xref target="RFC5905"/>) selects among the last several samples, and implementations generally require several accepted samples before the source statistics permit selection and clock update. With the poll interval necessarily above the RTT, a full mitigation pipeline therefore delivers its first correction only after several polls: approximately N x poll + 1 RTT for an N-sample requirement, i.e., 3 to 5 RTTs in practice (measured: about 3 RTTs with a 3-sample implementation, <xref target="measurements"/>). Missions needing a first correction in one round trip should use an SNTP-style client (Section 14 of <xref target="RFC5905"/>), which applies a single exchange directly; the trade-off is forgoing the filter's protection against outliers, likely acceptable on a point-to-point scheduled link whose delay distribution is deterministic.</t>
      </section>
    </section>
    <section anchor="accuracy">
      <name>Accuracy over Symmetric Paths</name>
      <t>The offset equation of Section 8 of <xref target="RFC5905"/> is exact when the forward and reverse delays are equal, whatever their magnitude; the well-known error bound of plus or minus RTT/2 is the bound on asymmetry, not on delay. Deep space delay therefore costs nothing in accuracy by itself. The measurements confirm this at scale: a deliberate 300-second clock error was corrected to within 0.1 to 0.25 seconds by a single exchange at RTTs of 8 minutes, 44 minutes, 2 hours, and 20 hours, with no degradation trend across three orders of magnitude of delay (<xref target="measurements"/>).</t>
      <t>A correction is one RTT stale when applied: at a 20-hour RTT, the residual error is dominated by the client oscillator's drift over that RTT, not by the protocol.</t>
    </section>
    <section anchor="asymmetry">
      <name>Path Delay Asymmetry</name>
      <t>When the forward (client to server) delay dfwd and the reverse delay drev differ, substituting into the offset equation of Section 8 of <xref target="RFC5905"/> shows the computed offset is wrong by exactly (dfwd - drev)/2, while the computed delay still equals dfwd + drev. The client observes only the sum, so the error is invisible to the protocol: no version, extension, or algorithm of NTP can detect it from the four timestamps. The measurements trace the predicted bias precisely, holding the RTT constant while varying the split, with two independent client implementations agreeing on the (wrong) result within 40 milliseconds (<xref target="measurements"/>): a client on an asymmetric path synchronizes confidently to a clock that can be wrong by minutes.</t>
      <t>Delay asymmetry is expected in deep space deployments, specially for intermittence scenarios where relays hold packets in buffer until the next opportunity(see <xref target="I-D.ietf-tiptop-ip-architecture"/>), which may be different on the reverse path. Therefore:</t>
      <ul>
        <li>Time synchronization exchanges should be scheduled so that both directions traverse the link back to back within one contact, avoiding intermittence buffering holds between request and response.</li>
        <li>Where directional delays are predictable (rate differences, known schedules, ephemeris), clients may correct the computed offset by the known (dfwd - drev)/2 before applying it. However, extra care should be taken given the implicit assumptions.</li>
        <li>Time synchronization should not be performed across paths whose asymmetry is unknown and potentially larger than the mission's accuracy requirement.</li>
      </ul>
    </section>
    <section anchor="nts">
      <name>Secured NTP: Network Time Security</name>
      <t>NTS <xref target="RFC8915"/> bootstraps per-request authentication through NTS-KE, a TLS 1.3 handshake over TCP on port 4460 (Section 4 of <xref target="RFC8915"/>), which means 4 to 5 RTTs to complete the TCP connection establishment, TLS 1.3 handshake, the NTS-KE exchange and the first authenticated NTP exchange. TCP does not work well with deep space delays and intermittence. Cold NTS establishment over a deep space delay is therefore not recommended. Missions requiring authenticated time should pre-provision NTS keys and cookie material before launch or over a prior contact, sized (using the cookie-supply maintenance provisions of Section 5.7 of <xref target="RFC8915"/>) to cover the interval between re-keying opportunities; alternatively, symmetric-key authentication of NTP packets (the optional MAC field of Section 7.3 of <xref target="RFC5905"/> with pre-shared keys) provides origin authentication with zero additional round trips and no handshake, at the cost of manual key management.</t>
    </section>
    <section anchor="implreq">
      <name>Implementation Requirements</name>
      <t>An NTP client implementation:</t>
      <ul>
        <li>must expose every timing-related constant as runtime configuration: response timeouts, poll intervals and their bounds, response-acceptance (origin validity) windows, sample-count requirements, distance and delay thresholds, the root distance bound of the header validation (MAXDISP, <xref target="rootdelay"/>), and any handshake or key-establishment timers. A single compiled-in constant below the mission RTT anywhere in the receive path is sufficient to make synchronization impossible.</li>
        <li>must scale response-acceptance windows with the configured poll interval rather than fixing them, so that configuring poll above the RTT is sufficient.</li>
        <li>should support a single-exchange mode (SNTP-style, Section 14 of <xref target="RFC5905"/>) for one-RTT corrections, an asymmetry correction input per <xref target="asymmetry"/>, and frequency (rate) discipline per <xref target="accuracy"/>.</li>
        <li>when used as a relay serving time onward, should support operating as a primary server using time obtained from Earth as its reference clock, with configurable advertised root delay and root dispersion (<xref target="rootdelay"/>).</li>
      </ul>
    </section>
    <section anchor="applicability">
      <name>Applicability to the Deep Space Connectivity Scenarios</name>
      <t>This section maps the profile to the connectivity scenarios of <xref target="I-D.ietf-tiptop-usecase"/>: Earth to cruising spacecraft (CS), Earth-Moon with full (LF) or intermittent (LI) connectivity, Earth-Mars with full (MF) or intermittent (MI) connectivity, and solar conjunction (SC).</t>
      <table anchor="appltable">
        <name>Synchronization applicability per scenario</name>
        <thead>
          <tr><th>Scenario</th><th>Single-exchange (SNTP)</th><th>Full mitigation pipeline</th><th>NTS</th></tr>
        </thead>
        <tbody>
          <tr><td>LF (Moon, full)</td><td>yes, timeouts only</td><td>yes; RTT just exceeds default MAXDIST, raise threshold</td><td>yes, KE seconds</td></tr>
          <tr><td>LI (Moon, intermittent)</td><td>yes, timeouts cover gaps</td><td>yes; poll above RTT plus gap</td><td>yes if keys outlive gaps</td></tr>
          <tr><td>CS (cruising)</td><td>yes, timeouts track ephemeris</td><td>thresholds and poll grow with ephemeris; verify ceilings pre-launch</td><td>pre-provisioned keys once RTT exceeds seconds</td></tr>
          <tr><td>MF (Mars, full)</td><td>yes, 1 RTT per sync</td><td>3-5 RTT per first correction, all thresholds raised</td><td>pre-provisioned keys only</td></tr>
          <tr><td>MI (Mars, intermittent)</td><td>yes if exchange fits one contact</td><td>poll and sample budget must fit contact plan</td><td>pre-provisioned keys only</td></tr>
          <tr><td>SC (conjunction)</td><td>suspend; free-run on oscillator</td><td>suspend; rate discipline carries through</td><td>keys must outlive blackout</td></tr>
        </tbody>
      </table>
      <t>Scenario notes:</t>
      <ul>
        <li>LF and LI: at a 2.6-second Moon RTT, terrestrial defaults mostly survive, with two exceptions already visible: the default distance threshold of <xref target="distlimit"/> sits at the Moon RTT boundary, and any sub-RTT hardcoded response window (<xref target="implreq"/>) already fails on an intermittent lunar path whose effective RTT includes a contact gap. The Moon is the last place where defaults mostly work.</li>
        <li>CS: the RTT grows continuously; client timeouts, poll intervals and thresholds should be driven from the ephemeris. Each fixed ceiling in the client is crossed at a predictable mission date; per <xref target="implreq"/>, missions must verify before launch that none lies inside the mission profile.</li>
        <li>MF and MI: the single-exchange client with an ephemeris-driven timeout is the base: one RTT per synchronization, accuracy limited only by path asymmetry (<xref target="asymmetry"/>) and oscillator drift over the RTT. In MI, the request and its response must be scheduled within the same contact, or the buffering becomes a large asymmetry error. Orbiters or surface gateways serving time to local assets act as a new root (<xref target="rootdelay"/>).</li>
        <li>SC: synchronization traffic ceases for weeks; clocks free-run. Requests should not be sent during a blackout, and if they are, queued time-sync requests should be discarded rather than answered after a blackout, since a response to a weeks-old request carries a weeks-scale asymmetry error. Requests should be freshly issued after contact resumes.</li>
      </ul>
    </section>
    <section anchor="timezone">
        <name>Time Zones and References</name>
        <t>NTP uses UTC as its time reference, which sets the clocks of all spacecrafts based on the Earth UTC. Missions have been using various time references<xref target="nasatime"/> and a Lunar Timezone<xref target="lunartimezone"/> is being defined. Any non UTC reference is outside the scope of this document.</t>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>Unauthenticated NTP over deep space inherits the usual NTP risks as discussed in <xref target="RFC5905"/>. This profile changes the security posture in the following ways.</t>
      <t>Widening response-acceptance windows to one RTT or more (the origin validity implied by <xref target="onwire"/>) widens the interval during which a captured response can be substituted or delayed toward the client by the same amount. The origin timestamp still binds a response to a specific request (Section 8 of <xref target="RFC5905"/>), so the exposure is response substitution and delay, not arbitrary replay.</t>
      <t>Successful delay attacks are stronger: per <xref target="asymmetry"/>, an attacker (or an innocent relay schedule) that asymmetrically delays one direction by D shifts the client's clock by D/2 with no protocol-visible indication, and the acceptable delay at Mars is minutes to hours, giving an on-path attacker minutes-to-hours of undetectable clock displacement. No NTP version detects this; only external knowledge (ephemeris-based delay prediction, plausibility bounds on the clock correction, redundant paths) bounds it. Missions may apply mission-derived sanity bounds to any computed correction before applying it.</t>
      <t>A relay acting as a new root (<xref target="rootdelay"/>) advertises a root delay and root dispersion that are an estimate by the mission, not a measurement. Clients use these values to select sources and to bound their error; values that understate the relay clock error, by mistake or by compromise of the relay, lead clients to trust a clock with a larger error than advertised.</t>
      <t>The NTS cold key establishment is impractical in most scenarios if done during the mission. Therefore, NTS-enabled missions will fly long-lived pre-provisioned key and cookie material, increasing the value of that material. Symmetric-key MAC authentication avoids the handshake entirely.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
    <section anchor="ack">
      <name>Acknowledgements</name>
      <t>The following people provided useful comments to improve this document (in no specific order): Hal Murray, Gary Miller, Miroslav Lichvar, Ruben Nijveld.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Informative References</name>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.5905.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8915.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ntp-ntpv5.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-tiptop-usecase.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-tiptop-ip-architecture.xml"/>
        <reference anchor="NTPSEC" target="https://gitlab.com/NTPsec/ntpsec">
          <front>
            <title>NTPsec: a secure, hardened NTP implementation (version 1.2.3)</title>
            <author>
              <organization>NTPsec Project</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="CHRONY" target="https://gitlab.com/chrony/chrony">
          <front>
            <title>chrony: a versatile implementation of NTP (version 4.8)</title>
            <author>
              <organization>chrony project</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="NTPORG" target="https://www.ntp.org">
          <front>
            <title>The NTP Reference Implementation (version 4.2.8p18)</title>
            <author>
              <organization>Network Time Foundation</organization>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="NTPDRS" target="https://github.com/pendulum-project/ntpd-rs">
          <front>
            <title>ntpd-rs: a full-featured implementation of NTP with NTS support (version 1.9.0)</title>
            <author>
              <organization>Project Pendulum</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="nasatime" target="https://naif.jpl.nasa.gov/pub/naif/toolkit_docs/C/req/time.html">
          <front>
            <title>SPICE Time Subsystem</title>
            <author>
              <organization>NASA Jet Propulsion Laboratory, Navigation and Ancillary Information Facility (NAIF)</organization>
            </author>
            <date year="2021" month="December"/>
          </front>
        </reference>
        <reference anchor="lunartimezone" target="https://www.nasa.gov/general/nasa-to-develop-lunar-time-standard-for-exploration-initiatives/">
          <front>
            <title>NASA to Develop Lunar Time Standard for Exploration Initiatives</title>
            <author>
              <organization>NASA</organization>
            </author>
            <date year="2024" month="September"/>
          </front>
        </reference>
        <reference anchor="deepspace_simulations" target="https://github.com/deepspaceip/deepspace-ip-simulations">
          <front>
            <title>Deepspace Simulations of Transport and Management Protocols</title>
            <author>
              <organization>Marc Blanchet</organization>
            </author>
            <date year="2026" month="August"/>
          </front>
        </reference>
      </references>
    </references>
    <section anchor="measurements">
      <name>Measurement Campaign Summary</name>
      <t>This appendix summarizes the emulation campaign backing the analysis of the document. Full inputs, captured packets, per-run outputs and analysis are published at <xref target="deepspace_simulations"/>.</t>
      <t>Two virtual machines (Ubuntu 26.04) emulate the Earth side (server, free-running reference clock) and the deep-space side (client). A network emulator (Linux netem) inserts a configurable one-way delay independently in each direction: symmetric one-way delays of 240, 1320, 3600 and 36000 seconds (RTTs of 8 minutes, 44 minutes, 2 hours, and 20 hours), and asymmetric splits of 270/210, 420/60 and 60/420 seconds at a constant 480-second RTT. All operating system time synchronization was disabled and masked on both machines; before every test the client clock was deliberately offset by about +300 seconds; packet captures on both machines and before/after clock probes document every run. It should be noted that using Virtual machines may have impact on the precision of the measurements, but the primary purpose was to test the specifications and implementations over much larger timeframes than the actual precision. Therefore, the actual real precision measured may not be as accurate as if done with real hardware.</t>
      <t>Four independent implementations were used: ntpsec 1.2.3 (the ntpdig single-exchange client) <xref target="NTPSEC"/>, chrony 4.8 (full mitigation pipeline in one-shot mode, server mode, and NTS client mode) <xref target="CHRONY"/>, the ntp.org reference implementation 4.2.8p18 (sntp single-exchange client and ntpd server in orphan mode) <xref target="NTPORG"/>, and ntpd-rs 1.9.0 (daemon client and server, NTPv4 and native draft NTPv5) <xref target="NTPDRS"/>.</t>
      <t>In these tests, the Earth server used its local clock as reference and advertised a root delay and root dispersion of zero. A second series tested root delay through relays (<xref target="rootdelay"/>), with the same implementation versions in containers sharing one clock, clients measuring without adjusting the clock:</t>
      <ul>
        <li>A test server advertising root delays from 0 to 65535 seconds, with no network delay. The full daemons (chrony, ntp.org ntpd) accepted up to 31 seconds once their distance threshold was raised and discarded every response at 33 seconds and above with any configuration (header validation). The SNTP clients (ntpdig, sntp) accepted all values; ntpdig did not include the root delay in its reported error bound. ntpd-rs accepted all values.</li>
        <li>A chain Earth server, relay (240 second one-way delay to Earth, 480 second RTT), surface clients (no added delay), with the relay as a regular NTP client of Earth and server to the surface. The relay synchronized after three polls (about 25 minutes) and advertised a root delay of 480.08 seconds and a root dispersion below 1 second. The chrony and ntp.org ntpd clients discarded every response of the relay with default and raised distance thresholds (header validation); the SNTP clients and ntpd-rs accepted the relay, with reported error bounds ranging from 0.4 milliseconds (root delay ignored) to 161 seconds.</li>
        <li>The same chain with the relay acting as a new root: SNTP exchanges with Earth every 30 seconds fed as a reference clock, advertised root delay 0.5 seconds. The relay served as stratum 1 after one RTT and a few reference clock updates (11 minutes), with measured Earth offsets within 20 milliseconds, and all the clients, with default configurations, accepted it.</li>
      </ul>
    </section>
  </back>
</rfc>
