rfc9769.original | rfc9769.txt | |||
---|---|---|---|---|
Internet Engineering Task Force M. Lichvar | Internet Engineering Task Force (IETF) M. Lichvar | |||
Internet-Draft Red Hat | Request for Comments: 9769 Red Hat | |||
Updates: 5905 (if approved) A. Malhotra | Updates: 5905 A. Malhotra | |||
Intended status: Standards Track Boston University | Category: Standards Track Boston University | |||
Expires: 10 May 2025 6 November 2024 | ISSN: 2070-1721 April 2025 | |||
NTP Interleaved Modes | NTP Interleaved Modes | |||
draft-ietf-ntp-interleaved-modes-08 | ||||
Abstract | Abstract | |||
This document specifies interleaved modes for the Network Time | This document specifies interleaved modes for the Network Time | |||
Protocol (NTP), which improve the accuracy of time synchronization by | Protocol (NTP). These new modes improve the accuracy of time | |||
enabling use of more accurate transmit timestamps that are available | synchronization by enabling the use of more accurate transmit | |||
only after the transmission of NTP messages. These enhancements are | timestamps that are available only after the transmission of NTP | |||
intended to improve timekeeping in environments where high accuracy | messages. These enhancements are intended to improve timekeeping in | |||
is critical. This document updates RFC 5905 by defining these new | environments where high accuracy is critical. This document updates | |||
operational modes. | RFC 5905 by defining these new operational modes. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 10 May 2025. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9769. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2024 IETF Trust and the persons identified as the | Copyright (c) 2025 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
in the Revised BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 4 | 1.1. Requirements Language | |||
2. Interleaved Client/Server Mode . . . . . . . . . . . . . . . 4 | 2. Interleaved Client/Server Mode | |||
3. Interleaved Symmetric Mode . . . . . . . . . . . . . . . . . 9 | 3. Interleaved Symmetric Mode | |||
4. Interleaved Broadcast Mode . . . . . . . . . . . . . . . . . 11 | 4. Interleaved Broadcast Mode | |||
5. Impact of Implementation Errors . . . . . . . . . . . . . . . 12 | 5. Impact of Implementation Errors | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | 6. Security Considerations | |||
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | 7. IANA Considerations | |||
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 14 | 8. References | |||
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 | 8.1. Normative References | |||
9.1. Normative References . . . . . . . . . . . . . . . . . . 14 | 8.2. Informative References | |||
9.2. Informative References . . . . . . . . . . . . . . . . . 14 | Acknowledgements | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 15 | Authors' Addresses | |||
1. Introduction | 1. Introduction | |||
RFC 5905 [RFC5905] describes the operations of NTPv4 in a client/ | RFC 5905 [RFC5905] describes the operations of NTPv4 in a client/ | |||
server, symmetric, and broadcast mode. The transmit and receive | server mode, symmetric mode, and broadcast mode. The transmit and | |||
timestamps are two of the four timestamps included in every NTPv4 | receive timestamps are two of the four timestamps included in every | |||
packet used for time synchronization. | NTPv4 packet used for time synchronization. | |||
For a highly accurate and stable synchronization, the transmit and | For a highly accurate and stable synchronization, the transmit and | |||
receive timestamp should be captured close to the beginning of the | receive timestamps should be captured close to the beginning of the | |||
actual transmission and the end of the reception respectively. An | actual transmission and the end of the reception, respectively. An | |||
asymmetry in the timestamping causes the offset measured by NTP to | asymmetry in the timestamping causes the offset measured by NTP to | |||
have an error. | have an error. | |||
There are at least four options where a timestamp of an NTP packet | Four options where a timestamp of an NTP packet may be captured with | |||
may be captured with a software NTP implementation running on a | a software NTP implementation running on a general-purpose operating | |||
general-purpose operating system: | system are as follows: | |||
1. User space (software) | 1. User space (software) | |||
2. Network device driver or kernel (software) | 2. Network device driver or kernel (software) | |||
3. Data link layer (hardware - MAC chip) | 3. Data link layer (hardware - MAC chip) | |||
4. Physical layer (hardware - PHY chip) | 4. Physical layer (hardware - PHY chip) | |||
Software timestamps captured in user space in the NTP implementation | Software timestamps captured in the user space in the NTP | |||
itself are least accurate. They do not account for delays due to | implementation itself are the least accurate. They do not account | |||
system calls used for sending and receiving packets, processing and | for delays due to system calls used for sending and receiving | |||
queuing delays in the system, network device drivers, and hardware. | packets, processing and queuing delays in the system, network device | |||
Hardware timestamps captured at the physical layer are most accurate. | drivers, and hardware. Hardware timestamps captured at the physical | |||
layer are the most accurate. | ||||
A transmit timestamp captured in the driver or hardware is more | A transmit timestamp captured in the driver or hardware is more | |||
accurate than the user-space timestamp, but it is available to the | accurate than the user-space timestamp, but it is available to the | |||
NTP implementation only after it sent the packet using a system call. | NTP implementation only after it sent the packet using a system call. | |||
The timestamp cannot be included in the packet itself unless the | The timestamp cannot be included in the packet itself unless the | |||
driver or hardware supports NTP and can modify the packet before or | driver or hardware supports NTP and can modify the packet before or | |||
during the actual transmission. | during the actual transmission. | |||
The protocol described in RFC 5905 does not specify any mechanism for | The protocol described in RFC 5905 [RFC5905] does not specify any | |||
a server to provide its clients and peers with a more accurate | mechanism for a server to provide its clients and peers with a more | |||
transmit timestamp that is known only after the transmission. A | accurate transmit timestamp that is known only after the | |||
packet that strictly follows RFC 5905, i.e. it contains a transmit | transmission. A packet that strictly follows RFC 5905 [RFC5905], | |||
timestamp corresponding to the packet itself, is said to be in basic | i.e., that contains a transmit timestamp corresponding to the packet | |||
mode. | itself, is said to be in the basic mode. | |||
Different mechanisms could be used to exchange timestamps known after | Different mechanisms could be used to exchange timestamps known after | |||
the transmission. The server could respond to each request with two | the transmission. The server could respond to each request with two | |||
packets. The second packet would contain the transmit timestamp | packets. The second packet would contain the transmit timestamp | |||
corresponding to the first packet. However, such a protocol would | corresponding to the first packet. However, such a protocol would | |||
enable a traffic amplification attack, or it would use packets with | enable a traffic amplification attack, or it would use packets with | |||
an asymmetric length, which would cause an asymmetry in the network | an asymmetric length, which would cause an asymmetry in the network | |||
delay and an error in the measured offset. | delay and an error in the measured offset. | |||
This document describes an interleaved client/server, interleaved | This document describes an interleaved client/server mode, | |||
symmetric, and interleaved broadcast mode. In these modes, the | interleaved symmetric mode, and interleaved broadcast mode. In these | |||
server sends a packet which contains a transmit timestamp | modes, the server sends a packet that contains a transmit timestamp | |||
corresponding to the transmission of the previous packet that was | corresponding to the transmission of the previous packet that was | |||
sent to the client or peer. This transmit timestamp can be captured | sent to the client or peer. This transmit timestamp can be captured | |||
in any software or hardware component involved in the transmission of | in any software or hardware component involved in the transmission of | |||
the packet. Both servers and clients/peers are required to keep some | the packet. Both servers and clients/peers are required to keep some | |||
state specific to the interleaved mode. | state specific to the interleaved mode. | |||
An NTPv4 implementation that supports the client/server and broadcast | An NTPv4 implementation that supports the interleaved client/server | |||
interleaved modes interoperates with NTPv4 implementations without | and interleaved broadcast modes interoperates with NTPv4 | |||
this capability. A peer using the symmetric interleaved mode does | implementations without this capability. A peer using the | |||
not fully interoperate with a peer which does not support it. The | interleaved symmetric mode does not fully interoperate with a peer | |||
mode needs to be configured specifically for each symmetric | that does not support it. The mode needs to be configured | |||
association. | specifically for each symmetric association. | |||
The interleaved modes do not change the NTP packet header format and | The interleaved modes do not change the NTP packet header format and | |||
do not use new extension fields. The negotiation is implicit. The | do not use new extension fields. The negotiation is implicit. The | |||
protocol is extended with new values that can be assigned to the | protocol is extended with new values that can be assigned to the | |||
origin and transmit timestamp. Servers and peers check the origin | origin and transmit timestamps. Servers and peers check the origin | |||
timestamp to detect requests conforming to the interleaved mode. A | timestamp to detect requests conforming to the interleaved mode. A | |||
response can be valid only in one mode. If a client or peer that | response can only be valid in one mode. If a client or peer that | |||
does not support interleaved mode received a response conforming to | does not support the interleaved mode received a response conforming | |||
the interleaved mode, it would be rejected as bogus. | to the interleaved mode, it would be rejected as bogus. | |||
An explicit negotiation would require a new extension field. RFC | An explicit negotiation would require a new extension field. RFC | |||
5905 does not specify how servers should handle requests with an | 5905 [RFC5905] does not specify how servers should handle requests | |||
unknown extension field. The original use of extension fields was | with an unknown extension field. The original use of extension | |||
authentication with Autokey [RFC5906], which cannot be negotiated. | fields was authentication with Autokey [RFC5906], which cannot be | |||
Some existing implementations do not respond to requests with unknown | negotiated. Some existing implementations do not respond to requests | |||
extension fields. This behavior would prevent clients from reliably | with unknown extension fields. This behavior would prevent clients | |||
detecting support for the interleaved mode. | from reliably detecting support for the interleaved mode. | |||
Requests and responses cannot always be formed in interleaved mode. | Requests and responses cannot always be formed in the interleaved | |||
It cannot be used exclusively. Servers, clients, and peers that | mode. It cannot be used exclusively. Servers, clients, and peers | |||
support the interleaved mode need to support also the basic mode. | that support the interleaved mode need to also support the basic | |||
mode. | ||||
This document assumes familiarity with RFC 5905. | This document assumes familiarity with RFC 5905 [RFC5905]. | |||
1.1. Requirements Language | 1.1. Requirements Language | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
2. Interleaved Client/Server Mode | 2. Interleaved Client/Server Mode | |||
The interleaved client/server mode is similar to the basic client/ | The interleaved client/server mode is similar to the basic client/ | |||
server mode. The difference between the two modes is in the values | server mode. The difference between the two modes is in the values | |||
saved to the origin and transmit timestamp fields. | saved to the origin and transmit timestamp fields. | |||
The origin timestamp is a cookie which is used to detect that a | The origin timestamp is a cookie that is used to detect that a | |||
received packet is a response to the last packet sent in the other | received packet is a response to the last packet sent in the other | |||
direction of the association. It is a copy of one of the timestamps | direction of the association. It is a copy of one of the timestamps | |||
from the packet to which it is responding, or zero if it is not a | from the packet to which it is responding, or zero if it is not a | |||
response. Servers following RFC 5905 ignore the origin timestamp in | response. Servers following RFC 5905 [RFC5905] ignore the origin | |||
client requests. A server response which does not have a matching | timestamp in client requests. A server response that does not have a | |||
origin timestamp is called bogus. | matching origin timestamp is considered bogus. | |||
A client request in the basic mode has an origin timestamp equal to | A client request in the basic mode has an origin timestamp equal to | |||
the transmit timestamp from the last valid server response, or is | the transmit timestamp from the last valid server response, or the | |||
zero (which indicates the first request of the association). A | origin timestamp is zero (which indicates the first request of the | |||
server response in the basic mode has an origin timestamp equal to | association). A server response in the basic mode has an origin | |||
the transmit timestamp from the client request. The transmit | timestamp equal to the transmit timestamp from the client request. | |||
timestamp in the response corresponds to the transmission of the | The transmit timestamp in the response corresponds to the | |||
response in which the timestamp is contained. | transmission of the response in which the timestamp is contained. | |||
A client request in the interleaved mode has an origin timestamp | A client request in the interleaved mode has an origin timestamp | |||
equal to the receive timestamp from the last valid server response. | equal to the receive timestamp from the last valid server response. | |||
A server response in the interleaved mode has an origin timestamp | A server response in the interleaved mode has an origin timestamp | |||
equal to the receive timestamp from the client request. The transmit | equal to the receive timestamp from the client request. The transmit | |||
timestamp in the response corresponds to the transmission of the | timestamp in the response corresponds to the transmission of the | |||
previous response which had the receive timestamp equal to the origin | previous response that had the receive timestamp equal to the origin | |||
timestamp from the request. | timestamp from the request. | |||
A server which supports the interleaved mode needs to save pairs of | A server that supports the interleaved mode needs to save pairs of | |||
local receive and transmit timestamps. The server SHOULD discard old | local receive and transmit timestamps. The server SHOULD discard old | |||
timestamps to limit the amount of memory used for the interleaved | timestamps to limit the amount of memory used for the interleaved | |||
mode, e.g. by using a fixed-length queue and dropping old timestamps | mode, e.g., by using a fixed-length queue and dropping old timestamps | |||
as new timestamps are saved. The server MAY separate the timestamps | as new timestamps are saved. The server MAY separate the timestamps | |||
by IP addresses, but it SHOULD NOT separate them by port numbers to | by IP addresses, but it SHOULD NOT separate them by port numbers to | |||
support clients that change their port between requests, as | support clients that change their port between requests, as | |||
recommended in RFC 9109 [RFC9109]. | recommended in RFC 9109 [RFC9109]. | |||
The server MAY restrict the interleaved mode to specific IP addresses | The server MAY restrict the interleaved mode to specific IP addresses | |||
and/or authenticated clients. | and/or authenticated clients. | |||
Both servers and clients that support the interleaved mode MUST NOT | Both servers and clients that support the interleaved mode MUST NOT | |||
send a packet that has a transmit timestamp equal to the receive | send a packet that has a transmit timestamp equal to the receive | |||
timestamp in order to reliably detect whether received packets | timestamp in order to reliably detect whether received packets | |||
conform to the interleaved mode. One way to ensure that is to | conform to the interleaved mode. One way to ensure this behavior is | |||
increment the transmit timestamp by 1 unit (i.e. about 1/4 of a | to increment the transmit timestamp by 1 unit (i.e., about 1/4 of a | |||
nanosecond) if the two timestamps are equal, or a new timestamp can | nanosecond) if the two timestamps are equal, or a new timestamp can | |||
be generated. | be generated. | |||
The transmit and receive timestamps in server responses need to be | The transmit and receive timestamps in server responses need to be | |||
unique to prevent two different clients from sending requests with | unique to prevent two different clients from sending requests with | |||
the same origin timestamp and the server responding in the | the same origin timestamp and the server responding in the | |||
interleaved mode with an incorrect transmit timestamp. If the | interleaved mode with an incorrect transmit timestamp. If the | |||
timestamps are not guaranteed to be monotonically increasing, the | timestamps are not guaranteed to be monotonically increasing, the | |||
server SHOULD check that the transmit and receive timestamps are not | server SHOULD check that the transmit and receive timestamps are not | |||
already saved as a receive timestamp of a previous request (from the | already saved as a receive timestamp of a previous request (from the | |||
skipping to change at page 6, line 13 ¶ | skipping to change at line 239 ¶ | |||
in the interleaved mode unless the following two conditions are met: | in the interleaved mode unless the following two conditions are met: | |||
1. The request does not have a receive timestamp equal to the | 1. The request does not have a receive timestamp equal to the | |||
transmit timestamp. | transmit timestamp. | |||
2. The origin timestamp from the request matches the local receive | 2. The origin timestamp from the request matches the local receive | |||
timestamp of a previous request that the server has saved (for | timestamp of a previous request that the server has saved (for | |||
the IP address if it separates timestamps by addresses). | the IP address if it separates timestamps by addresses). | |||
A response in the interleaved mode MUST contain the transmit | A response in the interleaved mode MUST contain the transmit | |||
timestamp of the response which contained the receive timestamp | timestamp of the response that contained the receive timestamp | |||
matching the origin timestamp from the request. The server can drop | matching the origin timestamp from the request. The server can drop | |||
the timestamps after sending the response. The receive timestamp | the timestamps after sending the response. The receive timestamp | |||
MUST NOT be used again to detect a request conforming to the | MUST NOT be used again to detect a request conforming to the | |||
interleaved mode. | interleaved mode. | |||
If the conditions are not met (i.e. the request is not detected to | If the conditions are not met (i.e., the request is not detected to | |||
conform to the interleaved mode), the server MUST NOT respond in the | conform to the interleaved mode), the server MUST NOT respond in the | |||
interleaved mode. If it responds, it MUST be in the basic mode. In | interleaved mode. If it responds, it MUST be in the basic mode. In | |||
any case, the server SHOULD save the new receive and transmit | any case, the server SHOULD save the new receive and transmit | |||
timestamps to be able to respond in the interleaved mode to the next | timestamps to be able to respond in the interleaved mode to the next | |||
request from the client. | request from the client. | |||
The first request from a client is always in the basic mode and so is | The first request from a client is always in the basic mode, and so | |||
the server response. It has a zero origin timestamp and zero receive | is the server response. It has a zero origin timestamp and zero | |||
timestamp. Only when the client receives a valid response from the | receive timestamp. Only when the client receives a valid response | |||
server, it will be able to send a request in the interleaved mode. | from the server will it be able to send a request in the interleaved | |||
mode. | ||||
The protocol recovers from packet loss. When a client request or | The protocol recovers from packet loss. When a client request or | |||
server response is lost, the client will use the same origin | server response is lost, the client will use the same origin | |||
timestamp in the next request. The server can respond in the | timestamp in the next request. The server can respond in the | |||
interleaved mode if it still has the timestamps corresponding to the | interleaved mode if it still has the timestamps corresponding to the | |||
origin timestamp. If the server already responded to the timestamp | origin timestamp. If the server already responded to the timestamp | |||
in the interleaved mode, or it had to drop the timestamps for other | in the interleaved mode or it had to drop the timestamps for other | |||
reasons, it will respond in the basic mode and save new timestamps, | reasons, it will respond in the basic mode and save new timestamps, | |||
which will enable an interleaved response to the subsequent request. | which will enable an interleaved response to the subsequent request. | |||
The client SHOULD limit the number of requests in the interleaved | The client SHOULD limit the number of requests in the interleaved | |||
mode between server responses to prevent processing of very old | mode between server responses to prevent the processing of very old | |||
timestamps in case a large number of consecutive requests is lost. | timestamps in cases where a large number of consecutive requests are | |||
lost. | ||||
An example of packets in a client/server exchange using the | An example of packets in a client/server exchange using the | |||
interleaved mode is shown in Figure 1. The packets in the basic and | interleaved mode is shown in Figure 1. The packets in the basic and | |||
interleaved mode are indicated with B and I respectively. The | interleaved modes are indicated with B and I, respectively. The | |||
timestamps t1~, t3~ and t11~ point to the same transmissions as t1, | timestamps t1~, t3~, and t11~ point to the same transmissions as t1, | |||
t3 and t11, but they may be less accurate. The first exchange is in | t3, and t11, but they may be less accurate. The first exchange is in | |||
the basic mode followed by a second exchange in the interleaved mode. | the basic mode followed by a second exchange in the interleaved mode. | |||
For the third exchange, the client request is in the interleaved | For the third exchange, the client request is in the interleaved | |||
mode, but the server response is in the basic mode, because the | mode, but the server response is in the basic mode, because the | |||
server did not have the pair of timestamps t6 and t7 (e.g. they were | server did not have the pair of timestamps t6 and t7 (e.g., they were | |||
dropped to save timestamps for other clients using the interleaved | dropped to save timestamps for other clients using the interleaved | |||
mode). | mode). | |||
Server t2 t3 t6 t7 t10 t11 | t2 t3 t6 t7 t10 t11 | |||
-----+----+----------------+----+----------------+----+----- | Server -----+----+----------------+----+----------------+----+----- | |||
/ \ / \ / \ | / \ / \ / \ | |||
Client / \ / \ / \ | / \ / \ / \ | |||
--+----------+----------+----------+----------+----------+-- | Client --+----------+----------+----------+----------+----------+-- | |||
t1 t4 t5 t8 t9 t12 | t1 t4 t5 t8 t9 t12 | |||
Mode: B B I I I B | Mode B B I I I B | |||
+----+ +----+ +----+ +----+ +----+ +----+ | +----+ +----+ +----+ +----+ +----+ +----+ | |||
Org | 0 | | t1~| | t2 | | t4 | | t6 | | t5 | | Origin | 0 | | t1~| | t2 | | t4 | | t6 | | t5 | | |||
Rx | 0 | | t2 | | t4 | | t6 | | t8 | |t10 | | Rx | 0 | | t2 | | t4 | | t6 | | t8 | |t10 | | |||
Tx | t1~| | t3~| | t1 | | t3 | | t5 | |t11~| | Tx | t1~| | t3~| | t1 | | t3 | | t5 | |t11~| | |||
+----+ +----+ +----+ +----+ +----+ +----+ | +----+ +----+ +----+ +----+ +----+ +----+ | |||
Figure 1: Packet timestamps in interleaved client/server mode | Figure 1: Packet Timestamps in Interleaved Client/Server Mode | |||
When the client receives a response from the server, it performs the | When the client receives a response from the server, it performs the | |||
tests described in RFC 5905. Two of the tests are modified for the | tests described in RFC 5905 [RFC5905]. Two of the tests are modified | |||
interleaved mode: | for the interleaved mode: | |||
1. The check for duplicate packets compares both receive and | 1. The check for duplicate packets compares both receive and | |||
transmit timestamps in order to not drop a valid response in the | transmit timestamps in order to not drop a valid response in the | |||
interleaved mode if it follows a response in the basic mode and | interleaved mode if it follows a response in the basic mode and | |||
they contain the same transmit timestamp. | they contain the same transmit timestamp. | |||
2. The check for bogus packets compares the origin timestamp with | 2. The check for bogus packets compares the origin timestamp with | |||
both transmit and receive timestamps from the request. If the | both transmit and receive timestamps from the request. If the | |||
origin timestamp is equal to the transmit timestamp, the response | origin timestamp is equal to the transmit timestamp, the response | |||
is in the basic mode. If the origin timestamp is equal to the | is in the basic mode. If the origin timestamp is equal to the | |||
receive timestamp, the response is in the interleaved mode. | receive timestamp, the response is in the interleaved mode. | |||
The client SHOULD NOT update its NTP state when an invalid response | The client SHOULD NOT update its NTP state when an invalid response | |||
is received, to not lose the timestamps which will be needed to | is received, so that the timestamps that will be needed to complete a | |||
complete a measurement when the subsequent response in the | measurement when the subsequent response in the interleaved mode is | |||
interleaved mode is received. | received will not be lost. | |||
If the packet passed the tests and conforms to the interleaved mode, | If the packet passed the tests and conforms to the interleaved mode, | |||
the client can compute the offset and delay using the formulas from | the client can compute the offset and delay using the formulas from | |||
RFC 5905 and one of two different sets of timestamps. The first set | RFC 5905 [RFC5905] and one of two different sets of timestamps. The | |||
is RECOMMENDED for clients that filter measurements based on the | first set is RECOMMENDED for clients that filter measurements based | |||
delay. The corresponding timestamps from Figure 1 are written in | on the delay. The corresponding timestamps from Figure 1 are written | |||
parentheses. | in parentheses. | |||
T1 - local transmit timestamp of the previous request (t1) | * T1 - local transmit timestamp of the previous request (t1) | |||
T2 - remote receive timestamp from the previous response (t2) | * T2 - remote receive timestamp from the previous response (t2) | |||
T3 - remote transmit timestamp from the latest response (t3) | * T3 - remote transmit timestamp from the latest response (t3) | |||
T4 - local receive timestamp of the previous response (t4) | * T4 - local receive timestamp of the previous response (t4) | |||
The second set gives a more accurate measurement of the current | The second set gives a more accurate measurement of the current | |||
offset, but the delay is much more sensitive to a frequency error | offset, but the delay is much more sensitive to a frequency error | |||
between the server and client due to a much longer interval between | between the server and client due to a much longer interval between | |||
T1 and T4. | T1 and T4. | |||
T1 - local transmit timestamp of the latest request (t5) | * T1 - local transmit timestamp of the latest request (t5) | |||
T2 - remote receive timestamp from the latest response (t6) | * T2 - remote receive timestamp from the latest response (t6) | |||
T3 - remote transmit timestamp from the latest response (t3) | * T3 - remote transmit timestamp from the latest response (t3) | |||
T4 - local receive timestamp of the previous response (t4) | * T4 - local receive timestamp of the previous response (t4) | |||
Clients MAY filter measurements based on the mode. The maximum | Clients MAY filter measurements based on the mode. The maximum | |||
number of dropped measurements in the basic mode SHOULD be limited in | number of dropped measurements in the basic mode SHOULD be limited in | |||
case the server does not support or is not able to respond in the | cases where the server does not support, or is not able to respond | |||
interleaved mode. Clients that filter measurements based on the | in, the interleaved mode. Clients that filter measurements based on | |||
delay will implicitly prefer measurements in the interleaved mode | the delay will implicitly prefer measurements in the interleaved mode | |||
over the basic mode, because they have a shorter delay due to a more | over the basic mode, because they have a shorter delay due to a more | |||
accurate transmit timestamp (T3). | accurate transmit timestamp (T3). | |||
The server MAY limit saving of the receive and transmit timestamps to | The server MAY limit the saving of the receive and transmit | |||
requests which have an origin timestamp specific to the interleaved | timestamps to requests that have an origin timestamp specific to the | |||
mode in order to not waste resources on clients using the basic mode. | interleaved mode in order to not waste resources on clients using the | |||
Such an optimization will delay the first interleaved response of the | basic mode. Such an optimization will delay the first interleaved | |||
server to a client by one exchange. | response of the server to a client by one exchange. | |||
A check for a non-zero origin timestamp works with NTP clients that | A check for a non-zero origin timestamp works with NTP clients that | |||
always set the timestamp to zero. From the server's point of view, | always set the timestamp to zero. From the server's point of view, | |||
such clients start a new association with each request. | such clients start a new association with each request. | |||
To avoid searching the saved receive timestamps for non-zero origin | To avoid searching the saved receive timestamps for non-zero origin | |||
timestamps from requests conforming to the basic mode, the server can | timestamps from requests conforming to the basic mode, the server can | |||
encode in low-order bits of the receive and transmit timestamps below | encode in low-order bits of the receive and transmit timestamps below | |||
precision of the clock a flag indicating whether the timestamp is a | the precision of the clock a flag indicating whether the timestamp is | |||
receive timestamp. If the server receives a request with a non-zero | a receive timestamp. If the server receives a request with a non- | |||
origin timestamp which does not indicate it is a receive timestamp of | zero origin timestamp that does not indicate that it is a receive | |||
the server, the request does not conform to the interleaved mode and | timestamp of the server, the request does not conform to the | |||
it is not necessary to perform the search and/or save the new receive | interleaved mode, and it is not necessary to perform the search and/ | |||
and transmit timestamp. | or save the new receive and transmit timestamps. | |||
3. Interleaved Symmetric Mode | 3. Interleaved Symmetric Mode | |||
The interleaved symmetric mode uses the same principles as the | The interleaved symmetric mode uses the same principles as the | |||
interleaved client/server mode. A packet in the interleaved | interleaved client/server mode. A packet in the interleaved | |||
symmetric mode has a transmit timestamp which corresponds to the | symmetric mode has a transmit timestamp that corresponds to the | |||
transmission of the previous packet sent to the peer and an origin | transmission of the previous packet sent to the peer and an origin | |||
timestamp equal to the receive timestamp from the last packet | timestamp equal to the receive timestamp from the last packet | |||
received from the peer. | received from the peer. | |||
To enable synchronization in both directions of a symmetric | To enable synchronization in both directions of a symmetric | |||
association, both peers need to support the interleaved mode. For | association, both peers need to support the interleaved mode. For | |||
this reason, it SHOULD be disabled by default and enabled with an | this reason, it SHOULD be disabled by default and enabled with an | |||
option in the configuration of the active side of the association. | option in the configuration of the active side of the association. | |||
In order to prevent the peer from matching the transmit timestamp | In order to prevent a peer from matching transmit timestamps with | |||
with an incorrect packet when the peers' transmissions do not | incorrect packets when its transmissions do not alternate with | |||
alternate (e.g. they use different polling intervals) and a previous | transmissions of its peer (e.g., they use different polling | |||
packet was lost, the use of the interleaved mode in symmetric | intervals) and one or more previous packets were lost, the use of the | |||
associations requires additional restrictions. | interleaved mode in symmetric associations requires additional | |||
restrictions. | ||||
Peers which have an association need to count valid packets received | Peers that have an association need to count valid packets received | |||
between their transmissions to determine in which mode a packet | between their transmissions to determine in which mode a packet | |||
should be formed. A valid packet in this context is a packet which | should be formed. A valid packet in this context is a packet that | |||
passed all NTP tests for duplicate, replayed, bogus, and | passed all NTP tests for duplicate, replayed, bogus, and | |||
unauthenticated packets. Other received packets may update the NTP | unauthenticated packets. Other received packets may update the NTP | |||
state to allow the (re)initialization of the association, but they do | state to allow the (re)initialization of the association, but they do | |||
not change the selection of the mode. | not change the selection of the mode. | |||
A peer A MUST NOT send a peer B a packet in the interleaved mode | A Peer A MUST NOT send a Peer B a packet in the interleaved mode | |||
unless all of the following conditions are met: | unless all of the following conditions are met: | |||
1. The peer A has an active association with the peer B which was | 1. Peer A has an active association with Peer B that was specified | |||
specified with the option enabling the interleaved mode, OR the | with the option enabling the interleaved mode, OR Peer A received | |||
peer A received at least one valid packet in the interleaved mode | at least one valid packet in the interleaved mode from Peer B. | |||
from the peer B. | ||||
2. The peer A did not send a packet to the peer B since it received | 2. Peer A did not send a packet to Peer B since the time that it | |||
the last valid packet from the peer B. | received the last valid packet from Peer B. | |||
3. The previous packet that the peer A sent to the peer B was the | 3. The previous packet that Peer A sent to Peer B was the only | |||
only response to a packet received from the peer B. | response to a packet received from Peer B. | |||
The first condition is needed for compatibility with implementations | The first condition is needed for compatibility with implementations | |||
that do not support or are not configured for the interleaved mode. | that do not support, or are not configured for, the interleaved mode. | |||
The other conditions prevent a missing response from causing a | The other conditions prevent a missing response from causing a | |||
mismatch between the remote transmit (T2) and local receive timestamp | mismatch between the remote transmit timestamp (T2) and local receive | |||
(T3), which would cause a large error in the measured offset and | timestamp (T3), which would cause a large error in the measured | |||
delay. | offset and delay. | |||
An example of packets exchanged in a symmetric association is shown | An example of packets exchanged in a symmetric association is shown | |||
in Figure 2. The minimum polling interval of the peer A is twice as | in Figure 2. The minimum polling interval of Peer A is twice as long | |||
long as the maximum polling interval of the peer B. The first | as the maximum polling interval of Peer B. The first packet sent by | |||
packets sent by the peers are in the basic mode. The second and | each peer is in the basic mode. The second and third packets sent by | |||
third packet sent by the peer A is in the interleaved mode. The | Peer A are in the interleaved mode. The second packet sent by Peer B | |||
second packet sent by the peer B is in the interleaved mode, but the | is in the interleaved mode, but subsequent packets sent by Peer B are | |||
following packets sent by the peer B are in the basic mode, because | in the basic mode, because multiple responses are sent for each | |||
multiple responses are sent per request. | request. | |||
Peer A t2 t3 t6 t8 t9 t12 t14 t15 | t2 t3 t6 t8 t9 t12 t14 t15 | |||
-----+--+--------+-----------+--+--------+-----------+--+----- | Peer A -----+--+--------+-----------+--+--------+-----------+--+---- | |||
/ \ / / \ / / \ | / \ / / \ / / \ | |||
Peer B / \ / / \ / / \ | / \ / / \ / / \ | |||
--+--------+--+-----------+--------+--+-----------+--------+-- | Peer B --+--------+--+-----------+--------+--+-----------+--------+- | |||
t1 t4 t5 t7 t10 t11 t13 t16 | t1 t4 t5 t7 t10 t11 t13 t16 | |||
Mode: B B I B I B B I | Mode B B I B I B B I | |||
+----+ +----+ +----+ +----+ +----+ +----+ +----+ +----+ | +----+ +----+ +----+ +----+ +----+ +----+ +----+ +----+ | |||
Org | 0 | | t1~| | t2 | | t3~| | t4 | | t3 | | t3 | |t10 | | Origin | 0 | | t1~| | t2 | | t3~| | t4 | | t3 | | t3 | |t10 | | |||
Rx | 0 | | t2 | | t4 | | t4 | | t8 | |t10 | |t10 | |t14 | | Rx | 0 | | t2 | | t4 | | t4 | | t8 | |t10 | |t10 | |t14 | | |||
Tx | t1~| | t3~| | t1 | | t7~| | t3 | |t11~| |t13~| | t9 | | Tx | t1~| | t3~| | t1 | | t7~| | t3 | |t11~| |t13~| | t9 | | |||
+----+ +----+ +----+ +----+ +----+ +----+ +----+ +----+ | +----+ +----+ +----+ +----+ +----+ +----+ +----+ +----+ | |||
Figure 2: Packet timestamps in interleaved symmetric mode | Figure 2: Packet Timestamps in Interleaved Symmetric Mode | |||
If the peer A has no association with the peer B and it responds with | If Peer A has no association with Peer B and it responds with | |||
symmetric passive packets, it does not need to count the packets in | symmetric passive packets, it does not need to count the packets in | |||
order to meet the restrictions, because each request has at most one | order to meet the restrictions, because each request has at most one | |||
response. The processing of the requests can be implemented in the | response. The processing of the requests can be implemented in the | |||
same way as a server handling requests in the interleaved client/ | same way as a server handling requests in the interleaved client/ | |||
server mode. | server mode. | |||
The peers can compute the offset and delay using one of the two sets | The peers can compute the offset and delay using one of the two sets | |||
of timestamps specified in the client/server section. They can | of timestamps specified in Section 2. They can switch between the | |||
switch between the sets to minimize the interval between T1 and T4 in | sets to minimize the interval between T1 and T4 in order to reduce | |||
order to reduce the error in the measured delay. | the error in the measured delay. | |||
4. Interleaved Broadcast Mode | 4. Interleaved Broadcast Mode | |||
A packet in the interleaved broadcast mode contains two transmit | A packet in the interleaved broadcast mode contains two transmit | |||
timestamps. One corresponds to the packet itself and is saved in the | timestamps. One corresponds to the packet itself and is saved in the | |||
transmit timestamp field. The other corresponds to the previous | transmit timestamp field. The other corresponds to the previous | |||
packet and is saved in the origin timestamp field. The packet is | packet and is saved in the origin timestamp field. The packet is | |||
compatible with the basic mode, which uses a zero origin timestamp. | compatible with the basic mode, which uses a zero origin timestamp. | |||
An example of packets sent in the broadcast mode is shown in | An example of packets sent in the broadcast mode is shown in | |||
Figure 3. | Figure 3. | |||
Server t1 t3 t5 t7 | t1 t3 t5 t7 | |||
------+------------+------------+------------+--------- | Server ------+------------+------------+------------+--------- | |||
\ \ \ \ | \ \ \ \ | |||
Client \ \ \ \ | \ \ \ \ | |||
---------+------------+------------+------------+------ | Client ---------+------------+------------+------------+------ | |||
t2 t4 t6 t8 | t2 t4 t6 t8 | |||
Mode: B I I I | Mode B I I I | |||
+----+ +----+ +----+ +----+ | +----+ +----+ +----+ +----+ | |||
Org | 0 | | t1 | | t3 | | t5 | | Origin | 0 | | t1 | | t3 | | t5 | | |||
Rx | 0 | | 0 | | 0 | | 0 | | Rx | 0 | | 0 | | 0 | | 0 | | |||
Tx | t1~| | t3~| | t5~| | t7~| | Tx | t1~| | t3~| | t5~| | t7~| | |||
+----+ +----+ +----+ +----+ | +----+ +----+ +----+ +----+ | |||
Figure 3: Packet timestamps in interleaved broadcast mode | Figure 3: Packet Timestamps in Interleaved Broadcast Mode | |||
A client which does not support the interleaved mode ignores the | A client that does not support the interleaved mode ignores the | |||
origin timestamp and processes all packets as if they were in the | origin timestamp and processes all packets as if they were in the | |||
basic mode. | basic mode. | |||
A client which supports the interleaved mode MUST check if the origin | A client that supports the interleaved mode MUST check if the origin | |||
timestamp is not zero to detect packets conforming to the interleaved | timestamp is not zero to detect packets conforming to the interleaved | |||
mode. The client SHOULD also compare the origin timestamp with the | mode. The client SHOULD also compare the origin timestamp with the | |||
transmit timestamp from the previous packet to detect lost packets. | transmit timestamp from the previous packet to detect lost packets. | |||
If the difference is larger than a specified maximum (e.g. 1 second), | If the difference is larger than a specified maximum (e.g., 1 | |||
the packet SHOULD NOT be used for synchronization in the interleaved | second), the packet SHOULD NOT be used for synchronization in the | |||
mode to avoid a large error in the measurement. | interleaved mode to avoid a large error in the measurement. | |||
The client computes the offset using the origin timestamp from the | The client computes the offset using the origin timestamp from the | |||
received packet and the local receive timestamp of the previous | received packet and the local receive timestamp of the previous | |||
packet. If the client needs to measure the network delay, it SHOULD | packet. If the client needs to measure the network delay, it SHOULD | |||
use the interleaved client/server mode. If it used the basic client/ | use the interleaved client/server mode. If it used the basic client/ | |||
server or symmetric mode, the less accurate measurement of the delay | server mode or symmetric mode, the less accurate measurement of the | |||
would impact also accuracy of the offset measured in the interleaved | delay would also impact the accuracy of the offset measured in the | |||
broadcast mode. | interleaved broadcast mode. | |||
5. Impact of Implementation Errors | 5. Impact of Implementation Errors | |||
The interleaved modes make NTP more complex and more sensitive to | The interleaved modes make NTP more complex and more sensitive to | |||
errors in implementations. Some errors that do not cause any | implementation errors. Some errors that do not cause any problems | |||
problems between implementations supporting only the basic mode can | between implementations supporting only the basic mode can cause an | |||
cause an occasional missing or corrupted measurement when one or both | occasional missing or corrupted measurement when one or both sides | |||
sides support the interleaved mode. This section describes the | support the interleaved mode. This section describes the impact of | |||
impact of what could possibly be the most likely errors in the most | what could possibly be the most likely errors in the most commonly | |||
commonly used mode - client/server. | used mode -- client/server. | |||
If a client that does not support the interleaved mode sets the | If a client that does not support the interleaved mode sets the | |||
origin timestamp to other values than the transmit timestamp from the | origin timestamp to values other than the transmit timestamp from the | |||
last valid server response, or zero, the origin timestamp can match a | last valid server response, or zero, the origin timestamp can match a | |||
receive timestamp of a previous server response (possibly to a | receive timestamp of a previous server response (possibly to a | |||
different client) and cause an unexpected interleaved response. The | different client) and cause an unexpected interleaved response. The | |||
client is expected to drop the response as bogus due to having a | client is expected to drop the response as bogus due to having a | |||
wrong origin timestamp. If it did not check for bogus responses, it | wrong origin timestamp. If it did not check for bogus responses, it | |||
would get a corrupted measurement with possibly a large error in the | would get a corrupted measurement, possibly with a large error in the | |||
offset and delay. It would also be vulnerable to off-path attacks. | offset and delay. It would also be vulnerable to off-path attacks. | |||
The worst case of this failure would be a client that specifically | The worst-case scenario for this failure would be a client that | |||
sets the origin timestamp to the server's receive timestamp, i.e. the | specifically sets the origin timestamp to the server's receive | |||
client accidentally implemented the interleaved mode, but it does not | timestamp, i.e., the client accidentally implemented the interleaved | |||
accept interleaved responses. This client would still be able to | mode, but it does not accept interleaved responses. This client | |||
synchronize its clock. It would drop interleaved responses as bogus | would still be able to synchronize its clock. It would drop | |||
and set the origin timestamp to the receive timestamp from the last | interleaved responses as bogus and set the origin timestamp to the | |||
valid response in the basic mode. As servers are required to not | receive timestamp from the last valid response in the basic mode. As | |||
respond twice to the same origin timestamp in the interleaved mode, | servers are required to not respond twice to the same origin | |||
at least every other response would be in the basic mode and accepted | timestamp in the interleaved mode, at least every other response | |||
by the client. | would be in the basic mode and accepted by the client. | |||
A missing or corrupted measurement can be caused also by problems on | A missing or corrupted measurement can also be caused by problems on | |||
the server side. A server which does not ensure the receive and | the server side. A server that does not ensure that the receive and | |||
transmit timestamps in its responses are unique in a sufficiently | transmit timestamps in its responses are unique in a sufficiently | |||
long interval can misinterpret requests formed correctly in the basic | long interval can misinterpret requests formed correctly in the basic | |||
mode as interleaved and respond in the interleaved mode. The | mode as interleaved and respond in the interleaved mode. The | |||
response would be dropped by the client as bogus. | response would be dropped by the client as bogus. | |||
A duplicated server receive timestamp can cause an expected | A duplicated server receive timestamp can cause an expected | |||
interleaved response to contain a transmit timestamp which does not | interleaved response to contain a transmit timestamp that does not | |||
correspond to the transmission of the previous response from which | correspond to the transmission of the previous response from which | |||
the client copied the receive timestamp to the origin timestamp in | the client copied the receive timestamp to the origin timestamp in | |||
the request, but a different response which contained the same | the request, but a different response that contained the same receive | |||
receive timestamp. The response would be accepted by the client with | timestamp. The response would be accepted by the client with a small | |||
a small error in the transmit timestamp equal to the difference | error in the transmit timestamp equal to the difference between the | |||
between the transmit timestamps of the two different responses. As | transmit timestamps of the two different responses. As the requests | |||
the two requests to which the responses responded were received at | corresponding to the two different responses were received at the | |||
the same time (according to the server's clock), the two | same time (according to the server's clock), the two transmissions | |||
transmissions would be expected to be close to each other and the | would be expected to be close to each other and the difference | |||
difference between them would be comparable to the error a basic | between them would be comparable to the error a basic response | |||
response normally has in its transmit timestamp. | normally has in its transmit timestamp. | |||
6. Security Considerations | 6. Security Considerations | |||
The security considerations of time protocols in general are | The security considerations for time protocols in general are | |||
discussed in RFC 7384 [RFC7384], and specifically the security | discussed in RFC 7384 [RFC7384]. Security considerations specific to | |||
considerations of NTP are discussed in RFC 5905. | NTP are discussed in RFC 5905 [RFC5905]. | |||
Security issues that apply to the basic modes apply also to the | Security issues that apply to the basic modes discussed in RFC 5905 | |||
interleaved modes. They are described in The Security of NTP's | [RFC5905] also apply to the interleaved modes. These issues are | |||
Datagram Protocol [SECNTP]. | described in "The Security of NTP's Datagram Protocol" [SECNTP]. | |||
Clients and peers SHOULD NOT leak the receive timestamp in packets | Clients and peers SHOULD NOT leak the receive timestamp in packets | |||
sent to other peers or clients (e.g. as a reference timestamp) to | sent to other peers or clients (e.g., as a reference timestamp) to | |||
prevent off-path attackers from easily getting the origin timestamp | prevent off-path attackers from easily getting the origin timestamp | |||
needed to make a valid response in the interleaved mode. | needed to make a valid response in the interleaved mode. | |||
Clients using the interleaved mode SHOULD randomize all bits of | Clients using the interleaved mode SHOULD randomize all bits of | |||
receive and transmit timestamps in their requests (i.e. use a | receive and transmit timestamps in their requests (i.e., provide a | |||
precision of 32) to make it more difficult for off-path attackers to | precision of 2^32 seconds) to make it more difficult for off-path | |||
guess the origin timestamp in the server response. | attackers to guess the origin timestamp in the server response. | |||
Unlike in the basic client/server mode, clients using interleaved | Unlike in the basic client/server mode, clients using the interleaved | |||
mode cannot set the origin timestamp in their requests to zero (i.e. | mode cannot set the origin timestamp in their requests to zero (i.e., | |||
reset the NTP association with every request) to make it more | reset the NTP association with every request) to make it more | |||
difficult to track them as they move between networks. | difficult to track them as they move between networks. | |||
Attackers can force the server to drop its timestamps in order to | Attackers can force the server to drop its timestamps in order to | |||
prevent clients from getting an interleaved response. They can send | prevent clients from getting an interleaved response. They can send | |||
a large number of requests, send requests with a spoofed source | a large number of requests, send requests with a spoofed source | |||
address, or replay an authenticated request if the interleaved mode | address, or replay an authenticated request if the interleaved mode | |||
is enabled only for authenticated clients. Clients MUST NOT rely on | is enabled only for authenticated clients. Clients MUST NOT rely on | |||
servers to be able to respond in the interleaved mode. | servers to be able to respond in the interleaved mode. | |||
Protecting symmetric associations in the interleaved mode against | Protecting symmetric associations in the interleaved mode against | |||
replay attacks is even more difficult than in the basic mode. In | replay attacks is even more difficult than in the basic mode. In | |||
both modes, the NTP state needs to be protected between the reception | both modes, the NTP state needs to be protected between the reception | |||
of the last non-replayed response and transmission of the next | of the last non-replayed response and transmission of the next | |||
request in order for the request to contain the origin timestamp | request in order for the request to contain the origin timestamp | |||
expected by the peer. The difference is in the timestamps needed to | expected by the peer. The difference is in the timestamps needed to | |||
complete a measurement. In the basic mode only one valid response is | complete a measurement. In the basic mode, only one valid response | |||
needed at a time and it is used as soon as it is received, but the | is needed at a time and it is used as soon as it is received, but the | |||
interleaved mode needs two consecutive valid responses. The NTP | interleaved mode needs two consecutive valid responses. The NTP | |||
state needs to be protected all the time to not lose the timestamps | state needs to be protected at all times, so that the timestamps that | |||
which are needed to complete the measurement when the second response | are needed to complete the measurement when the second response is | |||
is received. | received will not be lost. | |||
7. IANA Considerations | 7. IANA Considerations | |||
This memo includes no request to IANA. | This document has no IANA actions. | |||
8. Acknowledgements | ||||
The interleaved modes described in this document are based on the | ||||
implementation written by David Mills in the NTP project | ||||
(http://www.ntp.org). The specification of the broadcast mode is | ||||
based purely on this implementation. The specification of the | ||||
symmetric mode has some modifications. The client/server mode is | ||||
specified as a new mode compatible with the symmetric mode, similarly | ||||
to the basic symmetric and client/server modes. | ||||
The authors would like to thank Doug Arnold, Roman Danyliw, Reese | ||||
Enghardt, Daniel Franke, Benjamin Kaduk, Erik Kline, Catherine | ||||
Meadows, Tal Mizrahi, Steven Sommars, Harlan Stenn, Kristof Teichel, | ||||
and Gunter Van de Velde for their useful comments and suggestions. | ||||
9. References | 8. References | |||
9.1. Normative References | 8.1. Normative References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC5905] Mills, D., Martin, J., Ed., Burbank, J., and W. Kasch, | [RFC5905] Mills, D., Martin, J., Ed., Burbank, J., and W. Kasch, | |||
"Network Time Protocol Version 4: Protocol and Algorithms | "Network Time Protocol Version 4: Protocol and Algorithms | |||
Specification", RFC 5905, DOI 10.17487/RFC5905, June 2010, | Specification", RFC 5905, DOI 10.17487/RFC5905, June 2010, | |||
<https://www.rfc-editor.org/info/rfc5905>. | <https://www.rfc-editor.org/info/rfc5905>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
9.2. Informative References | 8.2. Informative References | |||
[RFC5906] Haberman, B., Ed. and D. Mills, "Network Time Protocol | [RFC5906] Haberman, B., Ed. and D. Mills, "Network Time Protocol | |||
Version 4: Autokey Specification", RFC 5906, | Version 4: Autokey Specification", RFC 5906, | |||
DOI 10.17487/RFC5906, June 2010, | DOI 10.17487/RFC5906, June 2010, | |||
<https://www.rfc-editor.org/info/rfc5906>. | <https://www.rfc-editor.org/info/rfc5906>. | |||
[RFC7384] Mizrahi, T., "Security Requirements of Time Protocols in | [RFC7384] Mizrahi, T., "Security Requirements of Time Protocols in | |||
Packet Switched Networks", RFC 7384, DOI 10.17487/RFC7384, | Packet Switched Networks", RFC 7384, DOI 10.17487/RFC7384, | |||
October 2014, <https://www.rfc-editor.org/info/rfc7384>. | October 2014, <https://www.rfc-editor.org/info/rfc7384>. | |||
[RFC9109] Gont, F., Gont, G., and M. Lichvar, "Network Time Protocol | [RFC9109] Gont, F., Gont, G., and M. Lichvar, "Network Time Protocol | |||
Version 4: Port Randomization", RFC 9109, | Version 4: Port Randomization", RFC 9109, | |||
DOI 10.17487/RFC9109, August 2021, | DOI 10.17487/RFC9109, August 2021, | |||
<https://www.rfc-editor.org/info/rfc9109>. | <https://www.rfc-editor.org/info/rfc9109>. | |||
[SECNTP] Malhotra, A., Gundy, M. V., Varia, M., Kennedy, H., | [SECNTP] Malhotra, A., Van Gundy, M., Varia, M., Kennedy, H., | |||
Gardner, J., and S. Goldberg, "The Security of NTP's | Gardner, J., and S. Goldberg, "The Security of NTP's | |||
Datagram Protocol", 2016, | Datagram Protocol", Cryptology ePrint Archive, Paper | |||
<http://eprint.iacr.org/2016/1006>. | 2016/1006, 2016, <https://eprint.iacr.org/2016/1006>. | |||
Acknowledgements | ||||
The interleaved modes described in this document are based on the | ||||
implementation written by David Mills in the NTP project | ||||
(https://www.ntp.org). The specification of the broadcast mode is | ||||
based purely on this implementation. The specification of the | ||||
symmetric mode has some modifications. The client/server mode is | ||||
specified as a new mode compatible with the symmetric mode. It is a | ||||
simplified special case of the symmetric mode, analogously to how the | ||||
basic client/server mode is a special case of the basic symmetric | ||||
mode. | ||||
The authors would like to thank Doug Arnold, Roman Danyliw, Reese | ||||
Enghardt, Daniel Franke, Benjamin Kaduk, Erik Kline, Catherine | ||||
Meadows, Tal Mizrahi, Steven Sommars, Harlan Stenn, Kristof Teichel, | ||||
and Gunter Van de Velde for their useful comments and suggestions. | ||||
Authors' Addresses | Authors' Addresses | |||
Miroslav Lichvar | Miroslav Lichvar | |||
Red Hat | Red Hat | |||
Purkynova 115 | Purkynova 115 | |||
612 00 Brno | 612 00 Brno | |||
Czech Republic | Czech Republic | |||
Email: mlichvar@redhat.com | Email: mlichvar@redhat.com | |||
Aanchal Malhotra | Aanchal Malhotra | |||
Boston University | Boston University | |||
111 Cummington St | 111 Cummington St | |||
Boston, 02215 | Boston, MA 02215 | |||
United States of America | United States of America | |||
Email: aanchal4@bu.edu | Email: aanchal4@bu.edu | |||
End of changes. 100 change blocks. | ||||
291 lines changed or deleted | 295 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |