Re: [Sframe] [dispatch] Magnus Westerlund's Block on charter-ietf-sframe-00-00: (with BLOCK and COMMENT)

Bernard Aboba <bernard.aboba@gmail.com> Mon, 14 September 2020 18:46 UTC

Return-Path: <bernard.aboba@gmail.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 581A03A0E70; Mon, 14 Sep 2020 11:46:05 -0700 (PDT)
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 UFio3QwqZoi7; Mon, 14 Sep 2020 11:46:02 -0700 (PDT)
Received: from mail-lf1-x12c.google.com (mail-lf1-x12c.google.com [IPv6:2a00:1450:4864:20::12c]) (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 797213A0E72; Mon, 14 Sep 2020 11:46:01 -0700 (PDT)
Received: by mail-lf1-x12c.google.com with SMTP id z17so339076lfi.12; Mon, 14 Sep 2020 11:46:01 -0700 (PDT)
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=QtsqthO/n+DlH07Pnq4pR+L8wnPw0FWM2oDBYWuUpQg=; b=rn27AxAQ4x3AbYOOcHLSt+1+6QRHIfXhOuZjDvWpSbLQSQGDqeMBANyiizvJUBwo8a r+CLy9k5Y2Lq9OuO9txW5dtFplpuYLaCNRNY5vbMdYf4KlUlx2pupbPrwBKBZrffmKEq kAiMQnJ3aFVWGTrGPfHktoVcSoPnC0p2f31hJ+gRawqKueQ06PYS4u8hENZYjotgGznx nJ9SvX74qEk1co4eYzHtKhlCYKHpSVe6nVBxYurNQ+tvRi3GZbsTALm62GcPfDUKceqC 4lu9QcOt+a0GHNCAqlztSWulgjF+f2303dk4PQU8plT8gBuXZfeSx/5TMIzPO2M9gcin OQdg==
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=QtsqthO/n+DlH07Pnq4pR+L8wnPw0FWM2oDBYWuUpQg=; b=Ak/fwOaW3APtwFMTQok/+sgnjMSrGNvgp/N64+jAwpqZv6L+PjT14riPI5mLN2FcJZ g4FmmiTyZwT3wviS5/PCR4Zn5FJjZAawFXcwwQvb6IVtlcvZ+qRpWAX3ETFSFsdDBYWj qwUSvNUXTIAoWputuBmAcl6YYyS8DJTM5Oq2J8IE1fiEaWFJFhWLg8xR+46vU7YvqR1e b/ihOh28Op8Ry2wsEvLa2ZUbReg9/Znc60i7w1KbJ29J2Gjzq4Mf/b3lJCmPUHuIZ4AP NTZlszE8hVY35IIY28LmTD5tv2na1OGlqS6a0L+ESuiWHsP3ZTe+eoejH+jkxa8mvTKG qdow==
X-Gm-Message-State: AOAM530gPC10ZwpMofMNA19X84EJcmdjJ64cw3RO1GuBoIwle937TYIu cBBVFdftrk+jFFcVGzZABGgzIOXmC3OX+DrTPbo=
X-Google-Smtp-Source: ABdhPJx8/weAx+0LH5ja8SsDsOirbLdbHb8iETKRKf/eq3Pa4r+qdDd5jS9qx0DaG5BV0css1GCC65BbNUpaZDAoWWc=
X-Received: by 2002:a19:ad08:: with SMTP id t8mr4812763lfc.41.1600109159207; Mon, 14 Sep 2020 11:45:59 -0700 (PDT)
MIME-Version: 1.0
References: <159949693494.2875.16993532753477402380@ietfa.amsl.com> <CAL02cgS=y7mBt10n+jCGwUoy54eeH9ZXFijQdDSKk5Qt9mNrUw@mail.gmail.com> <e0b5dc1c04ab6b5cee2c88b5b1b348d7c70a5d4c.camel@ericsson.com> <a3fbe87c-d60b-23f1-2968-c7ac6ad50ea4@cosmosoftware.io> <5c6c96621b29ebf4b1f84e53ae3a414c9d0ec3a5.camel@ericsson.com> <05085c6c-0c30-a407-8f41-b6c9be8100bc@gmail.com> <HE1PR0702MB3772BEFD51DAB83AC64A252695240@HE1PR0702MB3772.eurprd07.prod.outlook.com> <cb46a294-5ae4-d82f-efe8-f887c578ae30@gmail.com> <49b13e5efa0b2ac0a7b09842dbce8793dfcf6667.camel@ericsson.com> <d4179012-2d13-d48d-8805-a5b8747a47aa@gmail.com>
In-Reply-To: <d4179012-2d13-d48d-8805-a5b8747a47aa@gmail.com>
From: Bernard Aboba <bernard.aboba@gmail.com>
Date: Mon, 14 Sep 2020 11:45:49 -0700
Message-ID: <CAOW+2dss=31dyQPjGbm72cVbvnEb751ZzdBFKSMuoOpF3wrTtQ@mail.gmail.com>
To: Sergio Garcia Murillo <sergio.garcia.murillo@gmail.com>
Cc: Magnus Westerlund <magnus.westerlund@ericsson.com>, "rlb@ipv.sx" <rlb@ipv.sx>, "magnus.westerlund=40ericsson.com@dmarc.ietf.org" <magnus.westerlund=40ericsson.com@dmarc.ietf.org>, "sergio.garcia.murillo@cosmosoftware.io" <sergio.garcia.murillo@cosmosoftware.io>, "sframe-chairs@ietf.org" <sframe-chairs@ietf.org>, "dispatch@ietf.org" <dispatch@ietf.org>, "iesg@ietf.org" <iesg@ietf.org>, "sframe@ietf.org" <sframe@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000095d4305af4a72c6"
Archived-At: <https://mailarchive.ietf.org/arch/msg/sframe/_bauWEzM3jQlP2Y_PNesWliwXZA>
Subject: Re: [Sframe] [dispatch] Magnus Westerlund's Block on charter-ietf-sframe-00-00: (with BLOCK and COMMENT)
X-BeenThere: sframe@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <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: Mon, 14 Sep 2020 18:46:05 -0000

Sergio said:

"No one has spoken of putting everything on a single SSRC, the new RTP
packetization would change the way the payload is packetized into the
RTP packets, but not the rtp/ssrc/mid mapping of the media streams which
would be the same as if SFRAME is not in use. So this is a non-issue."

[BA] Right.  SFRAME doesn't change the SSRC allocation scheme, nor does it
prevent the SFU from modifying the SSRC.
If the application was sending simulcast with multiple SSRCs/RIDs, SFRAME
won't affect that.  Similarly with SVC, if the application was sending all
layers on a single SSRC, SFRAME won't change that either.

"If you read my example above, this information is known before the frame
goes to the Insertable Stream process, so it will be available for the RTP
packetization without going via SFRAME."

[BA] As you note, the metadata contains information about each frame, and
the Insertable Streams implementation assumes that the application
modifications don't invalidate the metadata, which currently contains info
such as frame type, frameId, dependencies, width, height, LID, TID, SSRC
and CSRCs.

Most of the RTP header extension fields are the same for each packet within
a frame; only a few will change between packets within a frame, such as the
Start and End bits.

The exercise is to make sure that the metadata is sufficient to enable the
generic RTP packetizer to fill in all the RTP header and RTP header
extension fields.  For the RTP header extension fields, this includes info
such as Discardable, Switch, Required, Base Layer Sync, etc.  Today it
isn't clear to me that this info is completely determinable from the
Insertable Streams metadata.

Given that we don't have a lot of deployment of frame forwarding RTP header
extensions yet, it's probably best to avoid tying SFRAME  to any particular
design.  For example, you wouldn't want a design that could only function
with the framemarking RTP header extension or the Generic Frame Descriptor
or the Dependency Descriptor, so that a new specification is needed when
the N+1 frame forwarding technology comes along.







On Mon, Sep 14, 2020 at 2:39 AM Sergio Garcia Murillo <
sergio.garcia.murillo@gmail.com> wrote:

> On 14/09/2020 9:29, Magnus Westerlund wrote:
> > Hi,
> >
> > Please see inline
> >
> > On Fri, 2020-09-11 at 17:32 +0200, Sergio Garcia Murillo wrote:
> >> On 11/09/2020 13:19, Magnus Westerlund wrote:
> >>> Hi,
> >>>
> >>>>> So do I assume correctly that the idea is that the application layer
> >>>>> using SFRAME if it haves multiple independent or sets of dependent
> >>>>> streams there will be no support for that aspect in SFRAME layer?
> >>>>> Instead it is up to the application to put such information to either
> >>>>> put it inside the encapsualted part of the SFRAME or map it to the
> >>>>> lower transport layer, like to RTP SSRCs and extension information.
> >>>> If i understood you correctly, SFrame is kind of agnostic to the media
> >>>> streams. Currently it has a single global frame counter for all the
> >>> transport, so
> >>>> the number of streams/dependency between them is not known/needed
> >>>> by SFrame.
> >>> Yes, and when using a multi-stream application with layered encoding
> being
> >>> protected by SFRAME and transported over RTP with repair functions the
> high
> >>> layer application will need to have a model for how it maps individual
> >>> SFRAMEs to RTP layer functions to enable them to do their work. You
> get a
> >>> very limited functionality if in an SFU system tries to send all over a
> >>> single RTP SSRC. So this becomes a discussion in the RTP Payload format
> >>> context when carrying SFRAMEs.
> >>
> >> I don't really understand your point, let's put an example vp9 svc.
> >>
> >> Chrome will encode each picture from the video stream and pass it to the
> >> vp9 svc encoder. The encoder will produce n-frames (one per spatial
> >> layer) for a given picture.
> >>
> >> Chrome will get each frame with its metadata (spatial/layer id + layer
> >> structure info + previous frame dependencies + future frame depencies)
> >> and pass it over to the insertable streams.
> >>
> >> The payload will go to javascript, in where SFRAME will encrypt it and
> >> returned as a binary blob.
> >>
> >> The browser will get the binary blob, packetize it in several rtp
> >> packets according to the new packetization format and add the metadata
> >> as a header extension.
> >>
> >> Is this process what you are describing or is there anything missing?
> >>
> > Then the client will send these RTP packets to an SFU that will need to
> make
> > decision on which of the packets to forward for which layers to a
> particular
> > receiver. To be able to do this there are first the aspect of that the
> meta data
> > needs to be included so that the SFU can make decision based on the
> packets it
> > recieves. In RTP context this likely are a more generic structure like
> the RTP
> > header extension for Frame marking (draft-ietf-avtext-framemarking).
> >
> > For packet it doesn't receive it lacks the meta data. Thus, for a more
> efficient
> > repair of packets that are missing and to repair only packets that the
> SFU
> > actually needs, then you actually have to map the layered structure into
> RTP
> > level structures so that the SFU can determine that the missing packet
> belongs
> > to a layer that it actually intends to forward. Putting everything in a
> single
> > SSRC requires the SFU to repair all losses independent of it needing the
> packet
> > or not.
> >
> > A even more extreme example is if the client has 3 video cameras and
> produce 3
> > video encodings. In the SFRAME context it is possible to take the video
> frames
> > from all these threee encodings and put them in a single RTP stream
> (SSRC) with
> > SFRAMEs from that end-point. However, that would force your meta data to
> contain
> > also source identification rather than to using different SSRCs. Putting
> > multiple encoding on an single RTP stream would deprive the SFU of the
> > possibility to do rate control per encoding (RFC 5104 - TMMBR) as well
> as pause
> > streams it doesn't forward at all (RFC 7728 - Stream PAUSE) because all
> the
> > existing RTP mechanism that are included in WebRTC works on the RTP
> streams, not
> > sub-streams that doesn't have an identifier in the RTP layer. In
> addition to
> > having to repair any loss for the aggregated stream of the three
> encodings.
>
> No one has spoken of putting every on a single SSRC, the new rtp
> packetization would change the way the payload is packetized into the
> RTP packets, but not the rtp/ssrc/mid mapping of the media streams which
> would be the same as if not SFRAME is use. So this is a non-issue.
>
>
> >
> >>>>>> However, if the encrypted output is going to be transmitted over RTP
> >>>>>> using a new packetization format, we need to address how to
> negotiate
> >>>>>> that in the SDP.
> >>>>> Good
> >>>>>
> >>>>>> Note that this new packetization format will not only be alid for
> >>>>>> transporting encrypted frames (SFrame or not) but even any other
> >>>>>> audio/video frames.
> >>>>> I understand the potential exists. However, the recommendation for
> RTP
> >>>>> has been to try to consider Application Level Framing. In the case of
> >>>>> SFRAME that consideration moves up above SFRAME in the choice of how
> >>>>> data is split into SFRAMEs. However, having an RTP paylaod format for
> >>>>> SFRAME, then that should carry SFRAMEs. If you starts putting in
> other
> >>>>> binary objects into it, then you create a new demultiplexing point
> for
> >>>>> format between the RTP payload format and the SFRAME processing. That
> >>>> appears unmotivated.
> >>>>
> >>>>
> >>>> Note that SFRAME is not the only encryption possible with w3c
> insertable
> >>>> streams, it is up to the application to define its own crypto if they
> >>> want. So
> >>>> the payload must be able to transport non-SFRAME opaque blobs.
> >>> So I would consider this a misuse of the RTP payload format. The media
> type
> >>> will be for SFRAMEs. I understand that you might not be able to
> prevent this
> >>> in WebRTC. However, from an interoperability point of view you will be
> >>> stating that this is SFRAMEs. RTP will not be able to tell a
> difference. But
> >>> I don't see that this is will explicitly support carrying other things
> than
> >>> SFRAME. Because that means bringing in other consideration including
> the
> >>> security model for the E2E usage.
> >>
> >> Not sure if ignoring the reality on how the packetization format is
> >> going to be used within insertable streams is a good idea.
> > If you are passing other things than SFRAME you are also sending them
> without
> > end-to-end protection. Why is this happening, if the information was
> intended
> > for the SFU, then I think we should identify it as such, rather than
> having the
> > SFU have to hunt for it. If not, why are you sending it outside of the
> SFRAME
> > envelope?
>
> This is an application concern. I don't know why they would choose to do
> it, but the fact is that they can do it.
>
>
> >
> >>
> >>>>> Should the RTP payload format aspect of the charter be more explicit
> >>>>> in that it needs to disucss the general model of how to use SFRAME
> and
> >>>>> how an application can use the facilities of RTP to get good
> >>>>> performance from RTP mechanism like FEC and retransmission?
> >>>> I don't think so, RTX and FEC frames MUST not be modified/affected by
> >>>> SFRAME/the new packetization format, so they work out of the box. We
> can
> >>>> be explicit about that in the chapter as a requirement.
> >>>>
> >>> So I am not saying that RTX or FEC shall be modified. What I am saying
> is
> >>> that the SFRAME payload format should discuss the impact on the
> performance
> >>> of these functions depending on how you structure the SFRAMES across
> SSRCs.
> >>> The most simple example is the one where you put all layers for a video
> >>> encoding in a single SSRC. In such a stream you loose a single RTP
> packet
> >>> between the transmitting end-point and the SFU. Now the SFU is only
> >>> forwarding the base layer and not the enhancement layers. If base
> layer and
> >>> enhancement layer share RTP stream, the SFU can't determine if the
> missing
> >>> packet contains an base layer data or enhancement layer data. If the
> base
> >>> layer and enhancement layer would be on different SSRC, the fact that
> there
> >>> is a missing packet on the enhancement layer RTP stream means that the
> SFU
> >>> can ignore that as it anyway are not forwarding it. This same argument
> can
> >>> be applied between media sources. So how you map your application level
> >>> structures onto RTP do matter for the resulting performance of RTP.
> Putting
> >>> all on a single SSRC is not a path to good transport performance.
> >>
> >> But that is already the case for SVC codecs, so there is nothing new to
> >> specify in that regard.
> > So for SVC and other scalable codes there exists options for how to do
> this. And
> > where you can write and RTP packetizer for SVC that takes basicaly a
> mode and a
> > layer structure configuration as input, that is not possible for SFRAME
> as that
> > information is not visible in the RTP payload information. Instead it
> must come
> > with each SFRAME to packetize how to map it to the RTP layer.
> >
> > Thus, in my view the SFRAME RTP Payload format needs to discuss the core
> of
> > these issues to make it clear to the application both its options as
> well as
> > point to the impact of those options.
>
>
> This is already possible for any SVC codec re-using the Dependency
> Descriptor header extension:
>
> https://aomediacodec.github.io/av1-rtp-spec/#a1-introduction
>
> If you read my example above, this information is know before the frame
> goes to the Insertable Stream process, so it will be available for the
> rtp packetization without going via SFRAME.
>
>
> Best regards
>
> Sergio
>
> --
> Sframe mailing list
> Sframe@ietf.org
> https://www.ietf.org/mailman/listinfo/sframe
>