Re: [core] draft-bierman-core-yid-00.txt questions
Andy Bierman <andy@yumaworks.com> Thu, 25 August 2016 16:03 UTC
Return-Path: <andy@yumaworks.com>
X-Original-To: core@ietfa.amsl.com
Delivered-To: core@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3903E12D0FF for <core@ietfa.amsl.com>; Thu, 25 Aug 2016 09:03:03 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=yumaworks-com.20150623.gappssmtp.com
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 XgC4FcswEJ13 for <core@ietfa.amsl.com>; Thu, 25 Aug 2016 09:03:01 -0700 (PDT)
Received: from mail-ua0-x232.google.com (mail-ua0-x232.google.com [IPv6:2607:f8b0:400c:c08::232]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id BCC1712D847 for <core@ietf.org>; Thu, 25 Aug 2016 09:03:00 -0700 (PDT)
Received: by mail-ua0-x232.google.com with SMTP id l94so28655088ual.0 for <core@ietf.org>; Thu, 25 Aug 2016 09:03:00 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yumaworks-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=WAATRkEIJvgEnJxrXXwOjW9nhK2DsWxqB1NKOHWtwYc=; b=gCY9RiPlQTUpA536zTEEFy0/7Uywu5bnmS9V6WqM4zj8p0Cmyc7ck1+3rGccw1TS0z Mbp8Vz/9qdSu0BiS6+cc8KMsfAxhbGyUM27gLZUdalQRldKy8ojifvpyWyyA+VB3O4Rg x7ayxniBy151uR0LWddCkImGT3NDoFR1LmvVpuAHJmHZAhSxYzPs2ivZEhw23N5A2gnZ 2ZPedXJlIsRaywztwLl7b90wMZL92bLFLKbL9PHNX1nFakd2BWAE9kMxhCt/q43uMprF acjeTpImqot0BnDbLUQKWWIkcqxl6o1eJPRK5+gz6I094xlfZZlmEUHumiju1bkbURku y3BA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=WAATRkEIJvgEnJxrXXwOjW9nhK2DsWxqB1NKOHWtwYc=; b=TPtw1IVgp7fwft09cmIWd5bsSkIX0YXRjRJ8dpo3hDrtnS63MwHMSzOH5793tqVGMW p5DB6XAlwusApvWQE7oqPa5FJ6Iimhg4fDzqOjMny45325/6C5f4DaBjAsLKkXKo0lph sBr9imzKrSH6RGYc9ylvTiix9Efk9dgPzAswOg6RidpW42cSLCPX1T1ceVjgCyR5P5bv MaHRHxhSzqRhHInPeeQ3H/WUOJ16ULEUei4Gsy5kaVExgdXss1T6HWzB8Rarxoe3ZAzt LZZidwpW67/QzU7aeN4iYUB5O34KJI+RY28d4IoN4rRXF5RJxrLC4osUAclKyk2mfLcH lzJQ==
X-Gm-Message-State: AE9vXwOsdKf34R0eorktHW7CVWd5tPzzbusmnaXHftEiyQcTH0/8aWE0tcUw/Shbl7rI8flA6hp5eTNQ7ymlfg==
X-Received: by 10.176.82.146 with SMTP id v18mr1946801uav.135.1472140979733; Thu, 25 Aug 2016 09:02:59 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.103.4.134 with HTTP; Thu, 25 Aug 2016 09:02:58 -0700 (PDT)
In-Reply-To: <BN6PR06MB23081868474C1EBEF6124A07FEED0@BN6PR06MB2308.namprd06.prod.outlook.com>
References: <BN6PR06MB2308A46F6A84378832DBC849FEEA0@BN6PR06MB2308.namprd06.prod.outlook.com> <201608250324.u7P3OTAI005926@mainfs.snmp.com> <BN6PR06MB2308826651FF40B1BB08F39CFEED0@BN6PR06MB2308.namprd06.prod.outlook.com> <CABCOCHQrNrYkC5yZLou33own9q+h0yn9+GogEWcm4q1CP+6jVw@mail.gmail.com> <BN6PR06MB23081868474C1EBEF6124A07FEED0@BN6PR06MB2308.namprd06.prod.outlook.com>
From: Andy Bierman <andy@yumaworks.com>
Date: Thu, 25 Aug 2016 09:02:58 -0700
Message-ID: <CABCOCHTPxdmXcX-bvmRGAhz8qzzz_tbJp5y+=34oM1RL1O6L4A@mail.gmail.com>
To: Michel Veillette <Michel.Veillette@trilliantinc.com>
Content-Type: multipart/alternative; boundary="94eb2c18fe32281eac053ae788b4"
Archived-At: <https://mailarchive.ietf.org/arch/msg/core/cKpdsgCyUxbU-R1np1syXboD_hA>
Cc: "core@ietf.org" <core@ietf.org>
Subject: Re: [core] draft-bierman-core-yid-00.txt questions
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.17
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: Thu, 25 Aug 2016 16:03:03 -0000
On Thu, Aug 25, 2016 at 8:54 AM, Michel Veillette < Michel.Veillette@trilliantinc.com> wrote: > Hi Andy, Hi David > > > > There is no requirement to have multiple tools or algorithms producing the > same result. > Then it isn't auto-numbering. It is just an offline tool to assign numbers to YANG statements. So there is no need to standardize SID at all. There is just a list of [id, path] mappings in a registry entry, which is what the YID draft proposes. (centralized or distributed list of mappings). Andy > The only requirements we have for YIDs/SIDs are: > > - To be unique (Within the allocated range without duplicate) > > - To be permanent (Registered within a private or public registry) > > > > As demonstrated in one of my last email, all YIDs/SIDs must be registered > even if generated from a hash. > > The algorithm don’t need to be mandated, the registered YIDs/SIDs are the > IDs to use. > > > > The currently recommended algorithm is described in > > https://tools.ietf.org/html/draft-somaraju-core-sid-01#section-3 > > > > o A tool extracts the different items defined for a specific YANG > > module. > > > > o The list of items is ordered by type and label. > > > > o SIDs are assigned sequentially for the entry point up to the size > > of the registered SID range. It is important to note that > > sequentially assigning SIDs optimizes the CBOR serialization due > > to the use of delta encoding. > > > > o If the number of items exceeds the SID range(s) allocated to a > > YANG module, an extra range is added for subsequent assignments. > > > > SIDs are assigned permanently, items introduced by a new revision of > > a YANG module are added to the list of SIDs already assigned. This > > process can also be automated using the same method described above > > except that the assignment need to be restarted from the highest SID > > already assigned. > > > > Since the file is fully defined, ordering the list within this file and > assigning sequentially IDs to these > > entries can be performed by different tools with the same result. > > > > Regards, > > Michel > > > > *From:* Andy Bierman [mailto:andy@yumaworks.com] > *Sent:* Thursday, August 25, 2016 11:34 AM > *To:* Michel Veillette <Michel.Veillette@trilliantinc.com> > *Cc:* David Reid <reid@snmp.com>; core@ietf.org > *Subject:* Re: [core] draft-bierman-core-yid-00.txt questions > > > > > > > > On Thu, Aug 25, 2016 at 7:15 AM, Michel Veillette <Michel.Veillette@ > trilliantinc.com> wrote: > > Hi David > > About " Is the sequential numbering auto-assigned or manually assigned? " > > If you use a tool such the pyang plugin, they will be automatically > assigned. > > For example, the command: > pyang --generate-sid-file 20000:100 toaster@2009-11-20.yang > > Generate the file toaster@2009-11-20.sid in attachment. > > The command: > pyang --update-sid-file toaster@2009-11-20.sid toaster@2009-12-28.yang > > > > Where is the algorithm explained in enough detail that multiple > > independent implementations will all produce the exact same results? > > > > > > Andy > > > > Generate the file toaster@2009-12-28.sid in attachment. > > It is important to note that sequential numbering doesn't means that two > data nodes defined sequentially in .yang file will receive consecutive IDs. > As you known, order may change and grouping may be introduced between > versions. > It means that IDs are assigned sequentially from 1 using some arbitrary > order. > If a .yang module have 14 YANG items, they will be numbered from 1 to 14. > If the next version add 5 YANG items, they will be numbered from 15 to 19. > > Regards, > Michel > > -----Original Message----- > From: core [mailto:core-bounces@ietf.org] On Behalf Of David Reid > Sent: Wednesday, August 24, 2016 11:24 PM > To: core@ietf.org > Subject: Re: [core] draft-bierman-core-yid-00.txt questions > > >>> What is the benefit of assigning values using hashing over > >>> sequentially assigning values? > > >> There is overhead ir reading and processing a giant list of mappings. > > The assignment only happens one-time, so I don't see a problem with a > little overhead (which I think would be minimal anyway). > > >> Automatic assignment is risky because both sides need to agree on the > >> object to number mapping. Detecting these issues is very difficult. > >> The YANG Hash algorithm is designed to use the path string, which is > >> permanent and cannot change no matter how the YANG is refactored. > >> The murmur hash is a stable algorithm. > >> There is not a lot that can go wrong for the 2 peers to disagree on > >> the hashes (except for collisions) > > I would think we could write an algorithm that would guarantee the same > number every time. Although I have not thought through all the issues that > come up with revisions, maybe this is harder than I think. > > >>> When there is a hash collision, would it be possible to rehash the > >>> value to get a unique number so that we never have to manually > >>> assign numbers and thus never need to register the numbers in the > registry? > > >> yes, this has been suggested. > >> The problem with auto-rehashing before was inter-module clashes. > >> Now those are not possible so automatic rehashing is feasible. > > > [MV] I disagree, see my previous email which explain why all YIDs/SIDs > > need to be registered even if generated using a hash. > > As long as I have either all revisions of a module or the YIDs from the > previous revision, I can generate the numbers for the module. I don't think > I need it to be in a central registry. > > >>> Would it make sense to put the module-id inside the yang module with > >>> a yid extension so that I would not have to go lookup that > >>> information from a registry? > > >> I suppose -- but how to prevent duplicates and cut-and-paste errors? > > We would still need a registry to prevent duplicates. But only the module > writer would need to access the registry. The module users would have the > information in the yang module and would not have to look at the registry. > > > [MV] Just adding the module ID in the yang file is not sufficient to > > use a .yang file, all YIDs/SIDs need to be added. > > If YIDs are generated by hashing with auto rehashing on collisions, the > YIDs would not have to be explicitly listed in the module. They could be > auto-generated and stored in a different file. > > > [MV] Having YIDs/SIDs in yang files will make their maintenance more > > complex. > > Yes, it makes it more complex for the module writers. But it is easier on > the users of the module. > > > [MV] BTW, a pyang plugin already exist to automatically generate and > > update a .sid file from a .yang file [MV] See > > [2]https://github.com/core-wg/yang-cbor/blob/master/sid.py > > >>> Would it be possible to assign the module-id based on information in > >>> the module, for example a hash of the namespace and maybe the revision > date. > >>> That way, a module-id would not have to be assigned and maintained > >>> in a registry. > > >> I think private module-id would be better, using a range reserved for > >> temporary assignments. > > I think you are right. I was just hoping we could avoid requiring module > writers to register a module-id by finding a way to auto assign it. > > >> How do you resolve hash collisions for module-id? > > I don't have a good solution. I was hoping the probability of collision > would be low enough to be acceptable, or we could add the first revision in > the number to further reduce collisions. But I don't have a way to resolve > collisions. > > >>> Who will assign the local-id numbers? Is that done by the working > >>> group that defines the YANG module? > > >> I would expect IETF modules to use hashes by default but for some > >> modules that seem useful to constrained devices, then manual > >> numbering could be done instead by the WG. > > > [MV] To obtain a smaller encoding, I personally believe that the > > sequential numbering will be used. > > > [MV] With sequential numbering, all current YANG modules defined in > > RFCs can be assigned within the first 6500 SIDs which will be encoded > > as 3 bytes for the first reference and typically as 1 bytes for the > > following ones using delta encoding. > > > [MV] With hashes, only one YANG module can be assigned within that > > range. > > Is the sequential numbering auto-assigned or manually assigned? > > -David Reid > > _______________________________________________ > core mailing list > core@ietf.org > https://www.ietf.org/mailman/listinfo/core > > _______________________________________________ > core mailing list > core@ietf.org > https://www.ietf.org/mailman/listinfo/core > > >
- [core] draft-bierman-core-yid-00.txt questions David Reid
- Re: [core] draft-bierman-core-yid-00.txt questions Andy Bierman
- Re: [core] draft-bierman-core-yid-00.txt questions Michel Veillette
- Re: [core] draft-bierman-core-yid-00.txt questions David Reid
- Re: [core] draft-bierman-core-yid-00.txt questions Andy Bierman
- Re: [core] draft-bierman-core-yid-00.txt questions Michel Veillette
- Re: [core] draft-bierman-core-yid-00.txt questions Andy Bierman
- Re: [core] draft-bierman-core-yid-00.txt questions Michel Veillette
- Re: [core] draft-bierman-core-yid-00.txt questions Alexander Pelov
- Re: [core] draft-bierman-core-yid-00.txt questions Andy Bierman
- Re: [core] draft-bierman-core-yid-00.txt questions Alexander Pelov
- Re: [core] draft-bierman-core-yid-00.txt questions Michel Veillette
- Re: [core] draft-bierman-core-yid-00.txt questions peter van der Stok