<?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.2 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-avtcore-rtp-sframe-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.2 -->
  <front>
    <title>RTP Payload Format for SFrame</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-avtcore-rtp-sframe-00"/>
    <author initials="P." surname="Thatcher" fullname="Peter Thatcher">
      <organization>Microsoft</organization>
      <address>
        <email>pthatcher@microsoft.com</email>
      </address>
    </author>
    <date/>
    <area>Applications and Real-Time</area>
    <workgroup>Audio/Video Transport Core Maintenance</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 23?>

<t>This document describes the RTP payload format of SFrame.</t>
    </abstract>
  </front>
  <middle>
    <?line 27?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>SFrame <xref target="I-D.draft-ietf-sframe-enc-01"/> describes an end-to-end encryption and authentication mechanism
for media frames 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="rtp-packetization-of-a-media-frame-encrypted-by-sframe">
      <name>RTP Packetization of a media frame encrypted by SFrame</name>
      <t>In order to packetize SFrame into RTP, packetization is done in 2 stages.
In the first stage, before SFrame encryption, media is packetized into RTP packets in a way specific to the media format.
In the second stage, each RTP packet from the first stage is packetized into RTP packets in a way specific to SFrame.
SFrame encryption is applied to the payload of each RTP packet between the first and second stages.</t>
      <t>For example, if a media frame to be encrypted by SFrame is encoded using VP8, the media frame is first
packetized according to <xref target="RFC7741"/> into one RTP packets with VP8-specific payloads.  Each of those
VP8 RTP payloads are then encrypted using SFrame, resulting in an SFrame-encrypted RTP payload of VP8.
SFrame-specific packetization is then applied to the SFrame-encrypted RTP payload of VP8, resulting in
RTP packets with SFrame-specific RTP payloads.</t>
      <t>SFrame-specific packetization is done by first breaking up the output of SFrame encryption
into fragments, and then prepending some fragment metadata necessary for depacketization.  Finally,
fragments are combined with values from the RTP header of the output of the media-format-specific
packetization.</t>
      <t>The SFrame-specific RTP payloads (fragments with prepended metadata) have the following format:</t>
      <artwork><![CDATA[
 0                   1                   2
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|L| media PT    |  media frame ID               |
| fragment index                |  fragment ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      <t>The media PT must be the payload type of the output of the media-format-specific packetization.
The frame index of the first fragment of each media frame MUST be 0.
The frame index of each subsequent fragment MUST be one more than the previous fragment.
The L bit MUST be 0 for all fragments except for the last one of the media frame.
The media frame ID must be unique enough that a depacketizer may be able to differentiate
the fragments of one media frame from another.
The SSRC, timestamp, marker bit, CSRCs, and header extensions of the SFrame RTP packets MUST be the same
as those of the output of the media-format-specific packetization.
The payload type of the SFrame RTP packets must be a payload type that indicates the payload
format defined in this document, and it must have a negotiated RTP clock rate that is the same as the
media-format-specific RTP packet.</t>
    </section>
    <section anchor="rtp-depacketization-of-sframe">
      <name>RTP depacketization of SFrame</name>
      <t>Depacketization is done by doing the packetization process in reverse:</t>
      <ol spacing="normal" type="1"><li>
          <t>The fragments of a given media frame ID are grouped together in order of fragment index and concatenated together, resulting in a media frame encrypted by SFrame.</t>
        </li>
        <li>
          <t>The media frame is decrypted using SFrame, resulting in a media-format-specific RTP payload.</t>
        </li>
        <li>
          <t>The media-format-specific RTP payload is combined with the RTP headers of the RTP packet with fragment index 0, resulting in a media-format-specific RTP packet.
The "media PT" from the SFrame RTP payload header is used as the payload type of the media-format-specific RTP packet.</t>
        </li>
        <li>
          <t>The media-format-specific RTP packet is passed into a media-format-specific RTP depacketizer, resulting in a media frame.</t>
        </li>
      </ol>
    </section>
    <section anchor="sframe-payload-type-negotiation">
      <name>SFrame payload type negotiation</name>
      <t>Because the payload type of an RTP packet that results from SFrame-specific packetization must match the
clock rate of the payload type of the RTP packet that results from media-format-specific packetization,
it may be necessary to negotiate more than one SFrame payload type.  For example, if one were to use SDP
to negotiate payload types, the following payload types could be negotiated with different clock rates:</t>
      <artwork><![CDATA[
m=audio 50000 RTP/SAVPF 96
a=rtpmap:96 sframe/48000
m=video 50002 RTP/SAVPF 97
a=rtpmap:97 sframe/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>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="RFC7741">
          <front>
            <title>RTP Payload Format for VP8 Video</title>
            <author fullname="P. Westin" initials="P." surname="Westin"/>
            <author fullname="H. Lundin" initials="H." surname="Lundin"/>
            <author fullname="M. Glover" initials="M." surname="Glover"/>
            <author fullname="J. Uberti" initials="J." surname="Uberti"/>
            <author fullname="F. Galligan" initials="F." surname="Galligan"/>
            <date month="March" year="2016"/>
            <abstract>
              <t>This memo describes an RTP payload format for the VP8 video codec. The payload format has wide applicability, as it supports applications from low-bitrate peer-to-peer usage to high-bitrate video conferences.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7741"/>
          <seriesInfo name="DOI" value="10.17487/RFC7741"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.draft-ietf-sframe-enc-01">
          <front>
            <title>Secure Frame (SFrame)</title>
            <author fullname="Emad Omara" initials="E." surname="Omara">
              <organization>Apple</organization>
            </author>
            <author fullname="Justin Uberti" initials="J." surname="Uberti">
              <organization>Google</organization>
            </author>
            <author fullname="Sergio Garcia Murillo" initials="S. G." surname="Murillo">
              <organization>CoSMo Software</organization>
            </author>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <author fullname="Youenn Fablet" initials="Y." surname="Fablet">
              <organization>Apple</organization>
            </author>
            <date day="13" month="March" year="2023"/>
            <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.

   The proposed 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="Internet-Draft" value="draft-ietf-sframe-enc-01"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
bn1o+h7Oj66Onoi+IpDFfwERfgO1fRQAAA==

-->

</rfc>
