summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc9249.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc9249.txt')
-rw-r--r--doc/rfc/rfc9249.txt2958
1 files changed, 2958 insertions, 0 deletions
diff --git a/doc/rfc/rfc9249.txt b/doc/rfc/rfc9249.txt
new file mode 100644
index 0000000..f637b25
--- /dev/null
+++ b/doc/rfc/rfc9249.txt
@@ -0,0 +1,2958 @@
+
+
+
+
+Internet Engineering Task Force (IETF) N. Wu
+Request for Comments: 9249 D. Dhody, Ed.
+Category: Standards Track Huawei
+ISSN: 2070-1721 A. Sinha, Ed.
+ A. Kumar S N
+ RtBrick Inc.
+ Y. Zhao
+ Ericsson
+ July 2022
+
+
+ A YANG Data Model for NTP
+
+Abstract
+
+ This document defines a YANG data model that can be used to configure
+ and manage Network Time Protocol (NTP) version 4. It can also be
+ used to configure and manage version 3. The data model includes
+ configuration data and state data.
+
+Status of This Memo
+
+ This is an Internet Standards Track document.
+
+ This document is a product of the Internet Engineering Task Force
+ (IETF). It represents the consensus of the IETF community. It has
+ received public review and has been approved for publication by the
+ Internet Engineering Steering Group (IESG). Further information on
+ Internet Standards is available in Section 2 of RFC 7841.
+
+ 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/rfc9249.
+
+Copyright Notice
+
+ Copyright (c) 2022 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents
+ (https://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document. Code Components extracted from this document must
+ include Revised BSD License text as described in Section 4.e of the
+ Trust Legal Provisions and are provided without warranty as described
+ in the Revised BSD License.
+
+Table of Contents
+
+ 1. Introduction
+ 1.1. Operational State
+ 1.2. Terminology
+ 1.3. Tree Diagrams
+ 1.4. Prefixes in Data Node Names
+ 1.5. References in the Model
+ 1.6. Requirements Language
+ 2. NTP Data Model
+ 3. Relationship with NTPv4-MIB
+ 4. Relationship with RFC 7317
+ 5. Access Rules
+ 6. Key Management
+ 7. NTP Version
+ 8. NTP YANG Module
+ 9. Usage Example
+ 9.1. Unicast Association
+ 9.2. Refclock Master
+ 9.3. Authentication Configuration
+ 9.4. Access Configuration
+ 9.5. Multicast Configuration
+ 9.6. Manycast Configuration
+ 9.7. Clock State
+ 9.8. Get All Association
+ 9.9. Global Statistic
+ 10. IANA Considerations
+ 10.1. IETF XML Registry
+ 10.2. YANG Module Names
+ 11. Security Considerations
+ 12. References
+ 12.1. Normative References
+ 12.2. Informative References
+ Appendix A. Full YANG Tree
+ Acknowledgments
+ Authors' Addresses
+
+1. Introduction
+
+ This document defines a YANG data model [RFC7950] that can be used to
+ configure and manage Network Time Protocol version 4 [RFC5905]. Note
+ that the model could also be used to configure and manage NTPv3
+ [RFC1305] (see Section 7).
+
+ The data model covers configuration of system parameters of NTP such
+ as access rules, authentication and VPN Routing and Forwarding (VRF)
+ binding, and various modes of NTP and per-interface parameters. It
+ also provides access to information about running state of NTP
+ implementations.
+
+1.1. Operational State
+
+ NTP operational state is included in the same tree as NTP
+ configuration, consistent with "Network Management Datastore
+ Architecture (NMDA)" [RFC8342]. NTP current state and statistics are
+ also maintained in the operational state. The operational state also
+ includes the NTP association state.
+
+1.2. Terminology
+
+ The terminology used in this document is aligned with [RFC5905] and
+ [RFC1305].
+
+1.3. Tree Diagrams
+
+ A simplified graphical representation of the data model is used in
+ this document. This document uses the graphical representation of
+ data models defined in [RFC8340].
+
+1.4. Prefixes in Data Node Names
+
+ In this document, names of data nodes and other data model objects
+ are often used without a prefix, as long as it is clear from the
+ context in which YANG module each name is defined. Otherwise, names
+ are prefixed using the standard prefix associated with the
+ corresponding YANG module, as shown in Table 1.
+
+ +==========+==========================+===========+
+ | Prefix | YANG Module | Reference |
+ +==========+==========================+===========+
+ | yang | ietf-yang-types | [RFC6991] |
+ +----------+--------------------------+-----------+
+ | inet | ietf-inet-types | [RFC6991] |
+ +----------+--------------------------+-----------+
+ | if | ietf-interfaces | [RFC8343] |
+ +----------+--------------------------+-----------+
+ | sys | ietf-system | [RFC7317] |
+ +----------+--------------------------+-----------+
+ | acl | ietf-access-control-list | [RFC8519] |
+ +----------+--------------------------+-----------+
+ | rt-types | ietf-routing-types | [RFC8294] |
+ +----------+--------------------------+-----------+
+ | nacm | ietf-netconf-acm | [RFC8341] |
+ +----------+--------------------------+-----------+
+
+ Table 1: Prefixes and Corresponding YANG Modules
+
+1.5. References in the Model
+
+ The following documents are referenced in the model defined in this
+ document.
+
+ +=======================================+===========+
+ | Title | Reference |
+ +=======================================+===========+
+ | Network Time Protocol Version 4: | [RFC5905] |
+ | Protocol and Algorithms Specification | |
+ +---------------------------------------+-----------+
+ | Common YANG Data Types | [RFC6991] |
+ +---------------------------------------+-----------+
+ | A YANG Data Model for System | [RFC7317] |
+ | Management | |
+ +---------------------------------------+-----------+
+ | Common YANG Data Types for the | [RFC8294] |
+ | Routing Area | |
+ +---------------------------------------+-----------+
+ | Network Configuration Access Control | [RFC8341] |
+ | Model | |
+ +---------------------------------------+-----------+
+ | A YANG Data Model for Interface | [RFC8343] |
+ | Management | |
+ +---------------------------------------+-----------+
+ | YANG Data Model for Network Access | [RFC8519] |
+ | Control Lists (ACLs) | |
+ +---------------------------------------+-----------+
+ | Message Authentication Code for the | [RFC8573] |
+ | Network Time Protocol | |
+ +---------------------------------------+-----------+
+ | The AES-CMAC Algorithm | [RFC4493] |
+ +---------------------------------------+-----------+
+ | The MD5 Message-Digest Algorithm | [RFC1321] |
+ +---------------------------------------+-----------+
+ | US Secure Hash Algorithm 1 (SHA1) | [RFC3174] |
+ +---------------------------------------+-----------+
+ | FIPS 180-4: Secure Hash Standard | [SHS] |
+ | (SHS) | |
+ +---------------------------------------+-----------+
+
+ Table 2: References in the YANG Module
+
+1.6. Requirements Language
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
+ "OPTIONAL" in this document are to be interpreted as described in
+ BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
+ capitals, as shown here.
+
+2. NTP Data Model
+
+ This document defines the YANG module "ietf-ntp", which has the
+ following condensed structure:
+
+ module: ietf-ntp
+ +--rw ntp!
+ +--rw port? inet:port-number {ntp-port}?
+ +--rw refclock-master!
+ | +--rw master-stratum? ntp-stratum
+ +--rw authentication {authentication}?
+ | +--rw auth-enabled? boolean
+ | +--rw authentication-keys* [keyid]
+ | +--rw keyid uint32
+ | +--...
+ +--rw access-rules {access-rules}?
+ | +--rw access-rule* [access-mode]
+ | +--rw access-mode identityref
+ | +--rw acl? -> /acl:acls/acl/name
+ +--ro clock-state
+ | +--ro system-status
+ | +--ro clock-state identityref
+ | +--ro clock-stratum ntp-stratum
+ | +--ro clock-refid refid
+ | +--...
+ +--rw unicast-configuration* [address type]
+ | {unicast-configuration}?
+ | +--rw address inet:ip-address
+ | +--rw type identityref
+ | +--...
+ +--rw associations
+ | +--ro association* [address local-mode isconfigured]
+ | +--ro address inet:ip-address
+ | +--ro local-mode identityref
+ | +--ro isconfigured boolean
+ | +--...
+ | +--ro ntp-statistics
+ | +--...
+ +--rw interfaces
+ | +--rw interface* [name]
+ | +--rw name if:interface-ref
+ | +--rw broadcast-server! {broadcast-server}?
+ | | +--...
+ | +--rw broadcast-client! {broadcast-client}?
+ | +--rw multicast-server* [address] {multicast-server}?
+ | | +--rw address
+ | | | rt-types:ip-multicast-group-address
+ | | +--...
+ | +--rw multicast-client* [address] {multicast-client}?
+ | | +--rw address rt-types:ip-multicast-group-address
+ | +--rw manycast-server* [address] {manycast-server}?
+ | | +--rw address rt-types:ip-multicast-group-address
+ | +--rw manycast-client* [address] {manycast-client}?
+ | +--rw address
+ | | rt-types:ip-multicast-group-address
+ | +--...
+ +--ro ntp-statistics
+ +--...
+
+ rpcs:
+ +---x statistics-reset
+ +---w input
+ +---w (association-or-all)?
+ +--:(association)
+ | +---w associations-address?
+ | | -> /ntp/associations/association/address
+ | +---w associations-local-mode?
+ | | -> /ntp/associations/association/local-mode
+ | +---w associations-isconfigured?
+ | -> /ntp/associations/association/isconfigured
+ +--:(all)
+
+ The full data model tree for the YANG module "ietf-ntp" is in
+ Appendix A.
+
+ This data model defines one top-level container that includes both
+ the NTP configuration and the NTP running state including access
+ rules, authentication, associations, unicast configurations,
+ interfaces, system status, and associations.
+
+3. Relationship with NTPv4-MIB
+
+ If the device implements the NTPv4-MIB [RFC5907], data nodes from the
+ YANG module can be mapped to table entries in the NTPv4-MIB.
+
+ The following tables list the YANG data nodes with corresponding
+ objects in the NTPv4-MIB.
+
+ +===========================+====================================+
+ | YANG Data Nodes in /ntp/ | NTPv4-MIB Objects |
+ | clock-state/system-status | |
+ +===========================+====================================+
+ | clock-state | ntpEntStatusCurrentMode |
+ +---------------------------+------------------------------------+
+ | clock-stratum | ntpEntStatusStratum |
+ +---------------------------+------------------------------------+
+ | clock-refid | ntpEntStatusActiveRefSourceId |
+ | | ntpEntStatusActiveRefSourceName |
+ +---------------------------+------------------------------------+
+ | clock-precision | ntpEntTimePrecision |
+ +---------------------------+------------------------------------+
+ | clock-offset | ntpEntStatusActiveOffset |
+ +---------------------------+------------------------------------+
+ | root-dispersion | ntpEntStatusDispersion |
+ +---------------------------+------------------------------------+
+
+ Table 3: YANG NTP Data Nodes in /ntp/clock-state/system-status
+ and Related NTPv4-MIB Objects
+
+
+ +=======================================+===========================+
+ | YANG Data Nodes in | NTPv4-MIB Objects |
+ | /ntp/associations/ | |
+ +=======================================+===========================+
+ | address | ntpAssocAddressType |
+ | | ntpAssocAddress |
+ +---------------------------------------+---------------------------+
+ | stratum | ntpAssocStratum |
+ +---------------------------------------+---------------------------+
+ | refid | ntpAssocRefId |
+ +---------------------------------------+---------------------------+
+ | offset | ntpAssocOffset |
+ +---------------------------------------+---------------------------+
+ | delay | ntpAssocStatusDelay |
+ +---------------------------------------+---------------------------+
+ | dispersion | ntpAssocStatusDispersion |
+ +---------------------------------------+---------------------------+
+ | ntp-statistics/ | ntpAssocStatOutPkts |
+ | packet-sent | |
+ +---------------------------------------+---------------------------+
+ | ntp-statistics/ | ntpAssocStatInPkts |
+ | packet-received | |
+ +---------------------------------------+---------------------------+
+ | ntp-statistics/ | ntpAssocStatProtocolError |
+ | packet-dropped | |
+ +---------------------------------------+---------------------------+
+
+ Table 4: YANG NTP Data Nodes in /ntp/associations/ and Related
+ NTPv4-MIB Objects
+
+4. Relationship with RFC 7317
+
+ This section describes the relationship with definition of NTP in
+ Section 3.2 (System Time Management) of [RFC7317]. YANG data nodes
+ in /ntp/ also support per-interface configuration, which is not
+ supported in /system/ntp. If the YANG data model defined in this
+ document is implemented, then /system/ntp SHOULD NOT be used and MUST
+ be ignored.
+
+ +==========================+================================+
+ | YANG Data Nodes in /ntp/ | YANG Data Nodes in /system/ntp |
+ +==========================+================================+
+ | ntp! | enabled |
+ +--------------------------+--------------------------------+
+ | unicast-configuration | server |
+ | | server/name |
+ +--------------------------+--------------------------------+
+ | unicast-configuration/ | server/transport/udp/address |
+ | address | |
+ +--------------------------+--------------------------------+
+ | unicast-configuration/ | server/transport/udp/port |
+ | port | |
+ +--------------------------+--------------------------------+
+ | unicast-configuration/ | server/association-type |
+ | type | |
+ +--------------------------+--------------------------------+
+ | unicast-configuration/ | server/iburst |
+ | iburst | |
+ +--------------------------+--------------------------------+
+ | unicast-configuration/ | server/prefer |
+ | prefer | |
+ +--------------------------+--------------------------------+
+
+ Table 5: YANG NTP Configuration Data Nodes and
+ Counterparts from RFC 7317
+
+5. Access Rules
+
+ The access rules in this section refer to the on-the-wire access
+ control to the NTP service and are completely independent of any
+ management API access control, e.g., NETCONF Access Control Model
+ (NACM) [RFC8341].
+
+ An Access Control List (ACL) is one of the basic elements used to
+ configure device-forwarding behavior. An ACL is a user-ordered set
+ of rules that is used to filter traffic on a networking device.
+
+ As per [RFC1305] (for NTPv3) and [RFC5905] (for NTPv4), NTP could
+ include an access-control feature that prevents unauthorized access
+ and that controls which peers are allowed to update the local clock.
+ Further, it is useful to differentiate between the various kinds of
+ access and attach a different acl-rule to each. For this, the YANG
+ module allows such configuration via /ntp/access-rules. The access-
+ rule itself is configured via [RFC8519].
+
+ The following access-modes are supported:
+
+ Peer: Permit others to synchronize their time with the NTP entity or
+ vice versa. NTP control queries are also accepted.
+
+ Server: Permit others to synchronize their time with the NTP entity,
+ but vice versa is not supported. NTP control queries are
+ accepted.
+
+ Server-only: Permit others to synchronize their time with the NTP
+ entity, but vice versa is not supported. NTP control queries are
+ not accepted.
+
+ Query-only: Only control queries are accepted.
+
+ Query-only is the most restricted whereas the peer is the full access
+ authority. The ability to give different ACL rules for different
+ access-modes allows for a greater control by the operator.
+
+6. Key Management
+
+ As per [RFC1305] (for NTPv3) and [RFC5905] (for NTPv4), when
+ authentication is enabled, NTP employs a crypto-checksum, computed by
+ the sender and checked by the receiver, together with a set of
+ predistributed algorithms, and cryptographic keys indexed by a key
+ identifier included in the NTP message. This keyid is a 32-bit
+ unsigned integer that MUST be configured on the NTP peers before the
+ authentication can be used. For this reason, this YANG module allows
+ such configuration via /ntp/authentication/authentication-keys/.
+ Further at the time of configuration of NTP association (for example,
+ unicast server), the keyid is specified.
+
+ The 'nacm:default-deny-all' is used to prevent retrieval of the
+ actual key information after it is set.
+
+7. NTP Version
+
+ This YANG data model allows a version to be configured for the NTP
+ association, i.e., an operator can control the use of NTPv3 [RFC1305]
+ or NTPv4 [RFC5905] for each association it forms. This allows
+ backward compatibility with a legacy system. Note that NTPv3
+ [RFC1305] is obsoleted by NTPv4 [RFC5905].
+
+8. NTP YANG Module
+
+ <CODE BEGINS> file "ietf-ntp@2022-07-05.yang"
+ module ietf-ntp {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-ntp";
+ prefix ntp;
+
+ import ietf-yang-types {
+ prefix yang;
+ reference
+ "RFC 6991: Common YANG Data Types";
+ }
+ import ietf-inet-types {
+ prefix inet;
+ reference
+ "RFC 6991: Common YANG Data Types";
+ }
+ import ietf-interfaces {
+ prefix if;
+ reference
+ "RFC 8343: A YANG Data Model for Interface Management";
+ }
+ import ietf-system {
+ prefix sys;
+ reference
+ "RFC 7317: A YANG Data Model for System Management";
+ }
+ import ietf-access-control-list {
+ prefix acl;
+ reference
+ "RFC 8519: YANG Data Model for Network Access Control
+ Lists (ACLs)";
+ }
+ import ietf-routing-types {
+ prefix rt-types;
+ reference
+ "RFC 8294: Common YANG Data Types for the Routing Area";
+ }
+ import ietf-netconf-acm {
+ prefix nacm;
+ reference
+ "RFC 8341: Network Configuration Access Control Model";
+ }
+
+ organization
+ "IETF NTP (Network Time Protocol) Working Group";
+ contact
+ "WG Web: <https://datatracker.ietf.org/wg/ntp/>
+ WG List: <mailto: ntp@ietf.org
+ Editor: Dhruv Dhody
+ <mailto:dhruv.ietf@gmail.com>
+ Editor: Ankit Kumar Sinha
+ <mailto:ankit.ietf@gmail.com>";
+ description
+ "This document defines a YANG data model that can be used
+ to configure and manage Network Time Protocol (NTP) version 4.
+ It can also be used to configure and manage version 3.
+ The data model includes configuration data and state data.
+
+ The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
+ NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
+ 'MAY', and 'OPTIONAL' in this document are to be interpreted as
+ described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
+ they appear in all capitals, as shown here.
+
+ Copyright (c) 2022 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Revised BSD License
+ set forth in Section 4.c of the IETF Trust's Legal Provisions
+ Relating to IETF Documents
+ (https://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 9249; see the
+ RFC itself for full legal notices.";
+
+ revision 2022-07-05 {
+ description
+ "Initial revision";
+ reference
+ "RFC 9249: A YANG Data Model for NTP";
+ }
+
+ /* Typedef Definitions */
+
+ typedef ntp-stratum {
+ type uint8 {
+ range "1..16";
+ }
+ description
+ "The level of each server in the hierarchy is defined by
+ a stratum. Primary servers are assigned with stratum
+ one; secondary servers at each lower level are assigned with
+ one stratum greater than the preceding level.";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 3";
+ }
+
+ typedef ntp-version {
+ type uint8 {
+ range "3..max";
+ }
+ default "4";
+ description
+ "The current NTP version supported by the corresponding
+ association";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 1";
+ }
+
+ typedef refid {
+ type union {
+ type inet:ipv4-address;
+ type uint32;
+ type string {
+ length "4";
+ }
+ }
+ description
+ "A code identifying the particular server or reference
+ clock. The interpretation depends upon stratum. It
+ could be an IPv4 address, the first 32 bits of the MD5 hash
+ of the IPv6 address, or a string for the Reference Identifier
+ and kiss codes. Some examples:
+
+ -- a refclock ID like '127.127.1.0' for local clock sync
+
+ -- uni/multi/broadcast associations for IPv4 will look like
+ '203.0.113.1' and '0x4321FEDC' for IPv6
+
+ -- sync with a primary source will look like 'DCN', 'NIST',
+ 'ATOM'
+
+ -- kiss codes will look like 'AUTH', 'DROP', or 'RATE'
+
+ Note that the use of an MD5 hash for IPv6 addresses is not
+ for cryptographic purposes.";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 7.3";
+ }
+
+ typedef ntp-date-and-time {
+ type union {
+ type yang:date-and-time;
+ type uint8;
+ }
+ description
+ "Follows the date-and-time format when valid values exist.
+ Otherwise, allows for setting a special value such as
+ zero.";
+ reference
+ "RFC 6991: Common YANG Data Types";
+ }
+
+ typedef log2seconds {
+ type int8;
+ description
+ "An 8-bit signed integer that represents signed log2
+ seconds.";
+ }
+
+ /* features */
+
+ feature ntp-port {
+ description
+ "Support for NTP port configuration";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 7.2";
+ }
+
+ feature authentication {
+ description
+ "Support for NTP symmetric key authentication";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 7.3";
+ }
+
+ feature deprecated {
+ description
+ "Support deprecated MD5-based authentication (RFC 8573),
+ SHA-1, or any other deprecated authentication mechanism.
+ It is enabled to support legacy compatibility when secure
+ cryptographic algorithms are not available to use.
+ It is also used to configure keystrings in ASCII format.";
+ reference
+ "RFC 1321: The MD5 Message-Digest Algorithm,
+ RFC 3174: US Secure Hash Algorithm 1 (SHA1),
+ SHS: Secure Hash Standard (SHS) (FIPS PUB 180-4)";
+ }
+
+ feature hex-key-string {
+ description
+ "Support hexadecimal key string";
+ }
+
+ feature access-rules {
+ description
+ "Support for NTP access control";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 9.2";
+ }
+
+ feature unicast-configuration {
+ description
+ "Support for NTP client/server or active/passive
+ in unicast";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 3";
+ }
+
+ feature broadcast-server {
+ description
+ "Support for broadcast server";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 3";
+ }
+
+ feature broadcast-client {
+ description
+ "Support for broadcast client";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 3";
+ }
+
+ feature multicast-server {
+ description
+ "Support for multicast server";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 3.1";
+ }
+ feature multicast-client {
+ description
+ "Support for multicast client";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 3.1";
+ }
+
+ feature manycast-server {
+ description
+ "Support for manycast server";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 3.1";
+ }
+
+ feature manycast-client {
+ description
+ "Support for manycast client";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 3.1";
+ }
+
+ /* Identity */
+ /* unicast-configurations types */
+
+ identity unicast-configuration-type {
+ if-feature "unicast-configuration";
+ description
+ "This defines NTP unicast mode of operation as used
+ for unicast-configurations.";
+ }
+
+ identity uc-server {
+ if-feature "unicast-configuration";
+ base unicast-configuration-type;
+ description
+ "Use client association mode where the unicast server
+ address is configured.";
+ }
+
+ identity uc-peer {
+ if-feature "unicast-configuration";
+ base unicast-configuration-type;
+ description
+ "Use symmetric active association mode where the peer
+ address is configured.";
+ }
+
+ /* association-modes */
+
+ identity association-mode {
+ description
+ "The NTP association modes";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 3";
+ }
+
+ identity active {
+ base association-mode;
+ description
+ "Use symmetric active association mode (mode 1).
+ This device may synchronize with its NTP peer
+ or provide synchronization to a configured NTP peer.";
+ }
+
+ identity passive {
+ base association-mode;
+ description
+ "Use symmetric passive association mode (mode 2).
+ This device has learned this association dynamically.
+ This device may synchronize with its NTP peer.";
+ }
+
+ identity client {
+ base association-mode;
+ description
+ "Use client association mode (mode 3).
+ This device will not provide synchronization
+ to the configured NTP server.";
+ }
+
+ identity server {
+ base association-mode;
+ description
+ "Use server association mode (mode 4).
+ This device will provide synchronization to
+ NTP clients.";
+ }
+
+ identity broadcast-server {
+ base association-mode;
+ description
+ "Use broadcast server mode (mode 5).
+ This mode defines that it's either working
+ as a broadcast server or a multicast server.";
+ }
+
+ identity broadcast-client {
+ base association-mode;
+ description
+ "This mode defines that it's either working
+ as a broadcast client (mode 6) or a multicast client.";
+ }
+
+ /* access-mode */
+
+ identity access-mode {
+ if-feature "access-rules";
+ description
+ "This defines NTP access-modes. These identify
+ how the ACL is applied with NTP.";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 9.2";
+ }
+
+ identity peer-access-mode {
+ if-feature "access-rules";
+ base access-mode;
+ description
+ "Permit others to synchronize their time with this NTP
+ or vice versa.
+ NTP control queries are also accepted. This enables
+ full access authority.";
+ }
+
+ identity server-access-mode {
+ if-feature "access-rules";
+ base access-mode;
+ description
+ "Permit others to synchronize their time with this NTP
+ entity, but vice versa is not supported. NTP control
+ queries are accepted.";
+ }
+
+ identity server-only-access-mode {
+ if-feature "access-rules";
+ base access-mode;
+ description
+ "Permit others to synchronize their time with this NTP
+ entity, but vice versa is not supported. NTP control
+ queries are not accepted.";
+ }
+
+ identity query-only-access-mode {
+ if-feature "access-rules";
+ base access-mode;
+ description
+ "Only control queries are accepted.";
+ }
+
+ /* clock-state */
+
+ identity clock-state {
+ description
+ "This defines NTP clock status at a high level.";
+ }
+
+ identity synchronized {
+ base clock-state;
+ description
+ "Indicates that the local clock has been synchronized with
+ an NTP server or the reference clock.";
+ }
+
+ identity unsynchronized {
+ base clock-state;
+ description
+ "Indicates that the local clock has not been synchronized
+ with any NTP server.";
+ }
+
+ /* ntp-sync-state */
+
+ identity ntp-sync-state {
+ description
+ "This defines NTP clock sync state at a more granular
+ level. Referred to as 'Clock state definitions' in
+ RFC 5905.";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Appendix A.1.1";
+ }
+
+ identity clock-never-set {
+ base ntp-sync-state;
+ description
+ "Indicates the clock was never set.";
+ }
+
+ identity freq-set-by-cfg {
+ base ntp-sync-state;
+ description
+ "Indicates the clock frequency is set by
+ NTP configuration or file.";
+ }
+
+ identity spike {
+ base ntp-sync-state;
+ description
+ "Indicates a spike is detected.";
+ }
+
+ identity freq {
+ base ntp-sync-state;
+ description
+ "Indicates the frequency mode.";
+ }
+
+ identity clock-synchronized {
+ base ntp-sync-state;
+ description
+ "Indicates that the clock is synchronized.";
+ }
+
+ /* crypto-algorithm */
+
+ identity crypto-algorithm {
+ description
+ "Base identity of cryptographic algorithm options.";
+ }
+
+ identity md5 {
+ if-feature "deprecated";
+ base crypto-algorithm;
+ description
+ "The MD5 algorithm. Note that RFC 8573
+ deprecates the use of MD5-based authentication.";
+ reference
+ "RFC 1321: The MD5 Message-Digest Algorithm";
+ }
+
+ identity sha-1 {
+ if-feature "deprecated";
+ base crypto-algorithm;
+ description
+ "The SHA-1 algorithm";
+ reference
+ "RFC 3174: US Secure Hash Algorithm 1 (SHA1)";
+ }
+
+ identity hmac-sha-1 {
+ if-feature "deprecated";
+ base crypto-algorithm;
+ description
+ "HMAC-SHA-1 authentication algorithm";
+ reference
+ "SHS: Secure Hash Standard (SHS) (FIPS PUB 180-4)";
+ }
+
+ identity hmac-sha1-12 {
+ if-feature "deprecated";
+ base crypto-algorithm;
+ description
+ "The HMAC-SHA1-12 algorithm";
+ }
+
+ identity hmac-sha-256 {
+ description
+ "HMAC-SHA-256 authentication algorithm";
+ reference
+ "SHS: Secure Hash Standard (SHS) (FIPS PUB 180-4)";
+ }
+
+ identity hmac-sha-384 {
+ description
+ "HMAC-SHA-384 authentication algorithm";
+ reference
+ "SHS: Secure Hash Standard (SHS) (FIPS PUB 180-4)";
+ }
+
+ identity hmac-sha-512 {
+ description
+ "HMAC-SHA-512 authentication algorithm";
+ reference
+ "SHS: Secure Hash Standard (SHS) (FIPS PUB 180-4)";
+ }
+
+ identity aes-cmac {
+ base crypto-algorithm;
+ description
+ "The AES-CMAC algorithm -- required by
+ RFC 8573 for MAC for the NTP.";
+ reference
+ "RFC 4493: The AES-CMAC Algorithm,
+ RFC 8573: Message Authentication Code for the Network
+ Time Protocol";
+ }
+
+ /* Groupings */
+
+ grouping key {
+ description
+ "The key";
+ nacm:default-deny-all;
+ choice key-string-style {
+ description
+ "Key string styles";
+ case keystring {
+ leaf keystring {
+ if-feature "deprecated";
+ type string;
+ description
+ "Key string in ASCII format";
+ }
+ }
+ case hexadecimal {
+ if-feature "hex-key-string";
+ leaf hexadecimal-string {
+ type yang:hex-string;
+ description
+ "Key in hexadecimal string format. When compared
+ to ASCII, specification in hexadecimal affords
+ greater key entropy with the same number of
+ internal key-string octets. Additionally, it
+ discourages use of well-known words or
+ numbers.";
+ }
+ }
+ }
+ }
+
+ grouping authentication-key {
+ description
+ "To define an authentication key for an NTP
+ time source.";
+ leaf keyid {
+ type uint32 {
+ range "1..max";
+ }
+ description
+ "Authentication key identifier";
+ }
+ leaf algorithm {
+ type identityref {
+ base crypto-algorithm;
+ }
+ description
+ "Authentication algorithm. Note that RFC 8573
+ deprecates the use of MD5-based authentication
+ and recommends AES-CMAC.";
+ }
+ container key {
+ uses key;
+ description
+ "The key. Note that RFC 8573 deprecates the use
+ of MD5-based authentication.";
+ }
+ leaf istrusted {
+ type boolean;
+ description
+ "Keyid is trusted or not";
+ }
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Sections 7.3 and 7.4";
+ }
+
+ grouping authentication {
+ description
+ "Authentication";
+ choice authentication-type {
+ description
+ "Type of authentication";
+ case symmetric-key {
+ leaf keyid {
+ type leafref {
+ path "/ntp:ntp/ntp:authentication/"
+ + "ntp:authentication-keys/ntp:keyid";
+ }
+ description
+ "Authentication key id referenced in this
+ association.";
+ }
+ }
+ }
+ }
+
+ grouping statistics {
+ description
+ "NTP packet statistic";
+ leaf discontinuity-time {
+ type ntp-date-and-time;
+ description
+ "The time on the most recent occasion at which any one or
+ more of these NTP counters suffered a discontinuity. If
+ no such discontinuities have occurred, then this node
+ contains the time the NTP association was
+ (re-)initialized.";
+ }
+ leaf packet-sent {
+ type yang:counter32;
+ description
+ "The total number of NTP packets delivered to the
+ transport service by this NTP entity for this
+ association.
+ Discontinuities in the value of this counter can occur
+ upon cold start, reinitialization of the NTP entity or the
+ management system, and at other times.";
+ }
+ leaf packet-sent-fail {
+ type yang:counter32;
+ description
+ "The number of times NTP packet sending failed.";
+ }
+ leaf packet-received {
+ type yang:counter32;
+ description
+ "The total number of NTP packets delivered to the
+ NTP entity from this association.
+ Discontinuities in the value of this counter can occur
+ upon cold start, reinitialization of the NTP entity or the
+ management system, and at other times.";
+ }
+ leaf packet-dropped {
+ type yang:counter32;
+ description
+ "The total number of NTP packets that were delivered
+ to this NTP entity from this association and that this
+ entity was not able to process due to an NTP error.
+ Discontinuities in the value of this counter can occur
+ upon cold start, reinitialization of the NTP entity or the
+ management system, and at other times.";
+ }
+ }
+
+ grouping common-attributes {
+ description
+ "NTP common attributes for configuration";
+ leaf minpoll {
+ type log2seconds;
+ default "6";
+ description
+ "The minimum poll interval used in this association";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 7.2";
+ }
+ leaf maxpoll {
+ type log2seconds;
+ default "10";
+ description
+ "The maximum poll interval used in this association";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 7.2";
+ }
+ leaf port {
+ if-feature "ntp-port";
+ type inet:port-number {
+ range "123 | 1024..max";
+ }
+ default "123";
+ description
+ "Specify the port used to send NTP packets.";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 7.2";
+ }
+ leaf version {
+ type ntp-version;
+ description
+ "NTP version";
+ }
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification";
+ }
+
+ grouping association-ref {
+ description
+ "Reference to NTP association mode";
+ leaf associations-address {
+ type leafref {
+ path "/ntp:ntp/ntp:associations/ntp:association"
+ + "/ntp:address";
+ }
+ description
+ "Indicates the association's address
+ that results in clock synchronization.";
+ }
+ leaf associations-local-mode {
+ type leafref {
+ path "/ntp:ntp/ntp:associations/ntp:association"
+ + "/ntp:local-mode";
+ }
+ description
+ "Indicates the association's local-mode
+ that results in clock synchronization.";
+ }
+ leaf associations-isconfigured {
+ type leafref {
+ path "/ntp:ntp/ntp:associations/ntp:association/"
+ + "ntp:isconfigured";
+ }
+ description
+ "Indicates if the association (that resulted in the
+ clock synchronization) is explicitly configured.";
+ }
+ }
+
+ container ntp {
+ when 'false() = boolean(/sys:system/sys:ntp)' {
+ description
+ "Applicable when the system /sys/ntp/ is not used.";
+ }
+ presence "NTP is enabled and system should attempt to
+ synchronize the system clock with an NTP server
+ from the 'ntp/associations' list.";
+ description
+ "Configuration parameters for NTP";
+ leaf port {
+ if-feature "ntp-port";
+ type inet:port-number {
+ range "123 | 1024..max";
+ }
+ default "123";
+ description
+ "Specify the port used to send and receive NTP packets.";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 7.2";
+ }
+ container refclock-master {
+ presence "NTP master clock is enabled.";
+ description
+ "Configures the local clock of this device as NTP server.";
+ leaf master-stratum {
+ type ntp-stratum;
+ default "16";
+ description
+ "Stratum level from which NTP clients get their time
+ synchronized.";
+ }
+ }
+ container authentication {
+ if-feature "authentication";
+ description
+ "Configuration of authentication";
+ leaf auth-enabled {
+ type boolean;
+ default "false";
+ description
+ "Controls whether NTP authentication is enabled
+ or disabled on this device.";
+ }
+ list authentication-keys {
+ key "keyid";
+ uses authentication-key;
+ description
+ "List of authentication keys";
+ }
+ }
+ container access-rules {
+ if-feature "access-rules";
+ description
+ "Configuration to control access to NTP service
+ by using the NTP access-group feature.
+ The access-mode identifies how the ACL is
+ applied with NTP.";
+ list access-rule {
+ key "access-mode";
+ description
+ "List of access rules";
+ leaf access-mode {
+ type identityref {
+ base access-mode;
+ }
+ description
+ "The NTP access-mode. Some of the possible values
+ include peer, server, synchronization, query,
+ etc.";
+ }
+ leaf acl {
+ type leafref {
+ path "/acl:acls/acl:acl/acl:name";
+ }
+ description
+ "Control access configuration to be used.";
+ }
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 9.2";
+ }
+ }
+ container clock-state {
+ config false;
+ description
+ "Clock operational state of the NTP";
+ container system-status {
+ description
+ "System status of NTP";
+ leaf clock-state {
+ type identityref {
+ base clock-state;
+ }
+ mandatory true;
+ description
+ "The state of the system clock. Some of the possible
+ values include synchronized and unsynchronized.";
+ }
+ leaf clock-stratum {
+ type ntp-stratum;
+ mandatory true;
+ description
+ "The NTP entity's own stratum value. Should be one
+ greater than the preceding level.
+ 16 if unsynchronized.";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 3";
+ }
+ leaf clock-refid {
+ type refid;
+ mandatory true;
+ description
+ "A code identifying the particular server or reference
+ clock. The interpretation depends upon stratum. It
+ could be an IPv4 address, the first 32 bits of the MD5
+ hash of the IPv6 address, or a string for the Reference
+ Identifier and kiss codes. Some examples:
+
+ -- a refclock ID like '127.127.1.0' for local clock sync
+
+ -- uni/multi/broadcast associations for IPv4 will look
+ like '203.0.113.1' and '0x4321FEDC' for IPv6
+
+ -- sync with primary source will look like 'DCN',
+ 'NIST', 'ATOM'
+
+ -- kiss codes will look like 'AUTH', 'DROP', 'RATE'
+
+ Note that the use of MD5 hash for IPv6 address is not
+ for cryptographic purposes.";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 7.3";
+ }
+ uses association-ref {
+ description
+ "Reference to association";
+ }
+ leaf nominal-freq {
+ type decimal64 {
+ fraction-digits 4;
+ }
+ units "Hz";
+ mandatory true;
+ description
+ "The nominal frequency of the local clock. An ideal
+ frequency with zero uncertainty.";
+ }
+ leaf actual-freq {
+ type decimal64 {
+ fraction-digits 4;
+ }
+ units "Hz";
+ mandatory true;
+ description
+ "The actual frequency of the local clock";
+ }
+ leaf clock-precision {
+ type log2seconds;
+ mandatory true;
+ description
+ "Clock precision of this system in signed integer format,
+ in log 2 seconds - (prec=2^(-n)). A value of 5 would
+ mean 2^-5 = 0.03125 seconds = 31.25 ms.";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 7.3";
+ }
+ leaf clock-offset {
+ type decimal64 {
+ fraction-digits 3;
+ }
+ units "milliseconds";
+ description
+ "The signed time offset to the current selected reference
+ time source, e.g., '0.032ms' or '1.232ms'. The negative
+ value indicates that the local clock is behind the
+ current selected reference time source.";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 9.1";
+ }
+ leaf root-delay {
+ type decimal64 {
+ fraction-digits 3;
+ }
+ units "milliseconds";
+ description
+ "Total delay along the path to the root clock";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Sections 4 and 7.3";
+ }
+ leaf root-dispersion {
+ type decimal64 {
+ fraction-digits 3;
+ }
+ units "milliseconds";
+ description
+ "The dispersion to the local clock
+ and the root clock, e.g., '6.927ms'.";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Sections 4, 7.3, and 10";
+ }
+ leaf reference-time {
+ type ntp-date-and-time;
+ description
+ "The reference timestamp. Time when the system clock was
+ last set or corrected.";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 7.3";
+ }
+ leaf sync-state {
+ type identityref {
+ base ntp-sync-state;
+ }
+ mandatory true;
+ description
+ "The synchronization status of the local clock. Referred
+ to as 'Clock state definitions' in RFC 5905.";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Appendix A.1.1";
+ }
+ }
+ }
+ list unicast-configuration {
+ if-feature "unicast-configuration";
+ key "address type";
+ description
+ "List of NTP unicast-configurations";
+ leaf address {
+ type inet:ip-address;
+ description
+ "Address of this association";
+ }
+ leaf type {
+ type identityref {
+ base unicast-configuration-type;
+ }
+ description
+ "The unicast configuration type, for example,
+ unicast-server";
+ }
+ container authentication {
+ if-feature "authentication";
+ description
+ "Authentication used for this association";
+ uses authentication;
+ }
+ leaf prefer {
+ type boolean;
+ default "false";
+ description
+ "Whether or not this association is preferred";
+ }
+ leaf burst {
+ type boolean;
+ default "false";
+ description
+ "If set, a series of packets are sent instead of a single
+ packet within each synchronization interval to achieve
+ faster synchronization.";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol
+ and Algorithms Specification, Section 13.1";
+ }
+ leaf iburst {
+ type boolean;
+ default "false";
+ description
+ "If set, a series of packets are sent instead of a single
+ packet within the initial synchronization interval to
+ achieve faster initial synchronization.";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol
+ and Algorithms Specification, Section 13.1";
+ }
+ leaf source {
+ type if:interface-ref;
+ description
+ "The interface whose IP address is used by this association
+ as the source address.";
+ }
+ uses common-attributes {
+ description
+ "Common attributes like port, version, and min and max
+ poll.";
+ }
+ }
+ container associations {
+ description
+ "Association parameters";
+ list association {
+ key "address local-mode isconfigured";
+ config false;
+ description
+ "List of NTP associations. Here address, local-mode,
+ and isconfigured are required to uniquely identify
+ a particular association. Let's take the following
+ examples:
+
+ 1) If RT1 is acting as broadcast server
+ and RT2 is acting as broadcast client, then RT2
+ will form a dynamic association with the address as
+ RT1, local-mode as client, and isconfigured as false.
+
+ 2) When RT2 is configured with unicast server RT1,
+ then RT2 will form an association with the address as
+ RT1, local-mode as client, and isconfigured as true.
+
+ Thus, all three leaves are needed as key to uniquely
+ identify the association.";
+ leaf address {
+ type inet:ip-address;
+ description
+ "The remote address of this association. Represents the
+ IP address of a unicast/multicast/broadcast address.";
+ }
+ leaf local-mode {
+ type identityref {
+ base association-mode;
+ }
+ description
+ "Local-mode of this NTP association";
+ }
+ leaf isconfigured {
+ type boolean;
+ description
+ "Indicates if this association is configured (true) or
+ dynamically learned (false).";
+ }
+ leaf stratum {
+ type ntp-stratum;
+ description
+ "The association stratum value";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 3";
+ }
+ leaf refid {
+ type refid;
+ description
+ "A code identifying the particular server or reference
+ clock. The interpretation depends upon stratum. It
+ could be an IPv4 address or first 32 bits of the MD5
+ hash of the IPv6 address or a string for the Reference
+ Identifier and kiss codes. Some examples:
+
+ -- a refclock ID like '127.127.1.0' for local clock sync
+
+ -- uni/multi/broadcast associations for IPv4 will look
+ like '203.0.113.1' and '0x4321FEDC' for IPv6
+
+ -- sync with primary source will look like 'DCN',
+ 'NIST', or 'ATOM'
+
+ -- kiss codes will look like 'AUTH', 'DROP', or 'RATE'
+
+ Note that the use of an MD5 hash for IPv6 address is
+ not for cryptographic purposes.";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 7.3";
+ }
+ leaf authentication {
+ if-feature "authentication";
+ type leafref {
+ path "/ntp:ntp/ntp:authentication/"
+ + "ntp:authentication-keys/ntp:keyid";
+ }
+ description
+ "Authentication key used for this association";
+ }
+ leaf prefer {
+ type boolean;
+ default "false";
+ description
+ "Indicates if this association is preferred";
+ }
+ leaf peer-interface {
+ type if:interface-ref;
+ description
+ "The interface that is used for communication";
+ }
+ uses common-attributes {
+ description
+ "Common attributes like port, version, and min and
+ max poll";
+ }
+ leaf reach {
+ type uint8;
+ description
+ "An 8-bit shift register that tracks packet
+ generation and receipt. It is used to determine
+ whether the server is reachable and the data are
+ fresh.";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Sections 9.2 and 13";
+ }
+ leaf unreach {
+ type uint8;
+ units "seconds";
+ description
+ "A count of how long in second the server has been
+ unreachable, i.e., the reach value has been zero.";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Sections 9.2 and 13";
+ }
+ leaf poll {
+ type log2seconds;
+ description
+ "The polling interval for current association in signed
+ log2 seconds.";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 7.3";
+ }
+ leaf now {
+ type uint32;
+ units "seconds";
+ description
+ "The time since the last NTP packet was
+ received or last synchronized.";
+ }
+ leaf offset {
+ type decimal64 {
+ fraction-digits 3;
+ }
+ units "milliseconds";
+ description
+ "The signed offset between the local clock
+ and the peer clock, e.g., '0.032ms' or '1.232ms'. The
+ negative value indicates that the local clock is behind
+ the peer.";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 8";
+ }
+ leaf delay {
+ type decimal64 {
+ fraction-digits 3;
+ }
+ units "milliseconds";
+ description
+ "The network delay between the local clock
+ and the peer clock";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 8";
+ }
+ leaf dispersion {
+ type decimal64 {
+ fraction-digits 3;
+ }
+ units "milliseconds";
+ description
+ "The root dispersion between the local clock
+ and the peer clock.";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 10";
+ }
+ leaf originate-time {
+ type ntp-date-and-time;
+ description
+ "This is the local time, in timestamp format,
+ when the latest NTP packet was sent to the peer
+ (called T1).";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol and
+ Algorithms Specification, Section 8";
+ }
+ leaf receive-time {
+ type ntp-date-and-time;
+ description
+ "This is the local time, in timestamp format,
+ when the latest NTP packet arrived at the peer
+ (called T2). If the peer becomes unreachable,
+ the value is set to zero.";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol
+ and Algorithms Specification, Section 8";
+ }
+ leaf transmit-time {
+ type ntp-date-and-time;
+ description
+ "This is the local time, in timestamp format,
+ at which the NTP packet departed the peer
+ (called T3). If the peer becomes unreachable,
+ the value is set to zero.";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol
+ and Algorithms Specification, Section 8";
+ }
+ leaf input-time {
+ type ntp-date-and-time;
+ description
+ "This is the local time, in timestamp format,
+ when the latest NTP message from the peer arrived
+ (called T4). If the peer becomes unreachable,
+ value is set to zero.";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol
+ and Algorithms Specification, Section 8";
+ }
+ container ntp-statistics {
+ description
+ "Per peer packet send and receive statistics";
+ uses statistics {
+ description
+ "NTP send and receive packet statistics";
+ }
+ }
+ }
+ }
+ container interfaces {
+ description
+ "Configuration parameters for NTP interfaces";
+ list interface {
+ key "name";
+ description
+ "List of interfaces";
+ leaf name {
+ type if:interface-ref;
+ description
+ "The interface name";
+ }
+ container broadcast-server {
+ if-feature "broadcast-server";
+ presence "NTP broadcast-server is configured on this
+ interface.";
+ description
+ "Configuration of broadcast server";
+ leaf ttl {
+ type uint8;
+ description
+ "Specifies the time to live (TTL) for a
+ broadcast packet";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol
+ and Algorithms Specification, Section 3.1";
+ }
+ container authentication {
+ if-feature "authentication";
+ description
+ "Authentication used on this interface";
+ uses authentication;
+ }
+ uses common-attributes {
+ description
+ "Common attributes such as port, version, and min and
+ max poll";
+ }
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol
+ and Algorithms Specification, Section 3.1";
+ }
+ container broadcast-client {
+ if-feature "broadcast-client";
+ presence "NTP broadcast-client is configured on this
+ interface.";
+ description
+ "Configuration of broadcast client";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol
+ and Algorithms Specification, Section 3.1";
+ }
+ list multicast-server {
+ if-feature "multicast-server";
+ key "address";
+ description
+ "Configuration of multicast server";
+ leaf address {
+ type rt-types:ip-multicast-group-address;
+ description
+ "The IP address to send NTP multicast packets";
+ }
+ leaf ttl {
+ type uint8;
+ description
+ "Specifies the TTL for a multicast packet";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol
+ and Algorithms Specification, Section 3.1";
+ }
+ container authentication {
+ if-feature "authentication";
+ description
+ "Authentication used on this interface";
+ uses authentication;
+ }
+ uses common-attributes {
+ description
+ "Common attributes such as port, version, and min and
+ max poll";
+ }
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol
+ and Algorithms Specification, Section 3.1";
+ }
+ list multicast-client {
+ if-feature "multicast-client";
+ key "address";
+ description
+ "Configuration of a multicast client";
+ leaf address {
+ type rt-types:ip-multicast-group-address;
+ description
+ "The IP address of the multicast group to
+ join";
+ }
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol
+ and Algorithms Specification, Section 3.1";
+ }
+ list manycast-server {
+ if-feature "manycast-server";
+ key "address";
+ description
+ "Configuration of a manycast server";
+ leaf address {
+ type rt-types:ip-multicast-group-address;
+ description
+ "The multicast group IP address to receive
+ manycast client messages.";
+ }
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol
+ and Algorithms Specification, Section 3.1";
+ }
+ list manycast-client {
+ if-feature "manycast-client";
+ key "address";
+ description
+ "Configuration of manycast-client";
+ leaf address {
+ type rt-types:ip-multicast-group-address;
+ description
+ "The group IP address that the manycast client
+ broadcasts the request message to";
+ }
+ container authentication {
+ if-feature "authentication";
+ description
+ "Authentication used on this interface";
+ uses authentication;
+ }
+ leaf ttl {
+ type uint8;
+ description
+ "Specifies the maximum TTL for the expanding
+ ring search";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol
+ and Algorithms Specification, Section 3.1";
+ }
+ leaf minclock {
+ type uint8;
+ description
+ "The minimum manycast survivors in this
+ association";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol
+ and Algorithms Specification, Section 13.2";
+ }
+ leaf maxclock {
+ type uint8;
+ description
+ "The maximum manycast candidates in this
+ association";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol
+ and Algorithms Specification, Section 13.2";
+ }
+ leaf beacon {
+ type log2seconds;
+ description
+ "The beacon is the upper limit of the poll interval.
+ When the TTL reaches its limit without finding the
+ minimum number of manycast servers, the poll interval
+ increases until reaching the beacon value, when it
+ starts over from the beginning.";
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol
+ and Algorithms Specification, Section 13.2";
+ }
+ uses common-attributes {
+ description
+ "Common attributes like port, version, and min and
+ max poll";
+ }
+ reference
+ "RFC 5905: Network Time Protocol Version 4: Protocol
+ and Algorithms Specification, Section 3.1";
+ }
+ }
+ }
+ container ntp-statistics {
+ config false;
+ description
+ "Total NTP packet statistics";
+ uses statistics {
+ description
+ "NTP send and receive packet statistics";
+ }
+ }
+ }
+
+ rpc statistics-reset {
+ description
+ "Reset statistics collected.";
+ input {
+ choice association-or-all {
+ description
+ "Resets statistics for a particular association or
+ all.";
+ case association {
+ uses association-ref;
+ description
+ "This resets all the statistics collected for
+ the association.";
+ }
+ case all {
+ description
+ "This resets all the statistics collected.";
+ }
+ }
+ }
+ }
+ }
+ <CODE ENDS>
+
+9. Usage Example
+
+ This section include examples for illustration purposes.
+
+ Note: '\' indicates line wrapping per [RFC8792].
+
+9.1. Unicast Association
+
+ This example describes how to configure a preferred unicast server
+ present at 192.0.2.1 running at port 1025 with authentication-key 10
+ and version 4 (default).
+
+ <edit-config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <target>
+ <running/>
+ </target>
+ <config>
+ <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
+ <unicast-configuration>
+ <address>192.0.2.1</address>
+ <type>uc-server</type>
+ <prefer>true</prefer>
+ <port>1025</port>
+ <authentication>
+ <symmetric-key>
+ <keyid>10</keyid>
+ </symmetric-key>
+ </authentication>
+ </unicast-configuration>
+ </ntp>
+ </config>
+ </edit-config>
+
+ An example with IPv6 would use an IPv6 address (say 2001:db8::1) in
+ the "address" leaf with no change in any other data tree.
+
+ <edit-config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <target>
+ <running/>
+ </target>
+ <config>
+ <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
+ <unicast-configuration>
+ <address>2001:db8::1</address>
+ <type>uc-server</type>
+ <prefer>true</prefer>
+ <port>1025</port>
+ <authentication>
+ <symmetric-key>
+ <keyid>10</keyid>
+ </symmetric-key>
+ </authentication>
+ </unicast-configuration>
+ </ntp>
+ </config>
+ </edit-config>
+
+ This example is for retrieving unicast configurations:
+
+ <get>
+ <filter type="subtree">
+ <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
+ <unicast-configuration>
+ </unicast-configuration>
+ </ntp>
+ </filter>
+ </get>
+
+ <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
+ <unicast-configuration>
+ <address>192.0.2.1</address>
+ <type>uc-server</type>
+ <authentication>
+ <symmetric-key>
+ <keyid>10</keyid>
+ </symmetric-key>
+ </authentication>
+ <prefer>true</prefer>
+ <burst>false</burst>
+ <iburst>true</iburst>
+ <source/>
+ <minpoll>6</minpoll>
+ <maxpoll>10</maxpoll>
+ <port>1025</port>
+ <stratum>9</stratum>
+ <refid>203.0.113.1</refid>
+ <reach>255</reach>
+ <unreach>0</unreach>
+ <poll>128</poll>
+ <now>10</now>
+ <offset>0.025</offset>
+ <delay>0.5</delay>
+ <dispersion>0.6</dispersion>
+ <originate-time>10-10-2017 07:33:55.253 Z+05:30\
+ </originate-time>
+ <receive-time>10-10-2017 07:33:55.258 Z+05:30\
+ </receive-time>
+ <transmit-time>10-10-2017 07:33:55.300 Z+05:30\
+ </transmit-time>
+ <input-time>10-10-2017 07:33:55.305 Z+05:30\
+ </input-time>
+ <ntp-statistics>
+ <packet-sent>20</packet-sent>
+ <packet-sent-fail>0</packet-sent-fail>
+ <packet-received>20</packet-received>
+ <packet-dropped>0</packet-dropped>
+ </ntp-statistics>
+ </unicast-configuration>
+ </ntp>
+ </data>
+
+9.2. Refclock Master
+
+ This example describes how to configure reference clock with stratum
+ 8:
+
+ <edit-config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <target>
+ <running/>
+ </target>
+ <config>
+ <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
+ <refclock-master>
+ <master-stratum>8</master-stratum>
+ </refclock-master>
+ </ntp>
+ </config>
+ </edit-config>
+
+ This example describes how to get reference clock configuration:
+
+ <get>
+ <filter type="subtree">
+ <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
+ <refclock-master>
+ </refclock-master>
+ </ntp>
+ </filter>
+ </get>
+
+ <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
+ <refclock-master>
+ <master-stratum>8</master-stratum>
+ </refclock-master>
+ </ntp>
+ </data>
+
+9.3. Authentication Configuration
+
+ This example describes how to enable authentication and configure
+ trusted authentication key 10 with mode as AES-CMAC and a hexadecimal
+ string key:
+
+ <edit-config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <target>
+ <running/>
+ </target>
+ <config>
+ <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
+ <authentication>
+ <auth-enabled>true</auth-enabled>
+ <authentication-keys>
+ <keyid>10</keyid>
+ <algorithm>aes-cmac</algorithm>
+ <key>
+ <hexadecimal-string>
+ bb1d6929e95937287fa37d129b756746
+ </hexadecimal-string>
+ </key>
+ <istrusted>true</istrusted>
+ </authentication-keys>
+ </authentication>
+ </ntp>
+ </config>
+ </edit-config>
+
+9.4. Access Configuration
+
+ This example describes how to configure "peer-access-mode" associated
+ with ACL 2000:
+
+ <edit-config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <target>
+ <running/>
+ </target>
+ <config>
+ <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
+ <access-rules>
+ <access-rule>
+ <access-mode>peer-access-mode</access-mode>
+ <acl>2000</acl>
+ </access-rule>
+ </access-rules>
+ </ntp>
+ </config>
+ </edit-config>
+
+ This example describes how to get access-related configuration:
+
+ <get>
+ <filter type="subtree">
+ <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
+ <access-rules>
+ </access-rules>
+ </ntp>
+ </filter>
+ </get>
+
+ <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
+ <access-rules>
+ <access-rule>
+ <access-mode>peer-access-mode</access-mode>
+ <acl>2000</acl>
+ </access-rule>
+ </access-rules>
+ </ntp>
+ </data>
+
+9.5. Multicast Configuration
+
+ This example describes how to configure a multicast server with an
+ address of "224.0.1.1", port of 1025, version of 3, and
+ authentication keyid of 10.
+
+ <edit-config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <target>
+ <running/>
+ </target>
+ <config>
+ <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
+ <interfaces>
+ <interface>
+ <name>Ethernet3/0/0</name>
+ <multicast-server>
+ <address>224.0.1.1</address>
+ <authentication>
+ <symmetric-key>
+ <keyid>10</keyid>
+ </symmetric-key>
+ </authentication>
+ <port>1025</port>
+ <version>3</version>
+ </multicast-server>
+ </interface>
+ </interfaces>
+ </ntp>
+ </config>
+ </edit-config>
+
+ This example describes how to get multicast-server-related
+ configuration:
+
+ <get>
+ <filter type="subtree">
+ <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
+ <interfaces>
+ <interface>
+ <multicast-server>
+ </multicast-server>
+ </interface>
+ </interfaces>
+ </ntp>
+ </filter>
+ </get>
+
+ <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
+ <interfaces>
+ <interface>
+ <name>Ethernet3/0/0</name>
+ <multicast-server>
+ <address>224.0.1.1</address>
+ <ttl>8</ttl>
+ <authentication>
+ <symmetric-key>
+ <keyid>10</keyid>
+ </symmetric-key>
+ </authentication>
+ <minpoll>6</minpoll>
+ <maxpoll>10</maxpoll>
+ <port>1025</port>
+ <version>3</version>
+ </multicast-server>
+ </interface>
+ </interfaces>
+ </ntp>
+ </data>
+
+ This example describes how to configure a multicast client with an
+ address of "224.0.1.1":
+
+ <edit-config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <target>
+ <running/>
+ </target>
+ <config>
+ <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
+ <interfaces>
+ <interface>
+ <name>Ethernet3/0/0</name>
+ <multicast-client>
+ <address>224.0.1.1</address>
+ </multicast-client>
+ </interface>
+ </interfaces>
+ </ntp>
+ </config>
+ </edit-config>
+
+ This example describes how to get multicast-client-related
+ configuration:
+
+ <get>
+ <filter type="subtree">
+ <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
+ <interfaces>
+ <interface>
+ <multicast-client>
+ </multicast-client>
+ </interface>
+ </interfaces>
+ </ntp>
+ </filter>
+ </get>
+
+ <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
+ <interfaces>
+ <interface>
+ <name>Ethernet3/0/0</name>
+ <multicast-client>
+ <address>224.0.1.1</address>
+ </multicast-client>
+ </interface>
+ </interfaces>
+ </ntp>
+ </data>
+
+9.6. Manycast Configuration
+
+ This example describes how to configure a manycast-client with an
+ address of "224.0.1.1", port of 1025, and authentication keyid of 10:
+
+ <edit-config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <target>
+ <running/>
+ </target>
+ <config>
+ <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
+ <interfaces>
+ <interface>
+ <name>Ethernet3/0/0</name>
+ <manycast-client>
+ <address>224.0.1.1</address>
+ <authentication>
+ <symmetric-key>
+ <keyid>10</keyid>
+ </symmetric-key>
+ </authentication>
+ <port>1025</port>
+ </manycast-client>
+ </interface>
+ </interfaces>
+ </ntp>
+ </config>
+ </edit-config>
+
+ This example describes how to get manycast-client-related
+ configuration:
+
+ <get>
+ <filter type="subtree">
+ <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
+ <interfaces>
+ <interface>
+ <manycast-client>
+ </manycast-client>
+ </interface>
+ </interfaces>
+ </ntp>
+ </filter>
+ </get>
+
+ <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
+ <interfaces>
+ <interface>
+ <name>Ethernet3/0/0</name>
+ <manycast-client>
+ <address>224.0.1.1</address>
+ <authentication>
+ <symmetric-key>
+ <keyid>10</keyid>
+ </symmetric-key>
+ </authentication>
+ <ttl>8</ttl>
+ <minclock>3</minclock>
+ <maxclock>10</maxclock>
+ <beacon>6</beacon>
+ <minpoll>6</minpoll>
+ <maxpoll>10</maxpoll>
+ <port>1025</port>
+ </manycast-client>
+ </interface>
+ </interfaces>
+ </ntp>
+ </data>
+
+ This example describes how to configure a manycast-server with an
+ address of "224.0.1.1":
+
+ <edit-config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <target>
+ <running/>
+ </target>
+ <config>
+ <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
+ <interfaces>
+ <interface>
+ <name>Ethernet3/0/0</name>
+ <manycast-server>
+ <address>224.0.1.1</address>
+ </manycast-server>
+ </interface>
+ </interfaces>
+ </ntp>
+ </config>
+ </edit-config>
+
+ This example describes how to get manycast-server-related
+ configuration:
+
+ <get>
+ <filter type="subtree">
+ <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
+ <interfaces>
+ <interface>
+ <manycast-server>
+ </manycast-server>
+ </interface>
+ </interfaces>
+ </ntp>
+ </filter>
+ </get>
+
+ <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
+ <interfaces>
+ <interface>
+ <name>Ethernet3/0/0</name>
+ <manycast-server>
+ <address>224.0.1.1</address>
+ </manycast-server>
+ </interface>
+ </interfaces>
+ </ntp>
+ </data>
+
+9.7. Clock State
+
+ This example describes how to get current clock state:
+
+ <get>
+ <filter type="subtree">
+ <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
+ <clock-state>
+ </clock-state>
+ </ntp>
+ </filter>
+ </get>
+
+ <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
+ <clock-state>
+ <system-status>
+ <clock-state>synchronized</clock-state>
+ <clock-stratum>7</clock-stratum>
+ <clock-refid>192.0.2.1</clock-refid>
+ <associations-address>192.0.2.1\
+ </associations-address>
+ <associations-local-mode>client\
+ </associations-local-mode>
+ <associations-isconfigured>yes\
+ </associations-isconfigured>
+ <nominal-freq>100.0</nominal-freq>
+ <actual-freq>100.0</actual-freq>
+ <clock-precision>18</clock-precision>
+ <clock-offset>0.025</clock-offset>
+ <root-delay>0.5</root-delay>
+ <root-dispersion>0.8</root-dispersion>
+ <reference-time>10-10-2017 07:33:55.258 Z+05:30\
+ </reference-time>
+ <sync-state>clock-synchronized</sync-state>
+ </system-status>
+ </clock-state>
+ </ntp>
+ </data>
+
+9.8. Get All Association
+
+ This example describes how to get all associations present in the
+ system:
+
+ <get>
+ <filter type="subtree">
+ <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
+ <associations>
+ </associations>
+ </ntp>
+ </filter>
+ </get>
+
+ <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
+ <associations>
+ <association>
+ <address>192.0.2.1</address>
+ <stratum>9</stratum>
+ <refid>203.0.113.1</refid>
+ <local-mode>client</local-mode>
+ <isconfigured>true</isconfigured>
+ <authentication-key>10</authentication-key>
+ <prefer>true</prefer>
+ <peer-interface>Ethernet3/0/0</peer-interface>
+ <minpoll>6</minpoll>
+ <maxpoll>10</maxpoll>
+ <port>1025</port>
+ <version>4</version>
+ <reach>255</reach>
+ <unreach>0</unreach>
+ <poll>128</poll>
+ <now>10</now>
+ <offset>0.025</offset>
+ <delay>0.5</delay>
+ <dispersion>0.6</dispersion>
+ <originate-time>10-10-2017 07:33:55.253 Z+05:30\
+ </originate-time>
+ <receive-time>10-10-2017 07:33:55.258 Z+05:30\
+ </receive-time>
+ <transmit-time>10-10-2017 07:33:55.300 Z+05:30\
+ </transmit-time>
+ <input-time>10-10-2017 07:33:55.305 Z+05:30\
+ </input-time>
+ <ntp-statistics>
+ <packet-sent>20</packet-sent>
+ <packet-sent-fail>0</packet-sent-fail>
+ <packet-received>20</packet-received>
+ <packet-dropped>0</packet-dropped>
+ </ntp-statistics>
+ </association>
+ </associations>
+ </ntp>
+ </data>
+
+9.9. Global Statistic
+
+ This example describes how to get global statistics:
+
+ <get>
+ <filter type="subtree">
+ <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
+ <ntp-statistics>
+ </ntp-statistics>
+ </ntp>
+ </filter>
+ </get>
+
+ <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <ntp xmlns="urn:ietf:params:xml:ns:yang:ietf-ntp">
+ <ntp-statistics>
+ <packet-sent>30</packet-sent>
+ <packet-sent-fail>5</packet-sent-fail>
+ <packet-received>20</packet-received>
+ <packet-dropped>2</packet-dropped>
+ </ntp-statistics>
+ </ntp>
+ </data>
+
+10. IANA Considerations
+
+10.1. IETF XML Registry
+
+ This document registers a URI in the "IETF XML Registry" [RFC3688].
+ Following the format in RFC 3688, the following registration has been
+ made.
+
+ URI: urn:ietf:params:xml:ns:yang:ietf-ntp
+
+ Registrant Contact: The IESG.
+
+ XML: N/A; the requested URI is an XML namespace.
+
+10.2. YANG Module Names
+
+ This document registers a YANG module in the "YANG Module Names"
+ registry [RFC6020].
+
+ Name: ietf-ntp
+
+ Namespace: urn:ietf:params:xml:ns:yang:ietf-ntp
+
+ Prefix: ntp
+
+ Reference: RFC 9249
+
+11. Security Considerations
+
+ The YANG module specified in this document defines a schema for data
+ that is designed to be accessed via network management protocols such
+ as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer
+ is the secure transport layer, and the mandatory-to-implement secure
+ transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer
+ is HTTPS, and the mandatory-to-implement secure transport is TLS
+ [RFC8446].
+
+ The Network Configuration Access Control Model (NACM) [RFC8341]
+ provides the means to restrict access for particular NETCONF or
+ RESTCONF users to a preconfigured subset of all available NETCONF or
+ RESTCONF protocol operations and content. The 'nacm:default-deny-
+ all' is used to prevent retrieval of the key information.
+
+ There are a number of data nodes defined in this YANG module that are
+ writable/creatable/deletable (i.e., config true, which is the
+ default). These data nodes may be considered sensitive or vulnerable
+ in some network environments. Write operations (e.g., edit-config)
+ to these data nodes without proper protection can have a negative
+ effect on network operations. These are the subtrees and data nodes
+ and their sensitivity/vulnerability:
+
+ /ntp/port: This data node specifies the port number to be used to
+ send NTP packets. Unexpected changes could lead to disruption
+ and/or network misbehavior.
+
+ /ntp/authentication and /ntp/access-rules: The entries in the list
+ include the authentication and access control configurations.
+ Care should be taken while setting these parameters.
+
+ /ntp/unicast-configuration: The entries in the list include all
+ unicast configurations (server or peer mode) and indirectly
+ creates or modifies the NTP associations. Unexpected changes
+ could lead to disruption and/or network misbehavior.
+
+ /ntp/interfaces/interface: The entries in the list include all per-
+ interface configurations related to broadcast, multicast, and
+ manycast mode, and indirectly creates or modifies the NTP
+ associations. Unexpected changes could lead to disruption and/or
+ network misbehavior. It could also lead to synchronization over
+ an untrusted source over trusted ones.
+
+ Some of the readable data nodes in this YANG module may be considered
+ sensitive or vulnerable in some network environments. It is thus
+ important to control read access (e.g., via get, get-config, or
+ notification) to these data nodes. These are the subtrees and data
+ nodes and their sensitivity/vulnerability:
+
+ /ntp/authentication/authentication-keys: The entries in the list
+ include all the NTP authentication keys. Unauthorized access to
+ the keys can be easily exploited to permit unauthorized access to
+ the NTP service. This information is sensitive; thus,
+ unauthorized access to this needs to be curtailed.
+
+ /ntp/associations/association/: The entries in the list include all
+ active NTP associations of all modes. Exposure of these nodes
+ could reveal network topology or trust relationships.
+ Unauthorized access to this also needs to be curtailed.
+
+ /ntp/authentication and /ntp/access-rules: The entries in the list
+ include the authentication and access control configurations.
+ Exposure of these nodes could reveal network topology or trust
+ relationships.
+
+ Some of the RPC operations in this YANG module may be considered
+ sensitive or vulnerable in some network environments. It is thus
+ important to control access to these operations. These are the
+ operations and their sensitivity/vulnerability:
+
+ statistics-reset: The RPC is used to reset statistics. Unauthorized
+ reset could impact monitoring.
+
+ The leaf /ntp/authentication/authentication-keys/algorithm can be set
+ to cryptographic algorithms that are no longer considered to be
+ secure. As per [RFC8573], AES-CMAC is the recommended algorithm.
+
+12. References
+
+12.1. Normative References
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119,
+ DOI 10.17487/RFC2119, March 1997,
+ <https://www.rfc-editor.org/info/rfc2119>.
+
+ [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
+ DOI 10.17487/RFC3688, January 2004,
+ <https://www.rfc-editor.org/info/rfc3688>.
+
+ [RFC5905] Mills, D., Martin, J., Ed., Burbank, J., and W. Kasch,
+ "Network Time Protocol Version 4: Protocol and Algorithms
+ Specification", RFC 5905, DOI 10.17487/RFC5905, June 2010,
+ <https://www.rfc-editor.org/info/rfc5905>.
+
+ [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
+ the Network Configuration Protocol (NETCONF)", RFC 6020,
+ DOI 10.17487/RFC6020, October 2010,
+ <https://www.rfc-editor.org/info/rfc6020>.
+
+ [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
+ and A. Bierman, Ed., "Network Configuration Protocol
+ (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
+ <https://www.rfc-editor.org/info/rfc6241>.
+
+ [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure
+ Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011,
+ <https://www.rfc-editor.org/info/rfc6242>.
+
+ [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types",
+ RFC 6991, DOI 10.17487/RFC6991, July 2013,
+ <https://www.rfc-editor.org/info/rfc6991>.
+
+ [RFC7317] Bierman, A. and M. Bjorklund, "A YANG Data Model for
+ System Management", RFC 7317, DOI 10.17487/RFC7317, August
+ 2014, <https://www.rfc-editor.org/info/rfc7317>.
+
+ [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
+ RFC 7950, DOI 10.17487/RFC7950, August 2016,
+ <https://www.rfc-editor.org/info/rfc7950>.
+
+ [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
+ Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017,
+ <https://www.rfc-editor.org/info/rfc8040>.
+
+ [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
+ 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
+ May 2017, <https://www.rfc-editor.org/info/rfc8174>.
+
+ [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger,
+ "Common YANG Data Types for the Routing Area", RFC 8294,
+ DOI 10.17487/RFC8294, December 2017,
+ <https://www.rfc-editor.org/info/rfc8294>.
+
+ [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams",
+ BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018,
+ <https://www.rfc-editor.org/info/rfc8340>.
+
+ [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration
+ Access Control Model", STD 91, RFC 8341,
+ DOI 10.17487/RFC8341, March 2018,
+ <https://www.rfc-editor.org/info/rfc8341>.
+
+ [RFC8343] Bjorklund, M., "A YANG Data Model for Interface
+ Management", RFC 8343, DOI 10.17487/RFC8343, March 2018,
+ <https://www.rfc-editor.org/info/rfc8343>.
+
+ [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol
+ Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
+ <https://www.rfc-editor.org/info/rfc8446>.
+
+ [RFC8519] Jethanandani, M., Agarwal, S., Huang, L., and D. Blair,
+ "YANG Data Model for Network Access Control Lists (ACLs)",
+ RFC 8519, DOI 10.17487/RFC8519, March 2019,
+ <https://www.rfc-editor.org/info/rfc8519>.
+
+ [RFC8573] Malhotra, A. and S. Goldberg, "Message Authentication Code
+ for the Network Time Protocol", RFC 8573,
+ DOI 10.17487/RFC8573, June 2019,
+ <https://www.rfc-editor.org/info/rfc8573>.
+
+12.2. Informative References
+
+ [RFC1305] Mills, D., "Network Time Protocol (Version 3)
+ Specification, Implementation and Analysis", RFC 1305,
+ DOI 10.17487/RFC1305, March 1992,
+ <https://www.rfc-editor.org/info/rfc1305>.
+
+ [RFC1321] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321,
+ DOI 10.17487/RFC1321, April 1992,
+ <https://www.rfc-editor.org/info/rfc1321>.
+
+ [RFC3174] Eastlake 3rd, D. and P. Jones, "US Secure Hash Algorithm 1
+ (SHA1)", RFC 3174, DOI 10.17487/RFC3174, September 2001,
+ <https://www.rfc-editor.org/info/rfc3174>.
+
+ [RFC4493] Song, JH., Poovendran, R., Lee, J., and T. Iwata, "The
+ AES-CMAC Algorithm", RFC 4493, DOI 10.17487/RFC4493, June
+ 2006, <https://www.rfc-editor.org/info/rfc4493>.
+
+ [RFC5907] Gerstung, H., Elliott, C., and B. Haberman, Ed.,
+ "Definitions of Managed Objects for Network Time Protocol
+ Version 4 (NTPv4)", RFC 5907, DOI 10.17487/RFC5907, June
+ 2010, <https://www.rfc-editor.org/info/rfc5907>.
+
+ [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K.,
+ and R. Wilton, "Network Management Datastore Architecture
+ (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018,
+ <https://www.rfc-editor.org/info/rfc8342>.
+
+ [RFC8792] Watsen, K., Auerswald, E., Farrel, A., and Q. Wu,
+ "Handling Long Lines in Content of Internet-Drafts and
+ RFCs", RFC 8792, DOI 10.17487/RFC8792, June 2020,
+ <https://www.rfc-editor.org/info/rfc8792>.
+
+ [SHS] National Institute of Standards and Technology (NIST),
+ "Secure Hash Standard (SHS)", DOI 10.6028/NIST.FIPS.180-4,
+ FIPS PUB 180-4, August 2015,
+ <https://doi.org/10.6028/NIST.FIPS.180-4>.
+
+Appendix A. Full YANG Tree
+
+ The full tree for the ietf-ntp YANG data model is as follows.
+
+ module: ietf-ntp
+ +--rw ntp!
+ +--rw port? inet:port-number {ntp-port}?
+ +--rw refclock-master!
+ | +--rw master-stratum? ntp-stratum
+ +--rw authentication {authentication}?
+ | +--rw auth-enabled? boolean
+ | +--rw authentication-keys* [keyid]
+ | +--rw keyid uint32
+ | +--rw algorithm? identityref
+ | +--rw key
+ | | +--rw (key-string-style)?
+ | | +--:(keystring)
+ | | | +--rw keystring? string {deprecated}?
+ | | +--:(hexadecimal) {hex-key-string}?
+ | | +--rw hexadecimal-string? yang:hex-string
+ | +--rw istrusted? boolean
+ +--rw access-rules {access-rules}?
+ | +--rw access-rule* [access-mode]
+ | +--rw access-mode identityref
+ | +--rw acl? -> /acl:acls/acl/name
+ +--ro clock-state
+ | +--ro system-status
+ | +--ro clock-state identityref
+ | +--ro clock-stratum ntp-stratum
+ | +--ro clock-refid refid
+ | +--ro associations-address?
+ | | -> /ntp/associations/association/address
+ | +--ro associations-local-mode?
+ | | -> /ntp/associations/association/local-mode
+ | +--ro associations-isconfigured?
+ | | -> /ntp/associations/association/isconfigured
+ | +--ro nominal-freq decimal64
+ | +--ro actual-freq decimal64
+ | +--ro clock-precision log2seconds
+ | +--ro clock-offset? decimal64
+ | +--ro root-delay? decimal64
+ | +--ro root-dispersion? decimal64
+ | +--ro reference-time? ntp-date-and-time
+ | +--ro sync-state identityref
+ +--rw unicast-configuration* [address type]
+ | {unicast-configuration}?
+ | +--rw address inet:ip-address
+ | +--rw type identityref
+ | +--rw authentication {authentication}?
+ | | +--rw (authentication-type)?
+ | | +--:(symmetric-key)
+ | | +--rw keyid? leafref
+ | +--rw prefer? boolean
+ | +--rw burst? boolean
+ | +--rw iburst? boolean
+ | +--rw source? if:interface-ref
+ | +--rw minpoll? log2seconds
+ | +--rw maxpoll? log2seconds
+ | +--rw port? inet:port-number {ntp-port}?
+ | +--rw version? ntp-version
+ +--rw associations
+ | +--ro association* [address local-mode isconfigured]
+ | +--ro address inet:ip-address
+ | +--ro local-mode identityref
+ | +--ro isconfigured boolean
+ | +--ro stratum? ntp-stratum
+ | +--ro refid? refid
+ | +--ro authentication?
+ | | -> /ntp/authentication/authentication-keys/keyid
+ | | {authentication}?
+ | +--ro prefer? boolean
+ | +--ro peer-interface? if:interface-ref
+ | +--ro minpoll? log2seconds
+ | +--ro maxpoll? log2seconds
+ | +--ro port? inet:port-number {ntp-port}?
+ | +--ro version? ntp-version
+ | +--ro reach? uint8
+ | +--ro unreach? uint8
+ | +--ro poll? log2seconds
+ | +--ro now? uint32
+ | +--ro offset? decimal64
+ | +--ro delay? decimal64
+ | +--ro dispersion? decimal64
+ | +--ro originate-time? ntp-date-and-time
+ | +--ro receive-time? ntp-date-and-time
+ | +--ro transmit-time? ntp-date-and-time
+ | +--ro input-time? ntp-date-and-time
+ | +--ro ntp-statistics
+ | +--ro discontinuity-time? ntp-date-and-time
+ | +--ro packet-sent? yang:counter32
+ | +--ro packet-sent-fail? yang:counter32
+ | +--ro packet-received? yang:counter32
+ | +--ro packet-dropped? yang:counter32
+ +--rw interfaces
+ | +--rw interface* [name]
+ | +--rw name if:interface-ref
+ | +--rw broadcast-server! {broadcast-server}?
+ | | +--rw ttl? uint8
+ | | +--rw authentication {authentication}?
+ | | | +--rw (authentication-type)?
+ | | | +--:(symmetric-key)
+ | | | +--rw keyid? leafref
+ | | +--rw minpoll? log2seconds
+ | | +--rw maxpoll? log2seconds
+ | | +--rw port? inet:port-number {ntp-port}?
+ | | +--rw version? ntp-version
+ | +--rw broadcast-client! {broadcast-client}?
+ | +--rw multicast-server* [address] {multicast-server}?
+ | | +--rw address
+ | | | rt-types:ip-multicast-group-address
+ | | +--rw ttl? uint8
+ | | +--rw authentication {authentication}?
+ | | | +--rw (authentication-type)?
+ | | | +--:(symmetric-key)
+ | | | +--rw keyid? leafref
+ | | +--rw minpoll? log2seconds
+ | | +--rw maxpoll? log2seconds
+ | | +--rw port? inet:port-number {ntp-port}?
+ | | +--rw version? ntp-version
+ | +--rw multicast-client* [address] {multicast-client}?
+ | | +--rw address rt-types:ip-multicast-group-address
+ | +--rw manycast-server* [address] {manycast-server}?
+ | | +--rw address rt-types:ip-multicast-group-address
+ | +--rw manycast-client* [address] {manycast-client}?
+ | +--rw address
+ | | rt-types:ip-multicast-group-address
+ | +--rw authentication {authentication}?
+ | | +--rw (authentication-type)?
+ | | +--:(symmetric-key)
+ | | +--rw keyid? leafref
+ | +--rw ttl? uint8
+ | +--rw minclock? uint8
+ | +--rw maxclock? uint8
+ | +--rw beacon? log2seconds
+ | +--rw minpoll? log2seconds
+ | +--rw maxpoll? log2seconds
+ | +--rw port? inet:port-number {ntp-port}?
+ | +--rw version? ntp-version
+ +--ro ntp-statistics
+ +--ro discontinuity-time? ntp-date-and-time
+ +--ro packet-sent? yang:counter32
+ +--ro packet-sent-fail? yang:counter32
+ +--ro packet-received? yang:counter32
+ +--ro packet-dropped? yang:counter32
+
+ rpcs:
+ +---x statistics-reset
+ +---w input
+ +---w (association-or-all)?
+ +--:(association)
+ | +---w associations-address?
+ | | -> /ntp/associations/association/address
+ | +---w associations-local-mode?
+ | | -> /ntp/associations/association/local-mode
+ | +---w associations-isconfigured?
+ | -> /ntp/associations/association/isconfigured
+ +--:(all)
+
+Acknowledgments
+
+ The authors would like to express their thanks to Sladjana Zoric,
+ Danny Mayer, Harlan Stenn, Ulrich Windl, Miroslav Lichvar, Maurice
+ Angermann, Watson Ladd, and Rich Salz for their review and
+ suggestions.
+
+ Thanks to Andy Bierman for the YANG doctor review.
+
+ Thanks to Dieter Sibold for being the Document Shepherd and Erik
+ Kline for being the Responsible AD.
+
+ Thanks to Takeshi Takahashi for SECDIR review. Thanks to Tim Evens
+ for GENART review.
+
+ A special thanks to Tom Petch for a very detailed YANG review and
+ providing great suggestions for improvements.
+
+ Thanks for the IESG review from Benjamin Kaduk, Francesca Palombini,
+ Eric Vyncke, Murray Kucherawy, Robert Wilton, Roman Danyliw, and
+ Zaheduzzaman Sarker.
+
+Authors' Addresses
+
+ Nan Wu
+ Huawei
+ Huawei Bld., No.156 Beiqing Rd.
+ Beijing
+ 100095
+ China
+ Email: eric.wu@huawei.com
+
+
+ Dhruv Dhody (editor)
+ Huawei
+ Divyashree Techno Park, Whitefield
+ Bangalore 560066
+ Kanataka
+ India
+ Email: dhruv.ietf@gmail.com
+
+
+ Ankit Kumar Sinha (editor)
+ RtBrick Inc.
+ Bangalore
+ Kanataka
+ India
+ Email: ankit.ietf@gmail.com
+
+
+ Anil Kumar S N
+ RtBrick Inc.
+ Bangalore
+ Kanataka
+ India
+ Email: anil.ietf@gmail.com
+
+
+ Yi Zhao
+ Ericsson
+ China Digital Kingdom Bld., No.1 WangJing North Rd.
+ Beijing
+ 100102
+ China
+ Email: yi.z.zhao@ericsson.com