[Wish] Prototype client/server WHIP implementations

Lorenzo Miniero <lorenzo@meetecho.com> Thu, 09 September 2021 09:59 UTC

Return-Path: <lorenzo@meetecho.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 79F1A3A03EC for <wish@ietfa.amsl.com>; Thu, 9 Sep 2021 02:59:42 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.399
X-Spam-Level:
X-Spam-Status: No, score=-2.399 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_MED=-0.499, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_MSPIKE_H2=-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=aruba.it
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 mPv3P4-9g_jy for <wish@ietfa.amsl.com>; Thu, 9 Sep 2021 02:59:37 -0700 (PDT)
Received: from smtpcmd0756.aruba.it (smtpcmd0756.aruba.it [62.149.156.56]) by ietfa.amsl.com (Postfix) with ESMTP id 603B03A03EB for <wish@ietf.org>; Thu, 9 Sep 2021 02:59:36 -0700 (PDT)
Received: from lminiero ([2.232.93.8]) by Aruba Outgoing Smtp with ESMTPSA id OGq7mJXirxZXhOGq8mYuuX; Thu, 09 Sep 2021 11:59:31 +0200
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=aruba.it; s=a1; t=1631181571; bh=OE8U73/m6eNxqY8fimiYbAHY1mnGgfrdGwq4UaA/ah8=; h=Date:From:To:Subject:MIME-Version:Content-Type; b=PguV133byjwCOwQQ6K08sc+wsLuigj/MwGVp6qOlBwb2xS6m8P3Awlm2UtCgOX3UO cZtKF326yN2ABMFgylRhoCBt9CE27CGhcNhDv0N9Ug94I/rqfDd4xT+J4QPfSpYOBc 8GhoyRSEKou/NLys53Xd3s9A4wg/oAoKrFsRVfbVTN4blgZm1BO9S7AYrNcavPISO0 GTZy0KMy1EZRQg+5JrxHM+tFFwcODUalPFCcVa1Rs9iqEViCktACwWjWT36lWzDjMR vzIHscJRtMUhev5ukoGg0GjhUE6iy+ENcPzSvSvXr2TadFb5KljDAoEoiA7YKvA2+j CeCkIuryeF8jA==
Date: Thu, 9 Sep 2021 11:59:27 +0200
From: Lorenzo Miniero <lorenzo@meetecho.com>
To: wish@ietf.org
Message-ID: <20210909115927.4b409e2b@lminiero>
Organization: Meetecho
X-Mailer: Claws Mail 3.18.0 (GTK+ 2.24.33; x86_64-redhat-linux-gnu)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-CMAE-Envelope: MS4wfGzd+PFtZGc+Y0WgHZ/7IeMzM2ygIj8j+sy4NuHr2jElgjPNlijuQYKfPyUu010P3c6cb9YeVDW9nHAmjD1x2AZImBYQAiffUx8jRubl62wByJ67ySFa qqtqG4SzYW2loahjZw2J2a+zrAQdFHXv17A=
Archived-At: <https://mailarchive.ietf.org/arch/msg/wish/_Gnni_iSsxTHBSZPE2XJRiPfg6k>
Subject: [Wish] Prototype client/server WHIP implementations
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, 09 Sep 2021 09:59:43 -0000

Hi all,

FYI, I just created a couple of repositories that host a prototype
implementation of both the server and client side of WHIP. They're
quite barebone and nothing to write home about, but hopefully they
should be helpful to perform some interoperability tests, and more
importantly check whether the specification works as it is.

The server side is a simple node.js frontend to the open source Janus
WebRTC server, meaning it implements the WHIP API on one end, and
translates those interactions to the Janus API on the other end, in
order to eventually create a PeerConnection to the VideoRoom (SFU):

	https://github.com/lminiero/simple-whip-server

The client side, instead, is a basic command-line application that
takes advantage of GStreamer's webrtcbin stack, implementing what I
figured out a WHIP client was supposed to talk like:

	https://github.com/lminiero/simple-whip-client

While I've been testing them against each other, the idea of course is
that they should also be able to talk to any other WHIP client/server
implementation, which is the main purpose of the interoperability tests
I'd like to happen sooner or later. I know Sergio was interested in
doing something in that direction at the next IETF hackathon, but of
course if anything else happens earlier than that as well I'd be glad
to hear how that goes!

About the implementation choices, I did make some assumptions on the
specification in the prototypes (e.g., see discussion on tokens from
the latest post by Sergio), but in general it should be a reasonably
faithful implementation of the current specification. The client
doesn't seem to be able to detect when a PeerConnection goes down
(e.g., when someone else sends a DELETE on its its behalf), but that
seems to be a limitation in the current implementation of GStreamer's
webrtcbin (apparently changes in the DTLS state don't update the
overall state of the webrtcbin element); I'll try to find a workaround
for that. 

Hope this helps,
Lorenzo

-- 
I'm getting older but, unlike whisky, I'm not getting any better
https://twitter.com/elminiero