Re: [Taps] UDP rendezvous
Michael Welzl <michawe@ifi.uio.no> Mon, 27 April 2020 13:51 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 BE5FC3A0AF3 for <taps@ietfa.amsl.com>; Mon, 27 Apr 2020 06:51:11 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, 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 2bq9jNlUMdgB for <taps@ietfa.amsl.com>; Mon, 27 Apr 2020 06:51:09 -0700 (PDT)
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 ED1F33A0AEF for <taps@ietf.org>; Mon, 27 Apr 2020 06:51:08 -0700 (PDT)
Received: from mail-mx12.uio.no ([129.240.10.84]) by mail-out02.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 1jT4A6-000Ch7-48; Mon, 27 Apr 2020 15:51:06 +0200
Received: from ti0182q160-4479.bb.online.no ([84.202.168.179] helo=[192.168.1.4]) by mail-mx12.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 1jT4A4-0003xs-Sp; Mon, 27 Apr 2020 15:51:06 +0200
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.14\))
From: Michael Welzl <michawe@ifi.uio.no>
In-Reply-To: <dd183000bf697a72768d467722fe6cfdecc4f7db.camel@ericsson.com>
Date: Mon, 27 Apr 2020 15:51:04 +0200
Cc: "csp@csperkins.org" <csp@csperkins.org>, "taps@ietf.org" <taps@ietf.org>
Content-Transfer-Encoding: quoted-printable
Message-Id: <CD5FC614-3E7A-4E67-930D-637AFC0DC30E@ifi.uio.no>
References: <B04764EF-FD10-45A0-9080-0A84C21107C1@ifi.uio.no> <A8590FF8-9905-4942-845B-0F38510D101B@csperkins.org> <05A1D6E3-88A4-4D9D-A482-34210B2E956C@ifi.uio.no> <dd183000bf697a72768d467722fe6cfdecc4f7db.camel@ericsson.com>
To: Magnus Westerlund <magnus.westerlund@ericsson.com>
X-Mailer: Apple Mail (2.3445.104.14)
X-UiO-SPF-Received: Received-SPF: neutral (mail-mx12.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: 85754BC5276B4DB5565787699F30E3FD9D7945A7
Archived-At: <https://mailarchive.ietf.org/arch/msg/taps/ieQwLVHqdPLDCKvNS18kvlhfnI8>
Subject: Re: [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: Mon, 27 Apr 2020 13:51:12 -0000
Hi, Thanks again! I knew that WebRTC plays all these tricks but must admit to never having dug into the ICE details. Regarding “where the WG is in regards to…” - I think Colin’s previous email with the 5 steps is a good summary of what TAPS is intending to do wrt. rendezvous mechanisms. Cheers, Michael > On Apr 27, 2020, at 2:59 PM, Magnus Westerlund <magnus.westerlund@ericsson.com> wrote: > > Hi, > > Michael if you want an example of an API that contains the ICE related > rendezvous aspects it is the WebRTC. https://www.w3.org/TR/webrtc/ > > You will find the ICEserver with configuration information. Note also how > candidates are handled. I would also note the possibility to enable or disable > trickling of candidates. Which is possibly something an application could want > to indicate. I know the ICE parts is only a part of the complete WebRTC API so > there is a lot to wade through here. > > > I would also note that there might be an other aspect of embedding ICE under the > hood is the potential to use this as a method to update the path used between > two peers during an ongoing communication session. There are two takes on this. > Either the more standards compliant way of triggering an ICE restart, which > involved application interaction through a new candidate exchange. > > Or the less so which is to not really terminate ICE. And instead keep your > checklist alive and continously verify what candidate pairs that actually work > and use re-occuring nomination to move the application datagram flow between > working candidate pairs ( > https://datatracker.ietf.org/doc/draft-thatcher-ice-renomination/). I would > recommend avoiding the later, but wanted to mention it for completeness. > > As I haven't been active in TAPS, I would appreciate any pointers to where the > WG is in regards to the need for parameter exchange that need to be done by the > application using the TAPS interface, rather than letting the lower layers > handle that aspect. > > Cheers > > Magnus > > > On Mon, 2020-04-27 at 13:38 +0200, Michael Welzl wrote: >> Hi, >> >> I’m answering this email, but Magnus, consider yourself answered too with a >> big THANK YOU for your thorough explanation! >> >> I agree that we want some (much!) of this functionality “under the hood” if >> possible. And, of course, I agree that we don’t want the application to be >> aware of e.g. UDP specifically if we can avoid it. I think we’re all on the >> same page on that; but I think that, indeed, the text in the API draft needs >> some fixing. >> >> Colin, thank you very much for outlining the 5 steps below: they give a very >> good context for this conversation. So, I answer in line below: >> >>> On Apr 27, 2020, at 12:23 PM, Colin Perkins <csp@csperkins.org> wrote: >>> >>> Hi, >>> >>> This is one of the areas where the drafts likely need expanding, but I think >>> the model is: >>> >>> 1) application configures STUN (and maybe also TURN) local endpoints >>> >>> 2) application calls Resolve() on these, to find server reflexive candidates >> >> These two steps are reflected in the API as it stands, and so this is already >> reasonably clear, I think. IMO, nothing to do here. >> >> >>> 3) application shares these candidates with its peer, via out-of-band means, >>> and receives remote endpoint candidates from the peer >> >> Based on Magnus’ email, I suppose that this *could* be done in standard ways >> with trickle, and hence theoretically put “under the hood” too. >> But, I think that keeping this in the application space for the sake of TAPS >> is quite reasonable. This step is perhaps implicit in the text, but I think >> it’s pretty obvious that it would need to happen. People doing rendezvous will >> have to be aware of this step anyway, so I see no real problem here. >> >> >>> 4) application adds remote endpoints for the peer’s candidates >> >> My first hiccup: I don’t see that this is supported in our current API - how >> would one add remote endpoints? I think, the way we have it, there’s only one >> for each Connection. >> Have I overlooked something? >> >> >>> 5) application calls Rendezvous(), which performs the ICE-style probing to >>> find a working path, based on the candidates, then returns s Connection >> >> THIS would be really good, but it’s not at all how I read the current text. It >> says: >> >> "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.” >> >> My interpretation of this sentence is that Rendezvous doesn’t do much more >> than listen + send something, using the same local ports. For TCP, I would >> have implemented this functionality by just doing an active connect, using a >> pre-configured local port (TCP will retry sending SYNs, and if both sides >> issue this call with the correct ports, I guess it all works out eventually). >> However, from below, it seems to me that such an implementation would be doing >> way too little! >> >> >>> This relies on the Endpoint abstraction supporting STUN, which is maybe >>> implicit in the drafts. >> >> Yes - there is text there about STUN configuration, but nothing about it in >> the Rendezvous text (unless I missed it, apologies if I have!). And it’s not >> just STUN, it’s the ICE-style probing, with various candidates supplied, >> that’s missing. >> >> >>> Also, as usual with TAPS, the application doesn’t say that it wants UDP. It >>> says it wants, e.g., RTP preferably over an unreliable connection, and this >>> higher-level protocool gives the de-framer the ability to distinguish the >>> STUN packets from the data packets. >> >> Okay, I understand this… but what happens if UDP *is* the protocol that is >> available (not e.g. RTP), and the application calls Rendezvous? >> (I guess failing, with a useful error code, is the best choice, then?) >> >> Again, just to be clear, I agree with everything you say here, and I thank you >> (and Magnus) again for explaining it to me! - I just want to get the text >> right. Actually, I was just trying to understand how to implement this call’s >> functionality, and was left puzzled. >> >> Cheers, >> Michael >> >> _______________________________________________ >> Taps mailing list >> Taps@ietf.org >> https://www.ietf.org/mailman/listinfo/taps > -- > Cheers > > Magnus Westerlund > > > ---------------------------------------------------------------------- > Networks, Ericsson Research > ---------------------------------------------------------------------- > Ericsson AB | Phone +46 10 7148287 > Torshamnsgatan 23 | Mobile +46 73 0949079 > SE-164 80 Stockholm, Sweden | mailto: magnus.westerlund@ericsson.com > ---------------------------------------------------------------------- >
- [Taps] UDP rendezvous Michael Welzl
- Re: [Taps] UDP rendezvous Magnus Westerlund
- Re: [Taps] UDP rendezvous Colin Perkins
- Re: [Taps] UDP rendezvous Michael Welzl
- Re: [Taps] UDP rendezvous Colin Perkins
- Re: [Taps] UDP rendezvous Magnus Westerlund
- Re: [Taps] UDP rendezvous Michael Welzl
- Re: [Taps] UDP rendezvous Michael Welzl