<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-avtcore-rtp-sframe-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title>RTP Payload Format for SFrame</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-avtcore-rtp-sframe-01"/>
    <author initials="P." surname="Thatcher" fullname="Peter Thatcher">
      <organization>Microsoft</organization>
      <address>
        <email>pthatcher@microsoft.com</email>
      </address>
    </author>
    <author initials="Y." surname="Fablet" fullname="Youenn Fablet">
      <organization>Apple</organization>
      <address>
        <email>youenn@apple.com</email>
      </address>
    </author>
    <date/>
    <area>Applications and Real-Time</area>
    <workgroup>Audio/Video Transport Core Maintenance</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 43?>

<t>This document describes the RTP payload format of SFrame.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ietf-wg-avtcore.github.io/draft-ietf-avtcore-rtp-sframe/draft-ietf-avtcore-rtp-sframe.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-avtcore-rtp-sframe/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Audio/Video Transport Core Maintenance Working Group mailing list (<eref target="mailto:avt@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/avt/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/avt/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-wg-avtcore/draft-ietf-avtcore-rtp-sframe"/>.</t>
    </note>
  </front>
  <middle>
    <?line 47?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>SFrame <xref target="RFC9605"/> describes an end-to-end encryption and authentication mechanism
for media data in a multiparty conference call, in which central media servers (SFUs) can access the
media metadata needed to make forwarding decisions without having access to the actual media.</t>
      <t>This document describes how to packetize a media frame encrypted using SFrame into RTP packets.</t>
    </section>
    <section anchor="terminology-and-notation">
      <name>Terminology and Notation</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/>
when, and only when, they appear in all capitals, as shown here.</t>
    </section>
    <section anchor="sframe-format">
      <name>SFrame format</name>
      <t>An SFrame ciphertext comprises a header and encrypted data.
The SFrame header has a size varying between 1 to 17 bytes.
The encrypted data can be of arbitrary length and is larger than the unencrypted data by a fixed overhead that depends on the encryption algorithm.
The overhead can be up to 16 bytes.</t>
      <t>An SFrame ciphertext having an arbitrary long length, an application may decide to partition the data encrypted with SFrame
small enough so that the SFrame ciphertext fits in a single RTP packet.
We call this per-packet SFrame.
This has the advantage of allowing to decrypt the content as soon as received.</t>
      <t>An alternative is to encrypt the data, a media frame typically, and send the SFrame ciphertext over several RTP packets.
We call this per-frame SFrame.
This has the advantage of limiting the SFrame overhead, especially for video frames.
This alternative is also compatible with <xref target="WebRTC_Encoded_Transform"/>, which is important for backward compatibility of existing services.</t>
      <t>The RTP format presented in this document supports both alternatives.</t>
    </section>
    <section anchor="rtp-header-usage">
      <name>RTP Header Usage</name>
      <t>The general RTP payload format for SFrame is depicted below.</t>
      <artwork><![CDATA[
   0                   1                   2                   3
   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |V=2|P|X|  CC   |M|     PT      |       sequence number         |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                           timestamp                           |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |           synchronization source (SSRC) identifier            |
  +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
  |            contributing source (CSRC) identifiers             |
  |                             ....                              |
  +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
  |S E x x x x x x|                                               |
  |                                                               |
  :                       SFrame payload                          :
  |                                                               |
  |                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                               :    OPTIONAL RTP padding       |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      <t>The first byte of the RTP payload is the SFrame RTP header.</t>
      <t>The S bit of the SFrame RTP header MUST be 0 for all fragments except for the first one of the SFrame frame.</t>
      <t>The E bit of the SFrame RTP header MUST be 0 for all fragments except for the last one of the SFrame frame.</t>
      <t>The 6 remaining bits of the SFrame RTP header are reserved for future use.</t>
      <t>The payload type (PT) identifies the format of the media encrypted with SFrame.</t>
      <t>The SSRC, timestamp, marker bit, and CSRCs of the SFrame RTP packets MUST be the same
as those of the output of the media-format-specific packetization.
The header extensions of the SFrame RTP packets SHOULD be the same
as those of the output of the media-format-specific packetization, but some may be omitted
if it is known that the omitted header extensions do not need to be duplicated on each SFrame RTP packet.</t>
    </section>
    <section anchor="rtp-packetization-of-sframe">
      <name>RTP Packetization of SFrame</name>
      <t>SFrame packets can be generated either from RTP media packets or from media frames as defined by <xref target="WebRTC_Encoded_Transform"/>.</t>
      <t>For per-packet SFrame, the following processing is done, with a media frame as input:</t>
      <ol spacing="normal" type="1"><li>
          <t>Generate a group of RTP media packets from the media frame using a media-format-specific packetizer.
The media-format-specific packetizer needs to be made aware of the SFrame overhead that happens to each RTP packet.</t>
        </li>
        <li>
          <t>For each RTP packet of the group, encrypt its payload with SFrame.</t>
        </li>
        <li>
          <t>Prepend to each RTP packet payload a SFrame RTP header with the S and E bits set to 1.</t>
        </li>
        <li>
          <t>Send each RTP packet of the group.</t>
        </li>
      </ol>
      <t>For per-frame SFrame, the following processing is done, with a media frame as input:</t>
      <ol spacing="normal" type="1"><li>
          <t>Generate a SFrame ciphertext from the media frame data.</t>
        </li>
        <li>
          <t>Fragment the SFrame ciphertext in a group of payloads so that RTP packets generated from them do not exceed the network maximum transmission unit size.</t>
        </li>
        <li>
          <t>Prepend a zero byte as the SFrame RTP header to all payloads of the group.</t>
        </li>
        <li>
          <t>Set the first bit S of the SFrame RTP header of the first packet to 1.</t>
        </li>
        <li>
          <t>Set the second bit E of the SFrame RTP header of the last packet to 1.</t>
        </li>
        <li>
          <t>Generate a group of RTP packets from the group of payloads, using the media frame to generate the RTP header, including RTP header extensions.</t>
        </li>
        <li>
          <t>Send each RTP packet of the RTP packet group.</t>
        </li>
      </ol>
    </section>
    <section anchor="rtp-depacketization-of-sframe">
      <name>RTP depacketization of SFrame</name>
      <t>Reception of SFrame packets is done as follows:</t>
      <ol spacing="normal" type="1"><li>
          <t>The fragments of a given SFrame ciphertext are grouped together in order of the RTP sequence number,
the first packet of the group having its S bit set to 1 and the last packet of the group havint its E bit set to 1.
All packets in between the first and last needs to be in the group.</t>
        </li>
        <li>
          <t>Concatenate the payloads of all packets of the group to form the SFrame ciphertext.</t>
        </li>
        <li>
          <t>Decrypt the SFrame ciphertext to obtain the media decrypted data.</t>
        </li>
        <li>
          <t>If per-packet SFrame is being used, the following processing is done:
          </t>
          <ol spacing="normal" type="1"><li>
              <t>assert that the group of packets consist of a single packet.</t>
            </li>
            <li>
              <t>Set the media decrypted data as the payload of the packet and send the packet to the media-format-specific RTP depacketizer.</t>
            </li>
            <li>
              <t>If the depacketizer cannot generate a media frame yet, abort these steps. Otherwise, generate a media frame from the depacketizer.</t>
            </li>
          </ol>
        </li>
        <li>
          <t>If per-frame SFrame is being used, the following processing is done:
          </t>
          <ol spacing="normal" type="1"><li>
              <t>assert that the group of packets all have the same payload type.</t>
            </li>
            <li>
              <t>Extract the media metadata from the group of packets.</t>
            </li>
            <li>
              <t>Generate a media frame from the media decrypted data and the media metadata.</t>
            </li>
          </ol>
        </li>
        <li>
          <t>Send the media frame to the receiving pipeline.</t>
        </li>
      </ol>
    </section>
    <section anchor="sframe-sdp-negotiation">
      <name>SFrame SDP negotiation</name>
      <t>SFrame packetization is indicated via a new "a=sframe" SDP attribute defined in this specification.
This attribute is used at media level, it does not appear at session level.</t>
      <t>The presence of the "a=sframe" attribute in a media section (in either an offer or an answer) indicates that the
endpoint is expecting to receive RTP packets encrypted with SFrame for that media section, as defined below.</t>
      <t>Once each peer has verified that the other party expects to receive SFrame RTP packets, senders are expected to send SFrame encrypted RTP packets.
If one peer expects to use SFrame for a media section and identifies that the other peer does not support it, the peer
is expected to stop the transceiver associated to the media section, which will generate a zero port for that m-section.</t>
      <t>When SFrame is in use for that media section, it will apply to the relevant media encodings defined for that media section.
This includes RTP payload types bound to media packetizers and media depacketizers as defined in <xref target="RFC7656"/>, typically  audio formats such as Opus and RTP video formats such as H264.
This notably includes RTP payload types representing <xref target="WebRTC_Encoded_Transform"/> <eref target="https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframe-data">encoded video frame formats</eref> and <eref target="https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedaudioframe-data">encoded audio frame formats</eref>.</t>
      <t>This does not include RTP-Based Redundancy mechanisms as defined in {!RFC7656}}.
For instance, RTX defined in <xref target="RFC4588"/> will retransmit SFrame based packets.
Forward error correction formats as defined in <xref target="RFC5109"/> will protect the encrypted content.
For Redundant Audio Data, known as RED, as defined in <xref target="RFC2198"/>, a RED packetizer will take as input SFrame encrypted media data instead of unencrypted media data.</t>
      <t>If BUNDLE is in use and the "a=sframe" attribute is present for a media section but not for another media section of the same BUNDLE,
payload types for media encodings that are relevant for SFrame MUST not be reused between the two media sections.</t>
      <t>Questions:</t>
      <ol spacing="normal" type="1"><li>
          <t>Should we precise how RTX/FEC works with SFrame packetization? No impact AFAIK since RTX/FEC would work on packets (whether SFramed or not).</t>
        </li>
        <li>
          <t>Is RED current proposal (transmit SFrame ciphertext blocks) good enough? An alternative is to have SFrame being applied on the entire RED packet payload.</t>
        </li>
        <li>
          <t>Should we allow <tt>a=sframe</tt> at session level to mean that all media sections want sframe?</t>
        </li>
      </ol>
      <t>Here is an example of SFrame being negotiated for audio (opus and CN) and for video (H264 and VP8):</t>
      <artwork><![CDATA[
m=audio 50000 RTP/SAVPF 10 11
a=sframe
a=rtpmap:10 opus/48000/2
a=rtpmap:11 CN/8000

m=video 50002 RTP/SAVPF 100 101
a=sframe
a=rtpmap:100 H264/90000
a=rtpmap:101 VP8/90000
]]></artwork>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This document is subject to the security considerations of SFrame.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>None</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="WebRTC_Encoded_Transform" target="https://w3c.github.io/webrtc-encoded-transform/">
        <front>
          <title>WebRTC Encoded Transform</title>
          <author>
            <organization>World Wide Web Consortium</organization>
          </author>
          <date year="2025" month="May"/>
        </front>
      </reference>
      <reference anchor="RFC9605">
        <front>
          <title>Secure Frame (SFrame): Lightweight Authenticated Encryption for Real-Time Media</title>
          <author fullname="E. Omara" initials="E." surname="Omara"/>
          <author fullname="J. Uberti" initials="J." surname="Uberti"/>
          <author fullname="S. G. Murillo" initials="S. G." surname="Murillo"/>
          <author fullname="R. Barnes" initials="R." role="editor" surname="Barnes"/>
          <author fullname="Y. Fablet" initials="Y." surname="Fablet"/>
          <date month="August" year="2024"/>
          <abstract>
            <t>This document describes the Secure Frame (SFrame) end-to-end encryption and authentication mechanism for media frames in a multiparty conference call, in which central media servers (Selective Forwarding Units or SFUs) can access the media metadata needed to make forwarding decisions without having access to the actual media.</t>
            <t>This mechanism differs from the Secure Real-Time Protocol (SRTP) in that it is independent of RTP (thus compatible with non-RTP media transport) and can be applied to whole media frames in order to be more bandwidth efficient.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9605"/>
        <seriesInfo name="DOI" value="10.17487/RFC9605"/>
      </reference>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
      <reference anchor="RFC7656">
        <front>
          <title>A Taxonomy of Semantics and Mechanisms for Real-Time Transport Protocol (RTP) Sources</title>
          <author fullname="J. Lennox" initials="J." surname="Lennox"/>
          <author fullname="K. Gross" initials="K." surname="Gross"/>
          <author fullname="S. Nandakumar" initials="S." surname="Nandakumar"/>
          <author fullname="G. Salgueiro" initials="G." surname="Salgueiro"/>
          <author fullname="B. Burman" initials="B." role="editor" surname="Burman"/>
          <date month="November" year="2015"/>
          <abstract>
            <t>The terminology about, and associations among, Real-time Transport Protocol (RTP) sources can be complex and somewhat opaque. This document describes a number of existing and proposed properties and relationships among RTP sources and defines common terminology for discussing protocol entities and their relationships.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7656"/>
        <seriesInfo name="DOI" value="10.17487/RFC7656"/>
      </reference>
      <reference anchor="RFC4588">
        <front>
          <title>RTP Retransmission Payload Format</title>
          <author fullname="J. Rey" initials="J." surname="Rey"/>
          <author fullname="D. Leon" initials="D." surname="Leon"/>
          <author fullname="A. Miyazaki" initials="A." surname="Miyazaki"/>
          <author fullname="V. Varsa" initials="V." surname="Varsa"/>
          <author fullname="R. Hakenberg" initials="R." surname="Hakenberg"/>
          <date month="July" year="2006"/>
          <abstract>
            <t>RTP retransmission is an effective packet loss recovery technique for real-time applications with relaxed delay bounds. This document describes an RTP payload format for performing retransmissions. Retransmitted RTP packets are sent in a separate stream from the original RTP stream. It is assumed that feedback from receivers to senders is available. In particular, it is assumed that Real-time Transport Control Protocol (RTCP) feedback as defined in the extended RTP profile for RTCP-based feedback (denoted RTP/AVPF) is available in this memo. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="4588"/>
        <seriesInfo name="DOI" value="10.17487/RFC4588"/>
      </reference>
      <reference anchor="RFC5109">
        <front>
          <title>RTP Payload Format for Generic Forward Error Correction</title>
          <author fullname="A. Li" initials="A." role="editor" surname="Li"/>
          <date month="December" year="2007"/>
          <abstract>
            <t>This document specifies a payload format for generic Forward Error Correction (FEC) for media data encapsulated in RTP. It is based on the exclusive-or (parity) operation. The payload format described in this document allows end systems to apply protection using various protection lengths and levels, in addition to using various protection group sizes to adapt to different media and channel characteristics. It enables complete recovery of the protected packets or partial recovery of the critical parts of the payload depending on the packet loss situation. This scheme is completely compatible with non-FEC-capable hosts, so the receivers in a multicast group that do not implement FEC can still work by simply ignoring the protection data. This specification obsoletes RFC 2733 and RFC 3009. The FEC specified in this document is not backward compatible with RFC 2733 and RFC 3009. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="5109"/>
        <seriesInfo name="DOI" value="10.17487/RFC5109"/>
      </reference>
      <reference anchor="RFC2198">
        <front>
          <title>RTP Payload for Redundant Audio Data</title>
          <author fullname="C. Perkins" initials="C." surname="Perkins"/>
          <author fullname="I. Kouvelas" initials="I." surname="Kouvelas"/>
          <author fullname="O. Hodson" initials="O." surname="Hodson"/>
          <author fullname="V. Hardman" initials="V." surname="Hardman"/>
          <author fullname="M. Handley" initials="M." surname="Handley"/>
          <author fullname="J.C. Bolot" initials="J.C." surname="Bolot"/>
          <author fullname="A. Vega-Garcia" initials="A." surname="Vega-Garcia"/>
          <author fullname="S. Fosse-Parisis" initials="S." surname="Fosse-Parisis"/>
          <date month="September" year="1997"/>
          <abstract>
            <t>This document describes a payload format for use with the real-time transport protocol (RTP), version 2, for encoding redundant audio data. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="2198"/>
        <seriesInfo name="DOI" value="10.17487/RFC2198"/>
      </reference>
    </references>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
