draft-ietf-ntp-yang-data-model-04.txt   draft-ietf-ntp-yang-data-model-05.txt 
NTP Working Group N. Wu NTP Working Group N. Wu
Internet-Draft D. Dhody Internet-Draft D. Dhody
Intended status: Standards Track Huawei Intended status: Standards Track Huawei
Expires: April 18, 2019 A. Sinha Expires: June 20, 2019 A. Sinha
A. Kumar S N A. Kumar S N
RtBrick Inc. RtBrick Inc.
Y. Zhao Y. Zhao
Ericsson Ericsson
October 15, 2018 December 17, 2018
A YANG Data Model for NTP A YANG Data Model for NTP
draft-ietf-ntp-yang-data-model-04 draft-ietf-ntp-yang-data-model-05
Abstract Abstract
This document defines a YANG data model for Network Time Protocol This document defines a YANG data model for Network Time Protocol
(NTP) implementations. The data model includes configuration data (NTP) implementations. The data model includes configuration data
and state data. and state data.
Requirements Language Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
skipping to change at page 1, line 45 skipping to change at page 1, line 45
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on April 18, 2019. This Internet-Draft will expire on June 20, 2019.
Copyright Notice Copyright Notice
Copyright (c) 2018 IETF Trust and the persons identified as the Copyright (c) 2018 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 Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 28 skipping to change at page 2, line 28
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Operational State . . . . . . . . . . . . . . . . . . . . 3 1.1. Operational State . . . . . . . . . . . . . . . . . . . . 3
1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3
1.3. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 1.3. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3
1.4. Prefixes in Data Node Names . . . . . . . . . . . . . . . 3 1.4. Prefixes in Data Node Names . . . . . . . . . . . . . . . 3
2. NTP data model . . . . . . . . . . . . . . . . . . . . . . . 4 2. NTP data model . . . . . . . . . . . . . . . . . . . . . . . 4
3. Relationship with NTPv4-MIB . . . . . . . . . . . . . . . . . 7 3. Relationship with NTPv4-MIB . . . . . . . . . . . . . . . . . 8
4. Relationship with RFC 7317 . . . . . . . . . . . . . . . . . 9 4. Relationship with RFC 7317 . . . . . . . . . . . . . . . . . 8
5. Access Rules . . . . . . . . . . . . . . . . . . . . . . . . 9 5. Access Rules . . . . . . . . . . . . . . . . . . . . . . . . 9
6. Key Management . . . . . . . . . . . . . . . . . . . . . . . 9 6. Key Management . . . . . . . . . . . . . . . . . . . . . . . 9
7. NTP YANG Module . . . . . . . . . . . . . . . . . . . . . . . 10 7. NTP YANG Module . . . . . . . . . . . . . . . . . . . . . . . 9
8. Usage Example . . . . . . . . . . . . . . . . . . . . . . . . 31 8. Usage Example . . . . . . . . . . . . . . . . . . . . . . . . 32
8.1. Unicast association . . . . . . . . . . . . . . . . . . . 31 8.1. Unicast association . . . . . . . . . . . . . . . . . . . 32
8.2. Refclock master . . . . . . . . . . . . . . . . . . . . . 33 8.2. Refclock master . . . . . . . . . . . . . . . . . . . . . 34
8.3. Authentication configuration . . . . . . . . . . . . . . 34 8.3. Authentication configuration . . . . . . . . . . . . . . 35
8.4. Access configuration . . . . . . . . . . . . . . . . . . 36 8.4. Access configuration . . . . . . . . . . . . . . . . . . 37
8.5. Multicast configuration . . . . . . . . . . . . . . . . . 36 8.5. Multicast configuration . . . . . . . . . . . . . . . . . 37
8.6. Manycast configuration . . . . . . . . . . . . . . . . . 40 8.6. Manycast configuration . . . . . . . . . . . . . . . . . 41
8.7. Clock state . . . . . . . . . . . . . . . . . . . . . . . 43 8.7. Clock state . . . . . . . . . . . . . . . . . . . . . . . 44
8.8. Get all association . . . . . . . . . . . . . . . . . . . 43 8.8. Get all association . . . . . . . . . . . . . . . . . . . 44
8.9. Global statistic . . . . . . . . . . . . . . . . . . . . 45 8.9. Global statistic . . . . . . . . . . . . . . . . . . . . 46
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 45 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 46
10. Security Considerations . . . . . . . . . . . . . . . . . . . 46 10. Security Considerations . . . . . . . . . . . . . . . . . . . 47
11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 47 11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 48
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 47 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 48
12.1. Normative References . . . . . . . . . . . . . . . . . . 47 12.1. Normative References . . . . . . . . . . . . . . . . . . 48
12.2. Informative References . . . . . . . . . . . . . . . . . 49 12.2. Informative References . . . . . . . . . . . . . . . . . 50
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 49 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 50
1. Introduction 1. Introduction
This document defines a YANG [RFC7950] data model for Network Time This document defines a YANG [RFC7950] data model for Network Time
Protocol [RFC5905] implementations. Protocol [RFC5905] implementations.
The data model convers configuration of system parameters of NTP, The data model convers configuration of system parameters of NTP,
such as access rules, authentication and VPN Routing and Forwarding such as access rules, authentication and VPN Routing and Forwarding
(VRF) binding, and also associations of NTP in different modes and (VRF) binding, and also associations of NTP in different modes and
parameters of per-interface. It also provides information about parameters of per-interface. It also provides information about
skipping to change at page 4, line 25 skipping to change at page 4, line 25
| rt-types | ietf-routing-types | [RFC8294] | | rt-types | ietf-routing-types | [RFC8294] |
+----------+--------------------------+-----------------------------+ +----------+--------------------------+-----------------------------+
Table 1: Prefixes and corresponding YANG modules Table 1: Prefixes and corresponding YANG modules
2. NTP data model 2. NTP data model
This document defines the YANG module "ietf-ntp", which has the This document defines the YANG module "ietf-ntp", which has the
following structure: following structure:
module: ietf-ntp module: ietf-ntp
+--rw ntp! +--rw ntp!
+--rw port? inet:port-number {ntp-port}? +--rw port? inet:port-number {ntp-port}?
+--rw refclock-master! +--rw refclock-master!
| +--rw master-stratum? ntp-stratum | +--rw master-stratum? ntp-stratum
+--rw authentication +--rw authentication
| +--rw auth-enabled? boolean | +--rw auth-enabled? boolean
| +--rw authentication-keys* [key-id] | +--rw authentication-keys* [key-id]
| +--rw key-id uint32 | +--rw key-id uint32
| +--rw algorithm? identityref | +--rw algorithm? identityref
| +--rw key? ianach:crypt-hash | +--rw key? ianach:crypt-hash
| +--rw istrusted? boolean | +--rw istrusted? boolean
+--rw access-rules +--rw access-rules
| +--rw access-rule* [access-mode] | +--rw access-rule* [access-mode]
| +--rw access-mode access-mode | +--rw access-mode access-mode
| +--rw acl? -> /acl:acls/acl/name | +--rw acl? -> /acl:acls/acl/name
+--ro clock-state +--ro clock-state
| +--ro system-status | +--ro system-status
| +--ro clock-state ntp-clock-status | +--ro clock-state ntp-clock-status
| +--ro clock-stratum ntp-stratum | +--ro clock-stratum ntp-stratum
| +--ro clock-refid union | +--ro clock-refid union
| +--ro associations-address? -> /ntp/associations/address | +--ro associations-address?
| +--ro associations-local-mode? | | -> /ntp/associations/address
| | -> /ntp/associations/local-mode | +--ro associations-local-mode?
| +--ro associations-isconfigured? | | -> /ntp/associations/local-mode
| | -> /ntp/associations/isconfigured | +--ro associations-isconfigured?
| +--ro nominal-freq decimal64 | | -> /ntp/associations/isconfigured
| +--ro actual-freq decimal64 | +--ro nominal-freq decimal64
| +--ro clock-precision uint8 | +--ro actual-freq decimal64
| +--ro clock-offset? decimal64 | +--ro clock-precision uint8
| +--ro root-delay? decimal64 | +--ro clock-offset? decimal64
| +--ro root-dispersion? decimal64 | +--ro root-delay? decimal64
| +--ro reference-time? yang:date-and-time | +--ro root-dispersion? decimal64
| +--ro sync-state ntp-sync-state | +--ro reference-time? yang:date-and-time
+--rw unicast-configuration* [address type] | +--ro sync-state ntp-sync-state
| +--rw address inet:host +--rw unicast-configuration* [address type]
| +--rw type unicast-configuration-type | +--rw address inet:host
| +--rw authentication | +--rw type unicast-configuration-type
| | +--rw (authentication-type)? | +--rw authentication
| | +--:(symmetric-key) | | +--rw (authentication-type)?
| | +--rw key-id? leafref | | +--:(symmetric-key)
| +--rw prefer? boolean | | +--rw key-id? leafref
| +--rw burst? boolean | +--rw prefer? boolean
| +--rw iburst? boolean | +--rw burst? boolean
| +--rw source? if:interface-ref | +--rw iburst? boolean
| +--rw minpoll? ntp-minpoll | +--rw source? if:interface-ref
| +--rw maxpoll? ntp-maxpoll | +--rw minpoll? ntp-minpoll
| +--rw port? inet:port-number {ntp-port}? | +--rw maxpoll? ntp-maxpoll
| +--rw version? ntp-version | +--rw port? inet:port-number {ntp-port}?
+--ro associations* [address local-mode isconfigured] | +--rw version? ntp-version
| +--ro address inet:host +--ro associations* [address local-mode isconfigured]
| +--ro local-mode association-mode | +--ro address inet:host
| +--ro isconfigured boolean | +--ro local-mode association-mode
| +--ro stratum? ntp-stratum | +--ro isconfigured boolean
| +--ro refid? union | +--ro stratum? ntp-stratum
| +--ro authentication? | +--ro refid? union
| | -> /ntp/authentication/authentication-keys/key-id | +--ro authentication?
| +--ro prefer? boolean | | -> /ntp/authentication/authentication-keys/key-id
| +--ro peer-interface? if:interface-ref | +--ro prefer? boolean
| +--ro minpoll? ntp-minpoll | +--ro peer-interface? if:interface-ref
| +--ro maxpoll? ntp-maxpoll | +--ro minpoll? ntp-minpoll
| +--ro port? inet:port-number {ntp-port}? | +--ro maxpoll? ntp-maxpoll
| +--ro version? ntp-version | +--ro port? inet:port-number {ntp-port}?
| +--ro reach? uint8 | +--ro version? ntp-version
| +--ro unreach? uint8 | +--ro reach? uint8
| +--ro poll? uint8 | +--ro unreach? uint8
| +--ro now? uint32 | +--ro poll? uint8
| +--ro offset? decimal64 | +--ro now? uint32
| +--ro delay? decimal64 | +--ro offset? decimal64
| +--ro dispersion? decimal64 | +--ro delay? decimal64
| +--ro originate-time? yang:date-and-time | +--ro dispersion? decimal64
| +--ro receive-time? yang:date-and-time | +--ro originate-time? yang:date-and-time
| +--ro transmit-time? yang:date-and-time | +--ro receive-time? yang:date-and-time
| +--ro input-time? yang:date-and-time | +--ro transmit-time? yang:date-and-time
| +--ro ntp-statistics | +--ro input-time? yang:date-and-time
| +--ro packet-sent? yang:counter32 | +--ro ntp-statistics
| +--ro packet-sent-fail? yang:counter32 | +--ro packet-sent? yang:counter32
| +--ro packet-received? yang:counter32 | +--ro packet-sent-fail? yang:counter32
| +--ro packet-dropped? yang:counter32 | +--ro packet-received? yang:counter32
+--rw interfaces | +--ro packet-dropped? yang:counter32
| +--rw interface* [name] +--rw interfaces
| +--rw name if:interface-ref | +--rw interface* [name]
| +--rw broadcast-server! | +--rw name if:interface-ref
| | +--rw ttl? uint8 | +--rw broadcast-server!
| | +--rw authentication | | +--rw ttl? uint8
| | | +--rw (authentication-type)? | | +--rw authentication
| | | +--:(symmetric-key) | | | +--rw (authentication-type)?
| | | +--rw key-id? leafref | | | +--:(symmetric-key)
| | +--rw minpoll? ntp-minpoll | | | +--rw key-id? leafref
| | +--rw maxpoll? ntp-maxpoll | | +--rw minpoll? ntp-minpoll
| | +--rw port? inet:port-number {ntp-port}? | | +--rw maxpoll? ntp-maxpoll
| | +--rw version? ntp-version | | +--rw port? inet:port-number {ntp-port}?
| +--rw broadcast-client! | | +--rw version? ntp-version
| +--rw multicast-server* [address] | +--rw broadcast-client!
| | +--rw address rt-types:ip-multicast-group-address | +--rw multicast-server* [address]
| | +--rw ttl? uint8 | | +--rw address
| | +--rw authentication | | | rt-types:ip-multicast-group-address
| | | +--rw (authentication-type)? | | +--rw ttl? uint8
| | | +--:(symmetric-key) | | +--rw authentication
| | | +--rw key-id? leafref | | | +--rw (authentication-type)?
| | +--rw minpoll? ntp-minpoll | | | +--:(symmetric-key)
| | +--rw maxpoll? ntp-maxpoll | | | +--rw key-id? leafref
| | +--rw port? inet:port-number {ntp-port}? | | +--rw minpoll? ntp-minpoll
| | +--rw version? ntp-version | | +--rw maxpoll? ntp-maxpoll
| +--rw multicast-client* [address] | | +--rw port? inet:port-number {ntp-port}?
| | +--rw address rt-types:ip-multicast-group-address | | +--rw version? ntp-version
| +--rw manycast-server* [address] | +--rw multicast-client* [address]
| | +--rw address rt-types:ip-multicast-group-address | | +--rw address rt-types:ip-multicast-group-address
| +--rw manycast-client* [address] | +--rw manycast-server* [address]
| +--rw address rt-types:ip-multicast-group-address | | +--rw address rt-types:ip-multicast-group-address
| +--rw authentication | +--rw manycast-client* [address]
| | +--rw (authentication-type)? | +--rw address
| | +--:(symmetric-key) | | rt-types:ip-multicast-group-address
| | +--rw key-id? leafref | +--rw authentication
| +--rw ttl? uint8 | | +--rw (authentication-type)?
| +--rw minclock? uint8 | | +--:(symmetric-key)
| +--rw maxclock? uint8 | | +--rw key-id? leafref
| +--rw beacon? uint8 | +--rw ttl? uint8
| +--rw minpoll? ntp-minpoll | +--rw minclock? uint8
| +--rw maxpoll? ntp-maxpoll | +--rw maxclock? uint8
| +--rw port? inet:port-number {ntp-port}? | +--rw beacon? uint8
| +--rw version? ntp-version | +--rw minpoll? ntp-minpoll
+--ro ntp-statistics | +--rw maxpoll? ntp-maxpoll
+--ro packet-sent? yang:counter32 | +--rw port? inet:port-number {ntp-port}?
+--ro packet-sent-fail? yang:counter32 | +--rw version? ntp-version
+--ro packet-received? yang:counter32 +--ro ntp-statistics
+--ro packet-dropped? yang:counter32 +--ro packet-sent? yang:counter32
+--ro packet-sent-fail? yang:counter32
+--ro packet-received? yang:counter32
+--ro packet-dropped? yang:counter32
groupings: groupings:
authentication authentication
+---- (authentication-type)? +---- (authentication-type)?
+--:(symmetric-key) +--:(symmetric-key)
+---- key-id? +---- key-id?
-> /ntp/authentication/authentication-keys/key-id -> /ntp/authentication/authentication-keys/key-id
statistics statistics
+---- packet-sent? yang:counter32 +---- packet-sent? yang:counter32
+---- packet-sent-fail? yang:counter32 +---- packet-sent-fail? yang:counter32
skipping to change at page 7, line 29 skipping to change at page 7, line 33
authentication-key authentication-key
+---- key-id? uint32 +---- key-id? uint32
+---- algorithm? identityref +---- algorithm? identityref
+---- key? ianach:crypt-hash +---- key? ianach:crypt-hash
+---- istrusted? boolean +---- istrusted? boolean
association-ref association-ref
+---- associations-address? -> /ntp/associations/address +---- associations-address? -> /ntp/associations/address
+---- associations-local-mode? -> /ntp/associations/local-mode +---- associations-local-mode? -> /ntp/associations/local-mode
+---- associations-isconfigured? -> /ntp/associations/isconfigured +---- associations-isconfigured?
-> /ntp/associations/isconfigured
common-attributes common-attributes
+---- minpoll? ntp-minpoll +---- minpoll? ntp-minpoll
+---- maxpoll? ntp-maxpoll +---- maxpoll? ntp-maxpoll
+---- port? inet:port-number {ntp-port}? +---- port? inet:port-number {ntp-port}?
+---- version? ntp-version +---- version? ntp-version
This data model defines one top-level container which includes both This data model defines one top-level container which includes both
the NTP configuration and the NTP running state including access the NTP configuration and the NTP running state including access
rules, authentication, associations, unicast configurations, rules, authentication, associations, unicast configurations,
interfaces, system status and associations. interfaces, system status and associations.
3. Relationship with NTPv4-MIB 3. Relationship with NTPv4-MIB
If the device implements the NTPv4-MIB [RFC5907], data nodes from If the device implements the NTPv4-MIB [RFC5907], data nodes from
YANG module can be mapped to table entries in NTPv4-MIB. YANG module can be mapped to table entries in NTPv4-MIB.
The following tables list the YANG data nodes with corresponding The following tables list the YANG data nodes with corresponding
objects in the NTPv4-MIB. objects in the NTPv4-MIB.
+--------------------------+--------------------------+
| YANG data nodes in /ntp/ | NTPv4-MIB objects |
+--------------------------+--------------------------+
| ntp-enabled | ntpEntStatusCurrentMode |
+--------------------------+--------------------------+
+--------------------------------------+---------------------+
| YANG data nodes in /ntp/associations | NTPv4-MIB objects |
+--------------------------------------+---------------------+
| address | ntpAssocAddressType |
| | ntpAssocAddress |
+--------------------------------------+---------------------+
YANG NTP Configuration Data Nodes and Related NTPv4-MIB Objects YANG NTP Configuration Data Nodes and Related NTPv4-MIB Objects
+---------------------------------+---------------------------------+ +---------------------------------+---------------------------------+
| YANG data nodes in /ntp/clock- | NTPv4-MIB objects | | YANG data nodes in /ntp/clock- | NTPv4-MIB objects |
| state/system-status | | | state/system-status | |
+---------------------------------+---------------------------------+ +---------------------------------+---------------------------------+
| clock-state | ntpEntStatusCurrentMode | | clock-state | ntpEntStatusCurrentMode |
| clock-stratum | ntpEntStatusStratum | | clock-stratum | ntpEntStatusStratum |
| clock-refid | ntpEntStatusActiveRefSourceId | | clock-refid | ntpEntStatusActiveRefSourceId |
| | ntpEntStatusActiveRefSourceName | | | ntpEntStatusActiveRefSourceName |
skipping to change at page 9, line 17 skipping to change at page 9, line 8
This section describes the relationship with NTP definition in This section describes the relationship with NTP definition in
Section 3.2 System Time Management of [RFC7317] . YANG data nodes in Section 3.2 System Time Management of [RFC7317] . YANG data nodes in
/ntp/ also supports per-interface configurations which is not /ntp/ also supports per-interface configurations which is not
supported in /system/ntp. If the yang model defined in this document supported in /system/ntp. If the yang model defined in this document
is implemented, then /system/ntp SHOULD NOT be used and MUST be is implemented, then /system/ntp SHOULD NOT be used and MUST be
ignored. ignored.
+-------------------------------+--------------------------------+ +-------------------------------+--------------------------------+
| YANG data nodes in /ntp/ | YANG data nodes in /system/ntp | | YANG data nodes in /ntp/ | YANG data nodes in /system/ntp |
+-------------------------------+--------------------------------+ +-------------------------------+--------------------------------+
| ntp-enabled | enabled | | ntp! | enabled |
| unicast-configuration | server | | unicast-configuration | server |
| | server/name | | | server/name |
| unicast-configuration/address | server/transport/udp/address | | unicast-configuration/address | server/transport/udp/address |
| unicast-configuration/port | server/transport/udp/port | | unicast-configuration/port | server/transport/udp/port |
| unicast-configuration/type | server/association-type | | unicast-configuration/type | server/association-type |
| unicast-configuration/iburst | server/iburst | | unicast-configuration/iburst | server/iburst |
| unicast-configuration/prefer | server/prefer | | unicast-configuration/prefer | server/prefer |
+-------------------------------+--------------------------------+ +-------------------------------+--------------------------------+
YANG NTP Configuration Data Nodes and counterparts in RFC 7317 YANG NTP Configuration Data Nodes and counterparts in RFC 7317
skipping to change at page 10, line 7 skipping to change at page 9, line 45
together with a set of predistributed algorithms, and cryptographic together with a set of predistributed algorithms, and cryptographic
keys indexed by a key identifier included in the NTP message. This keys indexed by a key identifier included in the NTP message. This
key-id is 32-bits unsigned integer that MUST be configured on the NTP key-id is 32-bits unsigned integer that MUST be configured on the NTP
peers before the authentication could be used. For this reason, this peers before the authentication could be used. For this reason, this
YANG modules allow such configuration via /ntp/authentication/ YANG modules allow such configuration via /ntp/authentication/
authentication-keys/. Further at the time of configuration of NTP authentication-keys/. Further at the time of configuration of NTP
association (for example unicast-server), the key-id is specefied. association (for example unicast-server), the key-id is specefied.
7. NTP YANG Module 7. NTP YANG Module
<CODE BEGINS> file "ietf-ntp@2018-10-15.yang" <CODE BEGINS> file "ietf-ntp@2018-12-17.yang"
module ietf-ntp { module ietf-ntp {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-ntp"; namespace "urn:ietf:params:xml:ns:yang:ietf-ntp";
prefix "ntp"; prefix "ntp";
import ietf-yang-types { import ietf-yang-types {
prefix "yang"; prefix "yang";
reference "RFC 6991"; reference "RFC 6991";
} }
import ietf-inet-types { import ietf-inet-types {
prefix "inet"; prefix "inet";
reference "RFC 6991"; reference "RFC 6991";
} }
skipping to change at page 10, line 45 skipping to change at page 10, line 33
import ietf-key-chain { import ietf-key-chain {
prefix "key-chain"; prefix "key-chain";
reference "RFC 8177"; reference "RFC 8177";
} }
import ietf-access-control-list { import ietf-access-control-list {
prefix "acl"; prefix "acl";
reference "RFC XXXX"; reference "RFC XXXX";
} }
/* Note: The RFC Editor will replace XXXX with the number assigned
to the RFC once draft-ietf-netmod-acl-model becomes an RFC.*/
import ietf-routing-types { import ietf-routing-types {
prefix "rt-types"; prefix "rt-types";
reference "RFC 8294"; reference "RFC 8294";
} }
organization organization
"IETF NTP (Network Time Protocol) Working Group"; "IETF NTP (Network Time Protocol) Working Group";
contact contact
skipping to change at page 11, line 19 skipping to change at page 11, line 12
<mailto:eric.wu@huawei.com> <mailto:eric.wu@huawei.com>
Editor: Anil Kumar S N Editor: Anil Kumar S N
<mailto:anil.ietf@gmail.com> <mailto:anil.ietf@gmail.com>
Editor: Yi Zhao Editor: Yi Zhao
<mailto:yi.z.zhao@ericsson.com> <mailto:yi.z.zhao@ericsson.com>
Editor: Dhruv Dhody Editor: Dhruv Dhody
<mailto:dhruv.ietf@gmail.com> <mailto:dhruv.ietf@gmail.com>
Editor: Ankit Kumar Sinha Editor: Ankit Kumar Sinha
<mailto:ankit.ietf@gmail.com>"; <mailto:ankit.ietf@gmail.com>";
description description
"This YANG module defines essential components for the "This document defines a YANG data model for Network Time Protocol
management of a routing subsystem. (NTP) implementations. The data model includes configuration data
and state data.
Copyright (c) 2018 IETF Trust and the persons identified Copyright (c) 2018 IETF Trust and the persons identified
as authors of the code. All rights reserved. as authors of the code. All rights reserved.
Redistribution and use in source and binary forms, Redistribution and use in source and binary forms,
with or without modification, is permitted pursuant to, with or without modification, is permitted pursuant to,
and subject to the license terms contained in, the and subject to the license terms contained in, the
Simplified BSD License set forth in Section 4.c of the Simplified BSD License set forth in Section 4.c of the
IETF Trust's Legal Provisions Relating to IETF Documents IETF Trust's Legal Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; This version of this YANG module is part of RFC YYYY;
see the RFC itself for full legal notices."; see the RFC itself for full legal notices.";
revision 2018-10-15 { revision 2018-12-17 {
description description
"Updated revision."; "Updated revision.";
reference reference
"RFC XXXX: A YANG Data Model for NTP Management"; "RFC YYYY: A YANG Data Model for NTP.";
} }
/* Note: The RFC Editor will replace YYYY with the number assigned
to this document once it becomes an RFC.*/
/* Typedef Definitions */ /* Typedef Definitions */
typedef ntp-stratum { typedef ntp-stratum {
type uint8 { type uint8 {
range "1..16"; range "1..16";
} }
description description
"The level of each server in the hierarchy is defined by "The level of each server in the hierarchy is defined by
a stratum. Primary servers are assigned with stratum a stratum. Primary servers are assigned with stratum
one; secondary servers at each lower level are assigned with one; secondary servers at each lower level are assigned with
skipping to change at page 18, line 25 skipping to change at page 18, line 25
} }
} }
} }
grouping statistics { grouping statistics {
description description
"NTP packet statistic."; "NTP packet statistic.";
leaf packet-sent { leaf packet-sent {
type yang:counter32; type yang:counter32;
description description
"The total number of packets sent."; "The total number of NTP packets delivered to the
transport service by this NTP entity for this
association.
Discountinuities in the value of this counter can occur
upon cold start or reinitialization of the NTP entity, the
management system and at other times as indicated by
discontinuities in the value of sysUpTime.";
} }
leaf packet-sent-fail { leaf packet-sent-fail {
type yang:counter32; type yang:counter32;
description description
"The number of times packet "The number of times NTP packets sending failed.";
sending failed.";
} }
leaf packet-received { leaf packet-received {
type yang:counter32; type yang:counter32;
description description
"The total number of packets received."; "The total number of NTP packets delivered to the
NTP entity from this association.
Discountinuities in the value of this counter can occur
upon cold start or reinitialization of the NTP entity, the
management system and at other times as indicated by
discontinuities in the value of sysUpTime.";
} }
leaf packet-dropped { leaf packet-dropped {
type yang:counter32; type yang:counter32;
description description
"The number of packets dropped."; "The total number of NTP packets that were delivered
to this NTP entity from this association and this entity
was not able to process due to an NTP protocol error.
Discountinuities in the value of this counter can occur
upon cold start or reinitialization of the NTP entity, the
management system and at other times as indicated by
discontinuities in the value of sysUpTime.";
} }
} }
grouping common-attributes { grouping common-attributes {
description description
"NTP common attributes for configuration."; "NTP common attributes for configuration.";
leaf minpoll { leaf minpoll {
type ntp-minpoll; type ntp-minpoll;
description description
"The minimum poll interval used in this association."; "The minimum poll interval used in this association.";
skipping to change at page 20, line 11 skipping to change at page 20, line 26
} }
description description
"The association was configured or dynamic "The association was configured or dynamic
which result in clock synchronization."; which result in clock synchronization.";
} }
} }
/* Configuration data nodes */ /* Configuration data nodes */
container ntp { container ntp {
presence presence
"NTP is enabled"; "NTP is enabled and system should attempt to
synchronize the system clock with an NTP server
from the 'ntp/associations' list.";
description description
"Configuration parameters for NTP."; "Configuration parameters for NTP.";
leaf port { leaf port {
if-feature ntp-port; if-feature ntp-port;
type inet:port-number { type inet:port-number {
range "123 | 1025..max"; range "123 | 1025..max";
} }
default "123"; default "123";
description description
"Specify the port used to send NTP packets."; "Specify the port used to send and receive NTP packets.";
} }
container refclock-master { container refclock-master {
presence presence
"NTP master clock is enabled"; "NTP master clock is enabled.";
description description
"Configures the device as NTP server."; "Configures the local clock of this device as NTP server.";
leaf master-stratum { leaf master-stratum {
type ntp-stratum; type ntp-stratum;
default "16"; default "16";
description description
"Stratum level from which NTP "Stratum level from which NTP
clients get their time synchronized."; clients get their time synchronized.";
} }
} }
container authentication { container authentication {
description description
"Configuration of authentication."; "Configuration of authentication.";
leaf auth-enabled { leaf auth-enabled {
type boolean; type boolean;
default false; default false;
description description
"Controls whether NTP authentication is enabled "Controls whether NTP authentication is enabled
or disabled on this device."; or disabled on this device.";
skipping to change at page 21, line 4 skipping to change at page 21, line 22
description description
"Controls whether NTP authentication is enabled "Controls whether NTP authentication is enabled
or disabled on this device."; or disabled on this device.";
} }
list authentication-keys { list authentication-keys {
key "key-id"; key "key-id";
uses authentication-key; uses authentication-key;
description description
"List of authentication keys."; "List of authentication keys.";
} }
} }
container access-rules { container access-rules {
description description
"Configuration to control access to NTP service "Configuration to control access to NTP service
by using NTP access-group feature. by using NTP access-group feature.
The access-mode identifies how the acl is The access-mode identifies how the acl is
applied with NTP"; applied with NTP.";
list access-rule { list access-rule {
key "access-mode"; key "access-mode";
description description
"List of access rules."; "List of access rules.";
leaf access-mode { leaf access-mode {
type access-mode; type access-mode;
description description
"NTP access mode."; "NTP access mode. The defination of each possible values:
peer(0): Both time request and control query can be
performed.
server(1): Enables the server access and query.
synchronization(2): Enables the server access only.
query(3): Enables control query only.";
} }
leaf acl { leaf acl {
type leafref { type leafref {
path "/acl:acls/acl:acl/acl:name"; path "/acl:acls/acl:acl/acl:name";
} }
description description
"NTP ACL."; "Control access configuration to be used.";
} }
reference reference
"RFC 1305"; "RFC 1305";
} }
} }
container clock-state { container clock-state {
config "false"; config "false";
description description
"Operational state of the NTP."; "Clock operational state of the NTP.";
container system-status { container system-status {
description description
"System status of NTP."; "System status of NTP.";
leaf clock-state { leaf clock-state {
type ntp-clock-status; type ntp-clock-status;
mandatory true; mandatory true;
description description
"The state of system clock."; "The state of system clock. The definition of each
possible value is:
synchronized(0): Indicates local clock is synchronized.
unsynchronized(1): Indicates local clock is not
synchronized.";
} }
leaf clock-stratum { leaf clock-stratum {
type ntp-stratum; type ntp-stratum;
mandatory true; mandatory true;
description description
"The stratum of the reference clock."; "The NTP entity's own stratum value. Should be a stratum
of syspeer + 1 (or 16 if no syspeer).";
} }
leaf clock-refid { leaf clock-refid {
type union { type union {
type inet:ipv4-address; type inet:ipv4-address;
type binary { type binary {
length "4"; length "4";
} }
type string { type string {
length "4"; length "4";
} }
} }
mandatory true; mandatory true;
description description
"IPv4 address or first 32 bits of the MD5 hash of "IPv4 address or first 32 bits of the MD5 hash of
the IPv6 address or reference clock of the peer to the IPv6 address or reference clock of the peer to
which clock is synchronized."; which clock is synchronized.";
} }
uses association-ref { uses association-ref {
description description
"Reference to Association"; "Reference to Association.";
} }
leaf nominal-freq { leaf nominal-freq {
type decimal64 { type decimal64 {
fraction-digits 4; fraction-digits 4;
} }
units Hz; units Hz;
mandatory true; mandatory true;
description description
"The nominal frequency of the "The nominal frequency of the
local clock"; local clock.";
} }
leaf actual-freq { leaf actual-freq {
type decimal64 { type decimal64 {
fraction-digits 4; fraction-digits 4;
} }
units Hz; units Hz;
mandatory true; mandatory true;
description description
"The actual frequency of the "The actual frequency of the
local clock"; local clock.";
} }
leaf clock-precision { leaf clock-precision {
type uint8; type uint8;
units Hz; units Hz;
mandatory true; mandatory true;
description description
"Clock precision of this system "Clock precision of this system in integer format
(prec=2^(-n))"; (prec=2^(-n)). A value of 5 would mean 2^-5 = 31.25 ms.";
} }
leaf clock-offset { leaf clock-offset {
type decimal64 { type decimal64 {
fraction-digits 4; fraction-digits 3;
} }
units milliseconds; units milliseconds;
description description
"Clock offset with the synchronized peer"; "The time offset to the current selected reference time
source e.g., '0.032' or '1.232'.";
} }
leaf root-delay { leaf root-delay {
type decimal64 { type decimal64 {
fraction-digits 2; fraction-digits 3;
} }
units milliseconds; units milliseconds;
description description
"Total delay along the path to root clock"; "Total delay along the path to root clock.";
} }
leaf root-dispersion { leaf root-dispersion {
type decimal64 { type decimal64 {
fraction-digits 2; fraction-digits 3;
} }
units milliseconds; units milliseconds;
description description
"The dispersion between the local clock "The dispersion between the local clock
and the master reference clock."; and the root clock, e.g., '6.927'.";
} }
leaf reference-time { leaf reference-time {
type yang:date-and-time; type yang:date-and-time;
description description
"The reference timestamp."; "The reference timestamp.";
} }
leaf sync-state { leaf sync-state {
type ntp-sync-state; type ntp-sync-state;
mandatory true; mandatory true;
description description
"The synchronization status of "The synchronization status of
the local clock."; the local clock.";
} }
} }
} }
list unicast-configuration { list unicast-configuration {
key "address type"; key "address type";
description description
"List of unicast-configuration."; "List of NTP unicast-configurations.";
leaf address { leaf address {
type inet:host; type inet:host;
description description
"Address of this association."; "Address of this association.";
} }
leaf type { leaf type {
type unicast-configuration-type; type unicast-configuration-type;
description description
"Type of unicast configuration"; "Use client association mode. This device
will not provide synchronization to the
configured NTP server.";
} }
container authentication{ container authentication{
description description
"Authentication."; "Authentication used for this association.";
uses authentication; uses authentication;
} }
leaf prefer { leaf prefer {
type boolean; type boolean;
default "false"; default "false";
description description
"Whether this association is preferred."; "Whether this association is preferred or not.";
} }
leaf burst { leaf burst {
type boolean; type boolean;
default "false"; default "false";
description description
"If set, a series of packets are sent instead of a single "If set, a series of packets are sent instead of a single
packet within each synchronization interval to achieve faster packet within each synchronization interval to achieve faster
synchronization."; synchronization.";
} }
leaf iburst { leaf iburst {
skipping to change at page 25, line 6 skipping to change at page 25, line 36
uses common-attributes { uses common-attributes {
description description
"Common attributes like port, version, min and max "Common attributes like port, version, min and max
poll."; poll.";
} }
} }
list associations { list associations {
key "address local-mode isconfigured"; key "address local-mode isconfigured";
config "false"; config "false";
description description
"list of NTP associations. Here address,local-mode "List of NTP associations. Here address, local-mode
and isconfigured is required to uniquely identify and isconfigured is required to uniquely identify
a particular association. Lets take following examples a particular association. Lets take following examples -
1) If RT1 acting as broadcast server, 1) If RT1 acting as broadcast server,
and RT2 acting as broadcast client, then RT2 and RT2 acting as broadcast client, then RT2
will form dynamic association with address as RT1, will form dynamic association with address as RT1,
local-mode as client and isconfigured as false. local-mode as client and isconfigured as false.
2) When RT2 is configured 2) When RT2 is configured
with unicast-server RT1, then RT2 will form with unicast-server RT1, then RT2 will form
association with address as RT1, local-mode as client association with address as RT1, local-mode as client
and isconfigured as true. and isconfigured as true.
Thus all 3 leaves are needed as key to unique identify
the association.";
Thus all 3 leaves are needed as key to unique identify
the association.";
leaf address { leaf address {
type inet:host; type inet:host;
description description
"The address of this association."; "The address of this association. Represents the IP
address of a unicast/multicast/broadcast address.";
} }
leaf local-mode { leaf local-mode {
type association-mode; type association-mode;
description description
"Local mode for this NTP association."; "Local mode of this NTP association.";
} }
leaf isconfigured { leaf isconfigured {
type boolean; type boolean;
description description
"Indicates if this association is configured or "Indicates if this association is configured or
dynamically learned."; dynamically learned.";
} }
leaf stratum { leaf stratum {
type ntp-stratum; type ntp-stratum;
description description
"Indicates the stratum of the reference clock."; "The association stratum value.";
} }
leaf refid { leaf refid {
type union { type union {
type inet:ipv4-address; type inet:ipv4-address;
type binary { type binary {
length "4"; length "4";
} }
type string { type string {
length "4"; length "4";
} }
skipping to change at page 26, line 4 skipping to change at page 26, line 36
} }
leaf refid { leaf refid {
type union { type union {
type inet:ipv4-address; type inet:ipv4-address;
type binary { type binary {
length "4"; length "4";
} }
type string { type string {
length "4"; length "4";
} }
} }
description description
"Reference clock type or address for the peer."; "The refclock driver ID, if available.
-- a refclock driver ID like '127.127.1.0' for local clock
sync
-- uni/multi/broadcast associations will look like '20.1.1.1'
-- sync with primary source will look like 'DCN', 'NIST',
'ATOM'";
reference
"RFC 1305";
} }
leaf authentication{ leaf authentication{
type leafref { type leafref {
path "/ntp:ntp/ntp:authentication/" path "/ntp:ntp/ntp:authentication/"
+ "ntp:authentication-keys/ntp:key-id"; + "ntp:authentication-keys/ntp:key-id";
} }
description description
"Authentication Key used for this association."; "Authentication Key used for this association.";
} }
leaf prefer { leaf prefer {
skipping to change at page 27, line 11 skipping to change at page 27, line 49
} }
leaf now { leaf now {
type uint32; type uint32;
units seconds; units seconds;
description description
"The time since the NTP packet was "The time since the NTP packet was
not received or last synchronized."; not received or last synchronized.";
} }
leaf offset { leaf offset {
type decimal64 { type decimal64 {
fraction-digits 4; fraction-digits 3;
} }
units milliseconds;
description description
"The offset between the local clock "The offset between the local clock
and the superior reference clock."; and the peer clock, e.g., '0.032' or '1.232'";
} }
leaf delay { leaf delay {
type decimal64 { type decimal64 {
fraction-digits 2; fraction-digits 3;
} }
units milliseconds;
description description
"The delay between the local clock "The network delay between the local clock
and the superior reference clock."; and the peer clock.";
} }
leaf dispersion { leaf dispersion {
type decimal64 { type decimal64 {
fraction-digits 2; fraction-digits 3;
} }
units milliseconds;
description description
"The dispersion between the local clock "The root dispersion between the local clock
and the superior reference clock."; and the peer clock.";
} }
leaf originate-time { leaf originate-time {
type yang:date-and-time; type yang:date-and-time;
description description
"The packet originate timestamp(T1)."; "This is the local time, in timestamp format,
when latest NTP packet was sent to peer(T1).";
reference
"RFC 1305";
} }
leaf receive-time { leaf receive-time {
type yang:date-and-time; type yang:date-and-time;
description description
"The packet receive timestamp(T2)."; "This is the local time, in timestamp format,
when latest NTP packet arrived at peer(T2).
If the peer becomes unreachable the value is set to zero.";
reference
"RFC 1305";
} }
leaf transmit-time { leaf transmit-time {
type yang:date-and-time; type yang:date-and-time;
description description
"The packet transmit timestamp(T3)."; "This is the local time, in timestamp format,
at which the NTP packet departed the peer(T3).
If the peer becomes unreachable the value is set to zero.";
reference
"RFC 1305";
} }
leaf input-time { leaf input-time {
type yang:date-and-time; type yang:date-and-time;
description description
"The packet input timestamp(T4)."; "This is the local time, in timestamp format,
when the latest NTP message from the peer arrived(T4).
If the peer becomes unreachable the value is set to zero.";
reference
"RFC 1305";
} }
container ntp-statistics { container ntp-statistics {
description description
"Per Peer packet send and receive statistics."; "Per Peer packet send and receive statistics.";
uses statistics { uses statistics {
description description
"NTP send and receive packet statistics."; "NTP send and receive packet statistics.";
} }
} }
} }
skipping to change at page 28, line 37 skipping to change at page 29, line 44
} }
container broadcast-server { container broadcast-server {
presence presence
"NTP broadcast-server is configured"; "NTP broadcast-server is configured";
description description
"Configuration of broadcast server."; "Configuration of broadcast server.";
leaf ttl { leaf ttl {
type uint8; type uint8;
description description
"Specifies the time to live (TTL) of a "Specifies the time to live (TTL) for a
broadcast packet."; broadcast packet.";
} }
container authentication{ container authentication{
description description
"Authentication."; "Authentication used for this association.";
uses authentication; uses authentication;
} }
uses common-attributes { uses common-attributes {
description description
"Common attribute like port, version, min and "Common attribute like port, version, min and
max poll."; max poll.";
} }
} }
container broadcast-client { container broadcast-client {
presence presence
"NTP broadcast-client is configured"; "NTP broadcast-client is configured.";
description description
"Configuration of broadcast-client."; "Configuration of broadcast-client.";
} }
list multicast-server { list multicast-server {
key "address"; key "address";
description description
"Configuration of multicast server."; "Configuration of multicast server.";
leaf address { leaf address {
type rt-types:ip-multicast-group-address; type rt-types:ip-multicast-group-address;
description description
"The IP address to send NTP multicast packets."; "The IP address to send NTP multicast packets.";
} }
leaf ttl { leaf ttl {
type uint8; type uint8;
description description
"Specifies the time to live (TTL) of a "Specifies the time to live (TTL) for a
multicast packet."; multicast packet.";
} }
container authentication{ container authentication{
description description
"Authentication."; "Authentication used for this association.";
uses authentication; uses authentication;
} }
uses common-attributes { uses common-attributes {
description description
"Common attributes like port, version, min and "Common attributes like port, version, min and
max poll."; max poll.";
} }
} }
list multicast-client { list multicast-client {
key "address"; key "address";
skipping to change at page 30, line 7 skipping to change at page 31, line 15
} }
} }
list manycast-server { list manycast-server {
key "address"; key "address";
description description
"Configuration of manycast server."; "Configuration of manycast server.";
leaf address { leaf address {
type rt-types:ip-multicast-group-address; type rt-types:ip-multicast-group-address;
description description
"The multicast group IP address to receive "The multicast group IP address to receive
manycast client messages ."; manycast client messages.";
} }
reference reference
"RFC 5905"; "RFC 5905";
} }
list manycast-client { list manycast-client {
key "address"; key "address";
description description
"Configuration of manycast-client."; "Configuration of manycast-client.";
leaf address { leaf address {
type rt-types:ip-multicast-group-address; type rt-types:ip-multicast-group-address;
description description
"The group IP address that the manycast client "The group IP address that the manycast client
broadcasts the request message to."; broadcasts the request message to.";
} }
container authentication{ container authentication{
description description
"Authentication."; "Authentication used for this association.";
uses authentication; uses authentication;
} }
leaf ttl { leaf ttl {
type uint8; type uint8;
description description
"Specifies the maximum time to live (TTL) for "Specifies the maximum time to live (TTL) for
the expanding ring search."; the expanding ring search.";
} }
leaf minclock { leaf minclock {
type uint8; type uint8;
skipping to change at page 45, line 37 skipping to change at page 46, line 37
</data> </data>
9. IANA Considerations 9. IANA Considerations
This document registers a URI in the "IETF XML Registry" [RFC3688]. This document registers a URI in the "IETF XML Registry" [RFC3688].
Following the format in RFC 3688, the following registration has been Following the format in RFC 3688, the following registration has been
made. made.
URI: urn:ietf:params:xml:ns:yang:ietf-ntp URI: urn:ietf:params:xml:ns:yang:ietf-ntp
Registrant Contact: The NETMOD WG of the IETF. Registrant Contact: The NTP WG of the IETF.
XML: N/A; the requested URI is an XML namespace. XML: N/A; the requested URI is an XML namespace.
This document registers a YANG module in the "YANG Module Names" This document registers a YANG module in the "YANG Module Names"
registry [RFC6020]. registry [RFC6020].
Name: ietf-ntp Name: ietf-ntp
Namespace: urn:ietf:params:xml:ns:yang:ietf-ntp Namespace: urn:ietf:params:xml:ns:yang:ietf-ntp
Prefix: ntp Prefix: ntp
Reference: RFC XXXX Reference: RFC YYYY
Note: The RFC Editor will replace YYYY with the number assigned to
this document once it becomes an RFC.
10. Security Considerations 10. Security Considerations
The YANG module specified in this document defines a schema for data The YANG module specified in this document defines a schema for data
that is designed to be accessed via network management protocols such that is designed to be accessed via network management protocols such
as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer
is the secure transport layer, and the mandatory-to-implement secure is the secure transport layer, and the mandatory-to-implement secure
transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer
is HTTPS, and the mandatory-to-implement secure transport is TLS is HTTPS, and the mandatory-to-implement secure transport is TLS
[RFC8446]. [RFC8446].
skipping to change at page 47, line 22 skipping to change at page 48, line 24
Danny Mayer, Harlan Stenn, Ulrich Windl, Miroslav Lichvar, and Danny Mayer, Harlan Stenn, Ulrich Windl, Miroslav Lichvar, and
Maurice Angermann for their review and suggestions. Maurice Angermann for their review and suggestions.
12. References 12. References
12.1. Normative References 12.1. Normative References
[I-D.ietf-netmod-acl-model] [I-D.ietf-netmod-acl-model]
Jethanandani, M., Agarwal, S., Huang, L., and D. Blair, Jethanandani, M., Agarwal, S., Huang, L., and D. Blair,
"Network Access Control List (ACL) YANG Data Model", "Network Access Control List (ACL) YANG Data Model",
draft-ietf-netmod-acl-model-20 (work in progress), October draft-ietf-netmod-acl-model-21 (work in progress),
2018. November 2018.
[RFC1305] Mills, D., "Network Time Protocol (Version 3) [RFC1305] Mills, D., "Network Time Protocol (Version 3)
Specification, Implementation and Analysis", RFC 1305, Specification, Implementation and Analysis", RFC 1305,
DOI 10.17487/RFC1305, March 1992, DOI 10.17487/RFC1305, March 1992,
<https://www.rfc-editor.org/info/rfc1305>. <https://www.rfc-editor.org/info/rfc1305>.
[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>.
 End of changes. 81 change blocks. 
247 lines changed or deleted 305 lines changed or added

This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/