Re: [Taps] call for agenda items at TAPS IETF-104

Michael Welzl <michawe@ifi.uio.no> Fri, 08 March 2019 13:29 UTC

Return-Path: <michawe@ifi.uio.no>
X-Original-To: taps@ietfa.amsl.com
Delivered-To: taps@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1FBC11279A1 for <taps@ietfa.amsl.com>; Fri, 8 Mar 2019 05:29:13 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.2
X-Spam-Level:
X-Spam-Status: No, score=-4.2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001, 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 OQ2BFT5mz2An for <taps@ietfa.amsl.com>; Fri, 8 Mar 2019 05:29:07 -0800 (PST)
Received: from mail-out02.uio.no (mail-out02.uio.no [IPv6:2001:700:100:8210::71]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 509C31279B3 for <taps@ietf.org>; Fri, 8 Mar 2019 05:29:07 -0800 (PST)
Received: from mail-mx10.uio.no ([129.240.10.27]) by mail-out02.uio.no with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.91) (envelope-from <michawe@ifi.uio.no>) id 1h2FYe-0009H1-GS; Fri, 08 Mar 2019 14:29:04 +0100
Received: from boomerang.ifi.uio.no ([129.240.68.135]) by mail-mx10.uio.no with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) user michawe (Exim 4.91) (envelope-from <michawe@ifi.uio.no>) id 1h2FYc-0003DS-Tp; Fri, 08 Mar 2019 14:29:04 +0100
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 11.5 \(3445.9.1\))
From: Michael Welzl <michawe@ifi.uio.no>
In-Reply-To: <AF7DD2EF-6FF3-4C26-8BA9-37D3D03E1139@akamai.com>
Date: Fri, 08 Mar 2019 14:29:01 +0100
Cc: taps WG <taps@ietf.org>
Content-Transfer-Encoding: quoted-printable
Message-Id: <5A7D2650-A9AE-4F60-8FB6-93C27B1C58C9@ifi.uio.no>
References: <3ADB8E2C-CA29-43C5-B7A8-D6C817BC98E6@gmail.com> <33A7614B-4009-4534-93AA-7022F4C436E6@akamai.com> <4E7DBBA1-FCD5-4E64-AEC1-8E52417B3ACA@akamai.com> <F0D3C2AF-7A8E-4BA5-8255-907479CA3843@ifi.uio.no> <AF7DD2EF-6FF3-4C26-8BA9-37D3D03E1139@akamai.com>
To: "Holland, Jake" <jholland@akamai.com>
X-Mailer: Apple Mail (2.3445.9.1)
X-UiO-SPF-Received: Received-SPF: neutral (mail-mx10.uio.no: 129.240.68.135 is neither permitted nor denied by domain of ifi.uio.no) client-ip=129.240.68.135; envelope-from=michawe@ifi.uio.no; helo=boomerang.ifi.uio.no;
X-UiO-Spam-info: not spam, SpamAssassin (score=-5.0, required=5.0, autolearn=disabled, UIO_MAIL_IS_INTERNAL=-5, uiobl=NO, uiouri=NO)
X-UiO-Scanned: 2507C37CD71E85DDCC046B4EBAAE5971EA4A4688
Archived-At: <https://mailarchive.ietf.org/arch/msg/taps/A_sCqeEAlpn6nPZVrQs_iL4CBFU>
Subject: Re: [Taps] call for agenda items at TAPS IETF-104
X-BeenThere: taps@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "IETF Transport Services \(TAPS\) Working Group" <taps.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/taps>, <mailto:taps-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/taps/>
List-Post: <mailto:taps@ietf.org>
List-Help: <mailto:taps-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/taps>, <mailto:taps-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 08 Mar 2019 13:29:13 -0000

Hi,

A few answers in line; I'll mark them with MW:


> On 7 Mar 2019, at 20:10, Holland, Jake <jholland@akamai.com> wrote:
> 
> Hi Michael,
> 
> Thanks for responding, much appreciated.  (And also to Tommy
> and Aaron.)
> 
> Based on the replies from you, Tommy, and Aaron, I'll plan
> to present something in Prague, and can you please put me
> on the schedule, Aaron?
> 
> More responses inline with <jh></jh>, and thanks, these
> questions were very helpful to help me focus on what needs
> explaining vs. what's obvious.
> 
> 
> On 2019-03-07, 00:32, "Michael Welzl" <michawe@ifi.uio.no> wrote:
> 
>    Hi,
> 
>    Very sorry for the silence. I can only speak for myself, but here's an example of why this one person was silent:
>    - When you created your issue on multicast in github, I thought of answering (positively), but then thought that the repo is about to move, and it would probably be better to delay things until the move is finished.
>    - Then, the issue was overruled by your email. I read it and found it interesting, but hoped for someone else to answer because, frankly, I was afraid to make a fool of myself ... because I know almost nothing about YANG.
> 
> <jh>
> Thanks for explaining, I'm sympathetic and grateful that you
> overcame your concerns.  I was in the same place on YANG not
> too long ago, and I still have a ways to go, though I now think
> I see some of its promise.
> 
> But I don't think I created a multicast issue on github?  I just
> noticed a few nits while reading and sent a pull request, nothing
> really substantial yet.

MW: Sorry, that might have just been a response to an issue or PR somewhere, I saw an email flying by, that's all...


> </jh>
> 
>    But now I'll be brave  :)   I'll go ahead and ask: how exactly is this YANG proposal more than just a syntax change?  What would it give us?
>    (I understand that YANG can be automatically parsed / checked by some tools, but... what does THAT give us?)
> 
> <jh>
> Syntax plus tool support is the only difference between machine code
> and <your favorite programming language>, so even if that's the only
> thing we got, it's not to be sneezed at.  (And there is a lot of room
> for growth here, but there are already tools that can generate API
> header code from yang, e.g:
> https://wiki.onosproject.org/display/ONOS/YANG+Tools )
> 
> But I'm actually pushing from the other direction; my understanding
> of the current docs is that taps-arch is a high level design and goals
> document, and taps-interface (and taps-minset) make an attempt to
> lay out the concrete implementation details that would make taps-arch a
> reality, if an implementation covers them.
> 
> My claim here is twofold:
> - that taps-interface as it stands today is another high level design
>  document, which will have a necessarily fuzzy mapping to any actual
>  implementation.
> - that taps-interface is _really_ _close_ to laying out the concrete
>  implementation details in a non-fuzzy way that can be directly used
>  by implementors, so I'm suggesting that taking that extra step is
>  highly valuable.
> 
> On the question of benefits:  I'll lay out some of the ones
> that seem important to me, but I'll first say that in theory,
> these benefits could be realized by any concrete configuration
> format. The benefit of YANG specifically comes from tool
> support and the confidence from existing work that make it clear
> it's a reasonable format for networking configuration.
> 
> Basically, because there's so much YANG work already done for
> networking, using YANG lets us leverage some of that work in a way
> other options don't.
> 
> In particular, there are a bunch of networking-specific concepts
> that are already defined in detail. For example, the ipv6-address
> type has a complicated regex that many implementors are likely to
> get wrong if they try to roll their own (at least, I've certainly
> done so, and seen it a bunch of times):
> https://tools.ietf.org/html/rfc6991#page-19
> 
> But by making the obvious choice of using yang tools to parse yang
> stuff, implementors automatically get checking against that 
> (normative!) regex for free without having to notice and check it
> themselves.
> 
> There's other side benefits, like that interfaces are themselves
> explicitly defined (https://tools.ietf.org/html/rfc8343#section-5),
> and so where things like interface types might be used, the past
> and future work of people who formalize and extend the set of
> interface types gets automatically imported by referencing the
> normative yang definition for network interfaces.
> 
> But to list a few of the specific benefits from having an explicit
> config format:
> 
> - cross-platform portability:
> If I've got a program using a taps api that talks to some service,
> and now I want to write a new program in a different language to talk
> to that service, I can export the config and load it in my new
> program (even in a new language), and I can be reasonably sure
> it'll form the same kind of connection.
> 
> Although it's possible to make it work anyway as long as the APIs
> have a 1-to-1 mapping, normalizing on a config file format instead
> of a list of features seems to me like it'll save me perhaps up to a
> day or so of effort each time I have to do this, which when multiplied
> by all the implementors in the world over the next decade or 2, starts
> to add up.
> 
> - testability:
> Again, this mostly saves time, but by having a defined input format,
> it's possible for different implementations to use the same suite of
> test configuration files to verify the same interpretation of their
> contents.  If each implementation has its own way of configuring the
> features, it's not impossible to design a suite that can test them,
> but it's vastly harder.
> 
> - completeness:
> One of the points of confusion I had with taps-interface was that the
> Local/RemoteEndpoints seemed both critical to an implementation and
> very underspecified.  Although it's possible to address that by raising
> concerns specifically about the Local/Remote Endpoints, I'm not sure
> there aren't other underspecified areas of the taps-interface draft.
> 
> I expect that a reference implementation based on parsing a config
> format would uncover all such underspecified areas of configuration,
> if the config format examples are used to describe all the supported
> use cases.
> 
> (So part of my goal with this proposal is to solve this problem in
> the general case, which implies that it'll also be solved for the
> specific cases of Local/Remote Endpoints, though of course the
> details for each instance of incompleteness are separate topics.)
> 
> There might be some other benefits, but I'll stop there, hoping the
> point is sufficiently clear.
> </jh>

MW:  Absolutely, yes - some very good arguments here.
The "common config format" argument in particular got me excited!


>    Also, I actually see 3 separable things being proposed here:
> 
>    1) the YANG model
> <jh>
> I'd phrase the current status of the proposal as an in-principle
> "use a YANG model", rather than "use this specific YANG model".
> 
> The current draft is kind of a throw-away example proof of concept,
> which is certainly very incomplete, and some of my reading yesterday
> suggests that it's actually not very well structured either.  I've
> probably already made a fool of myself to any actual YANG experts,
> that ever try to read it, but such are the risks of posting public
> comments... :)
> </jh>
> 
>    2) multicast support  (I find your conclusion that not much needs to change interesting!  Though the example you're giving (joining an SSM channel) is only a part of what we'd need, as you also say...)
> <jh>
> Fair point, this really is a separate topic.  I brought it up
> really only because it's a motivating factor in my participation
> here, not because it's a primary factor for taps in general.  Let's
> drop it for this thread, and I'll plan to raise it as a separate
> issue when the yang questions are settled and I've got something
> more thought out.
> </jh>

MW: To be clear, there has always been only one argument against multicast in TAPS, and that was: "it's complex, so let's deal with it later."
So I think we're all for it... we just didn't get to work on it.


>    3) applying preferences to addresses and port numbers  (which you seem to take for granted in your draft, but which I don't think is supported by our current document).
> 
> <jh>
> Yes, this is a case in point for my concerns about incompleteness
> on the Endpoint specifications.
> 
> I wasn't sure how to treat this, so I'm not surprised if I got it
> wrong.  I was sort of pattern-matching on the rest of what the spec
> does, plus guessing at intended meanings of this paragraph from
> https://tools.ietf.org/html/draft-ietf-taps-interface-02#section-5.1:
> 
>   Multiple endpoint identifiers can be specified for each Local
>   Endpoint and Remote Endpoint.  For example, a Local Endpoint could be
>   configured with two interface names, or a Remote Endpoint could be
>   specified via both IPv4 and IPv6 addresses.  These multiple
>   identifiers refer to the same transport endpoint.
> 
> By the time I finished making the examples, I had noticed I was
> maybe doing it wrong, but I didn't want to bother fixing it unless
> people agree it's worth spending effort in this general direction, and
> I didn't want to hold off on opening the discussion.  Of course, it
> should be changed to match the consensus of the wg on what belongs
> here.
> </jh>
> 
>    Side note: unless I'm mistaken, this wouldn't fit our structure well: e.g. a port number would then be a Transport Property that has a certain value, but also has a preference, but currently we say that a Transport Property has "one of a set of data types", one of which is a Preference. Isn't that structure too limiting? Or am I missing something?
> 
> <jh>
> I'm not sure.  This is part of what I mean when I say I find the
> current taps-interface a little too loose.  I _think_ what I posted
> is a valid (though perhaps not optimal) interpretation of the current
> text.  I might be wrong about that, so I'd be grateful for a pointer
> to the text that prohibits this interpretation.

MW: Things have changed so much since the -02 version, including a re-organization of properties... and the latest version doesn't seem to pop up under the "editor's copy" link now, after the move.
Therefore, I don't want to point to some specific bit of the text now. Let's get back to this discussion later, on the basis of the next -interface draft version.


> But really, that's beside the point.  I'd be even more grateful for an
> alternate proposal that more closely matches the intended design for
> a taps API, with the same level of concreteness.

MW: I liked your proposal!  It just maybe calls for a change of what we have (rather than changing what you propose).


> </jh>
> 
>    I guess that 2) needs 3), but perhaps it's useful to see 2) and 3) as separate... maybe there are other use cases for 3) alone ?
> 
> <jh>
> Yes, I think so.  I think I understand an ultimate goal for taps to
> be "as an app designer, don't worry about which transport, just
> send the magic API to go discover one that works".
> 
> However, it seems to me in the interim that it'll be necessary
> to specify port numbers in order to interoperate with a lot of
> existing services, especially in cases like RTP (or a lot of
> other generalized UDP stuff), where there's not an explicit
> service-to-port mapping. (Also to interoperate with a lot of
> other deployed systems like firewalls.)
> 
> I have a few nebulous ideas about how explicit layering might be a
> good way to solve this, but I think in order to make the ideas sharp
> enough to evaluate, I thought I'd first try the easier task of making
> taps sharp enough that I can express the ideas as proposed changes
> to an existing well-formed concept.
> </jh>

MW: all of that makes sense to me, too.


>    IMO, all of these things are interesting, and would be good to discuss on site. However, I doubt that we can deal with them all in only 15 minutes  :-)
> 
> <jh>
> Fair point.
> 
> I propose during the taps meeting to check preliminary consensus about
> moving forward with a YANG model within taps, and if so whether to
> integrate, replace, or make a paired doc with the existing taps-interface.
> Separately, I'll encourage those interested and available to spend some
> time in offline clarifying discussion during the week prior.
> 
> Cheers,
> Jake
> </jh>

MW: IMO, making a paired doc seems like a good strategy.

Cheers,
Michael