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
>
>