Re: [core] CBOR Encoding of Data Modeled with YANG

Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> Tue, 08 December 2015 09:34 UTC

Return-Path: <j.schoenwaelder@jacobs-university.de>
X-Original-To: core@ietfa.amsl.com
Delivered-To: core@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 2BC8C1A92EB for <core@ietfa.amsl.com>; Tue, 8 Dec 2015 01:34:02 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.706
X-Spam-Level:
X-Spam-Status: No, score=-1.706 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FRT_BELOW2=2.154, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-2.3, T_RP_MATCHES_RCVD=-0.01] autolearn=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 M6SVkl549eY4 for <core@ietfa.amsl.com>; Tue, 8 Dec 2015 01:34:00 -0800 (PST)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id BC6491A92E9 for <core@ietf.org>; Tue, 8 Dec 2015 01:33:59 -0800 (PST)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id 379E68D8; Tue, 8 Dec 2015 10:33:58 +0100 (CET)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.220]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id 5o25JzOfHrwj; Tue, 8 Dec 2015 10:33:56 +0100 (CET)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Tue, 8 Dec 2015 10:33:56 +0100 (CET)
Received: from localhost (demetrius1.jacobs-university.de [212.201.44.46]) by hermes.jacobs-university.de (Postfix) with ESMTP id 74C7720058; Tue, 8 Dec 2015 10:33:56 +0100 (CET)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius1.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id yf5DtckchMHQ; Tue, 8 Dec 2015 10:33:55 +0100 (CET)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id 5DBF020056; Tue, 8 Dec 2015 10:33:54 +0100 (CET)
Received: by elstar.local (Postfix, from userid 501) id 494F33915160; Tue, 8 Dec 2015 10:33:52 +0100 (CET)
Date: Tue, 08 Dec 2015 10:33:52 +0100
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Michel Veillette <Michel.Veillette@trilliantinc.com>
Message-ID: <20151208093350.GA62650@elstar.local>
Mail-Followup-To: Michel Veillette <Michel.Veillette@trilliantinc.com>, Core <core@ietf.org>
References: <BLUPR06MB176391F16B5E9D6CCC531771FE0E0@BLUPR06MB1763.namprd06.prod.outlook.com> <20151207091044.GA59864@elstar.local> <BLUPR06MB1763ABFE8DE1E0E18F5F06A5FE090@BLUPR06MB1763.namprd06.prod.outlook.com> <20151207194229.GA61491@elstar.local> <BLUPR06MB1763B7F9EBF812C06DB04252FE090@BLUPR06MB1763.namprd06.prod.outlook.com> <20151207203826.GA61647@elstar.local> <BLUPR06MB1763E9AB0D1E4A0478D47C05FE090@BLUPR06MB1763.namprd06.prod.outlook.com>
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <BLUPR06MB1763E9AB0D1E4A0478D47C05FE090@BLUPR06MB1763.namprd06.prod.outlook.com>
User-Agent: Mutt/1.4.2.3i
Archived-At: <http://mailarchive.ietf.org/arch/msg/core/pGMHWGUpUuaKk4oKdnOxAKWWupI>
Cc: Core <core@ietf.org>
Subject: Re: [core] CBOR Encoding of Data Modeled with YANG
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/core/>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 08 Dec 2015 09:34:02 -0000

Hi Michel,

I am looking for a precise description of the _algorithm_, I am not so
much looking for an example. Has someone implemented this numbering
algorithm in pyang and verified that the algorithm always produces the
same data node ids for all the possible changes I can make to a YANG
model? See section 10 of RFC 6020 as a starting point what is allowed
to change in module revisions. See also section 11 of
draft-ietf-netmod-rfc6020bis-08.txt.

/js

On Mon, Dec 07, 2015 at 09:31:37PM +0000, Michel Veillette wrote:
> Hi Juergen
> 
> The algorithm proposed to generate IDs  is described in
> https://tools.ietf.org/html/draft-veillette-core-cool-00#section-6.
> 
> - IDs are assigned based on there location in the schema tree.
> 
> - Each type of object (Data node IDs, Notification IDs, Notification parameter IDs,
>    Protocol Operation IDs, Input parameter IDs, Output parameter IDs)
>    have a different namespace.
> 
>    This approach help keeping the same IDs  when updating a module.
>    New objects can be added at the end of each list without affecting the existing IDs.
> 
> - When an object is added within a list or within the schema tree, its ID can be
>    manually assigned using a YANG extension to avoid braking backward compatibility. 
>    Alternatively, data nodes can be added using the augment statement.
>    In this case, IDs are associated to a different module ID.
> 
>   https://tools.ietf.org/html/draft-veillette-core-cool-00#section-7.3 show an
>   example of use of the augment statement, see data node ID 68620 bellow.
>  
>    CoAP response:
>      2.05 Content Content-Format(application/cbor)
>      {
>        66560 : {
>          1 : {
>            2 : [
>              {
>                3 : "eth0",
>                4 : "Ethernet adapter Local Area Connection",
>                5 : "ethernetCsmacd",
>                6 : true,
>                68620 : {
>                  13 : true,
>                  14 : true,
>                  15 : 1280,
>                  16 : [
>                    {
>                      17 : "fe80::200:f8ff:fe21:67cf",
>                      18 : 10
>                    }
>                  ]
>                }
>              }
>            ]
>          }
>        }
>      }
>    
> 
> -----Original Message-----
> From: Juergen Schoenwaelder [mailto:j.schoenwaelder@jacobs-university.de] 
> Sent: December-07-15 3:38 PM
> To: Michel Veillette <Michel.Veillette@trilliantinc.com>
> Cc: Core <core@ietf.org>
> Subject: Re: [core] CBOR Encoding of Data Modeled with YANG
> 
> On Mon, Dec 07, 2015 at 08:31:03PM +0000, Michel Veillette wrote:
> > Hi Juergen
> > 
> > My "smart" quote are now disabled.
> > Thanks to motivate me to turn off this nonsense.
> > 
> > About the format/assignment of the numeric data node IDs, the consensus is to keep them out of the YANG to CBOR mapping draft in order to make progress. 
> >
> 
> But this does not make sense. The naming must be settled, even if it is painful.
> 
> > Peoples agree that names encoded as string represents too much overhead to address the needs of constrained devices and constrained networks as defined by RFC 7228. However, there are lots of discussions about how those names can be associated with small IDs encoded as integers and how small those integers need to be.
> > 
> > The CoOL draft proposes structured IDs based on the following concept:
> > 
> >    Only IDs  associated with module names are registered, IDs associated to data node identifiers are automatically generated.
> > 
> >    e.g. draft-ietf-netmod-yang-json-06 page 5
> >    for the member-name "foomod:top"
> >    the ID associated with the name of the module "foomod" is registered,
> >    the ID associated with the data node identifier "top" is auto-generated.
> 
> How do you auto-generate data node identifiers? Does the algorithm work with module revisions, augmentations, features, ...?
> 
> > To simplify scaling of the registered module names, different approaches have been proposed:
> > - Possibility to allocation ranges of IDs (bundle) to developers and SDOs for distributed assignment.
> > - Possibility to define a range of private IDs (IDs locally assigned 
> > and used, not globally unique, same concept as IPv4 10.x.x.x)
> > - Possible to define disjoint registries, implemented using a 
> > different resource type & default URI path
> 
> I need to understand the algorithm for assigning data node identifiers first to see whether this approach makes sense.
> 
> /js
> 
> -- 
> Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
> Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>