Re: [core] CBOR Encoding of Data Modeled with YANG
Michel Veillette <Michel.Veillette@trilliantinc.com> Tue, 08 December 2015 19:54 UTC
Return-Path: <Michel.Veillette@trilliantinc.com>
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 DF56F1A219F for <core@ietfa.amsl.com>; Tue, 8 Dec 2015 11:54:31 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.252
X-Spam-Level:
X-Spam-Status: No, score=0.252 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FRT_BELOW2=2.154, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 kBeMQizaAY5Z for <core@ietfa.amsl.com>; Tue, 8 Dec 2015 11:54:29 -0800 (PST)
Received: from na01-by2-obe.outbound.protection.outlook.com (mail-by2on0104.outbound.protection.outlook.com [207.46.100.104]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A34071A2182 for <core@ietf.org>; Tue, 8 Dec 2015 11:54:29 -0800 (PST)
Received: from BLUPR06MB1763.namprd06.prod.outlook.com (10.162.224.149) by BLUPR06MB1763.namprd06.prod.outlook.com (10.162.224.149) with Microsoft SMTP Server (TLS) id 15.1.337.19; Tue, 8 Dec 2015 19:54:25 +0000
Received: from BLUPR06MB1763.namprd06.prod.outlook.com ([10.162.224.149]) by BLUPR06MB1763.namprd06.prod.outlook.com ([10.162.224.149]) with mapi id 15.01.0337.015; Tue, 8 Dec 2015 19:54:25 +0000
From: Michel Veillette <Michel.Veillette@trilliantinc.com>
To: Ladislav Lhotka <lhotka@nic.cz>, Alexander Pelov <a@ackl.io>, "core@ietf.org" <core@ietf.org>
Thread-Topic: [core] CBOR Encoding of Data Modeled with YANG
Thread-Index: AdEtPHYWp5+Kr9OtQ0Oj//Irn0p12QDkrIIAAAzxqKAACR5VgAAAPE1QAAG37gAAAP5qIAAaFoAAAAGBWAAAC66EgAAGvDyQ
Date: Tue, 08 Dec 2015 19:54:24 +0000
Message-ID: <BLUPR06MB1763CE370889EED9CB23DBA0FE080@BLUPR06MB1763.namprd06.prod.outlook.com>
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> <20151208093350.GA62650@elstar.local> <5666AE1A.2040908@ackl.io> <m28u55lz0g.fsf@birdie.labs.nic.cz>
In-Reply-To: <m28u55lz0g.fsf@birdie.labs.nic.cz>
Accept-Language: fr-CA, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: spf=none (sender IP is ) smtp.mailfrom=Michel.Veillette@trilliantinc.com;
x-originating-ip: [207.96.192.122]
x-microsoft-exchange-diagnostics: 1; BLUPR06MB1763; 5:HtJwaZArhmX+n+ZL0VVHMCBaOV5BnFOSjzuS0zZ18vZHdEUIpLYKMQ7OdbLBN/64Uwxo8pFI0UGhWQEGJX1C21t1A8tdWKXs+Ui9OcUlTTjZNqmrqJncdV63OlECqtE1ucFmfgaFiuKAm5dotVccXg==; 24:/rM671UzC7ZG5DzegNePfs+BPjf3mCTf7sdv7ZLb6Kjw0cbsShc7yJAP1lZim0SaBObv2ijS6uA0hShB8h4ARkfLAoN7j5fUX0v8YHRI17w=
x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR06MB1763;
x-microsoft-antispam-prvs: <BLUPR06MB17638701B567639AB9F83979FE080@BLUPR06MB1763.namprd06.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:(256376046250027);
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(601004)(2401047)(520078)(5005006)(8121501046)(3002001)(10201501046); SRVR:BLUPR06MB1763; BCL:0; PCL:0; RULEID:; SRVR:BLUPR06MB1763;
x-forefront-prvs: 0784C803FD
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(377454003)(479174004)(189002)(13464003)(24454002)(199003)(554214002)(54356999)(76576001)(74316001)(2950100001)(99286002)(2900100001)(3846002)(76176999)(81156007)(106356001)(5004730100002)(50986999)(92566002)(105586002)(586003)(10400500002)(5003600100002)(189998001)(122556002)(6116002)(2501003)(15975445007)(77096005)(33656002)(87936001)(97736004)(5001770100001)(19580405001)(40100003)(107886002)(11100500001)(1096002)(5008740100001)(102836003)(5001960100002)(86362001)(93886004)(101416001)(19580395003)(1220700001)(5002640100001)(66066001)(575784001)(781001); DIR:OUT; SFP:1102; SCL:1; SRVR:BLUPR06MB1763; H:BLUPR06MB1763.namprd06.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en;
received-spf: None (protection.outlook.com: trilliantinc.com does not designate permitted sender hosts)
spamdiagnosticoutput: 1:23
spamdiagnosticmetadata: NSPM
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: trilliantinc.com
X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Dec 2015 19:54:25.0404 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 4f6fbd13-0dfb-4150-85c3-d43260c04309
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR06MB1763
Archived-At: <http://mailarchive.ietf.org/arch/msg/core/9R5DqQjVtp2DLEpl8TPW2coDvI8>
Subject: Re: [core] CBOR Encoding of Data Modeled with YANG
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
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 19:54:32 -0000
Hi Ladislav Hashes have advantages, no doubts. However, IMO they are irrelevant since they don’t address the needs of the constrained devices and constrained networks which is the goal of this exercise. With hashes: - Clients must be aware of both object names and hashes in order to interact with objects and resolve rehash. This is worse than member-name (draft-ietf-netmod-yang-json-06 section 4) - Extra handshakes are required to resolve rehash This is worse than member-name - Clients must store the rehash table for each peer This is worse than member-name - Hashes don't significantly reduce de size of messages For existing modules, the average saving is around 30% compared to member-name For modules specifically written for constrained devices, member-names can easily outperform hashes. To develop a successful protocol for constrained devices, we should judge solutions based on resource requirements on devices and networks, not just in the abstract. Regards, Michel -----Original Message----- From: core [mailto:core-bounces@ietf.org] On Behalf Of Ladislav Lhotka Sent: December-08-15 10:51 AM To: Alexander Pelov <a@ackl.io>; core@ietf.org Subject: Re: [core] CBOR Encoding of Data Modeled with YANG Alexander Pelov <a@ackl.io> writes: > Dear Juergen, > > The algorithm is straightforward - assign in increasing order a data > node ID to each element on the schema tree. If you have a revision of > a module, you do the diff between the old and the new tree, and add > the new data node IDs at the end of the numbering. IMO this is not going to work: sibling data nodes do not have any fixed order. Different tools may print the tree in different ways, and it is also possible that consecutive revisions of a module have the same definitions of sibling data nodes ordered differently. I'd suggest to use a hash of the schema node identifier as the numeric ID. Lada > > If you want a short version that would allow you to play with this > numbering, try the following: > > Data Node ID generation for a module YANG_MODULE: > *# pyang -f tree YANG_MODULE.yang | grep '+' | grep -n '+' > > *pyang -f tree YANG_MODULE-OLD-VERSION.yang >> OLD-VERSION.tree pyang > -f tree YANG_MODULE-NEW-VERSION.yang >> NEW-VERSION.tree *# ( cat > **OLD-VERSION.tree ; diff **OLD-VERSION.tree **NEW-VERSION.tree > ) | grep '+' | grep -n '+'* > * > *I'm currently working on a pyang version of the algorithm. There is > no problem on that point. We cannot produce all documents in the same > time, and the starting point is YANG-CBOR mapping. * > > *Best, > Alexander > > > Le 08/12/2015 10:33, Juergen Schoenwaelder a écrit : >> 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/> > > _______________________________________________ > core mailing list > core@ietf.org > https://www.ietf.org/mailman/listinfo/core -- Ladislav Lhotka, CZ.NIC Labs PGP Key ID: E74E8C0C _______________________________________________ core mailing list core@ietf.org https://www.ietf.org/mailman/listinfo/core
- [core] CBOR Encoding of Data Modeled with YANG Michel Veillette
- Re: [core] CBOR Encoding of Data Modeled with YANG Juergen Schoenwaelder
- Re: [core] CBOR Encoding of Data Modeled with YANG weigengyu
- Re: [core] CBOR Encoding of Data Modeled with YANG Kepeng Li
- Re: [core] CBOR Encoding of Data Modeled with YANG Michel Veillette
- Re: [core] CBOR Encoding of Data Modeled with YANG Juergen Schoenwaelder
- Re: [core] CBOR Encoding of Data Modeled with YANG Michel Veillette
- Re: [core] CBOR Encoding of Data Modeled with YANG Juergen Schoenwaelder
- Re: [core] CBOR Encoding of Data Modeled with YANG Michel Veillette
- Re: [core] CBOR Encoding of Data Modeled with YANG Juergen Schoenwaelder
- Re: [core] CBOR Encoding of Data Modeled with YANG Alexander Pelov
- Re: [core] CBOR Encoding of Data Modeled with YANG Juergen Schoenwaelder
- Re: [core] CBOR Encoding of Data Modeled with YANG Juergen Schoenwaelder
- Re: [core] CBOR Encoding of Data Modeled with YANG Alexander Pelov
- Re: [core] CBOR Encoding of Data Modeled with YANG Carsten Bormann
- Re: [core] CBOR Encoding of Data Modeled with YANG Juergen Schoenwaelder
- Re: [core] CBOR Encoding of Data Modeled with YANG Alexander Pelov
- Re: [core] CBOR Encoding of Data Modeled with YANG Juergen Schoenwaelder
- Re: [core] CBOR Encoding of Data Modeled with YANG Andy Bierman
- Re: [core] CBOR Encoding of Data Modeled with YANG Alexander Pelov
- Re: [core] CBOR Encoding of Data Modeled with YANG Andy Bierman
- Re: [core] CBOR Encoding of Data Modeled with YANG Alexander Pelov
- Re: [core] CBOR Encoding of Data Modeled with YANG Juergen Schoenwaelder
- Re: [core] CBOR Encoding of Data Modeled with YANG Andy Bierman
- Re: [core] CBOR Encoding of Data Modeled with YANG Ladislav Lhotka
- Re: [core] CBOR Encoding of Data Modeled with YANG Andy Bierman
- Re: [core] CBOR Encoding of Data Modeled with YANG Michel Veillette
- Re: [core] CBOR Encoding of Data Modeled with YANG Carsten Bormann
- Re: [core] CBOR Encoding of Data Modeled with YANG Ladislav Lhotka
- Re: [core] CBOR Encoding of Data Modeled with YANG Andy Bierman
- Re: [core] CBOR Encoding of Data Modeled with YANG Michel Veillette
- Re: [core] CBOR Encoding of Data Modeled with YANG Michel Veillette
- Re: [core] CBOR Encoding of Data Modeled with YANG Michel Veillette
- Re: [core] CBOR Encoding of Data Modeled with YANG Ladislav Lhotka
- Re: [core] CBOR Encoding of Data Modeled with YANG Ladislav Lhotka
- Re: [core] CBOR Encoding of Data Modeled with YANG peter van der Stok
- Re: [core] CBOR Encoding of Data Modeled with YANG Juergen Schoenwaelder
- Re: [core] CBOR Encoding of Data Modeled with YANG peter van der Stok
- Re: [core] CBOR Encoding of Data Modeled with YANG Andy Bierman
- Re: [core] CBOR Encoding of Data Modeled with YANG Michel Veillette
- Re: [core] CBOR Encoding of Data Modeled with YANG Andy Bierman
- Re: [core] CBOR Encoding of Data Modeled with YANG Michel Veillette
- Re: [core] CBOR Encoding of Data Modeled with YANG Juergen Schoenwaelder
- Re: [core] CBOR Encoding of Data Modeled with YANG Andy Bierman
- Re: [core] CBOR Encoding of Data Modeled with YANG Michel Veillette
- Re: [core] CBOR Encoding of Data Modeled with YANG Michel Veillette
- Re: [core] CBOR Encoding of Data Modeled with YANG Ladislav Lhotka
- Re: [core] CBOR Encoding of Data Modeled with YANG Carsten Bormann
- Re: [core] CBOR Encoding of Data Modeled with YANG Michel Veillette
- Re: [core] CBOR Encoding of Data Modeled with YANG Ladislav Lhotka
- Re: [core] CBOR Encoding of Data Modeled with YANG Michel Veillette
- Re: [core] CBOR Encoding of Data Modeled with YANG Ladislav Lhotka
- Re: [core] CBOR Encoding of Data Modeled with YANG Michel Veillette
- Re: [core] CBOR Encoding of Data Modeled with YANG Andy Bierman
- Re: [core] CBOR Encoding of Data Modeled with YANG peter van der Stok