RFC 4102

Registration of the text/red MIME Sub-Type

πŸ“… published June 2005, from ietf

RFC 4102: Registration of the text/red MIME Sub-Type πŸŽ€

Okay, title block first, bestie 🫢 This is RFC 4102 from the Network Working Group. Paul E. Jones at Cisco Systems, Inc. wrote it, it's on the Standards Track, and the date is June 2005. The title block has no Obsoletes or Updates lines, so it doesn't obsolete or update anything. πŸ’…


Status of This Memo ✨

Okay so this doc is an Internet standards track protocol for the Internet community, and it's basically begging for discussion and suggestions for improvements πŸ™ If you want the official standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1). Distribution of this memo is unlimited, so share it with everyone πŸ’œ

Copyright (C) The Internet Society (2005).

Abstract

This document defines the text/red MIME sub-type. "Red" is short for redundant πŸ” The actual RTP packetization for this MIME type is specified in RFC 2198.

1. Introduction ✨

Text is a huge deal in any multimedia communication system, bestie πŸ’– Just like audio, text transport can get a glow-up from redundancy, which improves reliability and the end-user experience 🌸

RFC 2198 [1] defines an RTP [2] payload format for redundant audio data. That format is a perfect fit for redundancy for text too, not just audio πŸ¦‹

RFC 4103 [8] specifies one usage of RFC 2198 and the text/red MIME type for transporting redundant text data 🧚

This memo gives you the MIME sub-type registration info for text/red. The doc mostly focuses on using this MIME sub-type in SDP [5], but it isn't restricted to SDP, so it's giving flexibility 🌈

2. Conventions Used in This Document

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [3] πŸ“š

3. IANA Considerations πŸ‘‘

IANA registered exactly one new MIME sub-type, and it's the main character of this whole doc πŸŽ€

MIME media type name: text

MIME subtype name: RED

Now the required parameters, the stuff you really can't skip 😭

  • rate: this is the RTP clock rate of the payload carried within the RTP packet. Typically it's 1000, but other rates MAY be specified. This parameter MUST be set equal to the clock rate of the text payload format carried as the primary encoding ⏱️
  • pt: this is a comma-separated, ordered list of RTP payload types that lists the primary, secondary, and so on, following RFC 2198. Comma is a special character, so the list MUST be a quoted-string (enclosed in double quotes). For static payload types, each element is just the type number. For dynamic payload types, each element maps the dynamic payload type number to an embedded MIME content-type specification for the matching payload format. The mapping looks like this:
dynamic-payload-type "=" content-type

If the content-type string includes a comma, then the content-type string MUST be a quoted-string. If it doesn't include a comma, it MAY still be quoted, which is very choice-coded of it πŸ™ˆ Because it's part of the list, which has to be a quoted-string itself, the quotation marks MUST be quoted with backslash quoting as specified in RFC 2045 [4]. If the content-type string contains a quoted-string, the backslash quoting requirement gets applied recursively πŸ”„

The rest of the registration template goes like this:

   Optional parameters: ptime, maxptime (these attributes are originally
      defined in RFC 2327 [5] and RFC 3267 [6], respectively)

   Restrictions on Usage:
      This type is defined only for transfer via RTP.
      It shall not be defined for a storage format.

   Encoding considerations:
      See restrictions on Usage above; this section is included per
      the requirements in RFC 3555 [7].

   Security considerations: Refer to section 5 of RFC 4102.

   Interoperability considerations: none

   Published specification: RFC 2198

   Applications which use this media type:
      Text streaming and conferencing tools.

   Additional information: none

   Person & email address to contact for further information:
      Paul E. Jones
      E-mail: paulej@packetizer.com

   Intended usage: COMMON

   Author:
      Paul E. Jones
      paulej@packetizer.com

   Change Controller:
      AVT Working Group delegated from the IESG

Quick vibe check: the ptime and maxptime attributes come from RFC 2327 [5] and RFC 3267 [6]. Restrictions say this type is only for RTP transfer and it shall not be defined for a storage format 🚫 Security points to section 5 of RFC 4102. The Change Controller is the AVT Working Group, delegated from the IESG πŸ‘‘

4. Mapping to SDP Parameters πŸ—ΊοΈ

Okay, so the MIME type info maps onto fields in the Session Description Protocol (SDP) [5], which describes RTP sessions. When you use SDP to set up sessions using RFC 2198 in a text session, the mapping goes like this πŸ’Œ

  • The MIME type ("text") goes in SDP m= as the media name.
  • The value of the "rate" parameter goes in SDP a=rtpmap.
  • The MIME subtype (RED) goes in SDP a=rtpmap as the encoding name.
  • The "ptime" and "maxptime" parameters go in the SDP a=ptime and a=maxptime attributes, respectively.
  • The pt parameter maps to an a=fmtp attribute. You drop the parameter name (pt) and swap the commas for slashes. For example, 'pt="101,102"' maps to 'a=fmtp:99 101/102', where '99' is the payload type of the redundancy frames. The single quote marks (') in this example aren't in the actual message encoding, they're just there so you can read it easily πŸ‘€ The number of elements in the payload type list shows the level of redundancy.

Any dynamic payload type in the list MUST be represented by its payload type number and not by its content-type. The mapping of payload types to content-type happens through the normal SDP procedures with a=rtpmap 🎯

An example SDP looks like this:

     m=text 11000 RTP/AVP 98 100
     a=rtpmap:98 t140/1000
     a=rtpmap:100 red/1000
     a=fmtp:100 98/98

For each redundancy payload type you define, the ordering of the primary and redundancy encodings is fixed. If you want more than one combination of primary and redundancy encodings, you need to define multiple redundancy payload types πŸ“

5. Security Considerations πŸ”

Okay, the security stuff is serious, so pay attention 😱 The security considerations listed in RFC 2198 apply. Further, text data is even more vulnerable to unwanted modification than audio data, and that can lead to undesired results πŸ’€ To stop anyone from modifying the primary, secondary, or header information, payload integrity protection over at least the complete RTP packet is RECOMMENDED. SRTP [9] is one example of how to do it πŸ›‘οΈ

6. Normative References ✨

[1] Perkins, C., Kouvelas, I., Hodson, O., Hardman, V., Handley, M., Bolot, J., Vega-Garcia, A., and S. Fosse-Parisis, "RTP Payload for Redundant Audio Data", RFC 2198, September 1997.

[2] Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson, "RTP: A Transport Protocol for Real-Time Applications", STD 64, RFC 3550, July 2003.

[3] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[4] Freed, N. and N. Borenstein, "Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies", RFC 2045, November 1996.

[5] Handley, M., Jackson, V., "SDP: Session Description Protocol", RFC 2327, April 1998.

[6] Sjoberg, J., Westerlund, M., Lakaniemi, A., and Q. Xie, "Real-Time Transport Protocol (RTP) Payload Format and File Storage Format for the Adaptive Multi-Rate (AMR) and Adaptive Multi-Rate Wideband (AMR-WB) Audio Codecs", RFC 3267, June 2002.

[7] Casner, S. and P. Hoschka, "MIME Type Registration of RTP Payload Formats", RFC 3555, July 2003.

7. Informative References πŸ“–

[8] Hellstrom, G. and P. Jones, "RTP Payload for Text Conversation", RFC 4103, June 2005.

[9] Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K. Norrman, "The Secure Real-time Transport Protocol (SRTP)", RFC 3711, March 2004.

Author's Address πŸ¦‹

Paul E. Jones
Cisco Systems, Inc.
7025 Kit Creek Rd.
Research Triangle Park, NC 27709, USA

Phone: +1 919 392 6948
EMail: paulej@packetizer.com

Copyright (C) The Internet Society (2005).

This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.

This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Intellectual Property

The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document, or the extent to which any license under such rights might or might not be available. It also doesn't represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.

Copies of IPR disclosures made to the IETF Secretariat, any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.

The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.

Acknowledgement 🫢

Funding for the RFC Editor function is currently provided by the Internet Society. 🌈

πŸ“¦ where this page comes from