Re: [Sframe] Side meeting on SFrame over RTP

Jonathan Lennox <jonathan.lennox@8x8.com> Thu, 10 November 2022 00:17 UTC

Return-Path: <jonathan.lennox@8x8.com>
X-Original-To: sframe@ietfa.amsl.com
Delivered-To: sframe@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 538F6C14CE24 for <sframe@ietfa.amsl.com>; Wed, 9 Nov 2022 16:17:19 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.107
X-Spam-Level:
X-Spam-Status: No, score=-2.107 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, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=unavailable autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=8x8.com
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id IIDaEB3h8qQ4 for <sframe@ietfa.amsl.com>; Wed, 9 Nov 2022 16:17:14 -0800 (PST)
Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com [IPv6:2a00:1450:4864:20::42d]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id ADFFFC14F738 for <sframe@ietf.org>; Wed, 9 Nov 2022 16:17:14 -0800 (PST)
Received: by mail-wr1-x42d.google.com with SMTP id cl5so96412wrb.9 for <sframe@ietf.org>; Wed, 09 Nov 2022 16:17:14 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=8x8.com; s=googlemail; h=message-id:in-reply-to:to:references:date:subject:mime-version :content-transfer-encoding:from:from:to:cc:subject:date:message-id :reply-to; bh=hwzLMyD++eZISf9SmzSZpHrSbhG9Gp6HIc7bdXaeM3U=; b=bYhH5Xof5jHfXKQWwRXHQ0Bj41ZhA5Y+wcGdEPNI/z3RARQFKGIZvAx7TsD2JEOqX3 VK5B7WwTqLQus1y9tgt0Xd0WPywTD2x/Nhu0w/DiGreeuHFDahP5YfQB5HTzPo66tMKw huuZcR+FZbA+XcUp1jaFOhE+bHynHlx6UTJJU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=message-id:in-reply-to:to:references:date:subject:mime-version :content-transfer-encoding:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hwzLMyD++eZISf9SmzSZpHrSbhG9Gp6HIc7bdXaeM3U=; b=WrGBaZB7lemxve3JbGuGffU7aHjTH2vCaqN3ejT+z6cVZMwE27gALkrahRYSJXjmJE Hyf8WEh4TQsi/aZUiIcD9X2bmd/Ay7AF6cBlr0vYXudK6qYVUzld6f1oZcykLhAWmHsM 7Hk3BPGY8+/7+T2DK8lQSxAncfp0VWmCwZRFIGGkjlHYqKP4gcddaGOTXR6zXjPnG5cH TiT4vBzv3JR959TSnJNv5AV0nMOGYxuVZ3BwOjo4XF0TbiWHJITSkCUMMw56OHr4QxWi /wHupkMHzbL4Z6FdPiYlnOgtj/ly3gOQ2asKYwW6u4MbIJhncm3va+WubNIARRgjAnNZ +94w==
X-Gm-Message-State: ACrzQf36fH/vySndR7MLULJgL4aSx6LhN8yspS7dX/keVDaPf2vYsXJ/ Z3tVbMbb5XnCZbU7nXPAeWAftOKInIurzZy5
X-Google-Smtp-Source: AMsMyM5SUx9McJn4I+dHwbshXC/qQguO1H/ZxusmFX8ZNsXwHuR3E0xWixxNjMyQ5wsQU7qgUtDOhw==
X-Received: by 2002:a5d:694e:0:b0:236:65a0:e7ed with SMTP id r14-20020a5d694e000000b0023665a0e7edmr39609567wrw.233.1668039432623; Wed, 09 Nov 2022 16:17:12 -0800 (PST)
Received: from smtpclient.apple ([2001:67c:1232:144:bdf9:c375:c705:ec33]) by smtp.gmail.com with ESMTPSA id n4-20020a5d6604000000b002366fb99cdasm14196088wru.50.2022.11.09.16.17.11 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Nov 2022 16:17:11 -0800 (PST)
From: Jonathan Lennox <jonathan.lennox@8x8.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.120.41.1.1\))
Date: Thu, 10 Nov 2022 00:17:05 +0000
References: <7F72B511-BB03-4E79-B1F1-AF0AA476A7AC@8x8.com>
To: IETF AVTCore WG <avt@ietf.org>, sframe@ietf.org
In-Reply-To: <7F72B511-BB03-4E79-B1F1-AF0AA476A7AC@8x8.com>
Message-Id: <5297004C-2D99-4116-A53F-23E7AEA3CBF0@8x8.com>
X-Mailer: Apple Mail (2.3696.120.41.1.1)
Archived-At: <https://mailarchive.ietf.org/arch/msg/sframe/z-MYSUsg0anNoZepIZX8HAhAQus>
Subject: Re: [Sframe] Side meeting on SFrame over RTP
X-BeenThere: sframe@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: Secure Media Frames <sframe.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/sframe>, <mailto:sframe-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/sframe/>
List-Post: <mailto:sframe@ietf.org>
List-Help: <mailto:sframe-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/sframe>, <mailto:sframe-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 10 Nov 2022 00:17:19 -0000

> On Nov 9, 2022, at 12:33 PM, Jonathan Lennox <jonathan.lennox@8x8.com> wrote:
> 
> Inspired by the discussion at the AVTCore meeting yesterday, we will have a side meeting this afternoon from 15:00-16:00 GMT (apologies for the short notice) in Mezzanine 12 (East Tower of the Metropole) on issues related to SFrame over RTP.

A small group of us (me, Magnus Westerlund, Martin Thomson, Richard Barnes, Youenn Fablet, and Jörg Ott) met this afternoon, and had what I think was a very productive discussion.

No one was taking notes contemporaneously, but I’ll try to summarize the conclusions we came to.  (If I got something wrong or left something out, I invite the other participants to send their own recollection as well!)

Youenn took the action to update draft-murillo-avtcore-multi-codec-payload-format to describe this solution.  He’d welcome volunteers to help him, though.


Our conclusion was that the basic approaches from the payload formats previously proposed for SFrame were good, but it would be better to describe them explicitly as a payload format for SFrame, to make it clear what receivers should do with them (i.e., perform the e2e auth/decryption process).

The SFrame’s encrypted data will encapsulate RTP payloads (not raw elementary stream payloads) — i.e. this will include the “payload header" data that incorporates fields like the VP8 and VP9 picture ID, layer IDs, and tl0picidx fields.  These are fields that the receiver process needs in order to know which frames it can safely hand off to a decoder process in such that it can decode the frame properly, vs. e.g. buffering them to wait for retransmissions or other repair packets.

However, this payload can (optionally) be treated as though it had “infinite” MTU, encompassing an entire encoded frame into one RTP payload before the SFrame encapsulation.  The SFrame is then (if you’re sending over UDP, as opposed to QUIC) fragmented post-encryption, mapping it over multiple RTP packets. (This lets you amortize the SFrame overhead across all the packets of the frame.). This fragmentation is done outside the e2e context, so an SFU can safely split or reassemble fragments if gatewaying between RTP-over-UDP and RTP-over-QUIC.

Alternatively, as an implementation choice, an encoder can produce MTU-targeted payloads, such that each payload is separately encapsulated in an SFrame.  This allows packets to be independently decodable, at the cost of paying the SFrame overhead per-packet.  (This is the mode that’s previously been described as “SPacket”; it could be advisable, e.g., for H.264 slices, if you believe you’re in an environment where decoders can usefully decode individual slices of a frame.)

The RTP header for these fragmented packets would carry the same information as the header would have on a non-SFrame packet, except for the payload type and possibly the marker bit.  The payload type would be a payload that indicates that this is an SFrame packet.  Any SFU header extension information (frame marking, or AV1 dependency descriptor) would be copied into the RTP packets.
 
We discussed whether it would be better to define payload types as, e.g. “VP8 over SFrame”, “VP9 over SFrame”, “AV1 over SFrame” (which could be thought of as “rtx-style”), or rather just have an “SFrame” payload type which carries its inner payload type as a field inside it (“red-style” or “flexfec-style”).  Either approach would work, but given that we’re already frequently hitting issues in WebRTC with payload type exhaustion, the latter seemed like it would be more practical.  But this can be something the WG decides.
 
That said, even in the latter case this field should probably *not* be part of the e2e protected data, because there are cases where due to negotiation oddities SFUs need to be able to rewrite payload type numbers.
 
For the marker bit, we may want to use the marker bit to mean “end of fragmented sframe” rather than “end of frame”, and put the original marker bit somewhere in the SFrame payload, but this is something that can be figured out as part of the bit details of the SFrame payload format.