Re: [netmod] Question on RFC8342 + RESTCONF extension (draft-ietf-netconf-nmda-restconf)

"Seehofer, Markus" <> Tue, 11 December 2018 17:11 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 73D91130EA1 for <>; Tue, 11 Dec 2018 09:11:21 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -4.201
X-Spam-Status: No, score=-4.201 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id fLW0YXLM8XJ8 for <>; Tue, 11 Dec 2018 09:11:19 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 271BC130E9E for <>; Tue, 11 Dec 2018 09:11:19 -0800 (PST)
Received: from pps.filterd (dcric1ppa03pa.mcp.local []) by dcric1ppa03pa.mcp.local ( with SMTP id wBBH7LIw026967; Tue, 11 Dec 2018 12:11:18 -0500
Received: from dcric1exc01pa.mcp.local (dcric1exc01pa.mcp.local []) by dcric1ppa03pa.mcp.local with ESMTP id 2pag538e2k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=FAIL); Tue, 11 Dec 2018 12:11:17 -0500
Received: from DCRIC1EXC03PA.mcp.local ( by DCRIC1EXC01PA.mcp.local ( with Microsoft SMTP Server (TLS) id 15.0.1367.3; Tue, 11 Dec 2018 12:11:17 -0500
Received: from DCRIC1EXC03PA.mcp.local ([]) by DCRIC1EXC03PA.mcp.local ([]) with mapi id 15.00.1367.000; Tue, 11 Dec 2018 12:11:17 -0500
From: "Seehofer, Markus" <>
To: Juergen Schoenwaelder <>
CC: "" <>
Thread-Topic: [EXTERNAL] Re: [netmod] Question on RFC8342 + RESTCONF extension (draft-ietf-netconf-nmda-restconf)
Thread-Index: AdSRW5qHNYi/eHfrTieT+mUbUnzcbQALMCKAAAo1hoD//8q0gIAAS0Xg
Date: Tue, 11 Dec 2018 17:11:16 +0000
Message-ID: <5527d148dc3d4a9996a1e2298537105f@DCRIC1EXC03PA.mcp.local>
References: <dee9854618dc46088972a34926c104c1@DCRIC1EXC03PA.mcp.local> <> <9d40f9ad4b494e67ba2808341dc82e4d@DCRIC1EXC03PA.mcp.local> <>
In-Reply-To: <>
Accept-Language: de-DE, en-US
Content-Language: de-DE
x-ms-exchange-transport-fromentityheader: Hosted
x-originating-ip: []
x-c2processedorg: 157cf0a0-3349-4636-89a5-bb6917ccdf3c
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2018-12-11_05:, , signatures=0
Content-Type: text/plain; charset="iso-8859-1"
Archived-At: <>
Subject: Re: [netmod] Question on RFC8342 + RESTCONF extension (draft-ietf-netconf-nmda-restconf)
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: NETMOD WG list <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Tue, 11 Dec 2018 17:11:21 -0000

Hello Juergen,

comments inline below.

-----Ursprüngliche Nachricht-----
Von: Juergen Schoenwaelder [] 
Gesendet: Dienstag, 11. Dezember 2018 17:15
An: Seehofer, Markus
Betreff: Re: [EXTERNAL] Re: [netmod] Question on RFC8342 + RESTCONF extension (draft-ietf-netconf-nmda-restconf)

On Tue, Dec 11, 2018 at 02:55:10PM +0000, Seehofer, Markus wrote:
> Hello Juergen,
> see my comments inline below. As being quite new to the topic, going through all the old and current RFCs and drafts is quite challenging.
> So please apologize for "simple" questions or ones maybe already raised.
> > 1.       RFC 8342 (NMDA)
> > Chapter 5.3.  The Operational State Datastore (<operational>) says:
> > "The operational state datastore (<operational>) is a read-only datastore .... "
> > Chapter 6.2. Invocation of Actions and RPCs says:
> > "Actions are always invoked in the context of the operational state datastore. The node for which the action is invoked MUST exist in the operational state datastore."
> >
> > "YANG actions can only be invoked in {+restconf}/ds/ietf-datastores:operational."
> >
> > Question: How can one invoke an action in a as read-only defined datastore? Or am I missing something?
> Why do you expect that a datastore has to be writable in order to 
> invoke an action? RFC 7950 has the example of a ping action tied to an 
> interface. (You ping a remote system from that specific interface.) In 
> general, actions are understood as being tied to real resources and 
> hence to the operational datastore. (For example, you can't ping from 
> an interface that is configured but not physically present.)
> [MSEE]: I do not expect that a datastore has to be writeable to invoke an action, but I do expect that a "read-only" datastore is not writeable and RFC 8342 says clearly operational state datastore is "read-only".

Is your question 'how do I do actuall invoke an operation/action'?
Well, RFC 8040 talks about 'operation resource' and that you POST to them. What NMDA RESTCONF I think says is that such an invocation is executed in the context of the operational state datastore.

[MSEE]: No I guess I understood how to invoke an operation/action but I'm stuck with the following statements:
               - draft-ietf-netconf-nmda-restconf-05 says in Chapter 3.1: "YANG actions can only be invoked in {+restconf}/ds/ietf-datastores:operational" with
                  "The resource {+restconf}/ds/ietf-datastores:operational refers to the operational state datastore" and "The operational state datastore (<operational>) is a read-only datastore"
               - RFC 8040 says in Chapter 3.6 " Operation resources representing YANG actions are not identified in this subtree, since they are invoked using a URI within the '{+restconf}/data' subtree" and
                 "An action is invoked as: POST {+restconf}/data/<data-resource-identifier>/<action>"

               So without NMDA it was clear, invoke an action using {+restconf}/data}. With NMDA what is the correct way to trigger an action as the draft says "YANG actions can only be invoked in {+restconf}/ds/ietf-datastores:operational"?
> > 2.       The NMDA is a huge step forward for NC and RC, thanks for that. NMDA in combination with the new RESTCONF extensions let one now select one of the named datastores
> > in RFC 8342. Reading the RFC and draft I'm still missing (or even more overlook I guess) the following. RFC 8040 Chapter 4.5 says:
> > "A PUT on the datastore resource is used to replace the entire 
> > contents of the datastore...". So does this mean one can have the same behavior as in NETCONF where you can copy the "running" config to "startup" or "candidate" config to "running" if a RESTCONF server would support them? Is there any example how this would look like if it is allowed?
> A PUT does not really get you there, to copy a datastore to another you want an operation on the server.
> [MSEE]: Exactly this is what I want. NETCONF specifies this clearly in the RFCs with <copy-config> but how does one trigger this with RESTCONF? I had the hope with NMDA + RESTCONF extensions this would
>                be possible too. Or do I still miss something?

I think this was discussed at some point but then dropped. It may work to implement ietf-netconf (or the copy-config defined in there) to get direct access to NETCONF operations.

[MSEE]: Thanks, this could work. Haven't thought about that.


Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <>

Privileged and/or Confidential information may be contained in this message. If you are not the addressee of this message, you may not copy, use or deliver this message to anyone. In such event, you should destroy the message and kindly notify the sender by reply e-mail. It is understood that opinions or conclusions that do not relate to the official business of the company are neither given nor endorsed by the company. Thank You.