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

"Holland, Jake" <jholland@akamai.com> Thu, 07 March 2019 03:55 UTC

Return-Path: <jholland@akamai.com>
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 2FEED1277CC for <taps@ietfa.amsl.com>; Wed, 6 Mar 2019 19:55:27 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.233
X-Spam-Level:
X-Spam-Status: No, score=-1.233 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, KHOP_DYNAMIC=1.468, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=akamai.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 rq8EjJ-B7plb for <taps@ietfa.amsl.com>; Wed, 6 Mar 2019 19:55:25 -0800 (PST)
Received: from mx0a-00190b01.pphosted.com (mx0a-00190b01.pphosted.com [IPv6:2620:100:9001:583::1]) (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 6F6BA1200ED for <taps@ietf.org>; Wed, 6 Mar 2019 19:55:25 -0800 (PST)
Received: from pps.filterd (m0122333.ppops.net [127.0.0.1]) by mx0a-00190b01.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x273l3T1031137 for <taps@ietf.org>; Thu, 7 Mar 2019 03:55:25 GMT
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=akamai.com; h=from : to : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=jan2016.eng; bh=qN+TQCtjtb9Rrg8KcujZhgnUB5bx3nH5Zor0/OHTEOs=; b=G8BqAwScbcMA058MY41V32piP7S15hMLKa8RuZfnglVSCEYqlFqta+MWwkW/X3BeAFnS 2QqQ1UkJ7xeYR2vfJ4sf5xTXrrffWzqWILQgMfIP8PIxwZYnkt9B/qu38GFpN3eLDwFQ YFxSeHFl+dmRpYYKdYB5dmS38UV9UGm4/rzJgssmyEQToHUrCGhxwMJ/q+mHp80GyBas OhGspYgsh+SOygvvC6YYkVYAQbdFBlka6ONQle0DBzUeu7K2RPdfbSeS+u7M42UBXxb0 7WnWS1ow2xf9n57UT3kCCB+RKFohS6DF2cPKBacPtkrtgSAKXxt8T/Vijdc5jJgNwD/i dA==
Received: from prod-mail-ppoint4 (a96-6-114-87.deploy.static.akamaitechnologies.com [96.6.114.87] (may be forged)) by mx0a-00190b01.pphosted.com with ESMTP id 2r2fm8ad64-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for <taps@ietf.org>; Thu, 07 Mar 2019 03:55:25 +0000
Received: from pps.filterd (prod-mail-ppoint4.akamai.com [127.0.0.1]) by prod-mail-ppoint4.akamai.com (8.16.0.27/8.16.0.27) with SMTP id x273ki7m002804 for <taps@ietf.org>; Wed, 6 Mar 2019 22:55:24 -0500
Received: from email.msg.corp.akamai.com ([172.27.123.32]) by prod-mail-ppoint4.akamai.com with ESMTP id 2qyp1yr53w-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for <taps@ietf.org>; Wed, 06 Mar 2019 22:55:23 -0500
Received: from usma1ex-dag1mb6.msg.corp.akamai.com (172.27.123.65) by usma1ex-dag1mb2.msg.corp.akamai.com (172.27.123.102) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Wed, 6 Mar 2019 22:55:22 -0500
Received: from usma1ex-dag1mb6.msg.corp.akamai.com ([172.27.123.65]) by usma1ex-dag1mb6.msg.corp.akamai.com ([172.27.123.65]) with mapi id 15.00.1473.003; Wed, 6 Mar 2019 22:55:21 -0500
From: "Holland, Jake" <jholland@akamai.com>
To: taps WG <taps@ietf.org>
Thread-Topic: [Taps] call for agenda items at TAPS IETF-104
Thread-Index: AQHU0ruJg/BpMSiZnkS1XjtUnIdzOKX8G+mAgAM/gYA=
Date: Thu, 07 Mar 2019 03:55:21 +0000
Message-ID: <4E7DBBA1-FCD5-4E64-AEC1-8E52417B3ACA@akamai.com>
References: <3ADB8E2C-CA29-43C5-B7A8-D6C817BC98E6@gmail.com> <33A7614B-4009-4534-93AA-7022F4C436E6@akamai.com>
In-Reply-To: <33A7614B-4009-4534-93AA-7022F4C436E6@akamai.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: Microsoft-MacOutlook/10.16.0.190211
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-exchange-transport-fromentityheader: Hosted
x-originating-ip: [172.19.113.22]
Content-Type: text/plain; charset="utf-8"
Content-ID: <4CB25495145A184FB04E7138D4E4385C@akamai.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-03-07_01:, , signatures=0
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1903070025
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-03-07_01:, , signatures=0
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1903070025
Archived-At: <https://mailarchive.ietf.org/arch/msg/taps/Yh9DqqkiOFpHrLgXOHOooqbvCLE>
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: Thu, 07 Mar 2019 03:55:27 -0000

Hi taps,

(Trying again, but simpler.)

I'm looking for a consensus yes or no answer:

Is a normative config input format an interesting and useful
direction?


The idea is to add functionality like this, in taps-interface:

  newPre = PreConnection.NewFromJson('''{
    "remote-endpoint":{
      "hosts":[
        { "host":"example.com" }
      ]
    }
  }''')

With a fully specified json input format that can provide all the
configurable values.


If no, I'll move on and assume I just don't understand taps goals.

If yes, I'd like 15 minutes to discuss in Prague, and keep reading:

I think a full definition of an input json format can be exactly
specified by a YANG model. (With xml for free, if you want it.)

I tried to sketch a start at what a YANG model for this might look like:
https://tools.ietf.org/html/draft-jholland-taps-api-yang-00#section-3

I'm not a YANG expert yet, and it's not much of a model.  And it's very
far from complete.  But it compiles, and all the examples in the draft
validate against that model with libyang.  If it's worthwhile, I think
something like this can be good (and extensible!), if done right.

I believe something along these lines would sharpen up taps-interface
a lot. (After filling in all the taps-interface properties.)


The reason I'm asking is because right now, taps-interface to me
seems _almost_ really good, except too confusing and vague to actually
build an API that can replace BSD sockets.  I think with a solid config
format with normative and testable examples, that could be fixed.

If consensus says "interesting", I'll want 15 minutes to discuss it, and
to start digging into how to make it good.  (And also to add multicast
support to the model and at least one implementation.)

Thanks for your consideration.


Cheers,
Jake



On 2019-03-04, 17:19, "Holland, Jake" <jholland@akamai.com> wrote:

    Hi taps folks,
    
    TL;DR: I think the spec should have a YANG model and I want to use it
    to get multicast support in an implementation.
    
    
    I recently started digging into the taps API with the intent of adding
    multicast support, but it looks like it's basically already there, as
    far as it goes[*].
    
    But I ended up with a higher-level comment, so I thought I'd raise it
    to the wg and ask what you all think.
    
    I found the whole "abstract interface" approach a little too
    loosey-goosey, so I thought I'd try to suggest a way to tighten it up.
    
    My goal with this is to make it much more clear (to the point of being
    mechanically checkable) precisely what a compliant API provides.
    
    I'm not attached to the structure I'm proposing or to any of the
    particulars in the straw-man I've posted, but if it's not tightened up
    with something at a similar level of concreteness, I'm concerned that
    different implementations will be not only incompatible in random
    underspecified corner cases (like BSD sockets today when you try to make
    cross-platform C code), but also are likely to end up with very many
    important differences that would make the whole taps effort more or less
    moot.
    
    In a world where we end up with a doc at the level of abstraction I'm
    currently seeing in draft-taps-interface, it seems to me that if 2
    different API implementations were written in the same language, it'll
    be prohibitively difficult for an app to migrate from using one to using
    the other, just because so many aspects of it are left open to the
    implementors.
    
    In that context, I thought a YANG model would be useful here to
    provide a cross-platform way to specify what exact properties and
    objects exist, an exact format in which the values can be specified, and
    what exact semantics they have, while still allowing for a sane
    extension path and language-specific implementation details.
    
    I'm thinking some language a bit like the first bullet in Section 4.2 of
    taps-interface:
    
      A compliant implementation SHOULD provide a language-appropriate way to
      configure a PreConnection using YANG instance data for this model, and
      SHOULD provide an API that outputs the YANG instance data for an
      established Connection.
    
      An implementation MAY also provide appropriate APIs for directly editing
      the objects without using YANG.  It's RECOMMENDED where possible to use
      names that mechanically translate to the names in the YANG data model,
      using capitalization and punctuation conventions as expected for the
      language of the implementation.
    
    And then of course a YANG model:
    https://datatracker.ietf.org/doc/draft-jholland-taps-api-yang/
    (draft-jholland-taps-api-yang)
    
    If this seems useful, it will need lots of refining.  I'll be surprised
    if any part of it survives exactly as written.  It's a quick and
    dirty attempt to concretize a few of the things I saw listed in
    draft-ietf-taps-interface, as a starting point to fill out if it seems
    useful.
    
    But the model parses, and the example data instances in the draft
    parse against the model (all with libyang).
    
    One of the main reasons I'm doing this is because it seems to me what's
    specified in taps-interface-02 today is missing some key features, like
    an enumeration of the properties in the Local/RemoteEndpoint examples in
    section 5.1.  And I don't see that listed as an open issue in github,
    which surprised me a bit.
    
    I think oversights like this will become immediately and painfully
    obvious when there's a reference implementation that includes a YANG
    parser and an explicit data model, as opposed to the combing of the
    document and a sort of eyeballed comparison to NEAT that I tried
    this week to reach that conclusion (which I found challenging even
    though I thought both the document and the library were mostly pretty
    well written).
    
    The whole thing at this point just smells to me much more abstract than
    it really has to be or than it's really useful to be, which bothers me
    because the idea of replacing BSD sockets with something usable seems
    like such a great idea.  I'd like this to be something I can actually
    use in a way that makes my life easier someday soon.
    
    But I think I'm at the point where I need a sanity check to see if I'm
    just missing something, or if this seems like a useful direction.
    
    Thoughts?  Suggestions?   Worth discussing in Prague?  (If so, can I
    get a slot?)
    
    Cheers,
    Jake
    
    *:
    I concluded that there's no reason multicast couldn't be supported
    today, if there were an implementation that could reasonably claim to be
    compliant, by just adapting some of the examples in
    draft-ietf-taps-interface-02 and understanding the semantic meaning of
    multicast address spaces inside the API.
    
    For example, I couldn't find any reason this can't be expected to set
    up an SSM channel subscription without any further ado, given a sane
    implementation that supports it:
    
      RemoteSpecifier := NewRemoteEndpoint()
      RemoteSpecifier.WithIPv4Address(192.0.2.21)
    
      LocalSpecifier := NewLocalEndpoint()
      LocalSpecifier.WithPort(30000)
      LocalSpecifier.WithIPv4Address(232.252.0.2)
    
      NewPreconnection(RemoteSpecifier, LocalSpecifier).Listen(...)
    
    Maybe there's some value in specifying a "JoinSSM()" to override defaults
    in the PreConnection, just to make sure you're specifically asking for
    multicast.  I think that would be fine for native multicast, but like I
    said, a much smaller point than the looseness of the API.
    
    Where it gets a bit more complicated is trying to handle multiple options
    for discovering a usable unicast tunnel for multicast traffic, as
    described in Section 2.4.1 of draft-ietf-mboned-driad-amt-discovery-01.
    
    I'd like to have a decent place to tack on an extension to this API that
    can transparently, within the connection API, discover the best available
    AMT relay and start using it when native joining is unavailable (and also
    to provide normative controls for configuring it when there's
    administrative configuration to be added).
    
    But that's a 2nd order question for me at this point, because in the
    current TAPS API I don't see any obviously good spot to put selection
    controls for that kind of tunnel discovery selection, or really a good
    way to explain what it's supposed to do, if I tried to add controls to
    something that's there.
    
    Solving that is my main motivation for being here.  (Well, and that
    the BSD socket API for multicast is kind of a disaster today.)
    
    Anyway, if taps finds the whole YANG suggestion useful, I'll probably
    suggest some new extensions about this, and maybe a few other points,
    especially maybe around trying to put in a structure that can support
    some kind of sane explicit layering.
    
    But I'm not sure I can articulate those suggestions in a way I'm sure is
    meaningful without first getting a more clear specification nailed down
    about what's actually in the taps spec. Because right now I'm mostly
    just confused about what an API implementation would really look like,
    and how you could tell whether it matches the taps-interface spec.
    
    
    
    From: Aaron Falk <aaron.falk@gmail.com>
    Date: 2019-03-04 at 10:53
    To: taps WG <taps@ietf.org>
    Cc: Zaheduzzaman Sarker <zaheduzzaman.sarker@ericsson.com>
    Subject: [Taps] call for agenda items at TAPS IETF-104
    
    Hi All-
    What should we use our time to discuss? Let’s focus on things that would benefit from f2f discussion, consensus building, or just argument. :)
    • TAPS docs: are there open topics that need group attention? Seems like we settled most of the remainder at the interim. 
    • TAPS security: this seems nearly done. Anything to discuss? 
    • Implementations: a good topic for information sharing but less important than anything needing agreement 
    • Mobility: https://urldefense.proofpoint.com/v2/url?u=https-3A__tools.ietf.org_html_draft-2Dietf-2Ddmm-2Dondemand-2Dmobility-2D17&d=DwMFaQ&c=96ZbZZcaMF4w0F4jpN6LZg&r=bqnFROivDo_4iF8Z3R4DyNWKbbMeXr0LOgLnElT1Ook&m=pLW5gSyetfVe_ixG4_u7qKX_VcjIqzN7Ju2BgM2rpQo&s=HUsBVBF_GhNiOk3gqY_m5qZMD-sPmBJ93GE5wd3D5_s&e= and https://urldefense.proofpoint.com/v2/url?u=https-3A__datatracker.ietf.org_doc_review-2Dietf-2Ddmm-2Dondemand-2Dmobility-2D15-2Dtsvart-2Dlc-2Dwesterlund-2D2019-2D01-2D08_&d=DwMFaQ&c=96ZbZZcaMF4w0F4jpN6LZg&r=bqnFROivDo_4iF8Z3R4DyNWKbbMeXr0LOgLnElT1Ook&m=pLW5gSyetfVe_ixG4_u7qKX_VcjIqzN7Ju2BgM2rpQo&s=0YmC_XCAu4_GVYdFi0HxiKaKBpan2COYqBL1mB6bXrY&e= 
    --aaron