[Taps] TAPS and higher-level APIs

Michael Welzl <michawe@ifi.uio.no> Wed, 15 November 2023 08:25 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 21190C15106E for <taps@ietfa.amsl.com>; Wed, 15 Nov 2023 00:25:51 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.007
X-Spam-Level:
X-Spam-Status: No, score=-7.007 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=ifi.uio.no
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id bqPbuTYBNZu9 for <taps@ietfa.amsl.com>; Wed, 15 Nov 2023 00:25:45 -0800 (PST)
Received: from mail-out02.uio.no (mail-out02.uio.no [IPv6:2001:700:100:8210::71]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 32EA0C15152E for <taps@ietf.org>; Wed, 15 Nov 2023 00:25:44 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=ifi.uio.no; s=key2309; h=Message-Id:In-Reply-To:To:References:Date:Subject:Mime-Version: Content-Type:From:Sender:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=6hRFjMWIABXDt+2P6gGQJ1ELGHWyD3EXfUKuhI0UiOk=; b=GL+Gkq+lP6Y6YXTDxgxDTu2WfX eKsjYGQs6mHDabt4A9Y8Cj/1+ur9CRfZdvkV/6jIC2SiDktPn6LwvQHq50fmgDd5AYv//6VBZ3+3R 6sQv0wOzbisrluhMNY5ChfTITOJAjqqHc2Xx99KowmsbseHUvayq9YjsL+Ge1iIBGiqFcmx8yKicD ds+kJ7FEKERFVNkSRxyZHNXeUouXa3vgHFNRpTnjlieAk3uWCGGjCIHyG9Hv2/NpQCr4ZmFO5B9Kn 4AncIHrLocXuaRgyhzXvyPOPrYIFnpVWf09nZIg3hkWwIMkRF/UaMwic4h405aJjAcyICGs2Ql1sQ yUQqp6QQ==;
Received: from mail-mx02.uio.no ([129.240.10.43]) by mail-out02.uio.no with esmtps (TLS1.2) tls TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (Exim 4.96.2) (envelope-from <michawe@ifi.uio.no>) id 1r3BDS-00Ddg7-1y for taps@ietf.org; Wed, 15 Nov 2023 09:25:42 +0100
Received: from 91.141.53.7.wireless.dyn.drei.com ([91.141.53.7] helo=smtpclient.apple) by mail-mx02.uio.no with esmtpsa (TLS1.2:ECDHE-ECDSA-AES256-GCM-SHA384:256) user michawe (Exim 4.96.2) (envelope-from <michawe@ifi.uio.no>) id 1r3BDR-00054h-0J for taps@ietf.org; Wed, 15 Nov 2023 09:25:42 +0100
From: Michael Welzl <michawe@ifi.uio.no>
Content-Type: multipart/alternative; boundary="Apple-Mail=_B87F84A8-75DD-42FB-AE9C-454C6FED4C86"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.120.41.1.1\))
Date: Wed, 15 Nov 2023 09:25:34 +0100
References: <CAEh=tccp05Z+fUTfO5yLbzPeA2YO+zAePk1WeJwe9Je4mmtSHw@mail.gmail.com> <CAD62q9XKWKoZxbpWgN5dDmpbSqCD-YJnvJDD5+yGnzgXQMykEA@mail.gmail.com> <8F18ED8E-20FD-4285-AD7D-5E4877214E00@ifi.uio.no>
To: taps WG <taps@ietf.org>
In-Reply-To: <8F18ED8E-20FD-4285-AD7D-5E4877214E00@ifi.uio.no>
Message-Id: <E956A8AD-5077-4090-AE64-1B56445CA456@ifi.uio.no>
X-Mailer: Apple Mail (2.3696.120.41.1.1)
X-UiO-SPF-Received: Received-SPF: neutral (mail-mx02.uio.no: 91.141.53.7 is neither permitted nor denied by domain of ifi.uio.no) client-ip=91.141.53.7; envelope-from=michawe@ifi.uio.no; helo=smtpclient.apple;
X-UiO-Spam-info: not spam, SpamAssassin (score=-5.0, required=5.0, autolearn=disabled, HTML_MESSAGE=0.001, TVD_RCVD_IP=0.001, T_SCC_BODY_TEXT_LINE=-0.01, UIO_MAIL_IS_INTERNAL=-5)
X-UiO-Scanned: 3DBEC8A6CB2A2D743B7AA0F41D7E70C045CB9C2A
X-UiOonly: AEAC85966D610684A187E26E7FD8064FB56C5AD2
Archived-At: <https://mailarchive.ietf.org/arch/msg/taps/su1inSc5FOAu0f8jr1cphmlM9Gk>
Subject: [Taps] TAPS and higher-level APIs
X-BeenThere: taps@ietf.org
X-Mailman-Version: 2.1.39
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: Wed, 15 Nov 2023 08:25:51 -0000

Dear all,

Looking at this:

> On Nov 13, 2023, at 10:24 PM, Michael Welzl <michawe@ifi.uio.no> wrote:
> 
> +1 … thanks a whole lot to everyone, it’s been a fun ride!
> 
> For some nostalgia, more detailed history is here:  https://sites.google.com/site/transportprotocolservices/home <https://sites.google.com/site/transportprotocolservices/home>
… reminded me of something, and I think that now is perhaps a good moment to share this thought.  This should be more useful than nostalgia - it’s a note for the researchers out there: I think that in a post-TAPS world, we still have a big hole that needs filling (and it’s probably not in scope of the IETF). In my opinion, this hole is a low-hanging-fruit for researchers who are interested in this general space.

Here it is:

One of the major arguments against TAPS, back when we started this effort, was: “you want to change the socket API, but nobody writes applications against the socket API anymore”.
Well, one has to start somewhere, and sockets sit below the middleware or library that offers these APIs. I think we had enough reasons to start the effort - but the point is still valid: many applications *are* written over REST, or pub-sub, or what have you, and today won’t care much about TAPS services.

When thinking about how to combine such middleware layers with TAPS, there are the following possibilities:
1) the application is unchanged, the middleware or library below it uses TAPS, and somehow, some benefits arise (e.g., from dynamically selecting QUIC or TCP). Browsers do that today; other middleware layers could do it too. This would yield some benefits, but not necessarily everything.
2) the higher-layer API is changed too: many of the services that TAPS applications choose are truly related to the *application*, and hard or impossible for a middleware layer to “guess” - e.g., we have priorities between defined groups of Connections, a need for reliability with time limits, various services that translate into a DSCP choice, telling the API about bounds on the send and receive rate, control over checksums, ….

What would be needed, to make use of TAPS in such a scenario, is to take a decision, per middleware layer:
a) which of the TAPS services are best implemented transparently to the application, i.e. in the middleware, without changing the API that is being offered,
b) which services should be offered in the higher-level API,
c) which services should be ignored.

Let me get back to why the URL above was a reminder: at the BoF at IETF-89 in London, Martin Sustrik, who created the well-known ZeroMQ pub-sub middleware, gave a presentation on “transport agnostic middleware”. Here are the slides:
https://www.ietf.org/proceedings/89/slides/slides-89-taps-0.pdf <https://www.ietf.org/proceedings/89/slides/slides-89-taps-0.pdf>
We also have the conversation after this presentation in the minutes of the BoF, IMO this is worth reading:  https://www.ietf.org/proceedings/89/minutes/minutes-89-taps <https://www.ietf.org/proceedings/89/minutes/minutes-89-taps>
A part of his point was that pub-sub doesn’t need (or even want) 100% reliability - he had this example of distributing data where one subscriber is a small trading shop somewhere in Malaysia, and the distributor doesn’t want to wait for that small shop to pull the data. I believe that pub-sub middlewares today probably implement that sort of unreliability (or, rather: timed reliability) on top of the socket API… which is probably just less efficient than telling the socket API about it.

I got in touch with Martin back then because his interest in middleware + transport was obvious from another library he was working on at the time: nanomsg ( https://nanomsg.org/ <https://nanomsg.org/> ), meant to run over SCTP.

Anyway, the pub-sub case he talked about is just one example out of many that probably exist within pub-sub, and in other communication patterns.  My hope is that someone picks this up and thinks ahead, on: what can we do now, to let applications using higher layer APIs benefit from TAPS?

Cheers,
Michael