Re: [AVTCORE] 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: avt@ietfa.amsl.com
Delivered-To: avt@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id AB4E1C1522CF for <avt@ietfa.amsl.com>; Wed, 9 Nov 2022 16:17:18 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.106
X-Spam-Level:
X-Spam-Status: No, score=-2.106 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_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham 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 1uz4Uc5lXpqe for <avt@ietfa.amsl.com>; Wed, 9 Nov 2022 16:17:14 -0800 (PST)
Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com [IPv6:2a00:1450:4864:20::42e]) (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 C6ABBC14CE24 for <avt@ietf.org>; Wed, 9 Nov 2022 16:17:14 -0800 (PST)
Received: by mail-wr1-x42e.google.com with SMTP id cl5so96424wrb.9 for <avt@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=cGceptaHYPHAqHI6qUJLL+E4hGEw17hQO7fhCASYZkscZgdH6eLHerW67ULtBlCqb6 eJjeqMXwzQg/3h6GnYqeQkfn54Fz8Al2aP6lhZ8qkM1gk5dpz+NcmeTYy+V30KRtSdyZ xAgeZ9mTf2+BlXeRA1AB02heopYaKZet/gZgi8qlUQ5zC47K/KrK+f0Jqgwf29nzqONK Eigk51TA/fN8YdqzOdEcvqYosN6RrrX91RwdLAWkNZ4ykQ2f4aADh49WT4NfSDjRUUMK 6oXwEP7JIZ5hifwu4YnWCi6U46qbOxE4cg2HYFgAMs6ag42Ag0xlF9JkMQIxRj0qlrDu 8JTQ==
X-Gm-Message-State: ACrzQf3l5mtYp01U5BbPesRX4fMoxryvnPe9htyXaikws+1HM30xPTyx ARmSh6+TSjcWJkBGizBawYJTxKTFVBtsIcYv
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/avt/GxpOg1rS2adgaQTUTr_Qfd1kZkc>
Subject: Re: [AVTCORE] Side meeting on SFrame over RTP
X-BeenThere: avt@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: Audio/Video Transport Core Maintenance <avt.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/avt>, <mailto:avt-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/avt/>
List-Post: <mailto:avt@ietf.org>
List-Help: <mailto:avt-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/avt>, <mailto:avt-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 10 Nov 2022 00:17:18 -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.