Re: [core] YANG Packages for CoMI
Alexander Pelov <a@ackl.io> Tue, 28 July 2015 07:04 UTC
Return-Path: <a@ackl.io>
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 204741A6EDC for <core@ietfa.amsl.com>; Tue, 28 Jul 2015 00:04:19 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.899
X-Spam-Level:
X-Spam-Status: No, score=-1.899 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001] autolearn=ham
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 oG9RIGCE63jh for <core@ietfa.amsl.com>; Tue, 28 Jul 2015 00:04:15 -0700 (PDT)
Received: from relay5-d.mail.gandi.net (relay5-d.mail.gandi.net [IPv6:2001:4b98:c:538::197]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6A1EF1A3BA0 for <core@ietf.org>; Tue, 28 Jul 2015 00:04:14 -0700 (PDT)
Received: from mfilter20-d.gandi.net (mfilter20-d.gandi.net [217.70.178.148]) by relay5-d.mail.gandi.net (Postfix) with ESMTP id 56AB341C05A; Tue, 28 Jul 2015 09:04:12 +0200 (CEST)
X-Virus-Scanned: Debian amavisd-new at mfilter20-d.gandi.net
Received: from relay5-d.mail.gandi.net ([IPv6:::ffff:217.70.183.197]) by mfilter20-d.gandi.net (mfilter20-d.gandi.net [::ffff:10.0.15.180]) (amavisd-new, port 10024) with ESMTP id xYUGL81roTjl; Tue, 28 Jul 2015 09:04:09 +0200 (CEST)
X-Originating-IP: 85.68.132.137
Received: from Zax.local (abo-137-132-68.bdx.modulonet.fr [85.68.132.137]) (Authenticated sender: alex@ackl.io) by relay5-d.mail.gandi.net (Postfix) with ESMTPSA id 8E3F841C07B; Tue, 28 Jul 2015 09:04:08 +0200 (CEST)
To: Andy Bierman <andy@yumaworks.com>
References: <CABCOCHT7J71iiAgcofradE38JepEJLsPkbmwtivY=HMyij1Svg@mail.gmail.com> <4dde82ad1cd4d261b598cb0e851cdf1c@xs4all.nl> <CABCOCHTukKKkP9wgP4BrtAcKwDd7eSLvFR_x2kJptW+Dfo_0Lw@mail.gmail.com> <55B6070A.1020007@ackl.io> <CABCOCHTOtNvPgAV9R7bnMQDZtTUOmtnadZrGn13X7diQUGseXw@mail.gmail.com>
From: Alexander Pelov <a@ackl.io>
Message-ID: <55B72969.4050006@ackl.io>
Date: Tue, 28 Jul 2015 09:04:09 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:38.0) Gecko/20100101 Thunderbird/38.0.1
MIME-Version: 1.0
In-Reply-To: <CABCOCHTOtNvPgAV9R7bnMQDZtTUOmtnadZrGn13X7diQUGseXw@mail.gmail.com>
Content-Type: multipart/alternative; boundary="------------060001000506080707020405"
Archived-At: <http://mailarchive.ietf.org/arch/msg/core/N04NWmLDZQ5JpYpyxm7qRyMEGtk>
Cc: Core <core@ietf.org>
Subject: Re: [core] YANG Packages for CoMI
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, 28 Jul 2015 07:04:19 -0000
Hi Andy, Le 27/07/2015 20:01, Andy Bierman a écrit : > > > On Mon, Jul 27, 2015 at 3:25 AM, Alexander Pelov <alexander@ackl.io > <mailto:alexander@ackl.io>> wrote: > > Hi Andy! > > Thanks for the draft! Seems a good start to get the things moving > in the direction of having a good, structured introspection > mechanism for module discovery! > > I'm not completely sure that it will be a static document. You > still need to think of the possibility of a firmware upgrade, in > which case you have to consider the clients which have obtained > your previous package descriptions. > > > Each package has a name and a revision-date. > The expected use for CoMI would be a new > package revision for each firmware release. I meant that there should be a mechanism for the client to be notified when the YANG package definition changes. This may be a rare event, but imagine a new client arrives and discovers the server 1 minute before the server gets a new firmware release (or some other event, making it change its package definition). I would think that if a client is expected to keep long-term association to the server, it should use Observe or NOTIFY. The latter will work if the package is defined as module. > > Why don't you want it to be a YANG module? I would suppose that > for a structured numbering scheme (such as CoOL) we could have a > nice fixed entry point for such introspection resource, e.g. > moduleID = 1. Alternatively, I would think that it should be > discoverable through .well-known/core > > > Not sure what you mean. > This is static data used to identify a set of YANG modules. > Do you mean why not have the contents of a package be YANG objects > to read from the server? This would be even more data than the > current YANG module library. > > The point of a package list is to avoid listing all the modules, features, > and revision dates. There is a YANG Package Identifier in sec. 4 > > urn:ietf:params:xml:ns:yang:pkg?name=example-sensor314&rev=2015-07-01 > > This would be the entire response needed to discover the entire YANG > implementation by the server. The size remains the same no matter how many > modules and features are added over time. Ah, OK! Now I understand! It was not obvious to me that you were aiming at having the package definition be detached from the server. I like that! This, however makes me think about something else - you should have a way to obtain the package from the sensor. However, this goes a little bit in the sense of having YANG packages being mandatory for CoMI. I like the "uses-package" statement, as this could be used to have full definition of the modules on a server. I would suppose that you could represent the information of a YANG package as a YANG module. Then, a client could query the server with a select/fields statement to obtain only the package identifier. IF the client wants, it could obtain the whole package content from the server: E.g. for a YANG module definition such as: module yang-package { ... leaf yang-package-uri { type string; } container package { leaf organization {type string;} leaf contact {type string;} leaf description {type string;} leaf revision {type string;} container imports-module { key module-name; leaf module-name {type string;} leaf module-cool-id {type int32;} } container uses-module { ... } ... } } module ID for this module would be fixed in CoOL to 1, so yang-package-uri will have CoOL ID 2049. In CoOL this would be as getting : GET /cdat?fields(2049) Response: { 2049:"urn:ietf:params:xml:ns:yang:pkg?name=example-sensor314&rev=2015-07-01" } Maybe this could be even more optimized. Now, if the client has no idea how to find this URN, it would simply GET /cdat?fields(2048) and retrieve the YANG package information from the server. > > > > > A point to make is that we can have alias mappings through this > introspection mechanism. Defining such an introspection mechanism > for the aliases was actually one of the work I was considering for > CoOL. > > > RESTCONF and NETCONF provide the ability for the client to retrieve > the schema, and get all the meta-data, for every module. > IMO this should be done by a centralized server in CoMI. > > But I agree the package data could include alias mappings. > This might be a way to convert YANG Hash to COOL for example, > to optimize frequently used identifiers.. Maybe this should also be the way to handle alias attribution, e.g. add a "alias" statement, which indicates the mapping alias-id -> CoOL id / CoMI hash / full identifier. module yang-package { .... container alias { key cool-id; leaf cool-id {type int32}; leaf alias-id {type int32}; } } So you can GET /cdat?fields(2058) and have { 2058: [ {11: 29834394, 12:1}, {11: 99999999, 12:2} {11: 88888384, 12:3} ] } assuming the following CoOL id automatic attribution: alias -> node ID=10 cool-id -> node Id=11 alias-id -> node ID=12 and some random IDs to be mapped (29834394, 99999999, 88888384). Ideally, of course, you would be fetching this information from a server somewhere on the Internet, so that you don't fetch from your constrained server. Best, Alexander > > > > > Best, > Alexander > > > Andy > > > Le 27/07/2015 08:29, Andy Bierman a écrit : >> >> >> On Sun, Jul 26, 2015 at 11:26 PM, peter van der Stok >> <stokcons@xs4all.nl <mailto:stokcons@xs4all.nl>> wrote: >> >> HI Andy, >> >> Is the proposal to make YANG packages compulsory over >> yang-library in Comi servers and clients? >> >> >> No, it would be optional. >> Another solution approach would be to make the module-set-id values >> global instead of per-server. That might be less work perhaps. >> >> >> Peter >> >> >> Andy >> >> >> Andy Bierman schreef op 2015-07-26 19:44: >> >> Hi, >> >> Michel raised some issues with the YANG library draft >> http://datatracker.ietf.org/doc/draft-ietf-netconf-yang-library/ >> >> Maybe CoMI needs its own optimized module library. >> I am concerned that data sizes of the YANG library will be >> too big in some really constrained environments. >> >> I wrote a draft that defines a way to specify the >> contents of the >> YANG library in a single static document, called a YANG >> package. >> http://datatracker.ietf.org/doc/draft-bierman-netmod-yang-package/ >> >> If there was a "shorthand" resource that listed YANG >> packages, instead >> of YANG modules, then the CoMI client that supported YANG >> packages >> could read that instead of the module library. >> >> The YANG package message response can identify a single >> package >> (e.g. match the firmware) so the size of the response >> will remain very >> small, and not depend on the entire list of modules, >> features, >> and deviations. The data savings could 1000X for 100 modules. >> >> The client needs to retrieve the library first-time and >> anytime it >> changes. >> The module-set-id values are per-server, not global. This >> could be a >> significant bottleneck when a CoMI client starts or >> restarts, and >> manages lots of servers. >> >> Andy >> >> >> _______________________________________________ >> core mailing list >> core@ietf.org <mailto:core@ietf.org> >> https://www.ietf.org/mailman/listinfo/core >> >> >> >> >> _______________________________________________ >> core mailing list >> core@ietf.org <mailto:core@ietf.org> >> https://www.ietf.org/mailman/listinfo/core > >
- [core] YANG Packages for CoMI Andy Bierman
- Re: [core] YANG Packages for CoMI peter van der Stok
- Re: [core] YANG Packages for CoMI Andy Bierman
- Re: [core] YANG Packages for CoMI Alexander Pelov
- Re: [core] YANG Packages for CoMI Andy Bierman
- Re: [core] YANG Packages for CoMI Alexander Pelov
- Re: [core] YANG Packages for CoMI Andy Bierman
- Re: [core] YANG Packages for CoMI Alexander Pelov