Internet-Draft SDP Mapping into HTTP structured headers February 2021
Gruessing Expires 19 August 2021 [Page]
Workgroup:
Multiparty Multimedia Session Control
Internet-Draft:
draft-gruessing-sdp-http-02
Published:
Intended Status:
Standards Track
Expires:
Author:
J. Gruessing

SDP Mapping into HTTP structured headers

Abstract

This document specifies a HTTP header based representation of the Session Description Protocol which can be used in describing media being negotiated or delivered via HTTP.

Note to Readers

RFC Editor: please remove this section before publication

Source code and issues for this draft can be found at https://github.com/fiestajetsam/I-D/tree/main/draft-gruessing-sdp-http.

Status of This Memo

This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.

Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

This Internet-Draft will expire on 19 August 2021.

Table of Contents

1. Introduction

Services either negotiating or offering media over HTTP may want to express a greater amount of information beyond a MIME type of content and its preference.

The Session Description Protocol [RFC8866] describes multimedia sessions for the purpose of session announcement and initiation.

The Session-Description and Session-Media headers may be used for either a HTTP request or response and may be included as part of any HTTP method.

1.1. Notational Conventions

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 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

2. The Session-Description Header

The Session-Description header field conveys the entire session description information, using [I-D.ietf-httpbis-header-structure] to describe the structure. Its value MUST be a dictionary containing containing only the following keys, receivers MUST ignore all other values. Dictionary keys MUST be ordered in the order presented in this document, but MAY be omitted where they are explicitly declared as OPTIONAL.

2.1. Time Description

All values within time description fields that represent wall time MUST be values shown as integers which represent NTP timestamps with second resolution. To facilitate ease of parsing, fields that are used to represet a time duration or offset as described in Section 5.10 of [RFC8866] MUST NOT use the compact version e.g "1h" instead of "3600".

2.2. Session Description

v
The version, represented as an sh-integer that MUST be set 0.
o
The originator of the session, whose value is an sh-list. The order of values present in the list MUST map to the order specified in Section 5.2 of [RFC8866].
s
The name of the SDP, whose values is a string and MUST NOT be empty.
i
An OPTIONAL description of the session, whose value is a string.
u
An OPTIONAL URI reference containing additional information about the session, whose value is a string and SHOULD be represented as [RFC3986].
e
An OPTIONAL email address, whose value is a string and SHOULD be represented using [RFC5322] address semantics.
p
An OPTIONAL phone number whose value is a string, which SHOULD be represented as [E.164].
c
An OPTIONAL field containing connection data, whose value is an inner-list, and whose elements are each a string type matching the order of elements as defined in Section 5.7 of [RFC8866]. This field MUST be set if no media entities in the description contain connection information.
b
An OPTIONAL field containing the proposed bandwidth to be used by the session, whose value is an inner-list with only two elements, the first being a string type whose value corresponds to a bwtype as listed in the IANA registry, or a string prefixed "X-" to denote an experiemental value. The second element is an integer type and MUST NOT be negative.
k
The key-field field is obsolete and MUST NOT be used. Implementations MUST discard the field if it is received.
t
An OPTIONAL field containing the start and end times of the session, whose value is an inner-list containing two elements - the first being the wall time start time, and the latter being the stopping time.
r
An OPTIONAL field containing the repeat times, whose value is an inner-list containing three elements. The first element contains the repeat interval whose value is an integer, and the second element containing the active duration whose value is an integer. The third element of the offsets from start-time whose value is an inner-list containing two elements containing integer values representing the offsets.
z
An OPTIONAL field containing time zone adjustment information, whose value is an inner-list containing elements where each is an inner-list with two elements; the first element being an integer representing the wall time which the adjustment should take place, and the second element whose value is an integer representing the offset.
a
An OPTIONAL field containing session-level attributes, whose value is an inner-list. Each element may either be a sh-dictionary when representing a value attribute, or a string where it is a property attribute. For value attributes, the contents MUST be a single name/value pair with the name being the attribute name, and the value as a string.

3. The Session-Media Header

The Session-Media header describes each media element within the session, and at the top level is an sh-list.

Each media representation may additionally contain a media title (i), connection information (c), or bandwidth (b).

3.1. Implementation Considerations

The Session-Description header MAY be sent at the same time in a response with a HTTP body that also contains the SDP payload for backwards compatibility. In such case the values of the header MUST be identical in semantic meaning to the body payload and not include additional information or redaction. It may also, dependant on implementation be sent in response to a HEAD request - in such cases the body MUST be omitted but the server MUST also send the "application/sdp" Content-Type HTTP header.

3.2. Character set usage

TODO: Cover character sets

4. Examples

TODO: Examples

5. IANA Considerations

This specification registers the following entry in the Permanent Message Header Field Names registry established by [RFC3864]:

o Header field name: Session-Description

o Applicable protocol: http

o Status: standard

o Author/Change Controller: IETF

o Specification document(s): [this document]

o Related information:

o Header field name: Session-Media

o Applicable protocol: http

o Status: standard

o Author/Change Controller: IETF

o Specification document(s): [this document]

o Related information:

6. Security Considerations

TODO: Incorporate things like secure transport (HTTPS), in addition to considerations raised in the structured header draft.

7. Normative References

[E.164]
"The international public telecommunication numbering plan", , <https://www.itu.int/rec/dologin_pub.asp?lang=e&id=T-REC-E.164-201011-I!!PDF-E&type=items>.
[I-D.ietf-httpbis-header-structure]
Nottingham, M. and P. Kamp, "Structured Field Values for HTTP", Work in Progress, Internet-Draft, draft-ietf-httpbis-header-structure-19, , <http://www.ietf.org/internet-drafts/draft-ietf-httpbis-header-structure-19.txt>.
[RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/info/rfc2119>.
[RFC3864]
Klyne, G., Nottingham, M., and J. Mogul, "Registration Procedures for Message Header Fields", BCP 90, RFC 3864, DOI 10.17487/RFC3864, , <https://www.rfc-editor.org/info/rfc3864>.
[RFC3986]
Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform Resource Identifier (URI): Generic Syntax", STD 66, RFC 3986, DOI 10.17487/RFC3986, , <https://www.rfc-editor.org/info/rfc3986>.
[RFC5322]
Resnick, P., Ed., "Internet Message Format", RFC 5322, DOI 10.17487/RFC5322, , <https://www.rfc-editor.org/info/rfc5322>.
[RFC8174]
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/info/rfc8174>.
[RFC8866]
Begen, A., Kyzivat, P., Perkins, C., and M. Handley, "SDP: Session Description Protocol", RFC 8866, DOI 10.17487/RFC8866, , <https://www.rfc-editor.org/info/rfc8866>.

Acknowledgements

The author would like to thank Colin Perkins for very early feedback on this document.

Author's Address

James Gruessing