Re: [core] draft-bierman-core-yid-00.txt questions

Michel Veillette <Michel.Veillette@trilliantinc.com> Thu, 25 August 2016 14:15 UTC

Return-Path: <Michel.Veillette@trilliantinc.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 7E1AC12D841 for <core@ietfa.amsl.com>; Thu, 25 Aug 2016 07:15:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.922
X-Spam-Level:
X-Spam-Status: No, score=-1.922 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=trilliant.onmicrosoft.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 1733Nmo1F934 for <core@ietfa.amsl.com>; Thu, 25 Aug 2016 07:15:56 -0700 (PDT)
Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0115.outbound.protection.outlook.com [104.47.41.115]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D68D012D5AB for <core@ietf.org>; Thu, 25 Aug 2016 07:15:55 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Trilliant.onmicrosoft.com; s=selector1-trilliantinc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=fgi4yVEvNBT0qyemhJKfHhs5zpoxplMPtMey/DLm8DM=; b=pf79ZTLoRRNpl+jABy8dEvwv1TtGk0UTb/wkF9mQjETZsgr/fWrn4OLsfCi4sba3InCSLVy5Zpj803LqnF1tisewCxLSubvlngvE9mts/G6toKTNrVa2c5C0akhGcQxIv4PdO///Da9EuKpQrpVc/EirJ1iAkS/BGLX8XGdYnpk=
Received: from BN6PR06MB2308.namprd06.prod.outlook.com (10.173.19.139) by BN6PR06MB2305.namprd06.prod.outlook.com (10.173.19.136) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.587.13; Thu, 25 Aug 2016 14:15:52 +0000
Received: from BN6PR06MB2308.namprd06.prod.outlook.com ([10.173.19.139]) by BN6PR06MB2308.namprd06.prod.outlook.com ([10.173.19.139]) with mapi id 15.01.0557.030; Thu, 25 Aug 2016 14:15:52 +0000
From: Michel Veillette <Michel.Veillette@trilliantinc.com>
To: David Reid <reid@snmp.com>, "core@ietf.org" <core@ietf.org>
Thread-Topic: [core] draft-bierman-core-yid-00.txt questions
Thread-Index: AQHR/oAwnsXgBk9RvEWD4CzBgA9zo6BZtb8w
Date: Thu, 25 Aug 2016 14:15:52 +0000
Message-ID: <BN6PR06MB2308826651FF40B1BB08F39CFEED0@BN6PR06MB2308.namprd06.prod.outlook.com>
References: Your message of Wed, 24 Aug 2016 23:22:43 -0000. <BN6PR06MB2308A46F6A84378832DBC849FEEA0@BN6PR06MB2308.namprd06.prod.outlook.com> <201608250324.u7P3OTAI005926@mainfs.snmp.com>
In-Reply-To: <201608250324.u7P3OTAI005926@mainfs.snmp.com>
Accept-Language: fr-CA, en-US
Content-Language: en-US
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator:
authentication-results: spf=none (sender IP is ) smtp.mailfrom=Michel.Veillette@trilliantinc.com;
x-originating-ip: [24.225.215.88]
x-ms-office365-filtering-correlation-id: 8ab7f42b-15f8-4b70-9481-08d3ccf25286
x-microsoft-exchange-diagnostics: 1; BN6PR06MB2305; 6:JuKRIk32mSzTDO2CL2FbFq/YOk1ww9dC1YTO+7ivhicQM6KbYaJvt+CBuTRlxyFWl9fMxawWrTxzutokuzsHRMnSqIhl/ZuuyWHZivv1svLwRkfl/CKVL/ladKpAh89ymOuPgJDNCINC4jASM7xGJpeJVoK3gCl+k7INYmN16ZqWYtt0Sw5SqOs1tSsQvuHAK62UWCmiLlE+vKMjLKEdil8fbf8A48kPX8KgkcabhxMoWOL0T+nV2mpNGwLesv2JC4B1L08PZMfJhyfHunAP17tUpZJc2hdnFsTCgK7W7wU=; 5:JNaVyy+y7Ahv7WW5aDtBoHN+UWVDyj3yhO9q2bUCfAzUwM8KI4zHQ9bpb0s0QajiiHG+dBH3cyGmr2FvkNLUt2elzRcsL35Kt+e2sogJYVUQB4GE7IDTD1w6sd7N4icRzMCAwsb9nGlyeRzdDCFc/Q==; 24:/BSdVrOCP6iL2wsFFDufGqBugsCQqUGjTf2fbafkm8gOCtkK1HnFyN94jUnZhNskB0w/tno27g2AhDoKbulnN3F7sSgvbBnktqW/bFowqmE=; 7:QMsjHByRWvE+SuMGX8dMvI0P7abxIte6dzA2JTT1DLBCzAyKeSqOV52vbDBB/2KrK+e+53OzfOvoFb5quw97trscSq8kRYRfBbe2AmhHmdQb1n5iIeVoAulW3h79DFxRCDAsNwK7bHmtYuDPWiSEwI0oTC3eJMNJ/iQY/fimfCCa7c1jsRc4g/qu7pusK0N5/QId37DaZ2WxslQQBM0DNBirkbOVJVUphIOKJcmDYUFT3KGvVAch3cg1ztfWBh9j
x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN6PR06MB2305;
x-microsoft-antispam-prvs: <BN6PR06MB230512EDB1751983255F86B7FEED0@BN6PR06MB2305.namprd06.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:(166708455590820)(17755550239193);
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(102415321)(6040176)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001); SRVR:BN6PR06MB2305; BCL:0; PCL:0; RULEID:; SRVR:BN6PR06MB2305;
x-forefront-prvs: 0045236D47
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(7916002)(377454003)(13464003)(189002)(51884002)(199003)(99936001)(5660300001)(76176999)(97736004)(33656002)(102836003)(5001770100001)(3660700001)(3846002)(54356999)(2906002)(2501003)(92566002)(6116002)(586003)(107886002)(5002640100001)(3280700002)(99286002)(11100500001)(189998001)(86362001)(5890100001)(19580405001)(122556002)(8676002)(77096005)(81156014)(7846002)(74316002)(15975445007)(81166006)(305945005)(7736002)(8936002)(106356001)(7696003)(76576001)(50986999)(10400500002)(101416001)(106116001)(66066001)(230783001)(19580395003)(68736007)(2950100001)(87936001)(105586002)(2900100001)(9686002); DIR:OUT; SFP:1102; SCL:1; SRVR:BN6PR06MB2305; H:BN6PR06MB2308.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:99
spamdiagnosticmetadata: NSPM
Content-Type: multipart/mixed; boundary="_002_BN6PR06MB2308826651FF40B1BB08F39CFEED0BN6PR06MB2308namp_"
MIME-Version: 1.0
X-OriginatorOrg: trilliantinc.com
X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Aug 2016 14:15:52.5393 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 4f6fbd13-0dfb-4150-85c3-d43260c04309
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR06MB2305
Archived-At: <https://mailarchive.ietf.org/arch/msg/core/gsZJ2C9KIyF3hAEK3lfXF_I1ASI>
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 14:15:58 -0000

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

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