Re: [Wish] WHIP enhancements
Sergio Garcia Murillo <sergio.garcia.murillo@gmail.com> Wed, 24 February 2021 08:14 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 75FC43A1024
for <wish@ietfa.amsl.com>; Wed, 24 Feb 2021 00:14:42 -0800 (PST)
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 oCGcNNbVwU7g for <wish@ietfa.amsl.com>;
Wed, 24 Feb 2021 00:14:39 -0800 (PST)
Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com
[IPv6:2a00:1450:4864:20::334])
(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 7CCE83A100D
for <wish@ietf.org>; Wed, 24 Feb 2021 00:14:39 -0800 (PST)
Received: by mail-wm1-x334.google.com with SMTP id w7so973385wmb.5
for <wish@ietf.org>; Wed, 24 Feb 2021 00:14:39 -0800 (PST)
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=dn+gklEOP9uUPh82ZK7wYTF+kl2YJXvQcsPT/gVnfVQ=;
b=gtfKhPkwjLRiV/e2YRGMssNpRkONS0/D1LhBmVRiDbMNZTSAEF4zUmNS2jhxLYTXCo
3Sjz1WLHZep4Iq0cyYoeCgaI8dTSjBXsXsZjQ5zBZznLyMdbuQ+0mqqkU4bVS8I5J1LC
LeSwD8AhjMBrPdqxpHrBfMIibbXPDK85GZDjwBWSlFlAe2m9GZtwxz8oO/kdbW8B08Ia
fJYRiGycUXRkWYU1yN4U39ciGKQDbKTnOuAU1spUsAE0uCU1ff0UVrGnbt9CDL/jMljy
14UPXE73U11NN/AAu1I3cbBR51eD4sRRui5RAMkdiDCn5yWpk6UEQk2dewgf/Uh8cWE2
3B6w==
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=dn+gklEOP9uUPh82ZK7wYTF+kl2YJXvQcsPT/gVnfVQ=;
b=aRoZzGRARl1B7JrxgsDp5xDpbjd5qghvtS+eXeQrF6h9+R5YNR5Gf+j9l2AWlxAx+3
hRkiQqylPEpInwFeQDKcFs28n+4EOlQ1YjYr9SzJuY/gHHhW79p83C2wijITCXUjPAb/
t0CsZHqobfnplnM06morqyxev/VSUJur8kphT3xT0qiUpu1GIhzrGBI6jtDg7+PBsoPM
3vC2Scz9kQVkgPeb279axpEsPJOMUmHaqd43dxIczC7OA2Z2xxdhB823PVJYvucu9sXq
G4QLdnZ5mZdRe4pUdU7Zt11ktS9gpH08GKLVhG/Ftx9FUXM1UfOQFaTliausolwucBrP
Hleg==
X-Gm-Message-State: AOAM531frts1fxV/pPou+jn7c7LiSbH1dR84AaCdNYd4dOXQkB1Loliv
m+nobSZ6nRevRSeZyAeBBnQcxK+OgUm/h0DRUdub+ST81nPNKg==
X-Google-Smtp-Source: ABdhPJx4+0A9YKnC9L258Dtf9zHb2v9llqYvME+2Ugu7YJtObKvkymSY+mcsOl0SUA/O4XFRtK1r9oYhFhMaastLwm0=
X-Received: by 2002:a05:600c:4f46:: with SMTP id
m6mr2541429wmq.160.1614154477900;
Wed, 24 Feb 2021 00:14:37 -0800 (PST)
MIME-Version: 1.0
References: <92fd1a3f-06a3-3197-dde0-18270b62410c@nostrum.com>
In-Reply-To: <92fd1a3f-06a3-3197-dde0-18270b62410c@nostrum.com>
From: Sergio Garcia Murillo <sergio.garcia.murillo@gmail.com>
Date: Wed, 24 Feb 2021 09:14:27 +0100
Message-ID: <CA+ag07Y0pZJ5YHtin1Y6X0bOGkYqGOanCaNiM42VFYwXYB6iSQ@mail.gmail.com>
To: Adam Roach <adam@nostrum.com>
Cc: "wish@ietf.org" <wish@ietf.org>
Content-Type: multipart/alternative; boundary="00000000000044979405bc10a00d"
Archived-At: <https://mailarchive.ietf.org/arch/msg/wish/vegIPaS1eji1s9Jj1PK2BWxziI0>
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: Wed, 24 Feb 2021 08:14:42 -0000
Hi Adam, 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. 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. On a last note, I would prefer to make the process less json-like and more http-like, reusing HTTP headers and methods as much as possible. My initial thoughts about how to implement it were that the POST request to start the publication returned a 201 created response with a Location header indicating the URI to the entity representing the publication. And then allow the following methods on the request - GET for retrieving information about the state of the publication (TBD). - OPTIONS for keep alive - UPDATE for updating the session (we would need to specify what would we actually allow to be updated) - DELETE for terminating the session Best regards Sergio El mié, 24 feb 2021 a las 3:09, Adam Roach (<adam@nostrum.com>) escribió: > Hey, folks! Now that we have an approved working group, it’s time to > get this party started. IETF 110 is just around the corner, and it would > be great to have things to talk about during our meeting slot. > > I've gone over the current proposal and compared it against some of > the things that were brought up at the DISPATCH discussion, as well > as some of the things that I know our own network either needs or > will need in the near future. I'm going to lay this out by first > describing requirements, and then sketch out a proposal that > attempts to address these requirements. > > ----------------------------------------------------------------- > > Requirements > > One of the things that came up in DISPATCH, which is definitely > something that we need, is session management -- or at least session > termination. This means that we’ll need some way to correlate a > session termination request with a session origination request. > Beyond this, we've found the ability to have signaling-level > heartbeats to be important for service separation, as well as a > small handful of other operations, like ICE restarts and trickling > of ICE candidates. > > Although not strictly necessary, there is a strong desire to be able > to perform *some* of these operations (e.g., session termination, > ICE restart) from the ingest node towards the broadcasting tool. > > The current document leaves open whether an ingest connection > supports different ordinalities of audio and video streams; and, if > they do, how they might be distinguished. We should be clear about > what is expected in an SDP offer regarding the number of each, and > perhaps add some signaling so that the tool and ingest node can > negotiate or signal what combinations of media are supported. > > Finally, for future extensibility and feature experimentation, there > is a desire to be able to expand the protocol with new operations > and new protocol fields in a backwards-compatible way. > > Those are the requirements I'm aware of that we’ll want to consider > in updating the current protocol proposal. I'm going to sketch out > how we might achieve them below. One focus of this proposal is > ensuring that the implementation complexity on the client can be > kept as low as possible, so as to encourage the widest range of > broadcasting tools possible to adopt this solution. > > ----------------------------------------------------------------- > > Implementation Sketch > > First, we would update the POST/200 transaction so that it carries > more information than a simple offer/answer. This could be a MIME > multipart body, but that seems probably more trouble than > representing the SDP alongside the other information we want to > send. > > So for example, one way of doing this is having the POST operation > contain a JSON object indicating which server-oriented operations it > supports (if any), along with the SDP offer; something like: > > POST /ingest/username HTTP/1.1 > Content-Type: application/json > ... > > { > 'offer': 'v=0\r\n0=- 20150 0 IN IP6...', > 'operations': ['update', 'end', 'ice-restart'] > } > > The POST response from the server then contains an answer, along > with a list of operations that it can accept, plus the endpoints > that the client would use to perform those operations. Something > like: > > HTTP/1.1 200 OK > Content-Type: application/json > ... > > > { > 'answer': 'v=0\r\n0=- 20150 0 IN IP6...', > 'heartbeat': 'https://example.com/stage/adam/ea48c65c/heartbeat', > 'update': 'https://example.com/stage/adam/ea48c65c/update', > 'end': 'https://example.com/stage/adam/ea48c65c/terminate', > 'trickle': 'https://mg.example.com/stage/adam/ea48c65c/ice-candidate', > 'ice-restart': 'https://mg.example.com/stage/adam/ea48c65c/ice-restart' > } > > You'll notice that the endpoints are (or at least can be) customized > for the session by including a unique identifier (ea48c65c in the > example above). The broadcast client doesn't have to worry about > this; all it needs to do is use the endpoints that it gets in > response to a session creation post to enact the corresponding > operations. > > We can have a discussion about which of these operations > implementations are expected to support, and which are supplemental, > but I think we definitely need at least heartbeat and session > termination (which I call "end" above). > > For each of these operations, we would define how the client > interacts with them to enact the operation, but the general pattern > would be as above: a POST message sent to the corresponding > endpoint, containing a JSON body with operation parameters; and the > HTTP response will contain a JSON body with response parameters. > > So that gets us an extensible list of operations, and allows the > ingest node to embed a session identifier into the endpoints as > necessary. > > On top of this we can add something kind of clever to the > "heartbeat" operation that allows two-way communication without > requiring broadcast tools to do anything (relatively) complex like > implementing web sockets, by sending such operations in the response > to heartbeats. One approach would be to limit egress nodes to > sending commands towards the client once per heartbeat period (e.g., > if the clients sent a heartbeat once every 15 seconds, then the > server might have to wait as long as 15 seconds to send a command). > Another approach would be to have the server wait for the heartbeat > interval before responding, thereby leaving the heartbeat > transaction open for the entire time. If we decided to go with this > latter behavior, the server could send a command to the client at > any time by responding to the pending heartbeat operation. > > Finally, I think the extensibility story here naturally falls out of > the techniques described above: new transactions can be defined by > adding them to the initial message exchange; and new parameter can > be added to existing operations by adding them to the JSON objects > that are part of those operation's POST/200 transactions. > > ----------------------------------------------------------------- > > I'd like to close on the rough shape of these issues, and then get > a draft pulled together in time for the WISH meeting at IETF 110. > Input on how we might want to do things differently than I propose > above would be very welcome. Thanks! > > /a > > -- > Wish mailing list > Wish@ietf.org > https://www.ietf.org/mailman/listinfo/wish >
- [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