[Wish] Implementation report for draft-ietf-wish-whip-00

Juliusz Chroboczek <jch@irif.fr> Thu, 09 September 2021 16:19 UTC

Return-Path: <jch@irif.fr>
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 ED4253A1B8E for <wish@ietfa.amsl.com>; Thu, 9 Sep 2021 09:19:21 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
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 w7eEQJPU_TIn for <wish@ietfa.amsl.com>; Thu, 9 Sep 2021 09:19:20 -0700 (PDT)
Received: from korolev.univ-paris7.fr (korolev.univ-paris7.fr [IPv6:2001:660:3301:8000::1:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 2764A3A1B98 for <wish@ietf.org>; Thu, 9 Sep 2021 09:19:11 -0700 (PDT)
Received: from potemkin.univ-paris7.fr (potemkin.univ-paris7.fr [IPv6:2001:660:3301:8000::1:1]) by korolev.univ-paris7.fr (8.14.4/8.14.4/relay1/82085) with ESMTP id 189GJ8vg020869 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO) for <wish@ietf.org>; Thu, 9 Sep 2021 18:19:08 +0200
Received: from mailhub.math.univ-paris-diderot.fr (mailhub.math.univ-paris-diderot.fr [81.194.30.253]) by potemkin.univ-paris7.fr (8.14.4/8.14.4/relay2/82085) with ESMTP id 189GJ8Dd023269 for <wish@ietf.org>; Thu, 9 Sep 2021 18:19:08 +0200
Received: from mailhub.math.univ-paris-diderot.fr (localhost [127.0.0.1]) by mailhub.math.univ-paris-diderot.fr (Postfix) with ESMTP id 50E70C9C75 for <wish@ietf.org>; Thu, 9 Sep 2021 18:19:13 +0200 (CEST)
X-Virus-Scanned: amavisd-new at math.univ-paris-diderot.fr
Received: from mailhub.math.univ-paris-diderot.fr ([127.0.0.1]) by mailhub.math.univ-paris-diderot.fr (mailhub.math.univ-paris-diderot.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id Dn-VA1f8pvdQ for <wish@ietf.org>; Thu, 9 Sep 2021 18:19:11 +0200 (CEST)
Received: from pirx.irif.fr (unknown [78.194.40.74]) (Authenticated sender: jch) by mailhub.math.univ-paris-diderot.fr (Postfix) with ESMTPSA id 54812C9C6E for <wish@ietf.org>; Thu, 9 Sep 2021 18:19:11 +0200 (CEST)
Date: Thu, 09 Sep 2021 18:19:06 +0200
Message-ID: <874kathgcl.wl-jch@irif.fr>
From: Juliusz Chroboczek <jch@irif.fr>
To: wish@ietf.org
User-Agent: Wanderlust/2.15.9 (Almost Unreal) Emacs/27.1 Mule/6.0
MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue")
Content-Type: text/plain; charset=US-ASCII
X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.7 (korolev.univ-paris7.fr [IPv6:2001:660:3301:8000::1:2]); Thu, 09 Sep 2021 18:19:08 +0200 (CEST)
X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.7 (potemkin.univ-paris7.fr [194.254.61.141]); Thu, 09 Sep 2021 18:19:08 +0200 (CEST)
X-Miltered: at korolev with ID 613A33FC.002 by Joe's j-chkmail (http : // j-chkmail dot ensmp dot fr)!
X-Miltered: at potemkin with ID 613A33FC.002 by Joe's j-chkmail (http : // j-chkmail dot ensmp dot fr)!
X-j-chkmail-Enveloppe: 613A33FC.002 from potemkin.univ-paris7.fr/potemkin.univ-paris7.fr/null/potemkin.univ-paris7.fr/<jch@irif.fr>
X-j-chkmail-Enveloppe: 613A33FC.002 from mailhub.math.univ-paris-diderot.fr/mailhub.math.univ-paris-diderot.fr/null/mailhub.math.univ-paris-diderot.fr/<jch@irif.fr>
X-j-chkmail-Score: MSGID : 613A33FC.002 on korolev.univ-paris7.fr : j-chkmail score : . : R=. U=. O=. B=0.000 -> S=0.000
X-j-chkmail-Score: MSGID : 613A33FC.002 on potemkin.univ-paris7.fr : j-chkmail score : . : R=. U=. O=. B=0.000 -> S=0.000
X-j-chkmail-Status: Ham
X-j-chkmail-Status: Ham
Archived-At: <https://mailarchive.ietf.org/arch/msg/wish/KIQced3tawz8edzA-tRGNqgBzxo>
Subject: [Wish] Implementation report for draft-ietf-wish-whip-00
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 16:19:28 -0000

Hi,

Lorenzo and I have just shown interoperability between his client and my
server.  Lorenzo's client was almost perfect, the only issue was that he
was sending ICE candidates to the wrong endpoint.  I haven't implemented
ICE restarts yet.

A few preliminary conclusions.

1. Even in its current early form, the draft is good enough to implement.

2. Asymmetric ICE (blocking ICE at the server, trickle at the client) was
   surprisingly easy to implement and works quite well.  The only issue we
   noticed is that since the ICE candidates are sent to the resource
   endpoint, the client must buffer ICE candidates until it receives the
   initial answer.  I think this deserves to be mentioned explicitly.

3. The draft lacks guidance about error handling; for example, it doesn't
   tell me what to do if appling the offer fails (500?), if I cannot parse
   an offer or an iCE candidate (400?), or if I receive an unexpected HTTP
   method or content-type.

   A couple tricky ones:
   
     - what is the error to return when I receive an ICE candidate for
       a PeerConnection that used to exist but has been closed?  I'm
       currently doing 404, which means the client cannot easily
       distinguish between this case and that of a wrong value for the
       resource endpoint.

     - what happens if a candidate is followed by random non-JSON garbage?
       Is that an error?  If so, MUST I return an error or MAY I return an
       error?  I'm currently just ignoring the garbage.

4. Detection of failed clients, as mentioned in a previous message.  It's
   a tricky issue, and needs to be specified precisely or people will get
   it wrong.

5. As somebody already mentioned, the draft lacks guidance about
   authentication.  I've implemented HTTP Basic on the WHIP endpoint, and
   I'm not sure what I should do on the resource endpoint: require HTTP
   Basic in the same realm as on the WHIP endpoint, require HTTP Basic in
   a different realm, or assume that the resource endpoint is a well-kept
   secret with enough entropy to not require authentication.

   Authentication is pretty much application-specific, so I think we'll
   need to be careful to provide precise guidance to the client without
   overly constraining the server.

-- Juliusz