Re: [netmod] [Technical Errata Reported] RFC7950 (5157)

Andy Bierman <andy@yumaworks.com> Tue, 24 October 2017 01:42 UTC

Return-Path: <andy@yumaworks.com>
X-Original-To: netmod@ietfa.amsl.com
Delivered-To: netmod@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B4D1313AEFD for <netmod@ietfa.amsl.com>; Mon, 23 Oct 2017 18:42:54 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Level:
X-Spam-Status: No, score=-2.599 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_LOW=-0.7, SPF_PASS=-0.001, URIBL_BLOCKED=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 pnwsphhT917J for <netmod@ietfa.amsl.com>; Mon, 23 Oct 2017 18:42:51 -0700 (PDT)
Received: from mail-lf0-x22f.google.com (mail-lf0-x22f.google.com [IPv6:2a00:1450:4010:c07::22f]) (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 0C77B138BE2 for <netmod@ietf.org>; Mon, 23 Oct 2017 18:42:51 -0700 (PDT)
Received: by mail-lf0-x22f.google.com with SMTP id a16so22154541lfk.0 for <netmod@ietf.org>; Mon, 23 Oct 2017 18:42:50 -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=ovKfygR5RhQVOPeoL6SwNmzwLQhMcHi5jMKIjgJP/ck=; b=UKYPSzwzKyVp2dTlZOHHfFfS/VvIoZscD1v9uohwFwEXzu64dRoqP/Hs5qjvjZPsGp 6ZNJnoc4vnpnoYrGTGH4Fq7sUvTcPYNvmXVVnss/1XwIe1Rk4yyaB5h98N8/leJ57sSE wewM923DgOs10gpcgfKbEdTwb0bGtH2OhXTag9fC4SHGyVI8kzAg9VeWMUrbDR/8Lcf4 0k9UxHkYw5sDyFVriLsX17qjOBH75s5Eq1GMLd4Rw4u7FJqzq4yMP/XJlwiw0HD0fBy9 laNfgdXjFucUCulHNMCu2uoYLKzPzrppfVUZU55X9sMSkwwfUDbKeRQVw+SNL7H98KsY htTA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=ovKfygR5RhQVOPeoL6SwNmzwLQhMcHi5jMKIjgJP/ck=; b=UsFwzSJyZFI2VCOMEQHQMRkA5x4LCHGEK3d+D776XhbEX2SmBeW8qwPXCQ7pZ0EYmH JCOJhHrUlOsHj5eEifosrXmYcyS0lkE1q9XjHj/Py6AcfwF1F6kxV/bXI0L+rWF8gkIv TF3PvFOenlfip2iIvHeXD4Pph8swrwsmiKjZUYMYSYHOBLNZhL6Ffj5gHavKrDRE6cvG aVK5KW9woiXI1uLhqWGspIzyN/9+c+6cx1MDohE1Sm7rDO7pIAtZ+eF6IZQ5lNQREDUw APAhLDsFfKfr5+O4BhjRcos54nc/QcPjAntZ0wkfl8lCYZxd3e3fW3HrZIQrnrDz1Isg W70A==
X-Gm-Message-State: AMCzsaV3FbyeJex6pOxNkuHdWjAqDiqWiZDqGScJe+XTUi64IoS7ZzQ0 bcP1jv0QcVJZDyfHBLIUAzyVY9f3Vic0BLeyaLBLiA==
X-Google-Smtp-Source: ABhQp+TpJkgEo01w6t10swLRnDKBTv9jiGM+t2FEjqfD5/C4+dOqiSuUsL61ie4ZHv4MvlKPaC9Smy26ImrhHSrOV6o=
X-Received: by 10.25.156.66 with SMTP id f63mr4936761lfe.194.1508809369151; Mon, 23 Oct 2017 18:42:49 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.25.150.198 with HTTP; Mon, 23 Oct 2017 18:42:48 -0700 (PDT)
In-Reply-To: <ca6baac5-b30a-de80-24e0-8463f01ec67f@transpacket.com>
References: <67172aec-686f-90ba-0fc8-1ce2bc3dcdb4@cisco.com> <CABCOCHRP2ooSG1BGWehD8BsCDF-pX97Q++=WftOxGvf=S57GAQ@mail.gmail.com> <6d43c6fb-ae11-df39-0dd4-766f7b25ac82@transpacket.com> <20171023.133559.470792369996870413.mbj@tail-f.com> <ca6baac5-b30a-de80-24e0-8463f01ec67f@transpacket.com>
From: Andy Bierman <andy@yumaworks.com>
Date: Mon, 23 Oct 2017 18:42:48 -0700
Message-ID: <CABCOCHRv-1JCq9GSP1KMCnm4fOi4TS_M9hUpNRt0Kn-PLdguww@mail.gmail.com>
To: Vladimir Vassilev <vladimir@transpacket.com>
Cc: Martin Bjorklund <mbj@tail-f.com>, "netmod@ietf.org" <netmod@ietf.org>
Content-Type: multipart/alternative; boundary="001a11411bc67b81b1055c410eec"
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/4uJgn1xnrWTAqHrBcOWCnT5j7xc>
Subject: Re: [netmod] [Technical Errata Reported] RFC7950 (5157)
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: NETMOD WG list <netmod.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/netmod>, <mailto:netmod-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/netmod/>
List-Post: <mailto:netmod@ietf.org>
List-Help: <mailto:netmod-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/netmod>, <mailto:netmod-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 24 Oct 2017 01:42:55 -0000

On Mon, Oct 23, 2017 at 4:57 AM, Vladimir Vassilev <vladimir@transpacket.com
> wrote:

> On 10/23/2017 01:35 PM, Martin Bjorklund wrote:
>
> Vladimir Vassilev <vladimir@transpacket.com> wrote:
>>
>>> Hello,
>>>
>>> I would like to use the occasion of this Errata report to point out
>>> some additional issues with the instance-identifier type definition.
>>>
>>> IMO the instance-identifier built-in type has 2 additional problems
>>> that can be addressed with alternative and significantly more radical
>>> errata or fixed in a new version of YANG.:
>>>
>>> Problem 1: The obvious limitation inherited from Xpath 1.0 - inability
>>> to escape single or double quote characters. In Xpath world this
>>> limitation is worked around by use of concat() which is not available
>>> in the YANG 1.1 instance-identifier definition. 2 examples of this
>>> limitation:
>>>
>>> 1. It is impossible to create value of type instance-identifier
>>> referencing nodes in lists with key string values containing both a
>>> single and a double quote characters e.g. ...<interface><name>"It's
>>> valid string!"</name></interface>.
>>>
>>> 2. Another example of the same problem would be a leaf of type
>>> instance-identifier referencing another leaf of type
>>> instance-identifier. With 2 references it works provided one is
>>> encoded with single quotes and the other with double but it is
>>> impossible to create third e.g.
>>>
>>> YANG:
>>>
>>>      list id-list {
>>>        key "id";
>>>
>>>        leaf id {
>>>            type instance-identifier;
>>>        }
>>>      }
>>>
>>>


Although the instance-identifier is problematic, it is rarely used at all,
let alone using it as a list key.

The XPath mixed-quotes problem is well-known, and the suggested
solution seems to be use the "concat" function

   /foo/bar[name=concat("It's a", ' "valid" string')]

Not very user friendly, is it?




> Data:
>>>
>>> * /top/id-list[id="/top/list[idx='4']"]
>>>
>>> * /top/id-list[id="/top/id-list[idx='/top/list[idx=4]'"] <assuming the
>>> * proposed errata is also in effect>
>>>
>>> * <next reference not possible with YANG 1.1>
>>>
>>> Problem 2: The instance-identifier type lacks canonical form (which
>>> makes it the only data type with implementation dependent
>>> representation at the data level ... think of the integer types
>>> allowing optional spaces between the digits). This is in fact the only
>>> built-in data type that allows the server implementation to change the
>>> configuration data replacing double quotes with single or the other
>>> way around. Inserting white spaces where you did not have them when
>>> the configuration was submitted. You can not simply read a
>>> configuration and use fast data comparison without schema support just
>>> because of this type. This is useless flexibility for simple data
>>> type.
>>>
>>> And this can be fixed if:
>>>
>>> 1. white spaces in instance-identifiers are prohibited
>>>
>>>

> 2. list key predicates are required in alphabetical order
>>>
>> Or perhaps use the order the keys are defined in the data model (the
>> "keys" statement").
>>
> This is an option but then the e.g. xpath2instid() function
> implementations will need schema support.
>
>

All the YANG tools I have seen generate the predicates in YANG key order.
The issue of canonical instance-identifier has been discussed many times,
and it is not possible to require the usage of specific prefixes in XML.
(Note that Lada fixed this for JSON in RFC 7951)

Only the string + expanded names can be properly compared in XML, not the
literal string
representing the XPath expression.


Vladimir
>


Andy



>
>> 3. strict quotation convention with escape option is added. (only
>>> 3. contradicts the sec. 9.13 ".. instance-identifier is a subset of
>>> the XPath ..")
>>>
>> I would like to change one more thing - I think it is unfortunate that
>> the lexical representation depends on the lexical context;
>> specifically that prefixes declared in the XML instance document is
>> used.  This applies also to identityref.  YANG 2.0 should use the same
>> encoding as JSON does for these datatypes.
>>
>>
>>
>> /martin
>>
>>
>>
>> Vladimir
>>>
>>> On 10/21/2017 08:16 PM, Andy Bierman wrote:
>>>
>>>>
>>>> On Sat, Oct 21, 2017 at 12:28 AM, Benoit Claise <bclaise@cisco.com
>>>> <mailto:bclaise@cisco.com>> wrote:
>>>>
>>>>      Dear all,
>>>>
>>>>      Shall I validate this one?
>>>>
>>>>
>>>>
>>>> To add more context, this relates to the the RESTCONF JSON vs. XML
>>>> discussions in the NETCONF WG.
>>>>
>>>>    leaf broken {
>>>>        type union {
>>>>          type int32;
>>>>          type string;
>>>>       }
>>>>    }
>>>>
>>>> If all values of key leaf "broken" are sent as strings in an
>>>> instance-identifier,
>>>> then the int32 value may not match in all implementations, instead of
>>>> the string.
>>>> Allowing numbers as literals in addition to quoted strings allows the
>>>> sender
>>>> to be specific, and all implementations to be consistent.
>>>>
>>>>
>>>>      Regards, Benoit
>>>>
>>>>
>>>>
>>>> Andy
>>>>
>>>>          The following errata report has been submitted for RFC7950,
>>>>          "The YANG 1.1 Data Modeling Language".
>>>>
>>>>          --------------------------------------
>>>>          You may review the report below and at:
>>>>          http://www.rfc-editor.org/errata/eid5157
>>>>          <http://www.rfc-editor.org/errata/eid5157>
>>>>
>>>>          --------------------------------------
>>>>          Type: Technical
>>>>          Reported by: Andy Bierman <andy@yumaworks.com
>>>>          <mailto:andy@yumaworks.com>>
>>>>
>>>>          Section: 14
>>>>
>>>>          Original Text
>>>>          -------------
>>>>             key-predicate-expr  = node-identifier *WSP "=" *WSP
>>>>          quoted-string
>>>>
>>>>          Corrected Text
>>>>          --------------
>>>>             key-predicate-expr  = node-identifier *WSP "=" *WSP
>>>>                   (quoted-string / integer-value / decimal-value)
>>>>
>>>>          Notes
>>>>          -----
>>>>          An instance identifier is forced to specify every key value to
>>>>          be a string
>>>>          even though the YANG key leaf type could be a numeric type.
>>>>          XPath does not require a quoted string here, just YANG.
>>>>
>>>>          Old:  /top/list[idx="4"]
>>>>          New: /top/list[idx=4]
>>>>
>>>>          Instructions:
>>>>          -------------
>>>>          This erratum is currently posted as "Reported". If necessary,
>>>>          please
>>>>          use "Reply All" to discuss whether it should be verified or
>>>>          rejected. When a decision is reached, the verifying party
>>>>          can log in to change the status and edit the report, if
>>>> necessary.
>>>>
>>>>          --------------------------------------
>>>>          RFC7950 (draft-ietf-netmod-rfc6020bis-14)
>>>>          --------------------------------------
>>>>          Title               : The YANG 1.1 Data Modeling Language
>>>>          Publication Date    : August 2016
>>>>          Author(s)           : M. Bjorklund, Ed.
>>>>          Category            : PROPOSED STANDARD
>>>>          Source              : NETCONF Data Modeling Language
>>>>          Area                : Operations and Management
>>>>          Stream              : IETF
>>>>          Verifying Party     : IESG
>>>>          .
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> netmod mailing list
>>>> netmod@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/netmod
>>>>
>>> _______________________________________________
>>> netmod mailing list
>>> netmod@ietf.org
>>> https://www.ietf.org/mailman/listinfo/netmod
>>>
>>>
>