<?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.6.37 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-thatcher-avtcore-rtp-sframe-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.4 -->
  <front>
    <title>RTP Payload Format for SFrame</title>
    <seriesInfo name="Internet-Draft" value="draft-thatcher-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 twice,
once before SFrame encryption using media-format-specific RTP packetization into one large RTP packet,
and once after SFrame encryption using SFrame-specific RTP packetization into many smaller RTP packets.
SFrame encryption is applied to the payload of output the media-format-specific RTP packetization,
and SFrame-specific RTP packetization is applied to the output of the SFrame encryption.</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 big RTP packet.  The VP8 RTP payload of the big RTP packet
is then encrypted using SFrame, resulting in an SFrame-encrypted RTP payload of VP8.  SFrame-specific
packetization is then applied to SFrame-encrypted RTP payload of VP8, resulting in many smaller RTP packets.</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 is
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>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.</li>
        <li>The media frame is decrypted using SFrame, resulting in a big codec-specific RTP payload.</li>
        <li>The big codec-specific RTP payload is combined with the RTP headers of the RTP packet with fragment index 0, resulting in a big media-format-specific RTP packet.
The "media PT" from the SFrame RTP payload header is used as the payload type of the result.</li>
        <li>The big media-format-specific RTP packet is passed in a codec-specific RTP depacetizer, resulting in a media frame.</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>
        <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>
        <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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
HV4ePhN9CZDFn1wOtC1xFAAA

-->

</rfc>
