[Taps] UDP rendezvous

Michael Welzl <michawe@ifi.uio.no> Sat, 25 April 2020 12:44 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 BED423A0D40 for <taps@ietfa.amsl.com>; Sat, 25 Apr 2020 05:44:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level:
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_PASS=-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 GsKtMMuYGLim for <taps@ietfa.amsl.com>; Sat, 25 Apr 2020 05:44:12 -0700 (PDT)
Received: from mail-out01.uio.no (mail-out01.uio.no [IPv6:2001:700:100:10::50]) (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 906583A0D3D for <taps@ietf.org>; Sat, 25 Apr 2020 05:44:11 -0700 (PDT)
Received: from mail-mx11.uio.no ([129.240.10.83]) by mail-out01.uio.no with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.93.0.4) (envelope-from <michawe@ifi.uio.no>) id 1jSKAD-0005BC-FQ for taps@ietf.org; Sat, 25 Apr 2020 14:44:09 +0200
Received: from ti0182q160-4479.bb.online.no ([84.202.168.179] helo=[192.168.1.4]) by mail-mx11.uio.no with esmtpsa (TLS1.2:ECDHE-RSA-AES256-GCM-SHA384:256) user michawe (Exim 4.93.0.4) (envelope-from <michawe@ifi.uio.no>) id 1jSKAC-0007n2-Ob for taps@ietf.org; Sat, 25 Apr 2020 14:44:09 +0200
From: Michael Welzl <michawe@ifi.uio.no>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\))
Message-Id: <B04764EF-FD10-45A0-9080-0A84C21107C1@ifi.uio.no>
Date: Sat, 25 Apr 2020 14:44:07 +0200
To: "taps@ietf.org" <taps@ietf.org>
X-Mailer: Apple Mail (2.3445.104.11)
X-UiO-SPF-Received: Received-SPF: neutral (mail-mx11.uio.no: 84.202.168.179 is neither permitted nor denied by domain of ifi.uio.no) client-ip=84.202.168.179; envelope-from=michawe@ifi.uio.no; helo=[192.168.1.4];
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: 356F89671C840F2BD962B988701983F8EC0885C8
Archived-At: <https://mailarchive.ietf.org/arch/msg/taps/B5iPOvreJ49aSINAqrM04jNNOVk>
Subject: [Taps] UDP rendezvous
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: Sat, 25 Apr 2020 12:44:15 -0000

Dear all,

I know way too little about rendezvous mechanisms, so I may get this completely wrong - please bear with me!
It may be that I describe an issue that’s a non-issue. But, if I do understand this right, maybe that’s something which needs fixing?

Ok, here it goes…

Our current Rendezvous text in the API draft says the following:
"The Rendezvous() Action causes the Preconnection to listen on the Local Endpoint for an incoming Connection from the Remote Endpoint, while simultaneously trying to establish a Connection from the Local Endpoint to the Remote Endpoint. This corresponds to a TCP simultaneous open, for example.”

Now, if an application chooses unreliable data transmission, it may get SCTP with partial reliability, or it may (in the future) get QUIC with datagrams, or whatever…  and then, the protocol may be able to do what’s needed (something similar to a simultaneous open).

However, in case of UDP:
- Listening is quite okay,
- “simultaneously trying to establish a Connection” really means nothing - no packet will be sent.

I believe that applications doing this over UDP will implement their own “SYN”-type signal for this - but then it’s up to the application, which, over TAPS, would need to:
- create a passive connection,
- send a Message from that same connection, i.e. using the same local address and port (I believe?) - which is a matter of configuring the local endpoint, and doable if the underlying transport system can pull it off. I think there’s nothing in our API preventing an application from doing this.

If all of the above is correct, the problem that I see is that an application may ask for unreliable transmission, and then have one case in which calling “Rendezvous” is the right thing to do, and another case in which it is not - so it would need to be able to distinguish between these two cases: is it a protocol with Rendezvous-capability, or do I have to do it myself.  Maybe, in case of UDP, the call to Rendezvous should just fail, and our text should say that Rendezvous failing would inform the application that it would have to implement it by itself, by issuing Listen and then sending a Message to the peer.

Thoughts? Am I completely off track, or is this something that needs a text fix?

Cheers,
Michael