Re: [Wish] New draft version draft-murillo-whip-01

Sergio Garcia Murillo <sergio.garcia.murillo@gmail.com> Fri, 28 May 2021 13:34 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 91F4F3A290B for <wish@ietfa.amsl.com>; Fri, 28 May 2021 06:34:39 -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, RCVD_IN_DNSWL_NONE=-0.0001, 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 6eqPF_utQorc for <wish@ietfa.amsl.com>; Fri, 28 May 2021 06:34:34 -0700 (PDT)
Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com [IPv6:2a00:1450:4864:20::42c]) (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 6537B3A0BB2 for <wish@ietf.org>; Fri, 28 May 2021 06:34:34 -0700 (PDT)
Received: by mail-wr1-x42c.google.com with SMTP id c3so3319864wrp.8 for <wish@ietf.org>; Fri, 28 May 2021 06:34:34 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=bRGtUEuxFFvAlxk/tVQ68L8IpZhjjdJHJp5/ssP8ano=; b=ah9/+YRDUaVEAbuCanvH2G/ZkL3jsviKTwFpQvdcNL8mKF7L71e+TGb0iqCnNG2fg/ sGPQI8aQ1R0EFM2QSO32VJ/14NMe25B2zQY16fkZT83azH9phvOHAHVw+n3fCiFlAdKa wvWnAnp3poKHlmJLF7YPWa0UyIsi5BcTcIDoXnss5fg07d4tAVjDKh6qmVaSQ5UDnnzZ inJEvih0Uy7cElbNbpbXEwnShC6Ja3/nSid/WvaJub6nObHkRYE+q5QG9cMigQSkV49F VhkAnNgb6i2xlkw3qUqY+o5yhOQATm98reD1DPUmo5VbZuX3MI/GAv70q++Zps/jLceS ILdQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=bRGtUEuxFFvAlxk/tVQ68L8IpZhjjdJHJp5/ssP8ano=; b=ITqs+BJBvhSpxs5UJwYTnqygUq6YJMPGtVTCajy6r5Hb2BxZH6ZD6jo2Sy2PwNJkyV r+GSK7kJVxVMFGDsop0r57gCd4nol/ttMkKITq3Ug++zc9cL0O6SMjm/ELg60baoyY99 1H7dIRaGgVPJisioKiDGSrwQaXGAAoJ9oxgBRoSvdPVS/hdUNlu7q8visz40BfuLcKoN ARLdoivvGHWHOZzuIKtjghMx9qH2mc80LTDmDlNb8TfNilVAb5PgWCpydqmxu7AOcu/E cSpXnJ5oIJDtMiL7QMtvH6GAggPBy6ZZAh5d139a6nV/45zOe6WYHQjtMlyTZujGhw80 Pcug==
X-Gm-Message-State: AOAM531FuwvG3F8afUkJEsVPzlPhG7n669f056kOr2h7qATQrrd2jEvh a/sN8YEJUOWcsCVQ+ruSsMY9ALbNgyivL6Q7v9Y=
X-Google-Smtp-Source: ABdhPJwW2/U9hN4rLkgTr6rTvd/x1DUvd5I6AIV/OMKMOeSCd1ouvhdDUju5+QDl7MpoQaugYVKrQXpYOwK/eLP6Q9c=
X-Received: by 2002:a5d:6109:: with SMTP id v9mr8952168wrt.0.1622208871392; Fri, 28 May 2021 06:34:31 -0700 (PDT)
MIME-Version: 1.0
References: <CA+ag07aArqZfdNEDLvm-T1+RN7Xf8PzU0yLoVXdjJbyAHCTZ-Q@mail.gmail.com> <87mtsfni5p.wl-jch@irif.fr>
In-Reply-To: <87mtsfni5p.wl-jch@irif.fr>
From: Sergio Garcia Murillo <sergio.garcia.murillo@gmail.com>
Date: Fri, 28 May 2021 15:34:20 +0200
Message-ID: <CA+ag07axaTxz0hRkZfpMZUYMWmFeYmHrv7bb8z7JfxbXTpF46w@mail.gmail.com>
To: Juliusz Chroboczek <jch@irif.fr>
Cc: wish@ietf.org
Content-Type: multipart/alternative; boundary="00000000000087ea4005c363efce"
Archived-At: <https://mailarchive.ietf.org/arch/msg/wish/wBoT_WWZDkgBWuWcXdkX2Z_u4Tc>
Subject: Re: [Wish] New draft version draft-murillo-whip-01
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: Fri, 28 May 2021 13:34:40 -0000

El vie, 28 may 2021 a las 14:43, Juliusz Chroboczek (<jch@irif.fr>)
escribió:

> > https://datatracker.ietf.org/doc/html/draft-murillo-whip-01
>
> Thanks.  Is anyone implementing a client to test against?
>

Implementing a WHIP client is trivially simple in web, you can check an
example here for the previous version:

https://medooze.medium.com/whip-webrtc-meets-the-broadcasting-world-86772eba8ae7


>
> I'm a little confused about how multiple flows are handled.  Is a single
> WHIP endpoint able to multiplex multiple flows, or does one WHIP endpoint
> correspond to exactly one flow?  If the former, how are ICE restarts and
> ICE requests correlated with the flow?  (If the latter, some use cases will
> require a dynamic allocation subprotocol.)
>

A WHIP endpoint is an entity able to receive the HTTP POST request from a
client. The URL may be a "factory" one returning an unique url on the
Location header or have an unique URL for each stream. It is up to the
server implementation.

In any way, the WHIP resource URL must uniquely identify the flow.


>
> > The initial offer by the WHIP client MAY [...] only contain local
> > candidates or even an empty list of candidates.
>
> > The WHIP endpoint SDP answer SHALL contain the full list of ICE
> > candidates publicly accessible of the media server.
>
> If I read this correctly, you're defining a new, asymmetric form of ICE:
> the server collects all local candidates, then allows the client to do
> Trickle ICE.  I think it's a good idea, but unless I'm mistaken, that's
> a new mode of operation for ICE, one that I haven't seen described in any
> other document.
>

That would be the same as having a normal webrtc client with no STUN/TURN
servers configured against one that have them, right?


>
> Have you actually implemented that?  How much surgery to your ICE stack
> was required?  In short, how painful was it?
>
>
I do ICE lite on servers, so I had to do nothing.. :)

In case you need to do full ice on the server and you don't have a way of
statically specifying the public ip address or requires collecting TURN
relay candidates, your server will have to delay sending the 201 response
with the SDP answer when all the candidates are collected.



> On a related note, what happens if the client is on a restrictive network
> that doesn't allow UDP?  Are you assuming it has learned the address of
> a TURN server out of band, or are you relying on passive TCP candidates?
> (Either would be fine, but it needs to be spelled out.)
>

Clients can trickle ICE normally. Anyway, on my implementation, I don't
even require to exchange candidates with the server in that case as the
server will learn the new candidates from the STUN requests sent by the
client.


> > The WHIP client MAY perform trickle ICE or an ICE restarts [RFC8863] by
> > sending a HTTP PATCH request
>
> Why the uncommon request method?  I find the use of PATCH here suprising.
>

That is the semantically correct method for updating a resource in HTTP:
https://datatracker.ietf.org/doc/html/rfc5789#page-4

2 <https://datatracker.ietf.org/doc/html/rfc5789#section-2>.  The PATCH Method

   The PATCH method requests that a set of changes described in the
   request entity be applied to the resource identified by the Request-
   URI.  The set of changes is represented in a format called a "patch
   document" identified by a media type



>
> > A WHIP resource MAY not support either trickle ICE (i.e. ICE lite media
> > servers) or ICE restart,
>
> Does the client know beforehand whether that's the case?  For ICE
> restarts, that's not a problem (you just attempt an ICE restart, and if
> that fails, you tear down the flow and start a new one).
>
> For Trickle ICE, on the other hand, the client needs to know beforehand
> whether it can send an incomplete offer and then collect candidates or
> whether it must send an offer with a full set of candidates.
>
> Perhaps we could require that a server should reject an offer with
> ice-options:trickle unless it can accept further ICE candidates?  That way
> a client can fallback to non-trickle operation straight away.
>
>
 I would say that a server should be either able to work in full ice, or
not require the trickle candidate exchange at all to not have to ask the
client to implement a fallback mode. In this case, the server may just
reject the PATCH request without any consecuence.

> Unlike [RFC5763] a WHIP client MAY use a setup attribute value of
> > setup:active in the SDP offer, in which case the WHIP endpoint MUST
> > use a setup attribute value of setup:passive in the SDP answer.
>
> I assume that is to simplify client implementations.  A short rationale
> would be welcome.
>

Yes, that's the rationale.

>
> > Authentication and authorization is supported by the Authorization HTTP
> > header with a bearer token as per [RFC6750].
>
> Is that a MUST?  What if my server doesn't do OAuth2, do I need to
> implement it just to do WISH?  Or can I stick to HTTP Basic?
>

I don't think we should allow HTTP basic usage. Anyway, I am open to
discuss it.

Best regards
Sergio