Re: [netmod] Pattern statements [was Re: Query about augmenting module from submodule in YANG 1.0]

Ladislav Lhotka <lhotka@nic.cz> Wed, 23 August 2017 10:53 UTC

Return-Path: <lhotka@nic.cz>
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 5851A132946 for <netmod@ietfa.amsl.com>; Wed, 23 Aug 2017 03:53:18 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.899
X-Spam-Level:
X-Spam-Status: No, score=-1.899 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
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 Oc6SO0UNwTiw for <netmod@ietfa.amsl.com>; Wed, 23 Aug 2017 03:53:15 -0700 (PDT)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id 120451321B6 for <netmod@ietf.org>; Wed, 23 Aug 2017 03:53:15 -0700 (PDT)
Received: by trail.lhotka.name (Postfix, from userid 109) id DAD4B1820E79; Wed, 23 Aug 2017 12:53:50 +0200 (CEST)
Received: from localhost (unknown [195.113.220.126]) by trail.lhotka.name (Postfix) with ESMTPSA id 1FFC01820E6E; Wed, 23 Aug 2017 12:53:46 +0200 (CEST)
From: Ladislav Lhotka <lhotka@nic.cz>
To: "t.petch" <ietfc@btconnect.com>, "Acee Lindem (acee)" <acee@cisco.com>, "Ivory, William" <william.ivory@intl.att.com>, netmod@ietf.org, Andy Bierman <andy@yumaworks.com>, Robert Wilton <rwilton@cisco.com>
In-Reply-To: <044b01d31bf4$d3b37500$4001a8c0@gateway.2wire.net>
References: <E3378E0605547F4E854DEE0CB1116AB020865B@gbcdcmbx03.intl.att.com> <85A1FF5A-EF0B-4278-B4FF-3FE431486B2C@tail-f.com> <E3378E0605547F4E854DEE0CB1116AB02102DC@gbcdcmbx03.intl.att.com> <11857e8e-f46e-dc2e-cf99-80224859d221@transpacket.com> <E3378E0605547F4E854DEE0CB1116AB0210631@gbcdcmbx03.intl.att.com> <defe35bb-bb8b-f1f0-d8c4-2d2d0f23731b@transpacket.com> <1502290869.16638.15.camel@nic.cz> <20170809151312.GC42207@elstar.local> <6ef68131-f731-0edc-b731-d7ec85924f03@cisco.com> <E3378E0605547F4E854DEE0CB1116AB021CE2D@gbcdcmbx03.intl.att.com> <D5C05EB3.C2681%acee@cisco.com> <7614040f-9f8f-09c2-1854-63ad9ffb6be1@cisco.com> <044b01d31bf4$d3b37500$4001a8c0@gateway.2wire.net>
Mail-Followup-To: "t.petch" <ietfc@btconnect.com>, "Acee Lindem \(acee\)" <acee@cisco.com>, "Ivory\, William" <william.ivory@intl.att.com>, netmod@ietf.org, Andy Bierman <andy@yumaworks.com>, Robert Wilton <rwilton@cisco.com>
Date: Wed, 23 Aug 2017 12:53:33 +0200
Message-ID: <87vale1ro2.fsf@cesnet.cz>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/adG63jLzkVr-7Dc9dtERby7m0lY>
Subject: Re: [netmod] Pattern statements [was Re: Query about augmenting module from submodule in YANG 1.0]
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: Wed, 23 Aug 2017 10:53:18 -0000

"t.petch" <ietfc@btconnect.com> writes:

> ----- Original Message -----
> From: "Robert Wilton" <rwilton@cisco.com>
> Sent: Monday, August 21, 2017 4:14 PM
>
>> That makes sense.
>>
>> The other thing that I think that we have got wrong is modelling regex
>> pattern statements.  I think that it would be much better if these
> were
>> written to be less exhaustive and much simpler.
>>
>> E.g. the "route distinguisher" pattern in
>> draft-ietf-rtgwg-routing-types-09 is defined as this:
>>
>>           pattern
>>             '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
>>           +     '6[0-4][0-9]{3}|'
>>           +     '[0-5]?[0-9]{0,3}[0-9]):(429496729[0-5]|'
>>           +     '42949672[0-8][0-9]|'
>>           +     '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|'
>>           +     '42949[0-5][0-9]{4}|'
>>           +     '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|'
>>           +     '42[0-8][0-9]{7}|4[01][0-9]{8}|'
>>           +     '[0-3]?[0-9]{0,8}[0-9]))|'
>>           + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|'
>>           +     '25[0-5])\.){3}([0-9]|[1-9][0-9]|'
>>           +     '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|'
>>           +     '655[0-2][0-9]|'
>>           +     '65[0-4][0-9]{2}|6[0-4][0-9]{3}|'
>>           +     '[0-5]?[0-9]{0,3}[0-9]))|'
>>           + '(2:(429496729[0-5]|42949672[0-8][0-9]|'
>>           +     '4294967[01][0-9]{2}|'
>>           +     '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|'
>>           +     '4294[0-8][0-9]{5}|'
>>           +     '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|'
>>           +     '[0-3]?[0-9]{0,8}[0-9]):'
>>           +     '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
>>           +     '6[0-4][0-9]{3}|'
>>           +     '[0-5]?[0-9]{0,3}[0-9]))|'
>>           + '(6(:[a-fA-F0-9]{2}){6})|'
>>           + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):'
>>           +     '[0-9a-fA-F]{1,12})';
>>         }
>>
>> But I think that it would be much easier to read, and quite possibly
>> more performant to execute, if the pattern regex was written something
>> like the following:
>>
>>   pattern:
>>      '(0:[0-9]{1,5}:[0-9]{1,10})|
>>       (1:([0-9]{1,3}\.){4}:[0-9]{1,5})|
>>       (2:[0-9]{1,10}:0:[0-9]{1,5})|
>>       (6(:[a-fA-F0-9]{2}){6})';
>>
>> Of course, this would allow more invalid values, but most servers
> would
>> be expected to reject those when it converts them into an internal
>> binary format any way.
>>
>> What do you, and others, think?
>
> Simplify!
>
> Bear in mind that the regex for an IPv6 address was wrong for a long
> time in base YANG before anyone noticed - it was just too complex.

Why was it wrong? Just because it was too complex?

>
> And ABNF learnt long ago that just because something could be expressed
> in code does not mean that it is a good idea to do so.  If a simple
> English statement replaces many lines of ABNF, then that is a good
> tradeoff.

Well, YANG models are also intended to be read by tools that so far
don't understand English statements. Concerning human users, the easiest
thing might be to refer to a corresponding RFC, which the descriptions
already do.

>
> Pragmatically I am not sure what the cutoff for complexity should be but
> it should be less than we have now.
>
> Paradoxically, given the original thread, the time when large
> expressions may work ok is when they have a 'sub-module' like structure,
> when I can look at a group of lines in isolation and form a view of what
> it does then move on to the next group and so on, building up an overall
> picture piece by piece.

Of course, regular expression languages are notorically human
unfriendly, no matter what flavour we take. The ability to build them
step by step from reusable pieces, e.g. using non-terminals, would
certainly help.

Lada

>
> Tom Petch
>
>> Thanks,
>> Rob
>>
>>
>> On 21/08/2017 15:01, Acee Lindem (acee) wrote:
>> > Hi William, Rob, Andy,
>> >
>> > Given their limited usefulness and the detriments, perhaps we should
>> > discourage the creation of new submodules in RFC6087Bis.
>> >
>> > Thanks,
>> > Acee
>> >
>> > On 8/21/17, 9:44 AM, "netmod on behalf of Ivory, William"
>> > <netmod-bounces@ietf.org on behalf of william.ivory@intl.att.com>
> wrote:
>> >
>> >> Hi Rob,
>> >>
>> >> That would make it very hard to update existing 1.x YANG models to
> use
>> >> new features in YANG 2.x if they used submodules.  Maybe that's
> something
>> >> that no one would ever consider doing anyway, or maybe YANG 1.1
> already
>> >> has similar differences to 1.0?  I had (perhaps naively) assumed
> that you
>> >> could migrate a namespace / model from YANG 1.0 to 2.0?
>> >>
>> >> Regards,
>> >>
>> >> William
>> >>
>> >> -----Original Message-----
>> >> From: netmod [mailto:netmod-bounces@ietf.org] On Behalf Of Robert
> Wilton
>> >> Sent: 21 August 2017 11:24
>> >> To: netmod@ietf.org
>> >> Subject: Re: [netmod] Query about augmenting module from submodule
> in
>> >> YANG 1.0
>> >>
>> >>
>> >>
>> >> On 09/08/2017 16:13, Juergen Schoenwaelder wrote:
>> >>> On Wed, Aug 09, 2017 at 05:01:09PM +0200, Ladislav Lhotka wrote:
>> >>>> I remember that in early stages of YANG there was some irrational
>> >>>> fear of introducing too many namespaces, and submodules may be a
>> >>>> consequence of it. As you write, submodules provide no benefits
>> >>>> whatsoever in terms of modularity, but the overhead in terms of
>> >>>> metadata, IANA registration etc. is pretty much the same as for
>> >>>> modules.
>> >>> In case YANG 2.0 is ever done, I suggest someone files a proposal
> to
>> >>> remove submodules if the cost/benefit ratio is at odds. There is
>> >>> nothing wrong with removing stuff that has been found problematic.
>> >> I agree.
>> >>
>> >> I've added
>> >>
> https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_netmod-2
> Dw
>> >>
> g_yang-2Dnext_issues_26&d=DwICAg&c=LFYZ-o9_HUMeMTSQicvjIg&r=p8kyeK3u4ZYi
> aQ
>> >>
> 2ZPGqwkyXmQgBH6r5jpYiYWzhqJ48&m=l7c4IPL049A2bVVO14fyBMly211xU61xSHgPlAT7
> ow
>> >> I&s=-kR4fUtXArQy0RwWb32DpT1bP4X_cNqt2zJVoC0JiX8&e=
>> >>
>> >> Rob
>> >>
>> >>> The motivation for submodules was that organizations maintaining
> large
>> >>> modules with multiple people can do so without having to mess
> around
>> >>> with tools like m4 scripts to produce a single module from
> 'snippets'
>> >>> and to avoid integration surprises. But perhaps using m4 scripts
> and
>> >>> decent version control systems (that can integrate and compile on
>> >>> checkin) is indeed cheaper than having submodules part of the YANG
>> >>> language itself.
>> >>>
>> >>> /js
>> >>>
>> >> _______________________________________________
>> >> netmod mailing list
>> >> netmod@ietf.org
>> >>
> https://urldefense.proofpoint.com/v2/url?u=https-3A__www.ietf.org_mailma
> n_
>> >>
> listinfo_netmod&d=DwICAg&c=LFYZ-o9_HUMeMTSQicvjIg&r=p8kyeK3u4ZYiaQ2ZPGqw
> ky
>> >>
> XmQgBH6r5jpYiYWzhqJ48&m=l7c4IPL049A2bVVO14fyBMly211xU61xSHgPlAT7owI&s=t7
> vG
>> >> IH8ABuAm00e-bkSowD9eawModGq0N2OkjANtpYI&e=
>> >>
>> >> _______________________________________________
>> >> 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
>>
>
> _______________________________________________
> netmod mailing list
> netmod@ietf.org
> https://www.ietf.org/mailman/listinfo/netmod

-- 
Ladislav Lhotka
Head, CZ.NIC Labs
PGP Key ID: 0xB8F92B08A9F76C67