RESTCONF Client and Server ModelsJuniper Networkskwatsen@juniper.netJacobs University Bremenj.schoenwaelder@jacobs-university.de
Operations
NETCONF Working GroupThis document defines two YANG modules,
one module to configure a RESTCONF client and the other module to
configure a RESTCONF server. Both modules support the TLS transport
protocol with both standard RESTCONF and RESTCONF Call Home connections.This draft contains many placeholder values that need to be replaced
with finalized values at the time of publication. This note summarizes
all of the substitutions that are needed. No other RFC Editor
instructions are specified elsewhere in this document.This document contains references to other drafts in progress, both in
the Normative References section, as well as in body text throughout.
Please update the following references to reflect their final RFC assignments:
I-D.ietf-netconf-keystoreI-D.ietf-netconf-tls-client-serverArtwork in this document contains shorthand references to drafts in
progress. Please apply the following replacements:
XXXX --> the assigned RFC value for this draftZZZZ --> the assigned RFC value for I-D.ietf-netconf-tls-client-serverArtwork in this document contains placeholder values for the date of publication of this
draft. Please apply the following replacement:
2017-06-13 --> the publication date of this draftThe following Appendix section is to be removed prior to publication:
Appendix A. Change LogThis document defines two YANG modules,
one module to configure a RESTCONF client and the other module to
configure a RESTCONF server .
Both modules support the TLS transport
protocol with both standard RESTCONF and RESTCONF Call Home connections
.The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL",
"SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
and "OPTIONAL" in this document are to be interpreted as
described in RFC 2119 .A simplified graphical representation of the data models
is used in this document. The meaning of the symbols in
these diagrams is as follows:
Brackets "[" and "]" enclose list keys.Braces "{" and "}" enclose feature names, and indicate
that the named feature must be present for the subtree
to be present.Abbreviations before data node names: "rw" means
configuration (read-write) and "ro" state data
(read-only).Symbols after data node names: "?" means an optional
node, "!" means a presence container, and "*" denotes a
list and leaf-list.Parentheses enclose choice and case nodes, and case
nodes are also marked with a colon (":").Ellipsis ("...") stands for contents of subtrees that
are not shown.EDITOR NOTE: Please ignore this section, it is incomplete.The RESTCONF client model presented in this section supports both clients
initiating connections to servers, as well as clients listening
for connections from servers calling home.This model supports the TLS transport protocol using the TLS client
groupings defined in .All private keys and trusted certificates are held in the
keystore model defined in .YANG feature statements are used to enable implementations to advertise
which parts of the model the RESTCONF client supports.Note: all lines are folded at column 71 with no '\' character.The following example illustrates configuring a RESTCONF
client to initiate connections, as well as listening for call-home
connections.This example is consistent with the examples presented in
Section 2.2 of .This YANG module imports YANG types from and .The RESTCONF Server model presented in this section supports servers
both listening for connections as well as initiating call-home
connections.This model supports the TLS transport protocol using the TLS server groupings defined in
.All private keys and trusted certificates are held in the
keystore model defined in .YANG feature statements are used to enable implementations to advertise
which parts of the model the RESTCONF server supports.Note: all lines are folded at column 71 with no '\' character.The following example illustrates configuring a RESTCONF server
to listen for RESTCONF client connections, as well as configuring
call-home to one RESTCONF client.This example is consistent with the examples presented in
Section 2.2 of .This YANG module imports YANG types from and .The YANG module defined in this document uses a grouping defined in
. Please see the Security Considerations
section in that document for concerns related that grouping.The YANG module defined in this document is designed to be accessed via YANG
based management protocols, such as NETCONF and
RESTCONF . Both of these protocols have mandatory-to-implement
secure transport layers (e.g., SSH, TLS) with mutual authentication.The NETCONF access control model (NACM) provides the means
to restrict access for particular users to a pre-configured subset of all available
protocol operations and content.There are a number of data nodes defined in this YANG module that are
writable/creatable/deletable (i.e., config true, which is the default). These data
nodes may be considered sensitive or vulnerable in some network environments. Write
operations (e.g., edit-config) to these data nodes without proper protection can
have a negative effect on network operations. These are the subtrees and data nodes
and their sensitivity/vulnerability:
Some of the readable data nodes in this YANG module may be considered sensitive
or vulnerable in some network environments. It is thus important to control read
access (e.g., via get, get-config, or notification) to these data nodes. These are
the subtrees and data nodes and their sensitivity/vulnerability:
Some of the RPC operations in this YANG module may be considered sensitive or
vulnerable in some network environments. It is thus important to control access
to these operations. These are the operations and their sensitivity/vulnerability:
This document registers two URIs in the IETF XML
registry . Following the format in
, the following registrations are
requested:This document registers two YANG modules in the
YANG Module Names registry .
Following the format in , the
the following registrations are requested:The authors would like to thank for following for
lively discussions on list and in the halls (ordered
by last name): Andy Bierman, Martin Bjorklund, Benoit Claise,
Mehmet Ersue, Balázs Kovács, David Lamparter, Alan Luchuk, Ladislav Lhotka,
Radek Krejci, Tom Petch, Phil Shafer, Sean Turner, and
Bert Wijnen.
Juergen Schoenwaelder and was partly funded by Flamingo, a
Network of Excellence project (ICT-318488) supported by the
European Commission under its Seventh Framework Programme.
This draft was split out from draft-ietf-netconf-server-model-09.Added in new features 'listen' and 'call-home' so future transports
can be augmented in.Renamed "keychain" to "keystore".Filled in previously missing 'ietf-restconf-client' module.Updated the ietf-restconf-server module to accomodate new
grouping 'ietf-tls-server-grouping'.Refined use of tls-client-grouping to add a must statement
indicating that the TLS client must specify a client-certificate.Changed restconf-client??? to be a grouping (not a container).