| 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 May 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. | ||||