[Wish] STUN/TURN server configuration

Sergio Garcia Murillo <sergio.garcia.murillo@gmail.com> Tue, 21 September 2021 10:42 UTC

Return-Path: <sergio.garcia.murillo@gmail.com>
X-Original-To: wish@ietfa.amsl.com
Delivered-To: wish@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D614E3A0A86 for <wish@ietfa.amsl.com>; Tue, 21 Sep 2021 03:42:13 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level:
X-Spam-Status: No, score=-2.097 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, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 TPfte3pJvXvC for <wish@ietfa.amsl.com>; Tue, 21 Sep 2021 03:42:08 -0700 (PDT)
Received: from mail-pg1-x532.google.com (mail-pg1-x532.google.com [IPv6:2607:f8b0:4864:20::532]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id BD7453A0A85 for <wish@ietf.org>; Tue, 21 Sep 2021 03:42:08 -0700 (PDT)
Received: by mail-pg1-x532.google.com with SMTP id h3so20298839pgb.7 for <wish@ietf.org>; Tue, 21 Sep 2021 03:42:08 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:from:date:message-id:subject:to; bh=m007Xs8NIJqSk3S0qR/lvodCRBAqiouo9kLOtmUSKqQ=; b=btVIlCq3dBs1spQZUQZ3tYe6gpfOMWSalXACoUCrJJqbQdG/bWZuFTpFZw+2K1eJVc 8tFvz9SxJSbfC9qPLEPFMwFCVWh7nxQTdhUeSAvsEM6nTJQhOr2yd+LFi89EuysnY53s C1mAnyhb2nSrJZ7jGPyYzSmcOlaAz0CSSEzuL9AjYi00LJD0uo6SPLhzE7FbAit/KEjJ ulgfAGv2V/Df/j++jrSl5wbRZfiB4khL4a5m5aoz5ArW8DuNXZw7yPIP6RENB8xtLVJ7 641USBI1A3OphvFBh6vuTytgOsCcvUXqrGOJ63bL/C/w6DKRtZ/bfwJLbv0PPgeUY/9K RzKQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=m007Xs8NIJqSk3S0qR/lvodCRBAqiouo9kLOtmUSKqQ=; b=Jf2ZErEWkTiDnodTE5QjxDlmQQDRKuKYxjBuokOKWDDfgcbFaWE0HsIwH+UDZAIcJJ lNbACfZ3xbTlpUeGiBEWH9ouKhX9ld4KrQIzl4LpsTAa7DKmBsZUQpacK0mwR2+sI4ZY 9tOgqRdmxSSFvgw9F6C/PH6ny4/IAtT1+X4swwqq2v1FuthkJere6WKNmEFysQ+oYOCA 9iIPfL/N10ip344QnIM1elZdMdbSipmv/THqeVncrmjFQXG5VtkuubC0bPrSlML0sUiI t5scBZT9Pwpjh1hR8Y6JBZJuV6KIAzNoDkMYAjZ+3LEJMjQu6CKBNmNX/npqI6xt0EGX 0l1w==
X-Gm-Message-State: AOAM531O0/1OJ5LRxxpThEDPN4ZIi2qQOyegTvvYpPMcHWmIrMXql9v/ NDs3IaKlm8/4Oa1WWLZ5kh5jjSZIpKMDfeT0lI3CcVQqm90=
X-Google-Smtp-Source: ABdhPJzs2XWmcx98kRz8YdjFhcAmD3oTRVNs18TuZxlcQTZBWL9sUUXDnUknXn/Mw4YPhqrJcMyV4tcv0Mk2JveBiMg=
X-Received: by 2002:a63:f241:: with SMTP id d1mr27552062pgk.424.1632220927336; Tue, 21 Sep 2021 03:42:07 -0700 (PDT)
MIME-Version: 1.0
From: Sergio Garcia Murillo <sergio.garcia.murillo@gmail.com>
Date: Tue, 21 Sep 2021 12:41:56 +0200
Message-ID: <CA+ag07ah6FzfrbMGkULbZ5s1CTUgWqa-ge_c2tjHbEqDwhHSig@mail.gmail.com>
To: WISH List <wish@ietf.org>
Content-Type: multipart/alternative; boundary="00000000000091a45605cc7f0cb0"
Archived-At: <https://mailarchive.ietf.org/arch/msg/wish/mXAsgP27WGTVaX53bWTo9AX18U0>
Subject: [Wish] STUN/TURN server configuration
X-BeenThere: wish@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: WebRTC Ingest Signaling over HTTPS <wish.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/wish>, <mailto:wish-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/wish/>
List-Post: <mailto:wish@ietf.org>
List-Help: <mailto:wish-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/wish>, <mailto:wish-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 21 Sep 2021 10:42:14 -0000

Hi all,

One of the topics not covered yet on the draft is what to do with the
stun/turn server configuration for the whip client.

Ideally, we don't want to have to configure a new set of url credentials in
order to do so, and we definitely want to avoid having to configure them
manually on the client.

The options that we have available are:

1- Retrieving it before the SDP offer is generated and the HTTP PUT is sent:

   1a- Using a well known url based on the domain of the whip endpoint url,
that is if the url of the endpoint is
https://whip.example.org/enpoint/ the url
would be something like
https://whip.example.org/.well-known/ice-server-config as per rfc5785
   1b- Using a prefetch request to the resource url (either an OPTIONS or
GET) to retrieve the url of the turn server configuration
   1c- Using a GET request to the whip resource to retrieve directly the
turn server config


2-Retrieving the info after the SDP offer is generated and  HTTP PUT is
sent. This is in theory supported  by the w3c spec (by updating the pc
configuration via
https://www.w3.org/TR/webrtc/#dom-rtcpeerconnection-setconfiguration) and
according to JSEP (
https://datatracker.ietf.org/doc/html/rfc8829#section-4.1.18) it shouldn't
trigger a ice restart as the ice gathering has not been started. so it is
possible to do the following steps:

 create pc without ice server config
 create offer
 send HTTP PUT with sdp offer
 get response with sdp answer
 retrieve turn server config
 update pc config
 set local description
 set remote description


However, I am not sure if the implementation of the setconfiguration is
available on all browsers and other webrtc implementations. FWIW, chrome
actually requires an ice restart if you update the turn server
configuration regardless of the ice gathering phase.
If we go that route we could either

   2a - return the url for gathering the http config on a Link header in
the 202 response to the HTTP PUT request
   2b - return directly the configuration in a mixed-type body
   2c-  return each turn server url + params each one on a different link
header like :
          Link: turn:turn.example.net;
rel="urn:ietf:params:whip:ice-server"; username="user"; credential:
"myPassword"; credential-type: "password";


I am personally in favor of option 1a in order to reduce roundtrip times,
although I like the elegance of option 2c (even if it could cause problems
to implement)

What are your views?

Best regards
Sergio