Re: [netmod] [Netconf] Retrieving Information Pointed by leafref

Igor Bryskin <Igor.Bryskin@huawei.com> Mon, 09 October 2017 17:08 UTC

Return-Path: <Igor.Bryskin@huawei.com>
X-Original-To: netmod@ietfa.amsl.com
Delivered-To: netmod@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4F79813470B; Mon, 9 Oct 2017 10:08:08 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.221
X-Spam-Level:
X-Spam-Status: No, score=-4.221 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id I-eoJ0Dkrig3; Mon, 9 Oct 2017 10:08:06 -0700 (PDT)
Received: from lhrrgout.huawei.com (lhrrgout.huawei.com [194.213.3.17]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 2E5A91346E1; Mon, 9 Oct 2017 10:08:05 -0700 (PDT)
Received: from 172.18.7.190 (EHLO LHREML714-CAH.china.huawei.com) ([172.18.7.190]) by lhrrg01-dlp.huawei.com (MOS 4.3.7-GA FastPath queued) with ESMTP id DXF26777; Mon, 09 Oct 2017 17:08:02 +0000 (GMT)
Received: from SJCEML703-CHM.china.huawei.com (10.208.112.39) by LHREML714-CAH.china.huawei.com (10.201.108.37) with Microsoft SMTP Server (TLS) id 14.3.301.0; Mon, 9 Oct 2017 18:08:01 +0100
Received: from SJCEML702-CHM.china.huawei.com ([169.254.4.207]) by SJCEML703-CHM.china.huawei.com ([169.254.5.15]) with mapi id 14.03.0301.000; Mon, 9 Oct 2017 10:07:55 -0700
From: Igor Bryskin <Igor.Bryskin@huawei.com>
To: Per Hedeland <per@tail-f.com>, Xufeng Liu <xufeng.liu.ietf@gmail.com>
CC: "netconf@ietf.org" <netconf@ietf.org>, "netmod@ietf.org" <netmod@ietf.org>
Thread-Topic: [Netconf] [netmod] Retrieving Information Pointed by leafref
Thread-Index: AdM+52gw6QWX/3ijR4GeNhdOmHSt/gBsqhSA///GxXmAABh1KIABatEAgAAoFACAAGilEA==
Date: Mon, 9 Oct 2017 17:07:54 +0000
Message-ID: <0C72C38E7EBC34499E8A9E7DD007863909CDB234@SJCEML702-CHM.china.huawei.com>
References: <033601d33ee7$bd359810$37a0c830$@gmail.com> <eac8b96e-227b-347f-9c02-81718918ed08@tail-f.com> <etPan.59da9a33.12305c3a.3f7f@localhost> <etPan.59daaeb6.6daf0f5d.4ba3@localhost> <049501d34104$6aa46670$3fed3350$@gmail.com> <59DB9E54.8080805@tail-f.com>
In-Reply-To: <59DB9E54.8080805@tail-f.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [10.47.154.107]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-CFilter-Loop: Reflected
X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020203.59DBACF3.0022, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0, ip=169.254.4.207, so=2013-06-18 04:22:30, dmn=2013-03-21 17:37:32
X-Mirapoint-Loop-Id: f06b03e3335ab3f1842511953643139d
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/Kvyb7NJfU-cX7NiQPG1uhgESUjk>
Subject: Re: [netmod] [Netconf] Retrieving Information Pointed by leafref
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: NETMOD WG list <netmod.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/netmod>, <mailto:netmod-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/netmod/>
List-Post: <mailto:netmod@ietf.org>
List-Help: <mailto:netmod-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/netmod>, <mailto:netmod-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 09 Oct 2017 17:08:08 -0000

Hi Per,

Basically, what we need is a way for a client to request something like this:

get <XPath> joint with <XPath1, XPath2, ..., XPathn>

with a server interpreting the request as follows:
if a node pointed by XPath contains a pointer (e.g. key leafref) matching one of the XPath from the "joint with" list, then the server must provide the entire body of the node pointed by the pointer, otherwise, just the pointer (as it happens today, that is, when no "joint with" list specified).

We think that this would allow for the client to optimize the number of request-response iterations depending on application/use case.

Regards,
Igor  






-----Original Message-----
From: Per Hedeland [mailto:per@tail-f.com] 
Sent: Monday, October 09, 2017 12:06 PM
To: Xufeng Liu
Cc: Igor Bryskin; netconf@ietf.org; netmod@ietf.org
Subject: Re: [Netconf] [netmod] Retrieving Information Pointed by leafref

I understand your use case, but a leaf of type leafref does not in
general identify a single node in the data tree - the leafref path could
be for a non-key leaf, and/or the path could traverse list nodes, and/or
the "target" list could have multiple keys and thus multiple
leafref-leafs be required to identify a specific list entry.

Thus it seems to me that your use case is not a reasonable basis for a
new protocol operation. My XPath foo isn't very good either, but I do
believe Robert's suggestion of using an XPath filter could be a way
forward. I *think* the filter expression would be something along the
lines of

 /te/tunnels/tunnel[name='foo'] | /te/explicit-paths/explicit-path[name=/te/tunnels/tunnel[name='foo']/paths/path/explicit-path]

--Per

On 2017-10-09 15:42, Xufeng Liu wrote:
> Hi Per,
> 
>  
> 
> *From:* Igor Bryskin [mailto:Igor.Bryskin@huawei.com]
> *Sent:* Sunday, October 8, 2017 7:04 PM
> *To:* Igor Bryskin <Igor.Bryskin@huawei.com>om>; per@tail-f.com; xufeng.liu.ietf@gmail.com
> *Cc:* netconf@ietf.org; netmod@ietf.org
> *Subject:* Re: [Netconf] [netmod] Retrieving Information Pointed by leafref
> 
>  
> 
> 
> Hi Joel,
> 
> Thanks, I think I didnt explain our problem correctly.
> 
> In our case we have a leafref pointing to a te tunnel name, which happens to be a key to lookup the (axilary) tunnel.  We need  a way to include the entire tunnel body (not just a name) into the get
> response. This is to optimize the number of iterations between the client and the server. As Xufeng put it something similar to SQL join,
> 
> Igor
> 
> *From:*Igor Bryskin
> 
> *To:*per@tail-f.com,xufeng.liu.ietf@gmail.com,
> 
> *Cc:*netconf@ietf.org,netmod@ietf.org,
> 
> *Date:*2017-10-08 17:36:47
> 
> *Subject:*Re: [Netconf] [netmod] Retrieving Information Pointed by leafref
> 
>  
> 
> Hi Per,
> 
> In a nutshell we would lika for a netconf client to have a way  to instruct the server on whether in response to the get request the server needs to provide the entire body of a datastore node pointed
> to by a leafref or just a pointer to said node, so that the node's body could be retrieved by a subsequent separate request. This is requested by implementors who want to optimise rhe number of
> interactions between a client and its server.
> 
> Cheers,
> Igor
> 
> *From:*Per Hedeland
> 
> *To:*Xufeng Liu,
> 
> *Cc:*netconf@ietf.org,'NetMod WG',
> 
> *Date:*2017-10-08 14:01:27
> 
> *Subject:*Re: [Netconf] [netmod] Retrieving Information Pointed by leafref
> 
>  
> 
> On 2017-10-06 23:11, Xufeng Liu wrote:
>> During the design team discussion for TE and MPLS YANG modeling, we have received a request from implementers: How to minimize the number of NETCONF/RESTCONF RPCs to improve operation efficiency? 
>> Especially for the case when the operator or client software needs to retrieve the object contents pointed by a leafref.
>> 
>> For example, given the following simplified TE tunnel model,
>> 
>> +--rw te
>> 
>>      +--rw explicit-paths
>> 
>>      |  +--rw explicit-path* [name]
>> 
>>      |     +--rw name                      string
>> 
>>      |        +--rw explicit-route-object* [index]
>> 
>>      |           +--rw index                   uint32
>> 
>>      |           +--rw explicit-route-usage?   identityref
>> 
>>      +--rw tunnels
>> 
>>      |  +--rw tunnel* [name]
>> 
>>      |  |  +--rw name                   string
>> 
>>      |  |  +--rw paths
>> 
>>      |  |  |  +--rw path* [name]
>> 
>> |  |  |     +--rw explicit-path?  -> ../../../../../explicit-paths/explicit-path/name
>> 
>> when the client tries to retrieve a tunnels information based on the tunnel name, the get operation returns a list of leafrefs pointing to the paths of the tunnel.
> 
> Sorry, I'm afraid I don't follow. Can you explain exactly what your
> "get" request is (protocol and payload), and where the "list of
> leafref's" (whatever that may be) occurs in the reply?
> 
> */[Xufeng]  The get operation is the NETCONF/RESTCON <get> protocol operation, or the <get-data> operation described in https://tools.ietf.org/html/draft-dsdt-nmda-netconf-01 and the GET operations
> on {+restconf}/ds/<datastore> described in  https://tools.ietf.org/html/draft-ietf-netconf-nmda-restconf-00./*
> 
> */ /*
> 
> */We have a list of leafref values because in this example model, each tunnel contains a list of paths, each of them contains a leafref. The get returns a value for each instance of such a leafref,
> which (as a string value) will be used as a constraint (foreign key) to retrieve the instance of an explicit-path in the model above./*
> 
> 
> 
> JFYI, in case there is some fundamental misunderstanding here: a leaf of
> type leafref has a single value - *one* of those that satisfy the leafref
> constraint, in case there are multiple "candidates".
> 
> --Per
> 
>> The client needs to issue at 
>> least one more get operation to retrieve the path information about the given tunnel. The request is to combine these two operations into one.
>> 
>> In the RDBMS SQL world, join can be used when SQL select is performed, but NETCONF/YANG currently does not have this capability.
>> 
>> Wed like to ask whether such a request is considered reasonable.
>> 
>> If the request is reasonable, the next question is how to proceed. This seems to be a protocol issue rather than YANG modeling issue. Is it acceptable to add a new operation to achieve such a 
>> <get-data> operation with expanded leafrefs?
>> 
>> Comments and suggestions are appreciated.
>> 
>> Thanks,
>> 
>> - Xufeng
>> 
>> 
>> 
>> _______________________________________________
>> netmod mailing list
>> netmod@ietf.org <mailto:netmod@ietf.org>
>> https://www.ietf.org/mailman/listinfo/netmod
>> 
> 
> _______________________________________________
> Netconf mailing list
> Netconf@ietf.org <mailto:Netconf@ietf.org>
> https://www.ietf.org/mailman/listinfo/netconf
>