Re: [tsvwg] UDP Options API document

"touch@strayalpha.com" <touch@strayalpha.com> Tue, 14 September 2021 19:03 UTC

Return-Path: <touch@strayalpha.com>
X-Original-To: tsvwg@ietfa.amsl.com
Delivered-To: tsvwg@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 03BBC3A2937 for <tsvwg@ietfa.amsl.com>; Tue, 14 Sep 2021 12:03:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.318
X-Spam-Level:
X-Spam-Status: No, score=-1.318 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_NEUTRAL=0.779, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=strayalpha.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 i8ohgTjJV_-Q for <tsvwg@ietfa.amsl.com>; Tue, 14 Sep 2021 12:03:49 -0700 (PDT)
Received: from server217-1.web-hosting.com (server217-1.web-hosting.com [198.54.114.226]) (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 538273A2939 for <tsvwg@ietf.org>; Tue, 14 Sep 2021 12:03:48 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=strayalpha.com; s=default; h=To:References:Message-Id:Cc:Date:In-Reply-To: From:Subject:Mime-Version:Content-Type:Sender:Reply-To: 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=kYT5AaM7ilIzdg0KcNFC5938YDxATHhmgGCHvtwJ83M=; b=uW7nYo+ORyyKBtuttD5piw69AV WUvrNznskJvjf3sl00QWu4Nkg1msTQBK+uKuvdHABMR4yzGdPG9VeeqnyfN6sjr3/IDycRVJQGwuF qF745qwzq+0qRfVYI/B5OEf9x/9tYPFoZhFeyzo4xzZ6GLyffmrGzB+FpULrfoB/ZDViVSVgDDk01 j7TCZt9ZPExqpBD8LgqnqJFVPj1KL/n+c2GDyMaojZ9y2dHKR+x4pAZt6N0XM/SFWYu/8aPZGtQA/ 83YK5Ig1Rf/uNG0PZCj2ROGMhbGnmp+FX9syokv1hebgfPgZwKOn3jYuzrdDxk1i927rVrZnPC6Ez sz9rbl8w==;
Received: from cpe-172-114-237-88.socal.res.rr.com ([172.114.237.88]:64182 helo=smtpclient.apple) by server217.web-hosting.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from <touch@strayalpha.com>) id 1mQDiZ-00EMpg-9L; Tue, 14 Sep 2021 15:03:48 -0400
Content-Type: multipart/alternative; boundary="Apple-Mail=_8702CB31-182B-4CFE-8827-9251897F7C01"
Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.120.0.1.13\))
From: "touch@strayalpha.com" <touch@strayalpha.com>
In-Reply-To: <CACL_3VEPRhAbX1Zxuw-PZTZ_ns9kG0XGQvL+fq1gNDWBuJC1Uw@mail.gmail.com>
Date: Tue, 14 Sep 2021 12:03:40 -0700
Cc: Tom Jones <tom@erg.abdn.ac.uk>, TSVWG <tsvwg@ietf.org>
Message-Id: <65FF24E1-5D59-441A-9563-9D8565BADA1C@strayalpha.com>
References: <20210903173836.GB56008@tom-desk.erg.abdn.ac.uk> <01879F07-2A69-448A-B6E9-CBEE77B7FD2F@strayalpha.com> <CACL_3VEPRhAbX1Zxuw-PZTZ_ns9kG0XGQvL+fq1gNDWBuJC1Uw@mail.gmail.com>
To: "C. M. Heard" <heard@pobox.com>
X-Mailer: Apple Mail (2.3654.120.0.1.13)
X-OutGoing-Spam-Status: No, score=-1.0
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - server217.web-hosting.com
X-AntiAbuse: Original Domain - ietf.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - strayalpha.com
X-Get-Message-Sender-Via: server217.web-hosting.com: authenticated_id: touch@strayalpha.com
X-Authenticated-Sender: server217.web-hosting.com: touch@strayalpha.com
X-Source:
X-Source-Args:
X-Source-Dir:
X-From-Rewrite: unmodified, already matched
Archived-At: <https://mailarchive.ietf.org/arch/msg/tsvwg/INXMMUyOR6VCOCYmrHGl-3zXGk0>
Subject: Re: [tsvwg] UDP Options API document
X-BeenThere: tsvwg@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Transport Area Working Group <tsvwg.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tsvwg>, <mailto:tsvwg-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tsvwg/>
List-Post: <mailto:tsvwg@ietf.org>
List-Help: <mailto:tsvwg-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tsvwg>, <mailto:tsvwg-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 14 Sep 2021 19:03:58 -0000

Hi, Mike,

I’m a bit confused by the note below.

UDP is a datagram service. Whether an implementation supports cached parameters on a per socket-pair basis or not is their decision; the abstract API should not need to address this.

I.e., every parameter of UDP is per message and should be available via a ’sendmsg()/recvmesg()’ command (or equivalent). Every parameter can potentially be cached into the OS, with OS defaults, overrides on a OS-wide or per-connection basis, etc. - as desired, but that’s outside the scope of a protocol. That’s for the manual page for that OS.

The UDP service is:
	send a message
	(with options) with the following options:

Or 
	receive a message
	(with options) which returns an indicator of the options received

Everything else, including per-OS, per-socket, etc. configurations, etc - including decisions on how to override UDP option defaults - are implementation optimizations and should never be part of an abstract API.

If there’s something beyond that you’re expecting, can you give us a simple example? Or are you thinking more of an OS manual page than a protocol spec?

Joe

—
Joe Touch, temporal epistemologist
www.strayalpha.com

> On Sep 14, 2021, at 11:19 AM, C. M. Heard <heard@pobox.com> wrote:
> 
> On Fri, Sep 3, 2021 at 10:35 AM Tom Jones wrote:
> It was raised today during the interim (I think by Carsten) that a clear
> API description is very important for real world adoption of a protocol.
> Michael Tuexen added that during the original SCTP standardisation a
> separate API draft made writing portable applications much easier.
> 
> Let me start the discussion, should we provide a separate draft for UDP
> Options API or should this work happen inside the UDP Options draft?
> 
> I would like to see thorough and clear documentation in the base specification of the ***services*** that are provided by UDP options.to <http://options.to/> the application layer (or the higher layer protocol running on top of UDP).
> 
> 
> On Sat, Sep 4, 2021 at 9:35 AM Joe Touch replied:
> As I mentioned during the meeting, there’s already an abstract API in the spirit of TCP's in section 8 of the draft, with a real-world example in Appendix A based on a preliminary implementation.
> 
> It’s been there since draft-touch-tsvwg-udp-options-06, dated March 27, 2017.
> 
> I don’t recall anyone commenting on that yet, though.
> 
> I took Tom's advice and read both RFC 8303 ("On the Usage of Transport Features Provided by IETF Transport Protocols") and RFC 8304 ("Transport Features of the User Datagram Protocol (UDP) and Lightweight UDP (UDP-Lite)"). RFC 8303 (and RFC 8304) relied on existing, documented application interface requirements and abstract APIs, and that Tom is proposing to do something similar for UDP options, and asks whether we should do that in the base spec or as a separate document. Note that RFC 8303, despite its title, deals substantively only with connection-oriented transport protocols, and simply references RFC 8304 in its sections on connectionless transport protocols.
> 
> I also heeded Joe's admonition to read the abstract API in the current draft (I indeed have not paid attention to it or commented on it up to now).
> 
> My sense is that the existing abstract API is insufficient to serve as a basis for something like an extended version of RFC 8304. But I also feel that RFC 8304 somewhat misses the mark, since it does not adequately distinguish what primitives should actually be per-datagram (i.e., figuring as input parameters to send(), sendto(), or sendmsg() and output parameters from recv(), recvfrom(), and recvmsg() or the like) versus what things should be per-socket (and controlled by setsockopt() or the like).  I would really like to see a complete laundry list written down, and I will take a stab at it if I am asked.
> 
> Thanks,
> 
> Mike Heard