Re: [Wish] WHIP enhancements
Adam Roach <adam@nostrum.com> Thu, 25 February 2021 17:29 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 CECDD3A1D3C
for <wish@ietfa.amsl.com>; Thu, 25 Feb 2021 09:29:59 -0800 (PST)
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 JUYuNQ8N0BAO for <wish@ietfa.amsl.com>;
Thu, 25 Feb 2021 09:29:56 -0800 (PST)
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 7539A3A17F3
for <wish@ietf.org>; Thu, 25 Feb 2021 09:29:56 -0800 (PST)
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 11PHTnUq092682
(version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO);
Thu, 25 Feb 2021 11:29:50 -0600 (CST)
(envelope-from adam@nostrum.com)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=nostrum.com;
s=default; t=1614274191;
bh=q5yaHmbzsvfYFW5CxFeFUJaV/Z8N3Q/F0S+Sf0FMUns=;
h=Subject:To:Cc:References:From:Date:In-Reply-To;
b=r8QmcJaNgDcAT2VQO6o/s/TIy7haLRe+8j9exqeKJE0qye1RIgn8mtrwGAhyrZElE
CFOUJzdTewQbPN45eAVLezDSeL5Gqkrbw05GS4q8lrZ0d9AgHu8Wq0E9ijx5zrJVl7
lT+THWj79mj8f3Nm6+UaunZR1Wxkroa0blfTeefY=
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>
Cc: "wish@ietf.org" <wish@ietf.org>
References: <92fd1a3f-06a3-3197-dde0-18270b62410c@nostrum.com>
<CA+ag07Y0pZJ5YHtin1Y6X0bOGkYqGOanCaNiM42VFYwXYB6iSQ@mail.gmail.com>
<a6184cd1-361d-f9aa-acd4-7586c6ed9006@nostrum.com>
<CA+ag07a-LCvGbs+8iOyrwCXhoWigoaBiDhnK-Taad7bcYFZgHg@mail.gmail.com>
From: Adam Roach <adam@nostrum.com>
Message-ID: <ff1b77c8-d190-22c1-a6d8-eb6e95e700a8@nostrum.com>
Date: Thu, 25 Feb 2021 11:29:44 -0600
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+ag07a-LCvGbs+8iOyrwCXhoWigoaBiDhnK-Taad7bcYFZgHg@mail.gmail.com>
Content-Type: multipart/alternative;
boundary="------------575E608D10876A0B97B41CB1"
Content-Language: en-US
Archived-At: <https://mailarchive.ietf.org/arch/msg/wish/1UNH39JJljGsJYvPPjeaIxm_8xs>
Subject: Re: [Wish] WHIP enhancements
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, 25 Feb 2021 17:30:00 -0000
On 2/25/21 02:52, Sergio Garcia Murillo wrote: > Hi Adam, > > Comments inline > > El jue, 25 feb 2021 a las 0:25, Adam Roach (<adam@nostrum.com > <mailto:adam@nostrum.com>>) escribió: > > Thanks for the quick review of my proposal! Comments inline below. > > > On 2/24/21 02:14, Sergio Garcia Murillo wrote: > > The need for a way to explicitly terminate the session was > already by > > several people, so I think we should definitely include it. > > > > https://github.com/murillo128/webrtc-http-ingest-protocol/issues/2 > > > > However, I would be against optionalities, as it makes the > testing and > > interoperability much more difficult. > > > The scheme I'm looking for here is one of a very small set of core > functions, plus optional fields that are ignored if an implementation > doesn't understand them. To test interop, all that would be > necessary is > to check the proper functioning of the core functions (along with, I > suppose, cursory checks that unknown fields are correctly ignored). > > > My main concern about this is that most people will only implement the > core package and don't do the optional part. > So I would prefer to have as less optionality as possible, especially > if the optional functionality is something that may be required by > some people in order to make it work. To be clear, what I'm looking for here primarily is well-defined extension points. I'm happy leaving the actual optional extensions for later. The principle I'd follow here is that whatever is part of the core functionality should always be sufficient to connect to an ingress gateway and begin a broadcast. Anything optional would necessarily be additional functionality that would possibly enhance the experience, but which would not be required for interop of core functionality. You mention SIP in your message, and I think there's a good example to use as a mental model: while a device that implements just basic, core SIP for voice calls can dial into a conference bridge and send/receive media, RFC 4575 defined a way that devices can learn and present additional information about the conference state. It's not necessary to implement; it just makes things nicer. > > > In that regard, I am against including the trickle option as the > > server should be accessible to the publisher, and the only case > where > > it could make sense is if the WHIP server is on a public server but > > the media servers are behind NATed network without port forwarding. > > > > Also, I am not sure what would be the benefits of the ice restart > > (especially if it is optional) compared to just restarting the > whole > > publishing session again, which is something that the service > has to > > implementa anyway. > > > I'm definitely okay leaving both trickle ice and ice restart > functions > off for now, as long as we have some kind of extensibility mechanism. > What I'm trying to avoid is some kind of future situation where > RT-CDNs > are hosted behind application load balancers, and the processing > nodes > themselves lack v4 unique addresses (and are therefore natted). I > don't > see it being an issue right now, but depending on how quickly we can > rely on 100% IPv6 deployment to end users, it may become an issue > in the > future. I don't want to be painted into a corner when/if this happens. > > > That may be an interesting use case to support in order to be future > proof and would be easy to implement server side (just ignore the > client updated candidates). So my proposal would be either to not > support it, or include it on the core package. I'm just as happy including it as part of core functionality. Given that it's part of the core JSEP model, I would expect any WebRTC stack to include it, so it's unlikely to make things particularly complicated for implementations. [snip] > UPDATE is even more problematic, as HTTP doesn't have an UPDATE > method, > and the process of adding new methods to HTTP is politically > difficult > in the best circumstances (e.g., creating a method that has broad > applicability to all resource types -- see the difficulty and > insanely > long timeline getting PATCH defined for an example). > > My bad, too much time working on SIP. Obviously defining any new http > methods or headers is something we should not do. With that in mind, I think there are really only two ways that we can indicate operations: 1. Have an in-band indication of the operation type in the body of the HTTP request, or 2. Use unique endpoints for each request type. I think either one works, although I think the second one is a bit cleaner, as it allows for separation of interests (e.g., routing requests to the node that can most efficiently handle them); and, as a nice side effect, it makes it clear which operations the server supports. If we choose option 1, then we'll need some additional mechanism for the client to learn which operations the server supports. /a
- [Wish] WHIP enhancements Adam Roach
- Re: [Wish] WHIP enhancements Sergio Garcia Murillo
- Re: [Wish] WHIP enhancements Lorenzo Miniero
- Re: [Wish] WHIP enhancements Adam Roach
- Re: [Wish] WHIP enhancements Adam Roach
- Re: [Wish] WHIP enhancements Adam Roach
- Re: [Wish] WHIP enhancements Sergio Garcia Murillo
- Re: [Wish] WHIP enhancements Adam Roach