Re: [netmod] yang next issue #46 binary encoding support

Andy Bierman <andy@yumaworks.com> Fri, 29 March 2019 16:30 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 3102C120048 for <netmod@ietfa.amsl.com>; Fri, 29 Mar 2019 09:30:42 -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, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, 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 SyPf7J12_u8C for <netmod@ietfa.amsl.com>; Fri, 29 Mar 2019 09:30:39 -0700 (PDT)
Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com [IPv6:2a00:1450:4864:20::22a]) (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 EE2751202FB for <netmod@ietf.org>; Fri, 29 Mar 2019 09:30:31 -0700 (PDT)
Received: by mail-lj1-x22a.google.com with SMTP id v22so2504802lje.9 for <netmod@ietf.org>; Fri, 29 Mar 2019 09:30:31 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yumaworks-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=9ubKEcHeMZSjghz0SCyc2YPziBCqH6cJt6GcLhNF7m0=; b=hxCmOi8hBoCCQF/vkYjPZ+nv2/Zw3r2qKzIAinE2qwtOEBjhVZhzzuVKykpJ0OPZQD YzHBGIT7y242p+IqXzmqvf/J1QUHeMVEEDJSHbEIG33K0GuaWJ/ZbMn3Rb/69nCfIoIN X/1miPU4+KIhZAgjJ/M61pFofOH0p7ah8LkKypbQY2MvCzyYfmpUzpntX8e/dr2sXtbo cfTsIonE1FQAdyvOdIOHxrYH8ZJlOIqbEL93DCJ0Mzj6WDL1p9Y7kVpM7QyZe8+2jdQl MNhkPjA3w6c8bGq3kSz8GC3QyNl7rpPU2cBnOpRU7TEbWE4fDu1LRvAdfmEcZcgXj8YM C8wQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=9ubKEcHeMZSjghz0SCyc2YPziBCqH6cJt6GcLhNF7m0=; b=QvTM1wf7d9sp7ww20yWQFoOxkIzbtlqFH8Gwv5G23vY4KlBTDM+AKO8Eg+Qvtqjmqg jHRxttS26rCVOilXd83TqtwiMSgp5IQhbXfcdE3+ojkqdwECoFFL811MS19YWbA6PUts oOlEz2JA82de3k35C7PTW3U1ewrYXOMMQcg4H7WWB4QXXW/QOR9DrFkt4rEGpQEajrlH 2G6einjVk6yxuXwCQDBoAyWVxvglY0wpOT+jwRiumZ6V5A25/cwKg4nnck1vgyqMgpqB dXlVo4hBnTJxjohuAJhog7M02oa6s+bWcukWuuN9srUUaoYbZ6Yx5CSp6AbBB4+hCKR2 maQQ==
X-Gm-Message-State: APjAAAUFgSfym7U1SpP5XbGBOtMSWJGLbM7R9UK1QRSqvoxLnXND6qv9 xQ0kvcrwuypZyBTySVAydGGKoMx2NvUENEPiLmEzEg==
X-Google-Smtp-Source: APXvYqyqVIqsdeiVnWLM+FEyhRLXZqwCKwpPgeNc0yYHddqG3poDgh+cckro+U+SnLY9eAYJ1PVPSXIinTisqgwFR7E=
X-Received: by 2002:a2e:8616:: with SMTP id a22mr27351455lji.173.1553877030099; Fri, 29 Mar 2019 09:30:30 -0700 (PDT)
MIME-Version: 1.0
References: <20190329111930.k2dt6wctsazxa7rp@anna.jacobs.jacobs-university.de> <CABCOCHS=VhfpKHYhB_eQ8Y9i5FK6+R1q4a8Soc=z=HRYJLV5OA@mail.gmail.com> <20190329161723.xuh3avyrdepdw3px@anna.jacobs.jacobs-university.de>
In-Reply-To: <20190329161723.xuh3avyrdepdw3px@anna.jacobs.jacobs-university.de>
From: Andy Bierman <andy@yumaworks.com>
Date: Fri, 29 Mar 2019 09:30:19 -0700
Message-ID: <CABCOCHS6cNhG_YeeW_ueYMOvo1TQHfpFi8TQGDrka12yoRvZLA@mail.gmail.com>
To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>, Andy Bierman <andy@yumaworks.com>, NetMod WG <netmod@ietf.org>
Content-Type: multipart/alternative; boundary="0000000000006772c005853e3027"
Archived-At: <https://mailarchive.ietf.org/arch/msg/netmod/0nWeblkCLQscbT5Tq8Q4FuYW-sw>
Subject: Re: [netmod] yang next issue #46 binary encoding support
X-BeenThere: netmod@ietf.org
X-Mailman-Version: 2.1.29
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: Fri, 29 Mar 2019 16:30:43 -0000

On Fri, Mar 29, 2019 at 9:17 AM Juergen Schoenwaelder <
j.schoenwaelder@jacobs-university.de> wrote:

> On Fri, Mar 29, 2019 at 09:07:18AM -0700, Andy Bierman wrote:
> > On Fri, Mar 29, 2019 at 4:19 AM Juergen Schoenwaelder <
> > j.schoenwaelder@jacobs-university.de> wrote:
> >
> > > Hi,
> > >
> > > this is issue is closed but I wonder whether this is correct. I have
> > > several questions looking at the issue on github:
> > >
> > > - Why is this not a YANG issue?
> > > - Which workaround is better?
> > > - Why is this tagged as a NETCONF issue?
> > >
> > >
> > Did you mean this should be NETCONF issue?
> > It is more of a protocol problem then a modeling problem.
> > The goal is to use the model unaltered.
>
> I think it would be valuable if say the definition of ipv4-address
> could state that a canonical binary representation is of type binary {
> length 4; }. Doing this is only meaningful for some types but it would
> allow to add more binary representations over time.
>
> > > If we want to support binary encodings, we need to allow modelers to
> > > define which types map to a canonical binary representation in
> > > addition to the canonical string representation. As stated in the
> > > issue description, hard-wiring some types in the encoding
> > > specifications is very limited.
> > >
> > > In terms of backwards compatibility, this issue should IMHO be tagged
> > > high (adding binary encoding for some types does not cause any
> > > backwards compatibility problem since so far we have only strings).
> > >
> > >
> > Not so sure.
> > The base64 encoding could look like a valid string.
> > The receiver must know a binary type is being sent (XML and JSON both
> fail
> > here, but not CBOR).
>
> I am talking about CBOR, not about XML or JSON. I want to provide
> hints to CBOR (or similar binary encodings) that values can be
> represented in a different format. I do not expect these hints to be
> used by XML or JSON. If you need binary encoding efficiency, use CBOR
> instead of JSON.
>
> > > While I do not have a solution proposal, I think this issue is worth
> > > to look at and we should not close it right now.
> > >
> > >
> > I have a solution proposal, but I have not implemented it yet, so it it
> not
> > detailed...
> >
> > Both sender and receiver need to agree on the binary encoding and how the
> > data is tagged as binary.
> >
> > This expired draft should address that problem:
> > https://tools.ietf.org/html/draft-mahesh-netconf-binary-encoding-01
> >
> > For every type T that they agree on, there are standard T.b2y() and
> T.y2b()
> > conversion functions.
> > There are also some extensions to define conversion templates so vendors
> > can add their own types.
> >
> > The YANG modules do not need to actually be altered.  The peers will
> > negotiate the
> > set of types that will be sent as binary when the session starts.
> > The receiver knows T and the SID for each object, and will accept either
> > the YANG or binary encoding.
>
> Sounds complex for me to negotiate this. I rather say once that a
> binary encoding can ship an IPv6 address as type binary { length 16; }
> and then CBOR will simply do the right thing.
>
>
OK, but this would require new type names.
You cannot simply change some standard type to be a union with a binary
type.
This forces all implementations of that type to support the binary variant.
That breaks old clients that worked with the version before the binary
variant.

The ripple effect on the models changing types would be non-trivial.
Using this union-type approach forces every protocol to support the binary
encoding,
yet base64 in a union with strings is very error-prone.


/js
>

Andy



>
> --
> Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
> Fax:   +49 421 200 3103         <https://www.jacobs-university.de/>
>