draft-ietf-netconf-netconf-client-server-06.txt | draft-ietf-netconf-netconf-client-server-07.txt | |||
---|---|---|---|---|
NETCONF Working Group K. Watsen | NETCONF Working Group K. Watsen | |||
Internet-Draft Juniper Networks | Internet-Draft Juniper Networks | |||
Intended status: Standards Track G. Wu | Intended status: Standards Track September 20, 2018 | |||
Expires: December 6, 2018 Cisco Networks | Expires: March 24, 2019 | |||
June 4, 2018 | ||||
NETCONF Client and Server Models | NETCONF Client and Server Models | |||
draft-ietf-netconf-netconf-client-server-06 | draft-ietf-netconf-netconf-client-server-07 | |||
Abstract | Abstract | |||
This document defines two YANG modules, one module to configure a | This document defines two YANG modules, one module to configure a | |||
NETCONF client and the other module to configure a NETCONF server. | NETCONF client and the other module to configure a NETCONF server. | |||
Both modules support both the SSH and TLS transport protocols, and | Both modules support both the SSH and TLS transport protocols, and | |||
support both standard NETCONF and NETCONF Call Home connections. | support both standard NETCONF and NETCONF Call Home connections. | |||
Editorial Note (To be removed by RFC Editor) | Editorial Note (To be removed by RFC Editor) | |||
skipping to change at page 2, line 5 ¶ | skipping to change at page 2, line 5 ¶ | |||
o "YYYY" --> the assigned RFC value for I-D.ietf-netconf-ssh-client- | o "YYYY" --> the assigned RFC value for I-D.ietf-netconf-ssh-client- | |||
server | server | |||
o "ZZZZ" --> the assigned RFC value for I-D.ietf-netconf-tls-client- | o "ZZZZ" --> the assigned RFC value for I-D.ietf-netconf-tls-client- | |||
server | server | |||
Artwork in this document contains placeholder values for the date of | Artwork in this document contains placeholder values for the date of | |||
publication of this draft. Please apply the following replacement: | publication of this draft. Please apply the following replacement: | |||
o "2018-06-04" --> the publication date of this draft | o "2018-09-20" --> the publication date of this draft | |||
The following Appendix section is to be removed prior to publication: | The following Appendix section is to be removed prior to publication: | |||
o Appendix A. Change Log | o Appendix A. Change Log | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
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 December 6, 2018. | This Internet-Draft will expire on March 24, 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 49 ¶ | skipping to change at page 2, line 49 ¶ | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
3. The NETCONF Client Model . . . . . . . . . . . . . . . . . . 4 | 3. The NETCONF Client Model . . . . . . . . . . . . . . . . . . 4 | |||
3.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 4 | 3.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3.2. Example Usage . . . . . . . . . . . . . . . . . . . . . . 9 | 3.2. Example Usage . . . . . . . . . . . . . . . . . . . . . . 11 | |||
3.3. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 11 | 3.3. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
4. The NETCONF Server Model . . . . . . . . . . . . . . . . . . 22 | 4. The NETCONF Server Model . . . . . . . . . . . . . . . . . . 24 | |||
4.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 22 | 4.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 25 | |||
4.2. Example Usage . . . . . . . . . . . . . . . . . . . . . . 28 | 4.2. Example Usage . . . . . . . . . . . . . . . . . . . . . . 32 | |||
4.3. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 33 | 4.3. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 37 | |||
5. Design Considerations . . . . . . . . . . . . . . . . . . . . 44 | 5. Design Considerations . . . . . . . . . . . . . . . . . . . . 49 | |||
5.1. Support all NETCONF transports . . . . . . . . . . . . . 45 | 5.1. Support all NETCONF transports . . . . . . . . . . . . . 49 | |||
5.2. Enable each transport to select which keys to use . . . . 45 | 5.2. Enable each transport to select which keys to use . . . . 49 | |||
5.3. Support authenticating NETCONF clients certificates . . . 45 | 5.3. Support authenticating NETCONF clients certificates . . . 49 | |||
5.4. Support mapping authenticated NETCONF client certificates | 5.4. Support mapping authenticated NETCONF client certificates | |||
to usernames . . . . . . . . . . . . . . . . . . . . . . 45 | to usernames . . . . . . . . . . . . . . . . . . . . . . 49 | |||
5.5. Support both listening for connections and call home . . 45 | 5.5. Support both listening for connections and call home . . 50 | |||
5.6. For Call Home connections . . . . . . . . . . . . . . . . 46 | 5.6. For Call Home connections . . . . . . . . . . . . . . . . 50 | |||
5.6.1. Support more than one NETCONF client . . . . . . . . 46 | 5.6.1. Support more than one NETCONF client . . . . . . . . 50 | |||
5.6.2. Support NETCONF clients having more than one endpoint 46 | 5.6.2. Support NETCONF clients having more than one endpoint 50 | |||
5.6.3. Support a reconnection strategy . . . . . . . . . . . 46 | 5.6.3. Support a reconnection strategy . . . . . . . . . . . 50 | |||
5.6.4. Support both persistent and periodic connections . . 46 | 5.6.4. Support both persistent and periodic connections . . 50 | |||
5.6.5. Reconnection strategy for periodic connections . . . 46 | 5.6.5. Reconnection strategy for periodic connections . . . 51 | |||
5.6.6. Keep-alives for persistent connections . . . . . . . 47 | 5.6.6. Keep-alives for persistent connections . . . . . . . 51 | |||
5.6.7. Customizations for periodic connections . . . . . . . 47 | 5.6.7. Customizations for periodic connections . . . . . . . 51 | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 47 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 51 | |||
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 48 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 52 | |||
7.1. The IETF XML Registry . . . . . . . . . . . . . . . . . . 48 | 7.1. The IETF XML Registry . . . . . . . . . . . . . . . . . . 52 | |||
7.2. The YANG Module Names Registry . . . . . . . . . . . . . 48 | 7.2. The YANG Module Names Registry . . . . . . . . . . . . . 53 | |||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 49 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 53 | |||
8.1. Normative References . . . . . . . . . . . . . . . . . . 49 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 53 | |||
8.2. Informative References . . . . . . . . . . . . . . . . . 50 | 8.2. Informative References . . . . . . . . . . . . . . . . . 54 | |||
Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 51 | Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 56 | |||
A.1. 00 to 01 . . . . . . . . . . . . . . . . . . . . . . . . 51 | A.1. 00 to 01 . . . . . . . . . . . . . . . . . . . . . . . . 56 | |||
A.2. 01 to 02 . . . . . . . . . . . . . . . . . . . . . . . . 51 | A.2. 01 to 02 . . . . . . . . . . . . . . . . . . . . . . . . 56 | |||
A.3. 02 to 03 . . . . . . . . . . . . . . . . . . . . . . . . 51 | A.3. 02 to 03 . . . . . . . . . . . . . . . . . . . . . . . . 56 | |||
A.4. 03 to 04 . . . . . . . . . . . . . . . . . . . . . . . . 51 | A.4. 03 to 04 . . . . . . . . . . . . . . . . . . . . . . . . 56 | |||
A.5. 04 to 05 . . . . . . . . . . . . . . . . . . . . . . . . 51 | A.5. 04 to 05 . . . . . . . . . . . . . . . . . . . . . . . . 56 | |||
A.6. 05 to 06 . . . . . . . . . . . . . . . . . . . . . . . . 52 | A.6. 05 to 06 . . . . . . . . . . . . . . . . . . . . . . . . 57 | |||
Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 52 | A.7. 06 to 07 . . . . . . . . . . . . . . . . . . . . . . . . 57 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 52 | Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 57 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 57 | ||||
1. Introduction | 1. Introduction | |||
This document defines two YANG [RFC7950] modules, one module to | This document defines two YANG [RFC7950] modules, one module to | |||
configure a NETCONF [RFC6241] client and the other module to | configure a NETCONF [RFC6241] client and the other module to | |||
configure a NETCONF server. Both modules support both NETCONF over | configure a NETCONF server. Both modules support both NETCONF over | |||
SSH [RFC6242] and NETCONF over TLS [RFC7589] and NETCONF Call Home | SSH [RFC6242] and NETCONF over TLS [RFC7589] and NETCONF Call Home | |||
connections [RFC8071]. | connections [RFC8071]. | |||
2. Terminology | 2. Terminology | |||
skipping to change at page 4, line 28 ¶ | skipping to change at page 4, line 28 ¶ | |||
All private keys and trusted certificates are held in the keystore | All private keys and trusted certificates are held in the keystore | |||
model defined in [I-D.ietf-netconf-keystore]. | model defined in [I-D.ietf-netconf-keystore]. | |||
YANG feature statements are used to enable implementations to | YANG feature statements are used to enable implementations to | |||
advertise which parts of the model the NETCONF client supports. | advertise which parts of the model the NETCONF client supports. | |||
3.1. Tree Diagram | 3.1. Tree Diagram | |||
The following tree diagram [RFC8340] provides an overview of the data | The following tree diagram [RFC8340] provides an overview of the data | |||
model for the "ietf-netconf-client" module. Just the container is | model for the "ietf-netconf-client" module. Just the container is | |||
displayed below, but there is also a reuable grouping by the same | displayed below, but there is also a reusable grouping called | |||
name that the container is using. | "netconf-client-grouping" that the container is using. | |||
[Note: '\' line wrapping for formatting only] | [Note: '\' line wrapping for formatting only] | |||
module: ietf-netconf-client | module: ietf-netconf-client | |||
+--rw netconf-client | +--rw netconf-client | |||
+--rw initiate! {initiate}? | +--rw initiate! {initiate}? | |||
| +--rw netconf-server* [name] | | +--rw netconf-server* [name] | |||
| +--rw name string | | +--rw name string | |||
| +--rw endpoints | | +--rw endpoints | |||
| | +--rw endpoint* [name] | | | +--rw endpoint* [name] | |||
| | +--rw name string | | | +--rw name string | |||
| | +--rw (transport) | | | +--rw (transport) | |||
| | +--:(ssh) {ssh-initiate}? | | | +--:(ssh) {ssh-initiate}? | |||
| | | +--rw ssh | | | | +--rw ssh | |||
| | | +--rw address? inet:host | | | | +--rw address? inet:host | |||
| | | +--rw port? inet:port-number\ | | | | +--rw port? inet:port-number | |||
| | | +--rw client-identity | | | | +--rw client-identity | |||
| | | | +--rw username? string | | | | | +--rw username? string | |||
| | | | +--rw (auth-type) | | | | | +--rw (auth-type) | |||
| | | | +--:(password) | | | | | +--:(password) | |||
| | | | | +--rw password? string | | | | | | +--rw password? string | |||
| | | | +--:(public-key) | | | | | +--:(public-key) | |||
| | | | | +--rw public-key | | | | | | +--rw public-key | |||
| | | | | +--rw (local-or-keystore) | | | | | | +--rw (local-or-keystore) | |||
| | | | | +--:(local) | | | | | | +--:(local) | |||
| | | | | | +--rw algorithm | | | | | | | {local-keys-suppor\ | |||
ted}? | ||||
| | | | | | +--rw algorithm? | ||||
| | | | | | | ct:key-algorithm\ | | | | | | | | ct:key-algorithm\ | |||
-ref | -ref | |||
| | | | | | +--rw public-key bin\ | | | | | | | +--rw public-key? | |||
ary | | | | | | | | binary | |||
| | | | | | +--rw private-key uni\ | | | | | | | +--rw private-key? | |||
on | | | | | | | | union | |||
| | | | | | +---x generate-hidden-key | ||||
| | | | | | | +---w input | ||||
| | | | | | | +---w algorithm | ||||
| | | | | | | ct:key-alg\ | ||||
orithm-ref | ||||
| | | | | | +---x install-hidden-key | ||||
| | | | | | +---w input | ||||
| | | | | | +---w algorithm | ||||
| | | | | | | ct:key-alg\ | ||||
orithm-ref | ||||
| | | | | | +---w public-key? | ||||
| | | | | | | binary | ||||
| | | | | | +---w private-key? | ||||
| | | | | | binary | ||||
| | | | | +--:(keystore) | | | | | | +--:(keystore) | |||
| | | | | {keystore-implemen\ | | | | | | {keystore-supporte\ | |||
ted}? | d}? | |||
| | | | | +--rw reference | | | | | | +--rw reference? | |||
| | | | | ks:asymmetric-ke\ | | | | | | ks:asymmetric-ke\ | |||
y-ref | y-ref | |||
| | | | +--:(certificate) | | | | | +--:(certificate) | |||
| | | | +--rw certificate | | | | | +--rw certificate | |||
| | | | {sshcmn:ssh-x509-certs}? | | | | | {sshcmn:ssh-x509-certs}? | |||
| | | | +--rw (local-or-keystore) | | | | | +--rw (local-or-keystore) | |||
| | | | +--:(local) | | | | | +--:(local) | |||
| | | | | +--rw algorithm | | | | | | {local-keys-suppor\ | |||
ted}? | ||||
| | | | | +--rw algorithm? | ||||
| | | | | | ct:key-algorithm\ | | | | | | | ct:key-algorithm\ | |||
-ref | -ref | |||
| | | | | +--rw public-key | | | | | | +--rw public-key? | |||
| | | | | | binary | | | | | | | binary | |||
| | | | | +--rw private-key | | | | | | +--rw private-key? | |||
| | | | | | union | | | | | | | union | |||
| | | | | +---x generate-hidden-key | ||||
| | | | | | +---w input | ||||
| | | | | | +---w algorithm | ||||
| | | | | | ct:key-alg\ | ||||
orithm-ref | ||||
| | | | | +---x install-hidden-key | ||||
| | | | | | +---w input | ||||
| | | | | | +---w algorithm | ||||
| | | | | | | ct:key-alg\ | ||||
orithm-ref | ||||
| | | | | | +---w public-key? | ||||
| | | | | | | binary | ||||
| | | | | | +---w private-key? | ||||
| | | | | | binary | ||||
| | | | | +--rw cert | | | | | | +--rw cert | |||
| | | | | | ct:end-entity-ce\ | | | | | | | ct:end-entity-ce\ | |||
rt-cms | rt-cms | |||
| | | | | +---n certificate-expira\ | | | | | | +---n certificate-expira\ | |||
tion | tion | |||
| | | | | +-- expiration-date? | | | | | | +-- expiration-date? | |||
| | | | | yang:date-and\ | | | | | | yang:date-and\ | |||
-time | -time | |||
| | | | +--:(keystore) | | | | | +--:(keystore) | |||
| | | | {keystore-implemen\ | | | | | {keystore-supporte\ | |||
ted}? | d}? | |||
| | | | +--rw reference | | | | | +--rw reference? | |||
| | | | ks:asymmetric-ke\ | | | | | ks:asymmetric-ke\ | |||
y-certificate-ref | y-certificate-ref | |||
| | | +--rw server-auth | | | | +--rw server-auth | |||
| | | | +--rw pinned-ssh-host-keys? | | | | | +--rw pinned-ssh-host-keys? | |||
| | | | | ta:pinned-host-keys-ref | | | | | | ta:pinned-host-keys-ref | |||
| | | | | {ta:ssh-host-keys}? | ||||
| | | | +--rw pinned-ca-certs? | | | | | +--rw pinned-ca-certs? | |||
| | | | | ta:pinned-certificates-ref | | | | | | ta:pinned-certificates-ref | |||
| | | | | {sshcmn:ssh-x509-certs}? | | | | | | {sshcmn:ssh-x509-certs,ta:x509-\ | |||
certificates}? | ||||
| | | | +--rw pinned-server-certs? | | | | | +--rw pinned-server-certs? | |||
| | | | ta:pinned-certificates-ref | | | | | ta:pinned-certificates-ref | |||
| | | | {sshcmn:ssh-x509-certs}? | | | | | {sshcmn:ssh-x509-certs,ta:x509-\ | |||
certificates}? | ||||
| | | +--rw transport-params | | | | +--rw transport-params | |||
| | | {ssh-client-transport-params-confi\ | | | | {ssh-client-transport-params-confi\ | |||
g}? | g}? | |||
| | | +--rw host-key | | | | +--rw host-key | |||
| | | | +--rw host-key-alg* identityref | | | | | +--rw host-key-alg* identityref | |||
| | | +--rw key-exchange | | | | +--rw key-exchange | |||
| | | | +--rw key-exchange-alg* identityre\ | | | | | +--rw key-exchange-alg* identityref | |||
f | ||||
| | | +--rw encryption | | | | +--rw encryption | |||
| | | | +--rw encryption-alg* identityref | | | | | +--rw encryption-alg* identityref | |||
| | | +--rw mac | | | | +--rw mac | |||
| | | +--rw mac-alg* identityref | | | | +--rw mac-alg* identityref | |||
| | +--:(tls) {tls-initiate}? | | | +--:(tls) {tls-initiate}? | |||
| | +--rw tls | | | +--rw tls | |||
| | +--rw address? inet:host | | | +--rw address? inet:host | |||
| | +--rw port? inet:port-number | | | +--rw port? inet:port-number | |||
| | +--rw client-identity | | | +--rw client-identity | |||
| | | +--rw (auth-type) | | | | +--rw (auth-type) | |||
| | | +--:(certificate) | | | | +--:(certificate) | |||
| | | +--rw certificate | | | | +--rw certificate | |||
| | | +--rw (local-or-keystore) | | | | +--rw (local-or-keystore) | |||
| | | +--:(local) | | | | +--:(local) | |||
| | | | +--rw algorithm | | | | | {local-keys-suppor\ | |||
ted}? | ||||
| | | | +--rw algorithm? | ||||
| | | | | ct:key-algorithm\ | | | | | | ct:key-algorithm\ | |||
-ref | -ref | |||
| | | | +--rw public-key | | | | | +--rw public-key? | |||
| | | | | binary | | | | | | binary | |||
| | | | +--rw private-key | | | | | +--rw private-key? | |||
| | | | | union | | | | | | union | |||
| | | | +---x generate-hidden-key | ||||
| | | | | +---w input | ||||
| | | | | +---w algorithm | ||||
| | | | | ct:key-alg\ | ||||
orithm-ref | ||||
| | | | +---x install-hidden-key | ||||
| | | | | +---w input | ||||
| | | | | +---w algorithm | ||||
| | | | | | ct:key-alg\ | ||||
orithm-ref | ||||
| | | | | +---w public-key? | ||||
| | | | | | binary | ||||
| | | | | +---w private-key? | ||||
| | | | | binary | ||||
| | | | +--rw cert | | | | | +--rw cert | |||
| | | | | ct:end-entity-ce\ | | | | | | ct:end-entity-ce\ | |||
rt-cms | rt-cms | |||
| | | | +---n certificate-expira\ | | | | | +---n certificate-expira\ | |||
tion | tion | |||
| | | | +-- expiration-date? | | | | | +-- expiration-date? | |||
| | | | yang:date-and\ | | | | | yang:date-and\ | |||
-time | -time | |||
| | | +--:(keystore) | | | | +--:(keystore) | |||
| | | {keystore-implemen\ | | | | {keystore-supporte\ | |||
ted}? | d}? | |||
| | | +--rw reference | | | | +--rw reference? | |||
| | | ks:asymmetric-ke\ | | | | ks:asymmetric-ke\ | |||
y-certificate-ref | y-certificate-ref | |||
| | +--rw server-auth | | | +--rw server-auth | |||
| | | +--rw pinned-ca-certs? | | | | +--rw pinned-ca-certs? | |||
| | | | ta:pinned-certificates-ref | | | | | ta:pinned-certificates-ref | |||
| | | | {ta:x509-certificates}? | ||||
| | | +--rw pinned-server-certs? | | | | +--rw pinned-server-certs? | |||
| | | ta:pinned-certificates-ref | | | | ta:pinned-certificates-ref | |||
| | | {ta:x509-certificates}? | ||||
| | +--rw hello-params | | | +--rw hello-params | |||
| | {tls-client-hello-params-config}? | | | {tls-client-hello-params-config}? | |||
| | +--rw tls-versions | | | +--rw tls-versions | |||
| | | +--rw tls-version* identityref | | | | +--rw tls-version* identityref | |||
| | +--rw cipher-suites | | | +--rw cipher-suites | |||
| | +--rw cipher-suite* identityref | | | +--rw cipher-suite* identityref | |||
| +--rw connection-type | | +--rw connection-type | |||
| | +--rw (connection-type)? | | | +--rw (connection-type) | |||
| | +--:(persistent-connection) | | | +--:(persistent-connection) | |||
| | | +--rw persistent! | | | | +--rw persistent! | |||
| | | +--rw idle-timeout? uint32 | ||||
| | | +--rw keep-alives | | | | +--rw keep-alives | |||
| | | +--rw max-wait? uint16 | | | | +--rw max-wait? uint16 | |||
| | | +--rw max-attempts? uint8 | | | | +--rw max-attempts? uint8 | |||
| | +--:(periodic-connection) | | | +--:(periodic-connection) | |||
| | +--rw periodic! | | | +--rw periodic! | |||
| | +--rw idle-timeout? uint16 | | | +--rw period? uint16 | |||
| | +--rw reconnect-timeout? uint16 | | | +--rw anchor-time? yang:date-and-time | |||
| | +--rw idle-timeout? uint16 | ||||
| +--rw reconnect-strategy | | +--rw reconnect-strategy | |||
| +--rw start-with? enumeration | | +--rw start-with? enumeration | |||
| +--rw max-attempts? uint8 | | +--rw max-attempts? uint8 | |||
+--rw listen! {listen}? | +--rw listen! {listen}? | |||
+--rw idle-timeout? uint16 | +--rw idle-timeout? uint16 | |||
+--rw endpoint* [name] | +--rw endpoint* [name] | |||
+--rw name string | +--rw name string | |||
+--rw (transport) | +--rw (transport) | |||
+--:(ssh) {ssh-listen}? | +--:(ssh) {ssh-listen}? | |||
| +--rw ssh | | +--rw ssh | |||
| +--rw address? inet:ip-address | | +--rw address? inet:ip-address | |||
| +--rw port? inet:port-number | | +--rw port? inet:port-number | |||
| +--rw client-identity | | +--rw client-identity | |||
| | +--rw username? string | | | +--rw username? string | |||
| | +--rw (auth-type) | | | +--rw (auth-type) | |||
| | +--:(password) | | | +--:(password) | |||
| | | +--rw password? string | | | | +--rw password? string | |||
| | +--:(public-key) | | | +--:(public-key) | |||
| | | +--rw public-key | | | | +--rw public-key | |||
| | | +--rw (local-or-keystore) | | | | +--rw (local-or-keystore) | |||
| | | +--:(local) | | | | +--:(local) {local-keys-supported\ | |||
| | | | +--rw algorithm | }? | |||
| | | | +--rw algorithm? | ||||
| | | | | ct:key-algorithm-ref | | | | | | ct:key-algorithm-ref | |||
| | | | +--rw public-key binary | | | | | +--rw public-key? | |||
| | | | +--rw private-key union | | | | | | binary | |||
| | | +--:(keystore) | | | | | +--rw private-key? | |||
| | | {keystore-implemented}? | | | | | | union | |||
| | | +--rw reference | | | | | +---x generate-hidden-key | |||
| | | | | +---w input | ||||
| | | | | +---w algorithm | ||||
| | | | | ct:key-algorithm\ | ||||
-ref | ||||
| | | | +---x install-hidden-key | ||||
| | | | +---w input | ||||
| | | | +---w algorithm | ||||
| | | | | ct:key-algorithm\ | ||||
-ref | ||||
| | | | +---w public-key? bin\ | ||||
ary | ||||
| | | | +---w private-key? bin\ | ||||
ary | ||||
| | | +--:(keystore) {keystore-supporte\ | ||||
d}? | ||||
| | | +--rw reference? | ||||
| | | ks:asymmetric-key-ref | | | | ks:asymmetric-key-ref | |||
| | +--:(certificate) | | | +--:(certificate) | |||
| | +--rw certificate {sshcmn:ssh-x509-cert\ | | | +--rw certificate {sshcmn:ssh-x509-cert\ | |||
s}? | s}? | |||
| | +--rw (local-or-keystore) | | | +--rw (local-or-keystore) | |||
| | +--:(local) | | | +--:(local) {local-keys-supported\ | |||
| | | +--rw algorithm | }? | |||
| | | +--rw algorithm? | ||||
| | | | ct:key-algorithm-ref | | | | | ct:key-algorithm-ref | |||
| | | +--rw public-key | | | | +--rw public-key? | |||
| | | | binary | | | | | binary | |||
| | | +--rw private-key | | | | +--rw private-key? | |||
| | | | union | | | | | union | |||
| | | +---x generate-hidden-key | ||||
| | | | +---w input | ||||
| | | | +---w algorithm | ||||
| | | | ct:key-algorithm\ | ||||
-ref | ||||
| | | +---x install-hidden-key | ||||
| | | | +---w input | ||||
| | | | +---w algorithm | ||||
| | | | | ct:key-algorithm\ | ||||
-ref | ||||
| | | | +---w public-key? bin\ | ||||
ary | ||||
| | | | +---w private-key? bin\ | ||||
ary | ||||
| | | +--rw cert | | | | +--rw cert | |||
| | | | ct:end-entity-cert-cms\ | | | | | ct:end-entity-cert-cms | |||
| | | +---n certificate-expiration | | | | +---n certificate-expiration | |||
| | | +-- expiration-date? | | | | +-- expiration-date? | |||
| | | yang:date-and-time | | | | yang:date-and-time | |||
| | +--:(keystore) | | | +--:(keystore) {keystore-supporte\ | |||
| | {keystore-implemented}? | d}? | |||
| | +--rw reference | | | +--rw reference? | |||
| | ks:asymmetric-key-cert\ | | | ks:asymmetric-key-cert\ | |||
ificate-ref | ificate-ref | |||
| +--rw server-auth | | +--rw server-auth | |||
| | +--rw pinned-ssh-host-keys? | | | +--rw pinned-ssh-host-keys? | |||
| | | ta:pinned-host-keys-ref | | | | ta:pinned-host-keys-ref | |||
| | | {ta:ssh-host-keys}? | ||||
| | +--rw pinned-ca-certs? | | | +--rw pinned-ca-certs? | |||
| | | ta:pinned-certificates-ref | | | | ta:pinned-certificates-ref | |||
| | | {sshcmn:ssh-x509-certs}? | | | | {sshcmn:ssh-x509-certs,ta:x509-certif\ | |||
icates}? | ||||
| | +--rw pinned-server-certs? | | | +--rw pinned-server-certs? | |||
| | ta:pinned-certificates-ref | | | ta:pinned-certificates-ref | |||
| | {sshcmn:ssh-x509-certs}? | | | {sshcmn:ssh-x509-certs,ta:x509-certif\ | |||
icates}? | ||||
| +--rw transport-params | | +--rw transport-params | |||
| {ssh-client-transport-params-config}? | | {ssh-client-transport-params-config}? | |||
| +--rw host-key | | +--rw host-key | |||
| | +--rw host-key-alg* identityref | | | +--rw host-key-alg* identityref | |||
| +--rw key-exchange | | +--rw key-exchange | |||
| | +--rw key-exchange-alg* identityref | | | +--rw key-exchange-alg* identityref | |||
| +--rw encryption | | +--rw encryption | |||
| | +--rw encryption-alg* identityref | | | +--rw encryption-alg* identityref | |||
| +--rw mac | | +--rw mac | |||
| +--rw mac-alg* identityref | | +--rw mac-alg* identityref | |||
+--:(tls) {tls-listen}? | +--:(tls) {tls-listen}? | |||
+--rw tls | +--rw tls | |||
+--rw address? inet:ip-address | +--rw address? inet:ip-address | |||
+--rw port? inet:port-number | +--rw port? inet:port-number | |||
+--rw client-identity | +--rw client-identity | |||
| +--rw (auth-type) | | +--rw (auth-type) | |||
| +--:(certificate) | | +--:(certificate) | |||
| +--rw certificate | | +--rw certificate | |||
| +--rw (local-or-keystore) | | +--rw (local-or-keystore) | |||
| +--:(local) | | +--:(local) {local-keys-supported\ | |||
| | +--rw algorithm | }? | |||
| | +--rw algorithm? | ||||
| | | ct:key-algorithm-ref | | | | ct:key-algorithm-ref | |||
| | +--rw public-key | | | +--rw public-key? | |||
| | | binary | | | | binary | |||
| | +--rw private-key | | | +--rw private-key? | |||
| | | union | | | | union | |||
| | +---x generate-hidden-key | ||||
| | | +---w input | ||||
| | | +---w algorithm | ||||
| | | ct:key-algorithm\ | ||||
-ref | ||||
| | +---x install-hidden-key | ||||
| | | +---w input | ||||
| | | +---w algorithm | ||||
| | | | ct:key-algorithm\ | ||||
-ref | ||||
| | | +---w public-key? bin\ | ||||
ary | ||||
| | | +---w private-key? bin\ | ||||
ary | ||||
| | +--rw cert | | | +--rw cert | |||
| | | ct:end-entity-cert-cms\ | | | | ct:end-entity-cert-cms | |||
| | +---n certificate-expiration | | | +---n certificate-expiration | |||
| | +-- expiration-date? | | | +-- expiration-date? | |||
| | yang:date-and-time | | | yang:date-and-time | |||
| +--:(keystore) | | +--:(keystore) {keystore-supporte\ | |||
| {keystore-implemented}? | d}? | |||
| +--rw reference | | +--rw reference? | |||
| ks:asymmetric-key-cert\ | | ks:asymmetric-key-cert\ | |||
ificate-ref | ificate-ref | |||
+--rw server-auth | +--rw server-auth | |||
| +--rw pinned-ca-certs? | | +--rw pinned-ca-certs? | |||
| | ta:pinned-certificates-ref | | | ta:pinned-certificates-ref | |||
| | {ta:x509-certificates}? | ||||
| +--rw pinned-server-certs? | | +--rw pinned-server-certs? | |||
| ta:pinned-certificates-ref | | ta:pinned-certificates-ref | |||
| {ta:x509-certificates}? | ||||
+--rw hello-params | +--rw hello-params | |||
{tls-client-hello-params-config}? | {tls-client-hello-params-config}? | |||
+--rw tls-versions | +--rw tls-versions | |||
| +--rw tls-version* identityref | | +--rw tls-version* identityref | |||
+--rw cipher-suites | +--rw cipher-suites | |||
+--rw cipher-suite* identityref | +--rw cipher-suite* identityref | |||
3.2. Example Usage | 3.2. Example Usage | |||
The following example illustrates configuring a NETCONF client to | The following example illustrates configuring a NETCONF client to | |||
initiate connections, using both the SSH and TLS transport protocols, | initiate connections, using both the SSH and TLS transport protocols, | |||
as well as listening for call-home connections, again using both the | as well as listening for call-home connections, again using both the | |||
SSH and TLS transport protocols. | SSH and TLS transport protocols. | |||
This example is consistent with the examples presented in Section 2.2 | This example is consistent with the examples presented in Section 3.2 | |||
of [I-D.ietf-netconf-keystore]. | of [I-D.ietf-netconf-keystore]. | |||
[Note: '\' line wrapping for formatting only] | [Note: '\' line wrapping for formatting only] | |||
<netconf-client | <netconf-client | |||
xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-client"> | xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-client"> | |||
<!-- NETCONF servers to initiate connections to --> | <!-- NETCONF servers to initiate connections to --> | |||
<initiate> | <initiate> | |||
<netconf-server> | <netconf-server> | |||
<name>corp-fw1</name> | <name>corp-fw1</name> | |||
<endpoints> | <endpoints> | |||
<endpoint> | <endpoint> | |||
<name>corp-fw1.example.com</name> | <name>corp-fw1.example.com</name> | |||
skipping to change at page 11, line 51 ¶ | skipping to change at page 14, line 11 ¶ | |||
</endpoint> | </endpoint> | |||
</listen> | </listen> | |||
</netconf-client> | </netconf-client> | |||
3.3. YANG Module | 3.3. YANG Module | |||
This YANG module has normative references to [RFC6242], [RFC6991], | This YANG module has normative references to [RFC6242], [RFC6991], | |||
[RFC7589], [RFC8071], [I-D.ietf-netconf-ssh-client-server], and | [RFC7589], [RFC8071], [I-D.ietf-netconf-ssh-client-server], and | |||
[I-D.ietf-netconf-tls-client-server]. | [I-D.ietf-netconf-tls-client-server]. | |||
<CODE BEGINS> file "ietf-netconf-client@2018-06-04.yang" | <CODE BEGINS> file "ietf-netconf-client@2018-09-20.yang" | |||
module ietf-netconf-client { | module ietf-netconf-client { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-client"; | namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-client"; | |||
prefix "ncc"; | prefix "ncc"; | |||
import ietf-yang-types { | ||||
prefix yang; | ||||
reference | ||||
"RFC 6991: Common YANG Data Types"; | ||||
} | ||||
import ietf-inet-types { | import ietf-inet-types { | |||
prefix inet; | prefix inet; | |||
reference | reference | |||
"RFC 6991: Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
import ietf-ssh-client { | import ietf-ssh-client { | |||
prefix ss; | prefix ss; | |||
revision-date 2018-06-04; // stable grouping definitions | revision-date 2018-09-20; // stable grouping definitions | |||
reference | reference | |||
"RFC YYYY: YANG Groupings for SSH Clients and SSH Servers"; | "RFC YYYY: YANG Groupings for SSH Clients and SSH Servers"; | |||
} | } | |||
import ietf-tls-client { | import ietf-tls-client { | |||
prefix ts; | prefix ts; | |||
revision-date 2018-06-04; // stable grouping definitions | revision-date 2018-09-20; // stable grouping definitions | |||
reference | reference | |||
"RFC ZZZZ: YANG Groupings for TLS Clients and TLS Servers"; | "RFC ZZZZ: YANG Groupings for TLS Clients and TLS Servers"; | |||
} | } | |||
organization | organization | |||
"IETF NETCONF (Network Configuration) Working Group"; | "IETF NETCONF (Network Configuration) Working Group"; | |||
contact | contact | |||
"WG Web: <http://datatracker.ietf.org/wg/netconf/> | "WG Web: <http://datatracker.ietf.org/wg/netconf/> | |||
WG List: <mailto:netconf@ietf.org> | WG List: <mailto:netconf@ietf.org> | |||
skipping to change at page 13, line 12 ¶ | skipping to change at page 15, line 25 ¶ | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject | |||
to the license terms contained in, the Simplified BSD | to the license terms contained in, the Simplified BSD | |||
License set forth in Section 4.c of the IETF Trust's | License set forth in Section 4.c of the IETF Trust's | |||
Legal Provisions Relating to IETF Documents | 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; see | This version of this YANG module is part of RFC XXXX; see | |||
the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
revision "2018-06-04" { | revision "2018-09-20" { | |||
description | description | |||
"Initial version"; | "Initial version"; | |||
reference | reference | |||
"RFC XXXX: NETCONF Client and Server Models"; | "RFC XXXX: NETCONF Client and Server Models"; | |||
} | } | |||
// Features | // Features | |||
feature initiate { | feature initiate { | |||
description | description | |||
skipping to change at page 14, line 26 ¶ | skipping to change at page 16, line 39 ¶ | |||
feature tls-listen { | feature tls-listen { | |||
description | description | |||
"The 'tls-listen' feature indicates that the NETCONF client | "The 'tls-listen' feature indicates that the NETCONF client | |||
supports opening a port to listen for incoming NETCONF | supports opening a port to listen for incoming NETCONF | |||
server call-home TLS connections."; | server call-home TLS connections."; | |||
reference | reference | |||
"RFC 8071: NETCONF Call Home and RESTCONF Call Home"; | "RFC 8071: NETCONF Call Home and RESTCONF Call Home"; | |||
} | } | |||
container netconf-client { | container netconf-client { | |||
uses netconf-client; | uses netconf-client-grouping; | |||
description | description | |||
"Top-level container for NETCONF client configuration."; | "Top-level container for NETCONF client configuration."; | |||
} | } | |||
grouping netconf-client { | grouping netconf-client-grouping { | |||
description | description | |||
"Top-level grouping for NETCONF client configuration."; | "Top-level grouping for NETCONF client configuration."; | |||
container initiate { | container initiate { | |||
if-feature initiate; | if-feature initiate; | |||
presence "Enables client to initiate TCP connections"; | presence "Enables client to initiate TCP connections"; | |||
description | description | |||
"Configures client initiating underlying TCP connections."; | "Configures client initiating underlying TCP connections."; | |||
list netconf-server { | list netconf-server { | |||
key name; | key name; | |||
skipping to change at page 16, line 52 ¶ | skipping to change at page 19, line 17 ¶ | |||
} | } | |||
} // end tls | } // end tls | |||
} | } | |||
} | } | |||
} | } | |||
container connection-type { | container connection-type { | |||
description | description | |||
"Indicates the kind of connection to use."; | "Indicates the kind of connection to use."; | |||
choice connection-type { | choice connection-type { | |||
default persistent-connection; | mandatory true; | |||
description | description | |||
"Selects between available connection types."; | "Selects between available connection types."; | |||
case persistent-connection { | case persistent-connection { | |||
container persistent { | container persistent { | |||
presence | presence | |||
"Indicates that a persistent connection is to be | "Indicates that a persistent connection is to be | |||
maintained."; | maintained."; | |||
description | description | |||
"Maintain a persistent connection to the NETCONF | "Maintain a persistent connection to the NETCONF | |||
server. If the connection goes down, immediately | server. If the connection goes down, immediately | |||
start trying to reconnect to it, using the | start trying to reconnect to it, using the | |||
reconnection strategy. | reconnection strategy. | |||
This connection type minimizes any NETCONF server | This connection type minimizes any NETCONF server | |||
to NETCONF client data-transfer delay, albeit at | to NETCONF client data-transfer delay, albeit at | |||
the expense of holding resources longer."; | the expense of holding resources longer."; | |||
leaf idle-timeout { | ||||
type uint32; | ||||
units "seconds"; | ||||
default 86400; // one day; | ||||
description | ||||
"Specifies the maximum number of seconds that | ||||
a NETCONF session may remain idle. A NETCONF | ||||
session will be dropped if it is idle for an | ||||
interval longer than this number of seconds. | ||||
If set to zero, then the client will never | ||||
drop a session because it is idle. Sessions | ||||
that have a notification subscription active | ||||
are never dropped."; | ||||
} | ||||
container keep-alives { | container keep-alives { | |||
description | description | |||
"Configures the keep-alive policy, to | "Configures the keep-alive policy, to | |||
proactively test the aliveness of the SSH/TLS | proactively test the aliveness of the SSH/TLS | |||
server. An unresponsive SSH/TLS server will | server. An unresponsive SSH/TLS server will | |||
be dropped after approximately max-attempts * | be dropped after approximately max-attempts * | |||
max-wait seconds."; | max-wait seconds."; | |||
reference | ||||
"RFC 8071: NETCONF Call Home and RESTCONF Call | ||||
Home, Section 3.1, item S6"; | ||||
leaf max-wait { | leaf max-wait { | |||
type uint16 { | type uint16 { | |||
range "1..max"; | range "1..max"; | |||
} | } | |||
units seconds; | units seconds; | |||
default 30; | default 30; | |||
description | description | |||
"Sets the amount of time in seconds after | "Sets the amount of time in seconds after | |||
which if no data has been received from the | which if no data has been received from the | |||
SSH/TLS server, a SSH/TLS-level message will | SSH/TLS server, a SSH/TLS-level message will | |||
skipping to change at page 18, line 28 ¶ | skipping to change at page 20, line 25 ¶ | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
case periodic-connection { | case periodic-connection { | |||
container periodic { | container periodic { | |||
presence | presence | |||
"Indicates that a periodic connection is to be | "Indicates that a periodic connection is to be | |||
maintained."; | maintained."; | |||
description | description | |||
"Periodically connect to the NETCONF server, so | "Periodically connect to the NETCONF server. The | |||
that the NETCONF server may deliver messages | NETCONF server should close the connection upon | |||
pending for the NETCONF client. The NETCONF | completing planned activities. | |||
server must close the connection when it is | ||||
ready to release it. Once the connection has | This connection type increases resource | |||
been closed, the NETCONF client will restart | utilization, albeit with increased delay in | |||
its timer until the next connection."; | NETCONF server to NETCONF client interactions."; | |||
leaf period { | ||||
type uint16; | ||||
units "minutes"; | ||||
default 60; | ||||
description | ||||
"Duration of time between periodic connections."; | ||||
} | ||||
leaf anchor-time { | ||||
type yang:date-and-time { | ||||
// constrained to minute-level granularity | ||||
pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}' | ||||
+ '(Z|[\+\-]\d{2}:\d{2})'; | ||||
} | ||||
description | ||||
"Designates a timestamp before or after which a | ||||
series of periodic connections are determined. | ||||
The periodic connections occur at a whole | ||||
multiple interval from the anchor time. For | ||||
example, for an anchor time is 15 minutes past | ||||
midnight and a period interval of 24 hours, then | ||||
a periodic connection will occur 15 minutes past | ||||
midnight everyday."; | ||||
} | ||||
leaf idle-timeout { | leaf idle-timeout { | |||
type uint16; | type uint16; | |||
units "seconds"; | units "seconds"; | |||
default 300; // five minutes | default 120; // two minutes | |||
description | description | |||
"Specifies the maximum number of seconds that | "Specifies the maximum number of seconds that | |||
a NETCONF session may remain idle. A NETCONF | a NETCONF session may remain idle. A NETCONF | |||
session will be dropped if it is idle for an | session will be dropped if it is idle for an | |||
interval longer than this number of seconds. | interval longer than this number of seconds. | |||
If set to zero, then the server will never | If set to zero, then the NETCONF client will | |||
drop a session because it is idle. Sessions | never drop a session because it is idle."; | |||
that have a notification subscription active | ||||
are never dropped."; | ||||
} | ||||
leaf reconnect-timeout { | ||||
type uint16 { | ||||
range "1..max"; | ||||
} | ||||
units minutes; | ||||
default 60; | ||||
description | ||||
"Sets the maximum amount of unconnected time | ||||
the NETCONF client will wait before re- | ||||
establishing a connection to the NETCONF | ||||
server. The NETCONF client may initiate a | ||||
connection before this time if desired | ||||
(e.g., to set configuration)."; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container reconnect-strategy { | container reconnect-strategy { | |||
description | description | |||
"The reconnection strategy directs how a NETCONF client | "The reconnection strategy directs how a NETCONF client | |||
reconnects to a NETCONF server, after discovering its | reconnects to a NETCONF server, after discovering its | |||
connection to the server has dropped, even if due to a | connection to the server has dropped, even if due to a | |||
skipping to change at page 19, line 45 ¶ | skipping to change at page 21, line 47 ¶ | |||
} | } | |||
enum last-connected { | enum last-connected { | |||
description | description | |||
"Indicates that reconnections should start with | "Indicates that reconnections should start with | |||
the endpoint last connected to. If no previous | the endpoint last connected to. If no previous | |||
connection has ever been established, then the | connection has ever been established, then the | |||
first endpoint configured is used. NETCONF | first endpoint configured is used. NETCONF | |||
clients SHOULD be able to remember the last | clients SHOULD be able to remember the last | |||
endpoint connected to across reboots."; | endpoint connected to across reboots."; | |||
} | } | |||
enum random-selection { | ||||
description | ||||
"Indicates that reconnections should start with | ||||
a random endpoint."; | ||||
} | ||||
} | } | |||
default first-listed; | default first-listed; | |||
description | description | |||
"Specifies which of the NETCONF server's endpoints | "Specifies which of the NETCONF server's endpoints | |||
the NETCONF client should start with when trying | the NETCONF client should start with when trying | |||
to connect to the NETCONF server."; | to connect to the NETCONF server."; | |||
} | } | |||
leaf max-attempts { | leaf max-attempts { | |||
type uint8 { | type uint8 { | |||
range "1..max"; | range "1..max"; | |||
skipping to change at page 23, line 4 ¶ | skipping to change at page 25, line 12 ¶ | |||
All private keys and trusted certificates are held in the keystore | All private keys and trusted certificates are held in the keystore | |||
model defined in [I-D.ietf-netconf-keystore]. | model defined in [I-D.ietf-netconf-keystore]. | |||
YANG feature statements are used to enable implementations to | YANG feature statements are used to enable implementations to | |||
advertise which parts of the model the NETCONF server supports. | advertise which parts of the model the NETCONF server supports. | |||
4.1. Tree Diagram | 4.1. Tree Diagram | |||
The following tree diagram [RFC8340] provides an overview of the data | The following tree diagram [RFC8340] provides an overview of the data | |||
model for the "ietf-netconf-server" module. Just the container is | model for the "ietf-netconf-server" module. Just the container is | |||
displayed below, but there is also a reuable grouping by the same | displayed below, but there is also a reusable grouping called | |||
name that the container is using. | "netconf-server-grouping" that the container is using. | |||
[Note: '\' line wrapping for formatting only] | [Note: '\' line wrapping for formatting only] | |||
module: ietf-netconf-server | module: ietf-netconf-server | |||
+--rw netconf-server | +--rw netconf-server | |||
+--rw listen! {listen}? | +--rw listen! {listen}? | |||
| +--rw idle-timeout? uint16 | | +--rw idle-timeout? uint16 | |||
| +--rw endpoint* [name] | | +--rw endpoint* [name] | |||
| +--rw name string | | +--rw name string | |||
| +--rw (transport) | | +--rw (transport) | |||
skipping to change at page 23, line 28 ¶ | skipping to change at page 25, line 36 ¶ | |||
| | +--rw address inet:ip-address | | | +--rw address inet:ip-address | |||
| | +--rw port? inet:port-number | | | +--rw port? inet:port-number | |||
| | +--rw server-identity | | | +--rw server-identity | |||
| | | +--rw host-key* [name] | | | | +--rw host-key* [name] | |||
| | | +--rw name string | | | | +--rw name string | |||
| | | +--rw (host-key-type) | | | | +--rw (host-key-type) | |||
| | | +--:(public-key) | | | | +--:(public-key) | |||
| | | | +--rw public-key | | | | | +--rw public-key | |||
| | | | +--rw (local-or-keystore) | | | | | +--rw (local-or-keystore) | |||
| | | | +--:(local) | | | | | +--:(local) | |||
| | | | | +--rw algorithm | | | | | | {local-keys-supported\ | |||
| | | | | | ct:key-algorithm-re\ | ||||
f | ||||
| | | | | +--rw public-key binary\ | ||||
| | | | | +--rw private-key union | ||||
| | | | +--:(keystore) | ||||
| | | | {keystore-implemented\ | ||||
}? | }? | |||
| | | | +--rw reference | | | | | | +--rw algorithm? | |||
| | | | | | ct:key-algorithm-ref | ||||
| | | | | +--rw public-key? | ||||
| | | | | | binary | ||||
| | | | | +--rw private-key? | ||||
| | | | | | union | ||||
| | | | | +---x generate-hidden-key | ||||
| | | | | | +---w input | ||||
| | | | | | +---w algorithm | ||||
| | | | | | ct:key-algori\ | ||||
thm-ref | ||||
| | | | | +---x install-hidden-key | ||||
| | | | | +---w input | ||||
| | | | | +---w algorithm | ||||
| | | | | | ct:key-algori\ | ||||
thm-ref | ||||
| | | | | +---w public-key? | ||||
| | | | | | binary | ||||
| | | | | +---w private-key? | ||||
| | | | | binary | ||||
| | | | +--:(keystore) | ||||
| | | | {keystore-supported}? | ||||
| | | | +--rw reference? | ||||
| | | | ks:asymmetric-key-r\ | | | | | ks:asymmetric-key-r\ | |||
ef | ef | |||
| | | +--:(certificate) | | | | +--:(certificate) | |||
| | | +--rw certificate | | | | +--rw certificate | |||
| | | {sshcmn:ssh-x509-certs}? | | | | {sshcmn:ssh-x509-certs}? | |||
| | | +--rw (local-or-keystore) | | | | +--rw (local-or-keystore) | |||
| | | +--:(local) | | | | +--:(local) | |||
| | | | +--rw algorithm | | | | | {local-keys-supported\ | |||
| | | | | ct:key-algorithm-re\ | }? | |||
f | | | | | +--rw algorithm? | |||
| | | | +--rw public-key | | | | | | ct:key-algorithm-ref | |||
| | | | +--rw public-key? | ||||
| | | | | binary | | | | | | binary | |||
| | | | +--rw private-key | | | | | +--rw private-key? | |||
| | | | | union | | | | | | union | |||
| | | | +---x generate-hidden-key | ||||
| | | | | +---w input | ||||
| | | | | +---w algorithm | ||||
| | | | | ct:key-algori\ | ||||
thm-ref | ||||
| | | | +---x install-hidden-key | ||||
| | | | | +---w input | ||||
| | | | | +---w algorithm | ||||
| | | | | | ct:key-algori\ | ||||
thm-ref | ||||
| | | | | +---w public-key? | ||||
| | | | | | binary | ||||
| | | | | +---w private-key? | ||||
| | | | | binary | ||||
| | | | +--rw cert | | | | | +--rw cert | |||
| | | | | ct:end-entity-cert-\ | | | | | | ct:end-entity-cert-\ | |||
cms | cms | |||
| | | | +---n certificate-expiratio\ | | | | | +---n certificate-expiration | |||
n | ||||
| | | | +-- expiration-date? | | | | | +-- expiration-date? | |||
| | | | yang:date-and-ti\ | | | | | yang:date-and-ti\ | |||
me | me | |||
| | | +--:(keystore) | | | | +--:(keystore) | |||
| | | {keystore-implemented\ | | | | {keystore-supported}? | |||
}? | | | | +--rw reference? | |||
| | | +--rw reference | ||||
| | | ks:asymmetric-key-c\ | | | | ks:asymmetric-key-c\ | |||
ertificate-ref | ertificate-ref | |||
| | +--rw client-cert-auth {sshcmn:ssh-x509-certs}? | | | +--rw client-cert-auth {sshcmn:ssh-x509-certs}? | |||
| | | +--rw pinned-ca-certs? | | | | +--rw pinned-ca-certs? | |||
| | | | ta:pinned-certificates-ref | | | | | ta:pinned-certificates-ref | |||
| | | | {ta:x509-certificates}? | ||||
| | | +--rw pinned-client-certs? | | | | +--rw pinned-client-certs? | |||
| | | ta:pinned-certificates-ref | | | | ta:pinned-certificates-ref | |||
| | | {ta:x509-certificates}? | ||||
| | +--rw transport-params | | | +--rw transport-params | |||
| | {ssh-server-transport-params-config}? | | | {ssh-server-transport-params-config}? | |||
| | +--rw host-key | | | +--rw host-key | |||
| | | +--rw host-key-alg* identityref | | | | +--rw host-key-alg* identityref | |||
| | +--rw key-exchange | | | +--rw key-exchange | |||
| | | +--rw key-exchange-alg* identityref | | | | +--rw key-exchange-alg* identityref | |||
| | +--rw encryption | | | +--rw encryption | |||
| | | +--rw encryption-alg* identityref | | | | +--rw encryption-alg* identityref | |||
| | +--rw mac | | | +--rw mac | |||
| | +--rw mac-alg* identityref | | | +--rw mac-alg* identityref | |||
| +--:(tls) {tls-listen}? | | +--:(tls) {tls-listen}? | |||
| +--rw tls | | +--rw tls | |||
| +--rw address inet:ip-address | | +--rw address inet:ip-address | |||
| +--rw port? inet:port-number | | +--rw port? inet:port-number | |||
| +--rw server-identity | | +--rw server-identity | |||
| | +--rw (local-or-keystore) | | | +--rw (local-or-keystore) | |||
| | +--:(local) | | | +--:(local) {local-keys-supported}? | |||
| | | +--rw algorithm | | | | +--rw algorithm? | |||
| | | | ct:key-algorithm-ref | | | | | ct:key-algorithm-ref | |||
| | | +--rw public-key binary | | | | +--rw public-key? binary | |||
| | | +--rw private-key union | | | | +--rw private-key? union | |||
| | | +---x generate-hidden-key | ||||
| | | | +---w input | ||||
| | | | +---w algorithm | ||||
| | | | ct:key-algorithm-ref | ||||
| | | +---x install-hidden-key | ||||
| | | | +---w input | ||||
| | | | +---w algorithm | ||||
| | | | | ct:key-algorithm-ref | ||||
| | | | +---w public-key? binary | ||||
| | | | +---w private-key? binary | ||||
| | | +--rw cert | | | | +--rw cert | |||
| | | | ct:end-entity-cert-cms | | | | | ct:end-entity-cert-cms | |||
| | | +---n certificate-expiration | | | | +---n certificate-expiration | |||
| | | +-- expiration-date? | | | | +-- expiration-date? | |||
| | | yang:date-and-time | | | | yang:date-and-time | |||
| | +--:(keystore) {keystore-implemented}? | | | +--:(keystore) {keystore-supported}? | |||
| | +--rw reference | | | +--rw reference? | |||
| | ks:asymmetric-key-certificate-r\ | | | ks:asymmetric-key-certificate-r\ | |||
ef | ef | |||
| +--rw client-auth | | +--rw client-auth | |||
| | +--rw pinned-ca-certs? | | | +--rw pinned-ca-certs? | |||
| | | ta:pinned-certificates-ref | | | | ta:pinned-certificates-ref | |||
| | | {ta:x509-certificates}? | ||||
| | +--rw pinned-client-certs? | | | +--rw pinned-client-certs? | |||
| | | ta:pinned-certificates-ref | | | | ta:pinned-certificates-ref | |||
| | | {ta:x509-certificates}? | ||||
| | +--rw cert-maps | | | +--rw cert-maps | |||
| | +--rw cert-to-name* [id] | | | +--rw cert-to-name* [id] | |||
| | +--rw id uint32 | | | +--rw id uint32 | |||
| | +--rw fingerprint | | | +--rw fingerprint | |||
| | | x509c2n:tls-fingerprint | | | | x509c2n:tls-fingerprint | |||
| | +--rw map-type identityref | | | +--rw map-type identityref | |||
| | +--rw name string | | | +--rw name string | |||
| +--rw hello-params | | +--rw hello-params | |||
| {tls-server-hello-params-config}? | | {tls-server-hello-params-config}? | |||
| +--rw tls-versions | | +--rw tls-versions | |||
skipping to change at page 25, line 34 ¶ | skipping to change at page 28, line 36 ¶ | |||
+--rw call-home! {call-home}? | +--rw call-home! {call-home}? | |||
+--rw netconf-client* [name] | +--rw netconf-client* [name] | |||
+--rw name string | +--rw name string | |||
+--rw endpoints | +--rw endpoints | |||
| +--rw endpoint* [name] | | +--rw endpoint* [name] | |||
| +--rw name string | | +--rw name string | |||
| +--rw (transport) | | +--rw (transport) | |||
| +--:(ssh) {ssh-call-home}? | | +--:(ssh) {ssh-call-home}? | |||
| | +--rw ssh | | | +--rw ssh | |||
| | +--rw address inet:host | | | +--rw address inet:host | |||
| | +--rw port? inet:port-number\ | | | +--rw port? inet:port-number | |||
| | +--rw server-identity | | | +--rw server-identity | |||
| | | +--rw host-key* [name] | | | | +--rw host-key* [name] | |||
| | | +--rw name string | | | | +--rw name string | |||
| | | +--rw (host-key-type) | | | | +--rw (host-key-type) | |||
| | | +--:(public-key) | | | | +--:(public-key) | |||
| | | | +--rw public-key | | | | | +--rw public-key | |||
| | | | +--rw (local-or-keystore) | | | | | +--rw (local-or-keystore) | |||
| | | | +--:(local) | | | | | +--:(local) | |||
| | | | | +--rw algorithm | | | | | | {local-keys-sup\ | |||
ported}? | ||||
| | | | | +--rw algorithm? | ||||
| | | | | | ct:key-algori\ | | | | | | | ct:key-algori\ | |||
thm-ref | thm-ref | |||
| | | | | +--rw public-key | | | | | | +--rw public-key? | |||
| | | | | | binary | | | | | | | binary | |||
| | | | | +--rw private-key | | | | | | +--rw private-key? | |||
| | | | | union | | | | | | | union | |||
| | | | | +---x generate-hidden\ | ||||
-key | ||||
| | | | | | +---w input | ||||
| | | | | | +---w algorithm | ||||
| | | | | | ct:key-\ | ||||
algorithm-ref | ||||
| | | | | +---x install-hidden-\ | ||||
key | ||||
| | | | | +---w input | ||||
| | | | | +---w algorithm | ||||
| | | | | | ct:key-\ | ||||
algorithm-ref | ||||
| | | | | +---w public-ke\ | ||||
y? | ||||
| | | | | | binary | ||||
| | | | | +---w private-k\ | ||||
ey? | ||||
| | | | | binary | ||||
| | | | +--:(keystore) | | | | | +--:(keystore) | |||
| | | | {keystore-imple\ | | | | | {keystore-suppo\ | |||
mented}? | rted}? | |||
| | | | +--rw reference | | | | | +--rw reference? | |||
| | | | ks:asymmetric\ | | | | | ks:asymmetric\ | |||
-key-ref | -key-ref | |||
| | | +--:(certificate) | | | | +--:(certificate) | |||
| | | +--rw certificate | | | | +--rw certificate | |||
| | | {sshcmn:ssh-x509-certs\ | | | | {sshcmn:ssh-x509-certs\ | |||
}? | }? | |||
| | | +--rw (local-or-keystore) | | | | +--rw (local-or-keystore) | |||
| | | +--:(local) | | | | +--:(local) | |||
| | | | +--rw algorithm | | | | | {local-keys-sup\ | |||
ported}? | ||||
| | | | +--rw algorithm? | ||||
| | | | | ct:key-algori\ | | | | | | ct:key-algori\ | |||
thm-ref | thm-ref | |||
| | | | +--rw public-key | | | | | +--rw public-key? | |||
| | | | | binary | | | | | | binary | |||
| | | | +--rw private-key | | | | | +--rw private-key? | |||
| | | | | union | | | | | | union | |||
| | | | +---x generate-hidden\ | ||||
-key | ||||
| | | | | +---w input | ||||
| | | | | +---w algorithm | ||||
| | | | | ct:key-\ | ||||
algorithm-ref | ||||
| | | | +---x install-hidden-\ | ||||
key | ||||
| | | | | +---w input | ||||
| | | | | +---w algorithm | ||||
| | | | | | ct:key-\ | ||||
algorithm-ref | ||||
| | | | | +---w public-ke\ | ||||
y? | ||||
| | | | | | binary | ||||
| | | | | +---w private-k\ | ||||
ey? | ||||
| | | | | binary | ||||
| | | | +--rw cert | | | | | +--rw cert | |||
| | | | | ct:end-entity\ | | | | | | ct:end-entity\ | |||
-cert-cms | -cert-cms | |||
| | | | +---n certificate-exp\ | | | | | +---n certificate-exp\ | |||
iration | iration | |||
| | | | +-- expiration-dat\ | | | | | +-- expiration-dat\ | |||
e? | e? | |||
| | | | yang:date-\ | | | | | yang:date-\ | |||
and-time | and-time | |||
| | | +--:(keystore) | | | | +--:(keystore) | |||
| | | {keystore-imple\ | | | | {keystore-suppo\ | |||
mented}? | rted}? | |||
| | | +--rw reference | | | | +--rw reference? | |||
| | | ks:asymmetric\ | | | | ks:asymmetric\ | |||
-key-certificate-ref | -key-certificate-ref | |||
| | +--rw client-cert-auth | | | +--rw client-cert-auth | |||
| | | {sshcmn:ssh-x509-certs}? | | | | {sshcmn:ssh-x509-certs}? | |||
| | | +--rw pinned-ca-certs? | | | | +--rw pinned-ca-certs? | |||
| | | | ta:pinned-certificates-ref | | | | | ta:pinned-certificates-ref | |||
| | | | {ta:x509-certificates}? | ||||
| | | +--rw pinned-client-certs? | | | | +--rw pinned-client-certs? | |||
| | | ta:pinned-certificates-ref | | | | ta:pinned-certificates-ref | |||
| | | {ta:x509-certificates}? | ||||
| | +--rw transport-params | | | +--rw transport-params | |||
| | {ssh-server-transport-params-confi\ | | | {ssh-server-transport-params-confi\ | |||
g}? | g}? | |||
| | +--rw host-key | | | +--rw host-key | |||
| | | +--rw host-key-alg* identityref | | | | +--rw host-key-alg* identityref | |||
| | +--rw key-exchange | | | +--rw key-exchange | |||
| | | +--rw key-exchange-alg* identityre\ | | | | +--rw key-exchange-alg* identityref | |||
f | ||||
| | +--rw encryption | | | +--rw encryption | |||
| | | +--rw encryption-alg* identityref | | | | +--rw encryption-alg* identityref | |||
| | +--rw mac | | | +--rw mac | |||
| | +--rw mac-alg* identityref | | | +--rw mac-alg* identityref | |||
| +--:(tls) {tls-call-home}? | | +--:(tls) {tls-call-home}? | |||
| +--rw tls | | +--rw tls | |||
| +--rw address inet:host | | +--rw address inet:host | |||
| +--rw port? inet:port-number | | +--rw port? inet:port-number | |||
| +--rw server-identity | | +--rw server-identity | |||
| | +--rw (local-or-keystore) | | | +--rw (local-or-keystore) | |||
| | +--:(local) | | | +--:(local) {local-keys-supported}? | |||
| | | +--rw algorithm | | | | +--rw algorithm? | |||
| | | | ct:key-algorithm-ref | | | | | ct:key-algorithm-ref | |||
| | | +--rw public-key | | | | +--rw public-key? | |||
| | | | binary | | | | | binary | |||
| | | +--rw private-key | | | | +--rw private-key? | |||
| | | | union | | | | | union | |||
| | | +---x generate-hidden-key | ||||
| | | | +---w input | ||||
| | | | +---w algorithm | ||||
| | | | ct:key-algorithm-ref | ||||
| | | +---x install-hidden-key | ||||
| | | | +---w input | ||||
| | | | +---w algorithm | ||||
| | | | | ct:key-algorithm-ref | ||||
| | | | +---w public-key? binary | ||||
| | | | +---w private-key? binary | ||||
| | | +--rw cert | | | | +--rw cert | |||
| | | | ct:end-entity-cert-cms | | | | | ct:end-entity-cert-cms | |||
| | | +---n certificate-expiration | | | | +---n certificate-expiration | |||
| | | +-- expiration-date? | | | | +-- expiration-date? | |||
| | | yang:date-and-time | | | | yang:date-and-time | |||
| | +--:(keystore) {keystore-implemented\ | | | +--:(keystore) {keystore-supported}? | |||
}? | | | +--rw reference? | |||
| | +--rw reference | ||||
| | ks:asymmetric-key-certifi\ | | | ks:asymmetric-key-certifi\ | |||
cate-ref | cate-ref | |||
| +--rw client-auth | | +--rw client-auth | |||
| | +--rw pinned-ca-certs? | | | +--rw pinned-ca-certs? | |||
| | | ta:pinned-certificates-ref | | | | ta:pinned-certificates-ref | |||
| | | {ta:x509-certificates}? | ||||
| | +--rw pinned-client-certs? | | | +--rw pinned-client-certs? | |||
| | | ta:pinned-certificates-ref | | | | ta:pinned-certificates-ref | |||
| | | {ta:x509-certificates}? | ||||
| | +--rw cert-maps | | | +--rw cert-maps | |||
| | +--rw cert-to-name* [id] | | | +--rw cert-to-name* [id] | |||
| | +--rw id uint32 | | | +--rw id uint32 | |||
| | +--rw fingerprint | | | +--rw fingerprint | |||
| | | x509c2n:tls-fingerprint | | | | x509c2n:tls-fingerprint | |||
| | +--rw map-type identityref | | | +--rw map-type identityref | |||
| | +--rw name string | | | +--rw name string | |||
| +--rw hello-params | | +--rw hello-params | |||
| {tls-server-hello-params-config}? | | {tls-server-hello-params-config}? | |||
| +--rw tls-versions | | +--rw tls-versions | |||
| | +--rw tls-version* identityref | | | +--rw tls-version* identityref | |||
| +--rw cipher-suites | | +--rw cipher-suites | |||
| +--rw cipher-suite* identityref | | +--rw cipher-suite* identityref | |||
+--rw connection-type | +--rw connection-type | |||
| +--rw (connection-type)? | | +--rw (connection-type) | |||
| +--:(persistent-connection) | | +--:(persistent-connection) | |||
| | +--rw persistent! | | | +--rw persistent! | |||
| | +--rw idle-timeout? uint32 | ||||
| | +--rw keep-alives | | | +--rw keep-alives | |||
| | +--rw max-wait? uint16 | | | +--rw max-wait? uint16 | |||
| | +--rw max-attempts? uint8 | | | +--rw max-attempts? uint8 | |||
| +--:(periodic-connection) | | +--:(periodic-connection) | |||
| +--rw periodic! | | +--rw periodic! | |||
| +--rw idle-timeout? uint16 | | +--rw period? uint16 | |||
| +--rw reconnect-timeout? uint16 | | +--rw anchor-time? yang:date-and-time | |||
| +--rw idle-timeout? uint16 | ||||
+--rw reconnect-strategy | +--rw reconnect-strategy | |||
+--rw start-with? enumeration | +--rw start-with? enumeration | |||
+--rw max-attempts? uint8 | +--rw max-attempts? uint8 | |||
4.2. Example Usage | 4.2. Example Usage | |||
The following example illustrates configuring a NETCONF server to | The following example illustrates configuring a NETCONF server to | |||
listen for NETCONF client connections using both the SSH and TLS | listen for NETCONF client connections using both the SSH and TLS | |||
transport protocols, as well as configuring call-home to two NETCONF | transport protocols, as well as configuring call-home to two NETCONF | |||
clients, one using SSH and the other using TLS. | clients, one using SSH and the other using TLS. | |||
This example is consistent with the examples presented in Section 2.2 | This example is consistent with the examples presented in Section 3.2 | |||
of [I-D.ietf-netconf-keystore]. | of [I-D.ietf-netconf-keystore]. | |||
[Note: '\' line wrapping for formatting only] | [Note: '\' line wrapping for formatting only] | |||
<netconf-server | <netconf-server | |||
xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-server" | xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-server" | |||
xmlns:x509c2n="urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name"\ | xmlns:x509c2n="urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name"> | |||
> | ||||
<!-- endpoints to listen for NETCONF connections on --> | <!-- endpoints to listen for NETCONF connections on --> | |||
<listen> | <listen> | |||
<endpoint> <!-- listening for SSH connections --> | <endpoint> <!-- listening for SSH connections --> | |||
<name>netconf/ssh</name> | <name>netconf/ssh</name> | |||
<ssh> | <ssh> | |||
<address>192.0.2.7</address> | <address>192.0.2.7</address> | |||
<server-identity> | <server-identity> | |||
<host-key> | <host-key> | |||
<name>deployment-specific-certificate</name> | <name>deployment-specific-certificate</name> | |||
skipping to change at page 31, line 4 ¶ | skipping to change at page 35, line 7 ¶ | |||
inned-ca-certs> | inned-ca-certs> | |||
<pinned-client-certs>explicitly-trusted-client-certs</\ | <pinned-client-certs>explicitly-trusted-client-certs</\ | |||
pinned-client-certs> | pinned-client-certs> | |||
</client-cert-auth> | </client-cert-auth> | |||
</ssh> | </ssh> | |||
</endpoint> | </endpoint> | |||
</endpoints> | </endpoints> | |||
<connection-type> | <connection-type> | |||
<periodic> | <periodic> | |||
<idle-timeout>300</idle-timeout> | <idle-timeout>300</idle-timeout> | |||
<reconnect-timeout>60</reconnect-timeout> | <period>60</period> | |||
</periodic> | </periodic> | |||
</connection-type> | </connection-type> | |||
<reconnect-strategy> | <reconnect-strategy> | |||
<start-with>last-connected</start-with> | <start-with>last-connected</start-with> | |||
<max-attempts>3</max-attempts> | <max-attempts>3</max-attempts> | |||
</reconnect-strategy> | </reconnect-strategy> | |||
</netconf-client> | </netconf-client> | |||
<netconf-client> <!-- TLS-based client --> | <netconf-client> <!-- TLS-based client --> | |||
<name>data-collector</name> | <name>data-collector</name> | |||
<endpoints> | <endpoints> | |||
skipping to change at page 32, line 34 ¶ | skipping to change at page 36, line 37 ¶ | |||
<map-type>x509c2n:specified</map-type> | <map-type>x509c2n:specified</map-type> | |||
<name>scooby-doo</name> | <name>scooby-doo</name> | |||
</cert-to-name> | </cert-to-name> | |||
</cert-maps> | </cert-maps> | |||
</client-auth> | </client-auth> | |||
</tls> | </tls> | |||
</endpoint> | </endpoint> | |||
</endpoints> | </endpoints> | |||
<connection-type> | <connection-type> | |||
<persistent> | <persistent> | |||
<idle-timeout>300</idle-timeout> | ||||
<keep-alives> | <keep-alives> | |||
<max-wait>30</max-wait> | <max-wait>30</max-wait> | |||
<max-attempts>3</max-attempts> | <max-attempts>3</max-attempts> | |||
</keep-alives> | </keep-alives> | |||
</persistent> | </persistent> | |||
</connection-type> | </connection-type> | |||
<reconnect-strategy> | <reconnect-strategy> | |||
<start-with>first-listed</start-with> | <start-with>first-listed</start-with> | |||
<max-attempts>3</max-attempts> | <max-attempts>3</max-attempts> | |||
</reconnect-strategy> | </reconnect-strategy> | |||
skipping to change at page 33, line 16 ¶ | skipping to change at page 37, line 16 ¶ | |||
This YANG module has normative references to [RFC6242], [RFC6991], | This YANG module has normative references to [RFC6242], [RFC6991], | |||
[RFC7407], [RFC7589], [RFC8071], | [RFC7407], [RFC7589], [RFC8071], | |||
[I-D.ietf-netconf-ssh-client-server], and | [I-D.ietf-netconf-ssh-client-server], and | |||
[I-D.ietf-netconf-tls-client-server]. | [I-D.ietf-netconf-tls-client-server]. | |||
This YANG module imports YANG types from [RFC6991], and YANG | This YANG module imports YANG types from [RFC6991], and YANG | |||
groupings from [RFC7407], [I-D.ietf-netconf-ssh-client-server] and | groupings from [RFC7407], [I-D.ietf-netconf-ssh-client-server] and | |||
[I-D.ietf-netconf-ssh-client-server]. | [I-D.ietf-netconf-ssh-client-server]. | |||
<CODE BEGINS> file "ietf-netconf-server@2018-06-04.yang" | <CODE BEGINS> file "ietf-netconf-server@2018-09-20.yang" | |||
module ietf-netconf-server { | module ietf-netconf-server { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-server"; | namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-server"; | |||
prefix "ncs"; | prefix "ncs"; | |||
import ietf-yang-types { | ||||
prefix yang; | ||||
reference | ||||
"RFC 6991: Common YANG Data Types"; | ||||
} | ||||
import ietf-inet-types { | import ietf-inet-types { | |||
prefix inet; | prefix inet; | |||
reference | reference | |||
"RFC 6991: Common YANG Data Types"; | "RFC 6991: Common YANG Data Types"; | |||
} | } | |||
import ietf-x509-cert-to-name { | import ietf-x509-cert-to-name { | |||
prefix x509c2n; | prefix x509c2n; | |||
reference | reference | |||
"RFC 7407: A YANG Data Model for SNMP Configuration"; | "RFC 7407: A YANG Data Model for SNMP Configuration"; | |||
} | } | |||
import ietf-ssh-server { | import ietf-ssh-server { | |||
prefix ss; | prefix ss; | |||
revision-date 2018-06-04; // stable grouping definitions | revision-date 2018-09-20; // stable grouping definitions | |||
reference | reference | |||
"RFC YYYY: YANG Groupings for SSH Clients and SSH Servers"; | "RFC YYYY: YANG Groupings for SSH Clients and SSH Servers"; | |||
} | } | |||
import ietf-tls-server { | import ietf-tls-server { | |||
prefix ts; | prefix ts; | |||
revision-date 2018-06-04; // stable grouping definitions | revision-date 2018-09-20; // stable grouping definitions | |||
reference | reference | |||
"RFC ZZZZ: YANG Groupings for TLS Clients and TLS Servers"; | "RFC ZZZZ: YANG Groupings for TLS Clients and TLS Servers"; | |||
} | } | |||
organization | organization | |||
"IETF NETCONF (Network Configuration) Working Group"; | "IETF NETCONF (Network Configuration) Working Group"; | |||
contact | contact | |||
"WG Web: <http://datatracker.ietf.org/wg/netconf/> | "WG Web: <http://datatracker.ietf.org/wg/netconf/> | |||
WG List: <mailto:netconf@ietf.org> | WG List: <mailto:netconf@ietf.org> | |||
Author: Kent Watsen | Author: Kent Watsen | |||
skipping to change at page 34, line 33 ¶ | skipping to change at page 38, line 40 ¶ | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject | |||
to the license terms contained in, the Simplified BSD | to the license terms contained in, the Simplified BSD | |||
License set forth in Section 4.c of the IETF Trust's | License set forth in Section 4.c of the IETF Trust's | |||
Legal Provisions Relating to IETF Documents | 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; see | This version of this YANG module is part of RFC XXXX; see | |||
the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
revision "2018-06-04" { | revision "2018-09-20" { | |||
description | description | |||
"Initial version"; | "Initial version"; | |||
reference | reference | |||
"RFC XXXX: NETCONF Client and Server Models"; | "RFC XXXX: NETCONF Client and Server Models"; | |||
} | } | |||
// Features | // Features | |||
feature listen { | feature listen { | |||
description | description | |||
skipping to change at page 36, line 4 ¶ | skipping to change at page 40, line 9 ¶ | |||
} | } | |||
feature tls-call-home { | feature tls-call-home { | |||
description | description | |||
"The 'tls-call-home' feature indicates that the NETCONF | "The 'tls-call-home' feature indicates that the NETCONF | |||
server supports initiating a NETCONF over TLS call | server supports initiating a NETCONF over TLS call | |||
home connection to NETCONF clients."; | home connection to NETCONF clients."; | |||
reference | reference | |||
"RFC 8071: NETCONF Call Home and RESTCONF Call Home"; | "RFC 8071: NETCONF Call Home and RESTCONF Call Home"; | |||
} | } | |||
// protocol accessible nodes | ||||
container netconf-server { | container netconf-server { | |||
uses netconf-server; | uses netconf-server-grouping; | |||
description | description | |||
"Top-level container for NETCONF server configuration."; | "Top-level container for NETCONF server configuration."; | |||
} | } | |||
grouping netconf-server { | // reusable groupings | |||
grouping netconf-server-grouping { | ||||
description | description | |||
"Top-level grouping for NETCONF server configuration."; | "Top-level grouping for NETCONF server configuration."; | |||
container listen { | container listen { | |||
if-feature listen; | if-feature listen; | |||
presence "Enables server to listen for TCP connections"; | presence "Enables server to listen for TCP connections"; | |||
description "Configures listen behavior"; | description "Configures listen behavior"; | |||
leaf idle-timeout { | leaf idle-timeout { | |||
type uint16; | type uint16; | |||
units "seconds"; | units "seconds"; | |||
default 3600; // one hour | default 3600; // one hour | |||
skipping to change at page 41, line 21 ¶ | skipping to change at page 45, line 32 ¶ | |||
} | } | |||
} | } | |||
} // end tls | } // end tls | |||
} // end choice | } // end choice | |||
} // end endpoint | } // end endpoint | |||
} | } | |||
container connection-type { | container connection-type { | |||
description | description | |||
"Indicates the kind of connection to use."; | "Indicates the kind of connection to use."; | |||
choice connection-type { | choice connection-type { | |||
default persistent-connection; | mandatory true; | |||
description | description | |||
"Selects between available connection types."; | "Selects between available connection types."; | |||
case persistent-connection { | case persistent-connection { | |||
container persistent { | container persistent { | |||
presence | presence | |||
"Indicates that a persistent connection is to be | "Indicates that a persistent connection is to be | |||
maintained."; | maintained."; | |||
description | description | |||
"Maintain a persistent connection to the NETCONF | "Maintain a persistent connection to the NETCONF | |||
client. If the connection goes down, immediately | client. If the connection goes down, immediately | |||
start trying to reconnect to it, using the | start trying to reconnect to it, using the | |||
reconnection strategy. | reconnection strategy. | |||
This connection type minimizes any NETCONF client | This connection type minimizes any NETCONF client | |||
to NETCONF server data-transfer delay, albeit at | to NETCONF server data-transfer delay, albeit at | |||
the expense of holding resources longer."; | the expense of holding resources longer."; | |||
leaf idle-timeout { | ||||
type uint32; | ||||
units "seconds"; | ||||
default 86400; // one day; | ||||
description | ||||
"Specifies the maximum number of seconds that | ||||
a NETCONF session may remain idle. A NETCONF | ||||
session will be dropped if it is idle for an | ||||
interval longer than this number of seconds. | ||||
If set to zero, then the server will never | ||||
drop a session because it is idle. Sessions | ||||
that have a notification subscription active | ||||
are never dropped."; | ||||
} | ||||
container keep-alives { | container keep-alives { | |||
description | description | |||
"Configures the keep-alive policy, to | "Configures the keep-alive policy, to | |||
proactively test the aliveness of the SSH/TLS | proactively test the aliveness of the SSH/TLS | |||
client. An unresponsive SSH/TLS client will | client. An unresponsive SSH/TLS client will | |||
be dropped after approximately max-attempts * | be dropped after approximately max-attempts * | |||
max-wait seconds."; | max-wait seconds."; | |||
reference | reference | |||
"RFC 8071: NETCONF Call Home and RESTCONF Call | "RFC 8071: NETCONF Call Home and RESTCONF | |||
Home, Section 3.1, item S6"; | Call Home, Section 4.1, item S7"; | |||
leaf max-wait { | leaf max-wait { | |||
type uint16 { | type uint16 { | |||
range "1..max"; | range "1..max"; | |||
} | } | |||
units seconds; | units seconds; | |||
default 30; | default 30; | |||
description | description | |||
"Sets the amount of time in seconds after | "Sets the amount of time in seconds after | |||
which if no data has been received from | which if no data has been received from | |||
the SSH/TLS client, a SSH/TLS-level message | the SSH/TLS client, a SSH/TLS-level message | |||
skipping to change at page 42, line 40 ¶ | skipping to change at page 46, line 37 ¶ | |||
description | description | |||
"Sets the maximum number of sequential keep- | "Sets the maximum number of sequential keep- | |||
alive messages that can fail to obtain a | alive messages that can fail to obtain a | |||
response from the SSH/TLS client before | response from the SSH/TLS client before | |||
assuming the SSH/TLS client is no longer | assuming the SSH/TLS client is no longer | |||
alive."; | alive."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
case periodic-connection { | case periodic-connection { | |||
container periodic { | container periodic { | |||
presence | presence | |||
"Indicates that a periodic connection is to be | "Indicates that a periodic connection is to be | |||
maintained."; | maintained."; | |||
description | description | |||
"Periodically connect to the NETCONF client, so | "Periodically connect to the NETCONF client. The | |||
that the NETCONF client may deliver messages | NETCONF client should close the underlying TLS | |||
pending for the NETCONF server. The NETCONF | connection upon completing planned activities. | |||
client must close the connection when it is | ||||
ready to release it. Once the connection has | This connection type increases resource | |||
been closed, the NETCONF server will restart | utilization, albeit with increased delay in | |||
its timer until the next connection."; | NETCONF client to NETCONF client interactions."; | |||
leaf period { | ||||
type uint16; | ||||
units "minutes"; | ||||
default 60; | ||||
description | ||||
"Duration of time between periodic connections."; | ||||
} | ||||
leaf anchor-time { | ||||
type yang:date-and-time { | ||||
// constrained to minute-level granularity | ||||
pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}' | ||||
+ '(Z|[\+\-]\d{2}:\d{2})'; | ||||
} | ||||
description | ||||
"Designates a timestamp before or after which a | ||||
series of periodic connections are determined. | ||||
The periodic connections occur at a whole | ||||
multiple interval from the anchor time. For | ||||
example, for an anchor time is 15 minutes past | ||||
midnight and a period interval of 24 hours, then | ||||
a periodic connection will occur 15 minutes past | ||||
midnight everyday."; | ||||
} | ||||
leaf idle-timeout { | leaf idle-timeout { | |||
type uint16; | type uint16; | |||
units "seconds"; | units "seconds"; | |||
default 300; // five minutes | default 120; // two minutes | |||
description | description | |||
"Specifies the maximum number of seconds that | "Specifies the maximum number of seconds that | |||
a NETCONF session may remain idle. A NETCONF | a NETCONF session may remain idle. A NETCONF | |||
session will be dropped if it is idle for an | session will be dropped if it is idle for an | |||
interval longer than this number of seconds. | interval longer than this number of seconds. | |||
If set to zero, then the server will never | If set to zero, then the server will never | |||
drop a session because it is idle. Sessions | drop a session because it is idle."; | |||
that have a notification subscription active | ||||
are never dropped."; | ||||
} | ||||
leaf reconnect-timeout { | ||||
type uint16 { | ||||
range "1..max"; | ||||
} | ||||
units minutes; | ||||
default 60; | ||||
description | ||||
"Sets the maximum amount of unconnected time the | ||||
NETCONF server will wait before re-establishing | ||||
a connection to the NETCONF client. The | ||||
NETCONF server may initiate a connection before | ||||
this time if desired (e.g., to deliver an event | ||||
notification message)."; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container reconnect-strategy { | container reconnect-strategy { | |||
description | description | |||
"The reconnection strategy directs how a NETCONF server | "The reconnection strategy directs how a NETCONF server | |||
reconnects to a NETCONF client, after discovering its | reconnects to a NETCONF client, after discovering its | |||
connection to the client has dropped, even if due to a | connection to the client has dropped, even if due to a | |||
skipping to change at page 44, line 15 ¶ | skipping to change at page 48, line 19 ¶ | |||
} | } | |||
enum last-connected { | enum last-connected { | |||
description | description | |||
"Indicates that reconnections should start with | "Indicates that reconnections should start with | |||
the endpoint last connected to. If no previous | the endpoint last connected to. If no previous | |||
connection has ever been established, then the | connection has ever been established, then the | |||
first endpoint configured is used. NETCONF | first endpoint configured is used. NETCONF | |||
servers SHOULD be able to remember the last | servers SHOULD be able to remember the last | |||
endpoint connected to across reboots."; | endpoint connected to across reboots."; | |||
} | } | |||
enum random-selection { | ||||
description | ||||
"Indicates that reconnections should start with | ||||
a random endpoint."; | ||||
} | ||||
} | } | |||
default first-listed; | default first-listed; | |||
description | description | |||
"Specifies which of the NETCONF client's endpoints | "Specifies which of the NETCONF client's endpoints | |||
the NETCONF server should start with when trying | the NETCONF server should start with when trying | |||
to connect to the NETCONF client."; | to connect to the NETCONF client."; | |||
} | } | |||
leaf max-attempts { | leaf max-attempts { | |||
type uint8 { | type uint8 { | |||
range "1..max"; | range "1..max"; | |||
skipping to change at page 47, line 40 ¶ | skipping to change at page 52, line 5 ¶ | |||
[I-D.ietf-netconf-tls-client-server]. Please see the Security | [I-D.ietf-netconf-tls-client-server]. Please see the Security | |||
Considerations section in those documents for concerns related those | Considerations section in those documents for concerns related those | |||
groupings. | groupings. | |||
The YANG module defined in this document is designed to be accessed | The YANG module defined in this document is designed to be accessed | |||
via YANG based management protocols, such as NETCONF [RFC6241] and | via YANG based management protocols, such as NETCONF [RFC6241] and | |||
RESTCONF [RFC8040]. Both of these protocols have mandatory-to- | RESTCONF [RFC8040]. Both of these protocols have mandatory-to- | |||
implement secure transport layers (e.g., SSH, TLS) with mutual | implement secure transport layers (e.g., SSH, TLS) with mutual | |||
authentication. | authentication. | |||
The NETCONF access control model (NACM) [RFC6536] provides the means | The NETCONF access control model (NACM) [RFC8341] provides the means | |||
to restrict access for particular users to a pre-configured subset of | to restrict access for particular users to a pre-configured subset of | |||
all available protocol operations and content. | all available protocol operations and content. | |||
There are a number of data nodes defined in this YANG module that are | There are a number of data nodes defined in this YANG module that are | |||
writable/creatable/deletable (i.e., config true, which is the | writable/creatable/deletable (i.e., config true, which is the | |||
default). These data nodes may be considered sensitive or vulnerable | default). These data nodes may be considered sensitive or vulnerable | |||
in some network environments. Write operations (e.g., edit-config) | in some network environments. Write operations (e.g., edit-config) | |||
to these data nodes without proper protection can have a negative | to these data nodes without proper protection can have a negative | |||
effect on network operations. These are the subtrees and data nodes | effect on network operations. These are the subtrees and data nodes | |||
and their sensitivity/vulnerability: | and their sensitivity/vulnerability: | |||
skipping to change at page 48, line 32 ¶ | skipping to change at page 52, line 44 ¶ | |||
sensitive or vulnerable in some network environments. It is thus | sensitive or vulnerable in some network environments. It is thus | |||
important to control access to these operations. These are the | important to control access to these operations. These are the | |||
operations and their sensitivity/vulnerability: | operations and their sensitivity/vulnerability: | |||
NONE | NONE | |||
7. IANA Considerations | 7. IANA Considerations | |||
7.1. The IETF XML Registry | 7.1. The IETF XML Registry | |||
This document registers two URIs in the IETF XML registry [RFC3688]. | This document registers two URIs in the "ns" subregistry of the IETF | |||
Following the format in [RFC3688], the following registrations are | XML Registry [RFC3688]. Following the format in [RFC3688], the | |||
requested: | following registrations are requested: | |||
URI: urn:ietf:params:xml:ns:yang:ietf-netconf-client | URI: urn:ietf:params:xml:ns:yang:ietf-netconf-client | |||
Registrant Contact: The NETCONF WG of the IETF. | Registrant Contact: The NETCONF WG of the IETF. | |||
XML: N/A, the requested URI is an XML namespace. | XML: N/A, the requested URI is an XML namespace. | |||
URI: urn:ietf:params:xml:ns:yang:ietf-netconf-server | URI: urn:ietf:params:xml:ns:yang:ietf-netconf-server | |||
Registrant Contact: The NETCONF WG of the IETF. | Registrant Contact: The NETCONF WG of the IETF. | |||
XML: N/A, the requested URI is an XML namespace. | XML: N/A, the requested URI is an XML namespace. | |||
7.2. The YANG Module Names Registry | 7.2. The YANG Module Names Registry | |||
This document registers two YANG modules in the YANG Module Names | This document registers two YANG modules in the YANG Module Names | |||
registry [RFC7950]. Following the format in [RFC7950], the the | registry [RFC6020]. Following the format in [RFC6020], the the | |||
following registrations are requested: | following registrations are requested: | |||
name: ietf-netconf-client | name: ietf-netconf-client | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-netconf-client | namespace: urn:ietf:params:xml:ns:yang:ietf-netconf-client | |||
prefix: ncc | prefix: ncc | |||
reference: RFC XXXX | reference: RFC XXXX | |||
name: ietf-netconf-server | name: ietf-netconf-server | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-netconf-server | namespace: urn:ietf:params:xml:ns:yang:ietf-netconf-server | |||
prefix: ncs | prefix: ncs | |||
reference: RFC XXXX | reference: RFC XXXX | |||
8. References | 8. References | |||
8.1. Normative References | 8.1. Normative References | |||
[I-D.ietf-netconf-keystore] | [I-D.ietf-netconf-keystore] | |||
Watsen, K., "YANG Data Model for a "Keystore" Mechanism", | Watsen, K., "YANG Data Model for a Centralized Keystore | |||
draft-ietf-netconf-keystore-04 (work in progress), October | Mechanism", draft-ietf-netconf-keystore-06 (work in | |||
2017. | progress), September 2018. | |||
[I-D.ietf-netconf-ssh-client-server] | [I-D.ietf-netconf-ssh-client-server] | |||
Watsen, K. and G. Wu, "YANG Groupings for SSH Clients and | Watsen, K. and G. Wu, "YANG Groupings for SSH Clients and | |||
SSH Servers", draft-ietf-netconf-ssh-client-server-05 | SSH Servers", draft-ietf-netconf-ssh-client-server-06 | |||
(work in progress), October 2017. | (work in progress), June 2018. | |||
[I-D.ietf-netconf-tls-client-server] | [I-D.ietf-netconf-tls-client-server] | |||
Watsen, K. and G. Wu, "YANG Groupings for TLS Clients and | Watsen, K. and G. Wu, "YANG Groupings for TLS Clients and | |||
TLS Servers", draft-ietf-netconf-tls-client-server-05 | TLS Servers", draft-ietf-netconf-tls-client-server-06 | |||
(work in progress), October 2017. | (work in progress), June 2018. | |||
[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>. | |||
[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., | [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | |||
and A. Bierman, Ed., "Network Configuration Protocol | and A. Bierman, Ed., "Network Configuration Protocol | |||
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | |||
<https://www.rfc-editor.org/info/rfc6241>. | <https://www.rfc-editor.org/info/rfc6241>. | |||
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | |||
Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | |||
<https://www.rfc-editor.org/info/rfc6242>. | <https://www.rfc-editor.org/info/rfc6242>. | |||
[RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | |||
skipping to change at page 50, line 29 ¶ | skipping to change at page 54, line 47 ¶ | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
8.2. Informative References | 8.2. Informative References | |||
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
DOI 10.17487/RFC3688, January 2004, | DOI 10.17487/RFC3688, January 2004, | |||
<https://www.rfc-editor.org/info/rfc3688>. | <https://www.rfc-editor.org/info/rfc3688>. | |||
[RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | ||||
Protocol (NETCONF) Access Control Model", RFC 6536, | ||||
DOI 10.17487/RFC6536, March 2012, | ||||
<https://www.rfc-editor.org/info/rfc6536>. | ||||
[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | |||
Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | |||
<https://www.rfc-editor.org/info/rfc8040>. | <https://www.rfc-editor.org/info/rfc8040>. | |||
[RFC8071] Watsen, K., "NETCONF Call Home and RESTCONF Call Home", | [RFC8071] Watsen, K., "NETCONF Call Home and RESTCONF Call Home", | |||
RFC 8071, DOI 10.17487/RFC8071, February 2017, | RFC 8071, DOI 10.17487/RFC8071, February 2017, | |||
<https://www.rfc-editor.org/info/rfc8071>. | <https://www.rfc-editor.org/info/rfc8071>. | |||
[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | |||
BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | |||
<https://www.rfc-editor.org/info/rfc8340>. | <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>. | ||||
Appendix A. Change Log | Appendix A. Change Log | |||
A.1. 00 to 01 | A.1. 00 to 01 | |||
o Renamed "keychain" to "keystore". | o Renamed "keychain" to "keystore". | |||
A.2. 01 to 02 | A.2. 01 to 02 | |||
o Added to ietf-netconf-client ability to connected to a cluster of | o Added to ietf-netconf-client ability to connected to a cluster of | |||
endpoints, including a reconnection-strategy. | endpoints, including a reconnection-strategy. | |||
skipping to change at page 52, line 14 ¶ | skipping to change at page 57, line 14 ¶ | |||
A.6. 05 to 06 | A.6. 05 to 06 | |||
o Fixed change log missing section issue. | o Fixed change log missing section issue. | |||
o Updated examples to match latest updates to the crypto-types, | o Updated examples to match latest updates to the crypto-types, | |||
trust-anchors, and keystore drafts. | trust-anchors, and keystore drafts. | |||
o Reduced line length of the YANG modules to fit within 69 columns. | o Reduced line length of the YANG modules to fit within 69 columns. | |||
A.7. 06 to 07 | ||||
o Removed "idle-timeout" from "persistent" connection config. | ||||
o Added "random-selection" for reconnection-strategy's "starts-with" | ||||
enum. | ||||
o Replaced "connection-type" choice default (persistent) with | ||||
"mandatory true". | ||||
o Reduced the periodic-connection's "idle-timeout" from 5 to 2 | ||||
minutes. | ||||
o Replaced reconnect-timeout with period/anchor-time combo. | ||||
Acknowledgements | Acknowledgements | |||
The authors would like to thank for following for lively discussions | The authors would like to thank for following for lively discussions | |||
on list and in the halls (ordered by last name): Andy Bierman, Martin | on list and in the halls (ordered by last name): Andy Bierman, Martin | |||
Bjorklund, Benoit Claise, Mehmet Ersue, Balazs Kovacs, David | Bjorklund, Benoit Claise, Mehmet Ersue, Balazs Kovacs, David | |||
Lamparter, Alan Luchuk, Ladislav Lhotka, Radek Krejci, Tom Petch, | Lamparter, Alan Luchuk, Ladislav Lhotka, Radek Krejci, Tom Petch, | |||
Juergen Schoenwaelder, Phil Shafer, Sean Turner, and Bert Wijnen. | Juergen Schoenwaelder, Phil Shafer, Sean Turner, and Bert Wijnen. | |||
Authors' Addresses | Author's Address | |||
Kent Watsen | Kent Watsen | |||
Juniper Networks | Juniper Networks | |||
EMail: kwatsen@juniper.net | EMail: kwatsen@juniper.net | |||
Gary Wu | ||||
Cisco Networks | ||||
EMail: garywu@cisco.com | ||||
End of changes. 138 change blocks. | ||||
279 lines changed or deleted | 506 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/ |