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

Adam Roach <adam@nostrum.com> Thu, 27 May 2021 21:37 UTC

Return-Path: <adam@nostrum.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 498173A1438 for <wish@ietfa.amsl.com>; Thu, 27 May 2021 14:37:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.079
X-Spam-Level:
X-Spam-Status: No, score=-2.079 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, NICE_REPLY_A=-0.001, T_SPF_HELO_PERMERROR=0.01, T_SPF_PERMERROR=0.01, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=nostrum.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 g-2y6EBi-xZg for <wish@ietfa.amsl.com>; Thu, 27 May 2021 14:37:40 -0700 (PDT)
Received: from nostrum.com (raven-v6.nostrum.com [IPv6:2001:470:d:1130::1]) (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 58B453A1435 for <wish@ietf.org>; Thu, 27 May 2021 14:37:40 -0700 (PDT)
Received: from Zephyrus.local (76-218-40-253.lightspeed.dllstx.sbcglobal.net [76.218.40.253]) (authenticated bits=0) by nostrum.com (8.16.1/8.16.1) with ESMTPSA id 14RLbZXT080267 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO); Thu, 27 May 2021 16:37:35 -0500 (CDT) (envelope-from adam@nostrum.com)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=nostrum.com; s=default; t=1622151456; bh=Eow2vbgy10+QsiJGuTTSHOEj89tmg/cFG0ZhBEfXvRA=; h=Subject:To:References:From:Date:In-Reply-To; b=DPHr5xx2JR8ZtccQzxSYZ3uI9b83udL9P8nAxE++W60pvp4i9UnzSZijeXVOv5t9+ Ev+XhjSgJJA2qDHtGtXpwlfnuZVVQq4EdUdlX7aC+rmqLL81C2vT452r6jOb+Ockto El3MhBanUZhXbJaIv/BJVJr/UKfnStQVorryXwCg=
X-Authentication-Warning: raven.nostrum.com: Host 76-218-40-253.lightspeed.dllstx.sbcglobal.net [76.218.40.253] claimed to be Zephyrus.local
To: Sergio Garcia Murillo <sergio.garcia.murillo@gmail.com>, wish@ietf.org
References: <CA+ag07aArqZfdNEDLvm-T1+RN7Xf8PzU0yLoVXdjJbyAHCTZ-Q@mail.gmail.com>
From: Adam Roach <adam@nostrum.com>
Message-ID: <e68725e0-aebe-a5c6-b5da-1b763a98560b@nostrum.com>
Date: Thu, 27 May 2021 16:37:29 -0500
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:68.0) Gecko/20100101 Thunderbird/68.11.0
MIME-Version: 1.0
In-Reply-To: <CA+ag07aArqZfdNEDLvm-T1+RN7Xf8PzU0yLoVXdjJbyAHCTZ-Q@mail.gmail.com>
Content-Type: multipart/alternative; boundary="------------EF696E74BB4C7F5D3426308C"
Content-Language: en-US
Archived-At: <https://mailarchive.ietf.org/arch/msg/wish/ixj9EkPQqZKCWcB_VFaN3TvM7lY>
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: Thu, 27 May 2021 21:37:53 -0000

Thanks for the new version, Sergio!

I apologize for being somewhat absent since our March meeting. I had a 
partially-typed-up summary of issues and resolutions started, but had to 
work on some different priorities for a couple of months. I'll go over 
the items that I had notes for from our last set of conversations below, 
along with comments and proposals. In general, I really like all of the 
changes to the draft.

----

Item 1: SVC and Simulcast. There are basically three questions here: (1) 
does the protocol need to support SVC and simulcast; and (2) are clients 
required to support SVC and simulcast, and (3) are servers required to 
support SC and simulcast.

My suggestion for a path forward is:

- Yes, the protocol needs to support these features, and will 
informatively cite RFC 8853 and RFC 6190 as the means for doing so.

- No, clients are not required to support these mechanisms, and will use 
the procedures in RFC 8853 §5.3 and RFC 6190 §7.2.2 to negotiate whether 
they will do so.

- No, servers are not required to support these mechanisms, and will use 
the same procedures as clients to negotiate their support.

----

Item 2: Signaling within a session

The new proposal in the document sends the initial offer in a POST, and 
the server replies with a 201 that contains an answer in the body, and 
contains a link corresponding to the created session in a "Location" 
header field. I've poked around and convinced myself that this is a 
perfectly good use of 201, and that it gets the O/A exchange completed 
in a single transaction, and so I support the approach.

----

Item 3: ICE Trickle & Restart

The new proposal in the document specifies the use of PATCH with 
application/sdpfrag for both trickle and restart.

I really like the ability for the client to initiate restart, BTW, as it 
allows for transition between, e.g., mobile networks and WiFi for mobile 
clients, so this is a very important addition for me.

This proposed mechanism looks perfectly fine to me, although it comes 
with the caveat that this approach only allows the client to trickle 
candidates, and only allows the client to request an ICE restart.

For the trickle case, I think this is okay: in the vast majority of the 
cases, the server will not need to gather candidates and will simply be 
using host candidates. Even in the unlikely case that the server needs 
to gather candidates, this approach at least allows client and server 
collection to take place in parallel.

For the restart case, this requires the client to be completely 
responsible for detecting and repairing failed ICE connections. Since 
there is no media flowing from the server to the client, this means that 
the client will need to wait some multiple of the RTCP transmission 
interval before it can determine that the connection is no longer 
working -- in practice, this means it will take on the order of 5 to 20 
seconds to perform such detection and trigger a restart. This opens up a 
number of options:

(a) Live with this situation
(b) Specify something at the media level, such as a faster cadence for 
RTCP RR packet transmission from the network to the client so detection 
can take place faster
(c) Introduce a two-way channel for server-to-client communications

I gather that (c) remains unpopular due to its complexity. I'm okay with 
both (a) and (b), with a slight preference for something along the lines 
of (b) -- largely because users will consider the system to be 
completely failed long before client detection if we go with (a).

----

Item 4: Session Termination

The current draft supports this through the use of a DELETE message sent 
to the session endpoint. This approach seems quite sensible, and it 
allows the signaling layer to perform swift resource cleanup in the 
sunny-day case.

As with the ICE signaling above, this approach means that servers cannot 
initiate session termination on the signaling layer. I would propose 
that we add explicit text that specifies that network-initiated teardown 
can be performed by the network sending RTCP BYE packet(s) to the 
client. The client would be responsible for then initiating a DELETE 
operation on the signaling layer (which gives the network confirmation 
that the client is aware of the session termination, and has had the 
opportunity to notify the user).

----

Item 5: Heartbeating

This proposal does not include any means of signaling-level detection of 
client-side session failure (e.g., the client loses a network connection 
or crashes). Based on previous conversations about the intention of 
media channels potentially surviving a signaling-level failure, I gather 
that this is considered a feature rather than an omission.

After some internal discussion, I'm okay with this, even if it isn't my 
preferred approach. However, if the idea here is that media can survive 
independently of session state, then I'd like to also see a (required) 
client-to-network RTCP BYE packet sent whenever a session is terminated. 
I propose that this would happen in addition to the DELETE operation, 
not instead of it.

----

Item 6: Extensibility

This proposal does not have any defined extension points. The operations 
performed on the session resource are mapped onto HTTP methods, and the 
currently proposed methods have a good semantic match to the operations 
that they correspond to. What I would propose is:

(1) The base WHIP document does not address extensibility except for a 
statement that GET operations on the created resource URL (the one that 
we get in the "Location" header field) are reserved for future 
extensibility (this means that unextended servers will need to return a 
405 response to GET on the resource);

(2) Separate from the specification of the base WHIP document, we create 
a new document that discusses how to use GET to bootstrap protocol 
extensions. I have ideas about how to do this, but would like to make 
progress on the core protocol before we start those discussions.

/a

On 5/19/21 14:43, Sergio Garcia Murillo wrote:
> Hi all,
>
> I have just published a new version of the whip draft ( 
> https://datatracker.ietf.org/doc/html/draft-murillo-whip-01) with the 
> updated I outlined in a previous email a while back:
>
> - Return a resource URL in the response to the HTTP POST with the SDP O/A.
> - Allow trickle ICE and ICE restarts via HTTP PATCH with an 
> application/trickle-ice-sdpfrag 
> <https://www.iana.org/assignments/media-types/application/trickle-ice-sdpfrag> body 
> to the resource URL.
> - Allow to explicitly terminate the session by the WHIP client by 
> sending a HTTP DELETE to the resource URL.
>
> Best regards
> Sergio
>