Re: [core] draft-bierman-core-yid-00.txt questions
Andy Bierman <andy@yumaworks.com> Thu, 25 August 2016 15:34 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 1855512D1AC for <core@ietfa.amsl.com>; Thu, 25 Aug 2016 08:34:01 -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 ZYLo7x4htCi9 for <core@ietfa.amsl.com>; Thu, 25 Aug 2016 08:33:58 -0700 (PDT)
Received: from mail-ua0-x235.google.com (mail-ua0-x235.google.com [IPv6:2607:f8b0:400c:c08::235]) (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 487A012D0E2 for <core@ietf.org>; Thu, 25 Aug 2016 08:33:58 -0700 (PDT)
Received: by mail-ua0-x235.google.com with SMTP id k90so90088443uak.1 for <core@ietf.org>; Thu, 25 Aug 2016 08:33:58 -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=uJC9B0I1U3djU+MzaNOwz1EuhdmScoicj31YGh+QEuU=; b=OAMbBf7zvRn4GMEMleuu9erwlXSaTZuAZXNaAodE0kennx/eOcFODeEbzI1rTahNLr ri6NVmIXoxe1FdcHPdoWtz6RP/9s9xfYP2Qyb8gK3b6pDhY+4s/TKI2+gD669j6DSQCO 1uZYz/s3Txrb1PQ/S+6wksDp4YrX0Q0FC19rsgZn6HRLPear3aa26gcXgGkiuNraXGc9 vxA97t1mqV1EG59S9Tfgl1Hh/aremKOW28oaMuwNj3EiqNzL70q/8hhgVwqX4W11zxl+ r9QjV7i4R0GvSGCuqJCqMILQhXvZysVQUTVBs5+5P0VogmqVailSSW5T3g7N4hYJgh2N F25A==
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=uJC9B0I1U3djU+MzaNOwz1EuhdmScoicj31YGh+QEuU=; b=IWB0zTe0GJu9aBFdNt7YNNW00EEX/LqvjGSQrxC6Yd7y8jWjec1eVl72rWphJ7jbGP ieG0jgrYy5dKS4Tl72K3pvHVsD49KTcmD2SjbQIDXGYjMEhMg2wP35tSnXos7BsGEQAw hcQ3LXdkeO5Fnhfl5S+iI6H08XZdxGHNAgPBfgEwZnomYU8AepB4oxw/CjSbUCHHZ6RH PoBnZw97zOr+C7g453B4W2tdPiUK05DVCPC6jJKNG6JsEXRxdZDEiEE0ECTrdk5n5XF1 FciBng82/e6+KoIQwvWH5O+WeVsI+TD3QYBN1r3oSIwzGQJTQkJ2E9SdvZAUbMW2RVyq qeFw==
X-Gm-Message-State: AEkoouscPg+27ei3tUvWXbGbtsu0xJzwrRfOoS9UnHw/rREXLYtoZ8cHGWyWHbDzzjV+nnsNVcoPm3OmsEnHdw==
X-Received: by 10.31.136.70 with SMTP id k67mr5105247vkd.13.1472139237208; Thu, 25 Aug 2016 08:33:57 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.103.4.134 with HTTP; Thu, 25 Aug 2016 08:33:56 -0700 (PDT)
In-Reply-To: <BN6PR06MB2308826651FF40B1BB08F39CFEED0@BN6PR06MB2308.namprd06.prod.outlook.com>
References: <BN6PR06MB2308A46F6A84378832DBC849FEEA0@BN6PR06MB2308.namprd06.prod.outlook.com> <201608250324.u7P3OTAI005926@mainfs.snmp.com> <BN6PR06MB2308826651FF40B1BB08F39CFEED0@BN6PR06MB2308.namprd06.prod.outlook.com>
From: Andy Bierman <andy@yumaworks.com>
Date: Thu, 25 Aug 2016 08:33:56 -0700
Message-ID: <CABCOCHQrNrYkC5yZLou33own9q+h0yn9+GogEWcm4q1CP+6jVw@mail.gmail.com>
To: Michel Veillette <Michel.Veillette@trilliantinc.com>
Content-Type: multipart/alternative; boundary="001a11440bb64b4c10053ae72070"
Archived-At: <https://mailarchive.ietf.org/arch/msg/core/6rZyB82k9Fe4kNsHoMgbKT8GXG8>
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 15:34:01 -0000
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